Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
wpgarlic — एक अवधारणा-प्रमाण WordPress प्लगइन फ़ज़र | Kitploit
उपकरण/GitHubGitHub/kazet/wpgarlic
भेद्यता विश्लेषणवेब सुरक्षाफज़िंग
GitHubkazet/wpgarlic

wpgarlic

एक अवधारणा-प्रमाण WordPress प्लगइन फ़ज़र

रिपॉजिटरी देखें
200231 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

wpgarlic

एक प्रूफ-ऑफ-कॉन्सेप्ट वर्डप्रेस प्लगइन फ़ज़र जिसने लगभग 30 मिलियन साइटों पर स्थापित 300 से अधिक वर्डप्रेस प्लगइन्स में कमज़ोरियाँ खोज निकालीं।

इस्तेमाल की गई तकनीक का वर्णन https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html पर किया गया है।

अगर आप शोध जारी रखना चाहते हैं, तो कम लोकप्रिय प्लगइन्स से शुरू करें - यदि किसी प्लगइन ने अक्टूबर 2021 और जनवरी 2024 के बीच कम से कम 10k सक्रिय इंस्टॉल प्राप्त किए हैं, तो मैंने सबसे अधिक संभावना है कि फ़ज़र रिपोर्ट्स देखी हैं (और अधिकांश ध्यान उन प्लगइन्स पर केंद्रित किया गया है जिनमें कम से कम 20k सक्रिय इंस्टॉल हैं)। चूंकि फ़ज़र के काम करने के तरीके में बहुत अधिक यादृच्छिकता है, इन प्लगइन्स में कुछ कमज़ोरियाँ अभी भी अनदेखी रह सकती हैं - लेकिन कम।

फ़ज़र रिपोर्ट्स में बहुत सारे गलत सकारात्मक परिणाम होते हैं - उनमें से अधिकांश किसी कमज़ोरी का संकेत नहीं देते। रिपोर्ट देखने के बाद, पहले विश्लेषण करें कि आप जो व्यवहार देख रहे हैं वह वास्तव में कमज़ोरी है या गलत सकारात्मक। WPScan/विक्रेताओं को कच्ची फ़ज़र रिपोर्ट से स्पैम न करें - इसके बजाय एक PoC एक्सप्लॉइट प्रदान करें।

उदाहरण

स्पष्ट कारणों से, उदाहरणों में केवल वे कमज़ोरियाँ होंगी जो पहले ही ठीक की जा चुकी हैं।

मनमानी फ़ाइल पढ़ना

मान लीजिए आप responsive-vector-maps के संस्करण 6.4.0 को फ़ज़ कर रहे हैं:

root@kitploit:~
./bin/fuzz_object plugin responsive-vector-maps --version 6.4.0

(नवीनतम संस्करण को फ़ज़ करने के लिए, बस --version छोड़ दें)।

फ़ज़िंग समाप्त होने के बाद (जिसमें इस प्लगइन के लिए 10-30 मिनट लगेंगे) आप कॉल कर सकते हैं:

root@kitploit:~
./bin/print_findings data/object_fuzz_results/

आप देखेंगे, अन्य चीज़ों के अलावा:

responsive-vector-maps फ़ज़र आउटपुट उदाहरण

इसका मतलब है कि फ़ज़र ने एक ज्ञात पेलोड पर fopen() निष्पादित होने का पता लगाया। अधिकांश पेलोड में आउटपुट में स्वचालित पहचान की सुविधा के लिए GARLIC शब्द होता है। आप उन्हें docker_image/magic_payloads.php में देख या कॉन्फ़िगर कर सकते हैं।

फिर, आप स्रोत कोड ब्राउज़ कर सकते हैं और देख सकते हैं कि वास्तव में wp_ajax_rvm_import_markers एंडपॉइंट आउटपुट प्रस्तुत करने के लिए फ़ाइल सामग्री का उपयोग करता है, इस प्रकार आपको सर्वर पर मनमानी फ़ाइलें पढ़ने की अनुमति देता है: CVE-2021-24947।

