본문 바로가기
Hacking/Hacking Beginner Class (normaltic)

[해킹 비기너 클래스] 7주차 Practice (Post-exploit Task 2)

by st-og 2023. 9. 6.

Task 2

해당 머신의 정보 수집부터 exploit까지의 단계는 아래 링크에 설명되어 있다.

https://st-together.tistory.com/41

먼저 sudo -l 명령어를 사용해 sudo로 사용 가능한 명령어 리스트를 확인해 보자

 

 

sudo는 사용이 불가능해 보인다

 

이번엔 홈 디렉터리를 확인해 보자

 

 

중요한 정보는 없어 보인다.

 

그다음으로 찾아볼 것은 setuid가 지정된 프로그램이다

setuid는 실행 권한이 없는 유저도 해당 프로그램을 실행할 때는 프로그램 소유자의 권한으로 실행을 시켜주는 특징이 있다

그 말은 setuid가 설정되어 있는 프로그램을 분석하여 취약점을 찾으면 권한 상승이 가능해질 수 있다는 것이다.

 

find 명령어의 -perm 옵션을 사용해 찾아보자

find / -perm -4000 2> /dev/null
# 4000은 setuid를 뜻함

 

 

/usr/~ 로 되어있는 경로들은 모두 권한 거부가 되므로 /opt/get_access를 확인해 보자

 

해당 프로그램은 root의 권한으로 setuid가 지정되어 있는 실행파일이라는 것을 확인할 수 있다

 

실행 파일임을 알았으니 실행을 해보자

모든 서비스를 사용할 수 없다는 문구가 뜨며 서버의 정보만 확인이 가능하다

 

해당 프로그램이 어떻게 돌아가는지 확인하기 위해 cat 명령어를 통해 확인해 보자

알아보기 힘든 문자들과 섞여 있어 제대로 확인이 어렵다

 

이때 알아볼 수 있는 문자들만 보여주는 명령어가 strings이다.

해당 명령어를 사용하여 다시 확인해 보자

 

 

많은 글자들 중 우리가 중요하게 봐야 할 것은 이 부분이다

 

 

/root/system.info라는 파일에 cat 명령어를 실행하고 밑의 문구들을 출력하는 듯하다

 

여기서 만약 우리가 cat명령어를 입력했을 때 파일을 확인하는 게 아니라 /bin/bash를 불러오는 명령어로 만들 수 있다면

setuid가 root로 지정되어 있기에 우리는 root 쉘을 가져올 수 있을 것이다.

 

먼저 /bin/bash를 지정하기 위한 파일을 하나 만들어 주자

 

그다음 해당 파일을 실행 파일로 인식할 수 있도록 path 설정을 해줘야 한다

(우리가 cat명령을 실행할 때는 실제 /usr/bin/cat을 실행하는 것이지만 path 설정으로 인해 앞의 경로는 생략되었다)

 

path 설정은 export 명령을 통해 할 수 있다.

export PATH=/tmp:$PATH
# :$PATH 를 통해 /tmp 이 path의 첫번째로 오고 나머지 경로들이 뒤에 붙게 된다

 

PATH에 /tmp가 등록된 것을 확인할 수 있다.

이제 cat 명령어를 실행하면 /usr/bin의 cat이 실행되는 것이 아닌 /tmp/cat이 먼저 실행이 될 것이다

 

마지막으로 /tmp/cat을 실행하기 위해 실행 파일로 만들어 주자

chmod +x /tmp/cat

 

그 후 다시 /opt/get_access를 실행해 보면

 

 

root 쉘을 획득한 것을 확인할 수 있다.