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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/k4pxd/cve-2022-46169
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षारेड टीमिंग
GitHubk4pxd/cve-2022-46169

CVE-2022-46169

कैक्टि 1.2.22 बिना प्रमाणीकरण के कमांड इंजेक्शन

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

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

सभी देखें →

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

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

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

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

CVE-2022-46169 — Cacti 1.2.22 अनप्रमाणित कमांड इंजेक्शन


फ़ील्डविवरण
उत्पादCacti
प्रभावित संस्करण1.2.22
भेद्यताअनप्रमाणित OS कमांड इंजेक्शन
CVECVE-2022-46169
CWECWE-77 — कमांड इंजेक्शन
गंभीरताक्रिटिकल
CVSS v3.19.8
हमला वेक्टरनेटवर्क
प्रमाणीकरणकोई नहीं
उपयोगकर्ता इंटरैक्शनकोई नहीं
प्रभावगोपनीयता / अखंडता / उपलब्धता
फिक्स्ड संस्करण1.2.23
भेद्य घटकremote_agent.php
अतिरिक्त घटकlib/functions.php
मुख्य भेद्य क्रियाpolldata

प्रकाशित CVSS वेक्टर है:

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

आधिकारिक सलाह इसे 9.8 क्रिटिकल दर्जा देती है। (GitHub)

1. मूल कारण

वास्तव में दो बग एक साथ जुड़े हुए हैं।

चरण 1 — प्राधिकरण बायपास

Cacti का remote_agent.php सामान्य प्रमाणीकरण के बिना अनुरोध स्वीकार करता है, लेकिन यह निर्धारित करने का प्रयास करता है कि अनुरोधकर्ता एक अधिकृत पोलर है या नहीं।

प्राधिकरण प्रवाह प्रभावी रूप से यह करता है:

root@kitploit:~
HTTP अनुरोध
     │
     ▼
remote_agent.php
     │
     ▼
remote_client_authorized()
     │
     ▼
get_client_addr()
     │
     ▼
gethostbyaddr()
     │
     ▼
पोलर तालिका होस्टनाम तुलना

समस्या get_client_addr() है।

1.2.22 में यह कई HTTP-व्युत्पन्न सर्वर चरों की जांच करता है, जिसमें फॉरवर्डेड-क्लाइंट-IP हेडर शामिल हैं। सलाह बताती है कि हमलावर-नियंत्रित HTTP_* मान इस फ़ंक्शन द्वारा लौटाए गए IP को प्रभावित कर सकते हैं। (GitHub)

इसका मतलब है कि एप्लिकेशन को यह विश्वास करने के लिए धोखा दिया जा सकता है:

root@kitploit:~
हमलावर
   ↓
"मेरा IP Cacti सर्वर है"
   ↓
gethostbyaddr()
   ↓
Cacti सर्वर होस्टनाम
   ↓
पोलर तालिका से मेल खाता है
   ↓
अधिकृत

इसलिए हमलावर को वैध Cacti खाते की आवश्यकता नहीं है।


2. दूसरी भेद्यता — कमांड इंजेक्शन

प्राधिकरण जांच को बायपास करने के बाद, दिलचस्प एंडपॉइंट कार्यक्षमता polldata क्रिया है।

प्रासंगिक निष्पादन पथ लगभग है:

root@kitploit:~
remote_agent.php
      │
      ▼
    polldata
      │
      ▼
 poll_for_data()
      │
      ├── host_id
      ├── local_data_ids
      └── poller_id
              │
              ▼
       poller_item लुकअप
              │
              ▼
 POLLER_ACTION_SCRIPT_PHP
              │
              ▼
          proc_open()
              │
              ▼
       OS कमांड निष्पादन

महत्वपूर्ण गलती poller_id की हैंडलिंग है।

एप्लिकेशन इसे इसका उपयोग करके प्राप्त करता है:

root@kitploit:~
get_nfilter_request_var()

बजाय यह सुनिश्चित करने के कि यह एक पूर्णांक है।

वह हमलावर-नियंत्रित मान अंततः PHP के proc_open() को पारित किए गए कमांड का हिस्सा बन जाता है। आधिकारिक सलाह स्पष्ट रूप से इसे कमांड-इंजेक्शन प्रिमिटिव के रूप में पहचानती है। (GitHub)

अवधारणात्मक रूप से:

root@kitploit:~
हमलावर-नियंत्रित इनपुट
        ↓
     poller_id
        ↓
 स्ट्रिंग संयोजन
        ↓
     proc_open()
        ↓
 ऑपरेटिंग-सिस्टम कमांड

यह भेद्यता का महत्वपूर्ण हिस्सा है।


3. यह RCE क्यों बन जाता है

आपके PoC विश्लेषण के लिए दिलचस्प बात यह है कि अकेले कोई भी बग पूरी कहानी नहीं है।

यह एक भेद्यता श्रृंखला है:

