DVWAにBurp suite を使ってブルートフォース攻撃をしてみた


駆け出しセキュリティエンジニアとして、すごい初歩的なところから取り組んだことをメモしていきます！
今日はBrute forceです！


# 概要

IDとパスワードの総当たり攻撃（Brute force、ブルートフォース）をすることで、アカウントを持っていないWebサイトにログインを試みます。
対象のWebサイトはあらかじめ脆弱性をもった状態で作成されているDVWAを使い、Burp suiteを使って攻撃していきます。





# 利用ツール




+ ホストOS：Windows11
+ ハイパーバイザー：Virtual box 7.0.18
+ ゲストOS：Kali Linux 2024.2
    + ペネトレーションテストなどのサイバーセキュリティに関するツールが事前にインストールされているLinux
+ Damn Vulnerable Web Application（DVWA）
    + 意図的に脆弱性が含まれているWebサイトで、どのようにWebサイトが攻撃されるかを学ぶことができる
    + 脆弱性の強弱を変更することも可能（今回は一番簡単なモードを選択）
+ Burp suite v2024.5.5
    + 今回はプロキシとして利用して、Webサイトにアクセスする際にやりとりするデータの中身を確認します。
    + プロキシとは、クライアント（=Webブラウザ≒パソコン）がWebサーバに情報（=Webページ）を取りに行く際に代理で取りにいってくれるサーバーです。クライアントがどんな情報を送っているのか（取りに行っているのか）を把握しています。



# 準備

1. Kali LinuxのローカルでDVWAを立ち上げ
1. `http://localhost/DVWA/`を開いて、ログインする
1. DVWA Securityタブを選択し、SecurityレベルをLowにする
1. Brute forceタブを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/9cd0027e-ac55-6c98-0242-08064acf1c0d.png)




# 攻撃

試しにUsernameとPasswordを入力して挙動を確認してから、Burp suite を用いてBrute force攻撃をしかけてログイン情報を奪取していきます！

## 試し打ち

まずはUsernameとPasswordに`a`を入れてログインしようとしてみます。
そうすると、下図のエラーメッセージが表示され、ログインに失敗したことがわかります（当たり前といえば当たり前です…）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/ce9d48af-1ec1-0295-be09-e013f19886cd.png)

また、URLは以下に変化しています
```
http://localhost/DVWA/vulnerabilities/brute/?username=a&password=a&Login=Login#
```

つまり、`username=a&password=a`　のところをうまく変化させるだけで、ログインの試行が可能なことがわかります。



## 利用するUsernameリストとPasswordリスト

事前にこれら2つのリストを作成しておきます。
以下のユーザーリストとパスワードリストを利用しようと思います
（Username=admin, Password=passwordでログインできてしまうので、このぐらいで大丈夫です…）


Usernameリスト
```
root
sys
msfadmin
admin
user
service
postgres
tomcat
```

Passwordリスト
```
user
password
12345678
msfadmin
root
guest
batman
asdfasdf
tomcat
```


## Burp suiteで攻撃

ここからBurp suite を使って、IDとパスワードを奪取していきたいと思います。


### 起動
左上のKali Linuxのアイコンを選択し、`Burp`と入力
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/6bb8d1f0-2bb7-a2d8-cac9-a8cd0079b94a.png)


以下の2つの設定はそれぞれ画像のように設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/b918e146-8c63-e6ef-a8b1-209bbc2ebd38.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/44e8da98-cefd-1745-76f3-d270aa4ba608.png)


こんな感じの画面になれば起動完了。よく一番右のタブの`Learn`の画面になっていることが多いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/16d4927e-6760-df80-8ba4-3a053ccefc48.png)

### プロキシの設定

1. Proxy タブを選択
1. Proxy Setting を選択
1. Tools → Proxy になっていることを確認
1. Proxy Listenersで`Edit`を選択し、Interfaceが`127.0.0.1:8080`に変更

今回はlocalhostで起動しているDVWAのWebサイトのプロキシになるように設定するので、IPアドレスは`127.0.0.1`で固定ですが、Portは自由に設定可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/689a0389-93a5-f1a2-277e-09f59a66911c.png)


### 動作確認

Open browserを選択して、Webブラウザが起動させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/e4072717-fa15-92a0-0dcd-7b80bd46b69d.png)

起動したブラウザで`http://localhost/DVWA/index.php`を検索すると、ログイン画面がでてくるので、ログインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/fbbe69ab-3f38-9813-d623-06f9b769f4c0.png)


1. （右）Burp suiteの画面でIntercept is off をクリックしてIntercept is on にする
1. （左）DVDAのBrute Forceタブを選択
1. （左）Usernameにtest_user、Passwordにtest_passを入れてLoginをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/cdf48e46-1ad6-62dc-7cf1-81eaefe2e65a.png)

そうするとHTTPリクエストがBurp suiteの方に表示されます。
ブラウザの方はBurp suite（プロキシ）の方で、通信が止まっているので、画面の変化はないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/869186b7-30cf-2f1f-56c4-28d0990f5ce7.png)


### 攻撃を実施

先ほどのリクエストのどこかで右クリックして、`Send to Intruder`を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/80b0de12-2e55-b35e-8a20-e6b2017f9a48.png)

Intruderタブに移って、Positionsを選択して、以下二つの設定をする
1. Attack typeを`Cluster bomb`に設定。この設定では複数のパラメータのリストのすべての掛け合わせをテストすることができる
1. 変数になる`test_user`, `test_pass`を選択して、右側の`Add$`を選択することで、`$test_user$`, `$test_pass$`となり、変数として扱うことができる（画像はtest_passを選択している状態です。この後Add$を押します）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/6f8829ea-89d4-fceb-c376-b5df4309c372.png)

`Payloads`に移り、`Payload set`を`1`に設定する。これは先ほど選んだ変数のリストになり、先に現れるUsernameの変数が`1`と対応しています。
`Payload settings[Simple list]`に事前に決めていたユーザーリストを入力し、`Payload set`を2に変更して、パスワードリストも入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/a3e4852a-0e69-82d5-21a1-0142511be2b6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/2b9d3367-014c-d84a-0c68-47a3ce248be9.png)


`Settings`でStore requeestsとStore responsesにチェックが入っていることを確認できたら、Start attackをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/c07d9b95-5792-60b3-79a2-265c03e5767f.png)

「無料版だと制限があります」という内容の注意がでるので、OKを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/75754262-020c-ca92-c48e-78b57aa91d2e.png)

そうするとログインの試行結果が得られます。下図の赤枠のUsernameとPasswordの組では得られた応答の長さを表すLengthが異なっており、このIDとパスワードの組がログインに成功したと思われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/7e5fe283-352d-38c9-dc21-2fc969b37d81.png)

確認するためには、ProxyタブのIntercept is on をクリックし、Intercept is offにしてから、DVWAのWeb画面でログインをしてみるとわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/ca6fda1e-7da9-d4ef-af2c-bb8807f55b3c.png)


# 最後に

今回はBurp suite を使って、Brute forceをしてみました。
Hydraでも同じようなことができるのですが、Cookieの設定や構文を理解することが難しいといったことから少しハードルはあります…
その点、GUIで扱えるBurp suite は使い勝手がよいと思います。


# 参考

https://www.demandosigno.study/entry/2019/09/14/050928