8月 12

WordPressのリモートからパスワードをリセットされる脆弱性

WordPress 2.8.3以下のバージョンが影響を受けるとされているパスワードリセットの脆弱性の検証を行いました。

攻撃方法としてはブラウザから細工したリクエストを送信すると以下のような画面が表示されます。
# 攻撃を成立させる方法としてはブラウザでなければならないという意味ではありません。
wp-reset
この結果、WordPress用のデータベースに登録されている一番上のユーザのパスワードがリセットされるという事象が発生します。
以下はリセットする攻撃を行う前と後のデータベースの内容です。

【リセット前】
+—-+————+————————————+
| ID | user_login | user_pass |
+—-+————+————————————+
| 1 | admin | $P$98xRCLej9lMt4.y9WDgnjLDul7fpSL/ |
| 2 | user001 | $P$9xHlPO9P51.QiDgO6YZMZzRww5iHID1 |
+—-+————+————————————+

【リセット後】
+—-+————+————————————+
| ID | user_login | user_pass |
+—-+————+————————————+
| 1 | admin | $P$9aHeWem/Z5DsJQg/QBx.5c0LppLgmA1 |
| 2 | user001 | $P$9xHlPO9P51.QiDgO6YZMZzRww5iHID1 |
+—-+————+————————————+

ハッシュ化された文字列ですが内容に変更が発生していることが分かるかと思います。

パスワードリセットした結果、リセットを発生させられたユーザが登録しているメールアドレスに初期化されたパスワードが送信されます。
脆弱性の名称からは
「管理者のパスワードがリセットされて、悪意のあるユーザにログインされてしまうのでは?」
と思ってしまうかもしれませんが、そういうものではありません。

通常のパスワードリセット手順と今回の脆弱性を利用した際の手順の違いを見てみましょう。

【通常のリセット】
① パスワードのリセットリクエストを送る。
② リセットするためのURLがリセットするユーザ宛にメールで届く(リセットするためのキーが含まれている)
③ メールに書かれたURLへアクセスされるとリセット処理が実行される。
④ ランダムに生成された新しいパスワードがリセットしたユーザ宛にメールで届く。

【今回の脆弱性を利用したリセット】
① 脆弱性を利用したリクエストを送信。
② ランダムに生成された新しいパスワードがリセットされたユーザ宛にメールで届く。

上記を見て分かる通り攻撃者はリセットしたユーザのメールを盗み見ることができなければリセットされたパスワードを知ることができません。
つまり、この脆弱性のみを利用しただけではなりすましログインをすることはできないということです。
ただ、このリセットのリクエストを繰り返し行われるとパスワードのリセットが頻繁に発生し、結果的に、そのユーザではログインできないという事象が発生し、ある種のDoS状態になります。たとえ、1回でもリセットされると非常に不愉快であると思いますので、リスクレベルとしては脆弱性のタイトルほど高いとは言えないかもしれませんが速やかにアップデートを行うことが推奨されます。


Copyright 2021. All rights reserved.

Posted 2009年8月12日 by ntsuji in category "exploit