
यह Wordpress पर cve-2019-9787 की पुनरावृत्ति है और एक हैश-आधारित रक्षा है।
यह Sijia Zhang(https://github.com/sijiahi) और Bowen Zhou(https://github.com/KonjakZhou) द्वारा बनाया गया एक प्रोजेक्ट है।
- http://localhost/wp-admin/ के अंतर्गत Wordpress5.0 कॉन्फ़िगर और इंस्टॉल करें;
- Wordpress में admin के रूप में लॉग इन करें, कम से कम एक लेख पोस्ट करें;
- mal.html खोलें (किसी अन्य डोमेन नाम के अंतर्गत कॉन्फ़िगर किया गया, संभवतः ब्राउज़र में सीधे फ़ाइल के रूप में खोलें), submit अनुरोध पर क्लिक करें।
- यदि यह काम करता है, तो आपको "cilick me" टिप्पणी वाले लेख पृष्ठ पर पुनर्निर्देशित किया जाएगा; एक बार जब आप अपने माउस को इसके ऊपर ले जाते हैं, तो सफल हमले का संकेत देने वाली एक प्रॉम्प्ट विंडो दिखाई देगी।
-बदलें /wp-includes में फ़ाइलें, /wp-includes/js में js स्क्रिप्ट जोड़ें।
-mock post फ़ाइल को WP क्षेत्र में ले जाएँ, PINGBACK/TRACEBACK फ़ंक्शन का परीक्षण करने के लिए mock post पृष्ठ खोलें।
-यदि यह काम करता है, तो आपको "legal anchor" टिप्पणी वाले लेख पृष्ठ पर पुनर्निर्देशित किया जाएगा;
-किसी अन्य डोमेन नाम से mal.com खोलें, CSRF हमले का परीक्षण करें।
Wordpress को CVE-2019-9787 से बचाने के लिए, doggyNonce नामक एक नया फ़ील्ड पेश किया गया है। ऐसे मामलों में जहाँ admin PINGBACK फ़ंक्शन अपनाने की कोशिश करता है, और _wp_unfiltered_html प्रदान नहीं किया जा सकता, हमने admin से उनके अपलोड किए गए टैग विशेषताओं पर अपने cookie के साथ हस्ताक्षर करने को कहा; यह हमें CSRF हमले से बचाव करने और अपलोड किए गए टैग विशेषताओं की अखंडता सुनिश्चित करने में सक्षम बनाएगा।
Wordpress बिना सही CSRF-टोकन वाली टिप्पणी को स्वचालित रूप से PINFBACK और TRACEBACK अनुरोध के रूप में स्वीकार करता है, उस टिप्पणी को व्हाइट-लिस्ट फ़िल्टर से फ़िल्टर करता है, href फ़ील्ड निकालता है और "a tag" का पुनर्निर्माण करता है। इस भेद्यता से बचाव के लिए, दो प्रमुख बिंदुओं को ध्यान में रखा गया है: 1. सर्वर अवैध CSRF अनुरोध को वैध PINGBACK/TRACEBACK अनुरोध से अलग नहीं कर सकता। 2. CSRF हमलावर "a Tag" के href फ़ील्ड में अपना कोड इंजेक्ट करता है, टैग विशेषता फ़िल्टर किए जाने के बाद बदल जाती है। doggyNonce एक हैश मान है जो *cookie(wp-setting-time-$uid) और *अपलोड किए गए href विशेषता पर निर्भर करता है: doggyNonce=Hash(*uploaded href attrbute,*cookie) यह ध्यान दिया जाना चाहिए कि doggyNonce अपलोड किए गए href विशेषता पर admin के हस्ताक्षर की भूमिका निभाता है।
1. 'mal.html' CSRF हमले का अनुकरण करने के लिए है, और इस प्रकार, इसे Wordpress के अलावा किसी अन्य डोमेन में रखे जाने की अपेक्षा की जाती है;
2. 'post.html' PINGBACK/TRACEBACK फ़ंक्शन का अनुकरण करने के लिए है, और इस प्रकार, इसे WP के समान डोमेन में रखे जाने की अपेक्षा की जाती है;