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

2014-09-28 08:18:17 +08:00
 aWangami
ShellShock,试试这一条?
虽然会打印出"cat: echo: No such file or directory"
但是同样也会打印出时间
4573 次点击
所在节点    问与答
17 条回复
tension2012
2014-09-28 08:37:47 +08:00
怎么试试?
liuyi_beta
2014-09-28 09:17:08 +08:00
这个是修补后绕过的测试,就是需要报错的
willbefly
2014-09-28 09:17:26 +08:00
打印出时间 说明还没修复
binux
2014-09-28 09:20:22 +08:00
这时第二次的,都有第三次绕过了
aWangami
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
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
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
2014-09-28 10:00:12 +08:00
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
2014-09-28 10:05:39 +08:00
@palxex 噢噢,学习了~
aa45942
2014-09-28 10:06:18 +08:00
@aWangami shell规定``里的脚本优先进行解析,解析结果取代之前反引号中的内容,`date`传到bash的时候就已经是时间的字符串了
aWangami
2014-09-28 10:08:24 +08:00
@aa45942 噢,也就是说这不是因为漏洞而执行的,但是如果env var='() {(a)=>\' bash -c "echo date"; cat echo ,这一句打印出时间的话,就是有问题了是不
aa45942
2014-09-28 10:23:26 +08:00
@aWangami 对,因为echo date本来应该只会打印date这个字符串,但环境变量中的>被放到了bash执行代码中,变成 date > echo ,最后的cat echo是输出echo的内容。这个漏洞危害在于如果有类似unzip的基于bash的cgi,那么会被利用,危害没有前一个大
aWangami
2014-09-28 10:54:46 +08:00
@aa45942 原来如此~
SoloCompany
2014-09-28 11:56:13 +08:00
CentOS 的前天的第二次更新(yum可获取)就已经修复了,OSX的我昨天用 port 更新了一下 bash 还是没有修复
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
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
2014-10-03 23:27:51 +08:00
@SoloCompany 是的测试语句有误
@aru
我用apt-get install --only-upgrade bash似乎没有更新bash,还是原来的版本4.3.11(1)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/136079

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX