记一次项目中遇到的JAVA系统审计
redcat 漏洞分析 287浏览 · 2025-03-28 15:45

审计流程:

系统架构:springmvc+war包的部署方式。不是springboot的方式。



web.xml 文件内容:

图片1.png
图片加载失败


走的springmvc的统一路由。



查看配置文件spring.xml内容:

图片2.png
图片加载失败
图片3.png
图片加载失败
图片4.png
图片加载失败
图片5.png
图片加载失败


配置文件中关注的重点如下的全局拦截器:使用/** 对所有url进行拦截:

图片6.png
图片加载失败


com.futvan.z.framework.core.AllHandlerInterceptor 实现:

这个拦截器是做权限校验的,分为三类:

第一类:web这个包下的不拦截。

第二类:httpservices 这个包下的状态为1的方法也放过。

第三类:就是不属于上面两类的,单独处理。

图片7.png
图片加载失败
图片8.png
图片加载失败
图片9.png
图片加载失败


这里我们的重点就关注第三类中的白名单。(第一类,第二类看过都已经排除了)

图片10.png
图片加载失败
图片11.png
图片加载失败


这里根据名字就可以看出来的高危方法:uploadRunSql



1. 先看upload方法:

图片12.png
图片加载失败


这里主要看CreateFileSavePath 方法,确实是否上传到web根目录下:

图片13.png
图片加载失败


图片14.png
图片加载失败


再看下save方法:

图片15.png
图片加载失败


所以这里的upload方法存在一个任意文件上传漏洞。



2. 查看RunSQL 方法:

图片16.png
图片加载失败


这里有个问题就是需要知道数据库的名字,然后后续就是正常的增删改查操作。



然后查看拦截器中验证Session的操作:

图片17.png
图片加载失败


直接查看session中是否存在zuser这个键值对,查看哪里存在zuser session的赋值:

图片18.png
图片加载失败


一共只有三处,其中两处都是登录后的,另外一处:

图片19.png
图片加载失败


查看SetSessionUser 的引用:

图片20.png
图片加载失败


登陆处才会赋值,很简单的密码对比,一般情况下是没办法的操作,但是登陆如果存在sql注入就会有机会了:

图片21.png
图片加载失败
图片22.png
图片加载失败


很明显的拼接,所以存在sql注入,利用 union查询控制返回进行任意登录:

图片23.png
图片加载失败


成功获取到登录后的Cookie。



RCE点:

搜索sink点发现存在spel表达式解析:

图片24.png
图片加载失败


查看调用:

图片25.png
图片加载失败


继续查看:

图片26.png
图片加载失败
图片27.png
图片加载失败


直接获取用户参数进行解析,造成spel表达式注入漏洞:

图片28.png
图片加载失败
图片29.png
图片加载失败


Xstream反序列化漏洞:(漏洞不存在)

图片30.png
图片加载失败


pom.xml中发现存在<1.4.18版本的xstream组建:

查看反序列化的fromXML 方法,发现存在两处:

图片31.png
图片加载失败


继续查看调用:

图片32.png
图片加载失败
图片33.png
图片加载失败


发现在wx这个控制器中调用,并且内容可控,但是需要查看 WeiXinUtil.Decrypt 是否可以控:

图片34.png
图片加载失败


从配置信息中获取token,key等内容进行解密:new WXBizMsgCrypt(z.sp.get("weixin_token"), z.sp.get("weixin_EncodingAESKey"), z.sp.get("weixin_appid"));

查看z.sp.get("weixin_token"),z.sp.get("weixin_EncodingAESKey")获取的是什么:

z.sp的是一个map,查看sp 初始化的地方:

图片35.png
图片加载失败


发现sp的内容来源于:配置文件z.properties和z_sp 数据表:

图片36.png
图片加载失败
图片37.png
图片加载失败


数据库z_sp表中也不存在weixin_tokenweixin_EncodingAESKeyweixin_appid该三个键值对,所以此处的值为null

继续回到WX处,当 _EncodingAESKey 的长度不为64时,会自接抛出异常,所以解密失败。

该处的xstream 漏洞也是不存在的。

图片38.png
图片加载失败


z.sp的初始化操作的地方:

图片39.png
图片加载失败
图片40.png
图片加载失败


0 条评论
某人
表情
可输入 255

没有评论