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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-68116 — CVE-2025-68116 का दस्तावेज़ीकरण | Kitploit
उपकरण/GitHubGitHub/x0root/cve-2025-68116
भेद्यता विश्लेषणशोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगपेपर और शोधलर्निंग और शिक्षा
GitHubx0root/cve-2025-68116

CVE-2025-68116

CVE-2025-68116 का दस्तावेज़ीकरण

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

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

सभी देखें →

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

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

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

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

CVE-2025-68116

लेखक: @x0root
भेद्यता: ब्राउज़र में रेंडर होने योग्य अपलोड्स (SVG / HTML) के माध्यम से स्टोर्ड क्रॉस-साइट स्क्रिप्टिंग (XSS)
प्रभावित सॉफ़्टवेयर: FileRise (< 2.7.1)
पैच किया गया संस्करण: 2.7.1
आधिकारिक CVE (GHSA के माध्यम से अनुरोधित): CVE-2025-68116 (ट्रैकिंग/सलाह: GHSA-35pp-ggh6-c59c)
पिछली संबंधित सलाह (मूल शमन जिसे बायपास किया गया था): GHSA-qrcv-vjvf-fr29

CVSS आकलन:

  • CNA (GitHub): CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:L — 8.9 (उच्च)
  • रिपोर्टर (लेखक विश्लेषण): CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:L — 9.6 (गंभीर)

CVSS स्कोरिंग तर्क (रिपोर्टर)

रिपोर्टर का आकलन आवश्यक विशेषाधिकारों (Privileges Required — PR) का मूल्यांकन शोषण के बिंदु पर करता है, न कि भेद्यता स्थापित करने (planting) के बिंदु पर।

शोषण तब होता है जब कोई पीड़ित उत्पन्न किए गए सार्वजनिक साझा लिंक तक पहुँचता है, जिसके लिए किसी प्रमाणीकरण या विशेषाधिकार की आवश्यकता नहीं होती (PR:N)।

CNA का आकलन PR का मूल्यांकन दुर्भावनापूर्ण फ़ाइल अपलोड करने की क्षमता के आधार पर करता है। हालाँकि, CVSS v3.1 आवश्यक विशेषाधिकारों (PR) को उन विशेषाधिकारों के रूप में परिभाषित करता है जो हमलावर के पास उस समय होने चाहिए जब भेद्यता का शोषण किया जाता है, न कि भेद्य स्थिति को स्थापित करने या तैयार करने के लिए आवश्यक विशेषाधिकार।

इस प्रकार, PR:N वास्तविक-दुनिया की शोषण स्थितियों को अधिक सटीक रूप से दर्शाता है, जिसके परिणामस्वरूप गंभीरता वर्गीकरण Critical (9.6) होता है।

नोट: GHSA-qrcv-vjvf-fr29 ने एक शमन पेश किया था जो SVG को FileRise वेब UI (प्रीव्यू पैन) के अंदर रेंडर होने से रोकता था। यह रिपोर्ट उस शमन के बायपास का दस्तावेजीकरण करती है—विशेष रूप से बैकएंड share/download एंडपॉइंट्स—जिसे GHSA-35pp-ggh6-c59c / CVE-2025-68116 के रूप में ट्रैक किया जाता है।


सारांश

यह दस्तावेज़ CVE-2025-68116 का एक पूर्ण तकनीकी अभिलेख है: FileRise में एक Stored XSS जो पहले के शमन के बाद भी बना रहा और अंततः v2.7.1 में ठीक किया गया। इसमें खोज (discovery), शोषण proof-of-concepts, बार-बार विफल हुए फिक्स, सटीक root-cause नियंत्रण-प्रवाह विश्लेषण (साक्ष्य के साथ), पैच का अंतिम सत्यापन, और CVSS मूल्यांकन से संबंधित शोषण क्षमता विशेषताओं का विश्लेषण शामिल है। नीचे की सभी सामग्री पुनरुत्पादित परीक्षणों, कंट्रोलर निरीक्षण और सार्वजनिक सलाह थ्रेड पर आधारित है।


