WEB应用安全领域的现状与应用研究

描述

研究背景

WEB应用安全现状

随着互联网的发展,金融网上交易、政府电子政务、企业门户网站、社区论坛、电子商务等各类基于HTML文件格式的信息共享平台(WEB应用系统)越发完善,深入到人们生活中的点点滴滴。然而WEB应用共享平台为我们的生活带来便利的同时,也面临着前所未有的挑战:WEB应用系统直接面向Internet,以WEB应用系统为跳板入侵服务器甚至控制整个内网系统的攻击行为已成为最普遍的攻击手段。

据中国互联网应急中心最新统计显示,2009年我国大陆地区政府网页遭篡改事件呈大幅增长趋势,被篡改网站的数量就达到52225个。2009年8月份,公安部对国内政府网站的进行安全大检查,发现40%存在严重安全漏洞,包括SQL注入、跨站脚本漏洞等。由此导致的网页篡改、网页挂马、机密数据外泄等安全事件频繁发生,不但严重影响对外形象,有时甚至会造成巨大的经济损失,或者严重的社会问题,严重危及国家安全和人民利益。

网页篡改:一些不法分子的重点攻击对象。组织门户网站一旦被篡改引发较大的影响,严重甚至造成政治事件。

网页挂马:网页挂马指的是把一个木马程序上传到一个网站里面然后用木马生成器生一个网马,再上到空间里面,再加代码使得木马在打开网页是运行。网页挂马未必会给网站带来直接损害,但却会给浏览网站的用户带来巨大损失。网站一旦被挂马,其权威性和公信力将会受到打击。

作为网页挂马的散布者,其目的是将木马下载到用户本地,并进一步执行,当木马获得执行之后,就意味着会有更多的木马被下载,进一步被执行,进入一个恶性的循环,从而使用户的电脑遭到攻击和控制。为达到目的首先要将木马下载到本地。机密数据外泄:在线业务系统中,总是需要保存一些企业、公众的相关资料,这些资料往往涉及到企业秘密和个人隐私,一旦泄露,会造成企业或个人的利益受损,可能会给单位带来严重的法律纠纷。

传统安全防护方法

企业 WEB 应用的各个层面,都已使用不同的技术来确保安全性。为了保护客户端机器的安全,用户会安装防病毒软件;为了保证用户数据传输到企业 WEB 服务器的传输安全,通信层通常会使用 SSL技术加密数据;防火墙和 IDS/IPS来保证仅允许特定的访问,不必要暴露的端口和非法的访问,在这里都会被阻止;同时企业采用一定的身份认证机制授权用户访问 WEB 应用。

SSL加密技术为了保护敏感数据在传送过程中的安全,全球许多知名企业采用SSL(Security Socket Layer)加密机制。 SSL是Netscape公司所提出的安全保密协议,在浏览器(如Internet Explorer、Netscape Navigator)和Web服务器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)之间构造安全通道来进行数据传输,SSL运行在TCP/IP层之上、应用层之下,为应用程序提供加密数据通道,它采用了RC4、MD5以及RSA等加密算法,使用40 位的密钥,适用于商业信息的加密。同时,Netscape公司相应开发了HTTPS协议并内置于其浏览器中,HTTPS实际上就是HTTP over SSL,它使用默认端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。HTTPS协议使用SSL在发送方把原始数据进行加密,然后在接受方进行解密,加密和解密需要发送方和接受方通过交换共知的密钥来实现,因此,所传送的数据不容易被网络黑客截获和解密。

但是,即便有防病毒保护、防火墙和 IDS/IPS,企业仍然不得不允许一部分的通讯经过防火墙,保护措施可以关闭不必要暴露的端口,但是 WEB 应用所必须的端口,必须开放。顺利通过的这部分通讯,可能是善意的,也可能是恶意的,很难辨别。同时,WEB 应用是由软件构成的,那么,它一定会包含漏洞,这些漏洞可能被恶意的用户利用,他们通过执行各种恶意的操作,或者偷窃、或者操控、或者破坏 WEB 应用中的重要信息。

