【漏洞靶场】文件上传后端检测.htaccess黑名单绕过--upload-labs

一、漏洞描述

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。在upload-labs第四关中服务器使用了黑名单检测文件后缀是否合法,几乎黑名单里面覆盖了所有违规的后缀名,但是没有过滤.htaccess。通过先上传自定义的.htaccess,让所有文件都用php解析。再上传.jpg的文件,直接利用。

二、漏洞发现

在upload-labs第四关中就是采用了黑名单验证文件后缀的方式做文件上传的限制,先在本地写php脚本若上传成功,且知道上传后文件在网站保存的路径,可通过网页访问获得服务器配置信息,命名为z.php

直接看源码,file_exists判断文件路径是否存在,array数组函数中就是服务器的黑名单,几乎包含过滤了所有非法后缀。

但是没有过滤.htaccess

trim() 函数:移除字符串两侧的空白字符或其他预定义字符。这里将上传的文件名去掉两边的字符串

deldot()靶场自定义函数:从字符串的尾部开始,从后向前删除点.,直到该字符串的末尾字符不是.为止。

strrchr()函数:查找一个字符c在一个字符串s中最后一次出现的位置(也就是从s的右侧开始查找字符c首次出现的位置),并返回从字符串中的字符c所在的位置开始直到字符串s结束的所有字符。 若没有找到字符c,则返回NULL。这里若上传z.php函数处理后返回.php

strtolower()函数:将字母转换为小写。若是.PHP处理后是.php

str_ireplace()函数:使用一个字符串替换字符串中另一些字符串,对大小写不敏感。将::$DATA转换为空

(在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA之前的文件名,他的目的就是不检查后缀名,例如:"z.php::$DATA"Windows会自动去掉末尾的::$DATA变成"z.php")

经过上面的过滤,原本的文件名现在只留下文件后缀。判断文件后缀是否在上面定义的数组中,若在就不允许上传。若不在就将文件名改原有文件的名字。

$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认

虽然基本过滤了所有非法后缀,但是没有过滤.htaccess。

前提:目标服务器apache必须开启mod_rewrite模块,和AllowOverride ALL。都在apache的httpd.conf文件中

mod_rewrite模块:mod_rewrite是Apache的一个模块,此模块可以操作URL的所有部分(包括路径信息部分),在服务器级的(httpd.conf)和目录级的(.htaccess)配置都有效,还可以生成最终请求字符串。此重写操作的结果可以是内部子处理,也可以是外部请求的转向,甚至还可以是内部代理处理。

AllowOverride ALL:在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 ".htaccess" 作用域的指令都允许出现在 .htaccess 文件中。

写文件,意思是将该目录和子目录下的所有文件都当php执行

三、漏洞利用

将.htaccess直接上传,再将z.php改为.jpg后缀。再上传。上传成功。这里返回的上传的图片,因为上传的不是真正的图片,所以解析错误也不显示。

通过图片前端的链接可知文件的路径。直接访问,利用成功,显示服务器配置信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Edward Hopper

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值