从语法解析角度分析Shellshock漏洞[CVE-2014-6271] http://www.2cto.com/Article/201409/339021.html

从语法解析角度分析Shellshock漏洞[CVE-2014-6271]
2014-09-29       1  个评论       作者:yaoxi
收藏     我要投稿

 文档说明

这次,我们结合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作为解释器的应用。

漏洞测试
一、本地测试
# env x=’() { :;}; echo vulnerable’ bash -c “echo this is a test”
打印出:
vulnerable
this is a test

二、 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>

漏洞分析
在上面的测试中,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的语法解析过程,可以帮助我们更好的理解该漏洞的详细情况。

一、Bash的词法和语法分析是用flex and yacc来实现。关于flex和yacc,不明白的可以自己去查询相关资料。这里简单介绍一下:
Flex词法分析器将数据流中的各类词先提取出来,形成一个个的token,供语法分析器使用Yacc语法分析器将文法符号按照一定的规则进行移进-规约操作,最终归约为目标S文法

二、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)

三、在parse_and_execute函数中部分解析工作由yyparse完成,它在parse_command中被调用。

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

 

漏洞修复:
以下是相关linux发行版本的官网,请系统管理员&站长关注这些patch链接,及时下载最新补丁,修复Bash漏洞!

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值