某DCS zip Slip任意写文件漏洞

  1. 前言
  2. 正文

前言

hw的时候遇到的,结束后复现找了一下漏洞代码

正文

漏洞url:

/dcs.web/upload?convertType=19&isSourceDir=0

文档说明

upload处理点

config.inputDir.getPath()获取config.properties里的dir.input,然后设置了三个属性值:

* fname - 文件名
* finput - 文件上传后的路径
* sourceRelativepath - 生成的UUID

文件写入到input目录后,返回json请求/convert进行处理
首先调用buildParam函数进行处理

获取convertType参数,然后转换成int类型。传入EnumConvertType.getEnum判断值是否存在hash表里

经过获取一些请求参数后,然后来到 String lowrealInput = realInput.toLowerCase()

往上跟踪发现取finput属性,获取inputDir,outputDir,zipFileName,zipOutput请求参数。然后进行判断,由于请求都没有带到这些参数所以去到finput

然后进入大判断,判断lowrealInput尾部是否存在对应的后缀,并将EnumConvertType设置为对应的hash表key

然后去到284行,获取fname,fileName属性的值。判断fileName不为空调用setFIleName函数。设置this.fileName,然后获取compressedSuffix请求参数,最后判断enumType不为空调用updateFilePath函数

updateFilePath函数

后面就是对一些请求参数转int进行设置

回到ConvertParamBuilder.class,经过checkParam函数判断是不是pdf,然后单独开个线程处理然后生成json调用getJsonResult函数

getJsonResult函数

getResultDate函数生成返回的url

ZipService.zipfile函数,先获取tmpDir目录然后调用copyDirectiory函数将input目录下上传的文件copy到out目录。最后调用zip函数

zip函数如下

zip函数

引用一张图

参考链接:https://saucer-man.com/information_security/364.html


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:某DCS zip Slip任意写文件漏洞

本文作者:九世

发布时间:2021-12-05, 08:53:20

最后更新:2021-12-05, 09:17:37

原始链接:http://jiushill.github.io/posts/d1787975.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录