当前位置: 首页 > 技术干货 > 浙大恩特前台RCE漏洞审计

浙大恩特前台RCE漏洞审计

发表于:2025-10-15 16:27 作者: 大白 阅读数(22人)

指纹:title="欢迎使用浙大恩特客户资源管理系统"

本文对该系统公开在互联网,但未分析代码细节的漏洞进行审计分析:

前台文件上传RCE

该系统2019版本存在权限绕过加文件上传组合漏洞,可通过上传webshell实现前台RCE。

公开POC:

POST /entsoft/CustomerAction.entphone;.js?method=loadFile HTTP/1.1Host:
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0)
Gecko/20100101 Firefox/112.0 uacqAccept:
text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Accept-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.2Accept-Encoding:
gzip, deflateConnection: closeContent-Type: multipart/form-data;
boundary=----WebKitFormBoundarye8FPHsIAq9JN8j2AContent-Length: 203

------WebKitFormBoundarye8FPHsIAq9JN8j2AContent-Disposition:
form-data; name="file";filename="as.jsp"Content-Type: image/jpeg

<%out.print("test");%>------WebKitFormBoundarye8FPHsIAq9JN8j2A--

权限绕过部分先看过滤器:

分析web.xml发现purfilter为全局过滤器:

如上,会对/*也就是任意请求进行拦截,跟进源码:

首先出现的就是白名单后缀+白名单接口,在后续校验中也是对非listExpUrl内容的后缀或者接口才会进行权限校验:

而拦截器在进行后缀白名单检测时,获取后缀的方式如下:

通过获取最后一个.的部分作为后缀。

而且该系统是tomcat容器,基于该容器对;的解析特性,不会匹配到;后面的内容,也就是在进行路由匹配时,只会匹配到CustomerAction.entphone,从而使得CustomerAction.entphone;.js?method=loadFile顺利进入过滤器层面的校验,并且此时获取的后缀又是.js,处于白名单后缀,从而实现权限绕过。

接下来分析:上传点代码漏洞原因:

先在xml文件寻找接口对应后端代码,该接口匹配后缀.entphone,对应代码为:enterphone.EntPhoneControl类。

全局搜索EntPhoneControl类:

跟进漏洞类CustomerAction:

跟进method对应loadFile方法:

要想进入文件上传逻辑,会先进行gesum参数的条件判断:

在gesum不为空时才进入上传逻辑,原数据包里面是没有传gesum参数的,在java里面,一般值会设置为NULL,而NULL不等于空,则能够顺利进入if逻辑。

进入if块后,代码会继续执行以下步骤:

创建CustomerBean并设置gesnum(此时gesnum为null)和tenantID。

调用customerBean.checkGesnum()检查客户代码是否存在。

这一步是关键:若checkGesnum()方法在gesnum为null时返回false(即认为"客户代码不存在",符合业务逻辑,因为null通常不是有效的客户代码),则会进入else分支,执行文件上传逻辑。

随后通过如上文件获取文件名,并直接进行文件上传,由于未进行后缀校验,从而可上传jsp文件,造成RCE漏洞。

本地环境漏洞复现:

上传成功,并成功解析:

 

本课程最终解释权归蚁景网安学院

本页面信息仅供参考,请扫码咨询客服了解本课程最新内容和活动

🎈网安学院推荐课程: 渗透测试工程师特训班 Web安全工程师特训班 Python网络安全实战班 应急响应安全工程师特训班
  CTF-Reverse实战技能特训班 CTF-WEB实战技能特训班 CTF-PWN实战技能特训班 CTF-MISC实战技能特训班   SRC赏金猎人大师班 HVV大师课