본문 바로가기
포너블(pwnable)

[Toddler's Bottle] shellshock 문제풀이

by LIZ0904 2021. 4. 29.
반응형

문제

오늘의 문제의 제목은 shellshock이다. ssh 주소 하나만 주어졌다!

 

 

문제 접속

ssh 주소를 우분투에 입력하고 문제에 접속해준다.

 

 

ls -l

ls -l 명령을 사용해 현재 위치에 있는 파일들의 목록을 상세히 출력했다. bash, flag, shellshock, shellshock.c 파일 총 4개가 있다. 

 

 

bash와 shellschock 실행

bash와 shellshock 파일을 실행해주니, bash는 아무것도 안나오고, shellshock는 "shock_me" 메세지만 출력이 된다.

 

 

shellshock.c

cat명령을 통해 shellshock.c 파일을 확인해주었다. bash 쉘에 대한 내용이 있고, 아마 bash 쉘에 취약점이 있는 것 같다.

bash 쉘쇼크(Shell Shock)는 유닉스류 운영체제에서 터미널로 사용하는 Bash Shell에 존재하는 보안 취약점이다. Bash Shell은 광범위하게 사용되고 있고, 긴 기간동안 존재해왔기 때문에 하트블리드보다 더 심각한 보안버그이다.

쉘 쇼크에 취약한 버전들은 이를 통해 root 계정을 탈취하는 등 모슨 코드든 실행할 수 있게 된다. 대부분의 쉘 쇼크는 보통 환경변수를 이용하여 공격한다. 

 

 

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

bash취약점은 프롬프트 상에서 위의 명령을 실행함으로써 확인가능하다. 이를 응용해 확인해보자!

 

 

bash의 shellschock 취약점

취약점이 있는지 없는지 확인해주었다. env x=(함수명){수행코드}; 라고 환경변수를 등록하는 부분까지는 정상적인 동작이다. 하지만 그 이후에 삽입되어 있는 echo liz0904' ./bash 명령은 무시되거나 오류를 발생해야 하지만, 수행이 되어 화면상에 출력되는 것을 볼 수 있다. 입력값 유효성 검증이 정상적으로 수행되지 않은 버그이며, 이를 통해 문제를 풀 수 있다. 

 

flag 출력

이를 이용해 /bin/cat flag 코드를 실행해주었더니, flag가 쉽게 나왔다.

 

성공!

flag를 입력해주면 성공!

 

flag: only if I knew CVE-2014-6271 ten years ago..!!

반응형

댓글