私は教員プロジェクトに取り組んでいます。 Wordpress localhostワードプレスのCSRF脆弱性を複製する必要があります。これを実行しようとしています: https://wpvulndb.com/vulnerabilities/7691 できませんでしたKali LinuxでMetasploitモジュールを使用することを考えています。誰かが私をガイドしてくれませんか?
A WordpressユーザーはこのURLにアクセスして、電子メールでパスワードリセットリンクをリクエストできます。
https://yourwordpress.example/wp-login.php?action=lostpassword
リセットリンクは次のようになります。
https://yourwordpress.example/wp-login.php?action=rp&key=dDnnToiqjYtsa9KdfVZl&login=admin
URLのkey
パラメータにより、電子メールの受信者のみがパスワードをリセットできるようになります。リセットリンクにアクセスすると、新しいパスワードを入力するためのフォームが表示されます。
Wordpress 4.0.1の前は、このフォームはCSRFトークンを提供していませんでした。代わりに、key
GETパラメータがcookieに保存され、新しいパスワードを送信した後Cookieの値が検証されます。これは、ユーザーがパスワードリセットリンクをクリックしてから新しいパスワードを入力するまでの間に脆弱であることを意味します。その期間、それから初めて、攻撃者はCSRF攻撃を実行してパスワードを任意の値に変更する可能性があります(ただし、この小さな機会のために、実際の攻撃ではバグの値が制限されています)。
脆弱性を再現するには、次のようにします。
admin
の場合)<form action = "https://yourwordpress.example/wp-login.php?action = resetpass" method = "post"> <input type = "hidden" name = "user_login "value =" admin "> <input type =" password "name =" pass1 "> <input type =" password "name =" pass2 "> <input type = "submit" name = "wp-submit" value = "Reset Password"> </ form>
問題は fixed (cookieに加えて)フォームにリセットトークンを追加することでした:
<input type="hidden" name="rp_key" value="<?php echo esc_attr( $rp_key ); ?>" />
そして、リセットの試みは、rp_key
が一致しません:
if ( isset( $_POST['pass1'] ) && ! hash_equals( $rp_key, $_POST['rp_key'] ) ) {
$user = false;
}