System 1
문제 제목 : 취약한 메아리 프로그램
문제 설명 : 개발자는 메아리 프로그램을 제작 하였다.
허나 어설픈 보안 설정으로 해당 프로그램의 취약점이 존재한다.
취약점을 찾아서 SHELL을 획득 하여라.
접근 IP : 221.143.48.107
접근 PORT : 22
접근 ID : system100
접근 PW : !kisa_system_gogosing~!!!
해당 프로그램을 보면 root100 유저로 setuid가 걸려있다.
프로그램을 실행시키면, INPUT이 출력 되고 입력한 값을 그대로 출력해 준다.
gdb 로 프로그램을 분석해 보면, euid를 가져와서 그 값으로 setreuid를 하고 system 함수를 실행시키는 것을 볼 수 있다.
$rsi 레지스터에는 geteuid로 가져온 값이 들어있고, $rdi 레지스터에는 echo라는 명령어와 내가 입력한 hello 라는 값이 들어있다.
setuid가 걸려있고, system 함수가 존재하므로, echo가 /bin/bash를 실행시키면 root100 uid를 가진 쉘을 획득 할 수 있다.
1) ' ; '를 통해 동시 명령 실행을 한다
간단하게 echo 명령어와 sh 명령어를 동시 실행하기 위해 ';'를 넣는다
하지만 Access Denied!!!라는 메시지가 출력하고 실패한다.
디버깅을 해 보면 strchr 함수를 통해 ';' 문자를 걸러내는 것으로 보인다.
$esi 에는 0x3b가 들어있는데 ascii로 ;이다. (';', ' ' ', ' ` ' 를 막는다)
$rdi 에는 내가 입력한 hello가 보인다.
실패.
2) 환경변수를 조작 하여, echo가 /bin/bash 혹은 ls를 실행하게 한다.
ln -s 를 통해 심볼릭 링크를 걸고 export 명령어를 통해 현재 디렉터리를 제일 먼저 검색하게 하였으나, 실패
다른 환경에선 환경변수가 제대로 적용 되었으나 64-bit 환경이 문제인지 실패. (이유 모름)
3) pipe를 통한 명령 실행
pipe를 통해 root100의 홈디렉터리를 살피고 key가 있는 것을 보고, cat 명령어로 key 획득
'Security' 카테고리의 다른 글
[ Pwnable ] SIS/System 3 (0) | 2013.04.01 |
---|---|
[ Pwnable ] SIS / System 2 (0) | 2013.04.01 |
[Reversing] rootkit 1 (0) | 2013.04.01 |
[Pwnable] 2013 CodeGate / Vuln 300 (6) | 2013.03.15 |
[Pwnable] BOF 원정대 (0) | 2012.11.06 |