生命就像一场云游 坎坷也是一种收获

Web安全性测试

上一篇 / 下一篇  2008-03-18 14:52:20 / 个人分类:Web安全性测试

一个完整的Web安全体系MILY: 宋体; mso-bidi-font-family: 宋体">测试可以从部署与基础结构,输入验证,身份验证,授权,配置管理,敏感数据,会话管理,加密,参数操作,异常管理,审核和日志记录等几个方面入手

Web安全性测试
数据加密:某些数据需要进行信息加密和过滤后才能进行数据传输,例如用户信用卡信息、用户登陆密码信息等。此时需要进行相应的其他操作,如存储到数据库、解密发送要用户电子邮箱或者客户浏览器。目前的加密算法越来越多,越来越复杂,但一般数据加密的过程时可逆的,也就是说能进行加密,同时需要能进行解密!

登录:一般的应用站点都会使用登录或者注册后使用的方式,因此,必须对用户名和匹配的密码进行校验,以阻止非法用户登录。在进行登陆测试的时候,需要考虑输入的 密码是否对大小写敏感、是否有长度和条件限制,最多可以尝试多少次登录,哪些页面或者文件 需要登录后才能访问/下载等。

超时限制:WEB应用系统需要有是否超时的限制,当用户长时间不作任何操作的时候,需要重新登录才能使用其功能。

SSL
:越来越多的站点使用SSL安全协议进行传送。SSLSecurity Socket Lauer(安全套接字协议层)的缩写,是由Netscape首先发表的网络数据安全传输协议。SSL是利用公开密钥/私有密钥的加密技术。(RSA),在位于HTTP层和TCP层之间,建立用户与服务器之间的加密通信,确保所传递信息的安全性。SSL工作在公共密钥和私人密钥基础上的,任何用户都可以获得公共密钥来加密数据,但解密数据必须要通过相应的私人密钥。进入一个SSL站点后,可以看到浏览器出现警告信息,然后地址栏的http变成https,在做SSL测试的时候,需要确认这些特点,以及是否有时间链接限制等一系列相关的安全保护。

服务器脚本语言:脚本语言是最常见的安全隐患,如有些脚本语言允许访问根目录,经验丰富的黑客可以通过这些缺陷来攻击和使用服务器系统,因此,脚本语言安全性在测试过程中也必须被考虑到。

日志文件:在服务器上,要验证服务器的日志是否正常工作,例如CPU的占用率是否很高,是否有例外的进程占用,所以的事务处理是否被记录等。

目录:WEB的目录安全是不容忽视的一个因素。如果WEB程序或WEB服务器的处理不适当,通过简单的URL替换和推测,会将整个WEB目录完全暴露给用户,这样会造成很大的风险和安全性隐患。我们可以使用一定的解决方式,如在每个目录访问时有index.htm,或者严格设定WEB服务器的目录访问权限,将这种隐患降低到最小程度。

 

 

WEB应用安全的增强只有两种解决途径,黑箱子安全测试白盒安全测试。
所谓黑箱子安全测试方法是指目标测试网站已经正常投入使用的情况下,采用不影响业务正常运转的技术手段进行远程测试,通过模拟黑客的惯用入侵伎俩和手法,测试目标WEB系统在真实的不法攻击压力下的安全性。
所谓白盒子安全测试方法是指在目标网站还处于开发阶段的时侯,进行基于安全编码规则的源代码级别测试。这种测试方法所需要的代价很高,通常需要精通WEB系统安全的安全编码专家带领程序员对整个系统源代码进行阅读和纠错,增加安全代码以使得黑箱子安全测试得到安全的结论。

所以,确保网上银行WEB系统应用程序的安全不是一件简单的事,而不幸的是对WEB应用程序的攻击是非常容易实施的。从信息安全的层面,黑客针对WEB的攻击可以达到从窃取产品和敏感信息到使整个WEB站点甚至后台核心数据库服务器完全瘫痪。
一个黑客通常都会花上几个小时来熟悉他企图突破的WEB应用程序,他会象编制这一套程序的程序员那样思考程序的设计和编码,然后找出编程时留下的漏洞,然后通过浏览器恶意地与应用程序以及数据库进行交互,造成或大或小的损害。要防止这些问题,公司必须预先找出网站的弱点然后关闭有可能被黑客可利用的缝隙。

国外权威的WEB应用安全著作
Web Hacking: Attacks and Defense
by Stuart McClure, Saumil Shah, Shreeraj Shah
Hacking Exposed (TM) Web Applications

by Joel Scambray, Mike Shema“

