Linux下的McAfee安全扫描软件存在多个漏洞
cac55 2024-10-24 08:51 8 浏览 0 评论
翻译:ResoLutiOn
预估稿费:260RMB(不服你也来投稿啊!)
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
事件综述
近期,有网络安全人员发现:Linux系统下的安全扫描软件McAfee中存在多个安全漏洞【软件传送门:(McAfee for Linux)】,黑客可利用其中一些漏洞盗用Linux系统的root权限,发动RCE攻击。
关于McAfee软件的情况介绍
McAfee VirusScan Enterprise for Linux,一款利用Linux独特访问扫描程序,对系统进行实时防护的安全检测软件,由Intel旗下的子公司McAfee推出。该软件适用于使用Linux系统的企业用户。它能够检测隐藏在存档文件中的Linux病毒并予以阻止;阻止Microsoft Windows恶意软件,防止其通过Linux环境传播;同时还能借助来自McAfee Labs的自动安全更新,确保始终提供最新的Linux病毒防护。由此可见,McAfee VirusScan Enterprise for Linux的功能可谓十分强大。
起初,在很多安全专家看来,这款安全防护软件似乎是“尽善尽美”,它近乎拥有了漏洞研究人员所期待的所有优点,例如:它能够利用系统root权限,这便能够保证用户PC的安全;但在最近一段时间里,McAfee似乎有点淡出人们视野的味道,原因在于在很长一段时间里,McAfee公司已没有对其进行更新了。当发现这些情况时,我决定要细致地了解有关该软件的具体情况。
受到漏洞影响的McAfee版本
安全研究人员证实:从McAfee 1.9.2版本(于2015年2月19日发布)到2.0.2版本(于2016年4月22日发布),都存在多个相同的安全漏洞。它们之间唯一的差别便是:在漏洞利用方面,新版本要比旧版本更容易实施,也即是说:近期的McAfee软件的安全性下降了很多,更容易遭到黑客利用。
漏洞报告时间轴
1.2016年6月23日:安全人员将漏洞的相关情况向McAfee公司的安全应急响应中心(CERT)做了汇报;McAfee公司定于2016年8月23日向公众披露漏洞的具体细节。
2.2016年7月19日:McAfee公司发表声明称: 鉴于关于漏洞的细节仍在不断更新中,他们决定将发布公告的时间延期至9月,最晚可至12月;
3.2016年9月-11月期间:安全人员未与McAfee公司取得联系;
4.2016年12月5日:McAfee公司发布消息称:公司将于12月12日发布关于McAfee软件漏洞的完整报告;
5.2016年12月9日:McAfee公司发表安全公告,定义了漏洞的数字ID;
6.2016年12月12日:完整的McAfee漏洞报告披露。
McAfee软件系统结构
在深入探究McAfee软件漏洞的具体情况之前,我认为有必要先了解有关的软件结构,磨刀不误砍柴工,这将会对之后的漏洞研究有着一定的帮助。
(1)软件所提供的服务:
McAfee VirusScan Enterprise for Linux可向用户提供两种单独的服务:一是用户能够以系统root权限运行该软件;二是还可以一种名为“nails”的非特权用户的身份运行该软件。具体说来,用户可用root权限使用该软件的主要扫描功能,它能够侦听一个本地的Unix网络套接字包(/var/opt/NAI/LinuxShield/dev/nails_monitor)。而网络服务器则可以用nails用户身份来运行,它能够侦听端口0.0.0:55443发出的数据包。
(2)实现进程间的通信
在该软件的架构中,网络服务器是设置在扫描服务上的一个用户交互界面。当用户向网络服务器提交了一个请求时,该请求会被重新格式化,以另一种形式发送给root扫描程序;系统将会在一个HTML界面中显示该用户提交的请求及其相关信息。由于在交互过程中,web服务器不会对用户传递的数据做出太多的限制,这便给黑客利用该漏洞,向系统注入恶意代码提供了可趁之机。
10个具体的McAfee漏洞:
接下来,我将为大家具体介绍10个McAfee VirusScan Enterprise for Linux软件中存在的漏洞。
No.1 CVE-2016-8016:未经验证的远程文件存在性校验漏洞
当我们在浏览网页的编译代码时,即会发现该html文件的存放路径是由tpIt参数来决定。在上图中,该tpIt参数是放置在tasks.html文件中。而运行在web服务器上的Linux Strace工具会显示:可打开/opt/NAI/LinuxShield/apache/htdocs/0409/tasks.html文件,如下所示:
在编译时,如果将tpIt参数放置在地址为..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd(该字符串经过URL加密处理)的不同的页面中,那么编译过程就会出错,系统会返回一个格式错误的页面,并附有错误返回值14。而JavaScript语言中的lookupErrorCode功能函数会根据错误返回值14,向用户发送“web模块使用错误”的提示语句。若将tpIt参数放置在一个不存在的系统路径中,那么错误返回值将变为10,错误提示语句为“系统无法打开该文件”。如下图所示:
若系统中有类似的,已被命名的文件存在,那么系统会向未经授权的用户提示这两种错误编译消息。
那么问题来了,有效的网页编译文件(例如:tasks.html)和无效网页编译文件(例如:..%2F..%2F..%2F..%2F..%2F..%2Fetc%2Fpasswd)之间的区别是什么呢?
我将会继续深入探究这一问题。
No.2 CVE-2016-8017:非法读取未经授权的远程文件(含有约束条件)
经过查看web服务器所使用的不同类型文件,我发现在有效编译文件的任何两个语句之间要么含有__REPLACE_THIS__字符串,要么含有【% %】标识符。
如果攻击者能够将以上的语句添加到系统的任何一个文件中(其中包括系统日志文件),那么他便可以通过web服务器进行远程读取文件。对于该漏洞的防护措施之一便是,对用户的身份进行严格限制:只允许具有nails身份的用户读取系统中的文件。
No.3 CVE-2016-8018:软件中不含CSRF(跨站请求伪造)令牌验证机制
由于在软件的网页交互界面中,不含有防止CSRF攻击的令牌认证功能,这便使得黑客在通过了系统的身份验证后,可以随意地向系统提交认证请求,发动CSRF攻击。现在,看到一个安全软件竟然存在这样一个高危漏洞,令我着实感到很惊讶。利用CSRF令牌保护缺失而发动攻击,这只是黑客实施远程攻击的手段之一。
No.4 CVE-2016-8019:跨站脚本攻击
当将tpIt参数设置为指向NailsConfig.html文件或Monitor.html文件时,info:7和info:5这两个参数值将会替换用户的不可信输入,并将结果返回给JavaScript的formatData函数。info:7代表的是一个执行语句的清单,其中可能包含:single,show,serverUtcOffset=-25200等语句值。之后,系统会将其放入一个由单引号引导的字符串语句中,传递给formatData函数。若info:7被用来指向形如single’.prototype.constructor=eval('alert(“xss”)’)的语句时,eval函数将在formatData函数被调用之前,便会按照函数的功能,计算字符串中恶意代码的值。
之后,经过修改数据包中的信息,系统会向用户发出一条关于XSS攻击的消息,如下所示:
No.5 CVE-2016-8020:远程代码执行及提权漏洞
在进行扫描系统之前,用户需要填写一个4页的表格:
在表格提交之后,系统会向web服务器提交一个请求。下图展示的是整个过程中使用到的部分参数:
nailsd.profile.ODS_9.scannerPath变量所包含的文件路径,也即是系统进行扫描操作的执行路径。若将路径修改为:/bin/sh,则在网页界面中会出现以下的错误结果:
Strace工具将会给出信息,表明系统会通过一个以root权限运行的进程,将该参数传递给一个execve文件(可执行文件)。
No.6 CVE-2016-8021:利用web界面,可向已知地址写入任意文件
用户可通过web界面指定使用一台网络服务器,并从该服务器上获取有关的更新信息。自从我决定要找到一种能够帮助用户远程向系统内写入文件的方法之后,我便意识到前面提到的那个特点会对我有所帮助。
为了查明更新服务器是如何运作的,我先是备份了本地的资源库,之后从我的服务器上下载了新的资源库,重新配置新的服务器。以此来探究服务器的运作过程。
系统日志文件记录了更新进程所完成的操作,包括:下载一个更新程序包、验证其完成性、解压以及安装等。
生成一个shell脚本其实很简单,但这需要花费一定的时间来进行下载,而且必须在一个网络数据包开始发送之前就要完成。这里有一个替代的方法,即为创建一个带有需求数据包的脚本程序,并在其中加入描述信息,就能够实现与shell脚本相同的功能。
结合CVE-2016-8020(漏洞5)和CVE-2016-8021(漏洞6),我们就能够实现提升用户的系统权限(从nails变为root)。使用CSRF或XSS攻击方式,我们便可以实现远程提权。
No.7 CVE-2016-8022:远程利用身份验证令牌
在一次尝试利用一个XSS漏洞和CSRF漏洞的过程中,我将一个简易的cookie工具和从一名授权用户的系统中“拿到”的cookie融合在一起,作为测试工具来使用。但当我准备试着利用我的PC发起“攻击”时,发现我的身份验证失败了:
我还尝试着写出了一个脚本程序,它能够重设在数据通信过程中的阻断和拦截程序。
接下来的两张图能够告诉我们有效请求和无效请求之间的区别:
有效请求:
无效请求
这看起来似乎有点奇怪:当用户向服务器提交了一个系统已授权的请求时,web服务器就会发送该台PC的IP地址(cookie除外)。虽然这种方式有点不寻常,但能够保证通信的安全。
No.8 CVE-2016-8023:暴力破解身份验证令牌
鉴于之前逻辑解析测试的失败,我更想要探究其他的cookie是如何进行逻辑确认测试的。
下面给出的是nailsSessionId cookie的取值情况。它们是在用户进行登录和注销操作的过程中产生的,仅限于nails身份用户。
而在常规的登录过程中,似乎仅有两部分的cookie的情况发生了改变。Cookie的格式为:
相关变量的参数为:
No.9 CVE-2016-8024:HTTP响应拆分攻击
用户可通过点击“系统事件”界面上的导出按钮,以此来导出记录系统日志数据的CSV文件。
当用户发送请求之后,参数info的值会被置为%3A0。一般情况下,该参数的值为multi%2Capplication%2Fvnd.ms-excel。之后,服务器会给系统发送一个名为Content-Type: application/vnd.ms-excel的标头文件(Header)作为响应。攻击者可通过简单地url加密处理标头文件的方式,创建一个藏有恶意标头文件的链接。
No.10 CVE-2016-8025:验证性SQL注入攻击
我在实验中所使用的数据库是SQLite轻型数据库,用来保存相关的设置数据和扫描数据。经过观察我发现,该数据库的安全性较弱,黑客可在该数据库的每一个接口处实施SQL代码注入攻击。这款数据库能够将URL参数转换为SQLite命令语句。使用我在第九号漏洞介绍中提到的CSV导出方法,我们可通过点击一个URL的方式,丢弃CSV文件中的sqlite_master标签。而SQLite中的查询函数select * from sqlite_master;则是被嵌入到了一个URL中。(URL:localhost:55443/0409/nails?pg=proxy&tplt=-&addr=127.0.0.1%3A65443&mon%3A0=db+select+_show%3D%24*++_output%3Dcsv+_table%3Dsqlite_master+&info%3A0=multi%2Capplication%2Fvnd.ms-excel.)
该数据库不用于身份验证,而是用于追踪被扫描过的文件以及系统事件日志。在了解了系统相关的漏洞情况之后,攻击者便可以通过SQL注入攻击来修改系统事件日志,以清除他们在系统中留下的文件追踪记录。
该数据库的模型如下所示:
总结
黑客若将以上所有漏洞均加以利用,便能在Linux系统中以root权限执行RCE攻击,具体如下:
1. 利用CVE-2016-8022(漏洞7)和CVE-2016-8023(漏洞8),可暴力破解身份验证令牌。
2. 可运行被恶意代码感染的更新服务器。
3. 利用CVE-2016-8022(漏洞7),可向服务器发送带有验证令牌的请求,要求服务器自动更新数据。
4. 利用CVE-2016-8021(漏洞6),可迫使目标PC自动创建恶意脚本。
5. 利用CVE-2016-8020(漏洞5)和CVE-2016-8021(漏洞6),可采用发送带有验证令牌的不正确请求的方式来发动攻击,以代替原先执行恶意脚本的攻击方式。
6. 在受到感染的PC上,获得root权限的攻击者可直接运行恶意脚本。
相关推荐
- 让组策略保护Windows XP的安全
-
默认安装完WindowsXP之后,我们的WindowsXP并不很安全。因此,我们有必要对系统进行一些修修补补,一般情况下我们都要动用到注册表。诚然,修改注册表是一种非常有效的方法,但是它需要一定的...
- 你造吗?十种方式保护你免受"零日攻击"
-
|责编:王迪WindowsXP的寿终正寝,数据安全问题又再一次成为人们关注的焦点。近日,微软透漏,一个基于InternetExplorer的“零日攻击”给用户带来了严重破坏。“零日攻击”一种利用...
- 特立独行——打造游戏专用独立系统
-
大部分人的电脑是为了学习和工作用的,所以,如果你是一个游戏迷,那么推荐你安装一个独立系统专用于游戏,做到工作娱乐两不相扰。方案1:游戏专用移动WindowsXP目的:解决游戏兼容性问题喜欢玩游戏的都...
- 驰为VX8 3G Win8入门教程篇
-
距离Win8.1的正式发布也将近1年了,凭借着Win8.1在移动便携以及娱乐办公上的优势,现在的Win8平板越来越受到消费者的追捧,而驰为VX83G就是其中一款,搭载了卓越的英特尔Z3735G四核芯,...
- 易淘收银软件说明
-
易淘收银系统,简称易淘收银,专为小型及连锁零售、餐饮行业打造。基于SaaS模式,智能便捷,无需维护,轻量级设计却功能强大,简约而不失专业,助力门店高效管理收银。1、前台系统:收银客户端;2、后台系...
- CAD打不开怎么办?原因可能是电脑中毒了,6步就能完美解决问题
-
一、问题描述我的CAD安装后无法打开,安装过程中没有出现任何问题,但是安装后打开就出现一个对话框“DBXCAS0”点击后又出现“FATALERROR:UnhandledAccessViola...
- 腾讯QQ6.1正式版发布更新
-
2014-07-2405:12:00作者:张林【中关村在线软件资讯】7月24日消息:腾讯QQ官网小幅更新了QQ6.1正式版,最新版本号升级至11905,继续主打扁平化、炫酷登录窗口、支持同步最近一...
- Win10等网页版OneDrive无法登陆怎么办?
-
IT之家(www.ithome.com):Win10等网页版OneDrive无法登陆怎么办?Win10之家报道,微软OneDrive云网盘是跨平台的数据同步和存储服务,支持WindowsPC(如Wi...
- 经典回顾:折戟沉沙的Windows Longhorn有着惊艳的登录屏幕
-
尽管微软原先计划让WindowsLonghorn继承WindowsXP操作系统的衣钵,但这个充满雄心壮志的操作系统项目最终还是未能迎来曙光,而是被微软用WindowsVista取而代...
- 电脑怎么优化
-
电脑配置和宽带流量也是硬件,但这些要求其实并不需要很高,关键还是怎么去安全使用电脑并进行有效的优化。电脑的应用和优化处理一、电脑的应用和优化处理二、目前,大家使用的个人电脑,配置方面均没多大问题,比如...
- 怎么安装usb驱动
-
USB驱动主要是针对WIN98时代的说法,如今WINXP已集成大部分USB驱动,通常都能识别。只有极少数情况下,例如手机、打印机或扫描仪等办公设备的USB驱动可能无法自动识别。1、USB驱动偶尔无法...
- 普通话考试多名考生信息被泄露,接投诉后涉事网站被限制访问
-
“陕西普通话成绩查询网(sxpth.cn)”泄露个人信息网站截图网传图片显示,407名普通话考试考生的姓名、身份证号码等个人信息疑似被泄露。9月26日下午,涉事网站sxpth.cn的域名注册商——成...
- 电脑伪技巧——个人电脑无需设置登录密码
-
默认情况下,我们每次登录系统都要输入登录账户对应的密码才能进入桌面。有些朋友觉得这样很麻烦,由于电脑只是自己使用,还不如不要设置密码,这样每次可以自动登录。大家知道,账户密码是系统验证用户合法性的唯一...
- Windows 10/11 自带远程桌面:实用技巧与操作指南
-
Windows10/11自带远程桌面:实用技巧与操作指南在当今快节奏的数字时代,远程访问和控制计算机的需求日益增长。微软在Windows10和Windows11中内置了远程桌面功能,为用户提供...
- 不升级系统的5大原因造吗?
-
2015-01-2405:54:00作者:陈占伟Windows10系统的发布,让人们重新将目光聚焦到生命力长久的Windows系统之上。如今操作系统越来越多,似乎Windows升级的获得的关注度...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 如何绘制折线图 (52)
- javaabstract (48)
- 新浪微博头像 (53)
- grub4dos (66)
- s扫描器 (51)
- httpfile dll (48)
- ps实例教程 (55)
- taskmgr (51)
- s spline (61)
- vnc远程控制 (47)
- 数据丢失 (47)
- wbem (57)
- flac文件 (72)
- 网页制作基础教程 (53)
- 镜像文件刻录 (61)
- ug5 0软件免费下载 (78)
- debian下载 (53)
- ubuntu10 04 (60)
- web qq登录 (59)
- 笔记本变成无线路由 (52)
- flash player 11 4 (50)
- 右键菜单清理 (78)
- cuteftp 注册码 (57)
- ospf协议 (53)
- ms17 010 下载 (60)