정보보안(구버전)/공격툴&정보수집 2016. 5. 26. 15:07

공격툴&정보수집 - 14. exploit-db 사이트 & 활용 방법

 

 

본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.

 

 

 - http://www.exploit-db.com

 - 프로그램, 운영체제, 데이터베이스, 전송 및 보안 장비/운영체제에 대한 취약점 분석 코드 제공

 - Zero Day 공격 기간 이후 해결 방안을 제시하는 취약점 코드 및 공격 코드 제공

 - Kali Linux에는 exploit-db에서 제공하는 취약점 코드들이 내장되어 있음

 

 

[참고] Zero Day 공격

 

프로그램, OS, DB, 장비의 보안 취약점이 발견되고, 이를 해결하는 패치가 발표되기도 전에 그 취약점을 이용한 악성 코드 및 해킹 공격을 수행하는 공격

 

 

 

Ex1) exploit-db 사이트 활용 (Bash Shell Bug - 2014년 9월 24일 발견)

 

 - 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 사이트를 이용하여 Bash Shell Bug 관련된 내용을 찾아보도록 한다.

 

 

 http://www.exploit-db.com -> Search -> 'GNU bash' 검색 (https://www.exploit-db.com/exploits/34765/)

 

 


  GNU Bash - Environment Variable Command Injection (Shellshock) 클릭

(바로가기 : 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='() { :;}; 명령어는 함수를 이용한 환경변수 설정의 기본 형식이다. 만약, 명령어 끝나는 ; 뒤에 명령어는 오류가 발생하거나, 실행되지 않는게 원칙이다. 취약점이 있는 경우에는 echo vulnerable의 환경 변수를 이용하여 "echo this is a test" 를 실행하게 된다. 이때 { :;}; 에서 ':'는 참을 의미하기 때문에 무조건 함수가 실행된다.

 

 

다음과 같이 테스트를 실시한다.

 

 

 

 

Ex2) Bash Shell Bug 유무 확인

 

@ CentOS

 

[root@CentOS /root]#  env x='() { :;}; cat /etc/passwd' bash -c "echo this is a test"
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
~ 중간 생략 ~

 

 

 - 함수 선언 뒤에 임의의 명령어를 삽입했을 경우, 유효성 검증 단계 없이 명령어를 실행한다.

 - 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 버전을 확인한다.

 

[root@CentOS /root]# rpm -qa | grep bash
bash-3.2-32.el5_9.1

 

 - Bash Shell Bug 해결 방법은 다음과 같이 최신 버전으로 업데이트를 실시한다.

 

[root@CentOS /root]# yum -y install bash


[root@CentOS /root]# rpm -qa | grep bash
bash-3.2-33.el5_11.4

 

 

 - Bash Shell Bug가 있는지 확인한다.

 

[root@CentOS /root]# env x='() { :;}; cat /etc/passwd' bash -c "echo this is a test"
this is a test



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


공격툴&정보수집 - 14장 exploit-db 사이트 & 활용 방법 (Bash Shell Shock)   https://youtu.be/GfWLtvcLNAI

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


Q