文件上传php代码审计1

本文详细探讨了PHP文件上传的各种安全问题,包括任意文件上传、内容-type漏洞、黑名单过滤漏洞、双写漏洞、目录可控、文件头检测绕过、图片二次渲染等,并分析了如何利用这些漏洞获取webshell。同时,还提到了文件名控制和数组绕过的安全风险,强调了对上传文件的严格验证和过滤的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)文件上传原理

文件上传是指由于程序员未对上传的文件进行严格的验证和过滤,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件。

(2)分类

1)任意文件上传

直接获取文件名,把上传的临时文件移动到hackable/uploads目录下。上传后,网页会返回路径,访问url即可getshell。

2)前端js检测后缀名代码分析

客户端html上传文件时调用checkFile函数,首先获取文件后缀名。如果文件未空,弹出“请选择要上传的文件”;如果不为空,且获取上传的文件后缀名 .jpg、.png、.gif,提示不允许上传。

3)分析content-type漏洞代码

首先进行submit提交判断,再检测文件类型,若是image/jpeg或者image/png即允许上传

4)黑名单代码分析

首先是检测submit是否有值,获取文件的后缀名,进行黑名单对比,后缀名不在黑名单内,允许上传。

5)双写漏洞分析

 同样是黑名单过滤,str_ireplace对上传的后缀名是黑名单内的字符串转换为空。

6)上传参数目录可控代码分析

代码中使用白名单限制上传的文件后缀名,只允许指定的图片格式。但是$_GET['save_path']服务器接收客户端的值,这个值可以被客户端修改,留下安全问题。

7)文件头检测上传代码分析

 

上传的文件符合数字即可通过检验

8)图片检测函数绕过上传

getimagesize是获取图片的大小,如果头文件不是图片会报错直接可以使用图片马绕过检测

9)图片二次渲染分析代码

 

 只允许上传JPG、PNG、gif格式的文件,源码中使用imagecreatefromgif函数对图片进行二次生成,生成的图片保存至upload目录下。

10)文件上传条件竞争源码分析

采用白名单上传,$upload_file = UPLOAD_PATH .'/' . $file_name;设置上传路径,后缀名没有限定为图片格式,接着 move_uploaded_file($temp_file,$upload_file),将图片移动到指定的目录,使用rename重命为图片类型。在重名之前如果被浏览器访问,可以得到一个webshell。

 11)文件名控代码分析

采用黑名单限制上传文件,但是$_POST['save_name']文件是可控的,可被客户端任意修改,造成安全漏洞。

12)数组绕过代码分析

首先检测文件类型,看到可控参数save_name 如果不是数组,如果后缀名不是图片禁止上传。

如果是数组绕过图片类型检测,接着处理数组。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值