
Proof-of-Concept-Exploit für CVE-2025-56015, eine kritische Sandbox-Escaping- und Code-Injection-Schwachstelle in GenieACS, die die Ausführung beliebigen JavaScript-Codes im Provisioning-Kontext ermöglicht. Durch Ausnutzung der declare.constructor.constructor-Prototypenkette kann ein Angreifer die eingeschränkte JavaScript-Umgebung verlassen, auf die zugrunde liegenden Node.js-Module child_process und net zugreifen und eine vollständige Remotecodeausführung (RCE) erreichen.
Angriffstyp: Remote
Authentifizierung: Erfordert Netzwerkzugriff auf GenieACS NBI (Port 7557) und ACS (Port 7547)
Auswirkungen: Vollständige Kompromittierung des Servers, Ausführung einer Reverse Shell, Netzwerk-Pivoting
Der NBI-Endpunkt auf Port 7557 ermöglicht unauthentifizierten Zugriff zum Abrufen sensibler Daten. Beispielhafte API-Endpunkte sind:
Benutzerdaten abrufen:
$ curl 'http://myhost:7557/users/'
Antwort enthält sensible Informationen wie Passwort-Hashes und Salts.
Dateiliste abrufen:
$ curl 'http://myhost:7557/files/'
Provisionierungsdetails abrufen:
$ curl 'http://myhost:7557/provisions/'
Zusätzlich können Dateien ohne Authentifizierung direkt vom Dateiserver (Port 7567) heruntergeladen werden:
wget 'http://myhost:7567/SCR-20250623-qjoi.png'
Ein Test-Debug-Endpunkt innerhalb einer Sandbox schränkt den direkten Zugriff auf das Node.js-process-Objekt ein. Eine Umgehung dieser Einschränkung ist jedoch durch Objekttraversierung möglich, insbesondere über die Konstruktorkette (z. B. constructor.constructor).
Durch Aufruf dieser Methode auf verfügbare Objekte (wie declare) können Angreifer den Sandbox-Kontext verlassen und Zugriff auf das globale process-Objekt erhalten. Dies ermöglicht das Lesen von Umgebungsvariablen und die Ausführung beliebiger Befehle.
Post-Auth RCE:
Provision-Skripte können direkt über den API-Endpunkt /api/devices/{device_id}/tasks ausgeführt werden, um eine Shell zu erhalten. Über die NBI gesendete Anfragen werden zwar in die Warteschlange gestellt, aber nicht sofort ausgeführt.
Pre-Auth RCE (Unauthenticated RCE): Über die NBI-API kann ein Angreifer ohne Authentifizierung Provisions und Presets erstellen. Das Preset dient dazu, Provisionsskripte automatisch auszuführen, wenn ein Gerät ein Ereignis über die CWMP-Schnittstelle sendet.
Schritte zur Ausnutzung:
PUT /provisions/{provision_name}.PUT /presets/{preset_name} (Verknüpfung mit einem Ereignis wie "Periodic").declare.constructor.constructorVor dem Ausführen des Exploits aktualisieren Sie die Konfigurationen ACS_URL, NBI_URL, LHOST und LPORT direkt in exploit.py, um sie Ihrer Umgebung und den Einstellungen des Angreiferrechners anzupassen.
# Start listener on your attacker machine
nc -lvnp 4444
# Run the exploit
python3 exploit.py

requests library (pip install requests)Dieser Code dient ausschließlich zu Bildungs- und autorisierten Sicherheitstestzwecken.
Die unbefugte Nutzung gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben, ist illegal und unethisch.
Schwachstellen entdeckt und Exploit entwickelt von:
Von Datafarm Co., Ltd.
Entwickelt vom DF Pentest Team • Thailand