分类
未分类

对外经贸大学学生信息平台数据库注入漏洞的思考

今天在校内上偶然看到了这个帖子(http://blog.renren.com/blog/255522531/816547023),讲述了如何取得对外经贸大学张文艺同学在学生信息平台上的手机号码的故事,看了以后让人非常担忧。自从年初CSDN这一最大的程序员网站使用的明文密码被泄露以后,密码安全一时成为群众热议的话题。然而,一般的用户对于信息安全根本不了解,即使听说了以后也没有当成重要的事情。本文的目的即是让读者深刻意识到这一点——信息安全与所有人密切相关。

另:有鉴于在原文的回复中已经出现了很多张文艺同学的信息内容,所以我在这里也就不避讳学校的名字和人名。这个sql注入漏洞发现以后,我已经联系了张文艺同学修改了她在学校信息平台和人人网的账号密码。对外经贸大学网络与技术教育中心的电话(010-64492033)一直没有人应答,应该是清明放假的缘故,我会与对外经贸大学保持联系,也希望大家能够通过各种方式来将漏洞报告给对外经贸大学。

令我诧异的是,一位在数据库方面如此擅长的作者竟然在打码上如此含糊,请其他技术宅晒技术的时候一定要慎重。

下面是我追随帖子主人脚步的全过程:

使用goolge图片搜索,原文中涂抹的部分根本形同虚设。

有两份文档符合文中提到的公示名单,但是两份文档的日期格式不太一样。

文中可以看出,时间是以y年m月的形式出现,再结合姓氏,很容易判断出是哪一份文档以及主人公的姓名学号。

可以确定是最后一位的张文艺同学了。之后的过程就和原帖中提到的一样了。

在对外经贸大学信息平台登陆界面有一句:“2:密码与老平台中的相同或者是12345678。”,这也是为什么作者要以12345678进行试错的原因。在这里作者还麻烦了一些,另外搜索了学号,其实在入党申请的文件中就有密码为12345678的同学了。

和原文一样进行sql的注入试验,不过随意打开的新闻贴只是数字型的注射,仅仅通过这里是无法像原文一样取得信息的,必须在另一个url利用字符型注射才行,原文作者并没有提到在哪里,不过既然我可以找到,相信各位找到也不是困难的事情。

在这里随意取得了一位密码为12345678的同学的密码。

然后就不是什么困难的事情了。

但是,最恐怖的事情发生在,张文艺同学在对外经贸大学的信息平台和人人网使用的密码是相同的,接下来……

事情是令人恐惧的,在这里我有两点思考要分享:

第一,如果一个网站使用明文保存密码,即使设置再复杂的密码也没有任何意义,再长再多一点用都没有。但是,我们平时总说要设置尽量复杂的密码是有意义的,我在这里简单介绍一下密码的储存和加密的一些知识。

在网站的服务器上有一个数据表储存了用户名及其对应的密码,一个明文储存密码的网站仅仅是将用户在表单(输入框)中输入的密码与数据库中的密码进行对应比较,也就是说服务器一旦失守,所有密码都将陷落,就像文中那样。

如果服务器加密了你的密码,那么过程是这样的:

1、注册时候输入密码1234,提交到网站;

2、服务器对1234进行加密,单向的加密成abcd,将abcd储存在数据表中;

3、登陆的时候输入密码1234,被同一个单向的加密算法加密成abcd再与数据库进行比较;

这样的话,即使服务器的数据表被攻破,入侵者只能得到一个加密后的密码,没有任何意义,因为加密算法是单向的,从abcd没有任何方法算出原文1234。

单向加密的概念可以打一个比方,我们可以轻易算出12345*54321=670592745,但是人类却没有任何快速的方法把670592745给质因数分解。如果你解决了大数质因数分解的问题,嗯哼……

那为什么我们还是不能设置简单的密码呢?因为单向加密虽然不可逆,但是却是一一对应的,人们知道1234会被加密成abcd,以后一见到abcd就知道原文是1234了,根本不用去算,密文对应什么样的原文被称作”字典”

MD5就是一种单向加密的算法(严格来说是存在MD5碰撞的,不过不是重点了),被许多网站采用,技术较老,现在有很多MD5的字典,以致于六位以下的小写字母和数字组合的密码几乎能被瞬间破解,比如黑客一见到“E10ADC3949BA59ABBE56E057F20F883E”这段MD5的密文,就知道原文是123456。维基百科对MD5有更多的介绍。人们为了避免字典的攻击,想出了在加密的过程中加一些“盐”(SALT)的方法,但是效果也不太理想。

在几年前我上网时常常在注册后收到邮件“您设定的密码是XXXX,请妥善保存,不要让人看见”,还有一些网站可以找回原来的密码,这种网站基本可以确定就是明文保存密码了,因为如果加密的话,服务器是永远不可能知道你所设定的密码的。

总之,对网站来说,密码必须采用加密储存;对个人来说,密码要设置的复杂,至少在8位以上,并且大小写数字还有特殊符号混合。

第二,很多人将学校的网站视作是一种“特殊”的网站,很信任的填写一些真实信息,但是对于入侵者来说,网站和网站没有区别。甚至,学校的网站往往比商业网站更加疏于安全防护,更加容易攻破,就好像文中提到的对外经贸大学一样。

因此,稳妥的方法应当是——针对不同的网站设置不同的密码,这样即使一个站点被攻破了,影响也能降到最低。

如果你担心网站的密码太多会忘记,不妨设计一些有规则的方案,比如renren.com的密码是“xxxxx@Renren”。有一个设计密码的误区是,密码一定要设计的越乱越没有意义才安全,事实上,对于入侵者和他使用的MD5字典来说,“Flzx@3000c”(飞流直下三千尺)和“19¥Se3@7/”没有太大的区别。只要密码设计的不是由单一元素组成,比如19120101这样,有一些规律方便记忆完全没有区别,大可不必毫无意义反而干扰记忆。

对于一般用户来说,只要做到密码足够复杂(也要便于记忆),不同网站的密码又有所不同,网络使用的安全就可以保证。至于公共WIFI下数据没有加密传输或者是使用不安全的代理,甚至是直接在电脑中有记录键盘密码输入的病毒,那已经和密码设计的本身没有关系了。

发表评论

邮箱地址不会被公开。 必填项已用*标注