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

# Pntopntobarra

Maquina de Dockerlabs  , dificultad Fácil , maquina bastante sencilla pero buena practicar LFI  y robo de credenciales de id\_rsa.

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FLSwXe6A7mrKyimQU0LKH%2F00_inicial.png?alt=media&amp;token=4d369ac1-cb85-4070-a5c2-495c3f72416e" alt=""><figcaption></figcaption></figure>

### 1.1 Escaneo de Puertos

{% code overflow="wrap" %}

```
nmap -sS --min-rate 5000 --open -Pn -n -oG allPorts 172.17.0.2
```

{% endcode %}

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FHh1ehNExaP9fIGjWACgx%2F01_allports.png?alt=media&amp;token=3adb18c0-dd8f-4043-ae79-48f5ea6d68a8" alt=""><figcaption></figcaption></figure>

* `-sS` envía paquetes SYN para iniciar una conexión TCP, pero no completa el handshake, lo que lo hace más sigiloso y rápido para detectar puertos abiertos.
* `--min-rate 5000` Establece una tasa mínima de envio de 5000 paquetes por segundo , acelerando el escaneo , aunque en un entorno real aumenta la posibilidad de ser detectado.
* `-p-` Hace escaneo a todos los puertos (65535)
* `-Pn` Indica a nmap que no realice ping previo para detectar si el host está activo.
* `-n` Evita la resolución DNS, es decir no intenta traducir las Ips a nombre de dominio , además acelera el escaneo.
* `-oN` Guarda el resultado en formato nmap .

Obtenemos dos puertos abiertos

* Puerto 22(SSH)
* Puerto 80 (HTTP)<br>
* ### 1.2 Enumeración de servicios y versiones

Ejecutamos un conjunto de scripts básicos de nmap para detectar las versiones detallada de los servicios a los puertos que están abiertos.

```bash
nmap -sCV -p22,80 -oN targeted 172.17.0.2
```

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FIuL6KpWIBZgrcUUGGbED%2F02_targeted.png?alt=media&amp;token=0f441dc3-c805-4a65-b490-67ee306c2f3e" alt=""><figcaption></figcaption></figure>

Encontramos apache 2.4.41

Openssh 9.2

### 2. Enumeración

#### 2.1Enumeración Web

En esta etapa vamos a ver que hay en la web

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FK1kZG5vONY0SBrqV5S3G%2F03_inde.png?alt=media&amp;token=d0cb9d4b-bccf-4a82-b722-81f4834861c5" alt=""><figcaption></figcaption></figure>

Al clickear en  **Ejemplos de  computadoras infectadas** nos redirige a lo siguiente:

### 2.1 Hallazgo relevantes&#x20;

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FUkQssBO3pMphWpCgcqNs%2F04_php_redirect.png?alt=media&amp;token=fc9a58ac-90a3-471f-b59e-cee28c553620" alt=""><figcaption></figcaption></figure>

\
En la imágen vemos el parámetro `images` de `ejemplos.png` recibe una ruta de archivo que el servidor utiliza para localizar y mostrar una imagen(en este caso `./ejemplo1.png`). No se observó sanitización ni validación de una whitelist , lo que parece una potencial vulnerabilidad de **Local File Inclusion (LFI**) , esto nos daría la posiblidad de intentar modificar la ruta para acceder a archivos fuera del directorio(ej `/etc/passwd`)&#x20;

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2F09bqljQPrNF7Ja8qBvqD%2F05_lfi.png?alt=media&amp;token=f2db64ea-3a4f-4d09-a37c-c45abff4d1d4" alt=""><figcaption></figcaption></figure>

La secuencia ../../../../../ se usa en un ataque de LFI (Inclusión de Archivos Locales) para subir de nivel en los directorios del servidor y salir de la carpeta raíz de la aplicación web

Encontramos el usuario `nico` , y vemos que tiene un directorio en /home/nico , lo que podriamos hacer en este caso , es ver si tiene alguna credencial del ssh para poder  conectarnos a máquina

#### 2.1.1 Obteniendo id\_rsa

Como vimos en el punto anterior , trataremos de obtener el id\_rsa del usuario `nico`

```
/home/nico/.ssh/id_rsa
```

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FsrG9M7UfqCta4rzrkObD%2F06_id_rsa.png?alt=media&amp;token=39e89b4f-3c7c-40ca-a6c4-3ee9a781bfd1" alt=""><figcaption></figcaption></figure>

