ProxyAsAService – Hack The Box [Write Up]

Continuamos los Challenge de Hach The Box con el llamado «ProxyAsAService» de dificultad Fácil y categoría Web.

Te dejo al final del post un resumen de todo lo trabajado en este CTF. 🙂

La forma de iniciar los challenges es igual que cuando nos conectamos a una máquina del laboratorio de HTB, en este post te cuento paso a paso cómo conectarte con la VPN de la plataforma e iniciar la conexión.

Una vez nos dan el host de la máquina, la ejecutamos en el navegador:

http://83.136.252.206:53651/?url=/r/catvideos/

Nos encontramos con esta página que indica que hay restricciones de acceso configuradas en el servidor, lo que significa que las solicitudes deben cumplir ciertos requisitos para ser procesadas.

Nuestro objetivo es encontrar una forma de evadir estas restricciones y recopilar información sensible del servidor.

Analizar el Código Fuente

Nos descargamos el archivo comprimido proporcionado por la plataforma con los ficheros necesarios para hacer el reto.

Al descomprimir el zip y analizar su contenido, encontramos varios archivos relevantes:

Estructura del Proyecto

Archivos Clave: run.py ; util.py y routes.py

  • Indica que la aplicación corre en el host 0.0.0.0 y puerto 1337.
  • El código en util.py valida si el parámetro url contiene cadenas restringidas como localhost o IPs privadas (e.g., 127.0.0.1). Si se detecta alguna de estas cadenas, la solicitud es bloqueada. Nuestro objetivo es encontrar una forma de evadir esta validación para acceder a recursos restringidos.
  • En el archivo routes.py, encontramos la ruta /debug/environment, que podría proporcionar información sensible sobre el entorno del servidor. Decidimos probar esta ruta directamente en el navegador para analizar la respuesta.

Probamos la Ruta “/debug/environment”

Accedimos a la ruta modificando la URL de la siguiente manera:

http://<host>:<puerto>/debug/environment

http://83.136.252.206:53651/?url=@0.0.0.0:1337/debug/environment

Esto devolvió una respuesta JSON con la flag:

{
   "Environment variables": {
       "FLAG": "HTB{f14gs_4s_4_S3rv1c3}",
       "HOME": "/root",
       "PATH": "/usr/local/bin:/usr/bin:/bin",
       ...
   },
   "Request headers": {
       "Host": "0.0.0.0:1337",
       "User-Agent": "python-requests/2.31.0"
   }
}
RESUMEN

Este CTF consistió en explorar una aplicación web que bloqueaba el acceso a ciertas direcciones IP y mostraba un mensaje de restricción de seguridad.

Analizando el código de los distintos archivos que el documento zip de la plataforma nos proporcionaba en este reto, descubrimos una ruta llamada /debug/environment, que estaba mal protegida y permitía acceder a información sensible, como variables de entorno del servidor.

Una de estas variables contenía la flag del reto. Este tipo de vulnerabilidad, conocida como exposición de información sensible, ocurre cuando rutas de depuración no están adecuadamente deshabilitadas en entornos de producción.

Este reto enseña la importancia de asegurar rutas de depuración y comprender cómo los servidores validan parámetros y cabeceras para evitar accesos no autorizados.

Otros posts relacionados