b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Bash漏洞的原因,修复,验证和分析

电脑杂谈  发布时间:2020-03-25 02:12:29  来源:网络整理

bash漏洞_bash 漏洞测试_bash漏洞检测

Bash漏洞的原因,修复,验证和分析

一个. 发现Bash漏洞

1. 发现和跟踪漏洞

a)2014年9月24日,外国媒体打破了一个在Linux系统中广泛发现的bash软件漏洞,并将其称为: shellshock,中国中文名称为“ Broken Shell”,CVE漏洞编号: CVE​​ -2014- 6271

b)2014年9月25日,GNU Bash正式发布了补丁. 此后不久,外国安全研究人员表示该补丁已被绕过,导致该漏洞仍未修复.

c)2014年9月26日,红帽安全团队意识到了该漏洞的危险,并为绕过shellshock漏洞创建了一个新的漏洞编号CVE-2014-7169,并发布了一个新补丁.

d)2014年9月27日,GNU Bash提供了最新的升级补丁,每个人都尽快为不同版本进行升级. 升级补丁:

2. 名称说明:

CVE: 常见漏洞和披露

漏洞: 缺陷(多种形式的漏洞);易碎点

暴露: 暴露,暴露

Shellshock: 国内中文名称是“破壳”

震惊: n. 休克;震惊休克;震惊;

两个. 攻击者如何利用Bash漏洞发起攻击

1)Bash漏洞是由bash解释器对变量和函数的严格定义引起的,并且过滤也不严格. 攻击者使用此漏洞进行代码注入.

2)攻击者可以向目标系统发起经过特殊修改的HTTP请求. 请求中的某些字段可通过影响环境变量将恶意代码注入服务器. 当服务器派生一个新进程时,环境变量将被引入到新进程中. 子进程中恶意代码的执行(例如HTTP_USER_AGENT环境变量)仅由浏览器发出.

3)如果系统中存在攻击者植入的环境变量,则在系统执行新程序时,将引入环境变量,并执行恶意代码.

三个. Babsh漏洞检测

1. 环境说明:

系统版本: CentOS 6.5版(最终版)

内核版本: 2.6.32-431.el6.x86_64

Bash版本: GNU bash,版本4.1.2(1)-发行版(x86_64)

2. 漏洞验证: CVE-2014-6271:

[root @ master〜]#env x ='(){: ;}; echo CVE-2014-6271'bash -c“ echo test”

如果出现以下两行,则表明bash中存在6271漏洞.

CVE-2014-6271

测试

3. 漏洞验证: CVE-2014-7169

[root @ master〜]#env x ='(){(a)=> \'bash -c“ echo date”;猫回声

bash漏洞_bash 漏洞测试_bash漏洞检测

如果出现以下提示: bash中存在7169漏洞.

bash: x: 第1行: 语法错误接近意外令牌'='

bash: x: 第1行: “'

bash: 导入x的函数定义时出错

Sun Apr 19 22:03:03 CST 2015这是当前系统时间

四个. Bash错误修复

a)YUM方法:

好好清理所有

yum makecache

yum -y更新bash

b)源模式:

2. 登录

3.  下载新版本bash源码包,然后上传到目标系统
下载 bash-4.3.30.tar.gz            07-Nov-2014 09:19  7.6M  

请注意最后修改日期: 2014-11-07(由于漏洞而于2014-09-25找到)

因此,BASH版本应在漏洞发现日期之后下载bash软件包

下载后,上传到目标系统

或直接从目标系统下载

Wget

4. YUM安装和编辑工具: gcc gcc-c ++ automake autoconf

yuminstall gcc gcc-c ++ automake autoconf --y

autoconf noarch 2.63-5.1.el6 c6-media 781 k

automake noarch 1.11.1-4.el6 c6-media 550 k

gcc-c ++ x86_64 4.4.7-4.el6 c6-media 4.7 M

安装依赖项:

libstdc ++-devel x86_64 4.4.7-4.el6 c6-media 1.6 M

5. 安装bash-4.3.30

tar --zxf bash-4.3.30.tar.gz

cd /root/bash-4.3.30

./ configure默认安装在/ usr / local

bash 漏洞测试_bash漏洞检测_bash漏洞

进行&&进行测试&&进行安装

过程有点长,请耐心等待. . . . .

安装完成后,重新启动系统,重新启动

6. 查看新版本的Bash

[root @ master〜]#bash --version

GNU bash,版本4.3.30(1)-发布

7. 安装另一个版本: bash-4.2.53.tar.gz

该过程与安装bash-4.3.30相同

唯一的区别: 安装的软件包比第3步多

五个. Bash漏洞验证和验证

1. 漏洞修复验证: CVE-2014-6271:

[root @ master〜]#env x ='(){: ;}; echo CVE-2014-6271'bash -c“ echo test”

测试

如果仅输出测试,则表明漏洞已修复.

2. 漏洞修复验证: CVE-2014-7169:

[root @ master〜]#env x ='(){(a)=> \'bash -c“ echodate”;猫回声

日期

cat: echo: 没有这样的文件或目录

如果输出上述两行,则表明漏洞已解决

六个. Bash漏洞分析

引自以下内容: “ Bash代码注入的安全漏洞的详细说明”

细节太多,原理和细节都直接引用了.

原理和技术细节

为阐明这一原理和细节,我们需要从bash的环境变量开始.

bash环境变量

每个人都知道环境变量,我不需要推广它. 环境变量是操作系统的操作系统外壳中的变量. 许多程序通过环境变量更改其执行行为. 在bash中定义环境变量的语法很简单(请注意: =符号前后不能有空格):

$ var =“ hello world”

