[转载]shadow发现新浪cgi漏洞的过程
本文作者: shadow文章提交: 冰血封情
以下是shadow的来信中提到的漏洞发现过程。
这个漏洞的发现很有些戏剧性。那天恰巧是中国的情人节(农历7月7日,今年阳历8月25日),我想为我的女友在新浪贺卡站上挑选一张贺卡,于是登录到新浪贺卡站:“[url]http://ecards.sina.com.cn[/url]”。当我选中一个贺卡的时候我看到网页程序发出了如下申请:“[url]http://ecards.sina.com.cn/cgi-bin/card/preview.cgi?title=[/url]父亲节快乐&name=sina&image=/2000-6-13/09202036812&template=1&ztcolor=”(如图1)。
根据我所掌握的CGI编程知识,“preview.cgi”有可能是服务器上一个CGI数据库文件调用程序(下面简称CGI程序)。我又注意到CGI程序读取贺卡文件的形式:“……image=/2000-6-13/09202036812……”。如果没有猜错,CGI程序通过“&”来连接几个数据库文件的定位条件,从而定位出图片文件(即贺卡),并将其显示出来。很明显,“2000-6-13”是文件所在路径(这说明网站的文件目录是按日期命名和排序的),而后面的“09202036812”是贺卡的文件名。我想,既然从数据库中能够调用图片文件,那是不是也可以调用其他文件,比如说系统文件呢?
我的脑海里闪过了UNIX操作系统中最重要的系统文件之一的“passwd”(它用于存放主机的各种用户名和密码信息)。我们都知道,“/..”代表父文件夹,而“/etc/passwd”是passwd文件存放的相对路径。于是,我按照此CGI程序读取的规律,修改地址栏的URL,删除“/2000-6-13/09202036812&template=1&ztcolor=”,将其替换为类似“/../../etc/passwd”……当我将“/..”的个数加到9个的时候(文件夹达到11层),地址栏部分为:
[url]http://ecards.sina.com.cn/cgi-bin/card/preview.cgi?title=[/url]父亲节快乐&name=sina&image=/../../../../../../../../../etc/passwd,网页上原来放贺卡的位置上出现了该主机的passwd文件的内容(如图2)。我非常惊讶!passwd中存放了服务器管理员的名字和密码,这个文件竟然被小小一个CGI程序(preview.cgi)泄露!
注:passwd文件是UNIX操作系统存放系统管理员和普通用户(这里的“用户”并非指网站的访问者而是网站内部的人员,可以理解成普通级别的管理员)的用户名、密码等信息的文件。此文件本属于只有系统管理员才有权力读取的文件,即使是系统的普通用户也无权读取,更不用说接受新浪服务的一般访问者了。某些版本UNIX系统的passwd文件被获取后,管理员的密码可以直接使用黑客软件破解得出(passwd文件中的密码仍然是加密的),攻击者随即就能够以管理员的身份“接管”新浪,为所欲为;即使不能破解,攻击者也可以从中获得服务器管理员的用户名等机密信息,进而可以为扫描、密码穷举猜测等攻击做进一步的准备。因此这个文件的泄露,尤其是它仅仅通过在IE地址栏中输入一串URL信息而非通过黑客软件即可获得,这是令人极为难以置信的。
倒吸一口凉气之后,我又“战战兢兢”地尝试着将地址栏中URL的绝对路径部分改为“etc/syslog.conf”(系统版本文件)、“etc/inet/inetd.conf”(系统网络服务配置文件)、“/etc/publickey”(系统公钥文件),不一会儿,我已经得到了新浪服务器一些重要的系统文件。
两次通知新浪
1.发现者首次通知新浪(来信摘抄):
发现漏洞后,我立即向新浪公司发了通知信(E-mail方式)。整整两个月过去了,我一直没有收到回复信函。时至今日,此漏洞依然存在。作为新浪网的用户,我对新浪网处理此漏洞的态度感到遗憾。而今年3月,我发现了Sohu的一个CGI漏洞,通过它可以进入Sohu的一台主机。和Sohu的安全人员联系后,引起了Sohu管理层的高度重视,他们迅速找到我本人,最终,我协助他们共同解决了这个漏洞。
于是,我将此漏洞告知我所在的网络安全联盟(四川安盟科技有限公司),希望通过他们出面,帮助新浪尽早解决此漏洞。
2.编辑部通知新浪
......................
......................
经本刊技术编辑证实,截至10月16日,此漏洞仍然存在。
漏洞引起的严重后果
稍微有些网络安全知识的读者都会明白这个漏洞意味着什么。
为了让一般的读者进一步认识到这个漏洞对网络安全的巨大威胁,我们觉得很有必要向读者们分析一下这个漏洞可能造成的危害。
好比在你家里每个人都有一把开房门的钥匙,家里有杂物更有贵重物品,毫无疑问,贵重的物品如现金、存折和金银珠宝等一定会保管在你认为十分妥善的地方,其中有你的父母或朋友让你临时保管的买房预付款(条件好的,家里还会有个保险箱)。显然,房门钥匙(或保险箱的钥匙)一定只会在你或你的太太手中。好了,你今天犯了大错,不仅把家里的房门钥匙连同保险箱的钥匙随着你的皮包一起给丢了。而且最关键是皮包里有你的身份证和名片。试想一下,如果小偷在第一时间里上你家拜访,这个结果是怎样的?
新浪网的这个漏洞就是这个皮包,里面有家庭住址、电话号码,有各种钥匙,还有,你昨天刚从银行取出巨款的凭证。可以说,新浪网的这个漏洞比这个例子更糟。因为捡到这个皮包的人如果是小偷的话,他还要搞清楚你家里现在是否有人,而新浪网的漏洞连这个都不需要。下面,我们再从技术角度来描述。
看过本期“漏洞专题”的话,大家就会了解到,所谓的“黑客”就是通过系统存在的安全漏洞进行攻击活动的,没有漏洞,黑客是无法进行攻击活动的——苍蝇叮的都是有缝的鸡蛋。在Shadow发现漏洞的过程中,他只是读取了新浪服务器上的四个文件,并没有进一步“发挥”,如果Shadow是一个心怀叵测的人,他完全可以“再接再厉”……
发现漏洞,尤其是比较严重的漏洞是黑客们进行攻击的先决条件,漏洞通常是可遇而不可求的,寻找漏洞一般是黑客进行攻击活动的最关键和最没有把握的一步。透过漏洞,一个普通的访问者也可能提升自己的访问权限,访问本来只有系统管理员才能访问的文件(参见图3)。现在,假设一个黑客已经发现了新浪的这个大漏洞,完成了攻击的最关键一步,根据此漏洞所泄露的数据,他可以继续展开以下攻击:
1.下载一个扫描器(此种程序在网上随处可见),根据前面泄露的用户名对系统进行弱口令检测,或者进行暴力破解。
2.当破解了密码后,可以获得服务器普通管理权限,这时攻击者已经可以对系统服务器上一些文件进行删除或窃取。
3.下一步攻击者可以利用服务器普通管理员权限结合网络上的一些黑客工具(如:权限提高工具),将自己升级为“系统管理员”,从而对服务器拥有最高的管理权。如果真的实现了这一步,攻击者已经可以像控制自己家里的电脑一样对新浪的服务器进行随意的增、删、改操作——至于攻击者是想仅仅更改几个新浪的页面“玩玩”(像大多数“准黑客”那样),还是想窃取个人或公司的机密来达到其“快速致富”的目的,或是不动声色地安装个把木马使新浪处于自己的监控之下伺机而动,抑或是快意地让所有网站、用户的资料与这个世界诀别,那就天晓得了。
4. 攻击者现在只控制了一台服务器,但他完全可以利用这台服务器作为“跳板”(可以理解为代理服务器)入侵新浪的其他服务器,然后重复2、3步骤,最终控制新浪大部分乃至服务器(如图4)。
综上所述,网络系统的堡垒一旦有了一个突破口(即安全漏洞),很容易被攻破(网络内部的防御相对要薄弱得多,详见本期专题《漏洞——黑客生存之本》)。
写在最后
在本次调查中,我们深感国内的网络安全现状令人担忧——不光是技术方面,网站自身的问题可能更大。
一、事先防范措施不够
1. 技术人员的安全意识薄弱:从前面漏洞的发现过程可以看出,CGI程序的编写者在编程中并未注意程序代码的安全性问题,从而造成网页被访问时服务器上的重要信息泄露。其实,这类问题应注意事前防范,网络安全人员多提醒程序员注意编程中的安全问题即可。
2. 对网络安全性检查不够:国外有相当多网站对安全性采取的不是被动而是主动的方式——通过有偿的方式“请”爱好者甚至黑客查找安全漏洞并共同加以解决。无法得知新浪的安全检查措施,但我们有理由怀疑它的有效性。
二、事后防范措施不够
1. 对安全问题的举报不够重视: 从前面编辑部的采访可以看出,新浪对于安全问题的举报似乎没有一套行之有效的上报、处理、反馈机制,shadow发出的邮件石沉大海、编辑部的采访遇到的是冷淡的反应。很难想象,对送上门来的重要警报毫不关心,新浪仅*自身的网络安全人员,能够发现和解决多少漏洞?
2. 网站对安全问题的漠视:态度问题说是最致命的问题。我们问过不止一家网络安全公司,得知新浪网对于安全问题举报的回答经常是类似下面这样的内容:
我们是一家大型网络公司,有许多漏洞是难免的。
其实,所有的问题都可以归结到这个问题上。
页:
[1]