注水漏洞的利用和防范

注水漏洞的利用和防范,第1张

注水漏洞的利用和防范,第2张

参加IT认证考试之前,笔者习惯在网上搜索。逛了一圈,不小心来到了PROMETRIC的中文站。我发现整个网站都是ASP程序,刚才还有一个考场的登录界面。要是我能找到任何漏洞就好了。
利用漏洞
我随便找了一页(http://www.promet.ric.com.cn/openpage.asp?Page_id=0),在参数0后面加一个单引号。返回的页面显示:500服务器内部错误。在IE的互联网选项→高级中有一个“显示友好的HTTP错误信息”的选项。取消之前的勾选。现在,我们可以看到详细的错误消息:

Microsoft ole db provider for odbc drivers ' 80040 e14 '
[Microsoft][odbc SQL server driver][SQL server]第1行的错误:靠近“”的语法不正确。/audit.asp,第18行

原来PROMETRIC使用的是MSSQL,似乎存在严重的注入漏洞(由于疑似攻击步骤,此处不赘述)。

原则

SQL注入的漏洞通常是由于程序员在设计程序时对它的忽视和对某个参数的过滤不严造成的。就拿刚才测试用的链接中的参数page_id来说,肯定没有过滤检查,源程序中的查询语句如下:

Select * From Table Where page _ id = ' 0 '

当我们在page_id=0和1=1的情况下将它提交给http://www.prometric.com.cn/openpage.asp?时,查询语句变成:

Select * From Table Where page _ id = ' 0 '且1=1

当我们提交其他查询语句时,程序也会做出执行判断,比如:

http://www.prometric.com.cn/openpage.asp? page _ id = 0且用户> 0

查询变成了:

Select * From表,其中page_id='0 '且用户> 0

User MSSQL是一个内置函数,引用当前连接到数据库的用户名,是一个nvarchar值。当它与整数0比较时,MSSQL将尝试将user的值转换为int类型,因此MSSQL将报告一个错误:

[Microsoft][ODBC SQL Server驱动程序][SQL Server]将nvarchar值“web”转换为数据类型为int的列时出现语法错误。

出错后,库名,表名,数据等。被显示。对方屏蔽错误信息怎么办?这时候我们会用Unicode,Substr等函数,通过条件判断来做一个猜测。

如何使用

您可以使用朱晓开发的NBSI2 MSSQL(以下简称“NBSI2”)工具。但是要注意,工具永远只是工具,只能用来提高效率和准确性。你必须自己知道原理。

通过NBSI2,我们成功导出了PRO METRIC中文网数据库中的表名和数据,其中包含了各个考场的登录用户和密码。

通过跨库查询,笔者还发现余额表中的余额字段存储了考场预付款的余额信息,只要进行跨库更新,完全可以更改。

这时,作者突发奇想。既然能拿到考场方案,那能不能设立一个私人考场...

行动不如行动。立即开始安装考试系统。安装过程非常复杂,需要config.dts文件(网站上没有)。

就在我不知道该怎么办的时候,突然发现了企业邮箱服务。PROMETRIC为每个考场开通了新浪企业邮箱。

这些考场会不会为了方便而不改默认密码?果然很多考场都没有改默认密码,所以笔者很轻松的进入了这些邮箱。经过一番查找,终于在某考场的邮箱里找到了PROMETRIC发来的config.dts文件...

至此,本次安全测试告一段落。试想一下,如果私自安装了考场程序,我们可以随意修改考生的信息吗?如果我改了预付款,还能免费报名考试吗?而且利用考场ID和密码,我们可以在网站上更改任何一个考场的报名信息,然后通过社会工程克隆一个假考场是完全可能的。

附言

不知道大家还记得上一期《计算机新闻》关于Oracle注入漏洞的文章吗?虽然在技术手段和危害上有所不同,但有一个共同点——从小处撕开缺口,从而造成大的危害。

在笔者探索的网站中,有些网站只注意过滤地址栏中提交的非法字符,而忽略了搜索功能中提交的字符,所以网站中还是会存在注入漏洞。

网络安全是一项非常重要的、全局性的工作,每个地方都需要重视,否则造成的损失难以估计。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 注水漏洞的利用和防范

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情