一次CRC32校验的文件上传意外Bypass

admin 2023年1月30日21:45:53评论88 views字数 1540阅读5分8秒阅读模式

起因

某日在挖SRC的过程中发现一个比较有意思的上传点,成功绕过后深入研究了一下。

功能点上传如图所示。

该站是将所有的静态资源文件上传至七牛云的OSS上,七牛云OSS与目标某个用来存放静态文件的子域名绑定,然后通过访问静态服务器访问资源文件。

一次CRC32校验的文件上传意外Bypass

原始上传数据包如下(为了只截一张图,对数据包内容做了简化处理,非真实数据包)

一次CRC32校验的文件上传意外Bypass

POST / HTTP/1.1
Host: upload-xx.qiniup.com
User-Agent: QiniuAndroid/7.3.11 (7.1.2; samsung-SM-G955N; 1665282777682874; VQB5GprlYEdBhv2C)
Content-Type: multipart/form-data; boundary=10511da8-f3aa-4feb-8d6b-e2c7440b9e6d
Content-Length: 7859
Accept-Encoding: gzip, deflate
Connection: close

--10511da8-f3aa-4feb-8d6b-e2c7440b9e6d
Content-Disposition: form-data; name="file"; filename="20221009_103254.png"
Content-Type: application/octet-stream
Content-Length: 7129


[<image_data>]   //上传的图片数据
--10511da8-f3aa-4feb-8d6b-e2c7440b9e6d
Content-Disposition: form-data; name="crc32"
Content-Length: 9

[<crc32_value>]  //crc32检验值
--10511da8-f3aa-4feb-8d6b-e2c7440b9e6d
Content-Disposition: form-data; name="token"
Content-Length: 134


[<token_data>]  //token
--10511da8-f3aa-4feb-8d6b-e2c7440b9e6d
Content-Disposition: form-data; name="key"
Content-Length: 34

[<url_path>]   //上传成功后映射至静态服务器的路径
--10511da8-f3aa-4feb-8d6b-e2c7440b9e6d--

当我将png后缀修改为html并在文件内容中加上xss语句时,返回包出现了crc32校验错误,如下。

一次CRC32校验的文件上传意外Bypass

{"error":"crc32 not match"}

查阅了网上各种资料,如何进行crc32校验的绕过,但是查到的都是与CTF杂项有关的东西。

正在我纠结如何Bypass时,我尝试将上传数据包中的crc32校验参数删除,意外的绕过了crc32校验。

如图。

一次CRC32校验的文件上传意外Bypass

将此块部分进行删除,重新发包。

一次CRC32校验的文件上传意外Bypass

返回包意外的从原来的

{"error":"crc32 not match"}

变成了

{"error":"file exists"}

于是我再次将包中的静态服务器映射路径进行了修改,成功Bypass上传。

一次CRC32校验的文件上传意外Bypass

一次CRC32校验的文件上传意外Bypass

后续

由于业务用的是七牛云的对象存储,所以我去研究了一下为什么删除crc32值能够绕过。

我翻了一下七牛云的对象存储文档,内容如下。

https://developer.qiniu.com/kodo/1272/form-upload一次CRC32校验的文件上传意外Bypass

crc32参数是非必填项,仅在客户端发送的包中有crc32参数时,七牛云的对象存储服务器才会对其进行crc检验,所以数据包中的crc32参数删除后,即可绕过。

原文始发于微信公众号(F12sec):一次CRC32校验的文件上传意外Bypass

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月30日21:45:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一次CRC32校验的文件上传意外Bypasshttps://cn-sec.com/archives/1347854.html

发表评论

匿名网友 填写信息