【TryHackMe】Advent of Cyber3 (2021)を続けてみた Day1, 2, 3, 4, 5

# Welcome to Advent of Cyber 2021
クリスマスまでの25日間、毎日基本的な知識を学び、初心者向けの新しいセキュリティ演習を行うことで、サイバーセキュリティを始めることができます。

https://tryhackme.com/room/adventofcyber3

# day1
IDORとはInsecure Direct Object Referenceの略で、アクセス制御の脆弱性の一種です。アクセス制御の脆弱性とは、攻撃者が意図しない情報や動作にアクセスできてしまうことです。IDOR 脆弱性は、ウェブサーバがオブジェクト（ファイル、データ、文書）を取得するためにユーザが提供した入力を受け取り、その入力データに過度の信頼を置き、ウェブアプリケーションが、ユーザが実際に要求されたオブジェクトへのアクセス権を持つべきかどうかを検証しない場合に発生します。
### Answer↓
After finding Santa's account, what is their position in the company?
<font color="White">The Boss!</font>
After finding McStocker's account, what is their position in the company?
<font color="White">Build Manager</font>
After finding the account responsible for tampering, what is their position in the company?
<font color="White">Mischief Manager</font>
What is the received flag when McSkidy fixes the Inventory Management System?
<font color="White">THM{AOC_IDOR_2B34BHI3}</font>
# day2
HTTPはステートレスプロトコルです。Webサーバーにリクエストを送信すると、サーバーはあなたのリクエストを他の人のリクエストと区別できません。ステートレスの問題を解決し、さまざまなユーザーとアクセスレベルを識別するために、WebサーバーはCookieを割り当てて、クライアントとサーバー間のステートフルセッションを作成および管理します。

Cookieの値を操作する方法の概要です。

1. アカウントの登録またはサインアップからCookie値を取得します。
2. Cookieの値をデコードします。
3. Cookieのオブジェクト表記または構造を特定します。
4. オブジェクト内のパラメーターを、adminやadministratorなどのより高い特権レベルを持つ別のパラメーターに変更します。
5. Cookieを再エンコードし、Cookieを値スペースに挿入します。これは、値ボックスをダブルクリックすることで実行できます。
6. Cookieを実行します。これは、ページを更新するか、ログインすることで実行できます。

### Answer↓
What is the name of the new cookie that was created for your account?
<font color="White">user-auth</font>
What encoding type was used for the cookie value?
<font color="White">hexadecimal</font>
What object format is the data of the cookie stored in?
<font color="White">JSON</font>
What is the value of the administrator cookie? (username = admin)
<font color="White">7b636f6d70616e793a2022546865204265737420466573746976616c20436f6d70616e79222c206973726567697374657265643a2254727565222c20757365726e616d653a2261646d696e227d</font>
What team environment is not responding?
<font color="White">HR</font>
What team environment has a network warning?
<font color="White">Application</font>
# day3
今日の課題では、調査のスキルとテクニックを使って、リストに載っていないコンテンツを発見し、身の回りの手がかりを使って一般的な認証を試みます。
コンテンツディスカバリーは、私たちが見るべきではないものを見つけることができるので、私たちの武器として有用なテクニックです。たとえば、次のものを見つけることができる場合があります。

- 構成ファイル
- パスワードと秘密
- バックアップ
- コンテンツ管理システム
- 管理者ダッシュボードまたはポータル

Dirbusterは、Webサイト「santascookies.thm」をスキャンして、このワードリスト内にリストされているフォルダーを探します。Dirbusterを使用してこのサイトのコンテンツを検出するには、コマンドdirbを使用して、WebサイトのURLや単語リストの場所などの情報を提供します。

```
┌──(kali㉿kali)-[~]
└─$ dirb http://10.10.167.106 /home/kali/Document/mywordlist.txt
```

このコマンドを実行すると、Dirbusterは、作成したワードリストのすべての値を使用して、Webサイト上のディレクトリの存在を検索します。

### Answer↓
Using a common wordlist for discovering content, enumerate http://10.10.84.115 to find the location of the administrator dashboard. What is the name of the folder?
<font color="White">admin</font>
In your web browser, try some default credentials on the newly discovered login form for the "administrator" user. What is the password?
<font color="White">administrator</font>
Access the admin panel. What is the value of the flag?
<font color="White">THM{ADM1N_AC3SS}</font>
# day4
今回は、BurpSuiteの使い方を学びつつ、パスワードの辞書攻撃を体験してみようというもの。
`Send to Intruder`の使い方を知っていると楽に解ける。

### Answer↓
What valid password can you use to access the "santa" account?
<font color="White">cookie</font>
What is the flag in Santa's itinerary?
<font color="White">THM{SANTA_DELIVERS}</font>
# day5
## XSS
ページへアクセス。(URLはマシン起動毎に変更するので、ご自身の環境に置き換えてね)
`https://10-10-84-115.p.thmlabs.com/`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/151cbfbe-da50-ff5a-7003-1b2ecb9d6f7c.png)

まずは、`McSkidy`としてログイン。

```
Username: McSkidy
Password: password
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/c1803157-871d-e2f7-cabc-01cf89626114.png)

settingへ移動すると、パスワード変更ができる。

```
Username: McSkidy
Password: pass123
```

変更すると、URLが次の様になる。
`https://10-10-84-115.p.thmlabs.com/settings?new_password=pass123`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/de197734-9a12-2a04-bdc5-067b574efa55.png)

つまり、ユーザーがログイン状態のとき、`https://10-10-84-115.p.thmlabs.com/settings?new_password=XXXXX`を踏むと、そのユーザーのパスワードが更新されるということだ。

次に、このサイトの特性を見よう。ここでは、タグ文字が有効になった状態でコメントを残すことができる。（コメント：`
TryHackMe
`）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/139bc233-9edb-b59a-7a03-c64c646939e4.png)
`
タグ`が有効になって、打ち消し線が表示された。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/7b309101-76fa-e3f6-08df-31337caf75c8.png)

今回は、「管理者がプラグインを無効にする」ことが目標なので、何とか管理者としてサイトにログインしたい。そこで、上記のパスワード変更機能とXSSを用いて、管理者のパスワードを任意の値にすることができる試す。
考えられるシナリオとしては、、、

```
1. 管理者がこのサイトにログインする
2. 管理者がコメントを巡回する
3. 管理者がタグ文字入りのコメントをみる
4. 攻撃文字列を工夫して、管理者のパスワードを更新するURLを読み込ます
5. 任意に変更したパスワードで管理者としてログインする
```

4の攻撃文字列は次でどうだろうか。

```
<script>fetch('/settings?new_password=XXXXX');</script>

<script>タグは、ブラウザにJavaScriptの実行を指示し、
fetchコマンドは、指定されたURLにネットワークリクエストを行います。
```

では、実際に攻撃文字列をコメントとして残します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/739ca193-0a89-035b-af3f-8de820ccd129.png)
次に、`grinch`としてログインしてみます。このとき、パスワードが`pass123`でログインできてたら攻撃成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2217966/5306b288-e616-41b0-0906-66367336941e.png)
攻撃成功です。悪意のあるプラグインを無効化しましょう。
無効化すると、フラッグを発見できます。
### Answer↓
What flag did you get when you disabled the plugin?
<font color="White">THM{NO_MORE_BUTTMAS}</font>
*Good Luck!*