███████╗░█████╗░██████╗░░██████╗░░█████╗░████████╗████████╗███████╗███╗░░██╗
██╔════╝██╔══██╗██╔══██╗██╔════╝░██╔══██╗╚══██╔══╝╚══██╔══╝██╔════╝████╗░██║
█████╗░░██║░░██║██████╔╝██║░░██╗░██║░░██║░░░██║░░░░░░██║░░░█████╗░░██╔██╗██║
██╔══╝░░██║░░██║██╔══██╗██║░░╚██╗██║░░██║░░░██║░░░░░░██║░░░██╔══╝░░██║╚████║
██║░░░░░╚█████╔╝██║░░██║╚██████╔╝╚█████╔╝░░░██║░░░░░░██║░░░███████╗██║░╚███║
╚═╝░░░░░░╚════╝░╚═╝░░╚═╝░╚═════╝░░╚════╝░░░░╚═╝░░░░░░╚═╝░░░╚══════╝╚═╝░░╚══╝
| Difficult -> Easy
| System -> Linux
| shkz - http://vulnlab.com
# NMAP
Como siempre empezamos con el reconocimiento de los servicios y puertos.
nmap -sC -sV -p- --min-rate=5000
BashDos 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 algún archivo o carpeta que sean
accesible.
dirsearch -u http://10.10.84.111/
BashObtenemos algo, un path a la carpeta llamada /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:
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo systemctl start mariadb
BashSeteo la contraseña de ROOT:
sudo mysql_secure_installation
BashA continuacion voy al archivo de configuración y ‘descomento’ lo siguiente:
bind-address=0.0.0.0
BashCorremos el daemon del server:
sudo /usr/bin/mariadbd-safe --datadir='/var/lib/mysql'
BashSeteando 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:
sudo mariadb -u root -p
BashCreamos un user y le damos los permisos:
CREATE USER 'shkz'@'%' IDENTIFIED BY 'Testing123';
GRANT ALL PRIVILEGES ON . TO 'shkz'@'%' IDENTIFIED BY 'Testing123' WITH GRANT OPTION;
FLUSH;
FLUSH PRIVILEGES;
BashEn 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.
Luego de subirlo e instalarlo, me dirijo a la siguiente URL y lo ejecuto, obteniendo asi revshell:
http://IP_VICTIM/survey/upload/plugins/myRevShell/php-rev.php
BashNos 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 analizandocon las variables de entorno:
env
BashUSER.txt
Conectamos via SSH y obtenemos user.txt.
ssh [email protected]
<type the password>
BashEscalando a ROOT
Esta parte es bastante sencilla. Volvemos al contenedor, y rooteamos con la clave que sacamos de limesvc:
script -q /dev/null -c bash
sudo su
Bash
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:
Desde DOCKER:
cp /bin/bash ./pwned
chmod u+s ./pwned
BashFinalmente desde limesvc shell:
./pwned -p
whoami
Bash