# 404-not-found

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FX9Uu7khJhUcSUX5H5EpZ%2Fimage.png?alt=media&#x26;token=42e790e8-dc09-46a9-8632-91694e0cd35b" alt=""><figcaption></figcaption></figure>

**Reconocimiento y Enumeración Inicial**

Iniciamos con un reconocimiento del host objetivo mediante un escaneo completo de puertos.\
Dado que el host puede estar filtrando ICMP, utilizamos la opción `-Pn`:

```
nmap -Pn -vv -p- 172.17.0.2
```

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FTUROL9ARRlWEKItEj9lR%2Fimage.png?alt=media&#x26;token=118edd36-2f66-4d3c-bcb7-05484dc17ee3" alt=""><figcaption></figcaption></figure>

El escaneo devuelve únicamente dos servicios abiertos:

* **22/tcp → SSH**
* **80/tcp → HTTP**

Como no contamos con usuarios válidos para probar autenticación en SSH, el foco pasa al servicio web.

Realizamos un escaneo más profundo sobre dichos puertos:

```
nmap -Pn -sCV -vv -p22,80 172.17.0.2
```

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FJEIpCx9D5CxQf5qEjqHP%2Fimage.png?alt=media&#x26;token=5ab9e2bf-3b6a-4169-984a-88e130d947e4" alt=""><figcaption></figcaption></figure>

En el resultado del segundo escaneo muestra un **nombre de dominio**, lo que indica el uso de **virtual hosting**.

&#x20;Para resolverlo correctamente, añadimos la entrada al archivo:

```
/etc/hosts
```

Tras esto, el sitio carga correctamente.

\
**Análisis Web: Página Inicial y Pistas**

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FHKT1YZ0E8qEVXoDy354V%2Fimage.png?alt=media&#x26;token=c669c978-dfc7-4e51-8722-9f77eb0e4dff" alt=""><figcaption></figcaption></figure>

La página de inicio muestra:

```
```

* Una operación matemática
* Una “clave secreta”
* Un mensaje oculto como pista

La clave secreta tiene características típicas de **Base64**, por lo cual procedemos a decodificarla.\
El resultado es un mensaje que sugiere “mirar la URL”.

Esto apunta a la existencia de **subdominios ocultos**, muy común en retos web.

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFLJd1oOCK7xiQmOAEfVk%2Fuploads%2FabkICHH5rmVQPYySik86%2Fimage.png?alt=media&#x26;token=8a83a0a8-5c92-47b8-9014-547accba1b07" alt=""><figcaption></figcaption></figure>

Y al parecer era un mensaje..

### **Descubrimiento de Subdominios**

Lo que me llevó a buscar subdominios mediante fuzzing con `wfuzz`:

```
wfuzz -c -w /usr/share/wordlists/dirb/common.txt \
-H "Host: FUZZ.404-not-found.hl" \
-u http://404-not-found.hl/ \
-t 100 \
--hc 301,400
```

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FdJjFqeFZA6k66lXgqKg6%2Fimage.png?alt=media&#x26;token=5d9b4f30-f530-48ce-b490-97c1539e0b74" alt=""><figcaption></figcaption></figure>

Las respuestas 301 y 400 son descartadas (`--hc`), pues habitualmente señalan subdominios inexistentes.

El fuzzing identifica un subdominio válido:

```
info.404-not-found.hl
```

Lo añadimos nuevamente a `/etc/hosts` y al acceder aparece un **panel de login**.

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2F6Q48b7CiOxBO58LS7lds%2Fimage.png?alt=media&#x26;token=90ef3fa0-0c1c-47e3-a1bb-d242e3062262" alt=""><figcaption></figcaption></figure>

Una vez recargada la pagina, me encontre con un pan de login, de moment no cuento con ningun "posible usuario", asique antes de probar ataque por fuerza bruta opte por revisar el codigo fuente

**Análisis del Login: Indicio de LDAP**

Dado que no disponemos de nombres de usuario para brute-force, analizamos el código fuente del login.\
En los últimos comentarios del HTML encontramos:

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2Frjbs7oR1Cg7oYDtIp6Cl%2Fimage.png?alt=media&#x26;token=4832675c-7f02-4871-ad5a-3e5ddc08bb2e" alt=""><figcaption></figcaption></figure>

