Nebula Level01 솔루션


First written by caliber50 on 2016. 8. 18. 23:43


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
"언제나 신뢰할 수 있는 자료로 찾아뵙겠습니다"
"도움이 되셨다면 '좋아요' 부탁드리겠습니다."