Skip to content

Consigues un reverse shell pero es inestable. ¿Cómo lo mejoras?

Respuesta breve

Se lanza un pseudoterminal (normalmente python -c 'import pty; pty.spawn("/bin/bash")'), se envía a segundo plano con Ctrl-Z, se ejecuta stty raw -echo en el lado local, se trae al primer plano y se reinician TERM y el número de filas/columnas. Así obtienes un TTY completo con control de trabajos, autocompletado con tabulador y editores funcionales.

Un reverse shell en crudo obtenido con nc es un shell «rudimentario»: sin control de trabajos, sin autocompletado con tabulador, sin teclas de flecha, y Ctrl-C mata toda la sesión en lugar del comando en ejecución. Herramientas como su, ssh, sudo y los editores de texto se niegan a ejecutarse porque no hay un terminal real adjunto. Pasar a un TTY adecuado es casi obligatorio antes de la escalada de privilegios.

El procedimiento estándar

La secuencia más habitual:

  1. Lanzar un PTY en el objetivo: python3 -c 'import pty; pty.spawn("/bin/bash")'. Esto asigna un pseudoterminal para que los programas crean tener un terminal real.
  2. Enviar el shell a segundo plano con Ctrl-Z.
  3. Corregir tu terminal local: stty raw -echo; fg. El modo raw transmite las pulsaciones directamente (así Ctrl-C llega al proceso remoto y no a tu nc), y desactivar el eco evita los caracteres duplicados.
  4. Restaurar el entorno: export TERM=xterm y fijar el tamaño de la ventana con stty rows <r> cols <c> para que los editores se muestren correctamente.

Después obtienes autocompletado con tabulador, historial de comandos, un Ctrl-C que solo interrumpe el trabajo en primer plano y las herramientas a pantalla completa.

Cuando falta python

Recurre a script -qc /bin/bash /dev/null, o usa socat para un PTY plenamente interactivo en un solo paso si logras llevar el binario al host. expect y ciertos entornos de ejecución (perl, ruby) también pueden lanzar un PTY.

Por qué importa

Sin un TTY no puedes hacer su a otro usuario, ejecutar sudo ni usar las herramientas interactivas de escalada de privilegios que tumban las máquinas. Esta mejora es el puente entre «tengo ejecución de código» y «puedo trabajar de verdad».

Qué buscan los entrevistadores

Quieren el conjuro exacto —pty.spawn, Ctrl-Z, stty raw -echo, fg y la corrección de TERM— además de la razón de ser de cada paso, y una alternativa para cuando python no está presente.

Posibles preguntas de seguimiento

  • ¿Por qué Ctrl-C mata todo tu shell antes de mejorarlo?
  • ¿Qué haces si python no está instalado en el objetivo?

Fuentes

Certificaciones

Consigue 100 preguntas de entrevista de ciberseguridad + respuestas

Déjanos tu correo y te enviaremos el pack en PDF gratuito y el mazo de flashcards.

Sin spam. Cancela tu suscripción cuando quieras.