개념
리눅스 계열 OS에서 주로 사용되는 GNU bash에 존재하는 보안 취약점으로 초기 보고 이후 다양한 쉘 쇼크가 발견됐는데 보통 환경변수를 통해 코드 인젝션 기법으로 특정 코드를 삽입하여 실행한다.
환경변수 env x=() 함수 뒤 자신이 원하는 명령을 삽입하여 시스템정보나 기타 권한을 탈취한다.
환경변수 x = (함수명){수행코드}; 공격명령
환경변수를 등록하는 (함수명){수행코드}; 까지는 정상적으로 동작하고 그 이후 삽입되는 공격명령은 무시되거나 오류가 발생해야 하지만 실제로는 수행되는 것이다.
취약점 예시
CVE-2014-6271
$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
bash에서 해당 구문을 실행했을 때
vulnerable
this is a test
가 뜬다면 취약한 것이다.
-> bash에는 환경변수가 있는데 이 환경변수에 값이 아닌 함수를 등록하고 bash -c [변수명]과 같은 방법으로 변수에 등록된 함수를 실행시키는 것이다.
즉, 정상적인 동작일 경우 함수정의가 끝나면서인 (){}; 여기까지다. 즉, 그 뒤에 echo 명령이 있는 부분은 원래 무시되거나 에러가 나면서 실행이 안되어야한다. 그러나 실제로는 bash가 함수를 실행하기 위해 파싱하는 과정에서 중괄호의 끝인 }와 '사이에 있는 명령을 실행시켜버려 공격명령이 실행되는 것이다.
shellshock에 대해 공부하고자 하는 분들은 아래 블로그 글을 정독했으면 좋겠다.
(나도 다시 한 번 정독해야겠다)
https://operatingsystems.tistory.com/entry/Shellshock-CVE20146271
[Vul] Shellshock (CVE-2014-6271)
우선, 간략하게 CVE-2014-6271 일명 Bash shellshock 취약점에 대하여 설명하고자 한다. 이 취약점은 Akamai Technology의 Stephane Chazelas에 의해 발견되었다. CVE-2014-6271는 대부분의 Linux/Unix System에서..
operatingsystems.tistory.com
참고자료
https://namu.wiki/w/%EC%85%B8%EC%87%BC%ED%81%AC
https://namu.wiki/w/%EC%85%B8%EC%87%BC%ED%81%AC
https://blog.naver.com/security_reader/221886772776
https://m.blog.naver.com/renucs/220144713558
https://xerxes-break.tistory.com/278
https://operatingsystems.tistory.com/entry/Shellshock-CVE20146271
'Security > System' 카테고리의 다른 글
[pwnable.kr] Toddler's Bottle - shellshock 문제 (0) | 2020.06.01 |
---|---|
버퍼 오버플로우(Buffer OverFlow) (0) | 2020.03.13 |
[pwnable.kr] Toddler's Bottle - cmd2 문제 (0) | 2019.11.28 |
[pwnable.kr] Toddler's Bottle - cmd1 문제 (1) | 2019.11.28 |
[pwnable.kr] Toddler's Bottle - random 문제 (0) | 2019.10.02 |
[pwnable.kr] Toddler's Bottle - flag 문제 (0) | 2019.09.11 |
[pwnable.kr] Toddler's Bottle - bof 문제 (0) | 2019.09.10 |
[pwnable.kr] Toddler's Bottle - collision 문제 (0) | 2019.09.10 |