
هذا تكرار لـ cve-2019-9787 على Wordpress ودفاع قائم على التجزئة.
هذا مشروع من إعداد Sijia Zhang(https://github.com/sijiahi) و Bowen Zhou(https://github.com/KonjakZhou)
- قم بتثبيت وتهيئة ووردبريس 5.0 تحت http://localhost/wp-admin/;
- سجّل الدخول إلى ووردبريس كمسؤول، وانشر مقالًا واحدًا على الأقل;
- افتح mal.html (موضوعة تحت اسم نطاق آخر، يمكن فتحها مباشرة كملف في المتصفح)، انقر على إرسال الطلب.
- إذا نجح الأمر، فسيتم إعادة توجيهك إلى صفحة المقال مع تعليق "cilick me"، وعند تحريك الماوس فوقه، ستظهر نافذة منبثقة تشير إلى نجاح الهجوم.
- استبدل الملفات في /wp-includes، وأضف نصوص JavaScript في /wp-includes/js.
- انقل ملف المنشور الوهمي إلى منطقة WP، وافتح صفحة المنشور الوهمي لاختبار وظيفة PINGBACK/TRACEBACK.
- إذا نجح ذلك، فسيتم إعادة توجيهك إلى صفحة المقال مع تعليق "legal anchor";
- افتح mal.com من اسم نطاق آخر، واختبر هجوم CSRF.
للدفاع عن ووردبريس ضد CVE-2019-9787، تم إدخال حقل جديد يسمى doggyNonce. في الحالات التي يحاول فيها المسؤول استخدام وظيفة PINGBACK، ولا يمكن توفير _wp_unfiltered_html، نطلب من المسؤول التوقيع على سمات العلامات المرفوعة باستخدام ملف تعريف الارتباط الخاص به، مما يمكننا من الدفاع ضد هجمات CSRF وضمان سلامة سمات العلامات المرفوعة.
يقبل ووردبريس تلقائيًا التعليق دون رمز CSRF الصحيح كطلب PINFBACK وTRACEBACK، ويقوم بتصفية هذا التعليق باستخدام مرشح القائمة البيضاء، واستخراج حقل href وإعادة بناء "العلامة a". للدفاع عن هذه الثغرة، تم أخذ نقطتين رئيسيتين في الاعتبار: 1. لا يمكن للخادم التمييز بين طلب CSRF غير القانوني وطلب PINGBACK/TRACEBACK القانوني. 2. يقوم مهاجم CSRF بحقن كوده في حقل href لـ "العلامة a"، وتتغير سمة العلامة بعد التصفية. doggyNonce هي قيمة تجزئة تعتمد على cookie(wp-setting-time-$uid) والسمة href المرفوعة: doggyNonce=Hash(*uploaded href attribute,*cookie) يجب التنبيه إلى أن doggyNonce تلعب دور توقيع المسؤول على سمة href المرفوعة.
1. ملف 'mal.html' لمحاكاة هجوم CSRF، وبالتالي من المتوقع وضعه في نطاق آخر غير ووردبريس;
2. ملف 'post.html' لمحاكاة وظيفة PINGBACK/TRACEBACK، وبالتالي من المتوقع وضعه في نفس نطاق ووردبريس;