ipwn

[pwnable.kr] shellshock 본문

Write up/Pwnable.kr

[pwnable.kr] shellshock

ipwn 2018. 1. 6. 20:32


이번 문제는 shellshock문제이다. 글을 읽어보면 bash shell에 대한 충격적인 뉴스가 있었다고 한다. 


shellshock 취약점을 잘 알고있는지 묻는 문제인듯하다.


서버에 접속해보겠다.



파일들을 보니 bash와 shellshock 파일이 있다. 분명 저 bash는 shellshock취약점이 있는 버전일 것이다.



확인해보니 일반 bash의 버전은 4.3.46버전으로 shellshock의 취약점이 패치 된 이후의 버전이다.


하지만 디렉토리에 있는 bash의 버전은 4.2.25버전으로 shellshock이 존재하는 버전이다.


쉘에서 변수 생성은 asdf="asdf" 과 같이 이뤄진다. 변수를 생성한 뒤 export asdf 을 하게 된다면 


환경변수에 등록할 수 있다. 그리고 asdf() { echo "asdf"; }과 같이 함수 등록도 할 수 있다.


그리고 함수도 마찬가지로 export -f asdf와 같이 환경변수에 등록할 수 있다.


shellshock 취약점은 함수가 아닌 변수가 () { 함수 body }; 공격하려는 코드의 형태로 이뤄져 있을 때 child로 생성된 


Bash shell에서 함수로 인식되는 버그를 의미한다. export x='() { echo "hello?"; }; /bin/cat flag'라는 환경변수를 


생성하고 새로운 bash를 생성하게 된다면 /bin/cat flag라는 코드가 인식돼서 실행이 된다는 것이다.


이제 shellshock.c 코드를 한 번 보겠다.


권한 설정을 해준 뒤 system함수로 (shellshock취약점 버전의)bash -c 'echo shock_me' 를 실행한다.


즉 권한이 상승 된 상태로 shellshock취약점이 있는 bash shell을 실행시킨다는 말이 되겠다.


export var='() { :; }; /bin/cat flag' 의 형태로 환경변수를 만들어주고 shellshock를 실행시키면 flag를 읽어올 것이다.


( : 문자는 true를 의미한다고 한다.) 한 번 환경변수를 만들어보고 shellshock를 실행시켜보겠다.



성공적으로 flag를 읽어왔다.


'Write up > Pwnable.kr' 카테고리의 다른 글

[pwnable.kr] coin1  (0) 2018.03.12
[pwnable.kr] uaf  (0) 2018.02.19
[pwnable.kr] mistake  (0) 2018.01.06
[pwnable.kr] cmd2  (0) 2018.01.04
[pwnable.kr] cmd1  (0) 2018.01.04
Comments