分析国外黑客发现的海康威视远程系统XXE漏洞
脚本之家
海康威视是一个致力于不断提升视频处理技术和视频分析技术,面向全球提供领先的监控产品、技术解决方案与专业优质服务,
物联网发展和安全威胁总是如影随形。两个月前,我想研究一下网络摄像机,然后就在亚马逊上购买了一个比较便宜的,由海康威视代工生产的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方法来让远程网站引用本地实体文件,如:
]>
c>&b;c>
但该方法并不奏效,于是,我利用VPS远程传入引用实体,成功了!
]>
c>&b;c>
图:载入外部实体成功
!这就有意思了,既然我们可以使用SYSTEM entity方式加载引用外部实体,就可以通过恶意dtd文件调用回传其它网站文件,如/etc/hosts文件等。所有这些过程都可以通过一个好用的自动化工具XXEinjector来完成:
OK,我可以远程读取网站上的任意文件,包括etc/shadow文件,当然也就获取了这台服务器的root权限。而且,海康威视分布在全球的其它API服务器同样存在该XXE漏洞,最终,如果获得了这些远程服务器权限,甚至连shodan上可搜索的大量网络摄像机都面临安全风险。
漏洞报告提交流程:
2016年8月6日,发送第一封邮件到海康威视安全响应中心(HSRC)
2016年8月16日,HSRC无回应,之后我又发送了一封邮件
2016年9月6日,重新给海康威视市场和公关部门发了一封邮件
2016年9月7日,HSRC确认接收并要求发送更多信息
2016年9月8日,海康威视修复了漏洞并要求我重新测试
2016年9月25日,作为奖励,收到了海康威视一个价值69美元的网络摄像机
**参考来源:iraklis ,FB小编clouds编译,转载请注明来自FreeBuf(FreeBuf.COM)
推荐文章: