百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux下的McAfee安全扫描软件存在多个漏洞

cac55 2024-10-24 08:51 12 浏览 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-8024HTTP响应拆分攻击

用户可通过点击“系统事件”界面上的导出按钮,以此来导出记录系统日志数据的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权限的攻击者可直接运行恶意脚本。

相关推荐

无力吐槽的自动续费(你被自动续费困扰过吗?)

今天因为工作需要,需要在百度文库上下载一篇文章。没办法,确实需要也有必要,只能老老实实的按要求买了个VIP。过去在百度文库上有过类似经历,当时为了写论文买了一个月的VIP,后面也没有太注意,直到第二个...

百度文库推出“文源计划”创作者可一键认领文档

11月7日,百度文库发布了旨在保护创作者权益的“文源计划”。所谓“文源计划”,即为每一篇文档找到源头,让创作者享受更多的权益。据百度文库总经理李小婉介绍,文源计划分为三部分,分别是版权认证、版权扶持和...

有开放大学学号的同学,百度文库高校版可以用了。

还在网上找百度文库的下载方式,只要从身边的朋友在读开放大学的,那他(她)的学号就可以登陆到国家开放大学图书馆,还使用百度文库高校版来下载。与百度文库稍有不同,但足够使用了。现转国图链接如下:htt...

搜索资源方法推荐(搜索资源的方法)

今天msgbox就要教大家如何又快又准的搜到各类资源,第一点,排除干扰百度搜索出来啊经常前排展示它的产品以及百度文库,如何去除呢?很简单,后面输入空格减号百度文库,比如你搜高等数学百度文库很多,只要后...

一行代码搞定百度文库VIP功能(2021百度文库vip账号密码共享)

百度文库作为大家常用查资料找文档的平台,大多数文档我们都可以直接在百度文库找到,然而百度文库也有让人头痛的时候。好不容易找到一篇合适的文档,当你准备复制的时候他却提示你需要开通VIP才能复制~~~下载...

百度文库文档批量上传工具用户说明书

百度文库文档批量上传工具用户说明书1、软件主要功能1、批量上传文档到百度文库,支持上传到收费、VIP专享、优享以及共享。2、支持自动分类和自动获取标签3、支持多用户切换,一个账户传满可以切换到...

百度文库现在都看不到文档是否上传成功,要凉了吗?

打开知识店铺,百度文库文档里显示都是下载这一按键,上传的文档也看不到是否成功?咋情况,要取消了吗?没通过审核的也不让你删除,是几个意思,想通吃吗?现在百度上传文档也很费劲,有时弄了半天的资料上传审核过...

微信推广引流108式:利用百度文库长期分享软文引流

百度文库相对于百度知道、百度百科来说,操作上没那么多条条框框,规则上也相对好把握些。做一条百度知道所花费的精力一般都会比做一条百度文库的要多些,老马个人操作下来觉得百度文库更好把握。但见仁见智吧,今天...

职场“避雷”指南 百度文库推出标准化劳动合同范本

轰轰烈烈的毕业季结束了,众多应届生在经过了“职场海选”后,已正式成为职场生力军的一员。这一阶段,除了熟悉业务,签订劳动合同、了解职场福利也迅速被提上日程。而随着国人法律意识的增强,百度文库内《劳动合同...

《百度文库》:素材精选宝库(百度文库官网首页)

《百度文库》:独特功能助力选择高质量素材在当今信息爆炸的时代,如何高效地获取并利用有价值的素材成为了许多人面临的挑战。而《百度文库》作为百度公司推出的一款在线文档分享平台,凭借其丰富的资源、强大的功能...

深度整合和开放AI能力 百度文库和网盘推出内容操作系统「沧舟OS」

【TechWeb】4月25日消息,Create2025百度AI开发者大会上,百度文库和百度网盘推出全球首个内容操作系统——沧舟OS。基于沧舟OS,百度文库APP全新上线「GenFlow超能搭子」...

女子发现大二作业被百度文库要求付费下载,律师:平台侵权,应赔偿

近日,28岁的黎女士在百度百科搜索家乡的小地名时,发现了自己在大二完成的课题作业。她继续搜索,发现多个平台收录了该文,比如豆丁网和文档之家等,有的还设置了付费或积分下载。2月15日,九派新闻记者以用户...

2016杀入百度文库的新捷径,只有少数人才知道的喔

百度的产品在SEO优化中的分量真不用多说,其实很多人都像我一样一直在找捷径。但是我经常发现很多人都是在用死方法。比如发贴吧发帖而不知道去申请一个吧主,知道自问自答而不知道去申请一个合作资格。口碑和贴吧...

百度文库付费文档搜索方法(百度文库付费文档搜索方法有哪些)

一直以来,百度文库中无论是个人中心还是个人主页,都没有像淘宝一样的店内搜索功能,连最近新开的知识店铺也没有设计店内搜索功能,这无论是对上传用户还是下载用户都不方便,上传用户想要搜索自己的文档无法办到...

供读者免费使用!泰达图书馆机构版百度文库新年上新啦

在泰达图书馆读者使用百度文库数字资源不需要VIP,免-费-用!惊不惊喜?快来了解一下吧……新年伊始,为满足区域企业、高校、科研院所以及居民群众在教学、科研及学习过程中,对各类文献资源的需求,泰达图书馆...

取消回复欢迎 发表评论: