APP下载

Web站点渗透测试技术探究

2018-02-26闫雯罡吴中超张任川

网络安全技术与应用 2018年2期
关键词:安全漏洞攻击者漏洞

◆闫雯罡 吴中超 张任川

Web站点渗透测试技术探究

◆闫雯罡 吴中超 张任川

(信息工程大学 河南 450002)

渗透测试在web安全研究与实践中发挥着越来越重要的作用。本文概要介绍了web渗透测试的概念与标准流程,对渗透测试中常见的问题做了分析,并阐述了其成因、原理和危害等。

web安全;渗透测试;网络安全

0 前言

近年来,在web安全的研究与实践过程中,渗透测试正占据着越来越重要的地位。渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法,包括对系统的任何弱点、技术缺陷或漏洞的主动分析等。根据渗透测试人员对目标系统的信息了解程度,可将渗透测试大致分为黑盒测试、白盒测试、灰盒测试。

PTES(PTES: Penetration Testing Execution Standard)渗透测试执行标准是安全业界在渗透测试技术领域中正开发的一个新标准,目标是在对渗透测试进行重新定义,新标准的核心理念是通过建立起进行渗透测试所要求的基本准则基线,来定义一次真正的渗透测试过程,并得到安全业界的广泛认同。

1 标准渗透测试流程步骤

一次完整的渗透测试主要分为信息搜集、威胁建模、漏洞识别分析和渗透等阶段,各阶段主要任务如下:

1.1信息搜集

通过搜索引擎、公共网站、DNS系统和whois数据库等途径,对目标公司人员信息、网络拓扑、服务器信息、账号及代码泄露等进行公开资料收集和分类。对所收集的信息进行归纳总结,得出测试完整的信息蓝图,为后面的测试做准备。

1.2威胁建模

根据应用的特征和元素,识别威胁目标;根据应用的业务流程分解测试流程;评估网站应用危险级别、计划渗透测试方案。

1.3漏洞识别分析和渗透

根据威胁建模结果,对测试目标应用的服务进行测试以发现和定位可能存在的漏洞。同时根据漏洞利用技术的知识库、公共信息和一些未公开的漏洞研究结果,归纳总结所有可能的攻击途径。对前面发现的所有可疑漏洞进行手工检查和研究并进行利用,以尝试对目标系统进行未授权访问、修改,或者从目标系统中获取敏感信息,达到渗透测试的目的。

2 web站点渗透测试的典型漏洞

开放式Web应用程序安全项目(OWASP,Open Web Application Security Project)组织所归类的top10标准中,列举了web应用中最常见和危害最大的10类安全漏洞类型。该标准在2010、2013年先后发布了两个版本,最新版本为2017年版,其中列举的十大安全漏洞类型及与旧版对照如下图1。

图1 新、旧版十大安全漏洞类型

下面对近年危害较大的典型漏洞类型进行说明:

2.1 SQL注入漏洞

数据库查询一般使用SQL语言。SQL是Structured Query Language(结构化查询语言)的缩写。SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。它可以通过在Web表单中输入恶意SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。例如,某网站多处代码均存在sql不规范查询,可能导致注入攻击,如图2所示。

图2 SQL不规范查询导致的注入漏洞

对app中的SQL不规范查询点进行逐个注入尝试,可获取其中某应用的数据库内容,如图3所示。

图3 获取到的数据库内容

2.2目录遍历漏洞导致任意文件读写

目录遍历是Http所存在的一个安全漏洞,它使得攻击者能够访问受限制的目录,并在服务器的根目录以外执行命令。这个漏洞可能存在于服务器软件本身,也可能存在于应用程序的代码之中。

利用目录遍历漏洞,攻击者能够跳出服务器的预定目录,从而访问到文件系统的其他部分,譬如攻击者就能够看到一些受限制的文件,或者更危险的,攻击者能够执行一些造成整个系统崩溃的指令。如果目录遍历漏洞与文件下载相结合,可以导致任意文件下载漏洞,使得系统密码、关键配置等文件被盗取。如果目录遍历漏洞与文件上传相结合,可以导致任意文件上传漏洞,使得攻击者可上传任意脚本,可能导致任意代码执行等。

例如,某app服务器中直接将用户名称拼接进用户文件夹路径,且未对用户名称做合法性校验。我们可以发包手动构造一个名为../../../AAA的用户,则通过路径拼接与跳转可以访问本来无权限访问的文件。以下图4为手动ajax发包内容。

图4 手动ajax发包内容

执行完成后得到异常用户名;访问系统中规定的下载文件链Download.do?folderName=AAA&zipFileName=通过 zipFileName 进行目录跳转从而实现任意文件读。

zipFileName=../../../../../etc/passwd可以获得记录系统用户密码的关键文件/etc/passwd。

2.3 Cookie 管理不当导致的身份验证问题

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。使用HTTP协议的数据不经过任何加密就直接在网络上传播,有被截获的可能。使用HTTP协议传输机密内容是不合理的。如果不希望Cookie在HTTP等非安全协议中传输,可以设置Cookie的secure属性为true。浏览器只会在HTTPS和SSL等安全协议中传输此类Cookie。如果Cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到Cookie信息,这样能有效防止XSS攻击、窃取Cookie内容,这样就增加了Cookie的安全性。

例如,某APP与服务端通连过程中,Cookie未设置Httponly或secure选项,如下图5。

图5 Cookie未设置Httponly导致的XSS攻击

结合webview控件中对敏感字符过滤存在问题,导致XSS问题的出现。攻击者可以获取受害者cookie等敏感信息,达到仿冒登录等目的。

2.4 HTTPS部署中存在的问题

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。HTTPS在HTTP的基础上加入了SSL协议,依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。HTTPS可抵御重放攻击,并可提供安全的通信信道加密。只要HTTPS部署正确并采用高强度加密算法,其加密信道在目前计算机处理能力下就无法被破解。

在实际部署中,https可能出现的常见问题包括:

(1)证书过期、或证书作用域不匹配等;

(2)HTTPS支持加密算法过弱(如DES/可出口算法等);

(3)站点同时支持HTTPS和HTTP两个版本,导致HTTPS安全性形同虚设等;

(4)已公布的HTTPS算法实现问题的漏洞(如heartbleed等)。

例如,某APP应用服务器支持的HTTPS版本为SSLv3/TLSv1,其中SSLv3版本过低,可能存在POODLE等攻击,触发“心脏滴血“漏洞导致信息泄露,如下图6。

图6 “心脏滴血”漏洞

且支持RC4加密方式,算法过弱,易被穷尽或彩虹表破解。

3 总结

本文针对渗透测试中常见的安全问题,介绍了web站点可能面临的潜在安全威胁,对各类常见和敏感的安全漏洞进行了详细的分析和实际的证明,讲解了漏洞利用过程的原理和实例,并阐述了相关漏洞会造成的危害效果。

在未来的很长一段时间中,渗透测试都将是网站安全审计的主要形式之一。渗透测试执行标准将会日趋完善, Web安全相关的最新研究成果也均会反映到渗透测试技术中,Web站点渗透测试相关技术的研究仍然大有可为。

猜你喜欢

安全漏洞攻击者漏洞
漏洞
机动能力受限的目标-攻击-防御定性微分对策
基于模糊测试技术的软件安全漏洞挖掘方法研究
智能设备安全漏洞知多少
安全漏洞太大亚马逊、沃尔玛和Target紧急下架这种玩具
正面迎接批判
安全漏洞检测技术在计算机软件中的应用
三明:“两票制”堵住加价漏洞
漏洞在哪儿
高铁急救应补齐三漏洞