⬅ Retour à Starting Point · 🏠 Accueil du repo
Machine 10 — Vaccine¶
FTP → SQLi PostgreSQL → sudo vi détourné — Ports 21, 22, 80
| Tier | 2 |
| OS | Linux |
| Services | FTP (21) · SSH (22) · HTTP/Apache (80) |
Concept¶
Un backup FTP protégé par mot de passe zip, un hash MD5 admin trouvé dans le code source, une injection SQL PostgreSQL authentifiée exploitée via sqlmap, puis le détournement d'un droit sudo restreint sur vi (GTFOBins) pour obtenir un shell root.
flowchart LR
A["FTP anonyme<br/>backup.zip"] --> B["zip2john + john<br/>→ 741852963"]
B --> C["index.php<br/>hash MD5 admin"]
C --> D["Crack MD5<br/>→ qwerty789"]
D --> E["Login web admin<br/>+ cookie PHPSESSID"]
E --> F["sqlmap --os-shell<br/>PostgreSQL"]
F --> G["--file-read dashboard.php<br/>pg password en clair"]
G --> H["ssh postgres@<br/>user flag"]
H --> I["sudo -l<br/>/bin/vi pg_hba.conf"]
I --> J[":set shell=/bin/sh<br/>:shell → root"]
Méthodologie¶
Scan de ports¶
Récupération et craquage du backup FTP¶
zip2john backup.zip > backup.hash
john --wordlist=/usr/share/wordlists/rockyou.txt backup.hash
john --show backup.hash
Le hash MD5 est cracké (outil en ligne ou john --format=raw-md5) → qwerty789.
Connexion admin et SQLi¶
Login web : admin / qwerty789. Le cookie PHPSESSID est récupéré via DevTools / Burp.
DBMS détecté : PostgreSQL → shell obtenu via COPY ... FROM PROGRAM.
Récupération du mot de passe DB¶
sqlmap --os-shell exécute chaque commande en requête HTTP isolée (pas un terminal interactif) ; cat direct ne renvoie rien d'exploitable ici. On utilise --file-read :
sqlmap -u "http://10.129.x.x/dashboard.php?search=test" \
--cookie="PHPSESSID=<cookie>" --file-read="/var/www/html/dashboard.php"
SSH et privesc¶
sudo vi est restreint à ce seul fichier — on sort du périmètre via l'échappement shell de vi (voir GTFOBins) :
À l'ouverture, vi est déjà en mode normal (commande) : pas besoin d'appuyer sur Échap avant de taper :.
Captures d'écran¶
Page "MegaCorp Car Catalogue" (dashboard.php) avec le champ SEARCH exploité par sqlmap.
Récupération du cookie PHPSESSID dans les DevTools du navigateur.
Crackage en ligne du hash MD5 trouvé dans le code source (mot de passe admin : qwerty789).
Ouverture de sudo /bin/vi sur le fichier pg_hba.conf restreint.
Tentative de sortie de vi via Échap — confusion initiale entre mode insertion et mode normal.
Commandes vi tapées par erreur directement dans le texte du fichier de configuration, avant correction.
Points clés¶
- Un backup ZIP en accès FTP anonyme est une fuite classique : toujours le récupérer et le cracker (
fcrackzipouzip2john+john). sqlmap --os-shellexécute chaque commande en "one-shot" via des requêtes HTTP : ce n'est pas un terminal interactif, doncsudo -louvin'y fonctionnent pas correctement.sqlmap --file-readest la bonne option pour récupérer un fichier dont lecatdirect ne retourne rien viaos-shell.- Une fois des identifiants système valides trouvés, privilégier une connexion SSH directe plutôt qu'un reverse shell bricolé : c'est un vrai TTY stable, sans souci d'échappement clavier.
- GTFOBins pour
vipropose plusieurs méthodes de sortie vers un shell ::!/bin/sh,:set shell=/bin/shpuis:shell, ou:read <fichier>pour charger un contenu directement dans le buffer. - À l'ouverture de
vi, on est déjà en mode normal (commande) : inutile d'appuyer sur Échap avant de taper:, ce qui évite les soucis d'émulation de terminal.
Leçon retenue¶
Une chaîne de petites erreurs (backup exposé, hash faible, mot de passe DB en clair, réutilisation de mot de passe, règle sudo mal choisie) suffit à donner un accès root complet — d'où l'importance de la défense en profondeur.
⬅ Précédent : Three · ⬆ Index Starting Point · Suivant : Oopsie ➡