APP下载

Web应用程序渗透测试浅析

2021-03-06李维峰

网络安全技术与应用 2021年3期
关键词:测试人员漏洞应用程序

◆李维峰

Web应用程序渗透测试浅析

◆李维峰

(中国飞行试验研究院 陕西 710089)

渗透测试是在Web应用程序中查找漏洞的最佳方法,这也是大多数Web应用程序使用最广泛的安全测试策略。所谓Web应用程序渗透测试就是通过模拟从内部或外部发起的攻击,尝试访问系统中的敏感数据。渗透测试使用户可以确定整个Web应用程序及其各个组件(包括源代码,数据库和后端网络)的任何安全漏洞,这可以帮助开发人员确定已确定的漏洞和威胁的优先级,并提出缓解策略。

渗透测试;Web应用程序;漏洞

1 渗透测试的重要性

时至今日我们所做的几乎所有事情都可以通过互联网完成。从购物到银行业务再到日常交易,大多数都可以数字方式完成。并且我们只通过几个Web应用程序就可以完成所有这些在线活动。Web应用程序的普及引入了另一种攻击媒介,恶意第三方可以利用这些攻击手段来谋取个人利益。由于Web应用程序通常会存储或发送敏感数据,因此始终确保这些应用程序(尤其是那些公开暴露于万维网的应用程序)的安全至关重要。简而言之,渗透测试是一种预防性控制措施,可让您分析系统现有安全层的整体状态。

以下是对Web应用程序进行的渗透测试的共同目标:

(1)识别未知漏洞;

(2)检查现有安全策略的有效性;

(3)测试公开的组件,包括防火墙,路由器和DNS;

(4)确定最容易受到攻击的路线;

(5)寻找可能导致数据泄露的漏洞。

如果考虑到当前的互联网使用情况,您会发现移动互联网的使用量急剧增加,这意味着移动攻击的可能性直接增加。当用户使用移动设备访问网站或应用程序时,他们更容易受到攻击。因此,渗透测试在软件开发生命周期中起着至关重要的作用,有助于构建用户可以使用的安全系统,避免黑客攻击或数据泄露。

2 Web应用程序渗透测试的类型

一般可以通过两种方式对Web应用程序进行渗透测试:内部渗透测试和外部渗透测试[1]。让我们来看看如何设计和实施这两种攻击:

2.1 内部渗透测试

顾名思义,内部渗透测试是通过局域网在组织内部实施的渗透测试,针对在内部网络上托管的Web应用程序。这可以帮助组织识别防火墙以内可能存在的问题。因为,常常会出现一种最严重的误解,认为攻击只会发生在外部,所以开发人员经常忽略或不重视内部的渗透测试。下面列举了一些可能发生内部攻击的情况:

(1)对组织心怀不满的员工,已辞职但仍可以访问内部安全策略和密码的员工,合同乙方或其他的恶意员工攻击;

(2)社会工程学攻击;

(3)网络钓鱼攻击;

(4)使用用户权限的攻击。

渗透测试就是为了尝试在没有有效凭据的情况下访问环境并确定可能的攻击途径。

2.2 外部渗透测试

与内部渗透测试不同,外部渗透测试着重于从组织外部发起攻击,以测试Internet上托管的Web应用程序。渗透测试人员没有关于组织所实现的内部系统安全的信息。只需为他们提供目标系统的IP地址即可模拟外部攻击。由于没有提供其他信息,测试人员需要搜索公共网页以获取有关目标主机的更多信息,对其进行渗透和破坏。外部渗透测试包括测试组织的防火墙,服务器和IDS。

3 Web应用程序渗透测试的步骤

Web应用程序渗透测试着重于环境和攻击过程,而不是应用程序本身。这涉及收集有关目标Web应用程序的信息,弄清楚它所在网络的情况,并猜测可能的注入点。以下是渗透测试所涉及的步骤:

3.1 主动和被动侦查

渗透测试的第一步是侦察或信息收集阶段。此步骤为测试人员提供了可用于识别和利用Web应用程序中的漏洞的信息。被动侦察意味着收集可在Internet上轻松获得的信息,而无须直接与目标系统联系。这主要是使用Google完成的,从子域,链接,以前的版本等开始。而主动侦察意味着直接探测目标系统以获得输出。以下是用于主动侦察的方法的一些示例:

(1)Nmap指纹:您可以使用Nmap网络扫描仪来获取有关Web应用程序的脚本语言,服务器操作系统,服务器软件和版本,打开的端口以及当前正在运行的服务的信息。

