DVWA篇之XSS存储型

Low级别

  • 当我们在表格中输入名字和内容就会存储到数据库,并在页面显示出来
  • 同样的我们输入一个名字,然后在内容中输入我们的payload语句,分析是否能攻击成功。


攻击成功。这时我们的语句被存储在数据库中。

  • 我们查看一下是否真的被存储在数据库中

    可以看到在第三行的记录就是我们的payload语句,没有被任何过滤,完完整整的存储在数据库中。
    因为是存储性的,当我们再次访问的时候肯定会直接出现弹框,这个可以刷新测试。
  • 接下来分析一下造成这个结果的原因,我们查看源代码。

    trim()函数,用于去除字符串左右两侧的空格
    stripslashes()函数,用于去除字符串中的反斜杠
    mysqli_real_escape_string()对sql语句中的特殊字符进行转义。
    从源码上看,此处,只是对输入的name,message做了防止sql注入的过滤,并没有对输入的字符串进行安全性过滤和处理。
    当字符串写入数据库的时候,如果存在特殊字符,也会被转义,但是在当我们从数据库中调出的时候,并不影响特殊字符的功能。

Medium级别

  • 在这个级别下我们还是用同样的方式测试一下结果。

    出现了弹框,但是弹出的是1,因为在数据库中我没有将low下存储的payload删除。但是可以看出,我们输入的内容变成了alert(2),<script>标签被过滤了。
  • 我们去数据库中查看一下我们将什么存储到了数据库

    可以看到第四行,明显过滤了<script>标签。
  • 查看一下源代码,分析过滤的过程。

    strip_tags()函数去除html标签
    htmlspecialchars()函数,将预定义字符转换成html实体
    str_replace()函数,转义函数,将指定的字符或字符串转换成别的字符,这里是将<script>转为空。缺点转义的时候区分大小写。

通过源码可以看出,对message的值进行了标签的过滤以及预定义符的转义。对name的值进行了转义。

  • 可能我们在message中很难实现攻击,但是我们可以尝试在name中进行攻击。因为在那里转义的时候只转义了小写,我们只需要将payload中的一个或多个字符大写即可成功攻击。

但是这时我们发现这里只能输入这几个字符,怎么办。

  • 审查元素,将maxlength改为100.
  • 这时我们再去输入payload,便可以弹框
  • 我们绕过了函数的过滤,再来查看一下数据库的存储。

    可以看到payload被存储到了name下。

High级别

  • 利用上面的两种级别的方法测试,发现都不会成功。我们查看源码分析。

    这个源码比中级别的多了一个过滤函数来过滤name的值,preg_replace()函数,进行正则表达式匹配防止大小写,多重输入字符绕过过滤函数。
  • 这个函数虽然不错,但是我们不用与低中级相似的payload,不就可以成功绕过这个函数了嘛!
    我们构造payload:
    <img src=1 omerror=alert(3)>
    测试我们的payload,如果name文本框不能输入全部,可以审查元素,修改maxlength的值
  • 成功进行弹框。我们再来看一下数据库中的存储数据

impossible级别

  • 直接看下源码吧,人家都说不可能的了,看看为什么不可能

    这个源码在high的基础上,给name的值加上了htmlspecialchars()函数进行转义,将预定义符号转换为html实体

原文地址:http://blog.51cto.com/12332766/2117639

时间: 2024-11-08 09:04:14

DVWA篇之XSS存储型的相关文章

DVWA篇六:存储型XSS

1      测试环境介绍 测试环境为OWASP环境中的DVWA模块 2      测试说明 XSS又叫CSS (CrossSite Script) ,跨站脚本攻击.它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的,比如获取用户的cookie,导航到恶意网站,携带木马等等.利用该漏洞,攻击者可以劫持已通过验证的用户的会话.劫持到已验证的会话后,攻击发起者拥有该授权用户的所有权限. 3      测试

DVWA系统之21 存储型XSS分析与利用

