文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程CGI/Perl关于我和刘思平发现的xx(www.xxxxxxx.com)的cgi漏洞
精品推荐
特别推荐
·在CGI中如何使用cookie的方法
·CGI脚本在WIN2000、WINNT下安装
热点TOP10
·cgic: 为C语言编写CGI的C函数库
·Perl实例:
·在CGI中如何使用cookie的方法
·CGI 安全问题
·怎样一次打印多个文件
·CGI脚本在WIN2000、WINNT下安装
·CGI教程(4)HTML 表单
·cgilib例
·Perl教学 第十二篇 Perl5中的引用之二
·Perl教学 第十二篇 Perl5中的引用之一
·Perl/Tk FAQ - 4. 哪里有Perl/Tk?
·用Perl写出自己的安全工具--初级
·购建ASP、CGI、PHP+MySQL运行环境——服务器运行环境配置全攻略(二)
·跟我学Perl
·访问标准CGI变量
·关于我和刘思平发现的xx(www.xxxxxxx.com)的cgi漏洞
·关于Sendmail和Perl的邮件附件过滤系统
·关于odbc的一个文挡说明
·建立个人服务器脱机调试CGI脚本
·计数器的编写方法

关于我和刘思平发现的xx(www.xxxxxxx.com)的cgi漏洞

日期:2007年5月10日 作者: 查看:[大字体 中字体 小字体]



(注意:出于对mark的尊重,我把一些信息用xx代替了。
在公布此文章的时候,xx的cgi漏洞可能已经修正,所以文章中的内容无法证实, 希望看的人主要看看原理,在自己的程序中多注意)

一 原理

sqlhacking,我想大家都知道,就是web应用程序如果不对用户提交的数据做过滤 , 直接应用到sql语句中提交给后台数据库,这样很容易被不良用心的人利用,提交特殊 的 参数,构造sql语句,获得数据库中的敏感信息,包括:数据库用户的帐号、口令、安
全资料、 甚至于web维护人员的口令,或者提升权限,直接获得操作系统system权限(MSSQL). 对于www.xxxxxxx.com有多处存在此类问题,我找到一处比较有典型代表,如下链接


http://search.xxxxxxx.com/cgi-bin/search1?userid=12345
^^^^^
这个链接是得到用户的资料,12345就是要查询的xx的ID,也就是数据库里的userid字 段 :)
如果我们提交这个链接,大家看看会有什么结果

http://search.xxxxxxx.com/cgi-bin/search1?userid=12345 and passWord='1234'

~~~~~~~~~~~~~~~~~~~~~~~~~
请看cgi程序use_show_info返回什么
“错误: Fail To Execute SQL: Unknown column 'password' in 'where clause' ”
这种调试信息本该只用到测试的时候显示给程序员调试用的,但目前清清楚楚显示给我 们.

cgi程序把我们提交的内容12345 and password='1234'全部加到sql语句中送给了mysql 操作, 当然出错了,因为操作的表里没有password这个字段。我猜想这条sql语句可能是这样 的:
select xxx,xxx,xxx,xxx from usertable where userid= %s
等加入我们提交的内容后,真正送给mysql的sql语句就变成:

select xxx,xxx,xxx,xxx from usertable where userid= 12345 and password='1234'
^^^^^^^^^^^^^^^^^^^^^^^^^^

看,当然会出错。但我们如何利用这点web应用程序的漏洞呢?
二 如何得到xx用户口令加密后的字段长度

如果我们知道存放口令的字段名后,这条sql语句就决不会显示上面的出错信息,最 多显示 数据库找不到数据,和数据库出错等等(请注意:我们一定要思考为什么web应用程序 会给我 们这样不同的出错信息,在后面我们都要通过出错信息的不同来判断我们的操作是否正 确)
到了此处我试了多个链接,如:
12345 and password='1234'
12345 and passwd='1234'
12345 and pass='1234'
12345 and PASS='1234'
.....
都显示没有次字段名的错误,所以仍然没有猜到正确的口令数据库中的字段名。 但我绝对确信口令的字段一定同xx号字段(userid)在一个数据表(usertable)里,因为没 有人
会把用户id和口令passwd放到不同的表里,这些是需要经常检索的数据。
在我无法继续的时候,刘思平给了我另外一个www.xxxxxxx.com的很致命的cgi漏洞 这个漏洞是cgi居然没有执行就被直接下载到客户端,里面清清楚楚显示了数据库里的 众多重要的 信息,如数据表名,字段名,sql语句等等。通过这个问题,我找到了我感兴趣的东西
用户信息表名usertable,xx号码字段名userid, xx口令字段名passwordfield,这就足够了:)

好,现在我们提交这个链接:
http://search.xxxxxxx.com/cgi-bin/search1?userid=12345 and
passwordfield='1234'

~~~~~~~~~~~~~~~~~~~~~~~~
真好,不再显示找不到字段名的出错信息,而是显示
“错误: 数据库错误 ” 这样的出错信息。
“错误: 数据库错误 ” 这条信息我考虑可能是cgi在发现数据库没有检索到任何 数据后 ,显示的出错信息,当然也可能有其它原因,我们也无法知道这个cgi程序到底是如何工 作的。
但总可以知道,我们确实已经可以接触到passwordfield这个字段了。

那我们看看这个字段有多长,用如下几个链接

1) http://search.xxxxxxx.com/cgi-bin/search1?userid=12345 and
length(passwordfield)<32

[1] [2] [3] 下一页 




上一篇:关于Sendmail和Perl的邮件附件过滤系统

下一篇:访问标准CGI变量

关于我和刘思平发现的xx(www.xxxxxxx.com)的cgi漏洞 相关文章:
·关于我和刘思平发现的xx(www.xxxxxxx.com)的cgi漏洞
关于我和刘思平发现的xx(www.xxxxxxx.com)的cgi漏洞 相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn