ipwn
[pwnable.kr] shellshock 본문
이번 문제는 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 |