
# Jenkins CVE-2024-23897 के लिए अनप्रमाणित मनमाना फ़ाइल पढ़ने का शोषण, HTTPS और CSRF-crumb समर्थन के साथ जो कठोर इंस्टेंस को बायपास करता है।
cve-2024-23897-crumb.py — Jenkins <= 2.441 / LTS <= 2.426.2 (2.442 / LTS 2.426.3 में ठीक किया गया) के विरुद्ध बिना प्रमाणीकरण के मनमाना फ़ाइल पठन।
व्यापक रूप से उपयोग किए जाने वाले PoC — exploit-db 51993, xaitax/CVE-2024-23897, और ProjectDiscovery nuclei टेम्पलेट — केवल HTTP हैं और कोई CSRF crumb नहीं भेजते। ऐसे Jenkins इंस्टेंस के विरुद्ध जो:
वे 403 No valid crumb was included in the request के साथ विफल हो जाते हैं, जो
"पैच किया गया" से अप्रभेद्य है और गलत नकारात्मक उत्पन्न करता है।
यह वैरिएंट:
--http/cli त्रुटि पृष्ठ से एक उपयोग योग्य CSRF crumb + मेल खाता JSESSIONID खींचता है, फिर उन्हें डुप्लेक्स चैनल पर दोबारा चलाता है;शुद्ध प्रभाव: यह कठोर-किंतु-अनपैच किए गए इंस्टेंस का पता लगाता है और उसका शोषण करता है जिन्हें सार्वजनिक उपकरण सुरक्षित बताते हैं।
python3 cve-2024-23897-crumb.py <host> [file] [--http] [--port N]
python3 cve-2024-23897-crumb.py jenkins.example.com
python3 cve-2024-23897-crumb.py jenkins.example.com /etc/shells
python3 cve-2024-23897-crumb.py 10.0.0.5 /etc/passwd --http --port 8080
केवल Python 3 मानक पुस्तकालय। केवल-पठनीय: help "@<file>" भेजता है; कुछ भी
लिखा, अपलोड या निष्पादित नहीं किया जाता।
help किसी फ़ाइल की अग्रणी पंक्ति(यों) को प्रतिध्वनित करता है — Too many arguments: संदेश में पहली पंक्ति के साथ-साथ (default: ...) फ़ील्ड में निम्नलिखित पंक्तियाँ। उन फ़ाइलों पर अच्छा काम करता है जिनकी पहली पंक्ति में कई फ़ील्ड होते हैं या लंबी होती है:
/etc/passwd, /etc/shells/proc/net/arp, /proc/net/route (आंतरिक IP, गेटवे, MAC)/proc/mounts (कंटेनर/स्टोरेज लेआउट)बहुत छोटी पहली पंक्ति वाली फ़ाइलें (जैसे /etc/hostname) प्रमाणीकरण-त्रुटि पथ पर चली जाती हैं और help के माध्यम से कुछ भी नहीं लौटातीं। पूरी-फ़ाइल निष्कर्षण इसके बजाय connect-node कमांड का उपयोग करता है, लेकिन उसके लिए अनाम उपयोगकर्ता के पास Overall/Read होना आवश्यक है — अक्सर प्रदान नहीं किया जाता, ऐसी स्थिति में पठन प्रिमिटिव अभी भी काम करता है लेकिन केवल अग्रणी पंक्तियाँ वापस आती हैं।
इसे केवल उन होस्टों पर इंगित करें जिनका परीक्षण करने के लिए आप अधिकृत हैं। वही चैनल स्थिति-परिवर्तनकारी CLI कमांड (enable-job, reload-configuration, …) उजागर करता है; यह स्क्रिप्ट जानबूझकर केवल केवल-पठनीय help पथ का उपयोग करती है।