快速、安全的黑盒暴露检测,针对与 CVE-2025-20352(SNMP 子系统)相关的 Cisco IOS/IOS XE 设备:
sysDescr.0 横幅,标记 Cisco IOS/IOS XE,并将版本标记为 已修复(如果在白名单中)或 可能受影响(需在 Cisco Software Checker 中确认)。该项目不做任何利用。它仅识别响应默认 SNMP community 的设备,并从
sysDescr.0中提取版本信息。
# 0) 克隆此仓库
git clone https://github.com/scadastrangelove/CVE-2025-20352 cve-2025-20352-scan
cd cve-2025-20352-scan
# 1) 安装依赖(Ubuntu/Debian)
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# 2) 创建包含默认 community 的小文件
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 — 目标 IPcommunity — 可用的 SNMP communityvendor — Cisco / Non-Ciscoos_family — IOS、IOS XE 或空version — 从横幅中提取的版本字符串status — 已修复、可能受影响(需在 Cisco Software Checker 中确认),或 非 Cisco / 非 IOSraw — 原始横幅行示例
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 从标准输入(或文件)读取如下格式的行:
<ip> [<community>] <sysDescr...>
它提取 Cisco IOS/IOS XE 版本并标记它们。
已修复版本位于脚本内部的少量白名单中:
FIXED_WHITELIST = {
"IOS": {
# 添加您通过 Cisco Software Checker 确认的精确 IOS 15.x 已修复版本
# 例如 "15.9(3)M12": True
},
"IOS XE": {
"17.15.4a": True
# 随着 Cisco 发布/您确认而添加更多(例如 "17.15.4b": True)
}
}
为什么使用白名单?Cisco 的安全公告指示管理员使用 Cisco Software Checker 确定每个版本/平台具体受影响/已修复的构建。因此,脚本保守处理:如果某个 Cisco IOS/IOS XE 版本不在已修复列表中,则标记为 “可能受影响”,您应在检查器中验证。
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# 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
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 <IP> 1.3.6.1.2.1.1.1.0
python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv
column -s, -t < parsed.csv | less -S
snmpget 查询 sysDescr.0。FIXED_WHITELIST。本项目采用 MIT 许可证 授权。完整文本见 LICENSE 文件。
Проект распространяется по лицензии MIT. Полный текст — в файле LICENSE.
Быстрая и безопасная оценка экспозиции устройств Cisco IOS/IOS XE, связанная с CVE-2025-20352 (подсистема SNMP):
sysDescr.0 Python-скриптом: помечаем Cisco IOS/IOS XE и проставляем статус Fixed (если в белом списке) или Potentially Vulnerable (проверить в Cisco Software Checker).Проект не эксплуатирует уязвимость. Он лишь определяет устройства, отвечающие на дефолтные SNMP-сообщества, и извлекает версию из
sysDescr.0.
# 0) Клонирование
git clone https://github.com/scadastrangelove/CVE-2025-20352 cve-2025-20352-scan
cd cve-2025-20352-scan
# 1) Зависимости (Ubuntu/Debian)
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-Ciscoos_family — IOS, IOS XE или пустоversion — строка версии из баннераstatus — Fixed, Potentially Vulnerable (проверить в Cisco Software Checker) или Not Cisco / Not IOSraw — исходная строка баннераПример
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 читает строки вида:
<ip> [<community>] <sysDescr...>
Извлекает версии 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)
}
}
Почему белый список? В описании Cisco предлагается проверять конкретные сборки через Cisco Software Checker. Поэтому, если версия IOS/IOS XE не найдена в списке Fixed, скрипт ставит метку “Potentially Vulnerable”, дальше проверяйте её в чекере.
sudo add-apt-repository -y universe
sudo apt update
sudo apt install -y onesixtyone snmp python3
# 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
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 <IP> 1.3.6.1.2.1.1.1.0
python3 ios_cve20352_parser.py < snmp_raw.txt > parsed.csv
column -s, -t < parsed.csv | less -S
sysDescr.0 напрямую через snmpget.FIXED_WHITELIST подтверждёнными фикс-релизами.This project is licensed under the MIT License. Full text in LICENSE file.
Проект распространяется по лицензии MIT. Полный текст — в файле LICENSE.