mengzhuo

Bash 新漏洞:用户可以执行 root 权限

  •  
  •   mengzhuo · Sep 25, 2014 · 10894 views
    This topic created in 4433 days ago, the information mentioned may be changed or developed.
    Github上通知的
    http://seclists.org/oss-sec/2014/q3/649

    共享VPS的可得小心了……
    Supplement 1  ·  Sep 25, 2014
    请参考 http://seclists.org/oss-sec/2014/q3/650

    主要是bash对环境变量的解读有问题

    导致所有CGI接口的程序都是潜在的受害者
    Supplement 2  ·  Sep 25, 2014
    三个维度的攻击,CGI,OpenSSH,和牵扯着环境变量的程序,感觉不比心血差

    So far, HTTP requests to CGI scripts have been identified as the major
    attack vector.
    ....
    The other vector is OpenSSH, either through AcceptEnv variables, TERM
    or SSH_ORIGINAL_COMMAND.
    Other vectors involving different environment variable set by
    additional programs are expected.
    Supplement 3  ·  Sep 25, 2014
    红帽的文章:
    如何构建攻击
    https://securityblog.redhat.com/2014/09/24/bash-specially-crafted-environment-variables-code-injection-attack/

    爆漏洞的邮件组里大家已经开始指责作者在embargo内向外透露了这个漏洞的详细信息……江湖味太浓了
    34 replies  •  2014-09-25 22:11:09 +08:00
    jasontse
    jasontse
    Sep 25, 2014 via Android
    1
    webshell 也要注意被提权
    semicircle21
    semicircle21
    Sep 25, 2014
    2
    常年 root 敢死队用户表示这都不是事儿~
    chinni
    chinni
    Sep 25, 2014
    3
    Cent 好像已经修复了?
    lyragosa
    lyragosa
    Sep 25, 2014
    4
    zsh用户表示应该无影响?
    steptodream
    steptodream
    Sep 25, 2014
    5
    @lyragosa 除非你系统没装bash
    66beta
    66beta
    Sep 25, 2014
    7
    俺的DO上只有测试站点,不怕不怕
    顶多被copy走价值2万多的知识产权
    LazyZhu
    LazyZhu
    Sep 25, 2014❤️1
    8
    业务使用的 Debian 其实只要加一个安全补丁源,每天更新下就可以了。
    https://www.debian.org/security/
    coolicer
    coolicer
    Sep 25, 2014
    9
    @LazyZhu Ubuntu可以用吗?
    LazyZhu
    LazyZhu
    Sep 25, 2014
    10
    @coolicer
    https://help.ubuntu.com/14.04/serverguide/configuration.html
    Ubuntu也有相应的关键安全补丁源的
    glasslion
    glasslion
    Sep 25, 2014
    11
    @lyragosa csh, tcsh, ksh, sh, and zsh 无一幸免
    dndx
    dndx
    Sep 25, 2014
    12
    root 权限有点夸张了吧,bash 又不是 setuid 的程序。
    Tink
    Tink
    Sep 25, 2014 via iPhone
    13
    我去,那zsh呢
    heiher
    heiher
    Sep 25, 2014
    14
    哪里有说和 root 权限有关了?
    cxl008
    cxl008
    Sep 25, 2014
    15
    求方法
    lsylsy2
    lsylsy2
    Sep 25, 2014
    16
    @LazyZhu 有办法在命令里只更新来自这个源的内容么?
    万一用cron更新的时候把别的什么软件版本更新了出问题就囧了……
    LazyZhu
    LazyZhu
    Sep 25, 2014
    17
    @lsylsy2
    笨办法,多个sources.list切换

    /etc/apt/sources.list.security
    /etc/apt/sources.list.all
    fany
    fany
    Sep 25, 2014 via iPhone
    18
    如果您使用的是CentOS、RedHat或Fedora,请在SSH下执行以下命令:
    yum clean all
    yum update bash
    如果您用的系统是Ubuntu或Debian,请在SSH下执行以下命令:
    apt-get update
    apt-get upgrade
    dorentus
    dorentus
    Sep 25, 2014
    19
    没看到和 root 权限相关的说明。

    CGI 暂且不提(反正多年没用过 CGI 了),
    我的本地和远程机器的登录 shell 都是 fish shell,

    ---- 本地 ----

    1) env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
    显示果然有漏洞

    2) env x='() { :;}; echo vulnerable' fish -c "echo this is a test"
    没触发漏洞

    3) env x='() { :;}; echo vulnerable' zsh -c "echo this is a test"
    没触发漏洞

    4) set -x x '() { :;}; echo vulnerable' # 相当于 bash 的 export x=...
    bash -c "echo this is a test"
    触发漏洞

    ---- ssh ----
    5) set -x x '() { :;}; echo vulnerable'
    ssh 到远程机器之后执行:bash -c "echo this is a test"
    没见漏洞(这是自然的,因为远程机器 sshd 配置里面 AcceptEnv 只允许了 LANG LC_*)

    6) 那么试试 set -x LANG '() { :;}; echo vulnerable' # 这里`包括之后每次执行一条命令都会有警告 locale 不对
    再 ssh 到远程机器,看了下,LANG 没传递过去……
    那么执行:bash -c "echo this is a test"
    很自然地还是没见漏洞

    7) 再试 set -x TERM '() { :;}; echo vulnerable'
    ssh 到远程机器,远程 fish shell 提示:Could not set up terminal
    然后连接断开

    PS: 同第六步,设置 LANG 之后,ssh 到另一台登录 shell 为 bash 的机器上,LANG 依然是没传递过去
    同第七步,设置 TERM,然后 ssh 到另一台登录 shell 为 bash 的机器上,终于成功触发了漏洞
    mind3x
    mind3x
    Sep 25, 2014
    20
    见风就是雨……谁说的有root?谁说的其他shell也中招?瞎JB扯...
    mornlight
    mornlight
    Sep 25, 2014
    21
    @fany 没看到更新啊yum update bash后显示No Packages marked for Update
    heganj
    heganj
    Sep 25, 2014
    22
    hjc4869
    hjc4869
    Sep 25, 2014
    24
    apt-get purge bash;
    Busy
    Busy
    Sep 25, 2014
    25
    os x 怎么说
    mengzhuo
    mengzhuo
    OP
    Sep 25, 2014
    26
    @mind3x

    很多服务是用Root权限跑的,
    这些用root权限+和环境变量相关的结构就有可能制造攻击,DHCP、打印机、samba、Apache
    懂?
    mind3x
    mind3x
    Sep 25, 2014
    27
    @mengzhuo 你用root来跑apache? 也是醉了。提权归提权,bash归bash,别混为一谈。
    nicai000
    nicai000
    Sep 25, 2014
    28
    @mengzhuo 你才不懂吧, 这个漏洞就事论事, 和"用户可以执行root权限"区别很大, 不可一概而论.

    而且CGI现在几个人用? 另外你的DHCP, 打印机, samba都能接收命令挂钩BASH CGI? 别闹了好嘛?
    mengzhuo
    mengzhuo
    OP
    Sep 25, 2014
    29
    @nicai000
    @mind3x

    不是我说的
    http://blog.erratasec.com/2014/09/bash-shellshock-bug-is-wormable.html#.VCOXsCtdWf8


    而且:
    随便一台Debian

    ps aux | grep root
    root 1259 0.0 0.0 10232 1000 ? S 9月15 0:01 /sbin/dhclient
    root 28592 0.0 0.1 279040 4784 ? S 9月16 0:01 smbd -F

    呵呵
    nicai000
    nicai000
    Sep 25, 2014
    30
    @mengzhuo 他不懂你更不懂, 没问题啊. 而且他也没说把这个和简单提权混为一谈. 还是得说回来, dhcp和smb挂了bash cgi? 没有就没事儿啊, 呵呵.
    palxex
    palxex
    Sep 25, 2014
    31
    homebrew通过bottle安装的注意:没用。请自行build-from-source!
    dorentus
    dorentus
    Sep 25, 2014
    32
    @mengzhuo
    稍微正常一点的服务,即使用 root 的话也是做一些设置之后就 drop root 权限、切换到普通权限用户的。

    我的机器上,没有 dhclient 和 smbd。(再说 dhclient 又不会从网络获取什么环境变量,更不用说 shell 了)。

    ps aux | grep root 能看到的,可能会受影响的,也就是 nginx 而已。但是 nginx 也只是 master process 是用 root 跑的,它没有监听任何端口;监听端口、提供 HTTP service 的那些子进程,都是用 www-data 用户跑的。
    9hills
    9hills
    Sep 25, 2014
    33
    lz不要耸人听闻,哪里root提权了
    iwinux
    iwinux
    Sep 25, 2014
    34
    真是笑死
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2143 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 01:55 · PVG 09:55 · LAX 17:55 · JFK 20:55
    ♥ Do have faith in what you're doing.