• DVWA--XSS(Reflected)、XSS(Stored)


    XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强调的是,XSS不仅仅限于JavaScript,还包括flash等其它脚本语言。根据恶意代码是否存储在服务器中,XSS可以分为存储型的XSS与反射型的XSS。

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

    XSS(Reflected)(反射型跨站脚本)

    Low

     代码直接引用了name参数,并没有任何的过滤与检查,存在明显的XSS漏洞。

    192.168.27.156/dvwa/vulnerabilities/xss_r/?name=<script>alert(/xss/)</script>

    成功弹出框

     

     Medium

    服务器端核心代码

     这里对输入进行了过滤,使用str_replace函数将输入中的<script>删除,这种防护机制是可以被轻松绕过的。

    方法一:双写绕过

    输入<sc<script>ript>alert(/xss/)</script>,成功弹框:

    http://192.168.27.156/dvwa/vulnerabilities/xss_r/?name=%3Csc%3Cscript%3Eript%3Ealert%28/xss/%29%3C/script%3E

     方法二:大小写混淆绕过

    输入<ScRipt>alert(/xss/)</script>,成功弹框

    http://192.168.27.156/dvwa/vulnerabilities/xss_r/?name=%3CscrIPT%3Ealert%28/xss/%29%3C/scRiPt%3E

     High

     preg_replace()函数用于正则表达式的搜索和替换,这使得双写绕过、大小写混淆绕过不再有效。

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

    输入<img src=1 onerror=alert(/xss/)>,成功弹框:

     http://192.168.27.156/dvwa/vulnerabilities/xss_r/?name=%3Cimg%20src=1%20onerror=alert%28/xss/%29%3E

    XSSStored)(存储型跨站脚本)

     Low

      trim(string,charlist)

    函数移除字符串两侧的空白字符或其他预定义字符,预定义字符包括、 、 、x0B、 以及空格,可选参数charlist支持添加额外需要删除的字符

    可以看到,对输入并没有做XSS方面的过滤与检查,且存储在数据库中,因此这里存在明显的存储型XSS漏洞

    message一栏输入<script>alert(/xss/)</script>,成功弹框:

     

     name一栏前端有字数限制,抓包改为<script>alert(/name/)</script>:

     

     Medium

     strip_tags() 函数剥去字符串中的HTML、XML以及PHP的标签,但允许使用<b>标签。

    addslashes() 函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。

    可以看到,由于对message参数使用了htmlspecialchars函数进行编码,因此无法再通过message参数注入XSS代码,但是对于name参数,只是简单过滤了<script>字符串,仍然存在存储型的XSS。

    漏洞利用

    方法一:双写绕过

    抓包改name参数为<sc<script>ript>alert(/xss/)</script>:

     

     

    方法二:大小写混淆绕过

    抓包改name参数为<Script>alert(/xss/)</script>:

     

    High

    可以看到,这里使用正则表达式过滤了<script>标签,但是却忽略了img、iframe等其它危险的标签,因此name参数依旧存在存储型XSS。

    抓包改name参数为<img src=1 onerror=alert(1)>:

     

  • 相关阅读:
    Leetcode Excel Sheet Column Number
    AlgorithmsI PA2: Randomized Queues and Deques Subset
    AlgorithmsI PA2: Randomized Queues and Deques RandomizedQueue
    AlgorithmsI PA2: Randomized Queues and Deques Deque
    AlgorithmsI Programming Assignment 1: PercolationStats.java
    hdu多校第四场 1003 (hdu6616) Divide the Stones 机智题
    hdu多校第四场 1007 (hdu6620) Just an Old Puzzle 逆序对
    hdu多校第四场1001 (hdu6614) AND Minimum Spanning Tree 签到
    hdu多校第三场 1007 (hdu6609) Find the answer 线段树
    hdu多校第三场 1006 (hdu6608) Fansblog Miller-Rabin素性检测
  • 原文地址:https://www.cnblogs.com/7-58/p/12307506.html
Copyright © 2020-2023  润新知