`
superhj1987
  • 浏览: 205649 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ShellShock这点事

 
阅读更多

前言

在微博上看到最近安全界爆出了一个危害比之前的“心脏流血”(Heartbleed Bug)还要大很多的Bash代码注入漏洞:CVE-2014-6271 “shellshock”漏洞,然后随之而来一系列相关漏洞。详情可以看这些链接:CVE-2014-6271 、CVE-2014-7169CVE-2014-7186CVE-2014-7187CVE-2014-6277。世界上Linux服务器的占有份额是很大的,而bash又是Linux不可或缺的一个部分。可想而知,这个漏洞的破坏力有多大。这个从名字上就可以看出来,ShellShock是医学上的一种严重的疾病,中文叫做“弹震症”,指的是受到爆炸冲击后导致浑身颤抖、思维混乱等症状。这个命名很形象地反映了问题的严重性。

漏洞的原理是什么

参照shellshock官网https://shellshocker.net/,测试本机是否受这个漏洞的影响,先要执行一段shell代码:

env x='() { :;}; echo vulnerable' bash -c ""

如果发现有以下输出说明你系统受到这个漏洞的影响。

vulnerable

为什么会这样呢?看一下代码,首先设置一个环境变量x,x指向的是一个函数,这个函数仅仅有一句:;的代码,就是返回true。后面跟着的echo vulnerable,按说是不应该为执行的。后面的bash -c …,这里使用bash命令开启了子shell,子shell会在启动的时候继承父shell的环境变量,于是在继承x这个变量的时候,就把echo vulnerable这行执行了。结果就是打印出了vulnerable。

官网上提到如果这一步就发现自己收到了影响,那么先update bash吧。

在升级完bash后,并非就高枕无忧了,又有人发现了更NB的利用这个漏洞的办法。执行下面的shell代码:

env X='() { (shellshocker.net)=>\' bash -c "echo date"; cat echo ; rm -f echo

如果这行代码,打印出了日期(可能会伴有一些错误),那么说明你仍然没有逃脱这个漏洞的影响。

bash: X: line 1: syntax error near unexpected token `='
bash: X: line 1: `'
bash: error importing function definition for `X'
2014年 9月29日 星期一 21时04分30秒 CST

update bash之后,只是让子shell继承父shell的时候不去执行后面的语句。但是这个代码变态之处在于它故意使用(shellshocker.net)=让shell报错,后面的>\则留在了缓冲区中,子shell继承到了>\,然后执行echo date,此时相当于下面的代码:

>\
echo date

\是命令换行的,于是就相当于>echo date,>是重定向符号,最后其实等价于date > echo,这样最终把命令给执行了。

此外,官网还列出了其他的exploit,都是利用了子进程对环境变量的继承:

  1. Exploit 3 (???)

    Here is another variation of the exploit. Please leave a comment below if you know the CVE of this exploit.

    env -i X=‘ () { }; echo hello’ bash -c ‘date’
    

     

    If the above command outputs “hello”, you are vulnerable.

  2. Exploit 4 (CVE-2014-7186)

  3. Exploit 5 (CVE-2014-7187)

怎样利用这个漏洞

看了上面说的bash漏洞,那我们怎样来利用呢?举一个典型的列子,现在有很多网站是使用的apache运行在Linux系统上的,也是以子进程的方式来运行web程序的,其中用户端传来的HTTP_USER_AGENT、HTTP_HEADER等是会传递到子进程中的,而且这些变量是用户端任意可以指定的,如果按照开始讲的那样传递一个x过来,但是并不仅仅是echo一个字符串,那危害。。。可想而知。如下面的一个http请求(如果不是仅仅ping一个ip地址):

http-user-agent = shellshock-scan () http-header = Cookie:() { :; }; ping -c 163.com
http-header = Host:() { :; }; ping -c 163.com
http-header = Referer:() { :; }; ping -c 163.com

除此之外,现在已经有利用这个漏洞攻击DHCP客户端、VoIP设备、Git版本控制系统、qmail等的成功例子了,可以说有Linux的地方就有shellshock的“用武之地”,包括Mac os。这篇文章总结了现在发现的各种各样的攻击方式:http://www.fireeye.com/blog/uncategorized/2014/09/shellshock-in-the-wild.html

看到这里,可能有人会说:”让你们天天说Linux有多安全”。其实Windows也逃不开这个漏洞的危害,很多windows系统里都有bash环境,即使没有bash环境,只要你的系统使用了含有bash的组件(如负载均衡、CDN)也难逃shellshock的魔掌。

总结

修复Shellshock漏洞就像打地鼠,堵了一头另一头又冒出,修复一部分,很快就有其他的攻击方式出现,层出不穷,问题的关键其实还是在于bash在设计的时候对于环境变量的依赖。只要存在对环境变量的导出,那么攻击者就可以使用各种方式诱骗bash视其为命令,进行执行。

参考文章

1
0
分享到:
评论

