Forgotten – Writeup (Vulnlab)
# NMAP
Arrancamos como siempre con un reconocimiento rapido de puertos y servicios.
nmap -sC -sV -p- --min-rate=5000
Dos puertos disponibles, SSH y HTTP.
80/HTTP
Al acceder al puerto 80 via Firefox obtenemos un Forbidden:
Fuzzing HTTP
Procedo a fuzzear con dirsearch a ver si puedo localizar algun archivo o carpeta que sean accesible.
dirsearch -u http://10.10.84.111/
Obtenemos algo!, un recurso llamado /survey
¿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í.
MariaDB
Configuro MariaDB en Arch Linux para poder realizar esto correctamente:
1 | sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql |
1 | sudo systemctl start mariadb |
Seteo la contraseña de ROOT:
1 | sudo mysql_secure_installation |
Finalmente voy al archivo de configuracion y descomento lo siguiente:
1 | bind-address=0.0.0.0 |
Corremos el daemon del server:
1 | 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:
1 | sudo mariadb -u root -p |
Creamos un user y le damos los permisos:
1 | CREATE USER 'shkz'@'%' IDENTIFIED BY 'Testing123'; |
En la web configuramos todo:
Base de datos creada!:
Configuro el ADMIN y tenemos acceso al panel de control:
LimeSurvey Authenticated RCE
Viendo el modo de buscar RCE, encuentro el siguiente exploit:
https://github.com/Y1LD1R1M-1337/Limesurvey-RCE
Edito lo necesario y lo explotamos como dice subiendolo a plugins desde el panel.
config.xml
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
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:
USER
Conectamos via SSH y obtenemos user.txt.
1 | # SSH |
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:
1 | 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 :
Sabiendo esto, esta muy fácil lo que podemos hacer:
Pwn3d!
Saludos!