dorentus
2014-09-25 12:27:04 +08:00
没看到和 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 的机器上,终于成功触发了漏洞