Nebula Level03 솔루션


First written by caliber50 on 2016. 10. 17. 23:28


[해설] flag03의 디렉터리(/home/flag03)를 확인하고 그 곳의 파일들을 주의 깊게 살펴라. 거기에 crontab이 몇 분에 한 번씩 호출된다. 이 레벨을 해결하기 위해 패스워드 level03으로 level03 계정에 로그인하라.



먼저 flag03 디렉터리로 이동해서 무슨 파일들이 있는지 확인한다.




디렉터리와 쉘 스크립트 파일이 있다. 뭔가 의심스러운 쉘 스크립트 파일도 있다. 열어보자.


확인해보니, writable.sh는 bash 쉘로 writable.d 디렉터리에 있는 모든 쉘 스크립트 파일을 실행하고 5초 후에 제거한다. 이 스크립트가 반복적으로 실행될 것 같다.


crontab이 SetUID 권한을 설정한 실행 파일을 생성하도록 유도해보자. 이 파일이 배쉬 쉘을 실행할 것이다.


SetUID 권한은 쉘 스크립트에서 동작하지 않으므로, 우리는 바이너리 실행 파일이 필요하다.





Ash(Attack shell)는 crontab이 소스 코드(Asw.c)를 컴파일 후 SetUID 권한을 설정하도록 유도한다.


그리고 컴파일 될 Asw(Attack software)를 아래와 같이 작성한다.





realUID, effective UID, saved set-user-ID를 flag03의 UID로 설정한다. 이 함수는 특수 권한 SetUID가 설정된 경우만 동작한다.


effective UID가 그냥 궁금해서 whoami 명령어를 중간에 넣었다.


최종적으로 이 프로그램은 /bin/bash를 실행하여 권한 변경을 시도한다.





만든 쉘 스크립트를 writable.d 디렉터리에 넣는다.


이후 몇 분 정도 기다리면, Ash 파일이 없어진 것을 확인할 수 있다. 





그리고 Asw 파일이 생성된다. 소유자는 flag03이다. SetUID 권한이 설정되어 있다. 





Asw 파일이 실행되면 flag03의 권한의 쉘이 실행되는 것을 알 수 있다. 


getflag 명령으로 level03을 클리어.

'정보보안_테크닉 > 워게임_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.15
Nebula Level02 솔루션  (0) 2016.09.24
Nebula Level02 힌트  (0) 2016.09.23
Nebula Level01 솔루션  (0) 2016.08.18
Nebula Level00 솔루션  (0) 2016.08.11
Nebula 소개  (0) 2016.08.11
"언제나 신뢰할 수 있는 자료로 찾아뵙겠습니다"
"도움이 되셨다면 '좋아요' 부탁드리겠습니다."