针对电子商务和网上交易WEB应用平台的安全隐患分类如下:
APPLICATION BUFFER OVERFLOW
应用层缓冲区溢出(压力测试
COOKIE POISONING cookie
安全使用状况评估
CROSS-SITE SCRIPTING
跨站脚本攻击风险评估
HIDDEN MANIPULATION
页面隐藏参数域篡改风险评估

STEALTH COMMANDING
系统隐蔽指令执行风险评估

3RD PARTY MISCONFIGURATION
第三方误配置安全隐患

KNOWN VULNERABILITIES
各类型已知安全漏洞

PARAMETER TAMPERING URL
参数篡改攻击风险评估

BACKDOOR & DEBUG OPTIONS
后门程序和调试选项遗留隐患

FORCEFUL BROWSING WEB
内容强力浏览问题


一个完整的WEB应用是颇为复杂的,它提供电子商务系统的商务逻辑,使得用户可以与WEB站点进行交互操作,其交易活动可以和后台数据库系统接口。WEB应用通常包括下面几个关键组件。
用户接口代码:这是WEB应用的表示层,它创建了站点的可视界面,是联系客户端以及WEB服务 器的接口部分,通常采用HTMLJavaJavaScriptActiveXVB以及其他第三方编写方式。
WEB
服务器软件:WEB服务器用来支持用户浏览器和WEB应用之间的正常通信,它负责处理HTTP请求/响应消息、管理用户会话。几乎所有的WEB站点都采用第三方厂商的WEB服务器产品,例如IISiPlanetApache等。
前端系统:前端系统直接同用户接口代码、操作系统、后台系统进行交互,客户端通过用户接口代码传递的参数将被前端系统处理,最有代表性的例子就是各种CGIJSPASP代码。
后台系统:后台系统是WEB应用真正的驱动部分,它负责处理真正的商务逻辑,直接与数据库系统接口。后台系统通常都是客户定制开发的。
数据库系统:WEB站点通常会采用第三方数据库软件,包括MySQLOracleDB2等。
一个如此复杂的WEB系统,其安全保护机制也应该是多层次全方位的,这是因为构成WEB系统的每一个环节都可能存在脆弱性并由此引入风险,所以每个环节都需要相应的安全控制,例如在WEB应用的用户接口代码中对一些违犯语法规则的数据进行过滤,在前端系统和后台系统中对异常内容进行校验。不过,我们也看到,尽管多数WEB应用都采用了这样那样的安全控制措施,但由于其本身构成的复杂多样,出现某些漏洞也在所难免。
怎样最大程度发现并解决WEB应用系统的漏洞呢?一种方法就是在软件编写过程中进行测试,这也是软件开发周期中一项重要的工作。还有一点非常重要,那就是在WEB应用系统配置完毕正式启用之前对它进行在线评估,通常这是通过远程的安全扫描来实现的。
但是,我们看到,传统的安全扫描技术是有许多缺陷的,一个是不能对未知漏洞进行检测,另一个就是其判断依据过于简单(只依靠HTTP响应消息中的状态码来判断),经常造成误报和漏报,极大地影响了WEB系统安全评估可靠性和准确性。
那么,怎样才能解决这一问题呢?
为了进行有效的WEB安全性审计,除了用传统的扫描器进行初步检测之外,更多时候,还得依靠技术高超的安全专家,手工检测分析目标系统的安全性。手工分析的方法通常包括三个阶段:分析、测试和报告。在分析阶段,测试人员需要对整个WEB应用系统的框架结构深入了解,对每一处牵涉到客户端数据处理的网页内容进行分析,并对与数据库操作相关的部分进行检查,当然,所有的分析工作,都是以一个普通用户的身份,通过正常的WEB访问过程来进行的。测试人员一旦在分析阶段发现了问题(例如某些网页表单存在隐患,某些网页交互功能不健全),就要在测试阶段对这些问题进行实际验证,通过构造各种复杂的测试代码(实际上就是构造客户端提交的表单信息或CGI参数),攫取WEB应用返回的响应消息,从中判断问题存在与否。最终,测试人员会对测试结果进行综合分析,汇总之后提交测试报告。
上述过程不难给我们一些启发:WEB安全评估不应该只是简单地以已知漏洞库为核心来进行操作,而应该和WEB应用系统实际的操作内容及功能结合起来,进行更深入更智能的分析。实际上,就是把人工测试的过程自动化。
基于以上需求,新型实用的WEB应用安全评估系统具有以下特点:
能够遍历整个WEB系统的拓扑结构,从中找到所有可浏览和可交互的页面
能够对所有可浏览页面进行内容检索和分析,从中找到所有与客户端/服务器交互相关的动态内容(例如表单);
能够自动构造各种类型的异常提交参数,模拟大多数普遍存在的WEB攻击手段,探测各种已知漏洞和未知漏洞;
能够对响应消息进行内容分析,结合状态码,判断测试结果;
数据库的设计将不仅仅是一个保存已知漏洞特征的漏洞库,而是结合了普遍攻击手段描述内容的专家库,这种专家库可以方便地进行扩充;
基于WINDOWS的操作界面,,迎合用户操作习惯。

总的来说,这种新型的WEB应用安全评估系统应该是一个应用级的、内容分析的专家系统,它把手工测试过程中的专家经验嵌入到自动测试的工具当中,使得常规的静态WEB漏洞扫描演变成为动态可变的全方位的WEB应用系统安全评估。

 

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2011-06-08  
   1234
567891011
12131415161718
19202122232425
2627282930  

数据统计

  • 访问量: 7967
  • 日志数: 64
  • 建立时间: 2007-09-05
  • 更新时间: 2008-04-01

RSS订阅

Open Toolbar