1. पृष्ठभूमि: पिछली सलाह और अपूर्ण फिक्स

पिछली सलाह, GHSA-qrcv-vjvf-fr29, ने FileRise वेब UI में इनलाइन रेंडरिंग को अवरुद्ध करके SVG अपलोड के माध्यम से Stored XSS का समाधान किया था। उस शमन ने यह नहीं संबोधित किया कि बैकएंड एंडपॉइंट्स द्वारा SVG फ़ाइलों को कैसे सर्व किया जाता था, जैसे:

  • /api/file/download.php
  • /api/file/share.php

CVE-2025-68116 (जिसे GHSA-35pp-ggh6-c59c के रूप में ट्रैक किया जाता है) GHSA-qrcv-vjvf-fr29 शमन के बायपास का दस्तावेजीकरण करता है: एक हमलावर एक क्राफ्टेड SVG संग्रहीत कर सकता है और उसे सार्वजनिक साझा लिंक या कुछ डाउनलोड व्यवहारों के माध्यम से पीड़ितों तक पहुँचा सकता है, जिससे FileRise ऑरिजिन में स्क्रिप्ट निष्पादन होता है।


2. खोज: Proof-of-Concept अपलोड और बायपास

यह सत्यापित करने के लिए कि क्या बैकएंड अभी भी SVG को रेंडर करने योग्य तरीके से उजागर करता है, मैंने एक सरल PoC SVG अपलोड किया:

फ़ाइल तक पहुँचने पर:

  • /api/file/download.php?…
    और, अधिक महत्वपूर्ण रूप से, इसके माध्यम से:
  • /api/file/share.php?token=…

परिणामस्वरूप alert() निष्पादित हुआ। मूल GHSA-qrcv-vjvf-fr29 शमन (UI प्रीव्यू ब्लॉक) को इन एंडपॉइंट्स तक सीधी पहुँच द्वारा बायपास कर दिया गया।


3. वास्तविक-दुनिया के प्रभाव को सिद्ध करना

एक alert() एक PoC है; मैंने पेलोड को आंतरिक APIs के साथ इंटरैक्ट कराकर सार्थक प्रभाव का परीक्षण किया।

उपयोग किया गया परीक्षण पेलोड:

root@kitploit:~
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">
  <script type="text/javascript">
    fetch('/api/upload/upload.php')
      .then(response => response.text())
      .then(data => alert('API Response: ' + data));
  </script>
</svg>

जब एक लॉग-इन व्यवस्थापक ने इस SVG वाले साझा लिंक को खोला, तो स्क्रिप्ट निष्पादित हुई और प्रमाणित API अनुरोध किए। देखे गए प्रभावों में शामिल थे:

  • API प्रतिक्रियाएँ स्क्रिप्ट को लौटाई गईं (संवेदनशील जानकारी उजागर हो सकती थी)
  • API प्रतिक्रिया ने CSRF टोकन स्थिति का संकेत दिया (उदा., {"csrf_expired":true,"csrf_token":"..."})
  • इंटरैक्शन ने व्यवस्थापक के मौजूदा CSRF टोकन को अमान्य कर दिया, जिससे पुनर्प्राप्ति तक आगे के state-changing कार्य रुक गए (व्यवस्थापक फ़ंक्शनों के विरुद्ध व्यावहारिक denial-of-service)

परीक्षण के दौरान प्रदर्शित प्रभाव वर्गीकरण:

  • गोपनीयता: उच्च (C:H)
  • अखंडता: उच्च (I:H)
  • उपलब्धता: निम्न (A:L)

4. प्रकटीकरण समयरेखा और बार-बार फिक्स प्रयास