本文研究观点

网站是否存在WEB 应用程序漏洞,往往是被入侵后才能察觉;如何在攻击发动之前主动发现WEB应用程序漏洞。答案就是:主动防御,即利用WEB应用弱点扫描技术,主动实现对WEB应用的安全防护。

本文主要针对B/S架构WEB应用系统中典型漏洞、流行的攻击技术、AJAX的隐藏资源获取、验证码图片识别等进行研究,提出了一种新的面向WEB的漏洞检测技术,能够较完整得提取出AJAX的资源,有效识别验证码。

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。相对于C/S结构属于“胖”客户端,需要在使用者电脑上安装相应的操作软件来说,B/S结构是属于一种“瘦”客户端,大多数或主要的业务逻辑都存在在服务器端,因此,B/S结构的系统不需要安装客户端软件,它运行在客户端的浏览器之上,系统升级或维护时只需更新服务器端软件即可,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。 B/S结构系统的产生为系统面对无限未知用户提供了可能。当然,与C/S结构相比,B/S结构也存在着系统运行速度较慢,访问系统的用户不可控的弱点。

WEB应用风险扫描架构

WEB应用风险扫描技术架构主要分为URL获取层、检测层、取证与深度评估层三个层次,其中:

URL获取层:主要通过网络爬虫方式获取需要检测的所有URL,并提交至检测层进行风险检测;

风险检测层:对URL获取层所提交的所有URL页面进行SQL注入、跨站脚本、文件上传等主流WEB应用安全漏洞进行检测,并将存在安全漏洞的页面和漏洞类型提交至取证与深度评估层;

取证与深度评估层:针对存在安全漏洞的页面,进行深度测试,获取所对应安全漏洞的显性表现,(如风险检测层检测出该网站存在SQL注入漏洞,则至少需可获取该网站的数据库类型);作为该漏洞存在的证据。

网络爬虫技术—URL获取

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫。它通过指定的域名,从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。

网络爬虫的工作流程较为复杂,首先根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,根据搜索策略从队列中选择下一步要抓取的网页URL,并重复,直到达到预设的停止条件。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询、检索和取证及报表生成时做为源数据。

为了更加高速、有效地获取网站中所有的URL链接,在本WEB应用风险扫描技术研究中,所采用的网络爬虫技术着重解决以下三个问题:

(1) 对抓取目标的描述或定义;

(2) 对网页和数据的分析与过滤;

(3) 对URL的搜索策略。

网页抓取目标

网页弱点爬虫对抓取目标的描述或定义基于目标网页特征抓取、存储并索引,对象是网站的网页;通过用户行为确定的抓取目标样例,其中,网页特征可以是网页的内容特征,也可以是网页的链接结构特征,以及网页代码的结构特征等。

网页分析算法

基于网页内容的分析算法指的是利用网页内容特征进行的网页评价。该算法从原来的较为单纯的文本检索方法,发展为涵盖网页数据抽取、机器学习、数据挖掘、语义理解等多种方法的综合应用。根据网页数据形式的不同,将基于网页内容的分析算法,归纳以下三类:第一种针对以文本和超链接为主的无结构或结构很简单的网页;第二种针对从结构化的数据源动态生成的页面,其数据不能直接批量访问;第三种针对的数据界于第一和第二类数据之间,具有较好的结构,显示遵循一定模式或风格,且可以直接访问。

网页抓取策略

网页抓取主要有三个方面:1、搜集新出现的网页:2搜集那些在上次搜集后有改变的网页:3发现自从上次搜集后已经不再存了的网页,并从库中删除。

爬虫的抓取策略目前普遍的采用的方法有:深度优先、广度优先、最佳优先三种。由于深度优先在很多情况下会导致爬虫的陷入(trapped)问题,网页弱点爬虫目前采用的是深度优先和最佳优先方法组合方法。

