优胜从选择开始,我们是您省心的选择!—— 无忧期刊网
帮助中心
期刊发表
您的位置: 主页 > 论文范文 > 电子论文 > 正文

shellshock漏洞原理及危害研究

作者:admin 来源:未知 日期:2021-03-10 08:28人气:
摘要:Shellshock是Bash命令行界面shell中的一个漏洞,已经存在30年,并在2014年被发现为重大威胁。今天,Shellshock仍然对企业构成威胁。时至今日,尽管它的威胁性已经比发现之年要低。但我们不得不面对在一些疏于打补丁的服务器上仍旧存在着这个漏洞,并且风险巨大。本文浅析了shellshock漏洞的原理及危害,提出简单有效的检测与防御手段,供业内同行探讨研究。
 
关键词:shellshock;漏洞;HTTP;Bash
 
Shellshock是一个威胁性较高的漏洞,它能够给予了攻击者更高的特权,借此攻击者甚至可以随意破坏系统。尽管2014年发现了ShellShock漏洞:CVE-2014-6271,但目前已知该漏洞仍然存在于世界上大量服务器上。此漏洞在2018年又进行了更新:CVE-2014-7169。Shellshock普遍存在的原因并令人意外,因为攻击者可以利用该漏洞进行一种简单且廉价的攻击。虽然自该漏洞发布以来,就已经有可用的修补程序,但是对于那些没有及时更新补丁或进行防御的公司而言,依然容易受到攻击。有传言称该漏洞曾经造成过美国佐治亚州选举系统的瘫痪[1]。Shellshock漏洞可以归类为任意代码执行(ACE)漏洞的一个示例。一般而言,ACE漏洞攻击是在运行中的程序上执行的,并且需要对代码执行,内存布局和汇编语言的内部结构有高度的了解。简而言之,此类攻击需要专家。攻击者会利用ACE漏洞来上传或运行程序,从而为他们提供控制目标计算机的简单方法。这通常是通过运行“shell”来实现的。Shell是可以在其中输入和执行命令的命令行。Shellshock漏洞是一个主要问题,因为它消除了对专业知识的需求,并提供了一种控制另一台计算机(例如Web服务器)并使其运行代码的简单的方式。
 
1原理
 
简单说来,Shellshock是一个漏洞,它允许包含漏洞版本Bash的系统被利用来执行具有更高特权的命令。这使攻击者有可能接管该系统。Shellshock是BashShell(GNUBash最高版本为4.3)中的一个安全漏洞,该漏洞导致Bash从环境变量执行意外Bash命令。利用此漏洞的威胁参与者可以在目标主机上远程发出命令。虽然Bash本身并不是面向Internet的,但是许多内部和外部服务(例如Web服务器)确实使用环境变量与服务器的操作系统进行通信。因此,如果未对输入数据进行检查,则在执行之前,攻击者可能会启动通过BashShell执行的HTTP请求命令。当Web服务器接收到对页面的请求时,该请求的三个部分都可能会受到Shellshock攻击:请求URL,与URL一起发送的标头以及所谓的“参数”(当您在网站上输入您的姓名和地址,通常会将其作为参数发送给请求)。例如,以下是检索example主页的实际HTTP请求:GET/HTTP/1.1Accept-Encoding:gzip,deflate,sdchAccept-Language:en-US,en;q=0.8,fr;q=0.6Cache-Control:no-cachePragma:no-cacheUser-Agent:Mozilla/5.0(Macintosh;IntelMacOSX10_9_4)AppleWebKit/537.36(KHTML,likeGecko)Chrome/37.0.2062.124Safari/537.36Host:example.com在此例中,URL是网址,标头为Accept-Encoding,Accept-Language等。这些标头向Web服务器提供有关用户Web浏览器功能,首选语言,使用的浏览器等信息。服务器会将它们转换为Web服务器内部的变量以便于处理,这样的情况并不少见。例如:Web服务器想知道用户首选的语言是什么,以便于决定如何回应用户。服务器在响应用户对于exmaple主页的请求时,可以通过逐个字符复制请求标头来定义以下变量。HTTP_ACCEPT_ENCODING=gzip,deflate,sdchHTTP_ACCEPT_LANGUAGE=en-US,en;q=0.8,fr;q=0.6HTTP_CACHE_CONTROL=no-cacheHTTP_PRAGMA=no-cacheHTTP_USER_AGENT=Mozilla/5.0(Macintosh;IntelMacOSX10_9_4)AppleWebKit/537.36(KHTML,likeGecko)Chrome/37.0.2062.124Safari/537.36HTTP_HOST=cloudflare.com只要这些变量保留在Web服务器软件中,并且不传递给Web服务器上运行的其他程序,该服务器就不会受到攻击。当将变量传递到称为“bash”的shell中时,会发生Shellshock。Bash是Linux系统上使用的通用shell。Web服务器经常需要运行其他程序来响应请求,并且通常将这些变量传递到bash或另一个shell中。当攻击者修改原始HTTP请求以包含神奇的(){:;};时,就会发生Shellshock问题。假设攻击者把HTTP头部中的User-Agent内容改为:(){:;};/bin/eject,就会在服务器端创建如下变量:HTTP_USER_AGENT=(){:;};/bin/eject。如果该变量被Web服务器传递到bash中,则会发生Shellshock问题。这是因为bash对于处理以(){:;};开头的变量具有特殊的规则。bash不会将变量HTTP_USER_AGENT视为没有特殊含义的字符序列,而是将其解释为需要执行的命令。问题在于HTTP_USER_AGENT来自User-Agent标头,攻击者可以控制此标头,因为它是通过HTTP请求进入Web服务器的。这就是漏洞形成的关键所在,因为攻击者可以使易受攻击的服务器运行所需的任何命令。
 
