-
-
[翻译]在无线网络摄像头(P2P)WIFICAM摄像头的自定义http服务器中发现多个漏洞
-
发表于: 2017-6-8 11:36 22711
-
作者:通过对摄像头安全性的分析,我发现一个预授权REC为root权限的1250型号摄像头。Shodan列出了185000个易受攻击的摄像头。 “云”协议通过仅使用目标摄像头的序列号,在攻击者和摄像头之间建立明文UDP隧道(以绕过NAT和防火墙)。最终,攻击者可以暴力破解摄像头的凭据。
无线网络摄像头(P2P)WIFICAM是一款中文网络摄像头,可以远程流式传输。
无线网络摄像头(P2)WIFICAM是一款整体设计不佳的摄像头,具有很多漏洞。这款摄像头与很多中国其他的摄像头非常相似。
看起来大部分的摄像头是由一家中国公司在散装(OEM)出售,而买方公司转售他们开发的定制软件开发和提供冠名品牌。无线网络摄像头(P2)WIFICAM是其所属品牌之一。
所以,各种摄像头以不同的名称,品牌和功能出售。 HTTP接口对于每个供应商是不同的,但是拥有相同的漏洞。 OEM厂商使用GoAhead(嵌入式Web服务器)的定制版本,并在其中添加了易受攻击的代码。
GoAhead表示,GoAhead本身不受漏洞的影响,但是在GoAhead周围进行定制和特定开发的OEM供应商应当对安全漏洞的负主要责任。
由于代码重用,这些漏洞普遍存在于一个巨大的摄像头列表(尤其是InfoLeak和RCE)中,它们允许使用具有预认证漏洞的1250多种摄像头型号执行root命令。
漏洞概览:
1. CVE-2017-8224 - Backdoor account(后门帐户)
2. CVE-2017-8222 - RSA key and certificates(RSA密钥和证书)
3. CVE-2017-8225 - Pre-Auth Info Leak (credentials) within the custom http server(在自定义http服务器中预授权信息泄漏(凭证))
4. Authenticated RCE as root(以管理员身份进行认证,从而远程控制设备)
5. Pre-Auth RCE as root(以管理员身份预授权,从而远程控制设备)
6. CVE-2017-8223 - Misc - Streaming without authentication(没有认证流)
7. CVE-2017-8221 - Misc - "Cloud" (Aka Botnet)(“云”(又名僵尸网络))
云管理中的漏洞影响了大量P2P或“云”摄像头。
我(作者)的测试表明影响在摄像头上运行的自定义http服务器的InfoLeak会影响至少1250多种摄像头型号。它们可以用于以root身份执行RCE。 因此,这些摄像头可能会受到预认证RCE的影响:
默认情况下,这些摄像头开启并运行Telnet服务:
摄像头中存在一个后门帐户:
/system/www/pem/ck.pem包含具有私有RSA密钥的Apple证书:
HTTP接口由自定义http服务器提供。这个HTTP服务器实际上是基于GoAhead的,并由摄像头的OEM供应商修改(导致列出的漏洞)。它允许2种认证:
htdigest认证或在URI中进行身份验证(?loginuse = LOGIN&?loginpas = PASS)。
默认情况下,Web目录包含到配置文件(system.ini和system-b.inicontain凭据)的符号链接:
使用有效凭据,攻击者可以检索配置,如下所示:
要浏览.cgi文件,攻击者也需要进行身份验证:
但是,似乎没有正确地检查.ini文件的访问。 攻击者可以通过在URI中提供一个空的loginuse和一个空的登录名来绕过身份验证:
提供一个POC:
此漏洞允许攻击者窃取ftp帐户和smtp帐户(电子邮件)凭据。
RCE存在于ftp配置CGI中,在这里和这里的一系列不同型号的摄像头充分的证明了这一点。
目录/被定义为只读属性,因此在此目录中不可能进行修改。
命令注入位于set_ftp.cgi中(参见$(ftp x.com)):
在执行tcpdump时,我们可以看到x.com的DNS解析:
所以,ftp x.com被执行。我们可以使用telnetd的二进制文件启动无身份验证的telnetd访问:
通过测试,我们在端口25 / tcp获得一个root帐户:
/ etc目录属性是只读的。 所以,注入命令不能写入/ etc。 注入位于/tmp/ftpupload.sh中:
通过在自定义的http服务器中组合预认证信息泄漏漏洞,然后将Root认证的RCE作为root身份进行验证,攻击者可以在局域网或互联网上实现以root身份进行身份验证。
提供了一个漏洞利用,可用于获取反向连接的root权限的RCE。
漏洞利用将:
1.通过连接到目标摄像头的远程自定义HTTP服务器来提取有效的凭据
2.用nc接受反向连接
3.执行有效载荷
4.攻击者将使用netcat在第二个终端上收到带有root权限的shell
5.清理配置文件中的有效载荷
它影响到超过1250中摄像头型号。
演示:
第二步:
这里提供一个有效的漏洞利用代码:
或者,你可以在这里得到它
攻击者可以使用10554 / TCP端口使用运行在摄像头上的缺少认证的RTSP服务,在不进行认证的情况下查看流:
或者:
默认情况下,摄像头使用“云”功能。
你可以使用tcpdump嗅探到摄像头的流量,这是非常可怕的:
摄像头尝试解析www.baidu.com,openapi.xg.qq.com,联系硬编码的IP和主机:
看起来这是“云”的功能,默认情况下启用。 此功能的安全性未被证明。
用户可以通过厂商提供的Android应用程序来管理摄像头: object.p2pwificam.client.apk.
Netcam 360也是类似的:
看起来,摄像头所使用的网络协议非常弱:
1.摄像头使用UDP联系远程服务器,
2.应用程序使用UDP联系远程服务器,
3.应用程序向远程服务器发送请求,询问具有特定序列号的摄像头是否在线,
4.服务器将通过“摄像头不存在”,“ 摄像头离线”或“摄像头在线”进行回复,
5.如果摄像头在线,则应用程序和摄像头之间将自动建立UDP隧道,使用云服务器作为连接部分。
然后,应用程序使用UDP隧道到达摄像头:
1.客户端将向凭据发送HTTP请求(仍然以明文形式)
或者
2. 当凭据有效或无效时,摄像头将通过UDP使用HTTP进行回复。
如果凭证有效,摄像头将回复:
如果凭证无效,摄像头将回复:
3. 如果证书是有效的,那么应用程序将通过发送附加凭据的HTTP请求来获得摄像头的CGI托管文件(?loginuse = valid_user&loginpas = valid_pass)
如果认证是确定的,所以很容易的转储明文所有的配置!
注意:这个跟踪是使用下面列出的应用程序之一完成的,以确保应用程序共享相同的“云”网络(似乎在摄像头上运行的守护程序不严格遵守HTTP协议 - 注意缺少/ - 但它确实可行!)。
如果认证不正常 摄像头返回:
由于没有检查,攻击者可以简单地对凭据进行暴力破解。
应用程序发送:
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
- [翻译] AngularJS客户端模板注入(XSS) 9523
- [翻译]利用RDP隧道来突破网络限制 10915
- [翻译]Android 应用逆向工具总结 9206
- [翻译]Powershell 代码反混淆技术研究 14296
- [翻译]针对MySQL和Mongodb数据库的勒索软件 5442