详细的漏洞复现:Shellshock CVE-2014-6271 CVE-2014-7169

本文详细介绍了Shellshock漏洞(CVE-2014-6271和CVE-2014-7169)的复现过程,包括漏洞原理、利用方式和复现步骤。在复现过程中,作者遇到了多个问题,如环境配置、权限、文件编辑和远程访问等,并给出了相应的解决方案。通过这个过程,读者可以学习到如何验证和避免这类漏洞。
摘要由CSDN通过智能技术生成

前言

巨详细的复现过程等你来!因为遇到了很多问题,因此目录做的详细一些,方便大家查看和搜索对自己有用的内容。

复现过程是在我踩过很多坑后按照应该做的步骤梳理后的流程,目的是希望你可以一次成功不用遇到问题后各种填坑。如果你遇到不明白我为什么要采取一些看似无关的环境配置步骤的情况,可以到4. 遇到的问题中看我的探索过程,希望可以提示你。


漏洞原理

Bash支持通过进程环境导出shell变量和shell函数到子进程的其他的bash实例中。现有的bash版本使用环境变量实现这一过程。环境变量以函数名命名,以“() { }”作为环境变量的值传送函数定义。由于bash处理函数定义后仍会继续解析和执行跟在函数定义后的shell命令导致远程任意代码执行。

核心原因:没有严格限制输入的边界,没有合法化的参数判断。

详见:https://seclists.org/oss-sec/2014/q3/650

安天实验室对CVE-2014-6271破壳漏洞进行了详细的分析,且提供了其他参考资料。

例子:

VAR=() { ignored; }; /bin/id

当上述环境变量导入bash进程时将执行/bin/id

解决方案:安装补丁。在补丁中主要进行了参数的合法性过滤,补丁程序在/builtins/evalstring.c的parse_and_execute函数中进行了输入的command进行了合法性的边界检测。(CVE-2014-6271 的修补不够完善,导致CVE-2014-7169。)

利用方式

需要以下条件:

  1. 远程服务会调用bash。(创建bash子进程)
  2. 远程服务允许用户定义环境变量。
  3. 远程服务调用子bash时加载了用户定义的环境变量。

攻击向量:

  1. 对CGI脚本的HTTP请求(bash命令可能出现的位置有:请求方法,路径,服务器协议,Header的值(Referer、host、UserAgent等)。还可能出现在查询字符串,查询字符串变量名)
  2. OpenSSH(通过AcceptEnv,TERM,SSH_ORIGINAL_COMMAND)
  3. 涉及其他需要额外编程设置的环境变量的情况

复现过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值