
Exploit de preuve de concept pour CVE-2025-56015, une évasion de sandbox et RCE dans GenieACS. Automatise la création de provisions malveillantes, le mappage de préréglages et la livraison de reverse shell via la simulation CWMP.
Preuve de concept d'exploit pour CVE-2025-56015 une vulnérabilité critique d'évasion de sandbox et d'injection de code dans GenieACS permettant l'exécution arbitraire de JavaScript dans le contexte de provisionnement. En exploitant la chaîne de prototypes declare.constructor.constructor, un attaquant peut s'échapper de l'environnement JavaScript restreint, accéder aux modules sous-jacents Node.js child_process et net, et obtenir une exécution de code à distance (RCE) complète.
Type d'exploit : À distance
Authentification : Nécessite un accès réseau au NBI de GenieACS (Port 7557) et à l'ACS (Port 7547)
Impact : Compromission totale du serveur, exécution d'un shell inverse, pivotement réseau
Le point d'accès NBI sur le port 7557 permet un accès non authentifié pour récupérer des données sensibles. Les exemples de points d'accès API incluent :
Obtenir les données des utilisateurs :
$ curl 'http://myhost:7557/users/'
La réponse inclut des informations sensibles telles que les hachages de mots de passe et les sels.
Obtenir la liste des fichiers :
$ curl 'http://myhost:7557/files/'
Obtenir les détails des provisions :
$ curl 'http://myhost:7557/provisions/'
De plus, les fichiers peuvent être téléchargés directement depuis le serveur de fichiers (port 7567) sans authentification :
wget 'http://myhost:7567/SCR-20250623-qjoi.png'
Un point d'accès de débogage de test à l'intérieur d'un sandbox restreint l'accès direct à l'objet process de Node.js. Cependant, il est possible de contourner cette restriction via un parcours d'objets, en utilisant spécifiquement la chaîne de constructeurs (par exemple, constructor.constructor).
En appelant cela sur des objets disponibles (comme declare), les attaquants peuvent s'échapper du contexte du sandbox et obtenir l'accès à l'objet global process. Cela donne la capacité de lire les variables d'environnement et d'exécuter des commandes arbitraires.
RCE post-authentification :
Les scripts de provisionnement peuvent être exécutés directement via le point d'accès API /api/devices/{device_id}/tasks pour obtenir un shell. Les requêtes envoyées via le NBI seul sont mises en file d'attente mais pas exécutées immédiatement.
RCE sans authentification (RCE non authentifiée) : En utilisant l'API NBI, un attaquant peut créer des provisions et des préréglages sans authentification. Le préréglage sert à exécuter automatiquement les scripts de provisionnement lorsqu'un appareil envoie un événement via l'interface CWMP.
Étapes pour exploiter :
PUT /provisions/{provision_name}.PUT /presets/{preset_name} (en le liant à un événement comme "Periodic").declare.constructor.constructorAvant d'exécuter l'exploit, mettez à jour les configurations ACS_URL, NBI_URL, LHOST et LPORT directement dans exploit.py pour correspondre à votre environnement et aux paramètres de votre machine attaquante.
# Démarrer l'écouteur sur votre machine attaquante
nc -lvnp 4444
# Exécuter l'exploit
python3 exploit.py

requests (pip install requests)Ce code est fourni uniquement à des fins éducatives et de tests de sécurité autorisés.
L'utilisation non autorisée contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite est illégale et contraire à l'éthique.
Vulnérabilités découvertes et exploit développé par :
De Datafarm Co., Ltd.
Développé par DF Pentest Team • Thaïlande