Tratamiento de una TTY

Tratamiento de una TTY

Cuando se obtiene un primer acceso al sistema, por ejemplo, a través de una webshell subida gracias a una mala configuración en los archivos que se pueden subir a un servidor, a través de incrustar una shell reversa en un CMS, entre muchos otros casos, este último en concreto es el caso que usaremos en este artículo, una shell reversa incrustada en el WordPress que corre en mi máquina ColddBox: Easy, disponible en TryHackMe y VulnHub, cuando obtenemos este primer acceso al sistema gracias a establecer esta shell, usualmente no tenemos una terminal interactiva, esto supone algunos problemas a la hora de trabajar de forma más cómoda, puesto que, se presentan inconvenientes tales como:

  • Posible pérdida de la shell establecida por accidentalmente usar CTRL + C.
  • El Stderr y Stdout pueden llegar a mostrarse de forma extraña.
  • No se tiene interactividad con las flechas y no podemos reutilizar comandos anteriores ni seleccionar.
  • Entre muchos otros.

Es por esto por lo que, es mucho mejor seguir una serie de pasos para nada difíciles para mejorar la interactividad de la terminal y que se nos resulte más sencillo trabajar en ella para seguir con el pentesting.

Primero que todo, para este ejemplo he establecido una shell reversa en la máquina ColddBox: Easy como mencioné antes, en este punto tenemos una shell como el usuario www-data:

shell como el usuario www-data
Shell como el usuario www-data
Ahora, como verás, no puedo usar las flechas para ver los comandos anteriores o moverme por los comandos escritos:
No se usan flechas
Terminal poco interactiva
O, por ejemplo, ejecutar un clear o hacer Ctrl + L para borrar la pantalla tampoco funcionará:
no sirve ctrl l
Hacer uso de Ctrl + L o clear para borrar la pantalla es un problema
Para empezar a volver esta shell interactiva, podemos ejecutar el comando

script /dev/null -c bash

Con esto lograremos obtener una especie de psudoconsola:
pseudoconsola
Pseudoconsola obtenida
Una vez hecho esto, damos Ctrl + Z para poner la sesión en segundo plano y, luego, en nuestra terminal ejecutamos:

stty raw -echo

Luego de hacer esto, notarás que aunque se escriba algo en nuestra shell no lo veremos, para solucionar esto y seguir con el proceso escribimos “fg”, esto no te lo mostrará por pantalla por lo que comentamos antes así que asegúrate de haberlo escrito bien, esto lo que hace es traer netcat (en mi caso el programa de escucha que use) al primer plano, luego de esto escribimos “reset” para reiniciar la configuración de la consola y seguidamente nos preguntará que qué tipo de terminal queremos usar, le indicaremos xterm:
xterm
Selección de tipo de terminal luego de traer netcat al primer plano
Al hacer lo anterior, la terminal debería “borrarse” y ahora tendríamos una terminal casi completamente interactiva que, sin embargo, si queremos borrar con “clear” o Ctrl + L, nos pasará lo siguiente:
clear no funciona
La terminal se encuentra casi interactiva, sin embargo, ni clear ni Ctrl + L funcionan
Esto pasa porque, aunque le hayamos indicado que queremos que use xterm a nivel de TERM, esta no la usa, así que debemos cambiarlo de forma manual, cambiando el valor de la variable de entorno TERM para ello:

export TERM=xterm

Y, además, cambiaremos el valor de la variable SHELL a bash:

export SHELL=bash

Ahora, si intentamos borrar, podemos hacerlo sin problemas:
clear ya funciona
Ahora el comando clear y Ctrl + L funciona
En este punto la shell esta interactiva, podemos usar Ctrl + C sin perder la conexión, podemos copiar, pegar, movernos con las flechas y demás, la cosa ahora es que las proporciones a nivel de filas y columnas, esto provoca que si, por ejemplo, ejecutamos un nano, lo veamos pequeño en comparación a la proporción de nuestra terminal:
nano
Nano no se muestra en las proporciones adecuadas
Para solucionar esto, nos abrimos una terminal en nuestro equipo y ejecutamos el comando:

stty -a

Este comando nos permite mostrar todos los valores de nuestra terminal (a de all), al ejecutarlo debemos buscar nuestras proporciones a nivel de filas y columnas, (ten en cuenta que, si abres otra terminal dividida a la mitad, el número de columnas se ajustara a este tamaño y no estarías obteniendo el número real de columnas a pantalla completa, para ello abre una terminal adicional que no esté dividida ni minimizada) en mi caso son estas:
stty de terminal propio
Proporciones en columnas y filas de mi máquina
Con este valor en mente, volvemos a la terminal de la ColddBox: Easy y, ejecutamos:

stty rows (ValorFilas) columns (ValorColumnas)

Al hacerlo, si abrimos nuevamente nano, veremos que ahora podemos verlo con un tamaño ajustado a nuestras proporciones:
Nano ya funciona
Nano ya funciona con normalidad y la terminal está completamente interactiva

Y así de simple sería tener una terminal completamente interactiva para poder proseguir de forma más cómoda con la prueba de penetración, si quieres llevar a cabo este ejemplo exactamente como lo viste aquí, puedes hacerlo con la máquina ColddBox: Easy, y practicar desde ahí.

Anuncio

Sobre el Autor

Martin Frias

Founder of Coldd Security

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información adicional sobre protección de datos:
Responsable: Martin Frias.
Finalidad: Moderar los comentarios de este sitio web.
Cesión: NO se cederán a nadie, salvo obligación legal.
Derechos: Acceso, rectificación, cancelación y borrado de tus datos.
Legitimación: Tu consentido expreso.

REDES SOCIALES

Newsletter

Estadísticas

  • 163.177
  • 55

TheHackerSnow

0

Share This