मैंने समस्या की सूचना निजी रूप से दी। अनुरक्षक (maintainer) ने कई क्रमिक फिक्स जारी किए:

  • v2.6.0 — डाउनलोड एंडपॉइंट पर शमन लागू किया गया; share एंडपॉइंट अभी भी भेद्य था।
  • v2.6.2 — आगे के प्रयास; मेरे परीक्षणों में share एंडपॉइंट भेद्य बना रहा।
  • v2.7.0 — share एंडपॉइंट के लिए कथित हार्डनिंग; मेरे वातावरण में फिर भी शोषण योग्य।
  • v2.7.1 — अंतिम फिक्स जिसे मैंने सत्यापित किया कि समस्या का समाधान करता है (सत्यापन अनुभाग देखें)।

v2.6.0 → v2.7.0 के दौरान, share लिंक एंडपॉइंट SVG को इस तरह सर्व करता रहा जिससे इनलाइन रेंडरिंग और स्क्रिप्ट निष्पादन संभव हुआ। नीचे दिया गया root cause विश्लेषण बताता है कि पहले के फिक्स इस वेक्टर को पूरी तरह बंद करने में विफल क्यों रहे।


5. Root Cause विश्लेषण — नियंत्रण प्रवाह और हेडर विफलता (साक्ष्य)

अंतर्निहित कारण कोई एक लापता हेडर नहीं था, बल्कि shareFile() (कंट्रोलर) के अंदर नियंत्रण-प्रवाह और आउटपुट क्रम था, जिसने कई निष्पादन पथों में सुरक्षा हेडर लागू होने से रोका। समस्याओं के दो वर्ग मौजूद थे:

  • कई प्रारंभिक exit; बिंदु जिन्होंने सुरक्षा हेडर सेट होने से पहले ही फ़ंक्शन को छोटा-सर्किट कर दिया।
  • PHP warnings/notices जिन्होंने हेडर कॉल से पहले आउटपुट उत्सर्जित किया, जिससे "headers already sent" त्रुटियाँ उत्पन्न हुईं।

5.1 प्रारंभिक exit गणना

मैंने shareFile() के भीतर readfile() कॉल तक header() और exit; की उपस्थितियों को सूचीबद्ध करने के लिए एक awk स्कैन का उपयोग किया:

कमांड: awk '/function shareFile(/ {flag=1} /readfile(/ {flag=0} flag && /(header|exit;)/ {printf "%4d | %s\n", NR, $0}' src/controllers/FileController.php

देखा गया आउटपुट (मेरे रन से संक्षिप्त):

1649 | header('Content-Type: application/json; charset=utf-8'); 1651 | exit; 1657 | header('Content-Type: application/json; charset=utf-8'); 1659 | exit; 1664 | header('Content-Type: application/json; charset=utf-8'); 1666 | exit; 1670 | header("Content-Type: text/html; charset=utf-8"); 1693 | exit; 1699 | header('Content-Type: application/json; charset=utf-8'); 1701 | exit; 1719 | header('Content-Type: application/json; charset=utf-8'); 1721 | exit; 1725 | header('Content-Type: application/json; charset=utf-8'); 1727 | exit;

सुरक्षा हेडर (हार्डनिंग लॉजिक) लगभग पंक्ति 1743 से शुरू होते हैं:

1743 | header('X-Content-Type-Options: nosniff'); ... 1770 | header("Content-Disposition: attachment; ...");

क्योंकि फ़ंक्शन कई पथों में पहले ही हेडर + exit; उत्सर्जित कर देता है, वे अनुरोध कभी भी हार्डनिंग कोड तक नहीं पहुँचे जो Content-Disposition, nosniff, या प्रतिबंधात्मक प्रकार सेट करता है।

5.2 पासवर्ड प्रॉम्प्ट पथ

पासवर्ड-संरक्षित share प्रवाह में, फ़ंक्शन ने पासवर्ड प्रॉम्प्ट HTML को पहले ही उत्सर्जित कर दिया:

root@kitploit:~
if (!empty($record['password']) && empty($providedPass)) {
    header("Content-Type: text/html; charset=utf-8");
    ...
    exit;
}