存储型跨站可以将XSS语句直接写入到数据库中,因而相比反射型跨站的利用价值要更大. 在DVWA中选择XSS stored,这里提供了一个类型留言本的页面. 我们首先查看low级别的代码,这里提供了$message和$name两个变量,分别用于接收用户在Message和Name框中所提交的数据.对这两个变量都通过mysql_real_escape_string()函数进行了过滤,但是这只能阻止SQL注入漏洞. 可以看出,在low级别下,Name和Message这两个文本框都存在跨站漏洞,但是由于D

DVWA篇之XSS反射型

1.什么是XSS XSS攻击全称跨站脚本攻击,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中. XSS攻击分成两类: (1).一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句.(2).另一类则是来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页.如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开. XS

【DVWA(五)】XXS存储型攻击

XSS存储型跨站攻击(Stored Cross Site Scripting) 前言: 相较于XSS反射型跨站攻击,存储型具有更严重的危害,如果在窃取信息的同时对网页没有任何变化,那受害者将很难发现. 如果我有写的不太明白的地方,可以先看看之前XSS反射型跨站攻击的随笔 low: 1.观察: 测试输入模式,有两个输入框,经测试,都有输入限制,这个限制用网页查看器很容易解决,我给改成了1000,其实不改也可以,就是在message里输入payload也可以的: 2.输入: alert测试 <scr

exp2:// 一次存储型XSS从易到难的挖掘过程

一日在某站点发现一个找茬活动,感觉是另类的src就参与了一下.就发生了这次有趣的XSS测试过程. 0×00 开始 (注意1)XSS不仅存在于页面上直观所在的位置,所有用户输入的信息都有可能通过不同形式返回到页面上,因此直接操作数据包来查找XSS显得更加有效. 回到该站点,在该站点一处生成app处存在一处忘记过滤. 发送的数据包如下: appName=TEST&icon=&loadimage=%2Ftemplate201309%2F29%2Floadimage%2F1a8aaba1-42bd

WordPress &lt; 4.1.2 存储型XSS漏洞

WordPress < 4.1.2 存储型XSS漏洞 0x00 原理 最近几天爆出来的,今天才看.网上的分析也有很多了估计,我也发一篇好了233333因为确实很经典,思路很不错.具体的细节看老外写的,请戳: https://cedricvb.be/post/wordpress-stored-xss-vulnerability-4-1-2 这次主要是Mysql中的UTF-8只支持3个byte,如果需要支持4个byte的编码,则需要使用utf8mb4.不开启strict code(默认为Off)的时

小白日记49:kali渗透测试之Web渗透-XSS(三)-存储型XSS、DOM型XSS、神器BEFF

存储型XSS与DOM型XSS [XSS原理] 存储型XSS 1.可长期存储于服务器端 2.每次用户访问都会被执行js脚本,攻击者只需侦听指定端口 #攻击利用方法大体等于反射型xss利用 ##多出现在留言板等位置 *推荐使用burpsuite a.观察返回结果,是否原封不动地返回输入数据?是否有其他标签 js代码通过留言板存储在服务器中,所以每次点击留言板链接,都会弹出xss弹窗 b.测试加载攻击者控制的服务器中的js文件 #启动apache2[默认侦听80端口] a.js [盗取客户端cooki

DocCms存储型XSS+后台任意文件下载上传+目录删除+sql执行(有条件可getshell)

下载链接 https://share.weiyun.com/46ebceb4fe91da144ad2661522a941e1 留言处存储型XSS 漏洞在content/guestbook/index.php function create() { echo 123; global $db,$request; if ($_SESSION['verifycode'] != $request['checkcode']) { echo '<script>alert("请正确填写验证码!&qu

存储型xss调研

概念 存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行. 常见的xss攻击方法 1. 绕过XSS-Filter,利用<>标签注入Html/JavaScript代码: 2. 利用HTML标签的属性值进行xss攻击.例如:<img src="javascript:alert('xss')"/>:(当然并不是所有的Web浏览器都支持Javascr