> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/docs/tratamiento-de-la-tty.md).

# Tratamiento de la TTY

Una vez obtenemos una **reverse shell**, necesitamos estar cómodos con una **TTY interactiva** para evitar problemas, como cerrar la conexión accidentalmente, no poder usar las flechas para desplazarnos, perder el autocompletado con `Tab`, o tener dificultades al ejecutar comandos como `su` o `sudo`.

Para lograr esto, debemos realizar un **tratamiento de la TTY**, siguiendo estos pasos:

***

## **Empezamos en la Reverse Shell**

Cuando obtenemos una shell básica en la máquina víctima, es posible que esta tenga limitaciones. Para mejorarla, iniciamos un proceso de bash interactivo con:

```bash
script /dev/null -c bash
```

Salida esperada:

```bash
Script started, file is /dev/null
```

***

## **Suspender la Shell y Ajustar la Terminal**

Ahora, presionamos `Ctrl + Z` para suspender la sesión actual y volver a nuestra terminal atacante.

```bash
www-data@victima:/$ ^Z
zsh: suspended  nc -nlvp 443
```

Luego, reseteamos la configuración de la terminal para evitar errores de formato o caracteres incorrectos:

```bash
stty raw -echo; fg
```

Esto reanuda la shell (`fg` la trae de vuelta al primer plano).

Si nos pide el tipo de terminal, escribimos `xterm`:

```bash
reset
reset: unknown terminal type unknown
Terminal type? xterm
```

***

## **Exportamos las Variables de Entorno**

Definimos `TERM` y `SHELL` para garantizar el correcto funcionamiento de la terminal:

```bash
export TERM=xterm
export SHELL=bash
```

Esto es importante porque, aunque hemos indicado `xterm` en el reset, la variable de entorno `TERM` podría seguir en `dumb` y afectar el uso de comandos avanzados.

***

## **Ajustar el Tamaño de la Terminal**

Para poder utilizar toda la pantalla y evitar cortes en la visualización, ajustamos las filas y columnas. Primero, en nuestra terminal atacante, verificamos el tamaño con:

```bash
stty size
```

Salida esperada (ejemplo):

```bash
40 123
```

Ahora, en la reverse shell, aplicamos estos valores:

```bash
stty rows 40 columns 123
```

***
