在不少人看来,XSS漏洞造成的危害程度并不大,或者说,一个XSS漏洞的可利用价值并不高。但很多时候看起来一个不起眼的XSS漏洞,在高人的手里,就可能做出一番大动作。
简单介绍下XSS漏洞的分类呗~
XSS 常年位居Web top10 漏洞之列。一般传统的分类, 有反射型XSS 、持久型XSS(包括存储、 DOM等类别)。根据跨站的成因或者特征进行分类,有Flash跨站、mXSS跨站、UBB跨站、宽字节跨站等等。当然这些分类有很多重叠的部分。
国外比较精确的将跨站分类为:服务端跨站(Server XSS)、客户端跨站(Client XSS),然后再细分反射型或者存储型等。这种分类是根据漏洞形成点的位置来看的。
mXSS跨站、UBB跨站这类能详细介绍下么?
mXSS 主要是在DOM操作的过程中浏览器渲染造成的畸变引起的。比如,将数据赋值到a.innerHTML后,再取出重新赋值到b.innerHTML的过程中产生畸变。UBB主 要是论坛里用的比较多,如果存在XSS的话,可以类似这样利用:[img]javascript:alert();[/ img],在转成html代码的时候造成跨站。
在这些分类中,危害和影响最大的是哪个呢?
一般来说存储型跨站危害相对较严重,攻击面也较广。此外,反射型的危害也不小。 self-xss配合一些csrf漏洞,也可以达到利用效果。总体来说,企业反射型跨站出现的 多一点。黑客可以钓鱼,或注入木马、广告链接。有些在主站注入非法网站的链接, 对公司声誉还是有影响的。很多广告联盟等也会利用XSS跟踪用户行为,窃取用户数据等,利用跨站请求一些JSONP接口获取用户数据。
分享下XSS漏洞的防御措施吧!
我们目前在做一个框架过滤,Java平台在做filter,通过filter做输入拦截。要全部开放使用,可能还需要再观察下。公司到一定量级后统一框架还是很难的,在现有基础上如何找到一个权衡点非常重要。
是否可以分享下针对检测层面和主动检查层面的实践经验呢?
一般反射型跨站比较容易检测。像DOM型跨站 ,我们现在有专门策略去扫描,会模拟webkit内核渲染网页并解析JS,根据执行结果来判断。相对来说误报率还是比较低的。
业内是否有检测XSS漏洞好用的工具?
kali里面有集成一些比较知名的检测工具,例如XSSER等。这种检测一般是上线前需要进行安全评审的规范环节之一。
如何快速精准的发现XSS,降低垃圾数据呢?
我们在检测XSS时都是用不同的语句去尝试,如果尝试的较多就会造成库中存储很多“脏”数据,对于测试环境还好,线上环境可能业务部门经常会报警了。针对这种情况,一般我们会有专门的扫描账号去进行检测,避免对正常业务的干扰。另外,扫描器有时候还会删除数据,针对这个问题,可以做个高危URL配置项来避免。
扫描器漏报误报的问题,有什么方法解决吗?
可以把扫描规则策略做成插件式,还可以根据场景优化,缓解误漏报问题。
分享个思路:
是否可以针对检测范围做个基线性的安全检查,对结果做一次判定,误 报的加flag,后续检测中如果一直为误报可加入黑名单。对于SRC来说也是一个好的思路收集,我们经常会把外部爆出来但扫描器没有发现的XSS构造语句放到扫描器中。