
Cacti ≤1.2.30 के लिए विस्तृत CVE-2026-39938 भेद्यता रिपोर्ट, जिसमें अप्रमाणित LFI को OS कमांड इंजेक्शन RCE से जोड़ते हुए PoC, मूल कारण विश्लेषण और सुधार मार्गदर्शन प्रदर्शित किया गया है।
शोधकर्ता: K | उत्पाद: Cacti ≤ 1.2.30 | CVE: CVE-2026-39938
| फ़ील्ड | मान |
|---|---|
| उत्पाद | Cacti — The Complete RRDtool-based Graphing Solution |
| प्रभावित संस्करण | ≤ 1.2.30 |
| भेद्यता वर्ग | CWE-22: Path Traversal (LFI) → CWE-78: OS Command Injection |
| हमला वेक्टर | नेटवर्क |
| प्रमाणीकरण | कोई आवश्यकता नहीं (अतिथि खाता बाईपास) |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| CVSSv3.1 स्कोर | 9.8 — गंभीर |
| वेक्टर | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
Cacti ≤ 1.2.30, graph_image.php में graph_theme पैरामीटर के माध्यम से अनऑथेंटिकेटेड लोकल फ़ाइल इन्क्लूज़न (LFI) के लिए असुरक्षित है, जो Windows पर cacti_escapeshellarg() के माध्यम से OS कमांड इंजेक्शन द्वारा रिमोट कोड एक्सीक्यूशन (RCE) से जुड़ा है।
HTTP Request
│
▼
graph_image.php
│
├── $guest_account = true → Auth bypass (no login needed)
│
├── graph_theme param → LFI (CWE-22)
│ └── Path traversal via basename() bypass
│
└── Other params (graph_height, etc.)
└── cacti_escapeshellarg() → OS injection (CWE-78)
└── proc_open() → RCE
graph_theme के माध्यम से LFIgraph_theme पैरामीटर को अपर्याप्त रूप से सैनिटाइज़ किया गया है। फिक्स ने basename() का उपयोग करने का प्रयास किया, लेकिन इसे आसानी से बायपास किया जा सकता है — themes/../../etc/passwd जैसा पथ basename() सत्यापन पास करता है जबकि अभी भी निर्देशिकाओं को पार करता है।
graph_image.php में असुरक्षित कोड पथ:
$theme = basename($_GET['graph_theme']); // basename() पर्याप्त नहीं है
include_once("./include/theme_" . $theme . ".php"); // LFI
1.2.31 में फिक्स basename() को cacti_validate_theme() से बदल देता है, जो फ़ाइलसिस्टम अनुमतिसूची का उपयोग करता है।
| शर्त | संभावना | नोट्स |
|---|---|---|
| Cacti Windows पर चलता है | उद्यम में सामान्य | cmd.exe एस्केपिंग दोष RCE को सक्षम करता है |
| अतिथि खाता सक्षम | सामान्य — अक्सर डिफ़ॉल्ट | अतिथि उपयोगकर्ता सार्वजनिक ग्राफ़ देखने की अनुमति देता है |
| कम से कम एक ग्राफ़ मौजूद | लगभग सार्वभौमिक | स्थापना के बाद local_graph_id=1 मौजूद |
| RRDtool स्थापित | Cacti द्वारा आवश्यक | हमेशा मौजूद |
GET /cacti/graph_image.php?local_graph_id=1&graph_theme=../../../../etc/passwd
GET /cacti/graph_image.php?local_graph_id=1&graph_height=100" & whoami & "&action=view
OS कमांड इंजेक्शन पहले से ही प्रत्यक्ष रिमोट कोड एक्सीक्यूशन (RCE) प्रदान करता है, इसलिए समझौता करने के लिए LFI की आवश्यकता नहीं है।
हालाँकि, एक शोधकर्ता के दृष्टिकोण से, यदि दोनों समस्याओं को एक साथ माना जाए:
यह दर्शाता है कि कई भेद्यताओं को संयोजित करने से समग्र प्रभाव बढ़ता है और शोषण को आसान और अधिक विश्वसनीय बनाता है।
| स्तंभ | रेटिंग | विवरण |
|---|---|---|
| गोपनीयता | उच्च | वेब सर्वर फ़ाइलसिस्टम (कॉन्फ़िग, DB क्रेडेंशियल्स) तक पूर्ण पढ़ने की पहुँच |
| अखंडता | उच्च | मनमाना कमांड निष्पादन, वेब शेल तैनाती |
| उपलब्धता | उच्च | प्रक्रिया समाप्ति, फ़ाइल भ्रष्टाचार, DoS |
| मीट्रिक | मान |
|---|---|
| हमला वेक्टर | नेटवर्क |
| हमला जटिलता | कम |
| आवश्यक विशेषाधिकार | कोई नहीं |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| दायरा | अपरिवर्तित |
| गोपनीयता | उच्च |
| अखंडता | उच्च |
| उपलब्धता | उच्च |
स्कोर: 9.8 — गंभीर
| प्राथमिकता | कार्रवाई |
|---|---|
| तत्काल | Cacti 1.2.31 या बाद में अपग्रेड करें |
MENG HOKSENG
स्वतंत्र सुरक्षा शोधकर्ता
संदर्भ: