
针对 CVE-2026-34990 的概念验证漏洞利用,该漏洞通过 CUPS_CREATE_LOCAL_PRINTER 和捕获的本地认证令牌实现任意文件写入,从而在 CUPS 2.4.16 中造成本地权限提升。
CUPS 2.4.16 本地权限提升,通过 CUPS_CREATE_LOCAL_PRINTER 实现任意文件写入。
CUPS 允许创建本地打印机,并将 device-uri 设置为 file:// 路径。提交打印任务时使用 document-format: application/vnd.cups-raw 和 compression: gzip,会导致 cupsd 解压任务数据并将其直接写入该路径——以 cupsd 运行的用户身份(通常是 root 或高权限服务账户)。
管理员操作所需的本地认证令牌可以通过将 ipptool 的 cups-create-local-printer.test 指向 localhost 上的伪造 IPP 服务器来捕获。当 CUPS 连接进行认证时,它会发送 Authorization: Local <token> 头,你可以在 CUPS 验证之前拦截它。
ipptool,将 cups-create-local-printer.test 指向伪造服务器——CUPS 会发送其本地认证令牌进行认证401 WWW-Authenticate: Local trc="y" 以干净地捕获令牌device-uri: file:///etc/sudoers.d/<user>-pwnsudo -n /bin/bashcreate_local_printer 调用在竞争期间保持其套接字打开——这使打印机注册保持进行中,同时管理员操作和打印任务得以落地。
ipptool 并带有 cups-create-local-printer.test(标准 CUPS 安装)# 默认写入 /etc/sudoers.d/<your-username>-pwn
python3 exploit.py
# 自定义目标
CUPS_TARGET=/etc/sudoers.d/youruser-pwn CUPS_ATTACKER=youruser python3 exploit.py
编辑脚本中的 SUDOERS_LINE 以使用你的实际用户名——默认是 aporter。
该漏洞利用最多尝试 12 次。每次尝试都会删除并重新创建打印机以重置状态。
仅用于授权的安全测试和研究。