यह पथ Content-Type: text/html भेजता है और SVG हार्डनिंग लॉजिक से पहले exit कर जाता है, जिससे उन पासवर्ड-संरक्षित shares में जहाँ कोई पासवर्ड प्रदान नहीं किया गया, ब्राउज़रों में इनलाइन रेंडरिंग होती है।

5.3 गैर-पासवर्ड-संरक्षित shares (प्रदर्शित)

भेद्यता केवल पासवर्ड-संरक्षित प्रवाहों तक सीमित नहीं थी। मेरे परीक्षणों में एक गैर-पासवर्ड share अनुरोध ने भी text/html लौटाया:

कमांड: curl -svI "http://127.0.0.1:8080/api/file/share.php?token=437d7913884ace4b94fab8ce745a686a" 2>&1 | grep -iE "content-type"

देखा गया: < Content-Type: text/html; charset=UTF-8

यह पुष्टि करता है कि सामान्य (गैर-पासवर्ड) स्थिति में भी प्रतिक्रिया text/html थी, और SVG इनलाइन रेंडर हुआ।

5.4 PHP notices के कारण "Headers already sent"

मैंने share एंडपॉइंट का एक रॉ फ़ेच कैप्चर किया जिसमें हेडर हार्डनिंग से पहले उत्सर्जित PHP warnings शामिल थीं। स्नैपशॉट (संक्षिप्त):

कमांड: curl -s "http://127.0.0.1:8080/api/file/share.php?token=437d7913884ace4b94fab8ce745a686a" | head -n 30

देखा गया रॉ आउटपुट (संक्षिप्त):

Deprecated: Constant FILTER_SANITIZE_STRING is deprecated in /data/data/com.termux/files/home/FileRise/src/controllers/FileController.php on line 1644


Deprecated: Constant FILTER_SANITIZE_STRING is deprecated in /data/data/com.termux/files/home/FileRise/src/controllers/FileController.php on line 1645

Warning: Cannot modify header information - headers already sent by (output started at /data/data/com.termux/files/home/FileRise/src/controllers/FileController.php:1644) in /data/data/com.termux/files/home/FileRise/src/controllers/FileController.php on line 1743

...then the raw SVG payload streamed and rendered inline...

ये warnings दर्शाती हैं कि हेडर हार्डनिंग से पहले आउटपुट (deprecated notices) उत्पन्न हो गया था, जिससे उन रनों में बाद के header() कॉल्स का प्रभावी होना असंभव हो गया।

5.5 Root cause का सारांश

  • डाउनलोड बाध्य करने और nosniff सेट करने वाला हार्डनिंग कोड मौजूद था, लेकिन प्रारंभिक exits और आउटपुट के कारण कई कोड पथों पर वह पहुँचा नहीं गया।
  • PHP notices/warnings ने आगे चलकर हेडर संशोधन को रोका।
  • व्यावहारिक परिणाम: share लिंक (कुछ मामलों में पासवर्ड और गैर-पासवर्ड दोनों पथ) HTML लौटाते थे या अन्यथा ब्राउज़र को SVG को इनलाइन रेंडर करने की अनुमति देते थे, जिससे एम्बेडेड स्क्रिप्ट निष्पादित होती थीं।

6. अंतिम फिक्स (v2.7.1) और सत्यापन

Root-cause रिपोर्टों के बाद, अनुरक्षक ने नियंत्रण-प्रवाह और आउटपुट क्रम को संबोधित करने वाले परिवर्तन लागू किए। v2.7.1 में:

  • SVG/SVGZ share लिंक डाउनलोड के लिए बाध्य किए गए हैं (Content-Disposition: attachment)।
  • SVG के लिए फ़ाइलें एक सुरक्षित MIME (application/octet-stream) के साथ सर्व की जाती हैं।
  • X-Content-Type-Options: nosniff लागू किया गया है।
  • सुरक्षा हेडर लॉजिक किसी भी आउटपुट से पहले निष्पादित किया जाता है, और पहले के exit; बिंदु जो हार्डनिंग को बायपास करते थे, उन्हें सही/संभाला गया।

