049-WEB攻防-文件上传&存储安全&OSS对象&分站&解析安全&解码还原&目录执行

049-WEB攻防-文件上传&存储安全&OSS对象&分站&解析安全&解码还原&目录执行-cnblog

Untitled

#文件-解析方案-执行权限&解码还原

1、执行权限

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

Untitled

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

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

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

Untitled

Untitled

如何判断

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

Untitled


2、解码还原

Untitled

数据做存储,解析固定(文件后缀名无关)
文件上传后利用编码传输解码还原

  1. 当服务器把上传的文件,利用base64编码编码为数据存储,也就是说从根本上解决了文件上传漏洞的问题,以数据存储就没有其他类型的文件解析即使上传后门文件,最后也是被当成图片去解析,由固定的协议去解析数据(data:image/png;base64,base数据)
// 处理文件上传
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="上传的图片">';
}
?>

Untitled

如何判断是解码还原

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

Untitled


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

1、分站存储

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

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

如何判断分站存储?

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

Untitled

Untitled


2、OSS对象

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

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

Untitled

#如何判断

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

Untitled

#安全绕过

以上方案除目录设置权限如能换目录解析绕过外

其他均无解

  1. 控制上传文件的的存储目录,绕开开启限制执行的目录即可

Untitled

Untitled

posted @ 2025-09-19 18:14  0xMouise  阅读(8)  评论(0)    收藏  举报