错误问题之“Apache Log4j 漏洞,在版本为包含2.14以内!”
漏洞概述
Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。
Log4j 1.2 中包含一个 SocketServer 类,该类容易受到不可信数据反序列化的影响,当侦听不可信网络流量以获取日志数据时,该类可被利用与反序列化小工具结合使用以远程执行任意代码。攻击者可利用该漏洞执行任意代码。
这会影响从 1.2 到 2.14 的 Log4j 版本。
在2021 年 12 月 9 日,该项目被曝存在 严重安全漏洞 ,攻击者只需要向目标机传入一段特殊代码,就能触发漏洞,自由地在远程执行任意代码来控制目标机器!
因为 Log4j 作为 Java 的知名日志记录框架,凭借其灵活高效的日志生成能力,不仅被众多自研项目所使用,很多有名项目作为了基础框架使用。
像 Redis、Kafka、Elasticsearch、Apache Flink、Apache Druid 等等。
可以想象这个漏洞的影响范围有多大,甚至被很多媒体称之为 “核弹级” 漏洞!
apache的问题记录点:https://logging.apache.org/log4j/2.x/
漏洞细节
根据 CVE 漏洞公开网站的记录,该漏洞存在于 Apache log4j <= 2.14.1 的版本(但事实上,影响的版本范围比这更大)。
攻击者可以通过 log4j 的 lookup 替换功能向其配置文件的任意位置注入代码(类似 SQL 注入,把 ${变量} 替换为 ${实际代码})
再加上这些版本中用到的 JNDI 特性并没有为 LDAP 提供足够的保护,使得注入的任意代码都能被肆无忌惮地执行。
测试1
不过我针对漏洞做了下测试,发现好像Apache 找已有了防备,正常情况下我被拒绝了
原因:
是rmi序列化漏洞,apach设置了过滤策略。
在注入时限制了一些类序列化。
在C:\Program Files\Java\jre1.8.0_161\lib\security\java.security【注意,你的文件目录可能不是这个目录】
处理方案:
更改为sun.rmi.registry.registryFilter=*即可。
测试2
总体介绍
接口
创建服务接口
进攻脚本
发送请求(结果弹出计算器)
解决方案
1.升级到2.15.1版本及以上
目前 Apache 官方已经针对该漏洞发布了补丁版本 2.15.0-rc2
,默认禁用了 lookup 行为,在确保升级该版本不会对项目的其他依赖产生冲突的情况下,建议升级。
该方案虽然比较简单粗暴,但这个版本是否稳定?是否没有漏洞呢?这很难说。
因在maven仓库中没有log4j-2.15.0-rc2.jar 。地址:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
jar包上传到本地maven仓库/从本地引入jar文件。
导入完成后 把jar引入到pom文件中。【我使用的maven仓库】
2.修改配置
a、修改jvm参数 -Dlog4j2.formatMsgNoLookups=true
b、系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true
c、修改配置:log4j2.formatMsgNoLookups=True
如果你不想升级 log4j 的版本,担心会和项目其他依赖产生冲突的话,可以采用 Apache 官方推荐的临时解决方案 —— 修改参数。
如果你的 log4j 版本 >= 2.10,可以通过设置系统属性 log4j2.formatMsgNoLookups
或者环境变量 LOG4J_FORMAT_MSG_NO_LOOKUPS
为 true
来禁用 lookup 行为;如果版本在 2.0-beta9 到 2.10.0 之间, 可以直接移除从 classpath 中移除 JndiLookup
类,用以下命令即可:
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
这个方案相对不容易引发项目的冲突,如果项目很紧急且重要,先用它处理吧。
3.换框架
直接换成别的日志框架,如logback
错误问题之“Apache Log4j 漏洞,在版本为包含2.14以内!”的更多相关文章
- Apache Log4j 反序列化代码执行(CVE-2019-17571) 漏洞分析
Apache Log4j 漏洞分析 仅用于研究漏洞原理,禁止用于非法用途,后果自负!!! CVE-2019-17571 漏洞描述 Log4j是美国阿帕奇(Apache)软件基金会的一款基于Java的开 ...
- 【】二次通告--Apache log4j-2.15.0-rc1版本存在绕过风险,请广大用户尽快更新版本
[转载自360众测] Apache Log4j2是一个基于Java的日志记录工具.该工具重写了Log4j框架,并且引入了大量丰富的特性.我们可以控制日志信息输送的目的地为控制台.文件.GUI组件等,通 ...
- MyBatis3错误:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Priority的问题解决
在使用Maven新建QuitStart类型项目时,引入了MyBatis3.2.0版本的JAR包之后,出现如下错误: Exception in thread "main" java. ...
- Apache Log4j 2 报高危漏洞,CODING 联手腾讯安全护卫软件安全
导语 12 月 9 日晚间,Apache Log4j 2 发现了远程代码执行漏洞,恶意使用者可以通过该漏洞在目标服务器上执行任意代码,危害极大. 腾讯安全第一时间将该漏洞收录至腾讯安全漏洞特征库中,C ...
- 修复Apache Log4j任意代码执行漏洞安全风险通告
2021年12月10日 0x01漏洞背景 Apache Log4j 是 Apache 的一个开源项目,Apache Log4j2是一个基于Java的日志记录工具.该工具重写了Log4j框架,并且引入了 ...
- Apache Log4j 远程代码执行漏洞源码级分析
漏洞的前因后果 漏洞描述 漏洞评级 影响版本 安全建议 本地复现漏洞 本地打印 JVM 基础信息 本地获取服务器的打印信息 log4j 漏洞源码分析 扩展:JNDI 危害是什么? GitHub 项目 ...
- Apache log4j2-RCE 漏洞复现(CVE-2021-44228)
Apache log4j2-RCE 漏洞复现 0x01 漏洞简介 Apache Log4j2是一个基于Java的日志记录工具.由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶 ...
- idea解决springboot项目中log4j漏洞升级问题
最近阿里云团队发现log4j漏洞,危险级别:严重,相关资讯 https://m.sohu.com/coo/hsdt/506958086_355140 https://www.sohu.com/a/50 ...
- org.apache.log4j.Logger详解
org.apache.log4j.Logger 详解 1. 概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工 ...
随机推荐
- 【C# 程序集】把自己的程序集添加|卸载 到GAC 全局程序集缓存中
添加全局程序集缓存 Global Assembly Cache Tool (Gacutil.exe) 操作环境windows10+vs2019 cmd.exe位置在 C:\Windows\System ...
- WPF中TreeView控件数据绑定和后台动态添加数据(二)
写在前面:在(一)中,介绍了TreeView控件MVVM模式下数据绑定的方法.在这篇文章中,将总结给节点添加事件的方法,这样说有些不对,总之实现的效果就是点击某个节点,将出现对应于该节点的页面或者数据 ...
- Specified cast is not valid(C#) 引发的思考(装箱,拆箱本质)
没有很华丽的语言,直接拿代码说事情把. 这段代码,会报错吗? 结论:当然不会 这段代码会报错了.原因是为啥? 这里面的水比较深.也要提醒各位写代码的适合要引起注意.异常:System.Invalid ...
- Spring AOP之3w的配置
1.3w是什么? ■ what.where.when 或者 what.when.where 2.what.where.when[通用] (1)what:增强器-bean[配置一个bean对象] (2) ...
- WPS:想让一个新标题后总跟着一种特定样式的文字
只需在这个后续段落样式中修改为你想要的那个样式即可
- QT:Qt Creator使用CTRL+C后变成了光标覆盖,插入模式
菜单栏→工具→选项→FakeVim→取消勾选"使用FakeVim"
- Pycharm:注释、删除所有注释
1.# 单行注释 2. ''' 多行注释 ''' 3.删除所有注释 CTRL+R进入替换模式,勾选右上角正则表达式,然后在搜索框输入 #.*,Replace All即可
- php 23种设计模型 - 适配器模式
适配器模式(Adapter) 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁.这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能. 这种模式涉及到一个单一的类, ...
- 关于SQL Server 各种安装失败均失败,报错“等待数据库引擎恢复句柄失败”的经验分享
最近安装SQL 2019遇到这个问题,试过自己合网上几乎所有办法,怎么都安装不上,最后在微软社区解决了,由于这个问题比较特殊,并且网上几乎没有正确的决绝方案,因此将我的解决过程及经验记录分享一下,也为 ...
- Java数组(Array)和列表(ArryList)有什么区别?
Array和ArryList的不同点 Array可以包含基本类型和对象类型,ArrayList只能包含对象类型 Array大小是固定的,ArrayList的大小动态变化的 ArrayList提供了更多 ...