V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aWangami
V2EX  ›  问与答

env var='() {(a)=>\' bash -c "echo `date`"; cat echo

  •  
  •   aWangami · 2014-09-28 08:18:17 +08:00 · 4627 次点击
    这是一个创建于 3695 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ShellShock,试试这一条?
    虽然会打印出"cat: echo: No such file or directory"
    但是同样也会打印出时间
    第 1 条附言  ·  2014-09-28 09:20:36 +08:00
    第 2 条附言  ·  2014-09-28 09:23:59 +08:00
    大家现在的bash版本是多少?
    我的是:GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
    17 条回复    2014-10-03 23:27:51 +08:00
    tension2012
        1
    tension2012  
       2014-09-28 08:37:47 +08:00
    怎么试试?
    liuyi_beta
        2
    liuyi_beta  
       2014-09-28 09:17:08 +08:00
    这个是修补后绕过的测试,就是需要报错的
    willbefly
        3
    willbefly  
       2014-09-28 09:17:26 +08:00
    打印出时间 说明还没修复
    binux
        4
    binux  
       2014-09-28 09:20:22 +08:00
    这时第二次的,都有第三次绕过了
    aWangami
        5
    aWangami  
    OP
       2014-09-28 09:22:53 +08:00
    @binux
    @willbefly
    @liuyi_beta
    现在CVE-2014-7169已经修复了吗?
    redhat给的测试命令是这样子,env 'x=() { (a)=>\' bash -c "echo date";,这个只会打印出date字符串
    我把它改了一下,变成了这样子,env 'x=() { (a)=>\' bash -c "echo ‘date`";
    sohoer
        6
    sohoer  
       2014-09-28 09:29:54 +08:00
    @binux
    "第三次绕过" 什么情况?

    [root@AY131220115140Z ~]# env var='() {(a)=>\' bash -c "echo `date`"; cat echo
    Sun Sep 28 09:28:42 CST 2014
    Sun Sep 28 09:16:31 CST 2014
    [root@AY131220115140Z ~]# env -i X='() { (a)=>\' bash -c 'echo date'; cat echo
    date
    Sun Sep 28 09:16:31 CST 2014
    [root@AY131220115140Z ~]#
    aWangami
        7
    aWangami  
    OP
       2014-09-28 09:42:25 +08:00
    @sohoer 你得更新bash了
    root@server:/# env var='() {(a)=>\' bash -c "echo `date`"; cat echo
    Sun Sep 28 09:41:39 CST 2014
    cat: echo: No such file or directory
    palxex
        8
    palxex  
       2014-09-28 10:00:12 +08:00   ❤️ 2
    LZ别调皮- -你这不是绕过,你修改后这句打印出时间恰恰是没绕过的表现。
    1. env var='() {(a)=>\' bash -c "echo date"; cat echo
    打印出data,和
    2. env var='() {(a)=>\' bash -c "echo `date`"; cat echo
    打印出时间是完全对等的,因为bash -c里本来就应该执行echo,之前说绕过了是因为data本来不该执行,但套进``里本来就该执行。
    aWangami
        9
    aWangami  
    OP
       2014-09-28 10:05:39 +08:00
    @palxex 噢噢,学习了~
    aa45942
        10
    aa45942  
       2014-09-28 10:06:18 +08:00
    @aWangami shell规定``里的脚本优先进行解析,解析结果取代之前反引号中的内容,`date`传到bash的时候就已经是时间的字符串了
    aWangami
        11
    aWangami  
    OP
       2014-09-28 10:08:24 +08:00
    @aa45942 噢,也就是说这不是因为漏洞而执行的,但是如果env var='() {(a)=>\' bash -c "echo date"; cat echo ,这一句打印出时间的话,就是有问题了是不
    aa45942
        12
    aa45942  
       2014-09-28 10:23:26 +08:00   ❤️ 1
    @aWangami 对,因为echo date本来应该只会打印date这个字符串,但环境变量中的>被放到了bash执行代码中,变成 date > echo ,最后的cat echo是输出echo的内容。这个漏洞危害在于如果有类似unzip的基于bash的cgi,那么会被利用,危害没有前一个大
    aWangami
        13
    aWangami  
    OP
       2014-09-28 10:54:46 +08:00
    @aa45942 原来如此~
    SoloCompany
        14
    SoloCompany  
       2014-09-28 11:56:13 +08:00
    CentOS 的前天的第二次更新(yum可获取)就已经修复了,OSX的我昨天用 port 更新了一下 bash 还是没有修复
    SoloCompany
        15
    SoloCompany  
       2014-09-28 12:01:01 +08:00
    刚又去更新了下,已经修复,版本号是 4.3.26
    $ bash -version
    GNU bash,版本 4.3.26(1)-release (x86_64-apple-darwin13.2.0)
    Copyright (C) 2013 Free Software Foundation, Inc.
    许可证 GPLv3+: GNU GPL 许可证第三版或者更新版本 <http://gnu.org/licenses/gpl.html>

    This is free software; you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.

    另,才发现楼主的测试脚本错误,不应该是 `date` 而应该是 date
    如果测试发现未修复,记得清理一下当前路径下的 echo 文件
    aru
        16
    aru  
       2014-09-30 09:04:19 +08:00
    patch 又更新了
    $ bash --version
    GNU bash, version 4.3.27(1)-release (x86_64-unknown-linux-gnu)
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    aWangami
        17
    aWangami  
    OP
       2014-10-03 23:27:51 +08:00
    @SoloCompany 是的测试语句有误
    @aru
    我用apt-get install --only-upgrade bash似乎没有更新bash,还是原来的版本4.3.11(1)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2936 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 02:46 · PVG 10:46 · LAX 18:46 · JFK 21:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.