CUPS 2.4.16 包含一个本地权限提升漏洞 (同时被追踪为 GHSA-c54j-2vqw-wpwp)。
全局可写套接字 — /run/cups/cups.sock 全局可写,
允许任何本地用户向 CUPS 守护进程(以 root 身份运行)
发送 IPP 请求。
本地令牌泄露 — 通过将 device-uri 指向攻击者控制的
IPP 服务器,可以滥用 CUPS-Create-Local-Printer 来
泄露 Local 授权令牌。
任意文件写入 — 利用泄露的令牌,攻击者可以创建
一个 device-uri=file:///etc/sudoers.d/<user> 的打印机,
导致 CUPS(以 root 身份)将任意内容写入磁盘上的任意路径。
# 基本用法
python3 cups_pwn.py --user lowpriv
# 自定义 sudoers 路径
python3 cups_pwn.py --user lowpriv --sudoers /etc/sudoers.d/custom
# 成功后
sudo -i
🧠 工作原理
text
┌─────────────────────────────────────────────────────────────────┐
│ 1. 在 127.0.0.1:9189 上启动伪造的 IPP 服务器 │
│ 2. 发送带有 device-uri=ipp://... 的 CUPS-Create-Local-Printer │
│ 3. CUPS 连接到我们的伪造服务器 → 发送 Local 令牌 │
│ 4. 提取令牌 │
│ 5. 创建带有 device-uri=file:///etc/sudoers.d/... 的打印机 │
│ 6. 打印包含 "user ALL=(ALL) NOPASSWD: ALL" 的 gzip 载荷 │
│ 7. CUPS 以 root 身份写入载荷 │
│ 8. sudo -n id → root │
└─────────────────────────────────────────────────────────────────┘
🛡️ 免责声明
本工具仅供授权的安全测试和教育目的使用。请勿对您不拥有或
未获得明确测试许可的系统使用本工具。作者不对因使用本工具
而导致的任何滥用或损害承担责任。
📚 参考资料
GHSA-c54j-2vqw-wpwp
CVE-2026-34990
CUPS 安全公告
📄 许可证
MIT — 参见 LICENSE 文件。
text
### Ficheiro 3: `LICENSE`
```bash
nano LICENSE