Updown

Publicado: 05 de Mayo de 2025 Autor: Josรฉ Miguel Romero aka x3m1Sec Dificultad: โญ Medium
๐ Descripciรณn
"SiteIsUp" es una mรกquina Linux de dificultad fรกcil en HackTheBox que simula un servicio web para verificar si otros sitios estรกn en lรญnea. La vulnerabilidad principal radica en una aplicaciรณn web con mรบltiples fallas de seguridad, incluyendo un repositorio Git expuesto y un LFI (Local File Inclusion) que puede ser aprovechado para conseguir RCE (Remote Code Execution). Para la escalada de privilegios, se abusa de permisos sudo en la herramienta easy_install. Este laboratorio es perfecto para practicar reconocimiento web, anรกlisis de cรณdigo fuente, bypass de restricciones de subida de archivos y explotaciรณn de vulnerabilidades comunes en aplicaciones web.
๐ Metodologรญa
๐ญ Reconocimiento
Ping para verificaciรณn en base a TTL
๐ก Nota: El TTL cercano a 64 sugiere que probablemente sea una mรกquina Linux.
Escaneo de puertos
Enumeraciรณn de servicios

โ ๏ธ Debemos agregar este dominio a nuestro archivo hosts.
๐ Probando inyecciones de comandos
Tras probar con diversos payloads para ver si podemos realizar inyecciรณn de comandos sobre el parรกmetro del campo de texto, no muestra un mensaje en el que indica que estรก detectando un intento de hacking:

๐ท๏ธ Fuzzing de vhosts

โ ๏ธ Debemos agregar este dominio a nuestro archivo hosts.
๐ Enumeraciรณn Web
A continuaciรณn verificamos que no tenemos permiso para acceder a este recurso.

Realizamos fuzzing de directorios usando feroxbuster
Encontramos un directorio .git:

A continuaciรณn usamos la herramienta git dumper para facilitar la revisiรณn del repositorio de cรณdigo.
Una vez descargado el cรณdigo, en el fichero changelog encontramos informaciรณn que podrรญa ser interesante:
Tambiรฉn hay un parรกmetro especial "only4dev" que se puede enviar e la cabecera de la peticiรณn
A continuaciรณn, hacemos una peticiรณn a http://dev.siteisup.htb interceptando con Burp y probamos a aรฑadir este parรกmetro en la cabecera

Podemos usar tambiรฉn la extensiรณn para firefox https://addons.mozilla.org/es-ES/firefox/addon/simple-modify-header/:

Al hacer esto descubrimos un enlace al panel de administrador y un botรณn para la subida de archivos.

En lo que respecta al enlace del panel de administrador, vemos que somos redirigidos a:
http://dev.siteisup.htb/?page=admin

Echando un vistazo al cรณdigo fuente de esta secciรณn vemos quรฉ parรกmetro se acepta en la peticiรณn que nos permite apuntar a un recurso aunque se estรกn aplicando ciertos filtros para evitar un posible LFI:

Respecto al botรณn para la subida de archivos:
Si revisamos el cรณdigo fuente anteriormente descargado del repositorio .git en checker.php:

Podemos ver las extensiones para la carga de archivos que estรกn permitidas. Tambiรฉn podemos ver que se crea un directorio en uploads/ obteniendo el timestamp de la hora de la subida y aplicado posteriormente la codificaciรณn en md5.
Tambiรฉn es importante verifica que el archivo se borra una vez despuรฉs de subirse.
Comprobamos que el directorio /uploads estรก vacรญo:

Vamos a intentar subir un archivo php con alguna extensiรณn que permita saltarnos la restricciรณn de extensiรณn, por ejemplo usando la webshell de pentestmonkey y renombรกndola con extensiรณn .phar:
Verificamos que el fichero se ha subido correctamente y tal como habรญamos analizado previamente en el cรณdigo, sea ha creado un directorio con el timestamp de la fecha codificado en MD5:

El problema, es que el enlace al archivo se estรก borrando despuรฉs de subirse.

๐ Explotaciรณn
Recapitulando, en este punto tenemos por un lado, un parรกmetro page (http://dev.siteisup.htb/?page=XXX) que nos permite leer archivos desde la raรญz y que cuando le pasamos un valor le concatena la extensiรณn .php. Por otro lado, conocemos las extensiones que se estรกn filtrando al intentar subir un archivo.
En este punto la mejor opciรณn serรญa encapsular nuestro archivo .php dentro de un archivo .zip y leerlo con un wrapper .zip, aunque lo descartamos porque la extensiรณn .zip se estรก filtrando, asรญ que lo que podemos hacer es comprimirlo con una extensiรณn cualquiera que no se estรฉ filtrando e intentar leer el cรณdigo .php con un wrapper php. Ejemplo:
Creamos nuestro archivo .php haciendo un phpinfo y de esta forma podemos ver quรฉ funciones estรกn deshabilitadas:
info.php
Subimos el archivo.

Usamos el wrapper php en la url con el paรกmetro page para llamar a nuestra shell
โ ๏ธ No Debemos agregar la extensiรณn php a nuestro archivo ya que recordemos que tal como vimos en el cรณdigo fuente se le estรก concatenando al final.

A continuaciรณn verificamos las disable_functions:

Para verificar quรฉ funciรณn podemos usar, podemos utilizar la herramienta dfunc-bypasser a la cual podemos pasarle una url con el php.info y te indica de quรฉ funciรณn de sistema php puedes abusar para ejecutar comandos:
https://github.com/teambi0s/dfunc-bypasser
Podemos usar la herramienta con el parรกmetro --file especificando el arhivo info.php. Para ello podemos interceptar la peticiรณn con burp y en la respuesta renderizada hacer un copy to file:


La herramienta nos indica que podemos usar proc_open. Para ver cรณmo usar esta funciรณn podemos hacer uso de la documentaciรณn oficial:
https://www.php.net/manual/en/function.proc-open.php
Podemos adaptar nuestro archivo .php para que haga uso de esta funciรณn y obtener una reverse shell de la siguiente forma:
reverse shell con proc_open function
Creamos nuestra reverse shell y la encapsulamos con cualquier extensiรณn que no estรฉ filtrada:
Tras subirla, iniciamos un listener en el puerto que hayamos especificado volvemos a hacer uso del wrapper para llamarla:


Tras ganar acceso, hacemos un full tty de nuestra shell:
Encontramos un script en python sobre el que el usuario www-data tiene permisos de lectura y ejecuciรณn:

El script parece que toma la entrada del usuario sin sanitizarla. Podemos abusar de esto pasรกndo el siguiente parรกmetro a la funciรณn y escalar a developer:

Seguimos sin tener permisos para leer la flag de /home/developer:

Dado que sรญ tenemos permisos para leer el directorio .ssh, vamos a usar la clave ssh para conectarnos:

๐ Escalada de Privilegios
Verificamos posibles archivos que puede ejecutar developer como root:

Encontramos informaciรณn sobre este binario y posibles formas de explotaciรณn en gtfobins:
https://gtfobins.github.io/gtfobins/easy_install/#sudo

Last updated