Linux Bash漏洞复现

article/2025/10/4 19:37:51

Bash是什么?

Bourne Again Shell(简称BASH)是在GNU/Linux上最流行的SHELL实现,于1980年诞生,经过了几十年的进化从一个简单的终端命令行解释器演变成了和GNU系统深度整合的多功能接口。根据维基百科的描述:Bash,Unix shell的一种。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。它也被移植到Microsoft Windows上的Cygwin与MinGW,或是可以在MS-DOS上使用的DJGPP项目。在Novell NetWare与Android上也有移植。

漏洞英文名称: Bash Shellshock
中文命名:破壳(X-CERT)
威胁响应等级:A级
漏洞相关CVE编号: CVE-2014-6271
漏洞发现者: Stéphane Chazelas(法国)
漏洞公布时间: 2014年9月25日
漏洞影响对象: bash 1.14至bash 4.3的Linux/Unix系统

这个漏洞有多大的危害呢?
在发布Bash漏洞一小时之内,就有机器被这个漏洞攻击的报告。截至2014年9月25日,攻击者正在利用基于计算机攻击的基于计算机的僵尸网络进行分布式拒绝服务(DDoS)攻击和漏洞扫描。卡巴斯基实验室报告称,受到攻击的机器被称为“谢谢 - 罗布”,正在对三个目标进行DDoS攻击,他们没有指出。2014年9月26日,一家名为“wopbot”的与Shellshock有关的僵尸网络被报道,该蠕虫被用于针对Akamai Technologies的DDoS攻击并扫描美国国防部。9月26日,安全公司Incapsula在过去24小时内对1800多个来自400个唯一IP地址的网络域进行了17400次攻击;55%的攻击来自中国和美国。截至9月30日,网站性能公司CloudFlare表示,它每天跟踪大约150万次与该bug有关的攻击和探测。10月6日,广泛报道,雅虎服务器在涉及Shellshock问题的攻击中受到了损害。然而,第二天却被否认是特别允许这些袭击的是壳牌之击。

这么说大概有一个直观的概念,但是它是怎么实现的呢?

漏洞复现:

这个漏洞出在Linux的bash上面
在bash中,接受环境变量定义函数,在正常情况下使用没有任何问题:
在这里插入图片描述在这个例子中,我export了环境变量“HELLO”,它定义的函数是在屏幕上打印“Hello World”
我们可以看到,在启用bash之前,环境变量“HELLO”是无效的,而在启动bash后,输入“HELLO”就会执行它的函数,在屏幕上打印“Hello World”,这个时候一切正常,没有任何问题。

但是在bash中,它还接受一种特殊的定义方式:
在这里插入图片描述在这里,我用的不是export,而是env
env代表“先设置后面这个环境变量,然后再执行这个程序”
而bash指定了-c代表启动bash的同时执行“HELLO”
目前看来依然一切正常,没有任何问题
然而在一种特殊的情况下,这种定义方式没有被正确的使用,导致出现了一个致命的漏洞:
在这里插入图片描述依然是使用env,但是我在{}之间没有使用规范的方式去定义这个环境变量x
这导致对于这个环境变量x的定义没有按照规范停在“}”,而是执行了后面所有的指令
也就是说,如果你的计算机存在这种漏洞,而攻击者又掌握了这个技巧,他/她可以在后面插入任何他/她希望执行的任何命令,而你的计算机会忠实的执行它们,也就导致出现了大量的“僵尸网络资源”,这使得Ddos攻击变得简单易行(甚至不需要伪装,你们本来就是不同的计算机发出的请求)