root@kitploit:~
        ┌──────────────────────────┐
        │ अनप्रमाणित हमलावर │
        └────────────┬─────────────┘
                     │
                     ▼
          remote_agent.php
                     │
                     ▼
        प्राधिकरण बायपास
          क्लाइंट IP लॉजिक के माध्यम से
                     │
                     ▼
              polldata
                     │
                     ▼
            poller_item लुकअप
                     │
                     ▼
       POLLER_ACTION_SCRIPT_PHP
                     │
                     ▼
             हमलावर इनपुट
              → poller_id
                     │
                     ▼
                proc_open()
                     │
                     ▼
              कमांड निष्पादन
                     │
                     ▼
                    RCE

यह आपके राइट-अप में करने के लिए एक बहुत महत्वपूर्ण अंतर है:

CVE-2022-46169 केवल "remote_agent.php में एक खराब पैरामीटर" नहीं है। यह एक श्रृंखलाबद्ध प्राधिकरण-बायपास + कमांड-इंजेक्शन भेद्यता है।

आधिकारिक सलाह पुष्टि करती है कि भेद्य निष्पादन स्थिति के लिए एक poller_item की आवश्यकता होती है जिसकी क्रिया POLLER_ACTION_SCRIPT_PHP है। (GitHub)


4. पर्यावरणीय पूर्वापेक्षा

आपके PoC को इसे स्पष्ट रूप से प्रलेखित करना चाहिए क्योंकि यह एक महत्वपूर्ण विश्लेषणात्मक विवरण है।

लक्ष्य को इसके साथ कॉन्फ़िगर किए गए उपयुक्त poller_item की आवश्यकता है:

root@kitploit:~
POLLER_ACTION_SCRIPT_PHP

Cacti सलाह नोट करती है कि यह उत्पादन इंस्टॉलेशन पर सामान्य है क्योंकि पूर्वनिर्धारित टेम्पलेट जैसे Device - Uptime और Device - Polling Time ये प्रविष्टियाँ बना सकते हैं। (GitHub)

इसलिए यह न लिखें:

"हर Cacti 1.2.22 इंस्टॉलेशन स्वचालित रूप से शोषण योग्य है।"

अधिक तकनीकी रूप से सटीक कथन है:

Cacti 1.2.22 भेद्य है, और सफल कमांड निष्पादन उपयुक्त poller_item कॉन्फ़िगरेशन की उपस्थिति पर निर्भर करता है।


5. host_id और local_data_id क्यों मायने रखते हैं

poll_for_data() केवल आपूर्ति किए गए poller_id को निष्पादित नहीं करता है।

यह पहले इसके अनुरूप मानों का उपयोग करके poller_item को क्वेरी करता है:

root@kitploit:~
host_id
local_data_id

फिर यह परिणामी आइटम की क्रिया की जांच करता है।

भेद्य स्थिति प्रभावी रूप से है:

root@kitploit:~
host_id
   +
local_data_id
   ↓
poller_item
   ↓
action == POLLER_ACTION_SCRIPT_PHP
   ↓
भेद्य निष्पादन पथ

मूल सलाह नोट करती है कि ये पहचानकर्ता खोजे जा सकते हैं क्योंकि प्रासंगिक प्रविष्टियाँ एप्लिकेशन के डेटाबेस में मौजूद हैं, और उपयुक्त प्रविष्टियाँ उत्पादक इंस्टॉलेशन पर मौजूद होने की संभावना है। (GitHub)

सार्वजनिक PoC के लिए, मैं इस पूर्वापेक्षा को छिपाने के बजाय स्पष्ट रूप से प्रदर्शित करने की अनुशंसा करता हूँ।


6. सुरक्षित PoC पद्धति

आपके द्वारा प्रकाशित की जाने वाली चीज़ के लिए, मैं अनुशंसा करता हूँ कि PoC पाठकों को हथियारबंद रिवर्स-शेल पेलोड दिए बिना कमांड निष्पादन प्रदर्शित करे।

उदाहरण के लिए, अपने प्रदर्शन को इस प्रकार संरचित करें:

root@kitploit:~
1. एक अलग VM में Cacti 1.2.22 तैनात करें
2. POLLER_ACTION_SCRIPT_PHP का उपयोग करके poller_item कॉन्फ़िगर करें
3. पुष्टि करें कि remote_agent.php पहुंच योग्य है
4. प्राधिकरण निर्णय को प्रभावित होते हुए प्रदर्शित करें
5. polldata निष्पादन पथ तक पहुँचें
6. एक हानिरहित कमांड-निष्पादन मार्कर का उपयोग करें
7. परिणामी एप्लिकेशन/लॉग साक्ष्य कैप्चर करें
8. 1.2.23 में अपग्रेड करें
9. परीक्षण दोहराएं
10. प्रदर्शित करें कि भेद्यता अब शोषण योग्य नहीं है

यह आपको एक वैध भेद्यता प्रदर्शन देता है बिना राइट-अप को तैयार इंटरनेट RCE हथियार में बदले।