然后可以使用此变量,例如: echo $ var或其他内容. 但是,我们必须知道,该变量只是当前shell的“局部变量”,只能在当前shell进程中访问. 此shell进程派生的进程不可访问.

您可以执行此测试:

bash漏洞_bash漏洞检测_bash 漏洞测试

在上面的测试中,第三个命令执行了一个bash,即启动了bash的子进程,您将发现无法访问var.

要使Shell的子进程可访问,我们需要将其导出:

此环境变量将在其子进程中可见.

如果要查看哪些环境变量在子进程中可见(即是否导出),则可以使用env命令. 但是,env命令也可以用于定义导出环境变量. 看起来像这样:

仅凭这些基础知识还不够. 我们还需要了解一种基础知识-Shell的功能.

bash功能

在bash下定义函数很简单,如下所示:

$ foo(){echo“ hello coolshell”;}

$ foo

你好酷壳

有了上述环境变量的基本知识,您肯定会尝试尝试是否可以在子进程中调用此函数,当然答案是否定的.

您会看到,它与环境变量相同. 如果希望在子进程中可访问,则它仍然相同,需要export,并且export具有参数-f,这意味着导出函数. 如:

好的,我已经讨论了很长时间的基本知识,不用担心,在您理解了这些知识之后,您将很容易理解这两个漏洞是如何发生的.

好的,现在我们要讨论这个问题.

打击错误

从上面我们可以看到bash的变量和函数使用完全相同的机制. 如果使用env命令查看导出的内容,则会看到我们上面定义的变量和函数全部如下(我省略了其他环境变量):

结果是一样的-函数和变量都是变量. 因此,聪明的黑客无需查看bash的源代码,就可以猜测bash判断环境变量是否为函数,具体取决于其值是否以“()”开头. 然后,我想到一个邪恶的想法.

Hacker定义了这样的环境变量(注意: ()和{)之间不能有空格:

$ exportX ='(){在“ X里面回显”;};回显“ X之外”;'

env,您将看到X已经在这里:

然后,当我们在当前bash shell进程下生成bash子进程时,新的子进程将读取父进程的所有导出环境变量,并将其复制到其自己的进程空间中. 显然bash 漏洞测试,上面的X变量函数还会在该函数之后注入一个命令: echo“ outside X”. 在从父级到子级的复制过程中会执行此操作吗? (对于与叉子相关的事情,您可以看一下我之前写的“叉子访谈问题”)

答案是肯定的.

$ exportX ='(){在“ X里面回显”;};回显“ X之外”;'

$ bash

X以外

看,代码注入是这样完成的. 这是bash的错误-函数主体外部的代码是默认执行的.

我们不必如上所述创建另一个bash子进程. 我们可以使用bash -c参数执行bash子进程命令. 就像该漏洞的测试脚本一样:

envVAR ='(){: ;};回声巴什很脆弱! bash-c“ echo Bash测试”

其中,(){: ;}中的冒号等效于/ bin / true,返回true并退出. bash -c实际上是bawn生成中的echo的子进程,用于在函数外部触发echo命令. 因此,更友好的测试脚本将是:

bash 漏洞测试_bash漏洞_bash漏洞检测

envVAR ='(){: ;};回声巴什很脆弱! bash-c“ echo如果您看到“易受攻击”一词,则说明bash存在安全问题”

好的,您应该了解漏洞的全部原因.

bash漏洞的影响有多大

许在Internet上看到此漏洞并不严重,他们说此问题仅适用于那些执行CGI脚本的过时网站. 不再有使用CGI的网站. 我靠,这真是无所畏惧.

例如bash 漏洞测试,如果您的网站上有调用操作系统的命令,例如您使用PHP执行exec之类的程序. 有这样的要求,尤其是对于某些需要与操作系统进行交互的重要后台管理程序而言. 然后将打开一个bash进程来执行.

我们还知道当前的HTTP服务器基本上是子进程,因此必须导出一些环境变量,并且某些环境变量来自用户端,例如: HTTP_USER_AGENT之类的环境变量仅由浏览器发出. 实际上,可以根据需要编写此变量.

因此,我可以将HTTP_USER_AGENT环境变量设置为上述测试脚本,但是我将替换echo Bash容易受到攻击!还有更残酷的东西哈哈.

AfterShock-CVE-2014-7169测试脚本的解释

许多学生不理解以下测试脚本的含义. 我会在这里解释.

·X ='(){(a)=> \’不用说,定义X环境变量. 但是,此功能不完整,是的,这是有意的. 另外,您必须注意\’不是用于单引号的转义,变量X的值为(){(a)=> \

·(a)=这件事的目的是使bash的解释器出错(语法错误).

·语法错误后,缓冲区中仅剩下两个字符“> \”. [我不明白为什么只留下>>]

·然后,此魔术bash将以下命令回显日期放在换行符的新行中,然后执行.

等效于在shell中执行以下命令:

如果您了解bash,就知道\用于命令行中的换行符,因此等效于执行:

这不只是重定向吗?上面的命令等效于:

因此,回显文件将出现在当前目录中. 该文件的内容是date命令的输出.

要点再次说明:

[root @ master〜]#>测试文件日期

#上面的一行表示date命令的执行结果被重定向到测试文件

[root @ master〜]#猫测试文件

2015年4月14日星期二08:22:38

>测试文件日期等于date>测试文件

[root @ master〜]#> \>这是重定向符号

>测试文件日期

[root @ master〜]#

测试语句再次说明:

蓝色日期是执行的命令,攻击者可以用恶意代码替换它.

此处的红色echo不是echo命令,而是作为日期执行结果输出的文件

> \是重定向符号和连续符号


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-151279-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 罗嘉良
        罗嘉良

        他不会因为南海而丢了中东和欧洲

      热点图片
      拼命载入中...