PWNABER.KR - shellshock
시험기간 때문에 오랫동안 제 공부를 하지못했는데, 감을 되찾기 위해 pwnable.kr문제를 다시 시작했습니다. 점수낮은거 부터 천천히 다시 풀겠습니다.
이 shellshock문제는 shellshock, 쉘의 취약점에 대한 문제였는데요 저도 이제 버퍼오버플로우에 대해 이해했고 여러 취약점들을 몰라서 많은 검색을 했는데 잘 나와있지 않아서 포기하려던 차, http://operatingsystems.tistory.com/80 이 블로그를 발견하고 대략적인 개념과 공격방법을 알 수가있어서 문제를 풀 수가 있었습니다.(shellshock 에 대해 개념이 잡혀있지 않으신 분들은 이 블로그를 참조하는 것이 가장 좋을 것이라 생각합니다.)
자!! 이제 나머지는 문제를 풀면서 설명하겠습니다.
shellshock:
bash 명령어 해석기는 함수를 환경변수에 저장하는 방식을 사용한다. bash에서 한쌍의 중괄호로 묶인 함수안에 코드가 들어가는데, 공격자가 일부 bash code를 이 중괄호 밖에 두면, 시스템이 그 코드를 실행하게 된다. 따라서 시스템 전체가 코드 삽입이라는 공격에 무방비 상태가 되는 것이다.
저 위의 블로그를 참조하면, 밑에서 사용하는 공격 코드를 이해할 수 있습니다.
shellshock.c 파일의 내용입니다. 흠.....딱 봤을때는 이게 뭐지......라고 생각이 들었는데요
대략적으로는 id를 조작하여 bash -c로 shock_me 를 출력한다. 지금은 이쯤만 알고 나머지는 밑에서 설명하겠습니다.
env x='() { :;}; echo hello' bash -c "bye"
이 코드를 실행 했을 때 시스템이 shellshock 취약점에 노출되어있다면, 중괄호 밖에있는 hello와 함께 bash -c 에서 실행한 echo bye가 실행 될 것입니다.
bye만 출력되는 것으로 봤을 때 시스템에는 취약점이 패치가 되었나봅니다.
그렇다면 아마도 저 ./shellshock 파일이 shellshock의 취약점이 나타나도록 하는 프로그램이 아닐까 하는 생각이 들었습니다. 그래서 실행해본 결과 shellshock 파일안에 있는 shock_me또한 출력되는 것을 찾을 수 있었고 파일의 용도를 확신하게 되었습니다.
이렇게 해서 답을 찾을 수가 있었는데요 cat이 아닌 cat의 위치 /bin/cat을 입력해야 cat이 실행이 되더군요.
여기서 아마 왜 bash -c 로 하는 건지 왜 bash에 c옵션을 준거지?? 라고 생각하시는 분이 있을 수 있습니다. 저도 그랬구요.
옵션의 설명은 이런데 감이 안오실 겁니다. 그래서 보여드리도록 하겠습니다.
shell은 echo $SHELL로 출력해 본 결과 bash쉘을 사용하지만 아까와 같이 공격코드를 쓸 때 bash를 쓰면 에러가 발생합니다. 위는 제가 해본 그 예입니다.!!!
모르는 것이있거나 틀린부분이 있으면 언제든지 글이나 메일 부탁드립니다.
0 개의 댓글