2010年11月8日,在勿勿发布完 支持多语言、多用户、多数据库、完美URL之路过秋天版博客发布[绝对有杀伤力的博客] 之后
不少网友纷纷给力,对演示网站 http://www.cyqdata.com/ 进行了一次大测试,除了发表评论脚本未编码之外,还有一重大发现:
有个“犀利哥”入侵我的演示用户账号,修改了我的文章,还清空了评论。
于是,我很给力的发挥想象对方可能的入侵手段,并给予总结了一下
1:伪造Cookie实现欺骗登陆
我们先看一下如何才能实现这种方式:
2:在演示网站注册用户,并研究登陆后生成的Cookie
2:反编绎,并能很好的定位发现,在哪里对Cookie进行加密码
3:在本地新建网站并用IIS绑定主机头,用host域名欺骗方式输出Cookie,输出指定用户
4:删除网站和host欺骗
如果很好的完成了以上步骤,我猜测是一种入侵方式。
但是我明显把对方的入侵手段想的太高明,因为如果要实现这种方式,不是刷刷刷就可以做到的,需要花很长的时间和对程序的了解。
难点是?
二是第一时间研究加密的Cookie?一般人第一时间都不会有这个念头,至于我会想到这种方式,原因在于我发布的应用程序的加密方式和我演示的是一致的。
三是新建网站做host欺骗,输出等操作,很烦锁,除非思路一开始便很清晰,不然动起手来没这么快。
于是为了验证是不是这种方式实现的入侵,我第一时间是修改了演示代码的加密方式,并把所有的示例用户密码重置为******
可是不一会,“犀利哥”的再次留言,很明显证实了不是采用这种方式。
有想象也好,至少能引发改进,接下来发布的版本,将对密码加密方式采用密钥形式,保证每个应用程序的加密不一致。
2:Post 入侵
我们先看一下如何才能实现这种方式:
1:研究后台Post的html,简单的或者直接copy出来
2:提交Post,指定别人的文章ID,和自己的内容,以此将自己的内容写入到别的用户去。
第二猜想原因:
如此用户在Post中的action路径指定到另一用户的路径时,造成用户取值错误,从而可产生入侵点。
后来审了下代码,发现取值还是OK的,再看代码中对删除添加等操作都有是判断的,
因此文章内容被修改,有可能是这种方式,不过评论被删,便明显确定不是这种方式入侵。
不过还是修改了代码,并更新到演示项目中,接着发现“犀利哥”的再二次留言。
有想象也好,至少能引发改进,把代码重新调整了下,保证后台的每个调用都对用户进行验证。
3:SQL注入
虽然这是最基本的方式,却被我放在最后想象,大概代码写的太多了。
实现方式,自然是构造组合sql了
比如登录时:select * from Users where username='{0}' and password='{1}'。
正常的第一手法都会构造username='cyq1162' or 1=1--,不过默认--被低层过滤了。
用户名输入为:cyq1162' or 1=1--
于是尝试第二手法构造:username='cyq1162' update Users set username='x' where '1'='1
用户名输入为:cyq1162' update Users set username='x' where '1'='1
于是成功入侵,当然构造SQL注入的方式多种多样,不仅限于上面的两手。
除了登录,在URL参数参数里,对一些ID也漏了点网,好心的网友也提醒了。
另:在我的界面中,限制了用户名15个字符的输入,如何输入更多字符,用firefox编辑下html即可提交
如果没猜错,“犀利哥”应该就是此种方式入侵的,在我封掉注入之后,再不见其留言了~~
最后,欢迎大伙继续使劲的测试:http://www.cyqdata.com/
新版本估计会在近一两天随使用帮助一起发布。