अंतिम सत्यापन (v2.7.1 पर मेरा परीक्षण):

कमांड: curl -svI "http://127.0.0.1:8080/api/file/share.php?token=fc911e48b0a30e9417a9020ef959784d" 2>&1 | grep -iE "content-type|content-disposition"

देखा गया: < Content-Type: application/octet-stream < Content-Disposition: attachment; filename="xss-image.svg"; filename*=UTF-8''xss-image.svg

परिणाम: ब्राउज़र ने डाउनलोड बाध्य किया; SVG इनलाइन नहीं रेंडर हुआ और XSS पेलोड निष्पादित नहीं हुआ। मैं मानता हूँ कि v2.7.1 ने मेरे वातावरण में समस्या का समाधान कर दिया।


7. CVSS शोषण क्षमता संदर्भ

शोषण क्षमता आकलन (रिपोर्टर विश्लेषण)

  • CVSS आवश्यक विशेषाधिकारों का मूल्यांकन शोषण के समय करता है, न कि planting (स्थापित करने) के समय।
  • यहाँ शोषण वितरण बिना प्रमाणीकरण के है: सार्वजनिक share लिंक का कोई भी प्राप्तकर्ता (व्यवस्थापकों सहित) बिना प्रमाणीकरण के पेलोड ट्रिगर कर सकता है।
  • यह एक fire-and-forget हथियार बनाता है: हमलावर एक दुर्भावनापूर्ण फ़ाइल स्थापित करता है, लॉग आउट करता है, और सार्वजनिक share लिंक शोषण योग्य बना रहता है।
  • इसलिए सबसे गंभीर यथार्थवादी परिदृश्य के लिए सही CVSS वेक्टर है:

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:L — स्कोर: 9.6 (गंभीर)

मैंने यह तर्क सलाह थ्रेड में दर्ज किया और PR:N उपयोग करने का अनुरोध किया।

अनुरक्षक आकलन (प्रकाशित अनुसार)

  • अनुरक्षक ने आधिकारिक सलाह पर आवश्यक विशेषाधिकारों को Low (PR:L) स्कोर किया, यह तर्क देते हुए कि दुर्भावनापूर्ण फ़ाइल अपलोड/स्थापित करने के लिए एक खाता या upload-सक्षम टोकन (एक पूर्व-मौजूद क्षमता) आवश्यक है।
  • उन्होंने उस आवश्यकता को pre-exploitation विशेषाधिकारों का हिस्सा माना और इसलिए PR:L का उपयोग किया; सलाह पाठ अभी भी नोट करता है कि परिणामी share URLs को बिना प्रमाणीकरण वाले प्राप्तकर्ताओं द्वारा खोला जा सकता है।

प्रशासनिक परिणाम

  • अनुरक्षक ने GitHub के माध्यम से CVE अनुरोध करने के लिए आगे बढ़े और GHSA सलाह को PR:L (उच्च 8.9) के साथ प्रकाशित किया।
  • CVE को GHSA प्रक्रिया के भाग के रूप में GitHub के माध्यम से अनुरोधित किया गया और PR:L के साथ प्रकाशित किया गया। यह दस्तावेज़ पूर्णता और भविष्य के संदर्भ के लिए रिपोर्टर के शोषण क्षमता विशेषताओं के तकनीकी विश्लेषण को संरक्षित करता है

CNA का CVSS वेक्टर एक सीमित खतरा मॉडल को दर्शाता है।

अनुभवजन्य परीक्षण एक अधिक गंभीर और पुनरुत्पादनीय शोषण पथ प्रदर्शित करता है, जो मानक स्कोरिंग नियमों के अंतर्गत उच्च CVSS 3.1 आधार स्कोर के अनुरूप है।

स्वतंत्र मूल्यांकनकर्ताओं को प्रोत्साहित किया जाता है कि वे इस दस्तावेज़ में वर्णित देखी गई शोषण स्थितियों का उपयोग करके गंभीरता का आकलन करें, यह सुनिश्चित करते हुए कि सार्वजनिक गंभीरता एक संकीर्ण रूप से सीमित आधार रेखा के बजाय वास्तविक-दुनिया के प्रभाव को दर्शाती है।


