5 分钟复现 log4J 漏洞,手把手实现
2021年12月10日凌晨前,网上曝出了 log4j 的核弹级漏洞,这种漏洞超级高危,操作简单,利用方便,适用范围广,可以直接任意代码执行,接管你的服务器。
此处思考曝光者凌晨曝光的原因,或许选择凌晨曝光,想着无数工程师半夜起来紧急修复,让 TA 产生了变态的快感。
我知道你们是想看什么的,就是想看如何演示,不过可能要让你失望了,本来我是发表了如何复现的介绍。
发表后立马得到了不错的反馈,但是想到可能很多人不是来学习的,可能是真的会进行不当利用,所以还是决定删掉了。真的只是研究下那就加个好友交个朋友吧,公开场合不适合介绍漏洞复现。
0x01. 漏洞情况
Apache Log4j2是一款优秀的Java日志框架。由于 Apache Log4j2 某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置。
这里贴下漏洞公开级别。
漏洞细节 | 漏洞PoC | 漏洞EXP | 在野利用 |
---|---|---|---|
公开 | 公开 | 公开 | 存在 |
通过网上公开资料,这个漏洞的细节已经完全公开,这里简单演示,让大家了解漏洞情况,尽快安全升级。
根据网络公开新闻,可以梳理出以下时间脉络:
2021年 11 月 24 日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。
2021年12月06日,log4j2 发布修复包 log4j-2.15.0-rc1.jar
2021年12月10日,log4j2 发布修复包 log4j-2.15.0-rc2.jar
2021年12月10日,阿里云安全团队发现 Apache Log4j 2.15.0-rc1 版本存在漏洞绕过,请及时更新至 Apache Log4j 2.15.0-rc2 版本。
实际受影响范围如下:
Apache Log4j 2.x < 2.15.0-rc2
0x02. 安全建议
排查应用是否引入了 Apache log4j-core Jar 包,若存在依赖引入,且在受影响版本范围内,则可能存在漏洞影响。请尽快升级Apache Log4j2所有相关应用到最新的 log4j-2.15.0-rc2 版本,地址 https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
升级已知受影响的应用及组件,如 spring-boot-starter-log4j2/Apache Struts2/Apache Solr/Apache Druid/Apache Flink
临时缓解方案。可升级jdk版本至6u211 / 7u201 / 8u191 / 11.0.1以上,可以在一定程度上限制JNDI等漏洞利用方式。对于大于2.10版本的Log4j,可设置 log4j2.formatMsgNoLookups 为 True,或者将 JndiLookup 类从 classpath 中去除,例如 zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
0x03. 漏洞复现
以下测试,只做学习分析之用,不要于其他用途!单机演示,所有地址都是 127.0.0.1
。
本来不准备画图的,但是很多同学以为注入漏洞就是简单的运行网上的 ${jndi:ldap://127.0.0.1:1389/Log4jTest}
,我觉得还是有必要画个图简单说明一下, 一个简单的攻击链路步骤图,画的匆忙见谅。
3.1. 环境模拟 - 受害者小白服务
已删除,学习交流可以加微信。
3.2. 环境模拟 - 攻击者服务
已删除。
3.3. 测试
受害者小白服务再次运行,原本只简单打印一行日志,现在多了一行说明信息。
无害测试,没有攻击性,linux/mac 创建文本:xxxyyyzzz.txt;windows 弹出计算器。最后求关注,公众号:程序猿阿朗
20:21:57.780 [main] ERROR Log4j2 - params: xxx
同时运行项目目录多了一个文件 xxxyyyzzz.txt
如果你是在 windows 上运行测试,那么会弹出一个计算器。
一如既往,文章中的代码存放在:github.com/niumoo/lab-notes
推荐阅读:
欢迎关注微信公众号:互联网全栈架构,收取更多有价值的信息。