[TryHackMe] Advent of Cyber 2, Day 6 - 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 6] Web Exploitation: Be careful with what you wish on a Christmas night
## ストーリー
![Day 06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/b7beb84f-72b9-ebb4-670e-acc9d0a0eb46.png)

>今年、サンタさんは完全にデジタル化を達成するため「`Make a wish`」システムを開発しました。これは非常にシンプルなWebアプリです。人々が匿名で自分の願いを他の人と共有できるようにするものです。残念ながらハッカーの攻撃を受けた直後、セキュリティチームは誰かが「`Make a wish`」システムに侵入したことを発見しました。願い事のほとんどは消えてしまい、ウェブサイトは悪意のあるウェブサイトにリダイレクトされるようになってしまっています。攻撃者は願い事を送信するふりをして、サーバーへ悪意のあるリクエストを注入した可能性があります！セキュリティチームは`MACHINE_IP:5000`にバックアップサーバーを用意しました。あなたの目標は、攻撃者がアプリケーションを悪用する方法を見つけることです。

## Day 6 - #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 (http://MACHINE_IP:5000) into the browser search bar (the webserver is running on port 5000, so make sure this is included in your web requests).

まずは、`Make a wish`にアクセスします。`[Deploy]`ボタンをクリックします。
ブラウザにて割り振られた`MACHINE_IP:5000`にアクセスします。`Make a wish`の画面が表示されます。
![Make a Wish.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/7a4a4b50-3353-3d13-b7e2-8c89e2a5b891.png)

## Day 6 - #2.
>What vulnerability type was used to exploit the application?

攻撃者のスクリプトを第三者の Web コンテンツ中に紛れ込ませる手法は、次の3種類に分類できます。

|No.|型名|概要|
|:---|:---|:---|
|1|Persistent 型 (Stored 型, 蓄積型)|Web サイトが蓄積しているコンテンツ中に紛れ込ませる|
|2|Reflected 型 (反射型)|Web サイトが動的に作り出すコンテンツ中に紛れ込ませる|
|3|DOM 型|Web ブラウザ内に蓄積しているコンテンツ中に紛れ込ませる|

解答は「**Web サイトが蓄積しているコンテンツに紛れ混ませている**」がヒントです。

## Day 6 - #3.
>What query string can be abused to craft a reflected XSS?

ここは素直に`[HINT]`に頼りました。
![HINT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/dd02311a-971e-d449-3343-f1f6cddfa928.png)

さっそく、`Make a wish`アプリの`[Search Query]`に文字列`hack`を入力してみます。
![search bar.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/19c4de94-7cfc-3057-70ba-07429fbb28c7.png)

解答は「**アルファベット17番目の文字**」がヒントです。

## Day 6 - #4.
>Launch the OWASP ZAP Application

`OWASP ZAP`を起動すると、GUIが表示されます。
![OWASP_ZAP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/5a76ce07-913f-0a2a-2052-1e1e1a5039e0.png)

## Day 6 - #5.
>Run a ZAP (zaproxy) automated scan on the target. How many XSS alerts are in the scan?

`OWASP ZAP`の右側ペインにある`[Automated Scan]`ボタンをクリックします。
`[URL to attack:]`フィールドに`MACHINE_IP:5000`を入力し、`[Attack]`ボタンをクリックします。
![ZAP_Automated_Scan.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/efbde99b-908e-3b41-da92-3d7bc6311d84.png)

検索が終了すると`[Alerts]`タブに検出された脆弱性が表示されています。


## Day 6 - #6.
>Explore the XSS alerts that ZAP has identified, are you able to make an alert appear on the "Make a wish" website?

`OWASP ZAP`の`[Alerts]`タブの内容を確認してみます。
![Description.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/2723aeec-3814-c5c5-cbd2-e13a10b2f6c0.png)

`[Attack:]`項目に記載されている内容（ペイロード）に注目します。

```
</p><script>alert(1);</script><p>
```

`Make a wish`アプリのクエリパラメーターに続けて、`[Attack:]`項目に記載されているペイロードを入力します。次のとおり、アラートを表示させることに成功しました。

![alert.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/294810/c609cc2d-904a-ba3d-c7f7-525abe879547.png)

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

# 参考になるTryHackMeのルーム
- [Introduction to OWASP ZAP](https://tryhackme.com/room/learnowaspzap)

# 参考情報
- [Cross Site Scriptingに関するガイド](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSS%20Injection)
- [XSSのペイロードに関するチートシート](https://github.com/payloadbox/xss-payload-list)

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