环境搭建:
漏洞未使用数据库功能,直接运行 u8csetup.bat 安装
再运行 startup.bat 启动服务即可

漏洞分析:
根据漏洞描述:可知是 ServiceDispatcherServlet 并且存在相关鉴权的绕过

根据漏洞补丁对比:修复了一个文件上传方法 nc.impl.hr.tools.trans.FileTransImpl#uploadFile

在 web.xml 中查找 ServiceDispatcherServlet 对应关系


跟进到主要的处理方法,invInfo 通过 readObject() 方法从 HTTP 请求的输入流中反序列化生成,在经过 TokenUtil 权限校验后,通过反射机制动态调用对应的业务方法。
nc.bs.framework.comn.serv.ServiceDispatcher#execCall

跟进权限校验 TokenUtil.getInstance().vertifyToken() 方法,使用 getTokenSeed() 和传入的 userCode 进行相关加密操作然后和传入的 token 对比。
nc.bs.framework.server.token.TokenUtil#vertifyTokenIllegal
而 getTokenSeed() 获取的是 /ierp/bin/token/tokenSeed.conf 文件中的硬编码字符串。
nc.bs.framework.server.token.TokenUtil#TokenUtil

继续跟进this.invokeBeanMethod()方法,当moudle为空,就会反射调用传入的方法。
nc.bs.framework.comn.serv.ServiceDispatcher#invokeBeanMethod
结合补丁的 nc.itf.hr.tools.IFileTrans.uploadFile 方法构造恶意的InvocationInfo对象就可以实现文件上传。
漏洞复现:
