XSS防御指北

昨天咱们黑伞攻防实验室去某公司做安全项目,在内网中预发布环境上发现了个存储型XSS漏洞,于是咱们老大灵机一动:“台风,回去写个面向小白的XSS防御方法!”

XSS攻击,对于各位黑客大佬应该算是熟悉的不能再熟悉了,但是为了在座的各位吃瓜群众,小编我还是先简单的在此介绍下。XSS攻击全称为跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。XSS攻击属于“注入”攻击的一种,黑客通过某种方式吧自己所构造的恶意脚本“嵌入”到了网页的源代码中,从而造成了XSS攻击。最开始,这种攻击方式是跨域的,所以称呼他为“跨站脚本”攻击,但是如今JavaScript的强大功能和网站前端的复杂化,该类型攻击是否跨站已经不重要了,而XSS这个名字还是保留下来了。OWASP TOP10曾经多次吧XSS威胁列在榜首,并且XSS也是各位吃瓜群众最容易遭受到的面向客户端的攻击之一,这就是为什么黑客们最熟悉他的原因。

在说明原理之前,小编我先给各位观众老爷们演示演示XSS攻击是什么样的。(实验平台是一个叫做DVWA的靶机,上面有各种各样的漏洞方便各位学习网络安全技术,还请在座的各位不要随意在网上尝试以下方法,在未经允许的情况下尝试攻击行为是违法的!)比方说一个网页上有个例如留言板的输入框,我在输入框内输入以下语句:<script>alert(/xss/)</script>,点击发送结果如下:

这类型的语句就是恶意语句,上面的意思就是输入的这句话被浏览器当做代码运行了,代表该网站存在存储型XSS漏洞,可以被黑客进一步的利用。光是弹个框还不够刺激?小编在给来两个经典案例给各位吃瓜群众助助兴,也好让各位更加“深刻”地感受下XSS攻击是多么的可怕,给在座的各位提个醒,也希望大家能够更加重视网络安全。2007年12月,百度空间的用户突然互相之间开始转发垃圾短消息,后来百度工程师紧急修复了这个漏洞。

(上图来自白帽子讲web安全)百度空间的XSS蠕虫公告

2011年6月28日,新浪微博出现了一次比较大的XSS攻击事件。大量用户自动发送微博和私信,并自动关注一位名为hellosamy的用户;20:14,开始有大量带V的认证用户中招转发蠕虫;20:30,2kt.cn中的病毒页面无法访问;21:02,新浪漏洞修补完毕。(这两起事件都是XSS蠕虫攻击,均发生在国内,而且发生在两个非常大的平台上,影响范围非常广,有兴趣的观众老爷可以百度一下了解更多信息)。小编我介绍完了两起XSS攻击,可能有的观众老爷就会说了:“受害者也就转转垃圾信息啊,实际上好像并没有收到多大的破坏啊。”这就是所谓的外行看热闹,内行看门道。在发生XSS蠕虫攻击后,两大平台后面的各位工程师大佬们可谓紧张万分,第一时间修复了这种漏洞,因为这种漏洞如果被更厉害的黑客所利用的话,别说窃取各位用户的信息了,甚至能造DDOS攻击(不明白DDOS攻击的朋友们,可以关注黑伞攻防实验室公众号,了解更多黑客知识),或是爆发大范围的网络病毒。

XSS除了进行蠕虫攻击外,还可以盗取用户cookie、进行钓鱼攻击、构造get或post请求读取用户电子邮箱里的邮件、识别用户浏览器版本、识别用户安装的软件、发现用户曾经浏览过的网站,获取用户的IP地址等。观众老爷们害怕了吗?小编我要在此大喊一声:“不要慌!”毕竟咱们到现在为止还没遭受过这么可怕的攻击嘛!虽说该漏洞可能造成如此可怕的后果,但是触发条件也是很苛刻的。2017版的OWASP TOP10中只把XSS列在了TOP7,主要原因是现如今各大网站和浏览器越来越注重网络安全,安全措施越来越严格,XSS也来越难利用了。

虽然2017版OWASP TOP10吧XSS排在TOP7,IT行业也越来越注重安全性,但是他还是目前最容易遭受的攻击之一。XSS漏洞分为三种:反射型XSS、存储型XSS、DOM型XSS。反射型XSS:也叫“非持久型XSS”,只是简单地吧用户输入的数据“反射”给浏览器,黑客往往需要诱骗用户“点击”一个恶意链接才能攻击成功。存储型XSS:也叫“持久型XSS”,比如:黑客写下一篇包含合一JS代码的博客文章,文章发表后所有访问该博客文章的用户,都会在他们的浏览器中执行这段恶意的JS代码。黑客是吧恶意的脚本保存到服务器端。DOM型XSS:客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

XSS的防御(划重点)

