# Curling

### 🔍 RECONOCIMIENTO

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

```bash
ping -c 1 10.10.10.150
```

para verificar la conectividad de red.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FOoEExtQhHCBnAWbYCBhF%2Fimage.png?alt=media&#x26;token=4601a4bb-ed3f-4641-9e49-3b259571f731" alt=""><figcaption></figcaption></figure>

A continuación, realizamos el comando:

```bash
nmap -sC -sV 10.10.10.150
```

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

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F7gzKCR72P4QwhVZ7yYoB%2Fimage.png?alt=media&#x26;token=b8bd275f-10c1-484a-b0df-ff56819bdccc" alt=""><figcaption></figcaption></figure>

Durante el escaneo se identificaron los siguientes puertos abiertos:

* **Puerto 22 (SSH):** El puerto 22 está abierto y ejecutando OpenSSH 7.6p1 en un sistema Ubuntu Linux. Se han detectado las claves del host en los algoritmos RSA, ECDSA y ED25519, lo que indica que el sistema permite conexiones seguras mediante SSH.
* **Puerto 80 (HTTP):** El puerto 80 se encuentra abierto y ejecuta un servidor web Apache 2.4.29 en Ubuntu. Se ha detectado que el sitio utiliza Joomla! como sistema de gestión de contenidos (CMS), lo que podría ser un posible vector de ataque si existen vulnerabilidades conocidas en la versión instalada.

A continuación, se procederá a analizar cada uno de estos servicios en busca de posibles vectores de ataque.

### 🔎 EXPLORACIÓN

Se utiliza el comando:

```bash
sudo nmap -sCV -p22,80 -v 10.10.10.150
```

para que nos proporcione más información sobre esos puertos específicamente.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2Fx9PLbG0CKaCFxnTsNAOQ%2Fimage.png?alt=media&#x26;token=4819f3b7-2acb-4ad9-a2e2-4cc999605356" alt=""><figcaption></figcaption></figure>

Revisamos el puerto 80.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FFtGfXgFSUQIzbuktVscy%2Fimage.png?alt=media&#x26;token=55b52bdb-2599-4122-91db-ac88f7663674" alt=""><figcaption></figcaption></figure>

Vemos que hay dos usuarios posibles **Super User** y **Floris**. Revisando el código fuente encontramos una línea comentada.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FRktDIxHP5Qn05NOK7MNY%2Fimage.png?alt=media&#x26;token=468e1f7e-b765-46b6-ad4d-43b2a6d3b114" alt=""><figcaption></figcaption></figure>

Revisando el directorio nos encontramos una contraseña puede ser codificada en **base64**.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FM4UbgNnSyppyOdttTfLD%2Fimage.png?alt=media&#x26;token=9d80aa4e-f826-4eab-97a3-3c83479f8b9c" alt=""><figcaption></figcaption></figure>

```
echo "Q3VybGluZzIwMTgh" | base64 --decode
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FV2jtfGWWCX32mdqO2WsJ%2Fimage.png?alt=media&#x26;token=c0e6e6ef-1f86-44ad-a1f7-85d5ce0931e7" alt=""><figcaption></figcaption></figure>

Escaneo para ver los directorios.

```bash
ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-small.txt -u http://10.10.10.150/FUZZ
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FaiIImCTCre65VlXmDkf0%2Fimage.png?alt=media&#x26;token=756b3fa7-1ce9-47b2-890a-b18acb70ac61" alt=""><figcaption></figcaption></figure>

Vemos que hay un directorio que nos llama la atención llamado `/administrator`.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FourLbPf8cu5vFXUBuvTS%2Fimage.png?alt=media&#x26;token=c84b746b-720f-4084-af9e-20503a3d4ab0" alt=""><figcaption></figcaption></figure>

Nos logueamos con las credenciales obtenidas anteriormente.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2Fj9zJeSlZvBoYK5618fhT%2Fimage.png?alt=media&#x26;token=8b8aacdf-f9e3-4916-94b0-af8441254e81" alt=""><figcaption></figcaption></figure>

### 🚀 **EXPLOTACIÓN**

{% embed url="<https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/joomla.html>" %}

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FffnnJPn2wdZlk5sofk27%2Fimage.png?alt=media&#x26;token=cd75944e-4303-4162-b42f-887be6ff8677" alt=""><figcaption></figcaption></figure>

En **error.php** subimos una Reverse Shell. Nos ponemos en escucha.

```
http://10.10.10.150/templates/protostar/error.php
nc -nlvp 4444
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FwT2fYifi0WDvxvInsDoP%2Fimage.png?alt=media&#x26;token=37617424-0c14-45e1-b339-1ac0e03213b1" alt=""><figcaption></figcaption></figure>

Mejoramos la TTY.

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

No tenemos permiso para leer la flag del user. Puedo acceder al archivo `password_backup`, que parece un archivo de volcado en formato hexadecimal. El tipo de archivo es ASCII.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FKk0S7RQjKbBhVjyzUBtL%2Fimage.png?alt=media&#x26;token=4168acd6-d8b4-4b0a-a39b-96f3a8acb935" alt=""><figcaption></figcaption></figure>

Usando CyberChef, podemos cargar el archivo `password_backup` para procesarlo (para procesar el volcado hexadecimal, haz clic en la varita mágica junto a 'output').

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F3aXLSW2ztK6z6NBhOJZo%2Fimage.png?alt=media&#x26;token=4cef8c38-e833-4973-a57a-a0720574ce45" alt=""><figcaption></figcaption></figure>

Ahí está la contraseña por lo que iniciamos sesión.

```
ssh floris@10.10.10.151
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FBJMCjUS2ni2CdmAbH4hu%2Fimage.png?alt=media&#x26;token=04090e03-6c25-4a48-842d-b2e602a5bf46" 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. No tenemos permisos SUDO.

Descubrimos un proceso automatizado en el directorio `admin-area` que recupera datos desde una URL especificada en un archivo de entrada y almacena la salida en un archivo de reporte. Sospechamos que este proceso es ejecutado por un script que utiliza el comando `curl`, y dado que los archivos son propiedad de `root`, planteamos la posibilidad de acceder a archivos restringidos.

Tras investigar un poco, nuestra siguiente estrategia será modificar la ruta `file:///<path>/`. Primero, editaremos el archivo de entrada para que ejecute un archivo local y permitiremos que `curl` lo procese.

```bash
echo 'url = "file:///root/root.txt"' > input
cat report
```

Ya leemos así la flag.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FqkZ1vYLdZgVHJHX3Ps56%2Fimage.png?alt=media&#x26;token=940c4fec-bf9a-4c95-ba34-6438a6dfaca7" alt=""><figcaption></figcaption></figure>
