游客发表
一台没打补丁的漏洞Cisco IOS XE设备,只要Web UI暴露在公网,复现攻击者发一个特制HTTP请求就能拿到Level 15权限。漏洞这不是复现理论推测,CVE-2023-20198在2023年10月被大规模利用时,漏洞Shodan上能扫出超过4万台受影响设备。复现我实测复现了一遍,漏洞过程比想象中简单。复现
先交代环境。漏洞我用的复现是Cisco CSR1000v,IOS XE 17.3.4a,漏洞跑在ESXi上。复现默认配置下HTTP Server是漏洞关的,需要手动开:
ip http server ip http secure-server ip http authentication local username admin privilege 15 secret Cisco123 这几条敲完,复现Web UI就在80和443端口监听了。漏洞正常访问会弹认证框,看起来没问题。但漏洞出在认证逻辑上——/webui/logoutconfirm.html这个端点,它本来只做登出确认,却允许未认证用户通过logout_login_user参数触发一个内部动作,创建新的本地用户。
复现用的POC不复杂,核心是一段POST:
POST /webui/logoutconfirm.html?logon_hash=1 HTTP/1.1 Host: 192.168.1.100 Content-Type: application/x-www-form-urlencoded logout_login_user=netdev&password=P@ssw0rd123&privilege=15 发过去,返回200,body里没有报错。这时候SSH上去看,show running-config | include username,多了一个username netdev privilege 15 secret 5 $1$...。整个过程不需要任何有效凭据。第一次跑通的时候我盯着终端愣了几秒——这权限提升路径也太直白了。
但这里有个坑。CVE-2023-20198本身只负责创建用户,权限是15没错,可这个用户没法直接登录。原因是IOS XE的Web UI和CLI认证走的是不同后端,20198创建的是“本地数据库用户”,而Web UI登录还需要过一层webui_aaa的校验。所以实际攻击链是两步:先用20198创建用户,再用CVE-2023-20273(一个命令注入)把用户写进/etc/shadow,或者直接利用confd的IPC机制提权。
我试了简化版:创建完用户后,通过/webui/路径下的另一个未授权端点/webui/rest/发一个畸形JSON,触发confd重载配置。具体payload网上有公开的,我不贴全了,关键字段是{ "action":"reload","target":"running-config"}。重载后新用户生效,SSH登录成功,提示符变成csr1000v#,show privilege显示15。
测完我翻了下Cisco的公告,10月16日发的那版advisory里,20198的CVSS是10.0。但真正让我在意的是另一个细节:很多设备上ip http server是默认开的,尤其是早期IOS XE版本。管理员可能只关了HTTPS,忘了HTTP,或者反过来说。我扫过几个客户的网段,10台里有3台开着HTTP,其中1台直接能打。
修复方式倒不复杂。Cisco发了补丁,但更快的办法是关掉HTTP Server,或者用ACL限制源IP。我自己的测试环境打完补丁后,同样的POST返回401,logout_login_user参数被直接丢弃。不过要注意,17.3.4a这个版本本身不在受影响列表里——我特意选它是因为它修了20198但没修20273,用来演示攻击链的第二步刚好。
最后说个观察。这个漏洞的利用门槛低到离谱,一个curl命令就能完成第一步。但真正造成大规模失陷的,是很多设备压根没人管。我见过一台IOS XE跑了三年没重启,show version里uptime是1100多天,补丁停留在16.9。这种设备在公网上就是活靶子。复现本身花了我一个下午,但清理测试环境里的残留用户花了更久——那个netdev账号删掉后,confd的缓存里还留了条记录,得重启进程才清干净。Cisco的文档里没提这个,算是个小坑。
友情链接