空间可以多维存在,测试也可以,所谓的测试经验,只不过是测试思维的一部分而已...

注入缺陷测试案例讲解 (交流一下!留言即可)

上一篇 / 下一篇  2011-03-02 23:08:08

I(oLG"z P {6^JL0目前的 Web 应用中,绝大多数都会向用户提供一个接口,用来进行权限验证、搜索、查询信息等功能。比如一个在线银行应用,首先会有对注册客户进行身份验证的登录界面,在正确登录后,会提供更多交互功能,如根据客户的银行卡号信息,查询客户的最近交易、转账细节等。这些都是注入缺陷的最佳利用场景。所谓注入缺陷,就是在上述场景中,用户输入的数据被当做命令和查询的一部分,送到后端的解释器中解释执行。如果用户的输入是正常合法的,Web 应用自然会返回正常合理的结果,但是,如果恶意攻击者,利用输入数据可被后台执行的原理,偷梁换柱,使用非法的输入,脆弱的 Web 应用会怎样呢?51Testing软件测试网/["k3S4B d*E!I%Hq6B[;n

51Testing软件测试网,D^ eX9c8Q/h,[,x3O;k7\

下面我们举一个例子来说明注入缺陷是如何进行的。在一个交易网站中,用户必须输入产品 ID 号才可以查看该产品的详细信息。为了实现这个需求,通常会用 SQL 语句查询数据库来实现。开发人员在编写应用程序时,可能会使用如下的 SQL 语句来实现上述目的(这里仅为示例):51Testing软件测试网\,sarO1lT{F_

UT;Z0ub$WA uZ0 Select * from products where product_id = ‘ + 用户输入的 ID +'51Testing软件测试网~ e1I(s$eMZ*|

51Testing软件测试网QHV K ]x;u K

这里的 products 是数据库中用来存放产品信息的表,+号表示 SQL 语句需要和用户输入的真实 ID 进行拼接。如果用户输入 325,则该语句在执行时变为:51Testing软件测试网R%CvIR

/kL?6O.dSz \#WW051Testing软件测试网D;y}d!d*~+MO

Select * from products where product_id = ` 325 `51Testing软件测试网'A,VH-[g,Dg S{

aYLusF`6x0数据库会将 ID 为 325 的产品信息返回给用户。51Testing软件测试网d%k)z;aj0Z][

51Testing软件测试网_J*E,pgs8t,^

2) 在界面上,需要用户输入产品 ID 的地方,黑客会输入如下数据:51Testing软件测试网d8z9KNq.`

P)E,{0d$dElT0` or `1`= `151Testing软件测试网-xk F*mL5U9[ Wg2s
51Testing软件测试网0_9}x `l(z'T.[}1}

g t7T+s.P-lhZ!T0可以看到,黑客并没有输入正常合法的产品编号51Testing软件测试网-~%?QbdLvCk

e3Y(v-y6Z|"^Y(e03) 通过黑客的非法输入,需要执行的 SQL 语句变为:51Testing软件测试网l/^;c3uu~?

51Testing软件测试网N4aQ;D5UZ @,_g

Select * from products where product_id = ` ` or `1`=`1`51Testing软件测试网6JU'W'b3u6r-?

51Testing软件测试网y _ a7k)yL

可以看出,SQL 语句的意义就完全改变了,当产品 ID 为空或者 1=1 时,返回产品所有信息,而 1=1 是永远成立的条件,因此,黑客并没有输入任何产品编号,就可以返回数据库中所有产品的详细信息51Testing软件测试网TA'}p6N AER

3l8dxh#~'V.\5c0通过这个例子,我们可以看出,注入缺陷是风险非常高的安全漏洞,一旦 Web 应用中给用户提供了需要其输入数据的接口,就有可能遭到攻击,将后台的数据完全暴露在用户的面前51Testing软件测试网@ g+Du(j%A


TAG:

 

评分:0

我来说两句

Open Toolbar