CVE-2021-44228_Log4j2远程命令执行漏洞
漏洞描述
Apache Log4j2 是一款开源的 Java 日志记录工具,大量的业务框架都使用了该组件。如:Apache Struts2、Apache Solr、Apache Druid、Apache Flink等。此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。
- 漏洞编号:CVE-2021-44228
- 影响范围:Apache Log4j 2.x < 2.15.0-rc2
环境搭建
1 |
|
漏洞利用
漏洞验证
- 访问漏洞点
1 |
|
- 注意poc需要进行url编码
1 |
|
- 如果dnslog有返回值则证明存在此漏洞
- 获取系统信息
1 |
|
JNDI注入反弹shell
- 准备反弹shell的命令:
1 |
|
下载
1 |
|
命令介绍
- 可执行程序为jar包,在命令行中运行以下命令:
1 |
|
参数介绍
-C - 远程class文件中要执行的命令。
(可选项 , 默认命令是mac下打开计算器,即”open /Applications/Calculator.app”)
-A - 服务器地址,可以是IP地址或者域名。
(可选项 , 默认地址是第一个网卡地址)
注意
要确保 1099、1389、8180端口可用,不被其他程序占用。
或者你也可以在run.ServerStart类26~28行更改默认端口。
命令会被作为参数传入**Runtime.getRuntime().exec()**,
所以需要确保命令传入exec()方法可执行。
bash等可在shell直接执行的相关命令需要加双引号,比如说 java -jar JNDI.jar -C “bash -c …”
JNDI注入反弹shell
- 将bash编码添加到-c参数之后,然后运行漏洞利用的jar文件:
1 |
|
- 执行端口监听命令
1 |
|
- 在此执行poc
替换POC内容为JDK 1.8的 RMI 协议
1 |
|
- 此时会提示一次响应请求
- 返回nc查看
此时可以看到已经反弹成功
CVE-2021-44228_Log4j2远程命令执行漏洞
https://www.gasmaze.com/posts/9672b74f.html