【TryHackMe】Advent of Cyber 2 [2020] で学んだこと

# はじめに
TryHackMeの備忘録です。
kali linux上で実行しています。

https://tryhackme.com/r/room/adventofcyber2

## Day1 認証Cookieの値を変更する
### Webサイトにアクセスした時に実際に起こること
1.**クライアント** から **DNSサーバ** にアクセスしたいサイトの **ドメイン** を送る
2.**DNSサーバ** から **クライアント** にアクセスしたいサイトの **IPアドレス** が返される
3.**クライアント** が その**IPアドレス** に対して **HTTPコール** することで **Webサイト** に必要な諸々が返されて **描画** される

### Cookieの書き換え
開発者ツールのアプリケーションタブのCookieはダブルクリックすると **Key・Value** 共に書き換えられる

## Day2 バリデーション回避してリバースシェルを行う
### リバースシェルが行える条件
1.**バリデーションを回避してリバースシェルファイルをアップロードできる**
2.**リバースシェルファイルに対してURLからアクセスできる**

### リバースシェルからWebアプリを守る
・**バリデーションでリバースシェルファイルをアップロードできないようにする**
・**アップロードされたファイルをpublicにしない**

### phpバックエンドでのリバースシェルの実行方法
1.**/usr/share/webshells/php/php-reverse-shell.php** の
**ip** を自マシンに **port** を任意のポートに変更する。
2.変更したリバースシェルファイルをバリデーションを回避してアップロードする。
3.**sudo nc -lvnp <変更した任意のポート>** を実行する。
ex)**sudo nc -lvnp 443**
4.リバースシェルが **アップロードされたURL** を見つけてアクセスする。

**3** で実行したターミナルからphpが実行されているマシンに
**アクセス** できるようになっています。

## Day3 BurpSuiteを使ったブルートフォース攻撃
### BurpSuiteをFireFoxで使えるようにする

https://qiita.com/labpixel/items/e42f8f28ccb78d057cb1

:::note info
Kali linux上のChromeで適用しようとしたところプロキシ設定が出来ませんでした。
:::

### BurpSuiteはローカルプロキシツール
**ローカルプロキシツール** はブラウザがサーバに到達する前に
**リクエスト** として本来送信される**HTTPメッセージ**や、
**レスポンス** を改ざんすることが出来ます。

HTTPコールする **踏み台サーバ** がブラウザとサーバの間に一つ挟まるような感覚です。

### BurpSuiteでブルートフォース攻撃
1.**BurpSuite** の **Intercept** を **ON** にする。

2.攻撃したいHTTPコールが発生する動作をブラウザで再現する。
ex) ログインボタンをクリックする

![screenshot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348923/1366129a-75d8-e4b3-9048-d427dc9aeeb3.png)

3.**BurpSuite** の **Intercept** を右クリックして **Send to Intruder** を選択する。

4.**Intruder** に移動して、Attack type: **Cluster Bomb** に変更する。
![screenshot3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348923/1e06b43e-5441-89d1-f0a5-a02bccf7f271.png)

5.改ざんしたい部分をドラッグして **Add§** をクリックする。
![screenshot4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348923/24c28c17-d029-f1cf-70ed-9fd8ef500bf9.png)

6.**Intruder** の **Payloads** で改ざんしたい部分に実際埋め込む値を渡します。
![screenshot5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3348923/9d985f94-b078-174a-f032-3c61fe8a31d4.png)

7.**Start Attack** をクリックする。

## Day4 gobuster・wfuzz を使ったファジング攻撃
### Gobuster dirmodeを使ったファジング攻撃

・**-u** は、ファジングするURLの指定です。
・**-w** は、ファジングするワードリストの指定です。
・**-x** は、ファジングするワードリストの拡張子の指定です。

ex) `http:\//example.com/xxx.php・xxx.txt・xxx.html` に対するファジングの例
```console
gobuster dir -u http://example.com -w wordlist.txt -x php,txt,html
```

・kali linux上では **/usr/share/wordlists** にファジング用のワードリストが入っています。

### wfuzzを使ったファジング攻撃

・**-c** は、出力をカラーで表示します。
・**-d** は、パラメータをファジングしたい時に使います。
・**-z** は、ファジングするワードリストを指定します。
・**--hc** は、特定のレスポンスコードを表示しない時に指定します。
・**--hl** は、レスポンスの行間を指定して表示しません。
・**--hh** は、特定の文字数の間を表示しません。

ex) `http:\//localhost/xxx/note.txt` に対するファジングの例
```console
wfuzz -c -z file,/usr/share/wordlists/dirb/big.txt localhost:80/FUZZ/note.txt
```

ex) `http:\//localhost/api/site-log.php?date=xxx` に対するファジングの例
```console
wfuzz -c -z file,Desktop/wordlist -d "date=FUZZ" -u http://10.10.167.98/api/site-log.php

```

## Gobusterとwfuzzの使い分け
・URL直下のファジングが行いたい場合は **Gobuster** を使う
・URL階層の特定のどこか・パラメータに対してファジングが行いたい場合は **wfuzz** を使う