如何发起、防御和测试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型XSS攻击。他是一种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能力进行测试!
如何发起、防御和测试XSS攻击,我们用DVWA来学习(上)的更多相关文章
- 如何发起、防御和测试XSS攻击,我们用DVWA来学习(下)
上一篇我们了解了XSS攻击的原理,并且利用DVWA尝试了简单的XSS攻击,这一篇我们来实现更复杂的攻击,然后探讨防御机制和测试理念. 前面我们通过脚本注入让网页弹出了用户cookie信息,可以光弹窗是 ...
- web渗透—xss攻击如何防御
1.基于特征的防御 XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同.这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS ...
- XSS攻击(出现的原因、预防措施......)
验证XSS攻击重点不是去查找可输入哪些内容会出现什么样的bug就是测试XSS攻击,重点是了解它出现的原理,为什么会出现XSS攻击,导致一些问题出现?如何防御与解决XSS攻击?以下我将简单介绍以上提出的 ...
- XSS攻击(出现的原因、预防措施)
XSS攻击(出现的原因.预防措施......) 验证XSS攻击重点不是去查找可输入哪些内容会出现什么样的bug就是测试XSS攻击,重点是了解它出现的原理,为什么会出现XSS攻击,导致一些问题出现? ...
- 什么XSS攻击?PHP防止XSS攻击函数
什么XSS攻击?PHP防止XSS攻击函数 发布时间: 2013-05-14 浏览次数:22325 分类: PHP教程 XSS 全称为 Cross Site Scripting,用户在表单中有意或无意输 ...
- DVWA 黑客攻防演练(十二) DOM型 XSS 攻击 DOM Based Cross Site Scripting
反射型攻击那篇提及到,如何是"数据是否保存在服务器端"来区分,DOM 型 XSS 攻击应该算是 反射型XSS 攻击. DOM 型攻击的特殊之处在于它是利用 JS 的 documen ...
- XSS攻击及防御(转)
add by zhj: 略有修改.另外还有一篇文章值得参考,使用 PHP 构建的 Web 应用如何避免 XSS 攻击,总得来说防御XSS的方法是客户端和服务端都 要对输入做检查,如果只有客户端做检查, ...
- Web 安全之 XSS 攻击与防御
前言 黑客,相信大家对这一名词并不陌生,黑客们往往会利用 Web 应用程序的漏洞来攻击咱们的系统.开放式 Web 应用程序安全项目(OWASP, Open Web Application Securi ...
- 前端XSS攻击和防御
xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会 ...
随机推荐
- json转化技巧
如果用户是一级下拉菜单,二级联动,动态加载内容到二级菜单,并在下方内容处,随着用户选择的内容动态加载相应内容. 实现的方法其实很简单 select部分:一级菜单选择内容,ajax动态加载,因为内容固定 ...
- tensorflow 使用 4 非线性回归
# 输入一个 x 会计算出 y 值 y 是预测值,如果与 真的 y 值(y_data)接近就成功了 import tensorflow as tf import numpy as np # py 的画 ...
- Ubuntu全盘备份与恢复,亲自总结,实测可靠
https://blog.csdn.net/sinat_27554409/article/details/78227496 Ubuntu全盘备份与恢复,亲自总结,实测可靠 初学者在使用Ubuntu这类 ...
- 用万能马甲免费看VIP电影
什么是:万能马甲? 它浏览器的一个扩展程序插件,安装后能看一些热门网址的VIP特权,免费观看付费电影等. 使用过程: 1. 访问网址:http://www.wndd123.com/ 点击免费看电影时提 ...
- Java_重载与重写
在java中,重载与重写都是多态的体现.重载(Overload)体现的是编译时多态,而重写(Override)体现了运行时多态. 重载(Overload): 定义:在一个类中,同名的方法如果有不同的参 ...
- .htaccess 文件 访问二级域名 对应的 指定文件夹
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 绑定m.xxx.cc 到子目录m RewriteCond %{HTTP_ ...
- MyEclipse最新版-版本更新说明及下载 - MyEclipse官方中文网
http://www.myeclipsecn.com/learningcenter/myeclipse-update/ [重要更新]MyEclipse 2015正式版发布 [重要更新]MyEclips ...
- 【安富莱】【RL-TCPnet网络教程】第8章 RL-TCPnet网络协议栈移植(RTX)
第8章 RL-TCPnet网络协议栈移植(RTX) 本章教程为大家讲解RL-TCPnet网络协议栈的RTX操作系统移植方式,学习了第6章讲解的底层驱动接口函数之后,移植就比较容易了,主要 ...
- App功能测试
App功能测试 1. 运行 1)App安装完成后的试运行,可正常打开软件. 2)App打开测试,是否有加载状态进度提示. 3)App页面间的切换是否流畅,逻辑是否正确. 4)注册 同表单编辑页面 用 ...
- Hadoop 数据去重
数据去重这个实例主要是为了读者掌握并利用并行化思想对数据进行有意义的筛选.统计大数据集上的数据种类个数.从网站日志中计算访问等这些看似庞杂的任务都会涉及数据去重.下面就进入这个实例的MapReduce ...