Este mensaje confirma que la autenticación se gestiona mediante **LDAP**, lo que abre la posibilidad de inyección.

La entrada del usuario es insertada directamente en una consulta LDAP sin sanitización.\
Probamos un payload clásico que fuerza la consulta a evaluar como verdadera:

```

https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/README.md

User:  user  = *)(uid=*))(|(uid=*
Pass: cualquier cosa
```

El payload cierra la condición inicial e inserta un OR que coincide con cualquier usuario existente, generando un **bypass total del sistema de autenticación**.

Tras ejecutar la inyección, la página revela **credenciales válidas**.

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FZoZGSI9DbhVst0AgNbTh%2Fimage.png?alt=media&#x26;token=115fadf4-c0a9-4fbf-857d-af400c8e77b9" alt=""><figcaption></figcaption></figure>

Se pasar el panel de login y se logra ver lo que son una credenciales

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2Fr8x8MShRlSk84eTtNpsQ%2Fimage.png?alt=media&#x26;token=d95bbea1-d564-4912-8077-fff88e8ace3c" alt=""><figcaption></figcaption></figure>

### **Acceso Inicial al Sistema via SSH**

Con las credenciales obtenidas del panel LDAP, intentamos autenticarnos mediante SSH, lo cual resulta exitoso.

A partir de aquí comenzamos la **fase de post-explotación** dentro del sistema como un usuario de bajo privilegio.<br>

```
ssh 404-page@172.17.0.2
```

### **Escalada de Privilegios**

Una vez dentro, toca buscar la forma de escalar privilegios

```
sudo -l
```

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2FAWbmi2XLYgOUnqjLIJLN%2Fimage.png?alt=media&#x26;token=e66b9115-3815-4e95-abf9-7d2f88739b20" alt=""><figcaption></figcaption></figure>

Solo puedo ejecutar un .py con el usuario 200-ok\
Intente leerlo no le encontre nada util y al ejecutarlo tampoco se ve nada que podamos aprovechar.&#x20;

Toca ver si existe algun archivo txt que nos de algun otro mensaje

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFLJd1oOCK7xiQmOAEfVk%2Fuploads%2Fp8NuLgEThQqgkky6ypUq%2Fimage.png?alt=media&#x26;token=5c5f509f-da09-482d-8973-8c51cf65312b" alt=""><figcaption></figcaption></figure>

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFLJd1oOCK7xiQmOAEfVk%2Fuploads%2FfuZheRhoB1iueuwunsOA%2Fimage.png?alt=media&#x26;token=e5c64471-402a-4e78-8749-214fedbd1cea" alt=""><figcaption></figcaption></figure>

*La nota dice "En la calculadora no sé para qué se usa el símbolo "!" seguido de algo más, sólo 200-ok lo sabe"*&#x20;

```
sudo -u 200-ok /home/404-page/calculator.py 

!bash
```

<figure><img src="https://1902957005-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEf5nvxpY8cEesBiBqWxx%2Fuploads%2Ft3jqNBZJl3AokWTippR5%2Fimage.png?alt=media&#x26;token=4a9134eb-4ac6-4277-bb75-8fee3ef4cd3e" alt=""><figcaption></figcaption></figure>

**200-ok**

Con el usuario 200-ok realice el intento de ejecutar con sudo -l pero pide contraseña asique lo descarto.&#x20;

En el directorio de 200-ok encontré 2 archivos boss.txt y user.txt

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFLJd1oOCK7xiQmOAEfVk%2Fuploads%2F4bYqMKw7knFIFxzZ08do%2Fimage.png?alt=media&#x26;token=af55ac04-4dd5-4213-b235-3bc54df43c61" alt=""><figcaption></figcaption></figure>

```
Uno tenia un hash user.txt = bef4bb318a17abd01158337811750bcf
El otro lo que a primera vista parecía un mensaje.
boss.txt = "Qué es rooteable ..."? 
```

Despues de un rato, sabiendo que nuestros a amigos de dockerlabs les gusta jugar con nuestras mentes, y no me decepciono, porque la contraseña del root? xD

<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFLJd1oOCK7xiQmOAEfVk%2Fuploads%2FO09Ksgr8A506xKODcSBg%2Fimage.png?alt=media&#x26;token=addf9aad-0110-49cc-a689-3993ffa98ce0" alt=""><figcaption></figcaption></figure>
