
CVE-2021-3441 CVE Check 是一个 Python 脚本,用于搜索目标中与 CVE-2021-3441 相关的入侵指标。
一款用于自动化发现 CVE-2021-3441 入侵指标 (IoC) 的 Python 威胁情报工具。轻松搜索目标是否存在入侵迹象
________________
_/_______________/|
/___________/___//|| CVE-2021-3441 检测
|=== |----| ||
| | �| || 作者: Tyler Butler
|___________| �| || @tbutler0x90
| ||/.�---.|| | ||
|-||/_____\||-. | |�
|_||==HP===||_|__|/
CVE-2021-3441 检测工具是一款 Python 工具,用于搜索目标中是否存在该 CVE 的入侵指标。脚本通过目标的 HTTP 响应头获取产品版本。如果产品版本存在漏洞,且已为该版本创建了模块,脚本将请求可能包含利用载荷的资源。加载可能包含利用的 HTML 实体后,脚本会搜索常见的 XSS 字符。如果发现利用载荷,程序会通过控制台向用户发出警报,并可将结果记录到输出文件中。

python3 hp-cve-check.py -i [目标IP] -O ./test/output.txt
➜ hp-cve-check git:(master) ✗ python3 hp-cve-check.py -i 192.168.223.1 -O output.txt
________________
_/_______________/|
/___________/___//|| HP CVE 检测
|=== |----| ||
| | �| || 作者: Tyler Butler
|___________| �| || @tbutler0x90
| ||/.�---.|| | ||
|-||/_____\||-. | |�
|_||==HP===||_|__|/
{!} 正在启动 hp-cve-check
{!} -------- {INFO} 产品版本受支持
{!} -------- {INFO} IoC ID: A1 路径: /DevMgmt/ProductConfigDyn.xml 标签: dd:deviceLocation
{!} 正在扫描目标: 192.168.223.1 是否存在 CVE
{!} -------- {INFO} 正在请求 http://192.168.223.1/DevMgmt/ProductConfigDyn.xml
{!} -------- {INFO}: 响应成功,状态码: 200
{!} -------- {INFO}: 在 DeviceLocation 字段发现内容
{!} -------- {INFO}: 正在检查可疑字符
{!} -------- {WARNING}: 发现入侵指标
{!} -------- {WARNING}: 字段设置 :<script>alert('XSS 2');</script>
{!} -------- {INFO} IoC ID: A2 路径: /DevMgmt/NetAppsDyn.xml 标签: dd:ApplicationServiceName
{!} 正在扫描目标: 192.168.223.1 是否存在 CVE
{!} -------- {INFO} 正在请求 http://192.168.223.1/DevMgmt/NetAppsDyn.xml
{!} -------- {INFO}: 响应成功,状态码: 200
{!} -------- {INFO}: 在 DeviceLocation 字段发现内容
{!} -------- {INFO}: 正在检查可疑字符
{!} -------- {OK}: 未检测到 IoC
{!} -------- {OK}: 载荷: test
{!} 结束 hp-cve-check ....
python3 hp-cve-check.py -i [目标列表] -o [输出文件]
| 选项 | 描述 | 用法 |
|---|---|---|
| -i | 目标 IP | -i 192.168.223.1 |
| -I | 目标文件 | -i targets.txt |
如果发现 IoC,则以可 grep 的格式记录到输出文件中,格式为 [目标IP]:[载荷]。当未找到载荷对象时,使用 None。
➜ hp-cve-check git:(master) ✗ cat ./test/output.txt
192.168.223.1:<script>alert('XSS 2');</script>
192.168.223.1:None
由于入侵指标在不同产品版本中可能出现在不同的资源中,因此使用 模块 来存储版本特定的配置选项。模块以 YAML 格式存储在 modules 文件夹中。每个受支持的版本创建一个模块 yml 文件,包含以下选项:
hp-officejet-4630.yml 模块
---
product: 'HP Officejet 4630'
path: '/DevMgmt/ProductConfigDyn.xml'
tag: 'dd:deviceLocation'
paths:
- A1: '/DevMgmt/ProductConfigDyn.xml'
A2: '/DevMgmt/NetAppsDyn.xml'
tags:
- A1: 'dd:deviceLocation'
A2: 'dd:ApplicationServiceName'
paths 和 tags 根据漏洞报告中描述的 IoC 发现表进行细分,见下文。

HP CVE 检测工具分为 core 和 util 两个包。
HP CVE 检测包结构
➜ hp-cve-check git:(master) ✗ tree
├── lib
│ ├── core
│ │ ├── constants.py
│ │ ├── iocCheck.py
│ │ ├── module_parser.py
│ │ └── requests.py
│ └── utils
│ ├── printer.py
│ └── help.py
├── modules
│ └── hp-officejet-4630.yml
| -O | 输出文件 | -O output.txt |