Cyber Apocalypse 2025 - Ataque cibernético
Table of Contents
CyberAt Attack (Web)
Para este desafío, se nos da una IP y presumiblemente el código fuente para el sitio web en esa IP
Mirando el código, vemos varias ubicaciones de inyección potencial.El sitio está utilizando scripts CGI Python para manejar las solicitudes, y un índice básico.php sin exploits del lado del servidor.Lo primero que me viene a la mente es la inyección de CRLF, ya que no vemos validación o desinfección de regex en el Nombre Param, así como que se imprima verbosamente como un encabezado.
que podemos verificar así:
Esto funciona porque mientras imprime el encabezado, inyectamos \r\n
, que luego podemos inyectar encabezados arbitrarios en
Además, vemos un otro script aparentemente protegido en CGI-bin, lo que implica que primero necesitamos explotar attack-domain
antes de atacar attack-ip
Este es el código para
attack-ip
:
Aquí vemos la misma inyección de comando con
os.popen
, pero esta vez it's not protected by a regex, lo que significa que este debería ser nuestro objetivo final.
Entonces necesitamos:
- Explotar un SSRF en
attack-domain
- Haga que el servidor llame a
127.0.0.1/cgi-bin/attack-ip
para evitar la configuración de Apache - Inyectar una carga útil en el
os.popen
Al mirar el Dockerfile que vino con el desafío, vemos varios complementos de Apache habilitados deliberadamente, lo que me da curiosidad:
Pasé un tiempo long intentando rutas de exploit alternativas y bajando por los agujeros de conejo, pero finalmente me topé con esto en el documentation para
mod_proxy_fcgi
.Notarás que tiene una notación peculiar proxy:
.
Antes de probar, configuré un túnel de acceso público para que no necesito confiar en Ngrok o Burp Colaborator, alojaré un servidor web de Python simple aquí para atrapar respuestas
Así que ahora enviamos una carga útil ciega para hacer ping a nuestro túnel.Tenga en cuenta que necesitamos codificar dos veces la solicitud de proxy, ya que es una segunda solicitud anidada dentro de la primera
Enviar la carga útil valida nuestras sospechas SSRF
SSRF logrado.Ahora nos movemos para explotar.Recuerde, ya vimos el código para
attack-ip
, por lo que sabemos que es fácilmente vulnerable a la inyección de comandos, ya que no hay regex lo protege.Crearé index.html en mi túnel que contiene un script para exfiltrar la bandera
Y cambie la carga útil para entrar en Bash para que realmente se ejecute:
¡Luego recibimos una devolución de llamada con la bandera codificada Base64!