XSS自动点按钮有什么危害?如何让按钮不被 JS 自动点击?

更新日期: 2019-08-10阅读: 2.4k标签: 攻击

前言

XSS 自动点按钮有什么危害?

在社交网络里,很多操作都是通过点击按钮发起的,例如发表留言。假如留言系统有 XSS,用户中招后除了基本攻击外,还能进行传播 —— XSS 自动填入留言内容,并模拟点击发表按钮,于是就能发布带有恶意代码的留言。好友看了中招后,又传播给他们的好友。。。从而形成蠕虫扩散。

那么有没有一种机制,让「发表留言」必须通过用户的「真实点击」按钮才能完成,而无法通过脚本自动实现?这样就能减缓蠕虫传播速度了。


实现

这个想法听起来好像不可行:如果发表留言需要带上用户行为信息,那么 XSS 完全可以伪造一份行为数据,后端根本无法识别。

除非,用户在点击按钮时会产生一个「特殊数据」,让后端校验它。

但是,XSS 也可以直接调用按钮元素的 click 方法,这样效果和用户点击仍然一样。后端仍无法识别是「脚本点的」还是「用户点的」。

这么看来,我们只能保护好这个「按钮元素」,让它没法被 XSS 访问到。例如,把按钮放到一个 不同源的 iframe里,这样就和 XSS 所在的环境隔离了!

不过,这样还不够。假如 XSS 破解了这个「特殊数据」的生成规则,那么即可自己伪造一个,然后直接调用 HTTP 接口发表留言。所以,我们得找一个不可伪造的硬标识。

事实上,有个很简单的办法:我们干脆让 HTTP 请求也通过 iframe 发送。这样,后端通过 referer 即可检测请求是否为 iframe 发起的。毕竟,XSS 是无法伪造 referer 的!


演示

Demo: https://www.etherdream.com/FunnyScript/anti-xssworm/

注意:这个案例不是看能不能注入 XSS,而是看能不能通过当前页面的 JS 自动发留言!

另外,通过第三方服务器发表是不算的。这里为简单,省略了登录态;真实场合下,会话 Cookie 是 HttpOnly 的,无法被 JS 获取到,也就无法让第三方服务器代替发表。

细节:

  1. 使用者加载 safebutton.js,引入 SafeButton 类

  2. 使用者实例化 SafeButton 对象 A,创建出一个不同源的 iframe 作为按钮界面

  3. 用户点击 iframe 按钮后,内部变量 S 置为 true,同时将点击消息告知主页面(postMessage)

  4. 主页面收到消息后,让 A 产生 onclick 事件

  5. 使用者将 HTTP 请求数据,通过 A 的 send 方法扔给 iframe

  6. iframe 校验内部变量 S:若为 true,则将数据通过 AJAX 发送;否则放弃

  7. 服务器校验 referer:若为 iframe 的地址,则继续业务逻辑;否则放弃

  8. iframe 收到 AJAX 返回后,将结果扔给主页面

  9. A 产生 onreceive 事件,其中包含 HTTP 返回结果

其中 No.6 的步骤最为关键。正是这一步,使得未经用户点击,XSS 强制扔给 iframe 的消息变得无效!



缺陷

当然,这个方案阻挡不了点击劫持 —— XSS 可以把 iframe 元素放大至整个页面,并设置全透明。

这样用户只要在页面的任何位置点一下,iframe 的 S 状态就变成 true 了,于是就能绕过 No.6。


结尾

当然,安全防御有胜于无。并且该方案的改造成本也不是很大,后端只是增加一个 referer 判断而已;前端也只需改造个别按钮,例如发帖按钮,像点赞这种按钮就没必要保护了。


链接: https://fly63.com/article/detial/5241

15行CSS代码攻击会导致 iOS 系统重启或 Mac 冻结

Wire 的安全研究员 Sabri Haddouche 发现了一种新的攻击,只需访问包含某些 CSS 和 HTML 的网页,就会导致 iOS 重新启动或重新启动以及 macOS 冻结。 Windows 和 Linux 用户不受此错误的影响。

前端安全系列之如何防止 XSS 攻击?

前端是引发企业安全问题的高危据点,XSS 攻击是页面被注入了恶意的代码,本文我们会讲解 XSS ,主要包括:XSS 攻击的介绍,XSS 攻击的分类,XSS 攻击的预防和检测,XSS 攻击的总结,XSS 攻击案例

一种新型的Web缓存欺骗攻击技术

为了减少WEB响应时延并减小WEB服务器负担,现在WEB缓存技术已经用的非常普遍了,除了专门的CDN,负载均衡以及反向代理现在也会缓存一部分的网页内容。这里我要介绍一种WEB缓存欺骗攻击技术,这种攻击技术针对Paypal有成功的攻击案例。

WEB网站常见受攻击方式及解决办法

站脚本攻击(XSS,Cross-site scripting)是最常见和基本的攻击WEB网站的方法。攻击者在网页上发布包含攻击性代码的数据。当浏览者看到此网页时,特定的脚本就会以浏览者用 户的身份和权限来执行。

CSS注入

CSS仅仅只是一种用来表示样式的语言吗?当然不是!CSS就已被安全研究人员运用于渗透测试当中,以下行为有可能受到CSS注入攻击:从用户提供的URL中引入CSS文件;CSS代码中采用了用户的输入数据

网络攻击的表现形式有哪些?

对于网络攻击,应该很多人都知道是怎么一回事吧。简单来说,就是犯罪分子通过互联网网络对某家企业发起的恶意破坏,窃取数据等操作来影响该企业的正常运营。互联网技术没有那么先进的时候

CC防御过程中,WAF的主要特点有哪些?

一部分网站和游戏,以及金融的企业网站负责人员对于流量攻击应该属于耳熟能详。对此问题一直也是他们最头疼的。因此在解决DDoS攻击和CC攻击防御的过程中,运用了WAF指纹识别架构去做相对应的权限策略,以此避免误封正常的用户访问请求

DDOS攻击常见的类型

互联网”指的是全球性的信息系统,是能够相互交流,相互沟通,相互参与的互动平台。随着互联网的飞速发展,越来越多的网站应运而生,但各种问题也随之而来。其中最严重的莫过于网络安全问题,应该象每家每户的防火防盗问题一样

网站被攻击最常见的症状

小编我遇见了很多的网站客户反映说受到了DDoS攻击和CC攻击,被攻击对于开发运营维护人员,对此他们也表示很头疼。现阶段大多数网站使用的开发语言是PHP,JAVA,.net,数据库语言使用的是mysql,oracle等

HTTP慢速攻击

HTTP慢速攻击也叫slow http attack,是一种DoS攻击的方式。由于HTTP请求底层使用TCP网络连接进行会话,因此如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的时候采用慢速发HTTP请求

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!