栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Apache log4j漏洞重现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Apache log4j漏洞重现

Apache Log4j2是一款优秀的Java日志框架。2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求

漏洞只针对的是2.15以下版本的

现在我们来重现一下log4j的漏洞

public class Log4jTest {
    private static final Logger log = LogManager.getLogger();
    public static void main(String[] args) {
            String str = "${java:os}";
            log.info("hello {} !", str);
    }
}

${}是log4j的占位符,我们可以通过占位符的方式方便我们打印日志,这段代码输出是:hello Windows 10 10.0, architecture: amd64-64 !
输出了我们当前电脑的消息,当然这样看起来没问题,但却给了别有用心之人有机可趁

下面我们来重现一下漏洞,这是一个jndi的服务类

下面这个类是我们可以通过此类进行一些操作

再写一个测试类

先启动RmiServer类,在启动测试类
运行结果:

大家可以看到他是在测试类里打印的EvilObj,而不是在RmiServer里打印的,这就非常恐怖,代表着我可以在你服务器执行我想执行的代码,所以这个漏洞是非常严重的,如果说破坏者通过前端输入然后你后台打印了用户的输入,就可以在你的服务器执行他的程序,这是一个低级且严重的问题,大家升级到2.15以上版本就行了

解决方案

a、修改jvm参数 -Dlog4j2.formatMsgNoLookups=true
b、修改配置:log4j2.formatMsgNoLookups=True
c、系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS设置为true

如果springBoot里面有引用的话,在pom文件加上以下代码,这也是spring官网给出的方案

 
    2.16.0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/671624.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号