ClearLotus-git/CVE-2026-4480-PoC
GitHub: ClearLotus-git/CVE-2026-4480-PoC
针对 Samba 打印作业名称命令注入漏洞(CVE-2026-4480)的概念验证项目,复现并演示了通过恶意打印作业名称在服务端执行任意命令的攻击路径。
Stars: 0 | Forks: 0
# CVE-2026-4480-PoC
# CVE-2026-4480 – Samba 打印作业名称命令注入
## 概述
CVE-2026-4480 是一个命令注入漏洞,影响某些使用外部打印命令的 Samba 打印配置。
该漏洞的存在是因为 Samba 在将用户控制的打印作业元数据插入 shell 命令时,没有正确转义 shell 元字符。在特定配置下,攻击者可以提供一个恶意的打印作业名称,从而导致在服务器上执行任意命令。
该问题尤为危险,因为某些打印机共享允许来宾访问,使得无需身份验证即可进行利用。
## 根本原因
Samba 支持多种打印后端。其中一种通常被称为 **sysv 风格打印**的传统选项,会在打印作业完成时执行外部命令。
管理员可以使用替换宏来配置命令,例如:
```
print command = /usr/local/bin/print-helper %s %J
```
其中:
- `%s` → 后台打印文件路径
- `%J` → 客户端提供的打印作业名称
在修复之前,`%J` 的值在插入到通过系统 shell 执行的命令之前,只经过了最低限度的过滤。
由于 shell 元字符保持原样,因此经过特殊构造的作业名称可以改变预期的命令流程并执行攻击者控制的指令。
## 攻击流程
典型的攻击包含四个阶段:
1. 发现一个允许来宾打印的打印机共享。
2. 使用 SMB 连接到该打印机共享。
3. 提交包含恶意作业名称的打印作业。
4. 等待 Samba 调用配置好的打印命令。
如果打印命令引用了 `%J`,攻击者的 payload 就会成为 shell 命令的一部分,并以 Samba 打印进程的权限执行。
## 为什么配置很重要
并非所有的 Samba 安装都存在漏洞。
通常必须满足以下条件:
- Samba 配置了执行外部 shell 命令的打印后端。
- 打印命令引用了 `%J`。
- 攻击者可以访问某个打印机共享。
- 来宾打印或弱身份验证允许提交作业。
使用基于 CUPS 打印的现代部署不会暴露此攻击路径,因为作业是通过 CUPS API 而不是 shell 命令传递的。
## 影响
成功利用漏洞可能允许攻击者:
- 执行任意操作系统命令
- 获取 Samba 服务账户下的 shell
- 访问打印子系统可访问的文件
- 寻找进一步的权限提升机会
- 在环境中进行横向移动
严重程度在很大程度上取决于打印进程的权限以及周围的系统配置。
## 受影响版本
受影响的版本包括以下版本之前的发布版本:
- 4.22.10
- 4.23.8
- 4.24.3
使用后续版本的系统不受此问题影响。
## 缓解措施
建议的缓解措施包括:
1. 将 Samba 升级到已修复的版本。
2. 如果不需要,请从打印命令中移除 `%J`。
3. 在将用户控制的宏传递给 shell 命令之前对其进行引用。
4. 尽可能迁移到 `printing = cups`。
5. 限制来宾打印机访问并审计打印机共享权限。
## 检测机会
防御者应调查:
- 允许匿名访问的打印机共享
- 具有异常或格式错误名称的打印作业
- `smbd` 意外生成 shell 解释器
- 子进程,例如:
```
sh
bash
python
perl
nc
curl
wget
```
监控 Samba 服务的进程创建可以帮助识别利用尝试。
## 免责声明
本仓库仅供教育和授权的安全研究使用。
未经所有者明确许可,请勿将此代码用于系统、网络或服务。未经授权访问计算机系统是非法且不道德的。
请始终在隔离的实验室环境或专门为安全培训设计的平台中进行测试。
标签:Cutter, PoC, Samba, SMB, XXE攻击, 命令注入, 安全, 暴力破解, 超时处理, 错误配置检测