关于bash的shellshock漏洞
这一漏洞的描述如下:
Shellshock (CVE-2014-6271, CVE-2014-6277, CVE-2014-6278, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187) is a vulnerability in GNU's bash shell that gives attackers access to run remote commands on a vulnerable system. If your system has not updated bash in since Tue Sep 30 2014: 1:32PM EST (See patch history), you're most definitely vulnerable and have been since first boot. This security vulnerability affects versions 1.14 (released in 1994) to the most recent version 4.3 according to NVD.
这里还有一个测试这一漏洞的脚本:
至于原理,看了半天,大概有点明白了:
漏洞的关键在于bash会把定义的各种函数放到env里面去,大致的格式如下:
$ function foo { echo bar; }
$ export -f foo
$ env | grep -A1 foo
foo=() { echo bar
}
这样的话,是不是可以放一个假的函数进去呢?答案是,可以!而且,这里的关键在于,这里它执行函数的时候,不是检测完整的“{}”对,而是简单的执行“{”之后的所有bash代码!!!也包括你放进去的代码。。。所以,为什么不放点东西进去让它执行?
那么话说回来了,是不是不执行bash不就完事了?理论上是这样的。但是,事情总有意外,比如,你在编程的时候使用了systcall之类的,去运行了shell指令。你的程序继承了父程序的环境变量,你调用的systemcall空间继承了你程序的环境变量,然后,它就可能顺带的执行被注入到环境变量中的代码。
下面是360提供的简单测试sh的一个方案:
1. 服务器端有一个shell脚本,内容随意,可以如下:
#!/bin/bash echo "Content-type: text/html" echo "" echo '<html>' echo '<head>' echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">' echo '<title>PoC</title>' echo '</head>' echo '<body>' echo '<pre>' /usr/bin/env echo '</pre>' echo '</body>' echo '</html>' exit
2. 此时,用户端是可以用浏览器,curl,wget,nc...等等工具去连接你的服务器,并触发这个脚本的。比如,curl,可以看到:

3. 注意,这是正常情况!!!正常情况就是该显示嘛,就显示嘛!!!但是,WEB服务器都是把http的header都先放到ENV里面去的。所以,有了下面的访问(nc和wget类似,给传header就行):

4.咳咳。。然后你就欢快的看到了下面的情形。http的header被服务器放到了ENV里;ENV被作为cgi的bash脚本继承。当作为cgi的shell脚本执行时,注入的这一个“假函数”也被执行。而这一段假函数做的事,则是把bash挂到“某IP”的8080端口上。。。所以,在“某IP”上用nc监听时,我们看到bash热情的向我们奔来。

顺带搜了下其他的反弹shell的方式。。。只在这里做个记录,大致看了下,有些有错误的。基本上都是建立一个tcp链接,然后把bash以交互式方式打开(-i interactive),然后把输入输出都重定向到这条TCP链接上。
bash版本:
关于bash的shellshock漏洞的更多相关文章
- Shellshock漏洞复现
漏洞分析: exp: curl -A "() { :; }; echo; /bin/cat /etc/passwd" http://172.16.20.134:8080/victi ...
- 威胁远胜“心脏出血”?国外新爆Bash高危安全漏洞
这几天Linux用户们可能不能愉快地玩耍了,红帽(Redhat)安全团队昨天爆出一个危险的Bash Shell漏洞.其带来的威胁可能比早前披露的“心脏出血”漏洞更大更强! [OpenSSL心脏出血漏洞 ...
- Bash Shellshock(CVE-2014-6271)破壳漏洞测试
0x01 漏洞原理 Bash使用的环境变量是通过函数名称来调用的,导致漏洞出问题是以"(){"开头定义的环境变量在命令ENV中解析成函数后,Bash执行并未退出,而是继续解析并执行 ...
- 详细的漏洞复现:Shellshock CVE-2014-6271 CVE-2014-7169
目录 前言 漏洞原理 利用方式 复现过程 1. 环境准备 (1) 为容器配置固定IP地址 (2) 查看bash版本 2. 本地验证:测试镜像系统是否存在漏洞 3. 远程模拟验证(原理验证) (1) 查 ...
- CVE-2014-6271 Shellshock 破壳漏洞 复现
补坑. 什么是shellshock ShellShock是一个BashShell漏洞(据说不仅仅是Bash,其他shell也可能有这个漏洞). 一般情况来说,系统里面的Shell是有严格的权限控制的, ...
- Shellshock 破壳漏洞 Writeup
破壳漏洞 CVE编号:CVE-2014-6271 题目URL:http://www.whalwl.site:8029/ 提示:flag在服务器根目录 ShellShock (CVE-2014-6271 ...
- bash shell漏洞及测试
1.bash shell是大多数linux发行版本的默认shell命令解释器,但是最近爆出bash shell存在漏洞. 2.如果Bash是默认的系统shell,网络攻击者可以通过发送Web请求.se ...
- linux_曝出重大bash安全漏洞及修复方法
日前Linux官方内置Bash中新发现一个非常严重安全漏洞(漏洞参考https://access.redhat.com/security/cve/CVE-2014-6271 ),黑客可以利用该Bas ...
- ShellShock 攻击实验
一. 实验描述 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发.在本实验中,学生需要亲手重现攻击来理解该漏洞,并回答一些问 ...
随机推荐
- java7-4 继承的练习
1.Override和Overload的区别,Overload能改变返回值类型吗? 答: Override就是方法重写:在子类中,出现和父类中一模一样的方法声明的现象 Overload就是方法重载:在 ...
- Android优化——UI检视利器:Hierarchy Viewer
在Android的SDK工具包中,有很多十分有用的工具,可以帮助程序员开发和测试Android应用程序,大大提高其工作效率.其中的一款叫 Hierachy Viewer的可视化调试工具,可以很方便地在 ...
- js知识体系的梳理一
今天简单的总结了js的一些东西,梳理下整个体系,每一次的总结都会有不同的收获:js总结一一.[获取元素]: 1.通过ID: var oBtn=document.getElementById('btn1 ...
- Gradle的HelloWorld
Gradle的脚本名为 build.gradle task hello{ doLast{ println("Hello World") } } 运行:gradle -q hell ...
- JCS 的基本使用
JCS 是一款简单的内存缓存,基本使用如下 1.在 classpath 下配置 cache.ccf ,可以使用默认配置 jcs.default= 2.代码 package org.zln.jcs; i ...
- [3]MVC3中使用Telerik(转)
ASP.NET MVC的Model元数据与Model模板:预定义模板 http://www.cnblogs.com/artech/archive/2012/05/02/model-metadata-a ...
- iframe在ipad safari的显示
今 天要在web中嵌套一个网址或本地HTML,用到了iframe,在电脑上设置scrolling=‘auto’,宽度高度,会有滚动条出现.而在 ipad上会全部显示整个网页的宽度高度.scrollin ...
- Nginx支持连接数的问题
据网上有人说nginx的配置中: nginx支持的最大连接数与以下因素有关: worker_processes ; events { worker_connections ; } ulimit -a ...
- ORACLE SELECT INTO NO_DATA_FOUND问题
存储过程中使用了类似如下语句: SELECT col INTO v_col FROM t_table 当查询不到记录时,会出现“数据未发现”的异常 解决方法: (1)使用MAX函数 SELECT MA ...
- 软件开发之路、Step 1 需求分析
百度百科 需求分析 所谓"需求分析",是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么.可以说,在软件工程当中的“需求分析” ...