오늘의 문제의 제목은 shellshock이다. ssh 주소 하나만 주어졌다!
ssh 주소를 우분투에 입력하고 문제에 접속해준다.
ls -l 명령을 사용해 현재 위치에 있는 파일들의 목록을 상세히 출력했다. bash, flag, shellshock, shellshock.c 파일 총 4개가 있다.
bash와 shellshock 파일을 실행해주니, bash는 아무것도 안나오고, shellshock는 "shock_me" 메세지만 출력이 된다.
cat명령을 통해 shellshock.c 파일을 확인해주었다. bash 쉘에 대한 내용이 있고, 아마 bash 쉘에 취약점이 있는 것 같다.
bash 쉘쇼크(Shell Shock)는 유닉스류 운영체제에서 터미널로 사용하는 Bash Shell에 존재하는 보안 취약점이다. Bash Shell은 광범위하게 사용되고 있고, 긴 기간동안 존재해왔기 때문에 하트블리드보다 더 심각한 보안버그이다.
쉘 쇼크에 취약한 버전들은 이를 통해 root 계정을 탈취하는 등 모슨 코드든 실행할 수 있게 된다. 대부분의 쉘 쇼크는 보통 환경변수를 이용하여 공격한다.
env x='() { :;}; echo vulnerable' bash -c "echo test"
bash취약점은 프롬프트 상에서 위의 명령을 실행함으로써 확인가능하다. 이를 응용해 확인해보자!
취약점이 있는지 없는지 확인해주었다. env x=(함수명){수행코드}; 라고 환경변수를 등록하는 부분까지는 정상적인 동작이다. 하지만 그 이후에 삽입되어 있는 echo liz0904' ./bash 명령은 무시되거나 오류를 발생해야 하지만, 수행이 되어 화면상에 출력되는 것을 볼 수 있다. 입력값 유효성 검증이 정상적으로 수행되지 않은 버그이며, 이를 통해 문제를 풀 수 있다.
이를 이용해 /bin/cat flag 코드를 실행해주었더니, flag가 쉽게 나왔다.
flag를 입력해주면 성공!
flag: only if I knew CVE-2014-6271 ten years ago..!!
댓글