亿赛通电子文档代码审计
0x01 漏洞分析
亿赛通电子文档安全管理系统最近很火热,趁热分析一波。
0x02 (1day)jdbc反序列化
没什么用,安装包没有mysql依赖。
路由 /CDGServer3/LdapAjax
对应com.esafenet.servlet.ajax.DBAjax
doPost接受传参command,若果等于testConnection就调用testConnection方法。
testConnection会获取数据库账号密码,ip,configvalues,然后判断使用什么数据库,然后调用connection方法。
然后就是反射获取服务,链接。全都可以控制,很容易就想起jdbc。
webapps/CDGServer3/config/DBConfig.jsp
jsp里面有对应传输的格式。
复现
0x02 (1day?nday)xstreem反序列化
查看lib,发现存在低版本的xstream的环境包,很自然就可以想到xstream低版本反序列化漏洞。
所以只需要找到一个servlet的里面调用了fromXML就可以了。
所以我们找servlet里面的service方法,看谁调用了fromXML方法就可以了.
由于触发点很多,我们希望只在service里面就找到触发点。
1 |
|
这样我们就得到只调用一次就出发漏洞。可以看到很多点。
找其中一个路由 /CDGServer3/UserLoginOutService1
在web.xml找对应的可以进行分析
对应 com.esafenet.servlet.service.UserLoginOutService1
从request获取,然后fromXML。
所有重点就是看ServiceUtil.getXMLFromRequest(), 怎么处理。
它会先getXMLFromRequest0获取流转化string,然后调用decodeString解密。
对应的解密算法。
密钥
1 |
|
所以找对应的加密算法就可以。
对应的加密算法。剩下就是xstreem的漏洞流程。
复现
0x03 (nday)文件上传 -1
DecryptApplicationService2_uoload
com.esafenet.servlet.service.smartsec.DecryptApplicationService2
没什么好分析的,从获取fileId然后拼接路径,获取iStream直接写入。
fileId没有过滤,可以目录穿越写入导致rce.
0x04(nday)文件上传 -2
UploadFileFromClientServiceForClient_upload
解密value_code
在下面进行判断
然后可控fileName, InputStream从req获取,最后写入,同理目录穿越写入。
poc
0x05 fastjson
1 |
|
1 |
|
我是大彩笔
poc
直接使用1.2.47的payload
1 |
|
0x06 反序列化
1 |
|
1 |
|
从file获取流加密,然后转对象
加密方法
然后进行反序列化。
很明确了,就是构造加密后的byte为反序列化数据,然后当file上传,后段会先加密file,然后进行反序列化。
需要自己实现对应的解密方法。
复现
0x07 反射调用
1 |
|
1 |
|
反射调用
0x09 sql注入
1 |
|
1 |
|
看见很多都是直接拼接,就不一一找了
0x010 后语
练手不错。
声明
此文章 仅用于教育目的。请负责任地使用它,并且仅在您有明确测试权限的系统上使用。滥用此 PoC 可能会导致严重后果。