دسته بندی
Cross-Site Attacks
باگ Clickjacking یا همچنین شناخته شده به عنوان UI Redressing، یک نوع حمله امنیتی است که در آن حملهکننده با استفاده از انگشتآوری و برتری لایهی کاربری (UI)، کاربران را به انجام عملیاتهایی که میخواهند، نادیده میگیرد و آنها را به انجام عملیاتهای خطرناک یا ناخواسته میاندازد. این حمله با استفاده از طرحبندی صفحات وب یا نشاندهندههای قابل مشاهده، کاربر را به کلیک بر روی عنصری که اصلاً نمیخواهند ترغیب میکند.مثال:
فرض کنید یک سایت بانکی وجود دارد که یک فرم احراز هویت دارد و کاربران باید نام کاربری و رمزعبور خود را وارد کنند. صفحهای با نام "بهروزرسانی امنیتی" در سایت وجود دارد که از کاربران خواسته میشود بر روی دکمهی "تأیید" کلیک کنند تا احراز هویت را کامل کنند.
<!DOCTYPE html>حملهکننده میتواند یک صفحهی وب ایجاد کند (مثلاً با نام
<html>
<head>
<title>Secure Bank</title>
</head>
<body>
<h1>Welcome to Secure Bank</h1>
<form action="/login" method="post">
<label for="username">Username:</label>
<input type="text" name="username" id="username">
<br>
<label for="password">Password:</label>
<input type="password" name="password" id="password">
<br>
<input type="submit" value="Login">
</form>
<iframe src="http://evil-website.com/clickjack"></iframe>
</body>
</html>
clickjack.html) که با استفاده از CSS و مخفی کردن عنصرها، طرحبندی متفاوتی از صفحهی Secure Bank را ایجاد کند:<!DOCTYPE html>وقتی کاربر به صفحه
<html>
<head>
<title>Evil Website</title>
<style>
iframe {
opacity: 0;
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
#fake-button {
position: absolute;
top: 300px;
left: 450px;
background-color: transparent;
border: none;
font-size: 18px;
color: transparent;
}
</style>
</head>
<body>
<h1>Welcome to Evil Website</h1>
<form action="http://secure-bank.com/login" method="post">
<label for="username">Username:</label>
<input type="text" name="username" id="username">
<br>
<label for="password">Password:</label>
<input type="password" name="password" id="password">
<br>
<button id="fake-button" onclick="document.getElementById('real-button').click()">Click Here</button>
<input type="submit" id="real-button" style="display:none;">
</form>
</body>
</html>
Secure Bank مراجعه میکند، حملهکننده این دو صفحه (Secure Bank و Evil Website) را در یک iframe قرار میدهد و کاربر اصلاً آگاه نیست که عملیات احراز هویت را انجام میدهد. به عبارت دیگر، حملهکننده با نمایش دکمهای در صفحه Evil Website که به نظر میرسد از سایت Secure Bank است، کاربر را به تایید عملیات احراز هویت ترغیب میکند. در واقعیت، کلیک بر روی دکمهی مخفی (fake-button)، عملیات کلیک بر روی دکمهی واقعی (real-button) در صفحه Secure Bank را اجرا میکند و حملهکننده به اطلاعات احراز هویت کاربر دسترسی پیدا میکند.روش های جلوگیری:
1- تنظیم سیاست امنیتی "
X-Frame-Options" در سرور وب که مشخص میکند آیا اجازهی نمایش صفحه در یک iframe به صورت دیگری مجاز است یا خیر.X-Frame-Options: DENYOR
X-Frame-Options: SAMEORIGIN2- تنظیم سیاست امنیتی "
Content Security Policy" که محدودیتهایی برای اجازهی اجرای اسکریپتها و فرمها در صفحهها تعیین میکند.Content-Security-Policy: frame-ancestors 'self';3- اسکریپتهای جاوا اسکریپت که با شناسایی
Clickjacking تلاش میکنند iframe ها را نمایش ندهند یا صفحهای را در پنجرهی کامل باز کنند.<script>4- برخی مرورگرها از فناوریهای جدید مانند "
if (window.self !== window.top) {
window.top.location = window.self.location;
}
</script>
Frame Ancestors" در CSP یا "Content-Security-Policy-Report-Only" برای گزارشدهی تنظیمات امنیتی پشتیبانی میکنند که میتوانند کمک کنند به تشخیص و جلوگیری از Clickjacking..