WEB安全评估与防护
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随着用户对客户端便利性的要求,加上服务提供方对减少客户端开发成本和维护成本的期望,越来越多的应用已经转为B/S(浏览器/ 服务器)结构。由于用户对页面展现效果和易用性的要求越来越高,Web2 .0 技术的应用越来越广泛,这样不但促进了Web应用的快速发展,同时也使Web应用中所存在的安全问题越来越明显的暴露出来。
根据X-Force 的2008 年年度报告,Web安全事件数量增长迅猛:
2008 年Web安全事件增长
在这种背景条件下,除了越来越多的站点因安全问题而被攻击者攻陷,导致重要信息泄漏,甚至成为傀儡主机,大量傀儡主机被攻击者利用发动DDO(S分布式拒绝服务攻击)客户端也面临着很多安全问题,恶意页面的垃圾信息传播、网页挂马导致的恶意程序的传播
. 概述
1.1 什么是Web安全评估
Web安全评估主要在客户的Web平台上,针对目前流行的Web安全问题分别从外部和内部进行黑盒和白盒安全评估。
根据Web多层面组成的特性,通过对Web的每一个层面进行评估和综合的关联分析,从而查找Web站点中可能存在的安全问题和安全隐患。
1.2 Web 安全评估与传统评估服务的区别
与传统的系统层面的评估不同,Web站点的安全评估更加注重“关联性”。
在传统的系统层评估中,评估方向以系统自身安全性和策略的完善程度作为主要的评估方向,目标仅在于揭露系统配置上的缺陷。
而在Web站点评估中,除了需要关注系统层面的安全问题外,还需要关注系统组件及第三方应用程序设计的安全性。而在Web站点中,安全问题也不再像系统安全问题那样只具备单一的层面,而是多个层面叠加产生,因此Web安全评估还需要更加注重各个层面安全问题的关联性,将这些问题进行必要的关联分析后来确认Web站点整体的风险。
从这方面来说,Web安全评估从人力到技术等各个方面的投入都要大于传统的系统安全评估,而其所能发掘的问题也是多层面的。
1.3 评估流程
二.面临的威胁
2.1 跨站脚本
跨站脚本攻击全称为Cross Site Script ,一般缩写为XSS。此漏洞是由于应用程序在服务器端获取用户提交的数据时,没有对内容进行验证。使得攻击者精心构造的恶意脚本在普通用户的浏览器中得到执行,除了可以窃取其他用户、管理员的Cookie 外,还可以进行挂马,使得更多的访问者感染恶意代码。在Web2 .0 技术流行的今天,跨站脚本漏洞还有可
能被蠕虫利用,进行大规模的攻击,危害很大。
此类漏洞的根本原因是,开发人员在编写应用程序时,对用户提交的数据过滤的不够
严格,或者未过滤。由于考虑在实际开发中需要过滤的内容比较多,可能会有遗漏,因此我们建议开发人员在对用户输入的变量进行检查时,使用白名单方式,即,检查用户传入的变量是否是系统允许的类型,如果不是,就提示错误,直到用户传入合法的数据。
2.2 注入攻击
注入攻击中最常见的是SQL注入,此攻击类型是由于应用程序在服务器端获取用户提交的数据时,没有对内容进行严格验证,就拼接到SQL语句中执行。攻击者可以精心构造特定的SQL 语句使服务器执行,从而进行未授权的数据修改,甚至在数据库服务器上执行系统命令,对Web 站点的安全造成严重威胁。
此类漏洞的根本原因是,开发人员在编写应用程序时,未使用安全的方式执行SQL查询,而使用了拼接的方式将变量输入到SQL语句中。防范SQL注入的最好方法是,修改应用程序代码,使用安全的方式执行SQL查询,例如:使用PreparedStatement 方式。
2.3 越权操作
越权操作通常是由于应用程序在编写时,对身份验证部分考虑的不全面。越权操作可以分为水平和垂直两个方面:
水平越权是指:部分页面未对访问者的角色进行严格检查, A 用户可能利用应用程序的漏洞,可以访问到 B 用户的数据,进行越权查看,修改,甚至删除。此类越权操作可能导致用户信息泄漏,或者被恶意篡改,严重影响网站的形象。如果发生在存放有重要数据的系统中,可能会导致直接或间接经济损失,甚至引发法律纠纷。
垂直越权是指:部分页面未对访问者的角色进行严格区分,普通用户可能利用应用程序的漏洞,将自己提升到高一级用户的权限,例如管理员权限。此类越权操作可能导致管理员权限泄漏,攻击者用管理员权限进行一些非法操作,严重影响数据的安全性。如果管理员后台合并有其他漏洞,例如:图片上传漏洞,攻击者可以向系统中上传webshell ,进一步提升权限,最终获得网站服务器的管理员权限,危害很大。
2.4 文件上传
文件上传漏洞指:开发人员编写应用程序时,未对用户上传的文件的扩展名进行严格的检查,从而导致攻击者上传webshell ,获取到网站的权限。文件上传大多数是由于开发人员的疏忽或者对安全的理解不深引发的。例如:开发人员只过滤了asp 扩展名的文件,而未过滤asa、cer 扩展名的文件,而asa 、cer 扩展名的文件也会被asp.dll 解析,从而导致webshell 被上传。
建议开发人员在对用户上传的文件进行操作时,严格检查扩展名,与防范XSS的方法
类似,也使用白名单方式,例如:只允许用户上传jpg 、gif 、bmp、zip 、rar 扩展名的文件,其余扩展名的文件禁止上传。
2.5 信息泄露
信息泄漏大致分为两类:一类是由于应用程序编写时对错误处理方便考虑不全面,使得用户提交非法数据时应用程序报错,在错误信息中可能包含大量操作系统版本、Web服务器版本、网站在服务器上的绝对路径等敏感信息。此类型漏洞攻击者可能无法直接利用,但和其他漏洞结合起来,就会对成功入侵起到很大的帮助。
还有一类是由于网站维护人员的疏忽,或者管理不规范,使得一些测试页面或者备份页面未及时删除,或者网页源代码中的注释过于详细,都可以不同程度的泄漏网站的信息。为攻击者获取网站权限创造便利条件。
2.6 第三方应用程序安全性
由于互联网已经发展的很成熟,很多开发人员在开发某些模块时可能会上网搜索一些现成的代码,将其加入到自己的程序中,但由于网络上开发人员的水平层次不齐,很多代码的安全性很差,而开发人员将这些程序嵌入到自己的程序中,会导致安全问题产生,如fckeditor 、ewebeditor 等应用程序在历史上就发现过很多漏洞,成为很多攻击者的突破口。
建议在系统上线前,要严格检测每一个模块的安全性,开发人员尽量不随便使用网络上的不成熟的代码,如果使用,使用前需要进行严格的安全检查。
类似的需要引起注意的是,很多网站的首页都嵌入了一些应用,而这些应用由第三方厂商提供,例如:XXX客服系统,我们的网站在引用这些应用时,需要在我们的首页中嵌入一些代码,如果第三方厂商的网站出现了安全问题,那么就会直接影响到我们的网站的安全性。
建议在使用此类第三方应用程序时,一定要确认厂商的规模及资质,尽量少嵌入第三方厂商的程序,以降低风险。
三.评估方式
3.1 外部评估
外部评估是指测试人员由外部发起的、针对服务器和应用服务的远程评估工作,主要模拟来自外部的恶意扫描等行为,以此发现暴露于网络上的安全问题。
3.1.1 操作系统及应用服务安全性
操作系统及应用服务器的安全性主要通过使用远程安全评估系统对操作系统和应用服务层面进行远程的安全测试,例如:极光远程安全评估系统等商业产品,测试中包含了常见的安全问题:
远程缓冲区溢出漏洞
远程拒绝服务漏洞
远程信息泄漏漏洞
远程身份验证漏洞
3.1.2 Web 服务安全性