深度优先搜索策略:指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。网页弱点爬虫采用深度优先搜索方法为覆盖指定网站存在弱点的网页。其基本思想是认为与初始URL在一定链接距离内的网页具有弱点相关性的概率很大;并采用将深度优先搜索与网页过滤技术结合使用,先用深度优先策略抓取网页,再将其中无关的网页过滤掉。这些方法的缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。

最佳优先搜索策略:最佳优先搜索策略采用基于网页内容的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。

漏洞检测技术—风险检测

主要WEB应用漏洞

OWASP十大安全威胁

开放式WEB应用程序安全项目是一个组织,它提供有关计算机和互联网应用程序的公正、实际、有成本效益的信息。其目的是协助个人、企业和机构来发现和使用可信赖软件。美国联邦贸易委员会(FTC)强烈建议所有企业需遵循OWASP所发布的十大Web弱点防护守则、美国国防部亦列为最佳实务,国际信用卡资料安全技术PCI标准更将其列为必须采用有效措施进行针对性防范。

HTML

图1  2010年OWASP十大安全威胁

HTML

CWE/SANS 25大危险编程错误

一般弱点列举(Common Weakness Enumeration CWE)是由美国国家安全局首先倡议的战略行动,该行动的组织最近发布了《2010年CWE/SANS最危险的程序设计错误(PDF)》一文,其中列举了作者认为最严重的25种代码错误,同时也是软件最容易受到攻击的点。OWASP Top 10,所关注的是WEB应用程序的安全风险,而CWE的Top 25的覆盖范围更广,包括着名的缓冲区溢出缺陷。

WEB应用漏洞规则库

我们经过多年WEB应用安全领域的研究,结合国内外优秀组织的经典总结、描述以及验证,建立起一套几乎涵盖所有可能带来安全威胁的WEB应用安全漏洞的丰富的WEB应用漏洞规则库,包括各个安全漏洞的产生原理、检测规则、可能危害、漏洞验证等等,通过自动化手段,对网络爬虫所获取到的网站页面进行逐一检测。随着安全漏洞的不断产生、攻击手段的不断演变,WEB应用漏洞规则库也不断获得充实和改进。

模拟渗透测试—取证与深度评估

模拟渗透测试

通常我们所理解的渗透测试,是指具有丰富安全经验的安全专家,在对目标系统一无所知的情况下,通过收集系统信息,进行具有针对性的安全攻击和入侵,获取系统管理权限、敏感信息的一个过程。这包括三个要素:丰富安全经验的安全专家(人)、系统漏洞(漏洞检测)、权限获取或信息获取(取证)。由于组织内部一般并不具备具有专业渗透技术的安全专家,所以通常依靠于第三方安全公司。

结合大量优秀安全专家的渗透测试经验,以及对各类WEB应用安全漏洞的显性分析(即如果存在该漏洞,其具体表现是什么),在完成网站中各个页面的漏洞检测后,对所存在的安全漏洞进行验证,即获取相应的权限或信息,达到模拟渗透测试的效果,不仅可以大大降低漏洞检测的误报率,准确呈现该漏洞的存在和取证;而且可以在一定程度上替代第三方的渗透测试人员,自主进行安全扫描,降低信息泄露的风险。

安全漏洞取证分析

对安全漏洞的取证分析,在此以SQL注入漏洞为例进行简要描述。

SQL注入类型根据原理可以分为以下几类:数值型、字符型、搜索型、错误型、杂项型。在检测出相关注入漏洞后, 根据不同后台数据库, 采用不同的数据库注入策略包来进行进一步的取证和渗透。图2讲述了SQL注入检测的流程:通过网络爬虫获取的URL,成为SQL注入检测的输入,通过图2流程完成SQL注入、渗透和审计。

SQL是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的。它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分