scadastrangelove/CVE-2025-20352

GitHub: scadastrangelove/CVE-2025-20352

针对 CVE-2025-20352 的 Cisco IOS/IOS XE 设备 SNMP 暴露检查工具,通过扫描和解析 sysDescr 标识来评估漏洞风险状态。

Stars: 6 | Forks: 2

# CVE-2025-20352 SNMP 暴露检查 (onesixtyone + parser)

CVE-2025-20352 logo

针对 Cisco IOS/IOS XE 设备的快速、安全的**黑盒暴露检查**,涉及 **CVE-2025-20352** (SNMP 子系统): 1. 使用 **onesixtyone** 配合默认 community **扫描**子网的 SNMP。 2. 使用小型 Python 脚本**解析** `sysDescr.0` 标识,标记 Cisco IOS/IOS XE,并将版本标记为 **Fixed**(如果在白名单中)或 **Potentially Vulnerable**(需在 Cisco Software Checker 中验证)。 ## 快速开始 ``` # 0) 克隆此 repo git clone https://github.com/scadastrangelove/CVE-2025-20352 cve-2025-20352-scan cd cve-2025-20352-scan # 1) 安装依赖项 sudo add-apt-repository -y universe sudo apt update sudo apt install -y onesixtyone snmp python3 # 2) 使用默认值创建小型社区列表 printf "public\nprivate\n" > communities.txt # 3) 扫描您的子网(请编辑这些!) onesixtyone -c communities.txt 192.168.2.0/24 10.1.2.0/24 | tee snmp_raw.txt # 4) 将结果解析为 CSV python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv # 5) 查看效果 column -s, -t < parsed.csv | less -S ``` ## 输出 `parsed.csv` 列: * `ip` — 目标 IP * `community` — 生效的 SNMP community * `vendor` — `Cisco` / `Non-Cisco` * `os_family` — `IOS`、`IOS XE` 或空 * `version` — 从标识中提取的版本字符串 * `status` — **Fixed**、**Potentially Vulnerable**(需在 Cisco Software Checker 中验证)或 **Not Cisco / Not IOS** * `raw` — 原始标识行 **示例** ``` ip,community,vendor,os_family,version,status,raw 1.1.2.4,public,Cisco,IOS,15.5(3)S2,Potentially Vulnerable — IOS 15.5(3)S2; verify in Cisco Software Checker,"Cisco IOS Software, ASR1000 ... Version 15.5(3)S2 ..." 1.1.2.2,public,Non-Cisco,,,Not Cisco / Not IOS,RouterOS RB750r2 ``` ## 解析脚本 `ios_cve20352_parser.py` 从标准输入(或文件)读取如下行: ``` [] ``` 它会提取 Cisco IOS/IOS XE 版本并进行标记。 **已修复版本** 位于脚本内的一个小型白名单中: ``` FIXED_WHITELIST = { "IOS": { # Add exact IOS 15.x fixed versions you confirm via Cisco Software Checker # e.g. "15.9(3)M12": True }, "IOS XE": { "17.15.4a": True # Add more as Cisco publishes/you confirm (e.g. "17.15.4b": True) } } ``` ## 安装依赖 ### Ubuntu/Debian ``` sudo add-apt-repository -y universe sudo apt update sudo apt install -y onesixtyone snmp python3 ``` ### RHEL/Fedora (示例) ``` # onesixtyone 可能在 EPEL 中;否则请从源代码构建 sudo dnf install -y net-snmp-utils python3 git make gcc git clone https://github.com/trailofbits/onesixtyone.git cd onesixtyone && make && sudo make install ``` ## 使用详情 ### 1) 扫描 ``` printf "public\nprivate\n" > communities.txt onesixtyone -c communities.txt 192.168.2.0/24 10.1.2.0/24 | tee snmp_raw.txt ``` 提示: * 添加 `-w 1` 以减少每个主机的等待时间(更快),如果遇到超时则移除它。 * 获取单个主机的标识: snmpget -v2c -c public -t 1 -r 0 1.3.6.1.2.1.1.1.0 ### 2) 解析 ``` python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv column -s, -t < parsed.csv | less -S ``` ## 安全与范围 * 仅扫描您**获得授权**的网络。 * 在慢速链路上保持保守的速率。 * 这是**暴露评估**,而非漏洞利用。 ## 故障排除 * **无结果 / 超时:** 增加超时时间,降低速率,检查 UDP/161 的 ACL/防火墙。 * **Cisco 设备但版本为空:** 标识可能被截断;请使用 `snmpget` 直接查询 `sysDescr.0`。 * **漏报:** 某些设备仅响应允许的管理主机——请从许可的视点运行。 ## 许可证 ### EN 本项目采用 **MIT License** 授权。全文请参阅 [`LICENSE`](LICENSE) 文件。 ### RU Проект распространяется по лицензии **MIT**. Полный текст — в файле [`LICENSE`](LICENSE). # RU — CVE-2025-20352 暴露检查 (onesixtyone + parser) Быстрая и безопасная **оценка экспозиции** устройств Cisco IOS/IOS XE, связанная с **CVE-2025-20352** (подсистема SNMP): 1. **Сканируем** подсети на SNMP через **onesixtyone** с дефолтными сообществами. 2. **Парсим** баннеры `sysDescr.0` Python-скриптом: помечаем Cisco IOS/IOS XE и проставляем статус **Fixed** (если в белом списке) или **Potentially Vulnerable** (проверить в Cisco Software Checker). ## 快速入门 ``` # 0) 克隆 git clone https://github.com/scadastrangelove/CVE-2025-20352 cve-2025-20352-scan cd cve-2025-20352-scan # 1) 依赖项 sudo add-apt-repository -y universe sudo apt update sudo apt install -y onesixtyone snmp python3 # 2) 社区文件 printf "public\nprivate\n" > communities.txt # 3) 子网扫描(请根据自身情况修改!) onesixtyone -c communities.txt 192.168.2.0/24 10.1.2.0/24 | tee snmp_raw.txt # 4) 解析为 CSV python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv # 5) 查看 column -s, -t < parsed.csv | less -S ``` ## 输出 Столбцы `parsed.csv`: * `ip` — IP-адрес * `community` — сработавшее SNMP-сообщество * `vendor` — `Cisco` / `Non-Cisco` * `os_family` — `IOS`, `IOS XE` или пусто * `version` — строка версии из баннера * `status` — **Fixed**, **Potentially Vulnerable** (проверить в Cisco Software Checker) или **Not Cisco / Not IOS** * `raw` — исходная строка баннера **Пример** ``` ip,community,vendor,os_family,version,status,raw 1.1.2.4,public,Cisco,IOS,15.5(3)S2,Potentially Vulnerable — IOS 15.5(3)S2; verify in Cisco Software Checker,"Cisco IOS Software, ASR1000 ... Version 15.5(3)S2 ..." 1.1.2.2,public,Non-Cisco,,,Not Cisco / Not IOS,RouterOS RB750r2 ``` ## Parser `ios_cve20352_parser.py` читает строки вида: ``` [] ``` Извлекает версии Cisco IOS/IOS XE и проставляет статус. **Исправленные версии** перечисляются во внутреннем белом списке: ``` FIXED_WHITELIST = { "IOS": { # Добавляйте точные версии IOS 15.x после проверки в Cisco Software Checker # напр. "15.9(3)M12": True }, "IOS XE": { "17.15.4a": True # Дополняйте по мере публикаций/подтверждений (напр. "17.15.4b": True) } } ``` ## 安装依赖项 ### Ubuntu/Debian ``` sudo add-apt-repository -y universe sudo apt update sudo apt install -y onesixtyone snmp python3 ``` ### RHEL/Fedora (示例) ``` # onesixtyone 可能在 EPEL 中;否则请从源代码构建 sudo dnf install -y net-snmp-utils python3 git make gcc git clone https://github.com/trailofbits/onesixtyone.git cd onesixtyone && make && sudo make install ``` ## 使用 ### 1) 扫描 ``` printf "public\nprivate\n" > communities.txt onesixtyone -c communities.txt 192.168.2.0/24 10.1.2.0/24 | tee snmp_raw.txt ``` Подсказки: * Параметр `-w 1` ускоряет опрос; уберите его, если видите таймауты. * Точечный баннер для узла: snmpget -v2c -c public -t 1 -r 0 1.3.6.1.2.1.1.1.0 ### 2) 解析 ``` python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv column -s, -t < parsed.csv | less -S ``` ## 安全与边界 * Сканируйте только **разрешённые** сети. * На медленных каналах снижайте интенсивность. * Это **оценка экспозиции**, а не эксплуатация. ## 故障排除 * **Пусто/таймауты:** увеличьте таймауты, снизьте скорость, проверьте ACL/фаерволы на UDP/161. * **Cisco без версии:** баннер мог быть обрезан — опросите `sysDescr.0` напрямую через `snmpget`. * **Ложные отрицания:** некоторые устройства отвечают только доверенным хостам — запускайте из разрешённой точки. ## License ### EN This project is licensed under the **MIT License**. ### RU Проект распространяется по лицензии **MIT**.
标签:Cisco IOS, Cisco IOS XE, CVE-2025-20352, Google搜索, ICS安全, Maven, onesixtyone, PKINIT, Python, SCADA, Web技术栈, 后渗透, 哈希传递, 子网扫描, 工控安全, 应用安全, 思科, 插件系统, 无后门, 漏洞验证, 版本识别, 系统遥测, 网络设备安全, 资产暴露检测, 逆向工具, 黑盒测试, 默认口令