当前位置: 首页 > news >正文

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

http://www.rkmt.cn/news/8145.html

相关文章:

  • 云原生周刊:MetalBear 融资、Chaos Mesh 漏洞、Dapr 1.16 与 AI 平台新趋势
  • 045-WEB攻防-PHP应用SQL二次注入堆叠执行DNS带外功能点黑白盒条件-cnblog
  • 用 Kotlin 实现英文数字验证码识别
  • 语音芯片怎样挑选?语音芯片关键选型要点?
  • KingbaseES Schema权限及空间限额
  • UM2003A 一款 200 ~ 960MHz ASK/OOK +18dBm 发射功率的单发射芯片
  • HTTP库开发实战:核心库与httpplus扩展库示例解析
  • 用 Python 和 Tesseract 实现英文数字验证码识别
  • 禅道以及bug
  • 工业交换机调试的实用技巧与注意事项:提升网络稳定性与性能 - 实践
  • 第一次参与开源的时序数据库 IoTDB Committer:这份成就感是无可替代的
  • ECT-OS-JiuHuaShan 框架元推理的意义、价值、作用、应用场景和哲学理念的充分阐述:AGI奇点
  • mysql区分大小写吗,你可能忽略了这些关键细节
  • route-link 和 a 的区别
  • 实用指南:前端Form表单提交后跳转到指定页面
  • np.clip的使用
  • 深入解析:Xilinx Video Mixer
  • iOS 26 能耗检测实战指南 如何监测 iPhone 电池掉电、Adaptive Power 模式效果与后台耗能问题(uni-app 与原生 App 优化必看)
  • Transformer的个人理解
  • 国标GB28181平台EasyGBS如何实现企业园区视频监控一体化管理?
  • 360环视硬件平台为什么推荐使用米尔RK3576开发板?
  • C语言弱函数
  • 1202_InnoDB中一条UPDATE语句的执行流程
  • 记录---vue3项目实战 打印、导出PDF
  • node.js安装(绿色版)
  • 08
  • selenium完整版一览 - 教程
  • ctfshow web55
  • test 1
  • ctfshow web53