破壳漏洞(CVE-2014-6271)分析
受影响版本:GNU Bash 4.3及之前版本
影响范围:主流的Linux和MacOSX操作系统,与bash交互的各种应用程序,如HTTP,FTP,DHCP等等。
漏洞原理及POC验证:
1.bash基础知识
1.1局部变量
此变量在另一bash进程中无效,因此为局部变量。
1.2全局变量
export命令可设置全局变量,env命令也有此功能。
1.3局部函数
foo(){echo "111";}
同里,可判断为局部函数。
1.4全局函数
2.目前bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题的是 以“(){”开头定义的环境变量在env中解析为函数后,bash执行没有退出,而是继续解析后面的shell命令。当然,核心原因是在输入过程中没有严格地限制边界,也没有做出合法的参数判断。
2.1POC验证
env x='() { :;}; echo vulnerable' ./bash -c "echo this is a test"
POC中,env解析(){为函数,继续解析后面的代码,经过尝试,必须要有./bash -c "echo this is a test",否则前面的echo vulnerable不会执行。
2.2结合bash代码做POC分析
2.2.1POC中定义变量x为() { :;}; echo vulnerable,它会变成函数,于bash中的函数定义有关。
bash中函数定义为
function function_name() {
body;
}
因此,当bash解析发现(){时,就认为它是函数。
2.2.2bash解析函数后,会继续执行后面的代码,原因在于parse_and_execute函数。
builtins/evalstring.c的parse_and_execute函数中,
else if (command = global_command)
{
struct fd_bitmap *bitmap;
...
首先,输入的命令代码走这条分支,这条分支并没有对命令的类型进行判断,从而导致bash能继续解析执行后面的代码。
补丁:
第一处,在builtins/evalstring.c的parse_and_execute函数中,
else if (command = global_command)
{
struct fd_bitmap *bitmap;
...
加入
if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def)
第二处,在/builtins/common.h加入
#define SEVAL_FUNCDEF 0x080 /* only allow function definitions */
#define SEVAL_ONECMD 0x100 /* only allow a single command
第三处,在/builtins/evalstring.c加入
if (flags & SEVAL_ONECMD)
break;
它们主要对命令代码的函数属性和命令个数做了限制。如果是这个命令没有创建函数的功能,那它必须是一个命令【即命令中间不能存在;】。这有效的遏制了POC的攻击。
破壳漏洞(CVE-2014-6271)分析的更多相关文章
- Shellshock 破壳漏洞 Writeup
破壳漏洞 CVE编号:CVE-2014-6271 题目URL:http://www.whalwl.site:8029/ 提示:flag在服务器根目录 ShellShock (CVE-2014-6271 ...
- 破壳漏洞利用payload—shellshock in the wild
FireEye关于破壳漏洞(shellshock)在现实中的利用有一篇文章: shellshock in the wild 原文较长,进行了对CGI利用的详细分析,笔者比较感兴趣的是Shellshoc ...
- 对CVE-2014-6271 [破壳漏洞] 的一次不太深入的跟踪
@firtst:有些事,该你遇到的始终会遇到!2013年,Struts2远程代码执行漏洞闹的满城风雨时,当时还对此一无所知:2014年4月,HeartBleed掀起波涛汹涌时,较快对此予以关注,晚上跑 ...
- 应用安全-软件安全-漏洞CVE整理
jira ssrf CVE-2019-8451 url = url + '/plugins/servlet/gadgets/makeRequest?url=' + host + '@www.baidu ...
- CVE-2013-2551漏洞成因与利用分析(ISCC2014 PWN6)
CVE-2013-2551漏洞成因与利用分析 1. 简介 VUPEN在Pwn2Own2013上利用此漏洞攻破了Win8+IE10,5月22日VUPEN在其博客上公布了漏洞的细节.它是一个ORG数组整数 ...
- CVE-2014-6271 Shellshock 破壳漏洞 复现
补坑. 什么是shellshock ShellShock是一个BashShell漏洞(据说不仅仅是Bash,其他shell也可能有这个漏洞). 一般情况来说,系统里面的Shell是有严格的权限控制的, ...
- 【Android漏洞复现】StrandHogg漏洞复现及原理分析_Android系统上的维京海盗
文章作者MG1937 CNBLOG博客:ALDYS4 QQ:3496925334 0x00 StrandHogg漏洞详情 StrandHogg漏洞 CVE编号:暂无 [漏洞危害] 近日,Android ...
- CVE-2014-0322漏洞成因与利用分析
CVE-2014-0322漏洞成因与利用分析 1. 简介 此漏洞是UAF(Use After Free)类漏洞,即引用了已经释放的内存,对指定内存处的值进行了加1.其特点在于攻击者结合flash实现了 ...
- CVE-2013-3897漏洞成因与利用分析
CVE-2013-3897漏洞成因与利用分析 1. 简介 此漏洞是UAF(Use After Free)类漏洞,即引用了已经释放的内存.攻击者可以利用此类漏洞实现远程代码执行.UAF漏洞的根源源于对对 ...
随机推荐
- Host 'controller' is not mapped to any cell
问题: Host 'controller' is not mapped to any cell 解决: 执行:nova-manage cell_v2 simple_cell_setup 再次检查:
- 第四篇 Scrum冲刺博客
一.会议图片 二.项目进展 成员 完成情况 今日任务 冯荣新 商品底部工具栏 购物车列表 陈泽佳 渲染搜索结果,防抖的实现 静态结构 徐伟浩 未完成 商品信息录入 谢佳余 未完成 搜索算法设计 邓帆涛 ...
- 重拾Java Web应用的基础体系结构
目录 一.背景 二.Web应用 2.1 HTML 2.2 HTTP 2.3 URL 2.4 Servlet 2.4.1 编写第一个Servlet程序 2.5 JSP 2.6 容器 2.7 URL映射到 ...
- asp.net报表结构学习记录
当一份web报表项目压缩包躺在我的文件夹里时,我是完全懵的.作为一个学习了一个月java的asp.net小白,以前从来没有接触过这方面,我完全不知道从何入手. 手里也有asp.net开发学习视频,但都 ...
- Linux下非root用户运行Tomcat
PS:Linux下使用非root用户运行tomcat的原因 由于项目需求,也由于root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限. 这意味着你的任何一个页面脚本(htm ...
- 谷歌蜂鸟算法对网站seo优化有何影响
http://www.wocaoseo.com/thread-89-1-1.html 谷歌在过去三个月里,非常低调的推出了蜂鸟算法,据谷歌技术员表示,此种方法一出,将影响90%网站的排名, ...
- GA教程:使用自定义变量来扩展高级细分
http://www.wocaoseo.com/thread-64-1-1.html 您可以使用自定义变量来扩展高级细分的范围. 高级细分依据的标准是用户的会话(访问)数据.如果某个访问者在指定日期范 ...
- Qt QDialog添加最大化和最小化按钮
Qt QDialog添加最大化和最小化按钮(转载) QDialog窗体右上角默认是没有最小化和最大化按钮的. 1.效果 2.上代码 1 // 设置窗体最大化和最小化 2 Qt::WindowFlags ...
- 小程序商城系统CRMEB Pro v1.1全新重构,新增DIY功能
CRMEB ProV1.1全新升级发布,真正实现了后台可自由拖拽组合实现首页布局的DIY功能,这一功能的实现,将告别过去千篇一律的同质化界面布局,真正实现个性化.高自由的随心组合.本次发布的版本中我们 ...
- Mybatis入门篇之基础CRUD
前言 作为一个资深后端码农天天都要和数据库打交道,最早使用的是 Hiberate,一个封装性极强的持久性框架.自从接触到 Mybatis 就被它的灵活性所折服了,可以自己写 SQL,虽然轻量级,但是麻 ...