> For the complete documentation index, see [llms.txt](https://itskode.gitbook.io/pentesting/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://itskode.gitbook.io/pentesting/vulnyx/muy_facil/zero.md).

# Zero

> **Dificultad:** Muy facil | **SO:** Linux | **IP:** 192.168.1.109

***

## Identificacion de la maquina

Arrancamos la maquina y confirmamos la direccion IP asignada:

![](/files/zgmDhSdZhNK8S4QsB4Nl)

La maquina objetivo es `192.168.1.109`.

***

## Enumeracion

Realizamos un escaneo completo de puertos con `nmap`:

```bash
nmap -sSVC -p- -n --min-rate 5000 192.168.1.109
```

![](/files/rmeJPMV1ho7AjxvXE1II)

Se identifican tres servicios abiertos:

* **22/tcp** - SSH (OpenSSH 8.4p1 Debian)
* **80/tcp** - HTTP (Apache 2.4.56 Debian)
* **8080/tcp** - HTTP (PHP cli server 5.5 or later / PHP 8.1.0-dev)

El puerto 80 muestra una web muy simple:

![](/files/QOnlcfbMHsthqh7bbKLk)

El servicio interesante aparece en el puerto `8080`, donde la cabecera revela una version concreta de PHP:

```bash
curl -I http://192.168.1.109:8080/
```

![](/files/oHBjvc1OKPW6jRhiHdCP)

La respuesta muestra:

```
X-Powered-By: PHP/8.1.0-dev
```

***

## PHP 8.1.0-dev Backdoor

La version `PHP/8.1.0-dev` es conocida por contener una backdoor introducida en el repositorio oficial de PHP durante 2021. Esta puerta trasera permite ejecutar comandos enviando una cabecera HTTP especifica.

Buscamos un exploit publico para automatizar la explotacion:

![](/files/HcPASMLI047v8MKHcI8p)

Ejecutamos el exploit contra el servicio vulnerable:

```bash
python3 backdoor_php_8.1.0-dev.py
```

![](/files/YnKk5vrNkbHG9YFu3Wrm)

La prueba confirma ejecucion remota de comandos y el comando `whoami` devuelve `root`.

***

## Reverse shell en el contenedor

Con la RCE confirmada, lanzamos una reverse shell hacia nuestra maquina atacante.

En Kali dejamos un listener con `nc`:

```bash
nc -lvnp 4444
```

![](/files/JlpgqJjek9Iq0Ys83nQy)

Recibimos una shell como `root`, pero al listar el sistema observamos indicadores de contenedor, como el archivo `.dockerenv`:

![](/files/Mzg0S2nt08GMKnwQvBY4)

Por tanto, el primer compromiso es root dentro de un contenedor Docker, no directamente en el host.

***

## Credenciales en bash history

Revisando el historial de Bash dentro del contenedor encontramos una credencial reutilizable:

```bash
cat .bash_history
```

![](/files/nSPXV4KNLKPl8G1AcrJR)

El historial contiene un comando `sshpass`:

```bash
sshpass -p 'L14mD0ck3Rp0w4' ssh liam@127.0.0.1
```

Esto revela:

* Usuario: `liam`
* Password: `L14mD0ck3Rp0w4`

Probamos la credencial contra el SSH expuesto en el host:

```bash
ssh liam@192.168.1.109
```

![](/files/uKu9Y9IW9k4gUm8xdAeW)

Conseguimos acceso al sistema como el usuario `liam`.

***

## Escalada de privilegios

Revisamos los permisos de `sudo` del usuario:

```bash
sudo -l
```

![](/files/XgDeddtnKA7UWMgvfXbd)

El usuario `liam` puede ejecutar `wine` como root sin necesidad de contrasena:

```
(root) NOPASSWD: /usr/bin/wine
```

Ejecutamos `wine` con `sudo` para abrir una consola de Windows simulada con privilegios de root:

```bash
sudo wine cmd.exe
```

Desde la consola de Wine comprobamos el nombre de la maquina y navegamos por el sistema de archivos montado en `Z:`:

![](/files/AIudgzxlF78pENmjIDG8)

Wine expone el filesystem Linux a traves de `Z:\`, y al ejecutarse con `sudo` permite interactuar con el sistema con privilegios elevados.

***

## Conclusion

La cadena de ataque completa fue:

```
PHP 8.1.0-dev backdoor
    -> RCE como root dentro de Docker
        -> Credenciales SSH en .bash_history
            -> SSH como liam en el host
                -> sudo wine
                    -> root
```

Zero es una maquina muy directa para practicar una idea importante: conseguir `root` dentro de un contenedor no siempre significa comprometer el host, pero la post-explotacion del contenedor puede exponer secretos suficientes para pivotar al sistema real.

***

## Recomendaciones

* No exponer versiones de desarrollo de lenguajes o runtimes en produccion.
* Mantener imagenes Docker actualizadas y evitar builds basados en versiones comprometidas.
* No guardar credenciales en comandos ni historiales de shell.
* Revisar reglas de `sudo` peligrosas, especialmente sobre herramientas capaces de acceder al filesystem o ejecutar procesos.
* Aplicar el principio de minimo privilegio tambien en contenedores.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://itskode.gitbook.io/pentesting/vulnyx/muy_facil/zero.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
