如何发起防御和测试XSS攻击,我们用DVWA来学习(上)
Posted 柠檬班软件测试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何发起防御和测试XSS攻击,我们用DVWA来学习(上)相关的知识,希望对你有一定的参考价值。
XSS 全称Cross Site Scripting 即“跨站脚本攻击”。
从其中文释义我们能直观的知道,这是一种对网站的攻击方式。
其原理在于,使用一切可能手段,将可执行脚本(scripting)植入被攻击页面中去,从而实现对目标网站的攻击。
本质上可以理解为‘让自己的代码在目标网站中运行’的一种技术。
一个系统对于XSS攻击的防御能力,是我们安全性测试的一个重要方面,也是我们软件测试团队在安全性测试领域内的一个重要度量。
本文我们希望就XSS测试方面进行一些探讨。
进入正题,本文的最终落脚点是我们怎么去测试一个系统对于XSS功能的防御能力,不过在落到我们最终的命题之前,我们要先来探讨XSS的原理。
所谓知其然还要知其所以然!
最常见的XSS攻击有以下三种表现形式:
一
存储型攻击
将脚本注入进一段发布内容里面,当系统其他用户访问到(看到)这段发布内容,脚本便已被运行并且达成其目的。
存储型XSS的本质在于:提交的XSS代码会存储在服务端(不管是数据库,内存还是文件系统等),下次请求目标页面是不用再提交XSS代码。
比如用户在论坛里发布一个帖子,这个帖子里包含XSS代码。
二
反射型攻击
发出请求时,XSS代码出现在URL中,作为输入提交到服务端,服务端解析后响应,在响应内容中出现这段XSS代码,最后浏览器执行。
这个过程就像一次反射,所以叫做反射型XSS。
反射型攻击的实现形式经常呈现以下图所示的方式:
黑客→发现存在反射XSS的URL→根据输出点的环境构造XSS代码→进行编码、缩短→发送给受害人→受害打开URL后,执行XSS代码→完成黑客想要的功能(获取cookies、url、浏览器信息、IP等等)。
三
DOM型
他是一种web server不参与,仅仅涉及到浏览器的XSS。
比如根据用户的输入来动态构造一个DOM节点,如果没有对用户的输入进行过滤,那么也就导致XSS攻击的产生。
光看理论用处不大,接下来我们自己来尝试实现XSS攻击。
实现一个XSS攻击的前提是,我们要有一个可被攻击的对象。
当然不推荐去攻击一个真实的系统,所以我们推荐大家搭建一个自己的网站去让我们自己折腾。
DVWA是一个很好的选择。
DVWA-Damn voulnerable web application,是UK的一家安全性研究机构发布的一套网站系统,专门用来展示网站安全性问题和防御机制。
对于我们学习web安全性相关知识是一个很好的工具。
这套web项目可以在http://www.dvwa.co.uk/官网由github下载。
下载完成以后,将这套网站部署在本地,我们就可以开始实现XSS攻击,从而掌握他的防御理念了。
要部署这套网站,可以考虑使用xampp这样的便捷建站集成软件包,xampp很方便使用,我们用他来实现DVWA所需要的中间件和数据库服务。
将DVWA搭建在其htdocs目录下,就可以将网站运行起来。
关于xampp的使用网上有诸多教程,这里就不再复述了。
DVWA运行起来登录以后,我们会看到如下的界面:
从红标部分我们可以看到,他提供了非常显眼的xss攻击试验场地。
Bravo,我们马上撸起袖子来对他进行XSS攻击:
首先,去到DVWA Security目录,将整个站点的安全级别调为‘LOW’,这样我们的攻击才会直观生效。
我们先来测试一个基本的反射型攻击:
去到XSS(Reflected)目录,可以看到这个在这个页面上我们可以输入一串字符,网页会将这串字符展示出来:
我们在这个输入框内输入以下脚本并提交:
<script>alert('xss');</script>
是不是看到,这个脚本被执行了!直观的结果就是,一个弹窗被触发了:
这就是一次成功的XSS攻击→我们的脚本代码在对方的网站环境中被运行了。
当然这个简单的XSS攻击充其量只是一个恶作剧级别的,还达不成恶性后果,我们后续会研究后果更坏的XSS攻击形式。
在此之前我们再来尝试存储式XSS攻击:
去到XSS(STORED)目录,可以看到这是一个留言板界面,我们可以在这个页面上进行留言发布。
我们在留言的内容中,插入一条脚本,看看会发生什么。
这次我们尝试稍微复杂一点的脚本:
<script>alert(document.cookie)</script>
我们希望弹窗展示出当前用户的cookie内容。
我们将这条脚本发布以后,可以看到如下现象:
每当这条发布的内容被访问到,当前用户的cookie信息就会被打印出来,我们接着去观察页面源代码,会发现:
我们刚才的脚本已经被写入到页面源码,成为页面的一部分了!
到此为止我们已经接触了XSS的原理,并用DVWA这个系统尝试了简单的XSS攻击,相信我们对于XSS攻击已经有了初步的认识。
在下一篇中我们会继续深入,使用XSS攻击实现盗取用户信息的罪恶目的,然后我们会学习XSS的防御方法以及怎么对网站防XSS能力进行测试!
-推荐阅读-
点击文字即可阅读全文
- END -
今天的分享就到这里了
看完本文有收获?请转发分享给更多人
柠檬班企业宣传片
关注「柠檬班软件测试」
做高级软件测试工程师
▼
加「毛毛微信好友」
免费领取
软件测试公开课视频或工具
▼
还记得今天的日期?今天星期几?
以上是关于如何发起防御和测试XSS攻击,我们用DVWA来学习(上)的主要内容,如果未能解决你的问题,请参考以下文章