सफेद रंग में जो दिखाई देता है वह एक दिलचस्प क्रैश माना जाता है (आप उन्हें crash_detectors.py में संशोधित या नए जोड़ सकते हैं)। हरा संदर्भ है। नीले रंग में आप रिपोर्ट फ़ाइल नाम (प्लगइन नाम के साथ), प्लगइन लोकप्रियता और एंडपॉइंट नाम (यहां: ajax एक्शन नाम) देखते हैं।

पीले रंग का डेटा दर्शाता है कि किन पेलोड को किन वेरिएबल्स में इंजेक्ट किया गया था।

रिफ्लेक्टेड XSS

मान लीजिए आप page-builder-add के संस्करण 1.4.9.4 को फ़ज़ कर रहे हैं:

root@kitploit:~
./bin/fuzz_object plugin page-builder-add --version 1.4.9.4

परिणाम प्रिंट करने के बाद, आप देखेंगे कि ज्ञात पेलोड वापस गूंज रहा है:

page-builder-add फ़ज़र आउटपुट उदाहरण

फिर आप मैन्युअल रूप से परीक्षण कर सकते हैं कि क्या वास्तव में यह स्थान (याद रखें: नीले रंग में आपके पास एंडपॉइंट नाम है, यहां: मेनू पृष्ठ नाम) XSS के प्रति संवेदनशील है। इस मामले में, यह है: CVE-2021-25067।

विकल्प अद्यतन जिससे संग्रहीत XSS होता है

root@kitploit:~
./bin/fuzz_object plugin duplicate-page-or-post --version 1.4.6

परिणाम प्रिंट करने के बाद, आप update_option को कॉल होते देखेंगे:

duplicate-page-or-post फ़ज़र आउटपुट उदाहरण

एंडपॉइंट के कोड का विश्लेषण आपको बताएगा कि यह वास्तव में एक संग्रहीत XSS कमज़ोरी की ओर ले जाता है: CVE-2021-25075।

गलत सकारात्मक

दुर्भाग्य से, अधिकांश प्लगइन्स के लिए फ़ज़र को कोई दिलचस्प क्रैश नहीं मिलता, और बाकी के लिए, अधिकांश रिपोर्ट गलत सकारात्मक होती हैं. उदाहरण के लिए, यदि आप देखते हैं:

root@kitploit:~
Call: wp_mail arguments={'to': '[email protected]', 'subject': '[Plugin contact]  - http://GARLICGARLICGARLIC.example.com'}

इसका मतलब हो सकता है कि wp_mail वास्तव में कॉल किया गया है, लेकिन आप प्राप्तकर्ता और अधिकांश विषय को नियंत्रित नहीं करते। यदि आप सुनिश्चित होना चाहते हैं, तो प्लगइन स्रोत देखें।

