文件上传 04 服务端检测绕过(文件扩展名检测)

本文记录文件上传学习过程,教程为 《Upload Attack Framework V1.0》

文件上传检测

  1. 客户端javascript 检测(通常为检测文件扩展名)
  2. 服务端MIME 类型检测(检测Content-Type 内容)
  3. 服务端目录路径检测(检测跟path 参数相关的内容)、
  4. 服务端文件扩展名检测(检测跟文件extension 相关的内容)
  5. 服务端文件内容检测(检测内容是否合法或含有恶意代码)

服务端检测绕过(文件扩展名检测)

  1. 简介

    通常是针对文件的扩展名后缀进行检测

    检测内容:

    在这里插入图片描述

    对于扩展名检测不强的,时常还可以结合目录路径攻击

    比如filename=“test.asp/evil.jpg” 之类

  2. 绕过黑名单检测

    例如 fckeditor 2.4.3 或之前版本的黑名单

    在这里插入图片描述

    1. 文件名大小写绕过

      用像 AsP,pHp 之类的文件名绕过黑名单检测

    2. 名单列表绕过

      用黑名单里没有的名单进行攻击,比如黑名单里没有 asa 或 cer 之类

    3. 特殊文件名绕过

      比如发送的 http 包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式在 windows 系统里是不被允许的,所以需要在burp 之类里进行修改,然后绕过验证后,会被 windows 系统自动去掉后面的点和空格,但要注意 Unix/Linux 系统没有这个特性。

    4. 0x00 截断绕过

      在扩展名检测这一块目前我只遇到过 asp 的程序有这种漏洞,给个简单的伪代码

       name = getname(http request) //假如这时候获取到的文件名是test.asp .jpg(asp 后面为0x00)
      
       type = gettype(name) //而在gettype()函数里处理方式是从后往前扫描扩展名,所以判断为jpg
      
       if (type == jpg)
      
       	SaveFileToPath(UploadPath.name, name) //但在这里却是以0x00 作为文件名截断
       //最后以test.asp 存入路径里
      
    5. .htaccess 文件攻击

      配合名单列表绕过,上传一个自定义的.htaccess,就可以轻松绕过各种检测

    6. 解析调用/漏洞绕过

      这类漏洞直接配合上传一个代码注入过的非黑名单文件即可,再利用解析调用/漏洞

  3. 绕过白名单检测

    1. 0x00 截断绕过

    用像test.asp%00.jpg 的方式进行截断,属于白名单文件,再利用服务端代码的检测逻辑
    漏洞进行攻击,目前我只遇到过asp 的程序有这种漏洞

    1. 解析调用/漏洞绕过

    这类漏洞直接配合上传一个代码注入过的白名单文件即可,再利用解析调用/漏洞

  4. 详解.htaccess文件攻击

    1. 简介

      无论是黑名单还是白名单

      再直接点就是直接攻击.htaccess 文件

      (其实目前我只见过结合黑名单攻击的,在后面的攻击分类里,我会把它归到黑名单绕过攻击里。但网上是把这个单独分类出来的,可能别人有一些我不知道的方式和技巧吧,所以在这里我也暂时保留这个单独分类)

      在PHP manual 中提到了下面一段话

       move_uploaded_file section, there is a warning which states
       ‘If the destination file already exists, it will be overwritten.’
       如果PHP 安全没配置好
       就可以通过move_uploaded_file 函数把自己写的.htaccess 文件覆盖掉服务器上的
       这样就能任意定义解析名单了
      
    2. 测试:

      通过一个.htaccess 文件调用php 的解析器去解析一个文件名中只要包含"haha"这个字符串的任意文件,所以无论文件名是什么样子,只要包含"haha"这个字符串,都可以被以php 的方式来解析,是不是相当邪恶,一个自定义的.htaccess 文件就可以以各种各样的方式去绕过很多上传验证机制

      建一个 .htaccess 文件,里面的内容如下

       <FilesMatch "haha">
       SetHandler application/x-httpd-php
       </FilesMatch>
      

      同目录有个我们上传一个只有文件名并包含字符串"haha",但是却无任何扩展名的文件里面的内容是php 一句话木马

      然后我们用中国菜刀去连接测试

      结果如我们预期的一样:)

      所以一个可以由 hacker 掌控的 .htaccess 文件是非常邪恶的

      基本上可以秒杀各种市面上的上传验证检测 (内容检测除外)

      从实际环境来说,我个人接触过的,一般是配合黑名单攻击

      比如黑名单里有漏网之鱼,不够完整,漏掉了 .htaccess 扩展名

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值