7. आपकी रिपोर्ट के लिए स्रोत-कोड विश्लेषण

आप भेद्य कोड को तीन क्षेत्रों में विभाजित कर सकते हैं।

A. remote_agent.php

रिमोट-एजेंट कार्यक्षमता को उजागर करने और अनुरोधित क्रिया को भेजने के लिए जिम्मेदार।

root@kitploit:~
remote_agent.php
      │
      └── action = polldata
                 │
                 ▼
            poll_for_data()

B. lib/functions.php

इसमें get_client_addr() शामिल है।

समस्याग्रस्त डिज़ाइन अनुरोधकर्ता के वास्तविक नेटवर्क पते का निर्णय करते समय HTTP-व्युत्पन्न मानों पर भरोसा करना है।

आधिकारिक सलाह वास्तविक रिमोट पते पर वापस आने से पहले कई HTTP-संबंधित चरों की सूची देती है जिनकी जांच की जाती है। (GitHub)

C. proc_open()

अंतिम खतरनाक सिंक proc_open() के माध्यम से निष्पादित PHP कमांड का निर्माण है।

सलाह भेद्य प्रवाह की पहचान इस प्रकार करती है:

root@kitploit:~
poller_id
    ↓
get_nfilter_request_var()
    ↓
कमांड निर्माण
    ↓
proc_open()

(GitHub)


8. पैच इसे क्यों ठीक करता है

Cacti सलाह दो महत्वपूर्ण सुधार उपायों की पहचान करती है।

पहला, poller_id को पूर्णांक के रूप में माना जाना चाहिए:

root@kitploit:~
get_nfilter_request_var()
             ↓
get_filter_request_var()

दूसरा, मान को कमांड में शामिल करने से पहले अतिरिक्त रूप से शेल-एस्केप किया जाना चाहिए:

root@kitploit:~
escapeshellarg($poller_id)

सलाह विशेष रूप से दोनों उपायों की अनुशंसा करती है। (GitHub)

प्राधिकरण पक्ष को भी हमलावर को प्राधिकरण के लिए उपयोग किए जाने वाले क्लाइंट IP को मनमाने ढंग से प्रभावित करने से रोकने की आवश्यकता है। (GitHub)


9. संस्करण तुलना

root@kitploit:~
Cacti 1.2.22
     │
     ├── भेद्य
     ├── प्राधिकरण बायपास
     ├── कमांड इंजेक्शन
     └── संभावित अनप्रमाणित RCE
     
Cacti 1.2.23
     │
     └── CVE-2022-46169 पैच किया गया

विक्रेता सलाह 1.2.22 को प्रभावित और 1.2.23 को पैच किया गया 1.2.x रिलीज़ के रूप में सूचीबद्ध करती है। (GitHub)

Amazon का सुरक्षा सलाह स्वतंत्र रूप से इस मुद्दे को एक अनप्रमाणित हमलावर को मनमाने कमांड निष्पादित करने की अनुमति देने के रूप में वर्णित करता है और इसे 9.8 CVSS स्कोर देता है। (AWS Training and Certification)


10. आपके प्रकाशित PoC के लिए अच्छा शीर्षक

मैं कुछ इस तरह उपयोग करूँगा:

CVE-2022-46169 — Cacti 1.2.22 में अनप्रमाणित कमांड इंजेक्शन / RCE

या अधिक तकनीकी:

CVE-2022-46169: Cacti 1.2.22 रिमोट एजेंट प्राधिकरण बायपास और कमांड इंजेक्शन श्रृंखला का विश्लेषण

और आपका भेद्यता सारांश यह कह सकता है:

Cacti 1.2.22 में रिमोट-एजेंट कार्यक्षमता में एक क्रिटिकल भेद्यता श्रृंखला है। एक हमलावर रिमोट-एजेंट प्राधिकरण जांच को बायपास करने के लिए क्लाइंट-पता निर्धारण लॉजिक में हेरफेर कर सकता है। एक बार polldata कार्यक्षमता तक पहुँचने के बाद, poller_id पैरामीटर का अपर्याप्त सत्यापन हमलावर-नियंत्रित डेटा को proc_open() के माध्यम से निष्पादित कमांड तक पहुँचने की अनुमति देता है। POLLER_ACTION_SCRIPT_PHP पोलर आइटम वाले कॉन्फ़िगरेशन के तहत, यह अनप्रमाणित रिमोट कमांड निष्पादन का परिणाम हो सकता है। यह मुद्दा Cacti 1.2.23 में ठीक किया गया था। (GitHub)

आपके शोध के लिए एक महत्वपूर्ण सुधार: इसे CVE-2023-39362 के साथ भ्रमित न करें। वह बाद का Cacti RCE 1.2.24 को प्रभावित करता है और 1.2.25 में ठीक किया गया था, इसलिए यह 1.2.22 PoC के लिए आप जो भेद्यता चाहते हैं वह नहीं है। (NVD)

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