前端oss上传接口_对OSS文件上传的一次研究

背景

    在一次应急中发现OSS由于上传文件控制不严,被黑产利用,上传可执行html文件,进行引流,诱骗等操作,导致域名被微信封禁,影响业务。以下图片为当时黑产引流页面,由此引出此次对oss文件上传问题的以下研究。

60dae7c3bdbeaea327bc48cb750a0632.png

Oss文件上传漏洞危害

  • 可上传html文件,用于钓鱼、引流等,最终会导致域名被微信封禁,使得业务不可用
  • 存储型xss漏洞
  • 若文件上传后未进行随机名,可导致静态文件被覆盖,严重可导致网站主页被覆盖或静态html加入暗链引流等,带来严重影响

相关概念介绍

阿里云Oss:阿里云对象存储服务(Object Storage Service,简称OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。 Content-Type:HTTP请求头,请求报文中实体头部用于指示资源的MIME类型 media type ;在响应中,Content-Type标头告诉客户端实际返回的内容的内容类型。

危险的Content-Type

由于oss上传默认接收用户上传Content-Type值,且可为任意值,所以本次研究对象就是Content-Type
  • text/html
        该类型为html文件头,上传该类文件,会直接以html方式进行解析,无论文件后缀为何,注:不能使用完全匹配进行黑名单操作,可被增加编码绕过(如:Content-Type:text/html;charset:utf-8;)
  • */* 
        该类型为任意类型,会根据文件内容进行匹配,上传文件内容中存在html标签,文件将会被浏览器当做html文件来解析。注:必须有html标签,否则将不会被解析为html文件     测试代码如下:
<html><img src=x onerror=alert(2)>html
  • 不带/,随便一个请求头

    测试代码:

    <img src=x onerror=alert(1)>

38d0d3b7834220db5729cef78798666a.png

  • application/xml;application/xhtml+xml ;text/xml看上去人畜无害的xml,也能用来作恶。上述类型为XHTML文件类型,是更严谨更纯净的 HTML 版本。
        测试代码:
<html xmlns="http://www.w3.org/1999/xhtml"><script type="text/javascript">  alert(1);script> html>

    执行效果如下图

c593bf3593f4621929797429c7ac546b.png

  • image/svg+xml

    该类型为SVG文件格式,svg是使用 XML 来描述二维图形和绘图程序的语言。由于是基于XML解释,所以之前的XHTML的代码同样可以使用。以下为另一种标准svg代码:

<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"><script>alert(1);script>svg>
MSEdge/IE浏览器特性接下来为神奇的微软系浏览器    application/postscript    application/octet-stream    application/javascript    text/webviewhtml    text/scriptlet以上标签在该浏览器都会以html格式解析文件 解决方案理想状态:    不接收前端content-type值,接口分类专用,后端设置content-type非理想状态:
  • 白名单Content-Type(缺点:由于业务复杂,白名单收集不全,导致业务不可用)
  • 黑名单Content-Type(缺点:由于各种类型复杂,可能存在漏网之鱼)
  • 文件随机命名,可避免文件覆盖问题
  • 对不信任文件设置Content-Disposition:attachment,该文件头告诉浏览器使用下载方式处理文件

到家集团安全部,愿与你共同成长

6bf1f5aa01f52b41c5763f2b3adeaf51.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值