第49天:漏洞利用-文件上传&存储安全&OSS对戏那个&分站&解析安全&解码还原&目录执行

执行权限

  • 文件上传后存储目录不给执行权限
  • 原理:开启禁止目录执行,将服务器的文件上传后存储目录,取消读取和执行的权限

image-20250813100726855

1
2
3
4
5
由于文件上传功能并未做过滤,直接上传包含后门的木马文件shell.php上传成功即可发现,phpinfo被执行了,该文件被解析为php脚本

当在小皮网址配置的==选择安全配置→开启禁止目录执行→将禁止执行的目录设置为上传目录(/1/upload)==

开启后,再次访问上传的木马文件,发现报错403,至此文件上传漏洞不能被利用

image-20250813100802070

解码还原

1
2
3
上传图片-->图片数据-->一串base64数据
显示图片-->base64数据解码-->数据解析
这种方式是只认数据,将文件数据做处理,就是不管你的后缀是什么,他直接将你的任意文件都当作数据处理,然后再由他的格式去输出

php代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// 处理文件上传
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
// 获取上传的文件信息
$file = $_FILES['file'];

// 获取文件名和临时文件路径
$filename = $file['name'];
$tmpFilePath = $file['tmp_name'];

**// 将文件内容转换为Base64编码
$base64Data = base64_encode(file_get_contents($tmpFilePath));**

// 输出Base64编码的文件内容
echo $base64Data;

// 如果是图片文件,可以将其在页面上显示
echo '<img src="data:image/jpeg;base64,' . $base64Data . '" alt="上传的图片">';
}
?>

文件-存储方案-分站存储&OSS对象

分站存储

1
2
3
4
upload.xiaodi8.com 上传
images.xiaodi8.com 存储==(另一台服务器,目录权限锁死,只提供存储服务,不提供解析服务,即使上传木马文件,连接后门也无用)==

存储图片在另一台服务,有关于上传文件还使用base64编译为数据,进一步放置了文件上传的隐患

image-20250813101309211

OSS对象

Access控制-OSS对象存储-Bucket对象

上传的文件只能当作一个网盘来看,不提供解析服务,只提供下载

如何判断

如果目录下已经上传进去木马文件,访问其上传路径发现报错403禁止访问,可能是文件上传后存储目录不给执行权限

在上传文件的时候,抓取数据包,如果发现是==由固定的协议(data:image/png;base64,base数据)则就是解码还原==

上传图片后,查看图片URL地址中的域名是否和目标上传地址一致,如果不一致则是分站存储

如果访问上传的文件路径,发现访问及下载,多半是OSS对象

安全绕过

以上方案除目录设置权限如能换目录解析绕过外,其他均无解

控制上传文件的的存储目录,绕开开启限制执行的目录即可(鸡肋)