김승현
Bugbounty Boot Camp Chap.7 CLICKJACKING 본문
클릭재킹이란?
HTML의 <iframe> 태그를 활용하는 공격 기법임
<iframe>은 하나의 웹 페이지 내에 다른 웹 페이지를 삽입할 수 있도록 해주는 기능을 제공함
iframe태그의 사용 예시
- 온라인 광고
- 인터넷 자원 임베디드
- 동영상, 오디오 etc...
위처럼 유용하게 사용할 수 있으나 보안 취약점( ClickJacking)이 존재할 수 있음
-> 이를 방지하기 위해 X-Frame-Options 헤더를 설정하여 특정 사이트에서의 iframe을 제한할 수 있음
클릭재킹 가상 시나리오
example.com은 은행 웹사이트로, 사용자가 돈을 송금할 수 있는 페이지를 가지고 있음 https://www.example.com/transfer_money https://www.example.com/transfer_money?recipient=RECIPIENT_ACCOUNT&amount=AMOUNT_TO_TRANSFER 파라미터 종류
|
위와 같은 경우 공격자가 아래의 스크립트를 글에 숨겨놓으면 버튼을 누를시 Congratulations!라는 경고창이 뜨며
ATTACKER_ACCOUNT에 1000단위의 돈을 입금하게 됨
<html>
<body>
<h1>Click this button to win a prize!</h1>
<iframe src="https://www.example.com/transfer_money?recipient=ATTACKER_ACCOUNT&amount=1000" style="position:absolute; width:100%; height:100%; top:0; left:0; opacity:0; z-index:999;"></iframe>
<button onclick="alert('Congratulations!')">Click me!</button>
</body>
</html>
클릭재킹이 발생하기 위한 두 가지 조건
- 취약한 페이지가 사용자 대신 상태를 변경할 수 있어야 함
- 이전의 예시처럼 송금을 하는 기능, 비밀번호를 바꾸는 등의 기능이 있어야 함
- 취약한 페이지가 다른 사이트의 iframe으로 프레임이 될 수 있어야 함
- 다른 악성 페이지가 우리가 공격하고자 하는 사이트에 삽입될 수 있어야 함
예방법
X-Frame-Options
페이지가 iframe에서 렌더링될 수 있는지 여부를 나타내는 헤더
브라우저는 제공된 헤더의 지침을 따르며, 명시되어 있지 않으면 기본적으로 프레임이 가능하게 만듦
옵션
- DENY
- SAMEORIGIN
Content-Security-Policy
여러 코드 인젝션을 방지하기 위해 도입된 컴퓨터 보안 표준
이 헤더의 frame-ancestors를 통해 프레임 가능한 사이트를 정할 수 있음
- none
- self
+SameSite 쿠키를 사용하여 클릭재킹을 방지할 수 있음
Set-Cookie라는 헤더를 통해 사용자의 브라우저에 쿠키를 설정하도록 할 수 있음
이때 SameSite=Strict 혹은 Lax로 설정함으로서 서드파티 iframe 내에서 발생한 요청을 처리하지 않게 할 수 있음
클릭재킹 헌팅법
- 상태 변화 행위 페이지가 있는지 확인
- 응답 헤더 확인
- 취약점 확인
클릭재킹 방어 기법 우회
- 프레임 버스팅 약점 찾기
- 더블 프레임 기법
- 엣지 케이스 확
'book_summary' 카테고리의 다른 글
XML EXTERNAL ENTITY (0) | 2024.08.07 |
---|---|
Bugbounty Boot Camp Chap.10 INSECURE DIRECT OBJECT REFERENCES (0) | 2024.07.28 |
Bugbounty Boot Camp Chap.7 OPEN REDIRECTS (0) | 2024.07.25 |
Bugbounty Boot Camp Chap.6 CROSS - SITESCRIPTING (0) | 2024.07.24 |
Bugbounty Boot Camp Chap.5 WEB HACKING RECONNAISSANCE (0) | 2024.07.24 |