CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 百科
  3. 正文

bash 漏洞

2017年5月21日 1686点热度 0人点赞 0条评论
  • 首页
  • 分类阅读
  • 文库
  • 专栏
  • 公开课
  • 商城
  • 漏洞盒子
注册 | 登录
投稿

从语法解析角度分析Bash破壳漏洞

360网站卫士2014-09-30共182760人围观 ,发现 18 个不明物体WEB安全

我们团队结合poc分析了解一下Bash的语法规则,从另外一个角度帮忙大家更好的了解bash以及shellshock漏洞。

漏洞说明

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6271

CVE-2014-6271漏洞是Stéphane Chazelas(法国)发现的SHELL的一个漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行shell命令。

此漏洞可能会影响到使用ForceCommand功能的OpenSSH sshd、使用mod_cgi或mod_cgid的Apache服务器、DHCP客户端、其他使用bash作为解释器的应用。

漏洞测试

0×00 本地测试

# env x='() { :;}; echo vulnerable; bash -c "echo this is a test"
打印出:
vulnerable
this is a test

0×01 http通过cgi测试

构造poc.cgi

确保本地www目录存在一个test.file文件

# curl http://127.0.0.1/poc.cgi  -A ‘x=() { :; }; /bin/rm /www/test.file’
test.file文件已经被删除
# curl http://192.168.0.1/test.file
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
…
</body></html>

漏洞分析

在上面的测试0×01中,User-agent的输入“x=() { :; }; /bin/rm /www/test.file”通过bash的语法分析解析成了一个函数定义和一个command。并且在parse_and_execute函数中command被执行了,导致于test.file被非法删除。

下面的分析主要是看bash的语法是怎样把"HTTP_USER_AGENT() { :; };\n/bin/rm /www/test.file"字符输入解析成一个函数定义和一个command的过程。

了解bash的语法解析过程,可以帮助我们更好的理解该漏洞的详细情况。

0×00

Bash的词法和语法分析是用flex and yacc来实现。关于flex和yacc,不明白的可以自己去查询相关资料。这里简单介绍一下:

Flex词法分析器将数据流中的各类词先提取出来,形成一个个的token,供语法分析器使用

Yacc语法分析器将文法符号按照一定的规则进行移进-规约操作,最终归约为目标S文法

0×01

Bash词法token在y.tab.c中能够找到,word_token_alist和other_token_alist等数组中定义。Bash的语法定义是在parse.y文件中定义的。

分析输入数据:"HTTP_USER_AGENT() \n{\n :;\n };/bin/rm /www/test.file"

在规约到function_def状态的时候,就创建了函数定义,如下接口:

{ $$ = make_function_def ($1, $5, function_dstart, function_bstart); }
对应的$1= HTTP_USER_AGENT, $5的值为函数body, function_dstart为函数定义开始行,
function_bstart为函数体定义开始行。
/bin/rm /www/test.file则是在simple_command:状态的时候,创建了命令,调用接口:
COMMAND *make_simple_command (element, command)

0×02

在parse_and_execute函数中

0×01部分解析工作由yyparse完成,它在parse_command中被调用。

当解析完成后,并没有对command的合归性进行检查,Shell执行的时,会调用read_loop循环读取read_command,然后最终调取command_execute来执行相应的命令。

漏洞修复

以下是相关linux发行版本的官网,请系统管理员&站长关注这些patch链接,及时下载最新补丁进行修复;未能修复该漏洞的网站,可以开启360网站卫士进行防御。

http://lists.centos.org/pipermail/centos-announce/2014-September/

https://www.debian.org/security/2014/dsa-3035

https://rhn.redhat.com/errata/RHSA-2014-1306.html

http://www.ubuntu.com/usn/usn-2363-1/

http://support.novell.com/security/cve/CVE-2014-7169.html

360网站卫士

360网站卫士5 篇文章等级: 2级
|
|
  • 上一篇:Bash远程解析命令执行漏洞测试方法
  • 下一篇:恶意软件隐藏新技巧 – 密写

