渗透测试-文件上传

文件上传

image-20210920144143288-1

文件上传漏洞

  1. 服务器配置不当,导致任意文件上传
  2. Web应用开启文件上传功能,但没有对文件进行足够的限制

危害

该漏洞可导致攻击者上传任意文件,包括恶意脚本、程序等。如果Web服务器所保存上传文件的可写目录具有执行权限,则可以上传后门文件getshell

条件

  1. Web服务器开启上传功能,且接口对外开放
  2. Web用户对目标目录具有可写权限,甚至执行权限
  3. Web中间件可以解析上传的脚本

验证/绕过

前端验证

JS类防护

如:

<script type="text/javascript">
    function checkFile() {
   
        var file = document.getElementsByName('upload_file')[0].value;
        if (file == null || file == "") {
   
            alert("请选择要上传的文件!");
            return false;
        }
        //定义允许上传的文件类型
        var allow_ext = ".jpg|.png|.gif";
        //提取上传文件的类型
        var ext_name = file.substring(file.lastIndexOf("."));
        //判断上传文件类型是否允许上传
        if (allow_ext.indexOf(ext_name) == -1) {
   
            var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
            alert(errMsg);
            return false;
        }
    }
</script>

这种前端的验证方式非常薄弱,因为JS脚本的运行环境是浏览器,在浏览器中修改或者删除对应的JS脚本即可绕过
也可以通过抓取数据包修改的方式绕过

后端

黑名单

通过修改文件名、后缀名,使得文件不会被黑名单隔离,且上传的文件能被中间件解析

特殊后缀解析

仅通过黑名单过滤了常见的脚本文件后缀,如:php、jsp、asp、aspx

可以通过特殊后缀绕过,如:.php",".php5",".php4",".php3",".php2",".phtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".asp",".aspx"

需要中间件能够解析特殊后缀名

大小写绕过

用于黑名单不完整

点绕过/空格绕过

Windows系统中,文件最后一个字符是 . 或空格时,会被自动删除,可利用这一点,修改数据包中的文件名,绕过黑名单

::$$DATA

在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,如:example.php::$$DATA,Windows会自动将其变为example.php

双写绕过

黑名单检测到隔离字符串时,将隔离字符串替换为空,但只执行一次时,可以双写绕过

如:example.php被检测出后,替换为example.;若双写后缀名example.pphphp,则会被替换为example.php实现绕过

.htaccess解析

.htaccess 是Apache 服务器的分布式配置文件,该配置文件会覆盖Apa

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值