### 3. Conexión a SSH

Copiamos en nuestra máquina atacante bajo el nombre **id\_rsa**

Le damos los permisos correspondientes para que funcione id\_rsa

```
chmod 600 id_rsa
```

{% hint style="info" %}
El cliente y el servidor SSH están diseñados para rechazar la clave de forma automática (dando un error como *"permissions are too open"*) si detectan que el archivo puede ser leído por el grupo o por otros usuarios. Por eso mismo se le asigna al propietario los permisos de Lectura y Escritura.
{% endhint %}

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2F5lQAJkHh1MTVKixLeQ9P%2F07_ssh.png?alt=media&amp;token=51c8cf2c-cf37-4818-87f2-8730f0f72645" alt=""><figcaption></figcaption></figure>

Aqui vemos que no nos pide la contraseña dado que tenemos la private key

### 4. Post explotación

lanzamos  y vemos que podemos ejecutar el comando **/bin/env** como super usuario , el siguiente paso es chequear la página  [GTFOBINS](https://gtfobins.org/) que nos lista que binarios se pueden utilizar para en este caso, escalar privilegios

```
sudo -l
```

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FP3nm2KY0kUXgiSrIFr0K%2F08_sudol.png?alt=media&amp;token=dbe142d6-b127-4c87-8a75-badc4c205638" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FXT0spx7Dfrgwnajwzl8J%2F09_root.png?alt=media&amp;token=335f65c7-312e-4782-b08f-6c1d2dc85c11" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FvocVxrPaEWFyKREEKl75%2F2026-09-16_17-36.png?alt=media&amp;token=07afae19-ac90-47c0-995e-e7ce81ba56cf" alt=""><figcaption></figcaption></figure>

### Resumen de vulnerabilidades

**1. Local File Inclusion (LFI) — `ejemplos.php?images=`**

**Severidad: Alta**

**Descripción:**\
El endpoint `ejemplos.php` recibe el parámetro `images` y lo utiliza para construir la ruta de un archivo en el sistema, sin aplicar sanitización ni validación mediante whitelist. Esto permite a un atacante manipular el valor del parámetro para acceder a archivos arbitrarios del sistema fuera del directorio esperado, mediante técnicas de path traversal (`../../../../etc/passwd`).

**Impacto:**\
La explotación de este fallo permitió la lectura de `/etc/passwd`, revelando los usuarios del sistema, y posteriormente la lectura de la clave privada SSH (`id_rsa`) de un usuario identificado. Esto derivó en acceso inicial no autorizado al sistema mediante autenticación SSH basada en clave.

**Justificación de severidad:**\
Se califica como Alta (no Crítica) porque, de forma aislada, un LFI permite exposición de información sensible pero no ejecución de código de forma directa. Sin embargo, en este caso concreto el impacto real fue severo porque el archivo expuesto (clave privada SSH) permitió pivotar directamente a acceso de shell en el sistema <br>

**Remediación:**

* Evitar pasar directamente la entrada del usuario a funciones de inclusión de archivos (`include`, `file_get_contents`, `readfile`, etc.).
* Implementar una whitelist estricta de archivos/nombres permitidos, en lugar de aceptar rutas arbitrarias.
* Si se requiere flexibilidad, usar `basename()` sobre el input para eliminar cualquier componente de directorio antes de construir la ruta final.
* Aplicar `open_basedir` y permisos de sistema de archivos restrictivos como capa de defensa adicional.

\
**2. Escalada de privilegios vía configuración insegura de `sudo` (`/bin/env`)**

**Severidad: Crítica**

**Descripción:**\
Tras obtener acceso como usuario de bajo privilegio, se identificó mediante `sudo -l` que dicho usuario tiene permitido ejecutar `/bin/env` como root sin necesidad de contraseña (`NOPASSWD`). El binario `env` no está diseñado para operar con privilegios elevados de forma segura, ya que permite ejecutar cualquier otro comando o binario dentro del entorno que construye — heredando así los privilegios con los que fue invocado.

**Impacto:**\
Permite a cualquier usuario con este permiso de sudo obtener una shell interactiva con privilegios de root, resultando en compromiso total del sistema (control absoluto sobre confidencialidad, integridad y disponibilidad).

**Justificación de severidad:**\
Se califica como Crítica porque la explotación es trivial (un solo comando), no requiere ninguna condición adicional, y el resultado es escalada completa a root — el máximo impacto posible en un sistema Linux.
