前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XSS防御指北

XSS防御指北

作者头像
黑伞安全
发布2019-10-16 11:52:54
9590
发布2019-10-16 11:52:54
举报
文章被收录于专栏:黑伞安全黑伞安全

昨天咱们黑伞攻防实验室去某公司做安全项目,在内网中预发布环境上发现了个存储型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,还有其他的常见漏洞原理以及它们的防御方案,非常适合想学网络安全的初学者阅读学习。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 黑伞攻防实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 昨天咱们黑伞攻防实验室去某公司做安全项目,在内网中预发布环境上发现了个存储型XSS漏洞,于是咱们老大灵机一动:“台风,回去写个面向小白的XSS防御方法!”
    • XSS的防御(划重点)
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档