亿赛通电子文档代码审计
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 可能会导致严重后果。