安全性测试系列-如何对网站进行安全性测试
上一篇 / 下一篇 2009-12-25 17:49:21 / 个人分类:安全性测试
(1)如何进行SQL注入测试?
j-?;H$[x&Qc051Testing软件测试网2~"eWJ6JM
- 首先找到带有参数传递的URL页面,如搜索页面,登录页面,提交评论页面等等.
vh Eq?0
<form. id="form_search" action="/search/" method="get"> <div> <input type="text" name="q" id="search_q" value="" /> <input name="search" type="image" src="/media/images/site/search_btn.gif" /> <a href="/search/" class="fl">Gamefinder</a> </div> |
注2:当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如HTTP://DOMAIN/INDEX.ASP?ID=1051Testing软件测试网 iz2\9NW+Y:L
- 其次,在URL参数或表单中加入某些特殊的SQL语句或SQL片断,如在登录页面的URL中输入HTTP://DOMAIN/INDEX.ASP?USERNAME=HI' OR 1=1--
注1:根据实际情况,SQL注入请求可以使用以下语句: ' or 1=1- - " or 1=1- - or 1=1- - ' or 'a'='a " or "a"="a ') or ('a'='a 51Testing软件测试网8S+~B$C-i(Z%N*` 例子:在登录时进行身份验证时,通常使用如下语句来进行验证:sql=select * from user where username='username' and pwd='password' 如 输入http://duck/index.asp?username=admin' or 1='1&pwd=11,SQL语句会变成以下:sql=select * from user where username='admin' or 1='1' and password='11' '与admin前面的'组成了一个查询条件,即username='admin',接下来的语句将按下一个查询条件来执行. 接下来是OR查询条件,OR是一个逻辑运算符,在判断多个条件的时候,只要一个成立,则等式就成立,后面的AND就不再时行判断了,也就是说我们绕过了密码验证,我们只用用户名就可以登录. 如 输入http://duck/index.asp?username=admin'--&pwd=11,SQL语句会变成以下sql=select * from user where name='admin' --' and pasword='11', p L~? N!z|di0 接下来是"--"查询条件,“--”是忽略或注释,上述通过连接符注释掉后面的密码验证(注:对ACCESS数据库无效). |
- 最后,验证是否能入侵成功或是出错的信息是否包含关于数据库服务器的相关信息;如果能说明存在SQL安全漏洞.
- 试想,如果网站存在SQL注入的危险,对于有经验的恶意用户还可能猜出数据库表和表结构,并对数据库表进行增\删\改的操作,这样造成的后果是非常严重的.
T7Mw.W7Z9g9_Z eAz0
A-P9a3@N.B*P nk/i0 从应用程序的角度来讲,我们要做以下三项工作:51Testing软件测试网[4})a(OQr-ht
- 转义敏感字符及字符串(SQL的敏感字符包括“exec”,”xp_”,”sp_”,”declare”,”Union”,”cmd”,”+”,”//”,”..”,”;”,”‘”,”--”,”%”,”0x”,”><=!-*/()|”,和”空格”).
屏蔽出错信息:阻止攻击者知道攻击的结果51Testing软件测试网]-hBkr'SL2gV1qgg
在服务端正式处理之前提交数据的合法性(合法性检查主要包括三项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作.
!CD"PE"W5\QS+Z[0
ZH/SZ(m.z"KW&Yc0
6Dr#Go]Y0
- 需求中应说明表单中某一FIELD的类型,长度,以及取值范围(主要作用就是禁止输入敏感字符)
- 需求中应说明如果超出表单规定的类型,长度,以及取值范围的,应用程序应给出不包含任何代码或数据库信息的错误提示.
!UeqG3eFR2K0
2.Cross-site scritping(XSS):(跨站点脚本攻击)51Testing软件测试网jPZXc-o
(1)如何进行XSS测试?51Testing软件测试网5YXm|1z
n6fk!G.~`
51Testing软件测试网t0` wRY%WGP
- <!--[if !supportLists]-->首先,找到带有参数传递的URL,如登录页面,搜索页面,提交评论,发表留言页面等等。
- <!--[if !supportLists]-->其次,在页面参数中输入如下语句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)来进行测试:
<scrīpt>alert(document.cookie)</scrīpt> |