<小迪安全>22-文件上传漏洞之内容逻辑数组绕过

图片一句话制作方法

copy 1.png /b + shell.php /a webshell.jpg

        

文件头检测

图像文件信息判断

逻辑安全-二次渲染:指的是网站接受目标后会再进行操作,也就是说会对文件进行二次操作。

逻辑安全-条件竞争:有的网站会对上传的文件进行上传后再验证(上传过程不进行验证),这样文件会暂时 保存到服务器上,可以趁程序未对此文件进行操作(例如改名,移位等),访问文件进行占用,产生条件竞 争。

目录命名-x.php/. :这种命名方法会保存为一个x.php文件

脚本函数漏洞-CVE-2015-2348:

数组接受+目录命名

upload-labs演示

13-16

要利用文件包含漏洞等其他漏洞,才能出发PHP

getimagesize函数:获取图像信息

less-17

二次渲染可能会存在逻辑漏洞,可以通过逻辑竞争来进行上传

#靶场17关代码
$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
$ext_arr = array('jpg','png','gif');
$file_name = $_FILES['upload_file']['name'];
$temp_file = $_FILES['upload_file']['tmp_name'];
$file_ext = substr($file_name,strrpos($file_name,".")+1);
$upload_file = UPLOAD_PATH . '/' . $file_name;
if(move_uploaded_file($temp_file, $upload_file)){
if(in_array($file_ext,$ext_arr)){
通过%00截断来绕过判断
20关代码可以采用数组注入。
$img_path = UPLOAD_PATH . '/'. rand(10,
99).date("YmdHis").".".$file_ext;
rename($upload_file, $img_path);
$is_upload = true;
}else{
$msg = "只允许上传.jpg|.png|.gif类型文件!";
unlink($upload_file);
}
}else{
$msg = '上传出错!';
}
}
}

less-19

save_name,利用%00进行截断

或者伪造成文件夹,例如 upload-19.php/. 绕过机制,结果保存成php文件

less-20

        利用数组注入

$is_upload = false;
$msg = null;
if(!empty($_FILES['upload_file'])){
//检查MIME
$allow_type = array('image/jpeg','image/png','image/gif');
if(!in_array($_FILES['upload_file']['type'],$allow_type)){
$msg = "禁止上传该类型文件!";
}else{
//检查文件名
$file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] :
$_POST['save_name'];
if (!is_array($file)) {
$file = explode('.', strtolower($file));
}
$ext = end($file);
文件上传配合文件包含会直接拿下目标
23. 文件上传之解析漏洞编辑器安全
$allow_suffix = array('jpg','png','gif');
if (!in_array($ext, $allow_suffix)) {
$msg = "禁止上传该后缀文件!";
}else{
$file_name = reset($file) . '.' . $file[count($file) - 1];
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH . '/' .$file_name;
if (move_uploaded_file($temp_file, $img_path)) {
$msg = "文件上传成功!";
$is_upload = true;
} else {
$msg = "文件上传失败!";
}
}
}
}else{
$msg = "请选择要上传的文件!";
}

 CVE漏洞

        文件长传漏洞也会出现在中间件上面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值