那么,这个漏洞是如何被远程利用的呢?
其实这涉及到另外一个技术——CGI
CGI是在Web技术刚开始兴起的时候出现的,它被用于创建动态网页,出发点是美好的,但是问题就出在它会将一次HTTP请求转化成一个shell调用
也就是说,在Web浏览器与用户的交互过程中,如果使用的是CGI脚本,那么就会产生大量的shell命令和调用。
这就是问题所在
对于利用Bash脚本处理用户请求的网站,攻击者可以精心伪造数据,通过网络传到一台服务器上,直接或间接触发一个bash脚本,这样就可以远程执行恶意代码。
其他一些客户端也会受到影响——比如Linux的DHCP客户端——它大量运用Bash脚本来使修改生效,这也使黑客能通过在DHCP数据包中加入恶意数据来达到攻击的目的。
鉴于Bash是大多数Linux系统(以及OSX)上默认的shell,这个漏洞就意味着,把有害数据编入环境变量,传到服务器端,触发服务器运行Bash脚本,就完成了攻击。
任何已知程序,只要满足以下两个条件就可以被用来通过bash漏洞导致任意命令执行:
1、程序在某一时刻使用bash作为脚本解释器处理环境变量赋值;
2、环境变量赋值字符串的提交取决于用户输入。
目前,可能被利用的系统包括:
运行CGI脚本(通过mod_cgi 和 mod_cgid)的Apache HTTP 服务器;
某些DHCP客户端;
使用Bash的各种网络服务;
使用 ForceCommand 功能的 OpenSSH 服务器;
使用CGI作为网络接口的基于Linux的路由器;
使用Bash的各种嵌入式设备。


http://chatgpt.dhexx.cn/article/49S022m4.shtml

相关文章

关于CentOS下Linux的bash 漏洞,查看和解决的方法

说明:我是今天才发现这个问题的,据说06年就就已经发现了,我才在才发现,后知后觉,如果不是遇到了,估计还没发现,我是个假的程序猿。。。 如果Shell版本较旧的话,建议升级到最新版本的…

墨者学院 - Bash漏洞分析溯源

bash漏洞技术层面分析 漏洞起源: 漏洞信息最早来源于国外知名漏洞网站exploit-db下的第34765篇漏洞报告,其中出现了一条验证命令: env x() { :;}; echo vulnerable bash -c "echo this is a test" 如果在一个含有版本号小于bash…

墨者 - Bash漏洞分析溯源

bash代码注入的安全漏洞分析 bash的环境变量 环境变量是操作系统运行shell中的变量,很多程序的运行需要获取系统的环境变量参数。具体赋值格式如下: $ var"hello world" 然后你就可以使用这个变量了,但是只是局部变量,即是当前进程…

墨者靶场 初级:Bash漏洞分析溯源

墨者靶场 初级:Bash漏洞分析溯源 题目背景介绍实训目标解题方向解题步骤 题目 背景介绍 安全工程师"墨者"对一单位业务系统进行授权测试,在测试过程中,发现存在bash命令执行漏洞。 实训目标 1、了解bash; 2、了解Bas…

Bash漏洞

1、漏洞的起因 这个漏洞的起因源自于Bash(Bourne Again SHell)的ENV指令 http://ss64.com/bash/env.html envDisplay, set, or remove environment variables, Run a command in a modified environment.Syntaxenv [OPTION]... [NAMEVALUE]... [COMMAND [ARGS]...]Options-u …

Linux系统bash漏洞

Linux系统bash漏洞 前言一、漏洞介绍二、实验过程总结 前言 bash,全称为Bourne-AgainShell,是控制Linux计算机命令提示符的软件。2014年被发现其存在严重的安全漏洞。bash在处理含有诸如”(){:;};”的环境变量赋值的代码上存在设计缺陷,错误…

Bash漏洞分析溯源

漏洞简介 Bash(GNU Bourne-Again Shell)是一个命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。Bash还能从文件中读取命令,这样的文件称为脚本。 1.bash漏洞利用的版本号为4.3或更早的版本。产生漏洞的…

命令执行漏洞

命令执行漏洞的定义: 命令执行漏洞,就是指用户通过浏览器或其他辅助程序提交执行命令,由于服务器端没有针对执行函数做过滤,导致在没有指定绝对路径的情况下就执行命令。 命令执行漏洞的原理: 命令执行漏洞之所以…

计算机并行配置,windows10无法启动应用程序提示并行配置不正确解决方法

最近,有不少 Windows10系统 用户反映自己在使用电脑时,遇到了打开不了应用程序的问题,并提示“应用程序无法启动,因为应用程序的并行配置不正确。请参阅应用程序事件日志,或使用命令行sxstrace.exe工具”。这该怎么办呢…

