点击蓝字
关注我们
始于理论,源于实践,终于实战
老付话安全,每天一点点
激情永无限,进步看得见
严正声明
本号所写文章方法和工具只用于学习和交流,严禁使用文章所述内容中的方法未经许可的情况下对生产系统进行方法验证实施,发生一切问题由相关个人承担法律责任,其与本号无关。
特此声明!!!
绕过 CSRF 令牌验证
点击劫持是一种视觉欺骗手段,也被称为UI - 覆盖攻击,攻击者将一个透明的、不可见的iframe覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。例如,用户可能看到的是一个“播放”视频的按钮,但实际上点击后却是将自己社交网站的个人信息改为“公开”状态。本质上讲,点击劫持是指利用网络技术手段,将用户点击某个链接时,跳转到不同的网页或执行不同的操作,从而实现非法目的的行为。攻击者通过这种方式可以进行网络钓鱼、窃取用户账号密码、传播恶意软件等活动。
构建点击劫持攻击的基本步骤
1、创建透明的iframe
攻击者需要创建一个透明的iframe,这个iframe将覆盖在目标网页上。这个iframe可以是完全透明的,也可以包含一些诱人的内容,比如一个看似无害的按钮或链接。
<iframe src="target_page.html" style="width:100%; height:100%; border:none;"></iframe>
代码片段:可切换语言,无法单独设置文字格式
2、调整iframe的位置
攻击者需要调整iframe的位置,使其覆盖在目标网页的特定区域。这可以通过CSS样式表来实现,比如使用position: absolute;属性来定位iframe。
iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1000;
}
3、诱导用户点击
然后,攻击者需要诱使用户点击这个透明的iframe。这可以通过各种手段来实现,比如在iframe上方放置一些诱人的内容,或者通过社会工程学手段诱使用户点击。
4、收集用户操作数据
攻击者可以收集用户在不知情的情况下进行的操作数据,比如点击的位置、输入的内容等。这些数据可以用于进一步的攻击,比如网络钓鱼、窃取用户账号密码等。
document.querySelector('iframe').addEventListener('click', function(event){
console.log('User clicked at:', event.clientX, event.clientY);
// 这里可以将用户点击的位置发送到攻击者的服务器
});
如何防止点击劫持攻击
点击劫持是一种浏览器端行为,其成功与否取决于浏览器功能以及是否符合现行的 Web 标准。服务器端点击劫持保护的两种机制是 X-Frame-Options 和 Content Security Policy。
X-Frame-Options是浏览器响应标头引入的,标头为网站所有者提供了对 iframe 或对象的使用的控制权,以便可以使用 deny 指令禁止在框架中包含网页。还可以使用 sameorigin 指令将框架限制为与网站相同的来源或者使用 allow-from 指令的命名网站(X-Frame-Options: allow-from https://example.com)。
Content Security Policy (CSP)是一种检测和预防机制,可缓解 XSS 和点击劫持等攻击。CSP 通常在 Web 服务器中作为返回标头实现Content-Security-Policy: policy。
补充:什么是 CSP(Content Security Policy)
CSP 是一种浏览器安全机制,它限制页面可以加载的资源(如脚本和图像),并限制页面是否可以由其他页面构建框架。启用 CSP,需要在服务器端配置HTTP响应头,不同的Web服务器上启用CSP的方法是不同的,具体参见web服务器的搭建方法。
CSP 缓解 XSS 攻击
script-src 'self'指令仅允许从与页面本身相同的来源加载脚本。
script-src https://example.com仅允许从特定域加载脚本
CSP 指令还可以指定 nonce(随机值),并且在加载脚本的标记中使用相同的值。如果值不匹配,则脚本将不会执行。
CSP 指令可以指定受信任脚本内容的哈希值。如果实际脚本的哈希值与指令中指定的值不匹配,则脚本将不会执行。
但是有一种情况,许多CSP策略允许图像请求,因为图像通常是无害的,不会执行任何代码。使用元素向外部服务器发出请求通常是被允许的,通常用了跟踪用户行为或加载广告,也可能被滥用如果一个页面包含一个CSRF令牌,并且该页面的CSP策略允许图像请求,那么攻击者可能会尝试通过诱导用户访问一个包含恶意图像URL的页面来泄露该CSRF令牌。恶意图像URL可能会将CSRF令牌发送到攻击者的服务器。这种情况下,需要在csp策略中限制图片来源、严格的csp策略、使用CSRF防护机制等。
CSP 缓解无关联的标记攻击
img-src 'self'仅允许从与页面本身相同的来源加载图像
img-src https://images.example.com仅允许从特定域加载图像。
CSP 防止点击劫持
frame-ancestors指令用于指定哪些源可以嵌入当前页面。具体设置如下:
frame-ancestors 'self'仅允许该页面由来自同一来源的其他页面
frame-ancestors 'none'完全阻止 frame
frame-ancestors 'self' https://example.com https://*.abc.com指定多个域并使用通配符,CSP不仅会验证最外层的框架(即顶级域名),还会验证整个父帧层次结构中的每个框架。这意味着,如果一个页面嵌入在多个层次的框架中,那么所有的框架都必须符合frame-ancestors指令中指定的源。
END
老付
欢迎扫码
关注我们
网络安全
原文始发于微信公众号(老付话安全):常见的点击劫持示例
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论