Writeup de la Maquina Opacity de Try Hack Me
Empezamos con un escaneo de puertos con Nmap:
Rapidamente detectamos 4 puertos abiertos:
Puerto 22/tcp: servicio ssh
Puerto 80/tcp: servicio tcp
Puertos 139/tcp y 445/tcp: servicio SMB Samba
Luego continuamos con un escaneo un poco mas potente en el cual lanzamos una serie de scripts para enumerar versiones de servicios, informacion relevante y posibles vulnerabilidades conocidas:
Comencemos a enumerar por el servicio web donde de primeras vemos una pagina de Login, donde probamos par de cosas como contraseñas comunes (admin:admin, admin:admin123, etc), SQLi y SSTI pero sin éxito.
Asi que seguimos enumerando, pero esta vez buscamos posibles directorios ocultos con Gobuster:
Lo mas relevante es el directorio /cloud, que nos lleva a un espacio de subida de archivos por medio de una URI, asi que comenzamos a probar una posible vulnerabilidad de File Upload:
De primeras intentamos subir un archivo php sin mucha suerte, y nos muerta el mensaje de que solo debemos subir imagenes, asi que nos da una idea de que en lugar de usar una BlackList de extenciones maliciosas, esta usando una WhiteList de extenciones permitidas, asi que no tendria mucho sentido comenzar a probar extenciones como phar, php5, phtml, etc.
Asi que intentemos subir una imagen polyglota (imagen con una carga php en los metadatos), pero nos devuelve el mismo mensaje, esto nos confirma una validacion de extension.
Exitosamente logramos cargar el payload php usando la tecnica del Null Byte:
http://mi-ip/reverse-shell.php#00.jpg
Al introducir esta url, la validacion deja pasar el recurso al ver que la url termina en .jpg, pero a la hora de almacenarlo en el servidor, interpreta la cadena hasta .php, ya que ignora el resto debido al null byte.
Luego de subida nuestra shell inversa, nos ponemos en escucha en el puerto especificado (2222 en este caso) y abrimos la “imagen” en el navegador que ejecutara nuestro codigo php.
nc -lnvp 2222
Luego de enumerar algunas cosas basicas como procesos y variables del sistema sin mucho éxito, encontramos algo interesante en el directorio /opt:
Es una base de datos de keepass, la cual movemos al directorio /var/www/html donde corre el servidor, para descargarnosla desde el navegador e intentar crackearla en nuestra maquina.
Ya con la password de la base de datos, la abrimos y encontramos la password del usuario sysadmin:
Ya en este punto podmos entrar por ssh a la maquina como sysadmin:
En la carpeta personal del usuario encontramos varias cosas, primeramente la flag del usuario:
En el directorio scripts vemos un script.php que tiene como propietario a root y se ejecuta cada cierto tiempo, en el no tenemos permiso de escritura, pero este hace una llamada a otro script php: ./lib/backup.inc.php
en este directorio si tenemos permisos de escritura, asi que podemos borrar el archivo backup.inc.php y crear nusestro archivo con una carga php que nos otorgue una reverse shell como root.
Luego de realizar esto, y ponernos en escucha con nc nuevamente por el puerto 2222 obtenemos la shell como root, vemos la flag en /root/proof.txt y queda completada la maquina Opacity: