CVE漏洞中文网

0DayBank一个专门收集整理全球互联网漏洞的公开发布网站
  1. 首页
  2. 漏洞列表
  3. 正文

bash漏洞

2018年11月9日 946点热度 0人点赞 0条评论
  • FB招聘站
  • 分类阅读
  • 专栏
  • 公开课
  • FIT 2019
  • 企业服务
  • 用户服务
  • 搜索
  • 投稿
  • 登录
  • 注册

安全科普:让高大上的Bash破壳漏洞不再难理解(上)

嘎巴嘎巴2014-11-05+11共403519人围观 ,发现 10 个不明物体系统安全

简介

“破壳”是一个严重漏洞的别名,在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等,FreeBuf的相关报道请戳“我”

本文首先从基础讲解一些Bash知识,并尝试理解“破壳”漏洞的一些细节,其次会手把手的带领读者搭建一个漏洞实验环境,并尝试利用这个漏洞进行测试。

什么是“破壳"漏洞?

“破壳”是Bash(GNU Bourne Again Shell)中出现的允许攻击者通过环境变量执行任意命令的漏洞。

检查你的计算机是否存在此漏洞

bash --version
env x='() { :;}; echo shellshocked' bash –c "echo test"

当你的GNU Bash 版本小于等于4.3或出现以下回显则会证明存在此漏洞:

“破壳“漏洞探究,这条测试命令到底哪里危险?

现在你很有可能会问这样几个问题,当然这一部分也是本文的重点:

刚才那条命令是做什么的?
执行那条命令后为什么就证明存在漏洞?

别着急,这篇文章是面向新手的,自然要从基础讲起。

0×01 bash shell 变量基础

echo命令:
$ echo"shellshock"
定义个变量然后再echo:
$ gaba="shellshock"
$ echo $gaba

就像这样:

我们现在可以试试开一个bash子进程来看一下我们能不能得到变量的值:

$ gaba="shellshock"
$ echo $gaba
shellshock
$bash
$echo $gaba
$

没有回显,我们不能够读出变量的值是因为我们开启了一个bash子进程,但变量中的值,仍存在父进程中。

0×02 bash环境变量基础

当你开启一个shell会话时,一些变量已经准备好可供使用了,这些变量成为环境变量。

当我们想在子进程中访问$gaba变量的话,我们可以使用export命令将变量变成环境变量。

如上图所示,子进程可以访问环境变量。

我们可以使用env命令来查看环境变量:

当然,聪明的人会这样做:

$ env | grep 'gaba'

如果你不知道grep和|是什么意思的话,我建议使用搜索引擎查找一下这两条命令的基础用法。

0×03 bash函数与环境变量

我想,如果你有点编程基础的话再配合前面的几条基础说明,应该能看懂这几句命令的意思:

建立一个名为x的函数,并将函数x存放在环境变量中,正如你预期的那样,在子shell中仍可执行名为x的函数。

0×04 让字符串变成函数并执行

好了,我们已经知道了环境变量和函数,那么请看下面这条命令:

newfunction='() { echo 'shellshockdemo';}'

命令是不是没那么复杂?我们继续向刚才那样测试:

当我们将这段略复杂的字符串变成环境变量,并重新开启一个新的Bash 进程后,newfunction却可以像函数一样执行了echo 'shellshock'。

让我们看看环境变量中newfunction的情况:

我们再来试试这条命令:

$export newfunction='() { echo 'shellshockdemo';}; echo damn! I am vulnerable'

然后打开新的bash进程,神奇的事情发生了,新的进程刚刚启动,就出现了一句回显。:

当特殊的字符串变成环境变量后,环境变量又解析成函数,新的Bash进程在启动后又解析了环境变量并可以执行命令。

我们现在知道了触法并利用破壳漏洞的所需要的几点:

    被攻击的bash存在漏洞(版本小于等于4.3)
    攻击者可以控制环境变量
    新的bash进程被打开触发漏洞并执行命令

0×05 env命令

现在我们再来看一下刚才我们测试”破壳"漏洞的命令:

env x='() { :;}; echo shellshocked' bash -c "echo test"

但又为什么使用env命令呢?我们查看env的man手册和帮助:

我们用两条命令来理解一下env在这里的用法:

env newvar=demo 
env newvar=demo bash –c 'echo $newvar'
env x='() { echo accessme;}; echo vulnerable' bash –c 'x'

也就是说在上图中的echo vulnerable是在新的bash执行后执行的,并且又接着执行了x中的函数体echo accessme 。

OK,如果你能理解上图中的命令,那我们就大致理解了那句危险的测试命令的含义。

“破壳”漏洞利用

下面是一些“破壳”漏洞可能造成的严重后果:

Apache充当媒介用CGI组件满足远程访问并调用Bash的env命令

绕过ssh的ForceCommand功能

…

当然,这些内容将会在下篇文章中展开,敬请期待。

[信息来源:infosecinstitute,有改动,FreeBuf小编嘎巴整理,转载请注明来自FreeBuf.com]

嘎巴嘎巴

嘎巴嘎巴55 篇文章等级: 6级
|
|
  • 上一篇:资料汇总:Wget FTP软链接攻击漏洞(CVE-2014-4877)描述及各安全厂商评析
  • 下一篇:玩坏漏洞:让CVE-2014-4113成功溢出Win8
发表评论

已有 10 条评论

  • tk 2014-11-05回复1楼

    涨姿势了

    亮了(3)
  • linger118927 (2级) 2014-11-05回复2楼

    这不是内核级漏洞吧,env x=’() { :;}; ls /root’ bash -c "ls /root",之前一直以为可以执行任何命令,但是最近才发现,也存在权限问题,普通用户,输入这条命令,会提示权限不够,无法列出root目录

    亮了(5)
    • comicsheep 2014-11-07回复

      @linger118927  这个命令是继承当前用户权限的,只是给了一个任意命令执行的方式,并不是最高权限

      亮了(1)
  • susix (1级)Life is like an RPG 2014-11-05回复3楼

    大概看懂了。。。

    亮了(1)
  • venc (1级)菜鸟一枚 2014-11-05回复4楼

    赞

    亮了(1)
  • vim (1级) 2014-11-05回复5楼

    # bash –versin
    这个命令是看不出有没存在bash漏洞了,应该修复bash后用# bash –version查看显示的版本跟没修复之前是一模一样。
    要看出版本的区别用# rpm -qa | grep bash

    亮了(0)
    • 嘎巴嘎巴 (6级)-------- 2014-11-05回复

      感谢补充 :grin:

      亮了(0)
  • 一个死跑龙套的的 2014-11-05回复6楼

    果然高大上,不错嘛!!最后那副图解释为是遇到bash后才就执行了echo vulnerable,接着才执行x函数,为什么会有这种情况啊

    亮了(0)
  • jing.Wang飘不飘 (1级) 2014-11-11回复7楼

    我专门注册 账号反馈下 萌主一定要回我 rpm -qa | grep bash bash-4.1.2-15.el6_4.i686
    版本小于4.3 却没有此漏洞
    # env x=’() { :;}; echo shellshocked’ bash –c "echo test"
    shellshocked
    bash: –c: No such file or directory

    你能说话严谨点吗

    亮了(4)
  • jing.Wang飘不飘 (1级) 2014-11-11回复8楼

    原理大概是看懂了 就是夫进程的特殊变量字符变量字符串 成为子bash的环境变量
    子bash 将特殊的环境变量理解为函数执行了

    亮了(3)

 

必须您当前尚未登录。登陆?注册

必须(保密)

表情插图

取消

嘎巴嘎巴

嘎巴嘎巴

--------

55文章数99评论数

最近文章

Python黑客学习笔记:从HelloWorld到编写PoC(中)

2015.03.16

Python黑客学习笔记:从HelloWorld到编写PoC(上)

2015.02.06

黑客题材电影:算法(ALGORITHM)

2014.12.09

浏览更多

相关阅读

  • SEED实验系列:ShellShock攻击实验
  • BadUSB橡皮鸭综合利用,使用橡皮鸭渗透电脑测试
  • [科普]编写一个简单的可加载内核模块
  • python的常见命令注入威胁
  • TEST LAB V8在线渗透实验室教程(一)

特别推荐

关注我们 分享每日精选文章

活动预告

  • 11月

    FreeBuf精品公开课·双11学习狂欢节 | 给努力的你打打气

    进行中
  • 10月

    【16课时-连载中】挖掘CVE不是梦(系列课程2)

    已结束
  • 10月

    【首节课仅需1元】挖掘CVE不是梦

    已结束
  • 9月

    【已结束】自炼神兵之自动化批量刷SRC

    已结束

FREEBUF

  • 免责声明
  • 协议条款
  • 关于我们
  • 加入我们

广告及服务

  • 寻求报道
  • 广告合作
  • 联系我们
  • 友情链接

关注我们

  • 官方微信
  • 新浪微博
  • 腾讯微博
  • Twitter

赞助商

Copyright © 2018 WWW.FREEBUF.COM All Rights Reserved 沪ICP备13033796号

0daybank

标签: 暂无
最后更新:2018年11月9日

小助手

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

COPYRIGHT © 2024 www.pdr.cn CVE漏洞中文网. ALL RIGHTS RESERVED.

鲁ICP备2022031030号

联系邮箱:wpbgssyubnmsxxxkkk@proton.me