跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

DCS zip Slip任意写文件漏洞

精选回复

发布于

前言

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

正文

漏洞url:

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

 

文档说明

oBnmE8.png
oBnu4g.png

upload处理点

oBnQ3j.png
oBn1vn.png

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

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

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

oBnyb6.png

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

oBncVK.png
oBn25D.png
oBnh2d.png

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

oBn4xA.png

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

oBnort.png

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

oBnHVf.png

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

oBnqIS.png
oBnXGQ.png

updateFilePath函数

oBnj2j.png

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

oBnvxs.png

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

oBuiIU.png

getJsonResult函数

oBuAG4.png
oBuVz9.png

getResultDate函数生成返回的url

oBueMR.png

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

oBuKZ6.png

zip函数如下

oBuQIO.png

zip函数

oBu3Je.png

引用一张图

oBuYQA.png

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

oButsI.png
oBucyn.png

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。