WEB安全评估与防护Word文档格式.docx
《WEB安全评估与防护Word文档格式.docx》由会员分享,可在线阅读,更多相关《WEB安全评估与防护Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
而在Web站点评估中,除了需要关注系统层面的安全问题外,还需要关注系统组件及第三方应用程序设计的安全性。
而在Web站点中,安全问题也不再像系统安全问题那样只具备单一的层面,而是多个层面叠加产生,因此Web安全评估还需要更加注重各个层面安全问题的关联性,将这些问题进行必要的关联分析后来确认Web站点整体的风险。
从这方面来说,Web安全评估从人力到技术等各个方面的投入都要大于传统的系统安全评估,而其所能发掘的问题也是多层面的。
1.3评估流程
二.面临的威胁
2.1跨站脚本
跨站脚本攻击全称为CrossSiteScript,一般缩写为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.2Web服务安全性
Web服务的外部安全性主要通过使用远程Web评估系统对站点进行远程的安全测试,测试中包含了常见的Web安全问题:
跨站脚本漏洞
文件包含漏洞
命令执行漏洞
目录遍历漏洞
信息泄漏漏洞
暴力破解漏洞
…………
此部分工作也主要使用Web安全评估系统进行,由于网站上页面数量和连接数量较多,使用自动化工具可以明显提高工作效率,防止遗漏。
而且Web安全评估系统都内置了大量的插件,对已知的Web安全漏洞可以快速发现。
除了使用Web安全评估系统外,还需要人工进行辅助分析,一方面需要确认自动化工具扫描结果的准确性,是否误报;
另一方面需要对一些工具无法检查的地方进行补充,最大化的发现网站存在的问题。
3.2内部评估
内部评估是指从内部发起针对服务器配置、策略及代码本身的安全检查。
相对外部安全的黑盒测试方式来讲,内部评估更近似于白盒测试,注重功能性及安全性的检查,从根源上发现安全隐患。
3.2.1系统安全策略检查
针对操作系统层面,使用安全策略检查工具进行检查,需要检查的内容如下:
用户管理:
是否有多余用户,例如:
开发用户,测试用户
口令策略:
是否设置口令策略,强制用户使用强壮的密码
不必要服务:
是否存在不需要的网络服务,例如:
DHCP、DNS、FrontPage扩展
共享连接:
是否存在不需要的共享连接:
windows默认共享,unix的NFS共享
文件系统:
是否使用可靠的文件系统,例如:
NTFS文件系统
权限设置:
是否对网络服务的配置文件进行了正确的设置,防止非法用户篡改,提权
访问控制:
是否对访问者的IP地址进行了限制
审计设置:
是否对网络服务启用了审计,审计日志的权限是否进行了正确的设置
3.2.2Web服务配置检查
除了操作系统外,还需要对Web服务的配置进行检测,需要检查的内容如下:
Web服务是否安装了不必要的组件
Web服务的运行身份是否正确设置
Web服务的版本信息是否隐藏
Web服务的目录遍历功能是否启用
Web服务是否设置了必要的ACL
Web服务是否对隐秘页面使用SSL传输加密
Web服务是否加强了日志记录内容
Web服务是否进行了严格的权限设置
3.2.3数据库安全检查
网站评估中对数据库权限进行检测,是为了查看数据库中权限是否得到了正确的设置,一方面保护数据库中数据的安全,防止未授权用户访问;
另一方面防止数据库出现安全问题后,进一步影响数据库服务器操作系统的安全,需要检查的内容如下:
数据库是否为应用程序建立了单独的帐号,避免应用程序使用数据库管理员等高权限的用户访问数据库
数据库是否为各个用户划分了角色,使不同的用户访问数据库对象时权限有所区分
对不用的用户和角色赋予权限时,是否只赋予了最低的权限
是否启用了访问控制列表ACL,防止无关用户连接数据库端口
3.2.4代码安全性检查
3.2.4.1挂马检测
攻击者在发现网站存在漏洞,进行利用,获得一定权限后,向动态网页文件或数据库中添加特定的字符串,正常用户在访问该网页后,执行恶意代码,可能导致感染病毒。
在网站评估中需要网站的所有页面进行检测,确认是否有特定的恶意字符串被插入。
此类检查可以使用一些网络安全产品完成,如:
绿盟科技Web应用防火墙,或者绿盟科技极光远程安全评估系统的Web扫描。
3.2.4.2WebShell检测
WebShell是站长用于管理服务器的一种asp/aspx/php/jsp等应用程序,可以进行在线编辑文件、上传下载文件、查看数据库、执行任意程序命令等操作。
如果被攻击者利用,可以控制服务器。
通常攻击者在发现应用程序有漏洞时,会尝试上传WebShell,因此在网站安全评估中需要对网站所在目录中可能存在的WebShell进行检测。
3.2.4.3代码审计
代码审计在安全开发中是很重要的一个环节,远程漏洞扫描和渗透测试只是黑盒测试,对很多漏洞可能无法检测。
目前国内大多数企业的测试部门由于对安全的理解不深,在传统软件质量测试中无法发现代码中存在的安全问题。
进行一次成功的代码审计不仅可以发现应用程序编写时产生的安全漏洞及不规范的代码,督促开发人员