# Forgotten – Writeup (Vulnlab)

## NMAP

Arrancamos como siempre con un reconocimiento rapido de puertos y servicios.

```plaintext
nmap -sC -sV -p- --min-rate=5000
```

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936168748/3f85d4b0-ba01-40c9-8ae4-b9ebe0fe8436.png align="center")

Dos puertos disponibles, SSH y HTTP.

## **80/HTTP**

Al acceder al puerto 80 via Firefox obtenemos un **Forbidden**:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936229787/8312b97f-4512-4241-a7e3-0ddd92367a9e.png align="center")

## **Fuzzing HTTP**

Procedo a fuzzear con **dirsearch** a ver si puedo localizar algun archivo o carpeta que sean accesible.  

```plaintext
 dirsearch -u http://10.10.84.111/
```

Obtenemos algo!, un recurso llamado ***/survey***

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936257011/8d235f46-652c-49bf-a132-4c5a9dabcb39.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936260723/86cfa8a1-c632-44ee-8bcf-327984c2edfb.png align="center")

## **¿Que es LimeSurvey?**

*LimeSurvey es una aplicación de software libre para la realización de encuestas en línea, escrita en PHP y que utiliza bases de datos MySQL, PostgreSQL o MSSQL.*  
  
Bien al momento de acceder nos encontramos con que al parecer no esta instalado y es el setup de dicha aplicación **LimeSurvey**. Me plantee la idea de realizar la instalación y poner localmente mi servidor de mysql para que lo instale ahí.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936278504/bda850db-7eec-468d-8a44-7f2be65a84c4.png align="center")

## **MariaDB**

Configuro MariaDB en Arch Linux para poder realizar esto correctamente:

```plaintext
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
```

```plaintext
sudo systemctl start mariadb
```

Seteo la contraseña de ROOT:

```plaintext
sudo mysql_secure_installation
```

Finalmente voy al archivo de configuracion y descomento lo siguiente:

```plaintext
bind-address=0.0.0.0
```

Corremos el daemon del server:

```plaintext
sudo /usr/bin/mariadbd-safe --datadir='/var/lib/mysql'
```

## **Seteando un user para LimeSurvey**

Como va a conectarse a mi base de datos mysql, voy a setear un usuario y contraseña para servirle amablemente mi hospedaje :D.

Accedo a la DB:

```plaintext
sudo mariadb -u root -p
```

Creamos un user y le damos los permisos:

```sql
CREATE USER 'shkz'@'%' IDENTIFIED BY 'Testing123'; 
GRANT ALL PRIVILEGES ON *.* TO 'shkz'@'%' IDENTIFIED BY 'Testing123' WITH GRANT OPTION;
FLUSH;FLUSH PRIVILEGES;
```

En la web configuramos todo:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936386490/5c74f01d-eac0-4635-8fed-7e06d3961739.png align="left")

Base de datos creada!:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936453091/47ad2dee-daed-4e11-a368-7bf90a054645.png align="center")

Configuro el **ADMIN** y tenemos acceso al panel de control:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936459951/4c20382f-5fe2-441c-a073-e802be816ae5.png align="left")

## **LimeSurvey Authenticated RCE**

Viendo el modo de buscar RCE, encuentro el siguiente exploit:  
[https://github.com/Y1LD1R1M-1337/Limesurvey-RCE](https://github.com/Y1LD1R1M-1337/Limesurvey-RCE)

Edito lo necesario y lo explotamos como dice subiendolo a plugins desde el panel.

* <mark>config.xml</mark>
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936490595/d63e60b2-c595-4613-9bb9-3e80fefa1ae2.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936513257/47a18017-f7ab-4da4-bd2f-0d9a3dff044b.png align="left")

Luego de subirlo e instalarlo, me dirijo a la siguiente URL y lo ejecuto, obteniendo asi revshell:

> [http://10.10.84.111/survey/upload/plugins/myRevShell/php-rev.php](http://10.10.84.111/survey/upload/plugins/myRevShell/php-rev.php)

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936527832/0258df53-534a-40cc-9515-98f0d63f492a.png align="center")

Nos encontramos en un **DOCKER**, buscando el modo de escapar, enumero todo lo que puedo y veo que el usuario limesvc pertenece al grupo **SUDO** sin embargo me pide una contraseña que aun no tenemos pero que vamos a encontrar analizando la variable de entorno y obtenemos la contraseña para SSH.

# **USER**

Conectamos via SSH y obtenemos user.txt.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936535778/7a5b185f-81a9-4d61-9827-8d7c49b6836b.png align="center")

# ROOT

Esta parte es bastante sencilla y con un poco de enumeración y lógica sale rápido.  
Hay algo interesante y es que si volvemos al contenedor, y rooteamos con la clave que sacamos de limesvc:

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

y luego `sudo su` para volvernos root.

Siendo root, y dirigiéndonos a la ruta de la web ***/var/www/html/survey*** si creamos un archivo de prueba: **hello.txt** y luego verificamos con el usuario limesvc que estamos via SSH, en **/opt/limesurvey**, esta montado la misma web. Y vemos que el archivo creado **hello.txt** esta con permisos de **ROOT**:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936641037/785e2012-f29c-433c-8036-c318e4d38858.png align="center")

Sabiendo esto, esta muy fácil lo que podemos hacer:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1753936643341/5cd81ce8-3c46-4338-8608-c1497c24cf88.png align="center")

---

## Pwn3d!
