푸르미르

pwnable.kr 10. shellshock 본문

SECURITY/pwnable

pwnable.kr 10. shellshock

((•_•)) 2021. 5. 5. 01:37

 

접속 후 cat shellcode.c

 

 

setresuid는 set real effective saved user id를 뜻하고 setresgid는 set real effective saved group id를

의미한다. 

system("/home/shellshock/bash -c 'echo shock_me'"); 이 코드는 /home/shellshock/bash 를 실행하고 

'echo shock_me' 하라는 뜻

 

shellshock라는 공격 기법은 이번에 처음 알았는데, 알아보니까

환경변수에 코드를 삽입하여 예상치 못한 행위를 하는 공격 기법이다.

 

그래서 환경변수를 등록하여보자.

 

 

x라는 환경변수를 등록 후 그 환경변수의 값을 출력해보았다.

환경변수의 값을 출력할 때 printenv를 사용하지 않고 x만 입력하면 실행되지 않는다. 왜냐하면 x는 변수이지 

함수가 아니기 때문이다.

 

그래서 나는 환경변수의 함수를 선언해보겠다.

 

funex라는 이름으로 ohio가 출력되도록하는 함수를 선언해주었다. 그리고 " exprot -f 함수이름 " 형식으로 

함수를 환경변수에 등록해주었다. 그리고 함수이름만을 입력했을 때 내가 원했던 ohio가 출력되는 것을 

확인할 수 있었다.

 

자 그러면 shellshock 공격을 해보자.

 

함수 선언 문법과 비슷하게 funex2를 선언해주었다. funex2를 printenv로 값을 출력하게 했을 때,

''(작은 따옴표들) 사이의 문자열들의 내용이 그대로 나오는 것을 확인할 수 있다.

 

 

bash를 다시 실행하고 funex2를 입력하니 함수 내용의 명령어 echo가 실행됨을 알 수 있다. 

신기하다...!

 

구글링을 해보니 취약점이 있는 bash를 실행하게 되면 등록한 환경변수를 읽어오는데에 함수 문법으로 되어있으면

얘 스스로 함수라고 판단하고 변수를 함수로 등록해버린다는 것이다. 

 

그러면 이 취약점을 이용하여 flag를 보면 될 거 같다. 신난다.

 

 

답은 only if I knew CVE-2014-6271 ten years ago..!!

'SECURITY > pwnable' 카테고리의 다른 글

pwnable.kr 12. blackjack  (0) 2021.05.11
pwnable.kr 11. coin1  (0) 2021.05.05
pwnable.kr 9. mistake  (0) 2021.04.28
pwnable.kr 8. leg  (0) 2021.04.28
pwnable.kr 7. input  (0) 2021.04.06