Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-1581-Analysis-Lab — # CVE-2026-1581 का पुनरुत्पादन wpForo Forum <=2.4.14 में एक अनप्रमाणित समय-आधारित SQL इंजेक्शन का पुनरुत्पादन करता है, जिसमें Docker लैब और PoC शामिल है ताकि भेद्यता का प्रदर्शन किया जा सके और पैच को सत्यापित किया जा सके। | Kitploit
उपकरण/GitHubGitHub/rootdirective-sec/cve-2026-1581-analysis-lab
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubrootdirective-sec/cve-2026-1581-analysis-lab

CVE-2026-1581-Analysis-Lab

# CVE-2026-1581 का पुनरुत्पादन wpForo Forum <=2.4.14 में एक अनप्रमाणित समय-आधारित SQL इंजेक्शन का पुनरुत्पादन करता है, जिसमें Docker लैब और PoC शामिल है ताकि भेद्यता का प्रदर्शन किया जा सके और पैच को सत्यापित किया जा सके।

रिपॉजिटरी देखें
1127 महीने पहलेअभी तक समीक्षित नहीं

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

सभी देखें →

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

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

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

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

CVE-2026-1581 — wpForo फोरम (<= 2.4.14) बिना प्रमाणीकरण के समय-आधारित SQL इंजेक्शन (ORDER BY)

ภาษาไทย


कार्यकारी सारांश

फ़ील्डविवरण
CVE IDCVE-2026-1581
प्लगइनwpForo फोरम
प्रभावित संस्करण<= 2.4.14
पैच किया गया संस्करण2.4.15
भेद्यता प्रकारबिना प्रमाणीकरण के समय-आधारित SQL इंजेक्शन (ORDER BY)
CVSS स्कोर7.5 (उच्च)
CVSS वेक्टरCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
  • CVE-2026-1581 wpForo फोरम प्लगइन (<= 2.4.14) में बिना प्रमाणीकरण के समय-आधारित SQL इंजेक्शन भेद्यता है। wpfob पैरामीटर का उपयोग ORDER BY क्लॉज़ में केवल टेक्स्ट सैनिटाइज़ेशन के साथ किया जाता है, जिससे बिना प्रमाणीकरण वाला हमलावर मनमाने SQL एक्सप्रेशन इंजेक्ट कर सकता है और डेटाबेस से डेटा पढ़ सकता है।

  • विक्रेता ने इसे संस्करण 2.4.15 में sanitize_text_field() को wpforo_sanitize_orderby() से बदलकर ठीक किया, जो संदर्भ-जागरूक व्हाइटलिस्ट लागू करता है।


दायरा और सुरक्षा

  • केवल localhost + Docker Compose में चलाएं।

  • PoC एक समय-आधारित टाइमिंग प्रमाण है जो भेद्य और पैच किए गए संस्करणों के बीच अंतर दर्शाता है।

  • स्पष्ट प्राधिकरण के बिना किसी भी सिस्टम के विरुद्ध उपयोग न करें।


एक नज़र में साक्ष्य

  • संस्करण प्रमाण: /community/ पेज /wp-content/plugins/wpforo/assets/js/frontend.js?ver=2.4.14 (भेद्य) बनाम 2.4.15 (पैच किया गया) लोड करता है।

  • कोड प्रमाण: sanitize_text_field(WPF()->GET['wpfob']) → wpforo_sanitize_orderby(..., context, default)

  • व्यवहार प्रमाण: wpfob=modified,(SELECT SLEEP(5)) भेद्य संस्करण पर ~5 सेकंड की देरी का कारण बनता है; पैच किया गया संस्करण लगभग बेसलाइन पर प्रतिक्रिया करता है।


CVE सलाहकार से मैंने क्या देखा

  • CVE सलाहकार केवल यह बताता है कि यह wpfob पैरामीटर के माध्यम से समय-आधारित SQL इंजेक्शन है, जिसे 2.4.15 में ठीक किया गया था। विश्लेषण के समय, कोई सार्वजनिक PoC उपलब्ध नहीं था।

  • इसलिए यह राइट-अप 2.4.14 और 2.4.15 के बीच स्रोत कोड डिफिंग के माध्यम से बनाया गया था, HTTP इनपुट से सैनिटाइज़ेशन के माध्यम से उस बिंदु तक पैरामीटर का पता लगाते हुए जहां इसका उपयोग SQL क्वेरी बनाने के लिए किया जाता है — मूल कारण को समझने और समस्या को पुन: उत्पन्न करने के लिए।

vulnx CVE-2026-1581


1) स्रोत-कोड संचालित विश्लेषण

1.1 wpfob का पता लगाना

स्रोत कोड में wpfob के लिए grep से शुरू करते हुए, यह पाया गया कि Recent पेज मान को सीधे GET पैरामीटर से लेता है और इसे orderby तर्क के रूप में निर्दिष्ट करता है।

find wpfob

भेद्य (2.4.14) — themes/classic/recent.php:

  32 | $args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? sanitize_text_field( WPF()->GET['wpfob'] ) : 'modified';
  74 | $args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? sanitize_text_field( WPF()->GET['wpfob'] ) : 'created';