这些评论亮了

  • 爱立信扫地大爷回复
    "可以开启360网站卫士进行防御..."
    我也是醉了
    )35(亮了
  • 360网站卫士(2级)360网站卫士安全团队回复
    @爱立信扫地大爷 bash漏洞可以通过构造http头字段来对网站实现攻击,如果网站cgi程序调用bash的话,很轻松就能拿下网站服务器。360网站卫士是一个云防护产品,当然能防bash漏洞,请问这有什么问题么?
    )7(亮了
发表评论

已有 18 条评论

  • elf 2014-09-30回复1楼

    360网站卫士???
    非win也有360?

    亮了(0)
  • 爱立信扫地大爷 2014-09-30回复2楼

    "可以开启360网站卫士进行防御…"

    我也是醉了

    亮了(35)
    • 360网站卫士 (2级)360网站卫士安全团队 2014-10-01回复

      @爱立信扫地大爷 bash漏洞可以通过构造http头字段来对网站实现攻击,如果网站cgi程序调用bash的话,很轻松就能拿下网站服务器。360网站卫士是一个云防护产品,当然能防bash漏洞,请问这有什么问题么?

      亮了(7)
  • char_EST (2级)中国平安,不只保险这么简单。 2014-09-30回复3楼

    "可以开启360网站卫士进行防御…"

    同醉!无节操,不要下限。

    亮了(2)
  • 路人 2014-09-30回复4楼

    卧槽最后一句是收了多少钱

    亮了(0)
  • 王珂 (1级) 2014-09-30回复5楼

    表示小白,*nix的主机上不会用360

    亮了(0)
    • 360网站卫士 (2级)360网站卫士安全团队 2014-10-01回复

      @王珂  我表示你没理解这个漏洞

      亮了(0)
  • yjd (4级) 2014-09-30回复6楼

    作者: 360网站卫士

    亮了(1)
  • kalsong 2014-10-01回复7楼

    360网站卫士……你为何如此屌?
    莫非linux服务器要wine一个?

    亮了(1)
    • 360网站卫士 (2级)360网站卫士安全团队 2014-10-01回复

      @kalsong 不是我屌啊亲,是你没懂这个漏洞

      亮了(0)
  • x8664 (1级) 2014-10-01回复8楼

    越分析越觉得bash是无辜的:
    用户传过来什么你们都完全不处理直接给我执行,我哪知道你是要定义一个函数还是要在后面再跟个命令?!

    亮了(1)
  • 雷小某 (1级) 2014-10-02回复9楼

    其实大家就是想问一句,自家的*nix服务器怎么部署网站卫士……表示理解都不在一个点上了~~~

    亮了(3)
  • thy_shenzhen (1级) 2014-10-04回复10楼

    搞网络营销的人,人品真的毫无下限可言!

    亮了(0)
  • 妖奴 (1级) 2014-10-04回复11楼

    360叼爆了

    亮了(0)
  • xiaolang (1级) 2014-10-05回复12楼

    本地执行,还用root权限,你牛叉当然能删除掉了.

    亮了(0)
  • 夜黑风寒 (3级) 2014-10-08回复13楼

    360有什么客户端的没有?

    亮了(0)
  • x1ao (1级) 2015-06-15回复14楼

    curl http://127.0.0.1/poc.cgi -A ‘x=() { :; }; /bin/rm /www/test.file’
    应该是下面这行
    curl http://127.0.0.1/poc.cgi -A ‘x=’() { :; }; /bin/rm /www/test.file’’
    少了两个单引号。

    亮了(0)
  • zoonctrl (5级)该怎么做好信息安全? 2015-08-04回复15楼

    360 的版本 有了?

    亮了(0)

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

360网站卫士

360网站卫士

360网站卫士安全团队

5 篇文章4 条评论

相关阅读

  • 技术分析:攻击者是如何利用系统命令盲注实现“拖库”的?
  • Python eval的常见错误封装及利用原理
  • 批量Struts S2-045漏洞检测及利用
  • IIS6堆喷射及内存破坏漏洞利用图示详解
  • HTML5风险TOP10

特别推荐

关注我们 分享每日精选文章

不容错过

  • 【快讯】乐天中国官网疑似遭遇黑客攻击,至今无法访问kuma2017-03-02
  • 沙虫(CVE-2014-4114)新变种惊现针对台湾的APT攻击事件中Rabbit_Run2014-10-24
  • 钓鱼邮件初探:黑客是如何进行邮件伪造的?dontshoot2016-01-07
  • 黑色藤蔓(Black Vine):专攻航空航天和医疗保险的网络间谍组织森碟2015-07-30

FREEBUF

  • 免责声明
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2013 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

css.php

正在加载中...

0day

标签: 暂无
最后更新:2017年5月21日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me