2危害
 
存在Shellshock漏洞的服务器非常容易受到攻击,而且由于易受攻击的计算机将运行发送给它的任何命令,因此该漏洞带来的危害可能会超出你的想象。一家名为CloudFlare的公司生产WAF,他们的WAF能够提取和分析实际使用的Shellshock字符串。他们发现Shellshock主要用于获取私人信息、获取服务器控制权甚至是进行拒绝服务器攻击。大多数Shellshock命令是使用HTTPUser-Agent和Referer标头注入的,但也有攻击者使用GET和POST参数以及其他随机HTTP标头。为了提取私人信息,攻击者使用了两种技术。最简单的提取攻击的形式为:(){:;};/bin/cat/etc/passwd。它将读取密码文件/etc/passwd,并将其添加到Web服务器的响应中。因此,通过Shellshock漏洞注入此代码的攻击者将看到密码文件作为返回的网页的一部分显示在他们的屏幕上。在一次攻击中,他们只是通过电子邮件将私人文件发送给自己。为了通过电子邮件获取数据,攻击者正在使用如下的mail命令:(){:;};/bin/bash-c\"该命令首先运行whoami以找出运行Web服务器的用户的名称。这特别有用,因为如果Web服务器以root用户身份运行,则该服务器将成为特别丰富的目标。然后,它通过电子邮件发送用户名以及受攻击的网站名称(上面的example.com)。网站名称出现在电子邮件主题行中。攻击者可以在闲暇时登录他们的电子邮件,并找出哪些站点容易受到攻击。可以使用相同的电子邮件技术来提取数据,例如密码文件。
 
3检测
 
由于Shellshock公布已有六年,因此在网上可以找到很多针对该漏洞的扫描程序,其中一些还是免费的。当然对于技术人员来说,使用简单的手工命令也能检测到该漏洞。在Bash提示符下键入一个简单的命令:envX=”(){:;};echoBashisInfected”/bin/sh-c“echocompleted”envX=”(){:;};echoBashisInfected”`whichbash`-c“echocompleted”envVAR='(){:;};echoBashisInfected‘bash-c“echocompleted”如果提示返回“BashisInfected”消息,那么系统就该进行更新和修复了。如果您的输出未返回“BashisInfected”,它将以以下方式响应:bash:warning:VAR:ignoringfunctiondefinitionattemptbash:errorimportingfunctiondefinitionfor`VAR’BashTest鉴于手工检测的效率低下,对于大规模的服务器,建议还是使用专业的漏扫检测比较方便。
 
4防御
 
对于各家网站而言,最重要的防御手段就是及时更新系统补丁。尽管有些公司认为补丁程序管理更多的是IT运维部门的责任,而不是安全部门。但其实应把补丁程序的管理列为安全部门的首要任务,因为比起事后处理而言,这是节省资源的最有效的防御手段。如果您的系统今天仍然容易受到此类攻击,那么您所面对的问题可能就不止这一项了。Shellshock是一个非常老的漏洞,几乎所有系统都有针对该漏洞的补丁。保护自己免受此类漏洞影响的最佳方法是,使用为此漏洞发布的所有修补程序,使系统保持最新。经过全面测试的补丁程序是最大限度地减少业务影响的好方法,例如,运行旧操作系统的关键任务服务器。如果无法立即修补系统,则必须权衡该漏洞的潜在风险与业务影响。Shellshock只是企业必须处理的众多漏洞中的一个。管理看似无穷无尽的漏洞一直并将永远是支撑网络安全的关键策略。
 
5总结
 
Shellshock漏洞虽已公布多年,但在一些由于种种原因而无法更新补丁程序的旧服务器上仍然存在,并且风险巨大。作者希望通过本文简单介绍与分析Shellshock漏洞,能够引起业内同行的重视,降低此类漏洞造成的危害。
 
作者:李维峰

在线客服:

无忧期刊网 版权所有   

【免责声明】:所提供的信息资源如有侵权、违规,请及时告知。

专业发表机构