|
About[해설] : 아래 프로그램은 임의 프로그램을 실행시키는 취약점이 존재한다.
ID는 level01, PW는 level01를 입력하여 로그인하면, 아래의 프로그램을 "/home/flag01" 경로에서 확인할 수 있다.
로그인 후 "home/flag01" 경로로 가보면, flag01 파일을 확인할 수 있다. setuid가 설정되어 있고, 실행하면 "and now what?" 이라는 문장을 출력한다.
문제에서 제시한 소스코드로 아래와 같은 취약점을 예상할 수 있다.
[1] setresuid() 함수 사용 : 프로세스의 uid(Real uid, Effective uid, Saved uid)를 변경하는 함수이다. euid(=flag01) 값으로 Real uid, Effective uid, Saved uid 값을 변경한다. 이로써 이 프로세스가 실행될 동안 flag01의 권한을 갖는다.
[2] /usr/bin/env 명령 사용 : echo 프로그램 사용 시 환경 변수(=$PATH)의 영향을 받는다.
그러므로, 변조된 echo 프로그램에서 쉘 프로그램을 실행하면, flag01 권한의 쉘을 얻을 수 있다.
[1] bash 쉘 실행 시 즉시 반영되도록 "/home/level01/.bashrc" 파일을 수정한다. 기존의 경로보다 먼저 참조되도록 경로의 좌측 첫 번째에 export PATH="/home/level01/:$PATH"를 기록한다.
[2] bash 쉘을 실행
[3] 이제 "/home/level01"경로가 다른 경로보다 먼저 참조되는 것을 알 수 있다.
[1] "/home/level01"경로로 이동한다.
[2] 쉘 스크립트를 작성한다. "/bin/bash"가 실행되는 기능이 있다. 파일 명은 echo로 지정한다.
[3] 모든 사용자에게 echo 파일의 실행 권한을 부여한다.
[4] 쉘 스크립트 파일 echo가 생성 되었는지 확인한다.
[1] /home/flag01을 실행한다.
[2] 실행 결과, flag01의 권한의 쉘을 얻는다. 프롬프트가 변경되었다.
[3] getflag 명령을 실행하여 level01을 클리어
'정보보안_테크닉 > 워게임_Nebula' 카테고리의 다른 글
Nebula Level07 솔루션 (0) | 2016.12.04 |
---|---|
Nebula Level06 솔루션 (0) | 2016.11.23 |
Nebula Level05 솔루션 (0) | 2016.11.19 |
Nebula Level04 솔루션 (0) | 2016.11.18 |
Nebula Level03 솔루션 (0) | 2016.10.17 |
Nebula Level03 힌트 (0) | 2016.10.15 |
Nebula Level02 솔루션 (0) | 2016.09.24 |
Nebula Level02 힌트 (0) | 2016.09.23 |
Nebula Level00 솔루션 (0) | 2016.08.11 |
Nebula 소개 (0) | 2016.08.11 |
"도움이 되셨다면 '좋아요' 부탁드리겠습니다."
|