上传验证绕过——服务端黑名单绕过

服务端黑名单绕过

  1. 特殊可解析后缀

Upload-labs(Pass-03)根据源码可以看出,只是做了个简单的后缀名黑名单,识别上传文件的类型是 否为 '.asp','.aspx','.php','.jsp' 中的一个,若是其中的一个,则不允许上传。 但是可以上传其他任意后缀。比如说:. phtml .phps .php5 .pht ,但如果上传的是.php5这种类型文 件,想要被当成php执行的话,需要有个前提条件:即Apache的httpd.conf有如下配置代码(靶场环境 未配置好,仅做上传测试)。

所以由于服务端采用黑名单的过滤方式,这里可以使用php3或者php5后缀上传,直接通过burp修改后缀名

上传成功

(此靶机环境测试未解析,仅作上传测试即可)

  1. 大小写绕过(√)

Upload-labs(Pass-06)通过查看源码可以发现,虽然设置了黑名单对常见的后缀进行过滤,但并未对 后缀名大小写进行统一。可以利用大小写进行绕过。例如:.PHp

burp改包

上传成功

  1. 点绕过(√)

Upload-labs(Pass-08)分析代码没有去除点,直接在文件后面加上点

burp抓包并修改

上传成功

在Windows系统中会自动去除文件名最后的 . ,因此在Windows系统中可以使用此方法绕过。

  1. 空格绕过

Upload-labs(Pass-07)通过代码分析没有去空格,在文件后缀加空格后上传

burp抓包修改

上传成功

在Windows系统中会自动去除文件名最后的空格,因此在Windows系统中可以使用此方法绕过。

  1. 配合解析绕过(√)

Upload-labs(Pass-05)

这一关的思路是它没有循环验证,也就是说这些首尾去空,删除末尾的点,去除字符串:$SDATA,转换 为小写这些东西只是验证了一次,所以绕过思路也很简单:在数据包中把后缀名改为.php. .(两个点之 间有个空格) 验证过程:首先系统发现最后有一个点,这时会把它去掉,又发现有一个空格,也会把它去掉,这时还 有一个点,也就是.php. 由于系统只验证一次,所以不会再去掉剩下的点,这时就可以上传成功。

  1. htaccess文件绕过(√)

在利用.htaccess文件之前,我们先来了解一下什么是.htaccess规则文件。 .htaccess文件(或者"分布式配置文件")全称是Hypertext Access(超文本入口)。 提供了针对目录改变配置的方法, 即 在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可 以帮我们实现: 网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列 表、配置默认文档等功能。上传.htaccess文件,来绕过黑名单。 前提条件 1.mod_rewrite模块开启。 2.AllowOverride All

Upload-labs(Pass-04)源码分析,这个比03增加了黑名单量。但是,中间件为Apache的情况下,黑 名单未校验htaccess文件,导致可上传htaccess文件,绕过黑名单检测。

由于.htaccess还是没有过滤,可以重写文件解析规则绕过,上传一个 .htaccess,文件内容如下,意思 是设置当前目录所有文件都使用PHP解析,那么无论上传任何文件,只要文件内容符合PHP语言代码规 范,就会被当作PHP执行。不符合则报错。

我们需要先准备好两个文件( .htaccess 和 post.jpg)

<!-- .htaccess文件 -->

<FilesMatch "magedu.jpg">

Sethandler application/x-httpd-php

</FilesMatch>

//magedu.jpg

<?php @eval($_POST["magedu"]); ?>

注意: .htaccess文件不能起名字,他就是.htaccess文件,如果你将他改为4.htaccess或者其他的什 么名字是不可以的,无法解析。在实战中有可能上传上去这个文件会被自动重命名,被重命名了就不可以了。

接下来就是先将 .htaccess 文件上传,从而覆盖父目录对上传目录的影响,然后再上传 mgedu.jpg 文 件,从而完成 .htaccess 文件上传解析漏洞的利用。

上传.htaccess

再上传post.jpg

上传成功

  1. ::$DATA绕过

在Windows中,如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且 保持::$DATA之前的文件名。使用它的目的就是不检查后缀名,例如:

phpinfo.php::$DATA

Windows会自动去掉末尾的::$DATA变成 phpinfo.php

Upload-labs(Pass-09)抓包修改文件后缀

可以看到,上传成功。但是Linux服务器未去掉后缀,所以解析不了。

8.双写后缀名绕过(√)

Upload-labs(Pass-11)从源码中可以发现,源码中定义了黑名单列表,我们上传文件的后缀名凡是符 合黑名单中任意一个后缀都会被替换为空,那么我们可以利用双写后缀的方式进行绕过。例如: phpinfo.pphphp 替换后变成 phpinfo.php

抓包修改

上传成功

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值