Pwnable.kr shllshick 문제풀이 !
현재 디렉토리 안에는 flag, shellshock 실행파일, shellshock.c 소스코드 그리고 bash가 있다.
shellshock 취약점을 활용하는 것 같아 해당 취약점에 대해 찾아보았다.
* ShellShock(CVE-2014-6271)
- GNU bash shell에서 환경변수를 통해 공격자가 원하는 명령어를 실행하게 하는 취약점
- 명령어 만으로 시스템을 장악할 수 있어 CVSS 등급 10점을 받음
- 특정 bash 버전의 환경변수와 환경변수 함수 선언에서 나타날 수 있는 버그를 통해 명령어 실행
- 함수 선언 이후에 공격자가 임의적으로 삽입한 시스템 명령어까지 실행
- 형식 : VER= (){ return; }; /bin/id
- bash를 최신 버전으로 업데이트 하는 것 만으로 공격을 막을 수 있음
shellshock.c 파일을 읽어보니 이 매우 단순했다.
bash를 실행시킨 후 system 함수로 명령어를 실행한다.
* getegid
- 현재 실행하고 있는 프로세스의 effective group id를 얻는 함수
export 함수로 환경변수를 등록하는 과정에서 shellshock 취약점을 활용하여
뒤에 내가 flag 값을 얻기 위한 명령어를 이러 붙이면 이를 한 번에 실행하게 된다.
마치 하나의 함수처럼 작동한다고 생각할 수 있을 것 같다.
test 환경변수를 등록하고 다시 shllshock를 실행하니
환경변수 값이 정상적으로 등록되어 flag 값을 얻을 수 있었다.
only if I knew CVE-2014-6271 ten years ago..!!