前提
- kali linux環境がある
- DVWAのセットアップ済み(https://qiita.com/KPenguin/items/7e4f1c428c3dadf8591c )
目標
- csrfでpassword奪取
手順概要
- 挙動の確認
- 模擬サイトを作る
- ユーザーに模擬サイトでpassword変更してもらう序でに盗む。
内容
csrfとは
- cross-site request forgerieの略称
- 外部ドメインからのリクエストを制限していない場合、別サイトからの不正なリクエストを受けてします。
- 今回の場合はパスワード変更画面を模擬したサイト(フィッシングサイトの画面)でパスワード変更を行うと実際にパスワードが変更できてしまう。
前準備
- DVWAにログインする
- 以下コードをkali上で実行しDVWAを立ち上げる。
- http://localhost/DVWA-master/index.php
- admin/passwordでログイン
- セキュリティレベルを下げる。
- メニュー下にあるDVWA securityへアクセス
- デフォルトがimpossibleなので、このままではハッキングできない。なのでlowに変更する
# ファイルへのアクセス許可する
root@kali:~# service apache2 start
# DB_createできるようにする
root@kali:~# service mysql start
-- CSRFにアクセスする(左メニューにある)
CSRF開始
-
挙動を確認する
- 通常通りpassを変更してみる。[pw:test]
- すると、以下のようなurlをリクエストすることでパスワードの変更が完了された。
- 入力した値2つとchangeフラグの計3つを乗っければ実現できそう
http://localhost/DVWA-master/vulnerabilities/csrf/?password_new=test&password_conf=test&Change=Change#
-
htmlを確認する
- 下コードのようになっている。3つのinputをクエリに乗っけているみたい。
<form action="#" method="GET">
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 />
<br />
<input type="submit" value="Change" name="Change">
</form>
- ダミーサイトを作る。
- 上記html-form部分だけをコピーし、htmlファイルで保存。
- form-actionをリクエストを投げたいurl("http://localhost/DVWA-master/vulnerabilities/csrf/? ")に変更する
- ダミーサイトでパスワードを変更してみる
- クエリを以下に変更してみる[pw:admin]。
- 以下urlに飛んだので成功してそう
- http://localhost/DVWA-master/vulnerabilities/csrf/?password_new=admin&password_conf=admin&Change=Change
-
パスワードが変更されているか確認する
- http://localhost/DVWA-master/login.php
- admin/adminでログインすると成功する。
- 後はダミーサイト側でchangeボタンclick時にinput情報を保存しておけば、自動でパスワード奪取できる
-
最後に
- 今回、雑なダミーサイトだったが、見た目が同じだったら気づかないユーザーは多い。
- リテラシーのあるユーザーはurlで判断するので、urlの偽造も最近は巧になっている。
おわり