DVWAでInsecure CAPTCHA

## 前提
- kali linux環境がある
- DVWAのセットアップ済み（https://qiita.com/KPenguin/items/7e4f1c428c3dadf8591c ）

## 目標
- ロボットチェックを回避する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/e493e26c-5ebc-5dcf-6bd9-3513cf5f7da9.png)


## 手順概要
- 挙動確認
- ロボットチェック回避

## 内容
### CAPTCHAとは
- "Completely Automated Public Turing test to tell Computers and Humans Apart" の略であり、「人間とマシンを判別するチューリングテスト」のことである
- ぐにゃぐにゃ文字の画像があり、その文字を入力させるやつ

### 前準備
- DVWAにログインする
    - 以下コードをkali上で実行しDVWAを立ち上げる。
    - http://localhost/DVWA-master/index.php
    - admin/passwordでログイン
- セキュリティレベルを下げる。
    - メニュー下にあるDVWA securityへアクセス
    - デフォルトがimpossibleなので、このままではハッキングできない。なのでlowに変更する

```shell:
# ファイルへのアクセス許可する
root@kali:~# service apache2 start
# DB_createできるようにする
root@kali:~# service mysql start 

```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/bb95d520-1602-b7b8-afa3-85da3ffb651e.png)

- insecure CAPTCHAにアクセスする（左メニューにある）
    - 何やらエラーがでるので、設定が必要そう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/4dac4e03-bcd0-6923-202e-e041204441a4.png)


### 事前設定
- reCPATCHA API keyが無いらしいので取得する。
    - エラーメッセージの下にリンクがあるので、リンク押す。
    - googleへ飛ぶので、自身のアカウントでログイン
    - ラベル：適当に入力
    - reCAPTCHAタイプ：　reCAPTCHA v2
    - ドメイン：CPATCHAを使用したいドメイン
    - 送信を押すと２つのkeyを取得できる
- keyを取得したのでそれを設定ファイルに入れる。
    - 以下スクリプト参照

```shell:
# configファイルにアクセス
root@kali:~# vi /var/www/html/DVWA-master/config/config.inc.php
# 以下の値が空であることを確認
$_DVWA[ 'recaptcha_public_key' ]  = '';
$_DVWA[ 'recaptcha_private_key' ] = '';
# 先ほど取得したkeyを入れる（上がクライアント、下がサーバー）
$_DVWA[ 'recaptcha_public_key' ]  = '6LcteN8UAAAAAJObgsbfsvEWLMYsgmKOESW-62';
$_DVWA[ 'recaptcha_private_key' ] = '6LcteN8UAAAAANCFjsdglgjmwxQZdysR9QatCw';

```

- ロボットチェックが有効になったことを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/4502c4d2-7eea-9b1c-5118-b04adf1e4528.png)



### CAPTCHAを攻略する

- 挙動を確認する
    - 通常通り入力＆チェック＆送信
        - 変更許可メッセージが出る（下画像）
        - postでパラメータ渡している（下画像）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/413e5b17-0f20-6e5e-e3bf-5e439abde1fb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/2a5645ec-6d4b-4cb3-6296-d0e146b9ad63.png)

    - 変更許可ページで変更ボタン押す
        - 当然変更できる。（以下画像）
        - 同じようにpostされているのでパラメータを渡している（下画像）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/38f95e43-a85c-24aa-acff-0f31b851e3c2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584889/b9749656-c4f3-8ec0-d2c6-83ccc37b6656.png)

- 挙動からの考察
    - ページ遷移ではなくjsでページを書き換えているみたい。
    - パラメータstep=1ではロボットチェックを行う
    - パラメータstep=2ではパスワードの変更を行う。
    - step=2ではg-recaptcha-responseを使っていない。

- ロボットチェックなしでパスワードを変更する
    - htmlを確認すると下記のようにinputタグ４つで対応していることが分かる。
        - ただ、通常step=1となっているので、これだと許可判定に飛ばされるので「2」に書き換える
        - 後はパスワードを入力し、ロボットチェックなしで送信する。
        - すると、パスワードが一発で変更できた。

```html:
		<form action="#" method="POST" >
			<h3>Change your password:</h3>
			<br />
　　　　　　　　　　　　　<-- valueを1から2へ変更する-->
			<input type="hidden" name="step" value="1" />
			New password:<br />
			<input type="password" AUTOCOMPLETE="off" name="password_new"><br />
			Confirm new password:<br />
			<input type="password" AUTOCOMPLETE="off" name="password_conf"><br />

			
		<script src='https://www.google.com/recaptcha/api.js'></script>
		<br /> <div class='g-recaptcha' data-theme='dark' data-sitekey='6Ld_eN8UAAAAAEOqO0Pw05X3bpSrbGmTexHlD2NS'></div>
	
			<br />

			<input type="submit" value="Change" name="Change">
		</form>
```

おわり