Apocalipsis cibernético 2025: ataque cibernético

· 3min · Juicecat
Table of Contents

Ciberataque (web)

Para este desafío, se nos proporciona una IP y presumiblemente el código fuente del sitio web en esa IP.

index.md-53.pngindex.md-54.png

Al observar el código, vemos varias ubicaciones de posible inyección. El sitio utiliza scripts cgi python para manejar solicitudes y un index.php básico sin vulnerabilidades del lado del servidor. Lo primero que nos viene a la mente es la inyección CRLF, ya que no vemos ninguna validación o desinfección de expresiones regulares en el parámetro de nombre, además de que se imprime detalladamente como encabezado. index.md-55.png que podemos verificar así: index.md-58.png

Esto funciona porque mientras imprime el encabezado, inyectamos \r\n, en el que luego podemos inyectar encabezados arbitrarios.

Además, vemos otro script aparentemente protegido en cgi-bin, lo que implica que primero debemos explotar attack-domain antes de atacar a attack-ip. index.md-56.png Este es el código para attack-ip: index.md-57.png Aquí vemos la misma inyección de comando con os.popen, pero esta vez no está protegido por una expresión regular, lo que significa que este debería ser nuestro objetivo final.

Entonces necesitamos:

  1. Explotar una SSRF en attack-domain
  2. Haga que el servidor llame a 127.0.0.1/cgi-bin/attack-ip para omitir la configuración de Apache.
  3. Inyecte una carga útil en el os.popen

Al mirar el archivo docker que viene con el desafío, vemos varios complementos de Apache habilitados deliberadamente, lo que me da curiosidad: index.md-69.png Pasé un tiempo largo probando rutas de explotación alternativas y profundizando en madrigueras de conejos, pero finalmente me topé con esto en documentation para mod_proxy_fcgi. Notarás que tiene una notación peculiar proxy:.

index.md-68.png

Antes de realizar la prueba, configuré un túnel de acceso público para no tener que depender de ngrok o del colaborador burp. Alojaré aquí un servidor web Python simple para recibir respuestas. index.md-60.png

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. index.md-75.png

El envío de la carga útil valida nuestras sospechas sobre la SSRF index.md-61.png La SSRF lo logró. Ahora pasamos a explotar. Recuerde, ya vimos el código de attack-ip, por lo que sabemos que es fácilmente vulnerable a la inyección de comandos ya que no hay ninguna expresión regular que lo proteja. Crearé index.html en mi túnel que contiene un script para filtrar la bandera. index.md-64.png Y cambie la carga útil para canalizarla a bash para que realmente se ejecute: index.md-73.png ¡Luego recibimos una devolución de llamada con la bandera codificada en base64! index.md-67.png