보안 공부하는 꼬깔이

System Hacking/Nebula +2

Nebule level01 풀이


#Nebula level01 계정

ID  : level01

PW : level01


Nabula level01 문제에 접속하면 나오는 메인화면이다. 

소스를 간단히 해석하면 해당 프로그램의 gid,uid를 가져와 system 함수를 실행시키는 소스이다.

system("/usr/bin/env echo and now what?");

소스 중 해당 부분은 system 함수를 이용해 env 환경 변수를 참조한뒤 echo 명령어로 "and now what?" 이라는 문구를 출력시킨다. 

실제로 /home/flag01 디렉터리에 존재하는 flag01 파일을 실행시켜보면 "and now what?" 이라는 문구가 출력된다.


해당 문제는 $PATH weaknesses 취약점을 이용하는 문제인 것 같다.

echo 명령어를 예로 $PATH weaknesses 취약점을 설명해보도록 하겠다.


사용자가 echo 명령을 사용하면 쉘은 echo 명령을 실행시키려 위 사진의 환경변수 $PATH 에 존재하는 경로를 왼쪽에서 부터 차례대로 확인한다. 그리고 echo 명령이 존재하는 경로를 찾으면 그 곳에 존재하는 echo 명령을 수행해 결과를 우리에게 출력시켜 준다.

이러한 특징을 이용해 우리는 PATH 환경변수의 가장 앞에 현재 계정인 level01 권한으로 파일생성이 가능한 디렉터리를 임의로 추가한뒤 해당 경로에 echo 라는 이름의 파일을 생성하고 파일에 getflag 또는 /bin/bash를 실행시키는 코드를 저장하게 되면 쉘은 맨 앞에 우리가 임의로 추가한 경로에 저장된 echo 명령을 수행할 것이고 그렇게 되면 flag01계정의 권한으로 getflag 명령 또는 /bin/bash가 실행되어 문제가 해결될 것이다.

먼저 현재 계정인 level01 권한으로 파일생성이 가능한 디렉터리를 찾아보자.

/tmp 디렉토리는 sticky 비트가 설정되어 있으며 소유자, 그륩, 그외 사용자 모두가 읽기, 쓰기 , 실행이 가능하다.

해당 디렉토리에 echo 파일을 생성하고 getflag 명령어를 수행하는 코드의 추가와 함께 실행권한을 주자

echo 파일에 getflag를 실행시키는 코드와 함께 실행권한이 추가됬다.


이제 /tmp 디렉토리 경로를 PATH 환경변수의 가장 앞에 넣어보자.

export 는 환경변수를 추가할때 사용하는 명령어다. 해당 명령어를 이용해 PATH 환경변수의 제일 앞에 /tmp 디렉터리를 추가했다. 

모든 준비를 끝마쳤으니 /home/flag01 디렉토리의 flag01 파일을 다시 실행시켜보자

성공적으로 문제를 공략했다 :D


#Nebula level01 Clear!








'System Hacking > Nebula' 카테고리의 다른 글

Nebula level00 풀이  (0) 2017.08.03

Nebula level00 풀이


[Nebula 링크]

https://exploit-exercises.com/nebula/


Nebula는 별도의 iso 파일을 제공하며 해당 iso 파일안에 문제파일 확인 및 flag흭득이 가능하다. 그리고 문제에 대한 지문은 위 링크의 우측 Levels 카테고리를 확인하면 된다. iso 파일 역시 위 링크의 Download 카테고리에 접속하면 다운로드가 가능하다.

#Level00 계정

ID : level00

PW : level00

Nebula level00 문제에 접속하면 출력되는 메인화면이다.

이 level 에서는 flag00 이라는 계정의 권한으로 Setuid가 걸린 파일을 최상위 디렉토리 " / " 로 부터 찾는것이 문제이다.


find 명령어와 여러 옵션을 사용하여 flag00 소유의 setuid가 걸려있는 파일을 찾았다.

-user 옵션은 찾으려는 파일의 소유주를 기준으로 찾을 수 있게끔 해주며 -perm 옵션은 퍼미션을 입력받아 해당 퍼미션에 대한 파일을 찾는다.


find 명령의 결과로 출력된 디렉토리로 이동하면 flag00 계정이 소유주이며 해당 계정의 권한으로 Setuid가 걸린 flag00 파일을 확인 할 수 있다.


해당파일을 실행하게 되면 축하의 메시지와 함께 "getflag" 명령을 실행하라는 주문을 받게 된다. 

주문대로 "getflag" 명령을 입력하게 되면 문제가 해결된다.


#Nebula level00 Clear!







'System Hacking > Nebula' 카테고리의 다른 글

Nebule level01 풀이  (0) 2017.08.04