[pwnable.kr] shellshock - 1 pt

2018. 5. 1. 00:10


이번에 풀어볼 녀석은 이녀석이다. 이름은 shellshock



bash에 대한 shocking 뉴스가 있다고 한다. 검색해보면 쉘쇼크(ShellShock)라는 취약점에 대해서 알 수 있다.


 쉘쇼크(Shell-Shock) (CVE-2014-6271)

2014년 9월 24일, GNU Bash 환경변수를 통한 코드 인젝션 취약점이 보고되었다. 이른바 ‘쉘쇼크(ShellShock)’로 불리는 해당 취약점환경변수를 이용하여 인젝션을 시도할 수 있어 공격자는 악의적인 명령이 포함된, 특별하게 조작된 환경변수를 사용하여 해당 취약점을 이용해 악의적인 행위를 수행할 수 있다.


저 쉘쇼크에 대해 이해하기 위해선 먼저 Shell에 대해 잘알아야한다. 여기 블로그에서 잘 설명되어 있어서 한번 가서 보고오는것도 좋다.

[unix/linux] shell(쉘)을 이해하자


일단 bash 취약점에 대해 간단히 설명가능한 명령어가 있는데 아래와 같다.


$ ​env x='() { :;}; echo vulnerable' bash -c "echo test"


간단히 설명하면 bash에는 환경변수라는 것이 있는데, bash에서는 이 환경변수에 값이 아닌 함수를 등록하고 

bash -c [변수명] 과 같은 방법으로 변수에 등록된 함수를 실행시킬수 있다.


한줄에 써져있어 잘 모를수있어 풀어쓰면 밑과 같다.


1    '( )

    :;

   }

4    echo vulnerable'

   bash -c "echo test"


우리가 흔히쓰는 함수의 선언과 다를게 없다. 

그럼 여기서 무엇이 문제점(취약점)이냐? 하면 다시 위의 명령을 보자

먼저 정상적인 동작이라면 함수정의가 끝나면서인 (){ }; 여기까지이다. 

그러므로 그 뒤에 echo 명령이 있는 부분은 원래라면 무시되거나 에러가 나면서 실행이 안되어야한다.


그러나 실제로는 bash가 함수를 실행하기 위해 파싱하는 과정에서 중괄호의 끝인 }와 ' 사이에 있는 명령(echo)을 실행시켜 버려

그 뒤에 부분이 전부 실행된다는 것이다.



여기에 있는 bash는 취약점있는 shellshock공격이 가능한 bash쉘이라는것이 확인되었다.

그러면 이제 shellshock.c의 내용을 통해 shellshock파일이 어떤 동작을 하는 지 보자.



setresuid와 setresgid 둘다주고 setuid가 걸려있으므로 root권한으로 실행될것이란것을 알 수 있다.

사용하는 bash는 취약점이 있는 bash이다. 프로그램은 system함수로 /home/shellshock/bash -c 'echo shock_me'를 실행하는데

저 bash가 실행될때 실행되는 함수뒤에 echo함수의 정의를 새로해두면 system함수에 의해 실행되는 subshell은 echo를 실행하면 cat flag를 실행하게 된다.


env x='() { :; }; echo(){ cat flag; }' /home/shellshock/shellshock



이렇게 플래그를 획득할 수 있다.


참고한 블로그 : 

http://operatingsystems.tistory.com/entry/Shellshock-CVE20146271

http://blogger.pe.kr/300





+다른 사람 writeup을 보고 알았는데

그냥 env x='() { :;}; /bin/cat flag' ./shellshock 로 해도 된다. 생각해보니 그렇다 ㅇㅇ;

그런데 이상하게 segmentation fault가 뜬다



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

[pwnable.kr] blackjack - 1 pt  (0) 2018.05.01
[pwnable.kr] cmd1 - 1 pt  (0) 2018.05.01
[pwnable.kr] mistake - 1 pt  (0) 2018.04.27
[pwnable.kr] random - 1 pt [Toddler's Bottle]  (0) 2018.04.25
[pwnable.kr] fd - 1 pt [Toddler's Bottle]  (0) 2018.04.24

+ Recent posts