[TryHackMe] Simple CTF

2023. 10. 31. 17:56War Game/TryHackMe

 

Simple CTF : Target

 

 

Target Flag : User.txt, Root.txt

 

Simple CTF : Exploit

 

 

nmap -sCV 10.10.211.10 > scan_res
cat scan_res

 

공격대상 시스템의 포트를 스캔한 결과 21번, 80번, 2222번 포트가 열려있다. 해당 시스템은 ssh 서비스가 웰 노운 포트로 알려져 있는 22번 포트가 아닌 2222번 포트에서 서비스를 하고 있다는 정보를 알 수 있다. 80번 포트가 열려있으므로 IP 주소를 입력해 보자.

 

 

IP 주소를 입력했으나 아직 개발 중이어서 기본 웹 페이지로 안내해 주었다. 웹 페이지에서 얻을 정보가 없으니 웹 디렉터리를 스캔해 본다.

 

 

gobuster dir -u http://10.10.211.10 -w /usr/share/dirb/wordlists/common.txt -t 60

 

웹 디렉터리를 스캔해 봤더니 /robots.txt 파일과 /simple 디렉터리를 찾았다. 우선 /robots.txt 파일을 확인해 보자.

 

 

robots.txt 파일은 검색엔진에 의해 노출이 되지 않도록 적어 놓는 리스트 파일이다. 그러나 공격자가 역이용하여 공격 정보로 이용할 수 있다는 것에 주의해야 한다.

 

해당 시스템에서는 '/'와 '/openemr-5_0_1_3' 디렉터리가 리스팅 되어있다. '/' 디렉터리는 루트 경로이므로 패스하고 '/openemr-5_0_1_3' 디렉터리를 URL에 입력하여 확인해 봤더니 'Not Found' 구문을 볼 수 있었다. 혹시나 해서 웹 디렉터리도 스캔해 봤더니 별다른 정보를 얻을 수 없었다. 

 

/robots.txt 파일에서 얻을 수 있는 정보는 없었기 때문에 /simple 디렉터리를 확인해 보자.

 

 

URL에 /simple을 입력했더니 새로운 웹 페이지가 응답하였다. 해당 웹 페이지는 CMS Made Simple 2.2.8 프로그램으로 서비스되는 것을 확인할 수 있었다.

 

 

searchsploit CMS Made Simple 2.2.8
cp /usr/share/exploitdb/exploits/php/webapps/46635.py ./exploit.py
ls
python3 exploit.py

 

searchsploit 명령어를 사용하여 해당 프로그램에 대한 취약점을 찾았다. 해당 취약점은 SQL Injection 공격 기법을 사용하며 CVE-2019-9053 취약점을 기반으로 이루어져 있는 것을 확인할 수 있었다. 공격파일에 대한 usage를 알아보기 위해 아무런 옵션을 주지 않고 실행시켰더니 '-u [공격대상 URL]'과 '--crack', '-w [사전 파일]'을 입력하면 공격대상의 유저와 비밀번호를 crack 하여 결과를 출력해 준다는 것을 알 수 있다.

 

 

python3 exploit.py -u http://10.10.211.10/simple/ --crack -w /usr/share/wordlists/rockyou.txt

 

명령어를 입력하고 기다리면 공격결과에 대한 정보가 출력된다. 공격대상 시스템의 'Username : mitch'이고 'Password : secret'인 것을 확인할 수 있다. 해당 정보를 가지고 2222번 포트에 열려있는 ssh 서비스에 접속을 한다.

 

 

ssh mitch@10.10.211.10 -p 2222
sudo -l
ls -al
cat user.txt

 

mitch 계정으로 공격대상 시스템에 접속을 하여 쉘을 획득했다. 사용자 계정으로 접속을 하면 우선 확인해야 할 것이 sudo 권한 리스트이다. mitch 사용자는 root 권한으로 비밀번호 없이 vim 명령어를 사용할 수 있는 것을 확인할 수 있다. 또한 홈 디렉터리에 user.txt를 발견하여 flag 하나를 발견할 수 있었다.

 

 

cat /etc/passwd

 

sudo -l 에서 확인한 명령어인 vim을 이용한 권한 상승 시나리오는 /etc/passwd or /etc/shadow 파일 안의 정보를 조작하여 다른 계정의 비밀번호를 마음대로 바꿔서 접속하거나 아니면 계정의 uid를 root 계정의 uid로 바꾸는 것으로 생각할 수 있다. 그래서 /etc/passwd 파일을 확인해 본 결과 'sunbath'란 다른 사용자 계정을 알 수 있었다.

 

 

sudo vim /etc/shadow
mkpasswd --method=SHA-512 --stdin

 

sunbath 사용자 계정으로 접속하기 위해 계정 비밀번호가 저장되어 있는 /etc/shadow 파일에서 sunbath 계정의 비밀번호를 '1234'로 변경해 주었다.

 

 

su sunbath
id
sudo -l
sudo su root
id

 

sunbath 계정으로 전환을 성공적으로 하였고 해당 계정의 'sudo -l'을 확인해 본 결과 모든 명령어가 가능한 것으로 확인이 되었다. 이를 이용하여 root 계정으로 성공적으로 전환하여 root 권한을 획득하였다.

 

 

cd ~
ls -al
cat root.txt

 

그리고 root 계정의 홈 디렉터리로 이동하여 root.txt 내용을 출력하여 flag를 획득할 수 있었다.

 

Answer the questions below

-How many services are running under port 1000? > 2
-What is running on the higher port? > ssh
-What's the CVE you're using against the application? > CVE-2019-9053
-To what kind of vulnerability is the application vulnerable? > SQLI 
-What's the password? > secret
-Where can you login with the details obtained? > ssh
-What's the user flag? > G00d j0b, keep up!
-Is there any other user in the home directory? What's its name? > sunbath
- What can you leverage to spawn a privileged shell? > vim
-What's the root flag? > W3ll d0n3. You made it!

 

'War Game > TryHackMe' 카테고리의 다른 글

[TryHackMe] Agent Sudo  (0) 2023.11.01
[TryHackMe] Ignite  (1) 2023.10.25