Click Jacking이란 무엇인가?
Click Jacking은 사용자가 의도하지 않은 클릭 행위를 유도하는 공격 기법입니다. Click Jacking 공격은 웹사이트 상의 버튼, 링크 등을 통해 사용자를 다른 웹 페이지로 유도하여, 사용자가 악성 페이지에서 의도하지 않은 동작을 수행하게 만듭니다. Click Jacking은 "UI Redress Attack" 또는 "User Interface Redress Attack"으로도 알려져 있습니다.
Click Jacking 공격 원리
Click Jacking 공격은 웹 페이지 내에 들어 있는 iframe 요소를 이용하여 수행됩니다. iframe 요소는 다른 웹 페이지를 포함하고 있는 HTML 태그로, 다른 웹 페이지를 포함하면서도 현재 웹 페이지의 내용을 유지할 수 있습니다. 공격자는 iframe 요소를 이용하여 해당 웹 페이지의 내용을 가리고, 그 위에 악성 페이지를 배치하여 사용자의 클릭을 유도합니다.
예를 들어, 공격자는 은행 웹 사이트를 iframe 요소로 가리고, 그 위에 악성 페이지를 배치합니다. 사용자가 은행 웹 사이트에서 거래를 수행하려 할 때, 실제로는 악성 페이지의 버튼이 클릭되도록 유도합니다.
아래의 예제는 iframe 위에 보이지 않는 화면을 만들었기 때문에 iframe 내 화면을 클릭할 경우 "You are Hacked"라는 알림 창이 뜨는 코드입니다.
예제 코드
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Clickjacking Example</title>
<style>
.overlay-layer {
position: absolute;
top: 0;
left: 0;
width: 800px;
height: 600px;
background-color: transparent;
z-index: 100;
}
/* 숨겨진 문자를 위한 CSS 스타일 */
.hidden-text {
position: absolute;
top: 200px;
left: 300px;
color: transparent;
font-size: 0px;
}
</style>
</head>
<body>
<h1>Click jacking Example</h1>
<div>
<iframe src="https://hacksms.tistory.com" width="800" height="600"></iframe>
<!-- 덮어씌울 레이어 -->
<div class="overlay-layer" onclick="alert('You are Hacked');"></div>
<!-- 숨겨진 문자 -->
<p class="hidden-text">Click Here</p>
</div>
</body>
</html>
Click Jacking 공격 방어 방법
Click Jacking 공격을 방어하기 위해서는 다음과 같은 방법을 사용할 수 있습니다.
X-Frame-Options 설정
X-Frame-Options 헤더를 사용하여 웹 페이지가 다른 웹 페이지에 포함될 수 있는지 여부를 제어할 수 있습니다. 이를 사용하여 본인의 웹 서버가 Click Jacking 공격에 이용되는 것을 방어할 수 있습니다.
CSP 설정
Content Security Policy(CSP)를 사용하여 특정 도메인에서만 iframe 요소를 허용하도록 설정할 수 있습니다.
JavaScript를 사용하여 클릭 이벤트를 감지
JavaScript를 사용하여 클릭 이벤트를 감지하고, 클릭된 버튼이 iframe 내부에 있는지 확인할 수 있습니다.
UI 변경을 요구하는 작업에 대해 경고
사용자가 브라우저에서 마우스 클릭, 키보드 입력, 마우스 이동 등의 작업을 수행할 때, 사용자 인터페이스(UI)의 변경을 요구하는 작업이 있을 경우, 해당 작업에 대한 경고를 표시합니다. 예를 들어, "이 버튼을 클릭하면 신용 카드가 청구됩니다. 계속 진행하시겠습니까?"와 같은 메시지를 표시하여 사용자가 버튼을 클릭하기 전에 경고할 수 있습니다.
이 방법은 Click Jacking 공격을 예방하는 것은 아니지만, 사용자가 악성 페이지에서 클릭하는 것을 방지할 수 있습니다. 또한, 이 방법은 기본적인 보안 조치로서, 브라우저의 보안 설정에서 활성화되어 있을 수도 있습니다.
'Hack > Web' 카테고리의 다른 글
[CVE-2023-20860] Spring Framework Improper Access Control (0) | 2023.03.26 |
---|---|
[Kotlin] Use-Site Target이 존재하지 않을 경우 검증 우회 가능 (0) | 2023.02.21 |
npm 취약점 점검 도구 - npm audit (0) | 2022.11.16 |
[CVE-2022-42889] Apache Commons Text RCE (text4shell) (0) | 2022.10.20 |
Django 1-Day Directory Traversal 취약점, CVE-2021-3281 (0) | 2022.10.03 |
댓글