文件上传漏洞笔记

文件上传漏洞笔记

什么是文件上传漏洞?

文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。

文件上传漏洞如何查找及判断

查找:得寻找web中,存在可以上传文件的地方。但可以上传不代表可以使用。那么就得判断是否能使用

前提1:可以任意上传文件,或者可以通过绕过任意上传文件,则代表拥有漏洞。

前提2:只能上传指定后缀的文件,但拥有文件包含漏洞,那么烨拥有文件上传漏洞。


验证/绕过


前端

JS类防护

这种最为简单,要么COPY下整个网页,删除掉JS代码,再运行。

要么直接使用浏览器自带的屏蔽JS功能,来保证功能的实现。


后端


黑名单(指通过识别并屏蔽掉特殊的后缀)

特殊解析后缀

如php5,phps,htmlphp等。

.htaccess解析

利用apache的特性,可以在执行文件的同目录下放入配置文件,可以直接将特点文件解析为PHP(或任意自身想要执行的)

前提:需要管理员配置过AllowOverride为NONE

<FilesMatch "\.jpg">
    SetHandler application/x-httpd-php
</FilesMatch>

大小写绕过

黑名单可能屏蔽不完善,那么可以利用

Php,PhP,pHp等方式绕过

点绕过

利用操作系统的特性,在文件后缀中

webshell.php.

尾部加入一个点,但在操作系统读取文件的时候,会自动删除掉尾部的点,使我们上传的文件为

webshell.php

空格绕过

利用操作系统的特性,在文件后缀中

”webshell.php “----此处有空格,使用双引号方便理解

尾部加入一个空格,但在操作系统读取文件的时候,会自动删除掉尾部的空格。

”webshell.php“

::$$DATA绕过

同上

webshell.php::$$DATA

读取结果

webshell.php

配合解析漏洞

利用中间件的漏洞,来使非PHP后缀的文件,以PHP的方式执行

双后缀名绕过

如果上传漏洞的地方,会过滤掉php后缀,使

webshell.php 过滤为 webshell.

那么则可使用双后缀

webshell.pphphp 进行绕过

(对多次过滤不生效)


白名单

MIME绕过

修改Content-Type的信息修改为

image/png

%00截断

在php读取文件中,可以直接截断后缀,就可以利用假后缀来上传文件

webshell.php%00jpg

拿去判断的参数是jpg,但真实上传的为

webshell.php

(在高于PHP5.3的版本中不可用)

0x00截断

雷同不赘述

0x0a截断

雷同不赘述


内容及其他

文件头检测

在web读取上传文件的时候

会查看文件内的编码,图片格式的头文件,都会有特定的编码

如jpg文件打开会有jpeg的前缀

这时候我们就需要将图片和php文件缝合在一起,可以利用cmd代码

copy 图片.jpg/b + 代码.php/a webshell.jpg

二次渲染

在web读取文件的时候,会重新对文件进行渲染。

即:服务器保存的文件为客户上传文件的复制

条件竞争

在web读取文件的时候,会将文件进行判断,符合要求则重新渲染,然后删除文件,否则直接删除

但会有一个步骤:先保存上传的文件,再进行删除

那么我们可以用力burp的instruder攻击器进行攻击,不断上传文件,然后在网页中进行刷新访问,如果删除的不及时,那么文件就会被我们访问到,然后被固定。

突破getimagesize

需要利用到工具,进行图片合成,才可以成功上传图片,直接使用copy会判断到图片和文件大小不符合。

突破exif_imagetype

直接copy图片绕过即可。


漏洞/修复

解析漏洞

根据中间件的不同,有不同的解析漏洞,具体可参考专门的笔记

IIS6/7

Apache

Nginx

CMS漏洞

根据开源的代码进行代码审计

分析程序编写人员因为疏忽产生的漏洞

其他漏洞

编辑器漏洞

就是很多网页中,包含发帖功能中的编辑器,这些也是包含漏洞存在的。

CVE等漏洞

这个属于公开漏洞,可以去vulhub去学习了解

安全修复

了解到攻击手段,就能了解如何防护

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值