侧边栏壁纸
博主头像
pingc

今天不学习,明天变乐色。

  • 累计撰写 8 篇文章
  • 累计创建 2 个标签
  • 累计收到 1 条评论

文件上传漏洞

pingc
2022-04-23 / 0 评论 / 0 点赞 / 368 阅读 / 2,158 字

什么是文件上传

我们这里是指上传后门文件,后门都是脚本文件格式,如php,asp,jsp等。
大多数网站都有上传文件的地方,但几乎都有做过滤限制了上传文件类型,这里主要讲的就是如何绕过上传后门文件。

文件上传漏洞的危害

通过文件上传漏洞,上传webshell后门文件,可以获取网站权限然后服务器提权,进入内网横向渗透,获取用户隐私信息。

如何寻找文件上传漏洞

如果是CMS系统,可以直接搜索引擎查询是否存在公开文件上传漏洞。
查看是否有个人中心,一般都有头像上传或上传附件等功能。
通过搜索引擎搜索:inurl:xxxx.com upload.php
使用目录扫描工具。
到处点到处翻,但凡存在上传功能都可以存在漏洞。

MIME检测绕过

通过检测请求头Content-Type来判断是否放行。
修改Content-Type头并不会影响文件名,所以修改成image/jpeg或其他可正常上传的类型就可以绕过。

内容验证绕过

通过获取文件内容头部来判断是否放行。
修改文件头部内容为可正常上传的类型头部就可以达到绕过。

黑名单绕过

文件上传处限制了php,jsp,asp,apsx等脚本类型文件,这种指定了哪些类型不能上传的就叫黑名单过滤。
通过对比文件的后缀来判断是否放行。
如:xswl.php,截取php去黑名单中对比,存在既拦截。
如:xswl.jpg,截取jpg去黑名单中对比,不存在既放行。

修改大小写

过滤时候可能没有做大小写匹配,那么我们修改文件名大小写绕过。
如:xswl.pHp,截取pHp去黑名单中对比,不存在既放行。

填充空格

文件名最后加入一个空格,在保存文件时,空格会被自动去掉不会影响文件类型。
但过滤截取后缀会把空格算上,导致对比黑名单不存在既放行。
如:xswl.php ,截取php 去黑名单中对比,不存在既放行。

填充.

文件名最后加入一个.,在保存文件时,空格会被自动去掉不会影响文件类型。
但过滤截取后缀会把.算上,导致对比黑名单不存在既放行。
如:xswl.php.,截取php.去黑名单中对比,不存在既放行。

过滤时候可能会做头尾去空格处理,这时候可以填充.绕过。

填充::$DATA

这个是只有windows才有的特性,使用前要先确定目标的服务器类型。
windwos会把::$DATA,当做文件流处理,不会参与文件名的构造。
如:xswl.php::DATA,截取php::DATA,截取php::DATA去黑名单中对比,不存在既放行,文件名保存为xswl.php

换行截断

抓包把文件名换行截断

filename='shell.
p
h
p
'

其他解析类型

一些黑名单可能写的不完整,如php还可以写成php3、php5、phtml等,通过黑名单中未限制的解析类型绕过。

白名单

文件上传处只允许jpg,png等图片类型文件,这种指定了哪些类型能上传的就叫白名单过滤。
通过对比文件的后缀来判断是否放行。
如:xswl.php,截取php去白名单中对比,不存在既拦截。
如:xswl.jpg,截取jpg去白名单中对比,存在既放行。
白名单比黑名单安全很多,绕过手段有限,几乎都需要配合其他漏洞利用。

%00截断

在文件名处添加%00截断后续的文件名,实现绕过。
GET提交,如:xswl.php%00.jpg,截取jpg去黑名单中对比,不存在既放行,文件名保存为xswl.php
POST提交:操作与GET一样,但需要对%00做URL解码,否则会以字符串的形式解析加入文件名中。

注意:%00 截断仅适用于小于 PHP 5.3.4 的版本,且magic_quotes_gpc处于关闭状态下。

条件竞争

假设上传流程:
上传一个php后门文件->文件到了服务器临时目录->验证文件后缀->不在白名单中->删除文件
上传一个jpg文件->文件到了服务器临时目录->验证文件后缀->在白名单中->转移到正常目录下
这个流程中,文件先是上传到了服务器临时目录,然后才做过验证,那么我们在上传后通过不断访问来占用文件,导致后续过滤验证后删除失败,达到上传成功。

利用条件比较坎坷,需要上传流程符合条件,知道临时文件目录和临时目录下的文件名是否随机。

其他上传漏洞

nginx配置不当导致解析漏洞:直接上传jpg,123.jpg/x.php 可将123.jpg当php格式打开

IIS6.0版本:当文件为 *.asp;.jpg、*.asa;.jpg、*.cer;.jpg、*.cdx;.jpg 时,iis6.0 依然会将其以 asp 文件来执行
IIS6.0版本:当建立.asa、.asp格式的文件夹时,其目录下的任意文件都将被IIS当作为asp文件解析。

apache低版本解析漏洞:上传123.php.xxx,访问url ,xxx不合法,接着往左看,php合法就以php格式解析了

apache上传配置漏洞:先上传给.htaccess文件内容,然后上传haha.jpg 名字有haha的都会被当php来解析

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

配合文件包含漏洞:上传图片马,通过文件包含漏洞来执行脚本

CMS公开的上传漏洞

0

评论区