转载ibm测试工具APPSCAN的web安全性测试1
上一篇 / 下一篇 2008-12-23 14:53:04 / 个人分类:安全性测试
w2Z%@X z}'^sU)s0前言
/d[)k0R|?2t0当今世界,Internet(因特网)已经成为一个非常重要的基础平台,很多企业都将应用架设在该平台上,为客户提供更为方便、快捷的服务支持。这些应用在功能和性能上,都在不断的完善和提高,然而在非常重要的安全性上,却没有得到足够的重视。由于网络技术日趋成熟,黑客们也将注意力从以往对网络服务器的攻击逐步转移到了对 Web 应用的攻击上。根据 Gartner 的最新调查,信息安全攻击有 75% 都是发生在 Web 应用而非网络层面上。同时,数据也显示,三分之二的 Web 站点都相当脆弱,易受攻击。然而现实确是,绝大多数企业将大量的投资花费在网络和服务器的安全上,没有从真正意义上保证 Web 应用本身的安全,给黑客以可乘之机。51Testing软件测试网\(B0Wuo'_
51Testing软件测试网g u-j\(r本文将从对 Web 应用现状的分析入手,通过列举常见的攻击手段,阐明 Web 应用目前面临的挑战,同时,通过对 Rational AppScan 平台的介绍,协助企业制定 Web 应用安全解决方案,为企业的 Web 应用披上盔甲。51Testing软件测试网4so8w(X)Q,d)y5m1ty\
51Testing软件测试网$m.IJ%r yFv%X:xn'`X%e4V_.m*k+U0 |
51Testing软件测试网7]#\%tj nOE
|
*?r]I h;kp \051Testing软件测试网!C4^ ^ pZ7XI{
5{YtF.k0Web 应用现状51Testing软件测试网+l*c&Z4x}
51Testing软件测试网I\{2`D5CIWeb 应用的基础概念51Testing软件测试网r@}P-T^
51Testing软件测试网-^"L T m@在讨论 Web 应用安全之前,先简单介绍一下 Web 应用基础概念,这样便于理解为什么 Web 应用是脆弱的,容易受到攻击。51Testing软件测试网xI~{L/MGr6|
51Testing软件测试网Q? Lp _ ?,r5it:f1、 什么是 Web 应用
\}7AK V/F0E B9[^K(|mHQ0Web 应用是由动态脚本、编译过的代码等组合而成。它通常架设在 Web 服务器上,用户在 Web 浏览器上发送请求,这些请求使用 HTTP 协议,经过因特网和企业的 Web 应用交互,由 Web 应用和企业后台的数据库及其他动态内容通信。
.a!{cc Y#q_Z0P5wnu p r W p02、 Web 应用的架构51Testing软件测试网j0HM1`&u} e0z;^ Rg
eO$i,E ttaP0尽管不同的企业会有不同的 Web 环境搭建方式,一个典型的 Web 应用通常是标准的三层架构模型,如图 1 所示。51Testing软件测试网`wv!Q3Er$aa,\b
y Z!Y1O Tw:u7d3B0图 1: Web 应用通常是标准的三层架构模型
)mgTf_;f4I"c0sG,H'@051Testing软件测试网$U1Q2o4D\0] a,Mo*Q
5r.[:X?%W.jx0在这种最常见的模型中,客户端是第一层;使用动态 Web 内容技术的部分属于中间层;数据库是第三层。用户通过 Web 浏览器发送请求(request)给中间层,由中间层将用户的请求转换为对后台数据的查询或是更新,并将最终的结果在浏览器上展示给用户。51Testing软件测试网P+j2h6T(Xt
[k?rngp+O0Web 应用安全全景
/c;@&]1U2|051Testing软件测试网X$K!wti"S%S当讨论起 Web 应用安全,我们经常会听到这样的回答:
Qn0})rYG9J0“我们使用了防火墙”、“我们使用了网络脆弱扫描工具”、“我们使用了 SSL 技术”、“我们每个季度都会进行渗透测试”……所以,“我们的应用是安全的”。现实真是如此吗?让我们一起来看一下 Web 应用安全的全景图。
q9]l.E Pm)\.m0图 2: 信息安全全景
+?~&tt f'O!f0
n2{$_z]2J^#ai0
+lB0W+jKg[!F0L ]0在企业 Web 应用的各个层面,都会使用不同的技术来确保安全性。为了保护客户端机器的安全,用户会安装防病毒软件;为了保证用户数据传输到企业 Web 服务器的传输安全,通信层通常会使用 SSL(安全套接层)技术加密数据;企业会使用防火墙和 IDS(入侵诊断系统)/IPS(入侵防御系统)来保证仅允许特定的访问,不必要暴露的端口和非法的访问,在这里都会被阻止;即使有防火墙,企业依然会使用身份认证机制授权用户访问 Web 应用。
3xK+yhtp0.s,yn K%n}+|2@$A ?0但是,即便有防病毒保护、防火墙和 IDS/IPS,企业仍然不得不允许一部分的通讯经过防火墙,毕竟 Web 应用的目的是为用户提供服务,保护措施可以关闭不必要暴露的端口,但是 Web 应用必须的 80 和 443 端口,是一定要开放的。可以顺利通过的这部分通讯,可能是善意的,也可能是恶意的,很难辨别。这里需要注意的是,Web 应用是由软件构成的,那么,它一定会包含缺陷(bugs),这些 bug 就可以被恶意的用户利用,他们通过执行各种恶意的操作,或者偷窃、或者操控、或者破坏 Web 应用中的重要信息。51Testing软件测试网#V0dE ?N1Td ~,o6d&T
}:Z|.s$I7ocf!B \;M0因此可以看出,企业的回答,并不能真正保证企业的应用安全:
` B%[8y])T-}wy\0- 网络脆弱性扫描工具,由于它仅仅用来分析网络层面的漏洞,不了解应用本身,所以不能彻底提高 Web 应用安全性;
- 防火墙可以阻止对重要端口的访问,但是 80 和 443 端口始终要开放,我们无法判断这两个端口中通讯数据是善意的访问还是恶意的攻击;
- SSL 可以加密数据,但是它仅仅保护了在传输过程中数据的安全性,并没有保护 Web 应用本身;
- 每个季度的渗透测试,无法满足处于不断变更之中的应用。
F'j"o6P(Mv0只要访问可以顺利通过企业的防火墙,Web 应用就毫无保留的呈现在用户面前。只有加强 Web 应用自身的安全,才是真正的 Web 应用安全解决之道。
S` ^Q `9b9a mdT|051Testing软件测试网5Qz/z:`T6Uv51Testing软件测试网\({9XeB |
51Testing软件测试网*]'~$U1{Hg1h:S4S
|
2G/rq@w gS051Testing软件测试网,l-r0cxUbu
51Testing软件测试网*n8dO6cY W/[1T,g}/JU V2gY051Testing软件测试网#Bcp*mU?XV"t?(}(P(MY:Pd{ j9f051Testing软件测试网U4Rj|2A4pU1X]1`
在讨论常见的 Web 应用攻击之前,我们需要先了解两个组织:WASC 和 OWASP。这两个组织在呼吁企业加强应用安全意识和指导企业开发安全的 Web 应用方面,起到了重要的作用。51Testing软件测试网;u!HmcyW
b&PUh"a0Web Application Security Consortium(WASC),是一个由安全专家、行业顾问和诸多组织的代表组成的国际团体。他们负责为 WWW 制定被广为接受的应用安全标准。WASC 组织的关键项目之一是“Web 安全威胁分类”,也就是将 Web 应用所受到的威胁、攻击进行说明并归纳成具有共同特征的分类。该项目的目的是针对 Web 应用的安全隐患,制定和推广行业标准术语。WASC 将 Web 应用安全威胁分为如下六类:
2`CGAC{_N2pI0- Authentication(验证)
- 用来确认某用户、服务或是应用身份的攻击手段。
- Authorization(授权)
- 用来决定是否某用户、服务或是应用具有执行请求动作必要权限的攻击手段。
- Client-Side Attacks(客户侧攻击)
- 用来扰乱或是探测 Web 站点用户的攻击手段。
- Command Execution(命令执行)
- 在 Web 站点上执行远程命令的攻击手段。
- Information Disclosure(信息暴露)
- 用来获取 Web 站点具体系统信息的攻击手段。
- Logical Attacks(逻辑性攻击)
- 用来扰乱或是探测 Web 应用逻辑流程的攻击手段。
可以通过如下的网址访问该组织网站,获得更多详细信息:www.webappsec.org。也可以通过参考资料中链接,具体了解“Web 安全威胁分类”项目。51Testing软件测试网#x([ ^ SQ)~I
51Testing软件测试网;LWqV,I5t&Y#X cyOpen Web Application Security Project(OWASP),该组织致力于发现和解决不安全 Web 应用的根本原因。它们最重要的项目之一是“Web 应用的十大安全隐患”,总结了目前 Web 应用最常受到的十种攻击手段,并且按照攻击发生的概率进行了排序。这个项目的目的是统一业界最关键的 Web 应用安全隐患,并且加强企业对 Web 应用安全的意识。51Testing软件测试网 |@ K:x{L*c5p
;t2?rk?D B2xA0图 3: Web 应用十大安全隐患
Z-E:XBj9a7o.x x7_051Testing软件测试网[+A.p(FO DA7\
;GHE(Rmk0可以通过如下的网址访问该组织,了解更为详细的信息:www.owasp.org。也可以通过参考资料中链接,具体了解“Web 应用十大安全隐患”项目。
$HDryTW(i#_"L051Testing软件测试网 { z-f#`*QpDIBM Rational,是上述两个组织的成员。
3L A s7`m0%{[(KUP'@3v9M&t8d0常见的 Web 应用攻击示例
#E@UH!k:n9Xd'U5g0/if_KR2Ti1p0在 OWASP 组织列举的十大 Web 应用安全隐患中,有两个概率最高的攻击手段,它们分别是“跨站点脚本攻击”(Cross-Site scrīpting)和“注入缺陷”(Injection Flaws)。下面将通过举例来说明这两种攻击是如何实施的。51Testing软件测试网!t CyaO-ob
51Testing软件测试网S'Z.|!M\*[5I.D1、 跨站点脚本攻击51Testing软件测试网/@4o&ih6puz
51Testing软件测试网q YxYKdX首先来看一下跨站点脚本的利用过程,如图 4。
;oC+A+nbBs~051Testing软件测试网%HdH#qn$B图 4: 跨站点脚本攻击的过程
`m)["hpn"\0
"wK Av8P k/\-y;l)o0
2E(|d f"O@0在上图中,恶意攻击者(这里使用 Evil.org 表示)通过 E-mail 或 HTTP 将某银行的网址链接发给用户(银行用 bank.com 表示),该链接中附加了恶意的脚本(上图步骤一);用户访问发来的链接,进入银行网站,同时,嵌在链接中的脚本被用户的浏览器执行(上图步骤二、三);用户在银行网站的所有操作,包括用户的 cookie 和 session 信息,都被脚本收集到,并且在用户毫不知情的情况下发送给恶意攻击者(上图步骤四);恶意攻击者使用偷来的 session 信息,伪装成该用户,进入银行网站,进行非法活动(上图步骤五)。
!ThT K(QOz%c051Testing软件测试网(Ak!Rpg&S8Q*p;i因此,只要 Web 应用中,有可被恶意攻击者利用执行脚本的地方,都存在极大的安全隐患。黑客们如果可以让用户执行他们提供的脚本,就可以从用户正在浏览的域中偷到他的个人信息、可以完全修改用户看到的页面内容、跟踪用户在浏览器中的每一个动作,甚至利用用户浏览器的缺陷完全控制用户的机器。51Testing软件测试网[ZP_6y!n
51Testing软件测试网8[{}4[Y~2u目前,跨站点脚本攻击是最大的安全风险。51Testing软件测试网X:Cow C?
,r)GD^U4P A;\ \02、 注入缺陷51Testing软件测试网 _X;_*z&rW
"W l2joS/a*F2J9w ^0目前的 Web 应用中,绝大多数都会向用户提供一个接口,用来进行权限验证、搜索、查询信息等功能。比如一个在线银行应用,首先会有对注册客户进行身份验证的登录界面,在正确登录后,会提供更多交互功能,如根据客户的银行卡号信息,查询客户的最近交易、转账细节等。这些都是注入缺陷的最佳利用场景。所谓注入缺陷,就是在上述场景中,用户输入的数据被当做命令和查询的一部分,送到后端的解释器中解释执行。如果用户的输入是正常合法的,Web 应用自然会返回正常合理的结果,但是,如果恶意攻击者,利用输入数据可被后台执行的原理,偷梁换柱,使用非法的输入,脆弱的 Web 应用会怎样呢?51Testing软件测试网 f;g2do&ym
!d7bCV.t0下面我们举一个例子来说明注入缺陷是如何进行的。在一个交易网站中,用户必须输入产品 ID 号才可以查看该产品的详细信息。为了实现这个需求,通常会用 SQL 语句查询数据库来实现。开发人员在编写应用程序时,可能会使用如下的 SQL 语句来实现上述目的(这里仅为示例):51Testing软件测试网8dS3iC D,]
51Testing软件测试网-z^d1U9xu H1)Select * from products where product_id = ` + 用户输入的 ID + `
51Testing软件测试网!DfUA$SFg4t1U
这里的 products 是数据库中用来存放产品信息的表,+号表示 SQL 语句需要和用户输入的真实 ID 进行拼接。如果用户输入 325,则该语句在执行时变为:
UoM{7j1hg0Select * from products where product_id = ` 325 ` |
$IL0` y*h4o0
8e@:T-j7|q0数据库会将 ID 为 325 的产品信息返回给用户。51Testing软件测试网"yb4}+MhSRm4J
51Testing软件测试网c9eFHH9n2) 在界面上,需要用户输入产品 ID 的地方,黑客会输入如下数据:51Testing软件测试网?'z!K K%YK
` or `1`= `1 |
.gG Ko;ZxIg$e0可以看到,黑客并没有输入正常合法的产品编号。
k*{f*h&q051Testing软件测试网']7}/b;O'x@3) 通过黑客的非法输入,需要执行的 SQL 语句变为:51Testing软件测试网w ?`;s lN2J6h
Select * from products where product_id = ` ` or `1`=`1` |
8r%w%WVN(c*CD6I0
cLkQ)h[0可以看出,SQL 语句的意义就完全改变了,当产品 ID 为空或者 1=1 时,返回产品所有信息,而 1=1 是永远成立的条件,因此,黑客并没有输入任何产品编号,就可以返回数据库中所有产品的详细信息。
]:B)M7H)y ?z8^/jw04lh8qnGLE1vQ0通过这个例子,我们可以看出,注入缺陷是风险非常高的安全漏洞,一旦 Web 应用中给用户提供了需要其输入数据的接口,就有可能遭到攻击,将后台的数据完全暴露在用户的面前。
([zcv;u]g4\t.Ej|051Testing软件测试网`+X]L+pGU l上述说明的“跨站点脚本攻击”和“注入缺陷攻击”,是目前 Web 应用中比例最高的两种攻击手段,按照 OWASP 的项目排序,还有如下八种风险性较高的攻击方法:51Testing软件测试网)}F4}3dXs_
- Malicious File Execution(恶意文件执行);
- Insecure Direct Object Reference(不安全的直接对象引用);
- Cross-Site Request Forgery(跨站点的请求伪造);
- Information Leakage and Improper Error Handling(信息泄漏和不正确的错误处理);
- Broken Authentication & Session Management(损坏的认证和 Session 管理);
- Insecure Cryptographic Storage(不安全的密码存储);
- Insecure Communications(不安全的通信);
- Failure to Restrict URL Access(未能限制 URL 访问)
在这里,我们就不过多的讨论这几种安全隐患,可以使用 3.1 节中提供的链接得到更多的描述信息。
em A:CV%@2x0!|Vb y4R~(f0
4DHJ[5ZAubi8o0 |
51Testing软件测试网'jdO#F7abB Nl
L/f%p;m
|