pwnable.kr (shellshock)

c0wb3ll ㅣ 2020. 12. 7. 10:59

pwnable.kr (shellshock)

#include <stdio.h>
int main(){
    setresuid(getegid(), getegid(), getegid());
    setresgid(getegid(), getegid(), getegid());
    system("/home/shellshock/bash -c 'echo shock_me'");
    return 0;
}

음..? 이번엔 뭘 이용해야할지 전혀 모르겠다.

Shellshock (CVE-2014-6271)

Linux/Unix System에서 사용되는 Bash shell에 존재하는 취약점이다.

Bash 환경변수를 세팅할 때 변수와 함수로 세팅할 수 있으며, 변수로 선언할 경우 아래와 같이 선언할 경우 함수로 실행되는 것을 볼 수 있다.

export c0wb3ll='() { echo c0wb3ll; }'

그리고 여기서 중요한 내용은 이 함수 뒤에 붙어 나오는 명령어들이 실행이 된다는 점이다.

export c0wb3ll='() { echo c0wb3ll; }; whoami'

위와 같은 환경변수를 선언하고 bash를 실행할 경우 subshell이 실행되면서 whoami라는 명령어도 같이 실행시켜버리게된다.

flag

결론은 shellshock 소스코드에 보면 권한 세팅을 다시하고 bash를 이용하여 echo shock_me를 실행한다.

따라서 취약점을 이용하여 flag를 읽어주는 환경변수를 세팅해준 후 shellshock를 실행시키면 bash를 실행시키며 subshell이 실행되며 상승된 권한으로 flag를 읽어올 수 있다.


Reference

operatingsystems.tistory.com/entry/Shellshock-CVE20146271