पैच किया गया (2.4.15) — समान फ़ाइल, सैनिटाइज़र बदला गया:

  32 | $args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? wpforo_sanitize_orderby( WPF()->GET['wpfob'], 'topics', 'modified' ) : 'modified';
  74 | $args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? wpforo_sanitize_orderby( WPF()->GET['wpfob'], 'posts', 'created' ) : 'created';

recent.php पर ध्यान क्यों? क्योंकि यह एक ट्रिगर करने योग्य रूट है जहां wpfob सीधे $args['orderby'] को निर्दिष्ट किया जाता है।


1.2 SQL तक डेटाफ्लो: ORDER BY ...

एक बार $args['orderby'] सेट हो जाने पर, यह ORDER BY क्लॉज़ बनाने के लिए wpForo के क्वेरी बिल्डर में प्रवाहित होता है।

ORDER BY संयोजन (भेद्य 2.4.14)

classes/Topics.php:

SQL builder: ORDER BY concatenation in Topics.php

classes/Posts.php:

SQL builder: ORDER BY concatenation in Posts.php

व्याख्या

  • sanitize_text_field() केवल स्ट्रिंग को स्ट्रिप/साफ करता है — यह अनुमत कॉलम नामों की व्हाइटलिस्ट लागू नहीं करता है।
  • चूंकि orderby सीधे ORDER BY <orderby> में संयोजित किया जाता है, एक हमलावर ORDER BY स्थिति में मनमाने SQL एक्सप्रेशन इंजेक्ट कर सकता है।

संदर्भ: https://developer.wordpress.org/reference/functions/sanitize_text_field/


1.3 पैच / डिफ हाइलाइट्स (2.4.14 → 2.4.15)

1.3.1 डिफ: recent.php

32c32
< 	$args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? sanitize_text_field( WPF()->GET['wpfob'] ) : 'modified';
---
> 	$args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? wpforo_sanitize_orderby( WPF()->GET['wpfob'], 'topics', 'modified' ) : 'modified';
74c74
< 	$args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? sanitize_text_field( WPF()->GET['wpfob'] ) : 'created';
---
> 	$args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? wpforo_sanitize_orderby( WPF()->GET['wpfob'], 'posts', 'created' ) : 'created';

1.3.2 डिफ: wpforo.php

1036c1036
< 					$args['orderby'] = sanitize_text_field( $get['wpfob'] );
---
> 					$args['orderby'] = wpforo_sanitize_orderby( $get['wpfob'], 'search', 'relevancy' );
1077c1077
< 					$args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? sanitize_text_field( WPF()->GET['wpfob'] ) : 'modified';
---
> 					$args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? wpforo_sanitize_orderby( WPF()->GET['wpfob'], 'topics', 'modified' ) : 'modified';
1153c1153
< 					$args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? sanitize_text_field( WPF()->GET['wpfob'] ) : 'created';
---
> 					$args['orderby']   = ( ! empty( WPF()->GET['wpfob'] ) ) ? wpforo_sanitize_orderby( WPF()->GET['wpfob'], 'posts', 'created' ) : 'created';

1.3.3 नया पैच फ़ंक्शन: wpforo_sanitize_orderby()

संस्करण 2.4.15 एक संदर्भ-जागरूक व्हाइटलिस्ट सैनिटाइज़र पेश करता है जो डिफ़ॉल्ट मान लौटाता है यदि इनपुट अनुमत सूची में नहीं है:

whitelistor


2) लैब डिज़ाइन (भेद्य बनाम पैच किया गया)

2.1 Docker Compose में सेवाएं

  • wp_vuln (WordPress + wpForo 2.4.14) → http://localhost:8081
  • wp_patched (WordPress + wpForo 2.4.15) → http://localhost:8082
  • db_vuln / db_patched (MariaDB)
  • seed_vuln / seed_patched — WordPress स्थापित करने, प्लगइन स्थापित करने, [wpforo] शॉर्टकोड के साथ /community/ पेज बनाने, permalinks कॉन्फ़िगर करने, .htaccess उत्पन्न करने और सत्यापन आर्टिफैक्ट बनाने के लिए wp-cli का उपयोग करता है।

2.2 परीक्षण रूट

स्रोत पढ़ने से, wpfob का उपयोग स्पष्ट रूप से recent पेज पर किया जाता है:

  • http://localhost:8081/community/recent/?view=opened
  • http://localhost:8082/community/recent/?view=opened

3) पुनरुत्पादन: टाइमिंग प्रमाण

परीक्षण से पहले कम से कम 1 विषय और 1 पोस्ट मौजूद होना चाहिए।

3.1 "पोस्ट क्यों आवश्यक हैं"

  • यह एक ORDER BY इंजेक्शन भेद्यता है।
  • यदि wpForo में कोई विषय या पोस्ट नहीं है, तो क्वेरी 0 पंक्तियाँ लौटा सकती है — ऐसी स्थिति में DB पक्ष पर कोई सॉर्टिंग नहीं होती है, कोड पथ ORDER BY एक्सप्रेशन का मूल्यांकन नहीं कर सकता है, और कोई देरी नहीं देखी जाती — एक गलत नकारात्मक।

कम से कम 1 विषय और 1 पोस्ट आवश्यक हैं।

3.2 बेसलाइन टाइमिंग

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