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来学习(上)的更多相关文章

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

    上一篇我们了解了XSS攻击的原理,并且利用DVWA尝试了简单的XSS攻击,这一篇我们来实现更复杂的攻击,然后探讨防御机制和测试理念. 前面我们通过脚本注入让网页弹出了用户cookie信息,可以光弹窗是 ...

  2. web渗透—xss攻击如何防御

    1.基于特征的防御 XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同.这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS ...

  3. XSS攻击(出现的原因、预防措施......)

    验证XSS攻击重点不是去查找可输入哪些内容会出现什么样的bug就是测试XSS攻击,重点是了解它出现的原理,为什么会出现XSS攻击,导致一些问题出现?如何防御与解决XSS攻击?以下我将简单介绍以上提出的 ...

  4. XSS攻击(出现的原因、预防措施)

    XSS攻击(出现的原因.预防措施......)   验证XSS攻击重点不是去查找可输入哪些内容会出现什么样的bug就是测试XSS攻击,重点是了解它出现的原理,为什么会出现XSS攻击,导致一些问题出现? ...

  5. 什么XSS攻击?PHP防止XSS攻击函数

    什么XSS攻击?PHP防止XSS攻击函数 发布时间: 2013-05-14 浏览次数:22325 分类: PHP教程 XSS 全称为 Cross Site Scripting,用户在表单中有意或无意输 ...

  6. DVWA 黑客攻防演练(十二) DOM型 XSS 攻击 DOM Based Cross Site Scripting

    反射型攻击那篇提及到,如何是"数据是否保存在服务器端"来区分,DOM 型 XSS 攻击应该算是 反射型XSS 攻击. DOM 型攻击的特殊之处在于它是利用 JS 的 documen ...

  7. XSS攻击及防御(转)

    add by zhj: 略有修改.另外还有一篇文章值得参考,使用 PHP 构建的 Web 应用如何避免 XSS 攻击,总得来说防御XSS的方法是客户端和服务端都 要对输入做检查,如果只有客户端做检查, ...

  8. Web 安全之 XSS 攻击与防御

    前言 黑客,相信大家对这一名词并不陌生,黑客们往往会利用 Web 应用程序的漏洞来攻击咱们的系统.开放式 Web 应用程序安全项目(OWASP, Open Web Application Securi ...

  9. 前端XSS攻击和防御

    xss跨站脚本攻击(Cross Site Scripting),是一种经常出现在web应用中的计算机安全漏洞,指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会 ...

随机推荐

  1. java简单框架设计

    设计框架包可以作为一个工具给大家用,需要有完全不同设计思路给出来,不同于我们去做一个web服务.网站. 或者一个业务微服务,需要从原来使用视角转换成一个构建者视角. 框架或者工具,更多是框架来管理或者 ...

  2. 网络克隆 主要是 PXE网卡启动 随笔

  3. 我理解的websocket

    短轮询:客户端发起请求,服务器无论有无消息都返回信息,结束http连接.然后继续发起请求. 长轮询:客户端发起请求,建立连接,直到服务端返回消息response,结束http连接.然后继续发起请求,重 ...

  4. codeforces 13 D

    给你500个红点和蓝点,让你找多少点红点构成的三角形里没有蓝点. 巧妙啊!我们考虑一个很远位置的点,不妨设这个为O,然后n^2枚举红点,考虑Oij里面蓝点的个数, 然后 对于 ijk这个三角形,我们可 ...

  5. VUE 出现Access to XMLHttpRequest at 'http://192.168.88.228/login/Login?phone=19939306484&password=111' from origin 'http://localhost:8080' has been blocked by CORS policy: The value of the 'Access-Contr

    报错如上图!!!!    解决办法首先打开 config -> index.js ,粘贴 如下图代码,'https://www.baidu.com'换成要访问的的api域名,注意只要域名就够了, ...

  6. nmon监控分析

    一.下载软件安装 wget http://sourceforge.net/projects/nmon/files/nmon_linux_14i.tar.gz tar xf nmon_linux_14i ...

  7. javascript基础(Array)

    1,join() Array.join(),不改变原数组,将数组中所有元素转换为字符串并连接在一起,返回最后生成的字符串 let a=[1,2,3]; a.join(); // =>" ...

  8. node koa2 玩起来都是中间件啊

    玩的我想吐 !!! 整理下常用的中间件吧! 先列在这有空把这些中间件的使用技巧也写出来分享一下koa-router 路由中间件koa-bodyparser   POST数据处理的中间件koa-stri ...

  9. 轮播效果/cursor

    cursor属性:改变鼠标中的属性 例如: cursor:pointer(鼠标移动上去变小手) <!doctype html> <html> <head> < ...

  10. mysql数据库连接异常问题(总结)

    mysql数据库连接异常问题(总结) 1.1 前言   最近项目由1个数据源增加至了3个数据源(连接池使用C3P0),结果各种奇葩的数据库连接问题接踵而至,为防止将来再次遇到同样的问题不犯同样错误,现 ...