फ़ज़र रिपोर्ट पढ़ने के लिए अतिरिक्त सुझाव

  • यदि आप संदेश देखते हैं; May as well be equal: ... and ... - इसका मतलब है कि तंत्र जो दर्शाता है कि एक ज्ञात पेलोड किसी अन्य स्ट्रिंग के बराबर है (जैसा कि https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html#patched-equality में वर्णित है) सक्रिय हो गया।
  • यदि आप __GARLIC_ACCESSED__ _FILES[files] __ENDGARLIC__ देखते हैं - इसका मतलब है कि अपलोड की गई फ़ाइल तक पहुंच का पता चला। वर्तमान में कोई और जाँच नहीं की जाती है - यह जाँचने के लिए कि क्या यह कमज़ोरी है, कोड देखें।
  • कभी-कभी फ़ज़र GET, POST आदि पैरामीटर्स में जो इंजेक्ट करता है वह वास्तविक दुनिया में प्रतिलिपि प्रस्तुत करने योग्य नहीं होता: उदाहरण के लिए, यदि आप कोई विशेष मेनू पृष्ठ प्रदर्शित करना चाहते हैं तो आप $_GET['page'] में कुछ भी इंजेक्ट नहीं कर सकते।

उपयोग चीटशीट

फ़ज़िंग या परीक्षणों की पहली रन में लगभग एक घंटा लग सकता है, क्योंकि हम इंस्ट्रूमेंटेड PHP और WordPress के साथ Docker इमेज बनाने की आवश्यकता है।

नाम से प्लगइन फ़ज़ करना

root@kitploit:~
./bin/fuzz_object plugin PLUGIN_SLUG

नाम से थीम फ़ज़ करना

root@kitploit:~
./bin/fuzz_object theme THEME_SLUG

फ़ाइल से प्लगइन फ़ज़ करना

आप स्थानीय ज़िप फ़ाइल से भी प्लगइन स्थापित कर सकते हैं:

root@kitploit:~
./bin/fuzz_object plugin PLUGIN_FILE_NAME.zip

परिणाम प्रिंट करना

फ़ज़र द्वारा पाए गए परिणामों को प्रिंट करने के लिए, उपयोग करें:

root@kitploit:~
./bin/print_findings data/object_fuzz_results/

परीक्षण चलाना

परीक्षण चलाने के लिए, उपयोग करें:

root@kitploit:~
./bin/test

चेतावनी: परीक्षण लंबे समय तक चलते हैं (एक घंटे से अधिक) और क्योंकि वे जाँच करते हैं कि क्या फ़ज़र कमज़ोरियाँ ढूंढेगा, वे कुछ संभावना के साथ विफल होते हैं।

कोड को पुन: स्वरूपित करना और लिंटर्स चलाना

wpgarlic लिंटर्स चलाने और कोड को प्रारूपित करने के लिए pre-commit का उपयोग करता है। CI पर pre-commit को निष्पादित किया जाता है ताकि यह सत्यापित हो सके कि कोड ठीक से प्रारूपित है।

इसे स्थानीय रूप से चलाने के लिए, उपयोग करें:

root@kitploit:~
pre-commit run --all-files

pre-commit को सेटअप करने के लिए ताकि यह प्रत्येक कमिट से पहले चले, उपयोग करें:

root@kitploit:~
pre-commit install

मैन्युअल परीक्षण वातावरण

आप एक परीक्षण वातावरण शुरू कर सकते हैं जिसमें केवल एक प्लगइन स्थापित हो, का उपयोग करके:

root@kitploit:~
./bin/manual_testing PLUGIN_SLUG|PLUGIN_PATH.zip [version]

आप किसी प्लगइन को उसके slug या स्थानीय zip फ़ाइल से स्थापित कर सकते हैं।

यह http://127.0.0.1:8001/ पर सुनता रहेगा।

डेटाबेस में दो परीक्षण उपयोगकर्ता होंगे:

  • उपयोगकर्ता नाम: admin, पासवर्ड: admin, विशेषाधिकार: व्यवस्थापक
  • उपयोगकर्ता नाम: subscriber, पासवर्ड: subscriber, विशेषाधिकार: सब्सक्राइबर

फ़ज़र का विस्तार और कॉन्फ़िगरेशन

यह उपकरण एक प्रूफ-ऑफ-कॉन्सेप्ट है - इस अनुभाग में वे स्थान हैं जहाँ इसे और अधिक कमज़ोरियाँ खोजने के लिए बेहतर बनाया जा सकता है.

आप filtering.py को संपादित करना चाह सकते हैं -- इसमें ऐसे नियम हैं जो किसी विशेष क्रैश को महत्वपूर्ण या नहीं मानते हैं। यदि आप उन्हें बदलते हैं, तो आपके पास अधिक गलत सकारात्मक हो सकते हैं, लेकिन साथ ही अधिक कमज़ोरियाँ भी मिल सकती हैं। उदाहरण के लिए, एकमात्र हेडर जिसे मैं उत्सर्जित होने पर दिलचस्प मानता हूँ वह है Location हेडर, ताकि Open Redirect कमज़ोरियों का पता लगाया जा सके। यह केवल एक विचार है और आपके पास अन्य हो सकते हैं।

एक और फ़ाइल जो विस्तार के योग्य हो सकती है वह है docker_image/patch_wordpress.sh। यह बताती है कि किन फ़ंक्शनों के कॉल को दिलचस्प के रूप में लॉग किया जाएगा।

यदि आप अन्य पेलोड इंजेक्ट करना चाहते हैं (या उन संभावनाओं को बदलना चाहते हैं जिनके साथ वे इंजेक्ट किए जाते हैं) तो docker_image/magic_payloads.php और docker_image/fuzz/config.py को संपादित करें।

crash_detector.py में नियमित अभिव्यक्तियाँ हैं जो दिलचस्प क्रैश या दिलचस्प जानकारी (जैसे ई-मेल) के उजागर होने का पता लगाती हैं।

लॉग-इन किए गए व्यवस्थापक के रूप में REST रूट्स को फ़ज़ करना अक्षम कर दिया गया है क्योंकि इससे गलत सकारात्मक उत्पन्न हुए। इसे बदलने के लिए config.DEFAULT_ENABLED_FEATURES में rest_routes_admin को अनकम्मेंट करें।

फ़ज़र की आंतरिक कार्यप्रणाली

ब्लॉकलिस्ट

कुछ प्लगइन्स को दूसरों (जैसे woocommerce) की निर्भरता के रूप में आवश्यकता होती है। जब किसी ऐसे प्लगइन को फ़ज़ कर रहे हैं जिसमें निर्भरता है, तो हम केवल चुने गए प्लगइन को फ़ज़ करना चाहते हैं और निर्भरता AJAX एक्शन, REST रूट्स और मेनू पृष्ठों को छोड़ देना चाहते हैं। हम woocommerce एक्शन/रूट/पृष्ठों को तभी फ़ज़ करना चाहते हैं जब हमने woocommerce को फ़ज़ करने के लिए चुना हो।

निर्भरता एक्शन/रूट/पृष्ठों की सूची को ब्लॉकलिस्ट कहा जाता है और यह docker_image/blocklists/ में सूचीबद्ध हैं। common नाम की फ़ाइलों में WordPress कोर एक्शन/रूट/पृष्ठ होते हैं - हम इन्हें भी फ़ज़ नहीं करना चाहते।

इन ब्लॉकलिस्ट को अपडेट करने के लिए, ./bin/update_blocklists का उपयोग करें।

FAQ

फ़ज़र ने कुछ पाया, क्या यह कमज़ोरी है?

शायद। प्लगइन को स्थानीय परीक्षण वातावरण में स्थापित करें (उदाहरण के लिए आप मैन्युअल परीक्षण वातावरण अनुभाग में वर्णित का उपयोग कर सकते हैं) और बग का विश्लेषण करें।

फ़ज़र ने कुछ नहीं पाया, क्या प्लगइन सुरक्षित है?

ऐसा न मानें। फ़ज़र कुछ प्रकार की कमज़ोरियाँ ढूंढता है, लेकिन इसकी सीमाएँ हैं।

अधिकांश प्लगइन्स के लिए फ़ज़र को कुछ नहीं मिलता - उपकरण का उद्देश्य एकल प्लगइन का व्यापक परीक्षण करना नहीं है, बल्कि बड़ी संख्या में वर्डप्रेस प्लगइन्स का बड़े पैमाने पर स्कैन करना है।

फ़ज़र ने एक रन में कुछ पाया, लेकिन अगले में नहीं। क्या हुआ?

यह संभव है। फ़ज़र पेलोड को यादृच्छिक रूप से चुनता है, और अन्य स्थानों पर यादृच्छिकता प्रस्तुत करता है (जैसे कि == ऑपरेटर को उन मामलों में कैसे व्यवहार करना चाहिए जिनका वर्णन https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html#patched-equality में किया गया है)।

काम नहीं कर रहा? कोई प्रश्न है?

Github टिकट दर्ज करें या मुझे ई-मेल करें: [email protected]।

टूल डाउनलोड करें