DVWA靶场通关实录-DOM Based Cross Site Scripting (XSS)篇

0x01 简介

DOM型XSS是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。


0x02 DOM型XSS-Low

可以看到将url中的值改为1,页面也随之进行了变化,这很有可能存在xss漏洞。

image.png

构造语句<script>alert('xss')</script>
image.png

确实是存在xss漏洞,这里是可以利用dom函数来获取cookie或者记录键盘操作等。建议搞个xss利用平台,美滋滋。
看下源码:

<?php
# No protections, anything goes
?> 

emmm,不看也罢。


0x03 DOM型XSS-Medium

老规矩<script>alert('xss')</script>先来一发,发现页面没有任何显示,而且语句也变回了默认的English。
试了下123,页面会正常显示123;试下<123>也正常,那问题就出在script上面了,只要不过滤<>,一切都好说。
开搞,利用onerror或者其他HTML事件函数来重新构造xss语句。
"></option></select><img src=a onerror="javascript:alert(1);"/>
这里要特别注意闭合问题。

image.png

成功,看下源代码。

<?php
// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
    $default = $_GET['default'];
    
    # Do not allow script tags
    if (stripos ($default, "<script") !== false) {
        header ("location: ?default=English");
        exit;
    }
}
?> 

对<script做了检测


0x04 DOM型XSS-High

试了下,medium关卡的语句在这里已经没用了,应该是有了更严格的过滤机制。试了试<>也给过滤了。
那么考虑从编码上下手,也失败了
看下源代码先:

<?php

// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {

   # White list the allowable languages
   switch ($_GET['default']) {
       case "French":
       case "English":
       case "German":
       case "Spanish":
           # ok
           break;
       default:
           header ("location: ?default=English");
           exit;
   }
}

?>

emmm,有些严格的呀。
只有加个#让xss语句在本地执行了,?default=English#<script>alert(1)</script>


0x05 防御方法

  • 对输入(和URL参数)进行过滤
  • 对输出进行编码
  • 白名单和黑名单结合过滤
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0x01 简介 程序员在通过函数进行文件引入时,对引入的文件名没有经过严格的过滤,从而产生了预想之外的文件操作(恶...
    Asson阅读 3,576评论 0 0
  • Pikachu Vul XSS 1.反射型XSS(get)随便输入,可以发现没有任何过滤,只是限制了输入字符的长度...
    l0st阅读 11,302评论 0 0
  • 0x01 简介 开发人员没有对用户上传的文件进行严格的过滤和验证,以致于用户可上传恶意脚本,从而产生危害。 0x0...
    Asson阅读 4,073评论 0 1
  • 0x01 简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时...
    Asson阅读 4,988评论 0 0
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,713评论 2 7