Nebula level01
About
There is a vulnerability in the below program that allows arbitrary programs to be executed, can you find it?
To do this level, log in as the level01 account with the password level01 . Files for this level can be found in /home/flag01.
Source code
1#include <stdlib.h>
2#include <unistd.h> 3#include <string.h> 4#include <sys/types.h> 5#include <stdio.h> 6 7int main(int argc, char **argv, char **envp) 8{ 9 gid_t gid; 10 uid_t uid; 11 gid = getegid(); 12 uid = geteuid(); 13 14 setresgid(gid, gid, gid); 15 setresuid(uid, uid, uid); 16 17 system("/usr/bin/env echo and now what?"); 18}
실행해야하는 파일은 /home/flag01 디렉토리 아래 있다.
flag01을 실행하면 "and now what?"을 확인 가능하다.
이번문제는 $PATH weaknesses 를 이용하는 문제로
현재 실행되고 있는 shell(/bin/sh)이 명령어를 검색할때 PATH에 설정된 디렉토리에서 먼저 검색해온다.
쉘어 $PATH에 /tmp 경로를 추가해준다.
/tmp의 경우 sticky bit가 설정되어 특별한 권한이 생긴다.
[sticky bit]
사용자가 아무나 파일을 넣어 놓을 수 있는 디렉토리를 가지고 있다면 어느 누구나 다른 사람의 파일을 지울 수 있다. 이때, sticky bit를 설정하게 되면, 아무나 해당 디렉토리에서 파일을 삭제할 수 없게 되며, 파일을 삭제할 수 있는 사용자는 다음과 같다.
> 파일의 소유자
> 디렉토리 소유자
> 슈퍼 유저
/bin/bash를 심볼릭 링크를 걸어서 /tmp/echo를 만들고 실행한다.
하지만, system안에 작성된 "and now what?"을 파라미터로 인식하여 실행되지 않는다.
간단한 bash script를 작성하여 파라미터로 인식되는 부분을 무시한다.
'30. > 36. Exploit-Exercises' 카테고리의 다른 글
[exploit-exercises] Nebula level 05 (0) | 2014.01.26 |
---|---|
[exploit-exercises] Nebula level 04 [미완성] (0) | 2014.01.26 |
[exploit-exercises] Nebula level 03 [미완성] (0) | 2014.01.26 |
[exploit-exercises] Nebula level 02 [미완성] (0) | 2014.01.26 |
[exploit-exercises] Nebula level 00 (0) | 2014.01.26 |