报错提示:应用程序无法启动,因为应用程序的并行配置不正确,有关详细信息,请参阅应用程序时间日志,或使用命令行sxstrace.exe工具。有效解决方法

应用程序打不开,提示如图: 这个问题一般下载下面的文件安装后就可以了。 解决办法: 下载一个Microsoft Visual C 2008 Redistributable Package (x64)文件:下载链接; 链接打开如图,点击红色按钮下载,下载…

[Setting]win7下运行exe失败:应用程序无法启动,因为应用程序的并行配置不正确

win7下运行exe失败:应用程序无法启动,因为应用程序的并行配置不正确 1.问题描述 承接了一个项目,给甲方交接的时候,在它的电脑中运行出现了这个错误。 应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息&#xff0c…

3dmax绑定骨骼

学习网址: https://www.bilibili.com/video/av30075688/?p20 1、案例素材准备 链接:https://pan.baidu.com/s/1fStZ3-CEG9WmdZNtJzPh2w 提取码:n0uf 2、导入初始模型 3、绑定骨骼 找到骨骼按钮。 4、点击骨骼之后,切换到左…

Blender图解教程:如何在保持模型姿态的情况下删除骨骼绑定

有的时候我们可能只想借助骨骼系统为模型摆个造型,然后在保持姿态的前提下提取不附带骨骼的静态模型。 我们只需要在物体模式下选择模型,然后在它的修改器属性标签中,将骨架(Armature)修改器应用掉 然后就可以安全地删除骨骼绑定了 有洁癖…

Unity将物体绑定在spine动画骨骼节点上

实现 1.在目标spine动画下新建一个空物体。 2.给空物体添加BoneFollwer脚本(sprite动画添加BoneFollwer, ui动画添加BoneFollowerGraphic)。此时spine动画上会显示出骨骼节点。 3.选择需要挂载的目标骨骼节点。此时运行会发现挂有该脚本…

blender绑定后,姿态模式 骨骼动 模型不动

就是这个样子,重复做了好几个模型,绑定后,切换到姿态模式,模型就是不能动,模型已经放大,已经合并顶点,已经3天了,找不到原因,卡在这里3天了,盼望帮忙解决

[maya] 简单绑定骨骼和刷权重

新建个正方体,并且确定是绑定模式 提高细分数 在长方体里创建关节 绑定蒙皮,并全部选中,长方体和骨骼。 点击蒙皮-》绘制蒙皮权重,白色代表影响,黑色代表影响不到。

blender 给人物角色绑定骨骼到unity3d

blender 给人物角色绑定骨骼到unity3d 转载请注明出处http://blog.csdn.net/qq_18609315/article/details/50417087 1.在blender中打开你的人物模型。确保角色的坐标轴在世界坐标的中心,人物的坐标轴应在脚底的位置,因为角色会在这个平面上移动 2.在“文…

【美术基础】PMX骨骼网格体导入UE5并重新绑定动作 - Blender 3.2.1 需要重新下载2.8版本使用Cats插件

Blender 3.2版本中对Cats插件的一些修复 FixModel功能修复 在Fix Model的时候会出现报错 此处由于我有Python功底,直接去找源代码修改掉此处的类型错误 将armature.py的205行改为 return context.window_manager.invoke_props_dialog(self, widthint(dpi_value …

【maya】骨骼绑定与蒙皮权重调整

(使用maya版本是2018.5) 首先导入一个没有骨骼的模型。 以下为了方便骨骼绑定我们使用建模工具箱。 文章目录 第一种绑定骨骼方式第二种绑定骨骼方式调整权重 第一种绑定骨骼方式 (这种方式需要人物脸面朝z轴正方向。) 1.上方面板装备-快速装备&am…

maya骨骼架设、蒙皮绑定与权重修正

一、简单的骨骼架设与蒙皮绑定 (一)骨骼创建 1.首先在Human IK面板中添加一个骨架 2.点击X射线显示关节 3. 将每一个关机放到合适的位置 4.点击绑定,菜单栏就会出现骨架以及蒙皮菜单 5.在蒙皮菜单中点击绑定蒙皮选项,根据自己的…