(2)Shodan网络扫描仪:该工具可以帮助您获取有关Web应用的公共可用其他信息,包括地理位置,使用的服务器软件,打开的端口号等。

(3)DNS正反向查询:此方法使您可以将最近发现的子域与其各自的IP地址相关联。您也可以使用Burp Suite自动执行此过程。

(4)DNS区域转移:您可以使用nslookup命令来查找正在使用的DNS服务器。另一种选择是使用DNS服务器标识网站,然后使用dig命令尝试进行DNS区域传输。

(5)识别相关的外部站点:信息收集阶段的这一部分非常重要,因为外部网站和目标网站之间会产生流量。使用Burp Suite可以轻松地完成此步骤。

(6)分析HEAD和OPTION请求:从HEAD和OPTIONS HTTP请求生成的响应显示了Web服务器软件及其版本,以及其他更有价值的数据。您可以在访问目标网站时使用Burp Suite的拦截功能来获取此信息。

(7)错误页面中的数据:错误页面提供了比您预期更多的信息。通过修改目标网站的URL并强制执行404 Not Found错误,您将能够知道服务器和网站运行所在的版本。

(8)检查源代码:检查源代码可以帮助您找到有用的信息,您可以使用这些信息来查明某些漏洞。它可以帮助您确定应用运行的环境以及其他相关信息。

(9)记录所有数据:在获得所有这些信息之后,组织和记录您的发现很重要,您以后可以将其用作进一步研究或发现要利用的漏洞的基准。

3.2 攻击或执行阶段

这一步是实施真正的攻击。在此阶段,您将根据侦察阶段收集的信息实施攻击。您可以使用多种工具来进行攻击,而这正是数据收集起着重要作用的地方。您收集的信息将帮助您根据之前进行的研究来缩小所需工具的范围。

让我们看一下当今业界用于Web应用程序的顶级渗透工具:

(1)Nmap

Nmap或Network Mapper不仅仅是一种扫描和侦察工具。它用于网络发现和安全审核。除了在目标网站上提供基本信息外,它还包括脚本模块,该模块可用于发现漏洞和后门检测以及利用的执行。

(2)Wireshark

Wireshark是目前最流行的网络协议分析器之一,它可以促进对协议的深入检查,以及实时业务捕获和捕获文件的脱机分析。可以使用XML,PostScript,CSV或纯文本格式导出数据,以进行文档编辑和进一步分析。

(3)Metasploit

该渗透测试工具实际上是一个框架,而不是特定的应用程序。您可以使用它来创建用于特定任务的自定义工具。您可以使用Metasploit进行以下操作:选择并配置目标攻击、选择并配置要使用的有效负载、选择并配置编码架构、执行漏洞利用代码。

(4)Nessus

此漏洞扫描程序可帮助测试人员识别漏洞,配置问题,甚至可以发现Web应用程序中是否存在恶意软件。但是,该工具并非设计用于执行漏洞利用,而是在进行侦察时提供了很大的帮助。

(5)Burp Suite

我们之前提到过Burp Suite两次,这是因为该工具是用于测试Web应用程序安全性的多平台平台。它具有可用于测试过程的每个阶段的几种工具,包括侦听代理,可感知应用程序的蜘蛛,高级Web应用程序扫描器,入侵者工具,中继器工具和音序器工具。

3.3 报告和建议

在数据收集和执行攻击之后,下一步是编写Web应用程序渗透测试报告。为您的报告创建简洁的结构,并确保所有结果都得到数据的支持。坚持使用哪种方法,并详细描述该过程。除了写下成功的漏洞利用程序之外,您还需要根据它们的关键程度对其进行分类,以帮助开发人员优先专注于处理更严重的漏洞利用程序。

4 总结

Web应用程序为终端用户提供了很多便利和价值,但这些便利是要付出一定代价的。大多数系统都公开暴露在互联网上,那些愿意进行一些研究的人可以随时使用这些数据。由于使用率的增长和技术的发展,Web应用程序更容易受到黑客攻击。因此,对于处理敏感信息的Web应用程序,应该进行渗透测试。

[1]Ihor Feoktistov.guide to web application penetration testing[EB/OL].https://relevant.software/blog/penetration-testing-for-web-applications/,2018-12-7.

猜你喜欢

测试人员漏洞应用程序
移动应用众包测试人员信誉度复合计算模型研究
漏洞
删除Win10中自带的应用程序
高校分析测试中心测试队伍建设方案初探
浅析软件测试中的心理学应用
三明:“两票制”堵住加价漏洞
漏洞在哪儿
高铁急救应补齐三漏洞
犯罪心理测试人员素质要求分析
关闭应用程序更新提醒