相关推荐

    shellshock

    shellshock代码,网页形式,看起来不错,需要到可以试试哦。

    shellshock 补丁 for rhel5.11 x64

    shellshock 补丁 for rhel5.11 x64

    Lab-03--Shellshock.zip

    针对Shellshock漏洞,有以下几个关键知识点: 1. **漏洞原理**:理解漏洞产生的原因,即bash shell在解析环境变量时,没有正确地限制命令执行,导致了代码注入的可能性。 2. **受影响系统**:确认你的系统是否使用...

    shellshock 漏洞 bash漏洞rpm包升级包

    研究人员周四发布警告称 黑客已经开始利用最新的“Shellshock”电脑漏洞 借助蠕虫病毒扫描有漏洞的系统 然后感染这些 redhat 6 5以上版本32 位64位 升级包

    shellshock补丁

    破壳漏洞(shellshock)红帽4 X86(32位)补丁 内含: bash-3.0-27.0.3.el4.i386.rpm bash-debuginfo-3.0-27.el4.4.i386.rpm ------------------------------------------- 验证命令: env x='() { :;}; echo vulnerable'...

    Bash漏洞——Shellshock浅析.pdf

    由于其作为命令解释器的角色,Bash经常被SSH或telnet等远程访问协议使用,这使得它成为了潜在的安全风险点。 **2. Shellshock的危害** Shellshock的影响主要集中在服务器和特定硬件设备上,尽管个人用户受影响较小...

    Bash漏洞-Shellshock浅析.pdf

    【Bash漏洞与Shellshock】 Bash漏洞,又称为Shellshock,是指在2014年发现的一种严重安全漏洞,影响了广泛使用的Bash shell程序。Bash是Unix-like操作系统,包括Linux和Mac OS X的默认命令行解释器。这个漏洞的存在...

    shellshockcgitool:CGI脚本Shellshock开发工具

    CGI脚本ShellShock开发工具。 什么是Shellshock? Shellshock是Bash版本1.0.3-4.3中的关键错误,可以使攻击者执行任意命令。 Bash的漏洞版本错误地执行了遵循存储在环境变量中的函数定义的命令-攻击者可以在将用户...

    破壳漏洞(ShellShock)红帽最新补丁(29日上午更新)

    从红帽更新服务器上下载下来的,里面包含 RedHat5 X86:bash-3.2-33.el5_11.4.i386.rpm RedHat5 X86_64:bash-3.2-33.el5_11.4.x86_64.rpm bash-debuginfo-3.2-33.el5_11.4.x86_64.rpm RedHat6 X86:bash-4.1.2-15.el6...

    ShellShock 攻击实验-内含源码以及设计说明书(可以自己运行复现).zip

    2. **ShellShock漏洞原理**:漏洞存在于Bash处理函数定义(function)环境变量的方式,当一个函数定义中包含不完整的引用,Bash会尝试在后续的命令行中继续解析这个定义,这就为恶意代码提供了执行的可能。...

    shellshock漏洞的redhat最新补丁及说明

    在"shellshock漏洞的redhat最新补丁及说明"中,Red Hat企业Linux(RHEL)5和RHEL 6这两个版本受到了直接影响。RHEL 5是Red Hat发布的一款长期支持的操作系统,而RHEL 6则是在其之后的一个主要版本,两者都有32位和64...

    shellshock_enum:通过 Shellshock 枚举系统信息

    这是一个通过 Shellshock 枚举系统信息的 metasploit 模块。 在 $MSF/modules/auxiliary/scanner/http 中安装 ruby​​ 脚本 用法: msf > use auxiliary/scanner/http/shellshock_enum msf auxiliary...

    shellshocker:ShellShock Live游戏的程序,用于计算击中敌人所需的角度和强度

    在这里,我们深入探讨一下与这个项目相关的知识点。 首先,C++是一种广泛应用的面向对象的编程语言,以其性能高效、灵活性和强大的功能而闻名。在Shellshocker中,C++被用来构建游戏的逻辑、用户界面和交互。这包括...

    破壳漏洞(ShellShock)官方修补补丁(2014.10.05)

    没有积分的可以去官网下载,这个是官方补丁整理后的,适合下载手动修补研究的。修补命令为: for BP in `ls bash43-*|grep -v sig`; do patch -p0 $BP; done ./configure sudo make sudo make install

    破壳漏洞(shellshock)红帽4 X86(32位)补丁 29日更新

    破壳漏洞(shellshock)红帽4 X86(32位)补丁 内含: bash-3.0-27.0.3.el4.i386.rpm bash-debuginfo-3.0-27.el4.4.i386.rpm ------------------------------------------- 验证命令: env x='() { :;}; echo vulnerable'...

    破壳漏洞(shellshock)红帽4 X86(32位)补丁

    破壳漏洞(shellshock)红帽4 X86(32位)补丁

    sipshock, 用于SIP代理的扫描程序易受Shellshock攻击.zip

    sipshock, 用于SIP代理的扫描程序易受Shellshock攻击 用于SIP代理的扫描程序易受Shellshock攻击用法:sipshock [ Flags ] [ IP Addresses ]用户定义的用法标志:lhost: 本地监听地址lport: 本地侦听端口( 默认 10111...

    ShellShockHunter:这是测试漏洞Shellshock的简单工具

    ShellShockHunter v1.0 这是测试漏洞Shellshock的简单工具 Autor: MrCl0wnBlog: ...Shellshock,也称为Bashdoor,是Unix Bash shell中的一系列安全漏洞,第一个漏洞已于2014年9月24日公开。Shellshock可能使攻击者导致...

    如何确定我的Mac或Linux是否容易受到Shellshock攻击-.docx

    如何确定我的Mac或Linux是否容易受到Shellshock攻击-.docx

    shellshock_demo:shellshock 脆弱性的演示

    开始演示 Shellshock 漏洞: 设置 使用这个 vagrant 文件设置一个 vagrant box。 这将安装 Apache 并转发到端口 8080.. 在 /usr/lib/cgi-bin 中创建一个 cgi 文件。 它可以像 html 内容类型“hello world”一样简单...

Global site tag (gtag.js) - Google Analytics