8. निष्कर्ष

  • समस्या एक वास्तविक Stored XSS थी जहाँ SVGs को इस तरह सर्व किया जा सकता था जिससे इनलाइन रेंडरिंग और स्क्रिप्ट निष्पादन संभव हो।
  • पिछली सलाह (GHSA-qrcv-vjvf-fr29) ने प्रीव्यू रेंडरिंग को शमित किया लेकिन बैकएंड share/download एंडपॉइंट्स को संबोधित नहीं किया; GHSA-35pp-ggh6-c59c (CVE-2025-68116) इस बायपास का दस्तावेजीकरण करता है।
  • मुख्य तकनीकी root cause नियंत्रण-प्रवाह क्रम और output-before-headers था, जिसने कई निष्पादन पथों में सुरक्षा हेडर लागू होने से रोका।
  • v2.7.1 में अंतिम फिक्स नियंत्रण प्रवाह को सही करता है, SVG के लिए डाउनलोड बाध्य करता है, और उचित हेडर लागू करता है; मैंने फिक्स सत्यापित किया।
  • पारदर्शिता के लिए CVSS आवश्यक विशेषाधिकारों (PR:N बनाम PR:L) की विभिन्न व्याख्याएँ दर्ज की गई हैं

परिशिष्ट A — साक्ष्य (जांच के दौरान कैप्चर किए गए चयनित अंश)

A.1 प्रारंभिक-exit हेडर स्कैन (awk आउटपुट, संक्षिप्त)

1649 | header('Content-Type: application/json; charset=utf-8'); 1651 | exit; 1657 | header('Content-Type: application/json; charset=utf-8'); 1659 | exit; 1664 | header('Content-Type: application/json; charset=utf-8'); 1666 | exit; 1670 | header("Content-Type: text/html; charset=utf-8"); 1693 | exit; 1699 | header('Content-Type: application/json; charset=utf-8'); 1701 | exit; 1719 | header('Content-Type: application/json; charset=utf-8'); 1721 | exit; 1725 | header('Content-Type: application/json; charset=utf-8'); 1727 | exit;

सुरक्षा हेडर ~1743 पर शुरू होते हैं: 1743 | header('X-Content-Type-Options: nosniff'); ... 1770 | header("Content-Disposition: attachment; ...");

A.2 गैर-पासवर्ड share curl हेडर (भेद्य व्यवहार)

~/FileRise $ curl -svI "http://127.0.0.1:8080/api/file/share.php?token=437d7913884ace4b94fab8ce745a686a" 2>&1 | grep -iE "content-type" < Content-Type: text/html; charset=UTF-8

A.3 "Headers already sent" और deprecated notices (रॉ आउटपुट नमूना)

Deprecated: Constant FILTER_SANITIZE_STRING is deprecated in /data/data/com.termux/files/home/FileRise/src/controllers/FileController.php on line 1644


Deprecated: Constant FILTER_SANITIZE_STRING is deprecated in /data/data/com.termux/files/home/FileRise/src/controllers/FileController.php on line 1645

Warning: Cannot modify header information - headers already sent by (output started at /data/data/com.termux/files/home/FileRise/src/controllers/FileController.php:1644) in /data/data/com.termux/files/home/FileRise/src/controllers/FileController.php on line 1743

...followed by the SVG payload being printed and rendered inline.

A.4 अंतिम सत्यापन (v2.7.1)

~/FileRise $ curl -svI "http://127.0.0.1:8080/api/file/share.php?token=fc911e48b0a30e9417a9020ef959784d" 2>&1 | grep -iE "content-type|content-disposition" < Content-Type: application/octet-stream < Content-Disposition: attachment; filename="xss-image.svg"; filename*=UTF-8''xss-image.svg


टूल डाउनलोड करें