
Drupal 11.4.8 - उच्च - रिमोट - XSS - AttributeXss अभी भी HTMX attrs की अनुमति देता है
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · drupal-htmx-attr
राइट-अप: https://abraxaslabs.tech/research/drupal-htmx-attr
वर्ग: स्टोर्ड XSS पहुँच: रिमोट
Drupal core 11.4.8 (61044508) - Drupal
SA-CORE-2026-011 ने Xss::attributes() में HTMX attrs को बंद कर दिया। लिंक और मेनू attributes AttributeXss::sanitizeAttributes से होकर गुज़रते हैं, और वह स्किप सूची अभी भी केवल style और on* को हटाती है।
एक कंटेंट एडिटर जो Link फ़ील्ड (या मेनू लिंक) सेट कर सकता है, hx-on-click या data-hx-on-click संग्रहीत कर सकता है। Standard के साथ BigPipe core/htmx लोड करता है। जब कोई एडमिन या कोई अन्य दर्शक उस नोड को खोलता है और लिंक पर क्लिक करता है, तो HTMX संग्रहीत JS को साइट ओरिजिन में चलाता है।
| ID | अभी तक कोई CVE नहीं |
| वर्ग | स्टोर्ड XSS (HTMX इवेंट attrs) |
| पहुँच | रिमोट (प्रमाणित Link फ़ील्ड / मेनू लेखक; पीड़ित देखता है और क्लिक करता है) |
| CWE | CWE-79 |
| CVSS | उच्च: 8.7 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N |
| उत्पाद | Drupal core |
| प्रभावित | 11.4.8 (61044508071749629aaf3380aa85971e94df9e84) |
| प्रमाणीकरण | प्रमाणित उपयोगकर्ता जो Link फ़ील्ड (या मेनू लिंक) लिख सकता है। पीड़ित पेज देखता है और क्लिक करता है। |
| लाइसेंस | GNU Affero GPL v3.0 |
| लैब | केवल 127.0.0.1 |
लेखक: एक कंटेंट एडिटर जो लिंक options.attributes (Link फ़ील्ड, मेनू लिंक, JSON:API) सेट कर सकता है। पीड़ित: कोई भी जिसका पेज HTMX लोड करता है (Standard + BigPipe core/htmx लोड करता है), जिसमें एक साइट एडमिन भी शामिल है जो लिंक पर क्लिक करता है।
| विशेषाधिकार | विधि / पथ | प्रकार | लैब-प्रमाणित या अनुमानित |
|---|---|---|---|
| लिंक पर HTMX इवेंट attrs संग्रहीत करना | POST /jsonapi/node/article के साथ field_link.options.attributes.hx-on-click और data-hx-on-click | संग्रहीत फ़ील्ड की अखंडता | लैब-प्रमाणित। JSON:API 201, संग्रहीत attrs में अभी भी hx-on-click है |
उन attrs को नोड <a> पर प्रिंट करना | LinkFormatter -> AttributeXss::sanitizeAttributes | HTML की अखंडता | लैब-प्रमाणित। GET /node/1 HTML में hx-on-click और मार्कर window['DRUPAL-HTMX-ATTR-WITNESS']=1 है |
| क्लिक करने पर उस JS को पीड़ित ओरिजिन में चलाना | HTMX hx-on-* को बाइंड करता है | पीड़ित सत्र की अखंडता | HTMX + पेज द्वारा core/htmx लोड करने से अनुमानित। लैब ने ब्राउज़र क्लिक नहीं चलाया |
| दर्शक के रूप में कार्य करना (सत्र कुकी, एडमिन UI क्लिक) | वही स्टोर्ड XSS | पीड़ित सत्र की अखंडता | अनुमानित। लैब HTML में शेष attribute पर रुकती है |
नकारात्मक: Xss::filter | Xss::filter('<a ... hx-on-click=...>') | बंद | लैब-प्रमाणित बंद। xss_keeps_hx=False |
| लिंक का अप्रमाणित लेखन | सत्र के बिना JSON:API | बंद | लैब ने पहले uid 1 के रूप में लॉग इन किया। बिना खाते वाला अजनबी फ़ील्ड सेट नहीं कर सकता |
| PHP RCE / LPE | लागू नहीं | बंद | यह शेष ब्राउज़र JS है, सर्वर पर PHP नहीं |
वही पिन शेष: Move Block sibling markup।
मैंने SA-CORE-2026-011 के बाद drupal/drupal 11.4.8 को पिन किया। पाँच hunts: XSS/HTMX, file/MIME/oEmbed, JSON:API/unserialize/SQLi, auth/CSRF/Host, REST/media/Views। JSON:API access, EntityQuery IN keys (SA-004), serialized-field POI (SA-005), और rebuild.php Host (SA-007) patched रहते हैं। HTMX skip list केवल Xss.php में आई।
$skip = (
in_array($attribute_name, ['style', 'srcdoc']) ||
str_starts_with($attribute_name, 'on') ||
str_starts_with($attribute_name, 'data-hx') ||
str_starts_with($attribute_name, 'hx') ||
str_starts_with($attribute_name, '-') ||
strlen($attribute_name) > 96
);
AttributeXss.php शेष:
$skip = (
$attribute_name == 'style' ||
str_starts_with($attribute_name, 'on') ||
str_starts_with($attribute_name, '-') ||
strlen($attribute_name) > 96
);
कॉलर में LinkFormatter.php और MenuLinkContent::getUrlObject() शामिल हैं।
पहले से दर्ज गलत मोड़: Xss::filter को बचा हुआ मानना (यह नियंत्रण है); अनधिकृत JSON:API लेखन; PHP RCE; एक रिवर्स शेल। नाटक। ओरेकल नोड HTML पर शेष attr और core/htmx लोडेड है।
python3 drupal-htmx-attr-Abraxas-Labs.py
या
cd lab
./run.sh
केवल http://127.0.0.1:19480 को लक्षित करें। लाइव drupal:11.4.8-apache, Standard प्रोफ़ाइल, लैब के लिए JSON:API राइट सक्षम। Compose प्रोजेक्ट drupal-htmx-attr।
SUCCESS drupal-htmx-attr how=live write=jsonapi nid=1 hx-on-click=kept jsonapi-stored=1 xss-filter=stripped htmx=loaded marker=1 version=11.4.8 DRUPAL-HTMX-ATTR-WITNESS
hx / data-hx / srcdoc डिनाइलिस्ट को AttributeXss में कॉपी करें। इसे Xss में मिला दें, जैसा कि क्लास डॉकब्लॉक पहले से ही कहता है।
61044508071749629aaf3380aa85971e94df9e84)AttributeXss.php · Xss.phpGNU Affero GPL v3.0. देखें LICENSE। केवल लूपबैक लैब। कोई वारंटी नहीं।