用友NC UserSynchronizationServlet 反序列化漏洞分析
漏洞介绍
用友NC系统UserSynchronizationServlet方法存在反序列化漏洞,攻击者可执行任意命令,获取敏感信息。
影响版本
用友NC6.5
漏洞分析
漏洞位于nc.bs.pub.im.UserSynchronizationServlet接口

漏洞代码:
很明显的反序列化漏洞, 接收POST请求时,读取了输入流,之后对输入流方法进行in.readObject()造成了反序列化漏洞

接下来构造请求URL,要调用UserQueryServiceServlet类,只要在请求路由加上/~包名称+UserSynchronizationServlet类的完整路径即可
查看系统的Web.xml,可以看见请求/service和/servlet前缀的都经过NCInvokerServlet方法处理

NCInvokerServlet接口的doAction方法如下:
主要功能是获得url路径后,如果是以/~开头,截取第一部分为moduleName,然后再截取第二部分为serviceName,再根据getServiceObject(moduleName, serviceName)实现任意Servlet的调用。
这里包名称是uapim,再加上方法的完整路径就能进行请求了
所以这里的路由为:
用友反序列化漏洞存在cc依赖,这里就直接使用ysoserial-all.jar生成cc6的利用链请求dnslog,保存到本地的c.bin文件中
漏洞复现