我们先说下存储型XSS的防御,之所以先说它还是因为它的危害性比较大,像上述的XSS蠕虫攻击和小编在DVWA靶机上演示的弹窗都是利用的存储型XSS漏洞。存储型XSS都是发生在服务器上,所以就算用户的安全意识再高,如果信任的网站服务商遭受到了这个攻击用户一样还是会中招。因此我们的防御方案主要还是针对提供服务的网站来说。我们黑伞实验室在做安全项目的时候,发现的也是存储型XSS漏洞。对于安全人员来说发现一个严重漏洞是一件很兴奋的事情,就和大家去医院里做体检时发现了一个潜伏的病灶一样,是可以根治的。不过真要较真起来,领导可能就要拉个程序员去祭天了。这种漏洞的根本原因还是因为开发的时候没有按照安全框架来做,是开发人员的安全意识和开发能力的不足,在小网站上出现的可能性还是较大的。既然知道了根本原因,那么就好修复了吧?其实也未必,既然是代码出了毛病那么得修改代码啊,一是周期可能会比较长,二是可能会造成业务的中断,目前大部分公司还是选择了上安全产品(比如WEB应用防火墙,也就是WAF),通过过滤恶意语句的方法来保护网站而一直拖延修复代码,听我们老大说:“去掉WAF,80%的网站都容易干!”这就成了一种矛与盾的问题,到底是黑客的“矛”锋利还是安全厂商的“盾”坚固?这种不确定因素也是一个不安全因素。所以小编在这里建议各个网站发现问题后第一时间先建立一个安全的“盾”来做过渡,趁机来修复代码上的问题,不然安全隐患始终存在。

说完了存储型XSS的防御,我们在说说反射型XSS的防御。比起存储型,反射型就是黑客构造的恶意脚本并不能上传到服务器上,所以对于咱们用户来说防御这种漏洞就要靠自己了。黑客一般的利用方式就是在一个链接,也就是URL里,写上恶意代码发给用户,通常是用于盗取用户的cookie、利用XSS钓鱼,吃瓜老爷可以理解为盗号。其实现在的浏览器,比如Firefox火狐、Chrome谷歌等,都能提供一定程度的安全方案,不过还是道高一尺魔高一丈,在客户端做的验证是很容易绕过的。我们用户还是要小心不要点击陌生的链接。网站也可以通过设置httponly,让浏览器将禁止页面的JavaScript访问带有httponly属性的cookie,不过httponly并非是防御XSS,而是防御黑客利用XSS来盗取用户的cookie。

比起存储型和反射型的XSS,DOM型的就比较特殊了。与反射型XSS、存储型XSS的区别就在于XSS代码并不需要服务器解析响应的直接参与,触发XSS靠的是浏览器端的DOM解析。说白了,还是写代码的问题,防御也是在写代码的时候尽量少使用危险的HTML标签,在输入点过滤敏感关键字。

这篇文章只是简单的介绍了下什么是XSS攻击与它的防御方法,小编推荐各位对网络安全有兴趣的读者们去读读《白帽子讲web安全》和《OWASP TOP10》,里面除了XSS,还有其他的常见漏洞原理以及它们的防御方案,非常适合想学网络安全的初学者阅读学习。

本文分享自微信公众号 - 黑伞攻防实验室(hack_umbrella)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HTTP headers

    HTTP标头使客户端和服务器可以通过HTTP请求或响应传递其他信息。HTTP标头由不区分大小写的名称,后跟冒号(:)和值组成。 值之前的空格将被忽略。

    用户2202688
  • 像追女孩一样去渗透之信息收集

    在IT行业摸索了很多年终于找到了一生所爱(信息安全),为了这份爱能传递下去,我将以这份脱单攻略来讲述我是如何get挚爱shell!希望大家都能get到女神的s...

    用户2202688
  • Cobalt Strike 扩展模块开发(三)终极监听器

    Erebus-CobaltStrike后渗透测试插件帮你拿到妹子shell还能搞定丈母娘

    用户2202688
  • XSS基础(新手篇)

    XSS全称跨站脚本攻击,用户浏览网页时,嵌入的Script代码被执行,从而达到攻击用户的目的,常见漏洞页面,网站搜索页面,留言板。

    网e渗透安全部
  • CTF实战9 XSS跨站脚本漏洞

    该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

    用户1631416
  • 软件安全性测试(连载3)

    XSS(Cross SiteScripting),由于与层叠样式表(CascadingStyle Sheets,CSS)的缩写混淆。因此一般缩写为XSS。XSS...

    小老鼠
  • 从零开始学web安全(1)

    一直对web安全很感兴趣,却一直只是略懂一点。决定从现在开始学起web安全的知识,更新起web安全系列的文章。文章内容为作者自己边学边写的,不对之处多谢各位大大...

    IMWeb前端团队
  • 【XSS漏洞】XSS漏洞相关总结v1.0

    通常指攻击者通过“HTML注入”篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击手段 。

    一名白帽的成长史
  • web安全之XSS攻击

    大象无痕
  • 渗透实例 | 记录一次XSS渗透过程

    没什么技巧,见到框就X,功夫不负有心人,在目标网站编辑收货地址处发现了存在XSS的地方,没想到这种大公司还会存在XSS。

    TeamsSix

扫码关注云+社区

领取腾讯云代金券