前言

国庆之前分析了这个漏洞,看到有《安全参考》读者讨论,发一个简单Bash Shellshock 漏洞说明。

漏洞概述

漏洞原理通俗点说就是bash语言在定义一个函数时没有严格过滤导致代码执行,类似于php语言中的

func1(){ return 1 }; echo 2") ```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
程序在定义完函数func1时继续往下执行,最终导致echo 2 成功命令注入。
<!--more-->

### 利用范围

漏洞利用需要两个条件
第一 bash环境变量可控注入命令
第二 有子进程启动来触发定义函数过程
几个利用的场景

Apache cgi 使用bash 语言
Apache cgi 使用Python ,perl等语言并自动子进程,例如Python代码os.system("id")
Git/Svn/Rsync 等受命令的ssh环境,可以突破限制
Dhcp 客户端
某些stmp邮件服务器等适合以上两个条件

### CVE-2014-7169 poc解释

```env X=‘() {:;}; echo vulnerable’ bash –c "echo this is a test"

env 命令是设置环境变量X并且执行后面的语句,开启bash子进程触发漏洞,
(){}为匿名函数,中间的:;中的冒号相当于nop,函数体没有换行是必须有分
号,:;是bash函数体的最小元素。

CVE-2014-7169绕过

官方补丁之后有人发布了一个绕过poc
env X='() { (a)=>\' bash -c "echo date"

绕过原理具体可见知道创宇的分析,这个poc不能在Apache cgi这样环境下的远程代码执行,
只能来本地突破沙盒。