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. Unity 图形处理(切分与拉伸)

    素材的导入设置 1.导入的图片要设置为 Sprite 才能作为UI使用 2.如果需要进行切分,Sprite Mode 选择 Multiple 进行切分和拉伸设置 1.点击进入精灵编辑视图 2.点击按钮 ...

  2. WinCC OA基本概念

    WinCC OA 是一个模块化软件架构的系统.所需的功能由不同任务创建的特定单元处理.在WinCC OA中,这些单元称为管理器 - 管理器是软件自身的一些独立的处理过程. 图:WinCC OA系统由功 ...

  3. Linux虚拟机搭建本地yum源

    Yum本地源的配置 本教程是在虚拟机里安装Red Hat Enterprise Linux 7 ,以其为例使用iso文件进行Yum本地源的配置.所使用的软件如下: (1)虚拟机:Vmware work ...

  4. Python3系列__01Python安装

    Python和Java一样是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.所以你在一个平台上面上写的代码在另一个平台仍能正常运行. 要学习Python编程,你需要做的就 ...

  5. Navicat Premium 12 (64位)实现连接Oracle 11 (64位)

    查看Oracle的版本 select * from v$version 我这里是11.2的64位的版本,然后从官网下载相应版本的客户端. 下载相应版本的客户端 官网地址:https://www.ora ...

  6. emoji 表情: MySQL如何支持 emoji 表情

    https://www.cnblogs.com/jentary/p/6655471.html 修改数据库字符集: ALTER DATABASE database_name CHARACTER SET ...

  7. 180815 Python自学成才001

    1.为什么学习Python? Python:脚本语言,易入门,可移植. Python适用范围:web开发.自动化测试工具编写. 适用岗位:运维开发(运维).自动化测试(软件测试).Python开发(软 ...

  8. ajaj简介

    1. 什么是ajax? ajax的全称 Asynchronous(异步) JavaScript and XML. ajax是一种用于创建快速动态网页的技术. 主要用于前后台的交互,在前后台的交互中还有 ...

  9. 服务器黑屏,只出现cmd窗口的解决办法

    先上图,如图所示,正常启动或者进入安全模式都出现此现象,尝试了各种办法,比如: 1.打开此页面后,重新开一台可以远程的电脑连接,此方法不通: 2.进任务管理器无explorer.exe进程,且创建此进 ...

  10. 微信小程序开发---自定义组件

    开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用:也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护.自定义组件在使用时与基础组件非常相似. 创建自定义组件 类似于页面, ...