HW:Web安全测评

admin 2022年7月28日17:05:37评论39 views字数 3342阅读11分8秒阅读模式
微信公众号:计算机与网络安全


针对典型的Web应用安全测评,可以将其划分为以下5个阶段:资产划分、信息收集、漏洞识别、安全评估以及解决方案的制定。

1、资产划分

在Web安全测评中,资产划分是所有工作的基础,正所谓“方向问题是根本问题”。不同的Web应用根据各自的功能、业务的不同,对于安全的需求有很大的差异。为了避免南辕北辙,往往需要在工作的准备阶段对全局有一个高屋建瓴的认识,明确工作目标以及被测对象在各个层面的安全需求。

如对于保险、医疗、通信等服务类行业,客户的数据无疑是十分敏感且重要的,这部分的数据库在资产划分中应获得较高的权重;而对于一些以高科技为导向的企业,则对自身的研究成果、员工资料等数据的安全性更加敏感。又如,同样一个企业,在员工内部使用的Web应用和面向互联网的Web应用之间明显有着优先级差异,因为部署在互联网上的Web应用可能面临着更多被攻击的风险,其对安全的要求也更高。

所以,在进行测评之前,要对所测试的Web系统进行资产划分,通过与Web系统的管理及开发人员进行沟通,对系统的业务需求、边界等基本情况进行了解与分析,基于被测试系统各部分的重要程度及所处的安全域,将系统的组成划分为以下几个部分:非常重要且不应被直接访问的(如数据库)、比较重要且可以被访问的(如Web应用)、重要程度较低的且可被随意访问的(如互联网)。资产划分的过程也是一个识别和明确被测对象的过程,基于以上思路可以使测试人员明确不同层面资产的安全需求,进而有针对性地开展安全测评。

2、信息收集

确定Web应用的资产划分、分级后,下一步要做的工作就是收集信息。对于Web应用而言,可以通过枚举应用程序的内容与功能,确定用户输入点、服务器端采用的技术架构、服务器端功能,并由此分析出可能实施攻击的位置。


枚举Web应用的内容和功能,其目的在于了解应用程序的实际功能和运行机制。通常情况下,手动浏览即可确定应用程序的绝大部分内容和功能,但为了更全面记录每一项确定的功能,可以使用工具帮助进行分析,如Web Scarab、Nikto等。枚举应用程序功能时,基本可以确定应用程序获取用户输入的位置,主要包括:


1)URL字符串,包括查询字符串标记;

2)GET方式提交的参数;

3)POST请求主体中提交的参数;

4)Cookie;

5)HTTP消息头,如User-Agent、Accept-Language等。


确定服务器端技术架构的方法较多,如版本信息、HTTP指纹、页面文件扩展名、目录名称、会话令牌和第三方代码组件。如图1所示,可通过网络数据分析工具获取HTTP指纹,从而确定服务器端的技术架构。

HW:Web安全测评
图1  HTTP指纹
通过留意观察应用程序,一般可推断出与服务器端功能和结构有关的大量信息。例如,应用程序是否执行了全局性的输入确认检查、应用程序是否会查询已到期内容等。

3、漏洞识别

获取Web应用的相关信息后,就对目标应用的功能、技术架构和可能的攻击点有了基本的了解,下一步就要识别Web应用存在的各类安全漏洞。

目前,针对Web应用的安全测评方法主要分为模拟真实的动态攻击以发现漏洞的黑盒测试法和以扫描源代码发现漏洞的白盒测试法两类:黑盒测试在Web应用运行的时候对其进行分析,以发现攻击者可能发现的弱点,优点是可以验证漏洞及其可利用性,但也存在一些不足,如黑盒测试处于开发生命周期后端,可能导致不完整的测试覆盖,黑盒测试也不能指出漏洞产生于应用代码中的具体位置;白盒测试主要针对Web应用的源代码进行分析,定位源代码中可能出现的安全缺陷,优点是在开发生命周期的编码阶段就可以对其安全性进行检测,及早介入以降低损失和维护成本。同时,白盒测试可以指出漏洞在应用代码中的位置,但白盒测试并不真正运行应用代码,可能会出现漏报。

在实际测评工作中,可以采用黑盒测试与白盒测试相结合的方式,在开发生命周期的不同阶段对系统进行安全测试,降低漏洞产生的几率。具体的漏洞识别方法主要有以下4个方面。

(1)代码审查。代码审查是软件开发中常用的白盒测试手段,和品质保证(QA,Quality Assurance)测试相比,它更容易发现与架构及时序相关的问题。对 Web 应用程序代码进行审查时需要仔细检查的相关安全功能组件包括用户验证组件、会话管理组件、访问控制组件、输入输出确认组件、外部组件接口。Web应用程序可以在很多平台上进行开发,进行代码审查时需要审查的代码不尽相同,但在不同的平台上进行代码审查,通常都包括确定用户提交数据的方法、检查会话交互过程、检查潜在危险的API使用和检查平台安全配置这几个步骤。许多类型的Web应用漏洞在代码中都有相对一致的特征,这也意味着通过扫描和搜索代码就可以确定一个Web应用的大部分漏洞。如SQL注入漏洞通常存在于各种硬编码的字符串,与用户可终止的数据串联成最终执行语句;跨站脚本漏洞存在于用户收到的HTML代码中,部分是由用户可控制的数据构成的;路径遍历漏洞存在于用户可控制的输入,未经确认就被传送到文件系统API执行。

(2)数据流建模。数据流建模也是一种基于白盒测试的方法,需要Web应用的开发人员对Web系统可能产生的数据流从起点到终点进行全面、不遗漏的列举。通过梳理Web系统数据的来源盒走向,从Web系统的内部寻找可能造成危害的来源,也包括应用程序的运行是否简洁高效,是否可能存在导致系统意外崩溃的弱点等。

(3)边界分析。边界分析是针对各个安全域的边界进行的分析。由于不同安全域的重要程度不同,其所运用的安全策略也应该有所差异,此时边界安全就显得尤为重要。如位于Web应用的用户是否可以通过某些不应存在的通路访问本地局域网的数据,又如位于互联网层面的用户是否有跳过必要的认证(如登录)而对Web应用进行访问的可能。边界分析就是通过对Web应用中是否存在不合理的越界访问来定位一些典型的安全漏洞。

(4)渗透测试。相对于上述3种白盒测试方法,渗透测试完全从网络攻击者的角度,思考并尝试各种入侵Web应用系统的通道。渗透测试可以避免测试者陷入系统开发者固有的逻辑习惯和操作假设,其测试结果往往更为直观,因此对于Web应用的安全测评是非常重要的环节。常见的渗透测试方法包括针对 Web 应用认证机制的口令字典攻击和暴力破解、针对Web应用访问权限的权限提升、针对Web应用与后台数据库交互的SQL注入、针对文件上传、下载的路径遍历型漏洞等。

4、安全评估

漏洞的危害程度主要受 2 个方面因素影响,即漏洞利用可能性与漏洞造成的损失。如某个溢出漏洞,在当前环境下其利用过程极其困难或者说基本无法利用,那么这个漏洞就是危害程度较低,因为被利用的可能性很小。又如某公司把共享资料的用户名密码直接以明文形式显示于内网某Web站点上,这个漏洞被利用的可能性是很高的,任何位于局域网内的用户都可以获取该信息,而共享的资料为非机密性的学习类资料,则造成的损失较小,通过综合分析判定该漏洞的危害程度在可接受范围内。在真实的测评工作中,在识别漏洞以及安全评估时,需要紧密结合Web应用系统自身的安全需求和测评人员以往工作的经验。

5、解决方案制定

Web安全测评的最终产物是安全解决方案。安全解决方案是根据资产划分、信息收集、漏洞识别及安全评估等阶段的结果生成的一套有针对性的解决办法。Web安全解决方案的制定有两点原则:简洁性与可用性。对于某些大型的Web应用,可能稍有改动都会付出巨大的人力物力,这时需要测试者给出的解决方案是简单有效的,能在解决安全问题的基础上最大程度地压缩成本。如对于某个可导致命令执行的框架漏洞,整体的代码升级固然是根本的解决方案,但是如果漏洞只针对个别页面,则直接将其删除无疑是一种更加简洁易操作的解决方法。

另外,随着Web应用的快速发展,不能因安全解决方案的实施而牺牲了Web应用本身的可用性或性能。如某电子商务网站,出于安全考虑,在用户每次交易时都必须经过各种冗余复杂的验证流程,那么这种解决方案就是失败的。最终解决方案应在Web应用的易用性与安全之间找到一个平衡点,统筹兼顾,从设计上遵循高聚合,低耦合,易于扩展的原则。



- The end -




HW:Web安全测评

原文始发于微信公众号(计算机与网络安全):HW:Web安全测评

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月28日17:05:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HW:Web安全测评http://cn-sec.com/archives/1206416.html

发表评论

匿名网友 填写信息