海康威视是一个致力于不断提升视频处理技术和视频分析技术,面向全球提供领先的监控产品、技术解决方案与专业优质服务,
物联网发展和安全威胁总是如影随形。两个月前,我想研究一下网络摄像机,然后就在亚马逊上购买了一个比较便宜的,由海康威视代工生产的Elisa Live 720p HD IP Camera。当我在破解Elisa摄像机尝试获取密码信息的过程中,却偶然发现了海康威视远程系统的一个XML外部实体注入漏洞(XXE)。
XXE Injection即XMLExternal Entity Injection,也就是XML外部实体注入攻击,漏洞是在对非安全的外部实体数据进行处理时引发的安全问题。在XML1.0标准里,XML文档结构定义了实体(entity)这个概念。实体可以通过预定义在文档中调用,实体的标识符可访问本地或远程内容。如果在这个过程中引入了恶意源,在对XML文档处理后则可能导致信息泄漏等安全问题。
1 研究开始
通常来说,大多网络摄像机数据要被上传到其后台系统中,也就是说,只有利用网页或者app通过其云服务平台才能访问摄像机。我通过摄像机以太网接口把其连接到实验室环境,进行网络流量监听。因为一些设备内置了老旧或不安全的固件,所以如果想做物联网设备相关的实验,强烈建议不要急于把设备接上互联网。
从Wireshark抓包流量中发现了几个有意思的数据包:
(1)两个未加密的请求调用:
(2)向网站www.hik-online.com发起POST请求的base64加密数据包(后作分析)
(3)从Amazon S3存储中下载更新的Get请求:
2 尝试破解网络摄像机
利用Nmap扫描摄像机,发现了一些开放端口服务,其中包括一个登录页面,经尝试,一些海康威视常用的默认用户名和密码组合无法正确登录。后来发现,密码验证的控制器受http摘要认证机制保护,这是该固件独有的特点。利用binwalk和 hiktools对固件进行分析后,虽然没发现任何摘要认证信息,却提取到了一些有意思的东西,如/etc/passwd文件和其中的root密码hiklinux:
root:ToCOv8qxP13qs:0:0:root:/root/:/bin/sh
对固件进行升级之后,摄像机的SSH端口就变为关闭状态了,所以我没法利用这个点,只能尝试其它途径。
3 发现XXE漏洞
回到向www.hik-online.com发起请求的数据包,它是一个Base64编码的POST字符串,解码之后是一堆乱码,当然,摄像机用来验证服务器的密码可能就在固件中,只是需要时间去分析发现。然而,我从海康威视网站上无意发现了这个:
如果发现任何漏洞,请联系HSRC@hikvision.com,请勿对外公开漏洞细节。
这是一个漏洞悬赏项目,好吧,让我们来研究研究它的POST请求。由于这是一个XML POST请求,我首先尝试用SYSTEM entity方法来让远程网站引用本地实体文件,如:


闽公网安备 35020602001684号