如何发起防御和测试XSS攻击,我们用DVWA来学习(上)

Posted 柠檬班软件测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何发起防御和测试XSS攻击,我们用DVWA来学习(上)相关的知识,希望对你有一定的参考价值。


XSS 全称Cross Site Scripting 即“跨站脚本攻击”。 


从其中文释义我们能直观的知道,这是一种对网站的攻击方式。


其原理在于,使用一切可能手段,将可执行脚本(scripting)植入被攻击页面中去,从而实现对目标网站的攻击。 


本质上可以理解为‘让自己的代码在目标网站中运行’的一种技术。


一个系统对于XSS攻击的防御能力,是我们安全性测试的一个重要方面,也是我们软件测试团队在安全性测试领域内的一个重要度量。

 

本文我们希望就XSS测试方面进行一些探讨。

 

进入正题,本文的最终落脚点是我们怎么去测试一个系统对于XSS功能的防御能力,不过在落到我们最终的命题之前,我们要先来探讨XSS的原理。


所谓知其然还要知其所以然!


最常见的XSS攻击有以下三种表现形式:


存储型攻击


将脚本注入进一段发布内容里面,当系统其他用户访问到(看到)这段发布内容,脚本便已被运行并且达成其目的。


如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)


存储型XSS的本质在于:提交的XSS代码会存储在服务端(不管是数据库,内存还是文件系统等),下次请求目标页面是不用再提交XSS代码。


比如用户在论坛里发布一个帖子,这个帖子里包含XSS代码。


反射型攻击


发出请求时,XSS代码出现在URL中,作为输入提交到服务端,服务端解析后响应,在响应内容中出现这段XSS代码,最后浏览器执行。


这个过程就像一次反射,所以叫做反射型XSS。


反射型攻击的实现形式经常呈现以下图所示的方式:


如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)


黑客发现存在反射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攻击,我们用DVWA来学习(上)


从红标部分我们可以看到,他提供了非常显眼的xss攻击试验场地。

 

Bravo,我们马上撸起袖子来对他进行XSS攻击:


首先,去到DVWA  Security目录,将整个站点的安全级别调为‘LOW’,这样我们的攻击才会直观生效。


我们先来测试一个基本的反射型攻击:


去到XSS(Reflected)目录,可以看到这个在这个页面上我们可以输入一串字符,网页会将这串字符展示出来:


如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)


我们在这个输入框内输入以下脚本并提交:


<script>alert('xss');</script>


 是不是看到,这个脚本被执行了!直观的结果就是,一个弹窗被触发了:


如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)


这就是一次成功的XSS攻击我们的脚本代码在对方的网站环境中被运行了。


当然这个简单的XSS攻击充其量只是一个恶作剧级别的,还达不成恶性后果,我们后续会研究后果更坏的XSS攻击形式。

 

在此之前我们再来尝试存储式XSS攻击:


去到XSS(STORED)目录,可以看到这是一个留言板界面,我们可以在这个页面上进行留言发布。


如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)


我们在留言的内容中,插入一条脚本,看看会发生什么。


这次我们尝试稍微复杂一点的脚本:


<script>alert(document.cookie)</script>


我们希望弹窗展示出当前用户的cookie内容。


我们将这条脚本发布以后,可以看到如下现象:


如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)


每当这条发布的内容被访问到,当前用户的cookie信息就会被打印出来,我们接着去观察页面源代码,会发现:


如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)


我们刚才的脚本已经被写入到页面源码,成为页面的一部分了!

 

到此为止我们已经接触了XSS的原理,并用DVWA这个系统尝试了简单的XSS攻击,相信我们对于XSS攻击已经有了初步的认识。


在下一篇中我们会继续深入,使用XSS攻击实现盗取用户信息的罪恶目的,然后我们会学习XSS的防御方法以及怎么对网站防XSS能力进行测试!

 



-推荐阅读-

点击文字即可阅读全文


 




- END -


今天的分享就到这里了

看完本文有收获?请转发分享给更多人



柠檬班企业宣传片


关注「柠檬班软件测试


做高级软件测试工程师


「毛毛微信好友」


免费领取


软件测试公开课视频或工具


 







还记得今天的日期?今天星期几?


以上是关于如何发起防御和测试XSS攻击,我们用DVWA来学习(上)的主要内容,如果未能解决你的问题,请参考以下文章

从零学习安全测试,从XSS漏洞攻击和防御开始

如何正确防御xss攻击

安全性测试入门 :CSRF 跨站请求伪造攻击和防御

安全性测试入门:Command Injection命令行注入攻击和防御

网络安全Web安全渗透测试笔试题

DVWA之反射型XSS