Web应用程序渗透测试:步骤、方法和工具

admin 2024年3月12日12:21:31评论16 views字数 6679阅读22分15秒阅读模式

有许多不同的方法可以执行 渗透测试来评估公司的安全状况,但在本文中,我们将重点关注 Web 应用程序。

Web 应用程序渗透测试由四个主要步骤组成,包括信息收集、研究和利用、报告和建议以及持续支持的修复。执行这些测试主要是为了在整个生命周期中维护软件代码开发的安全。编码错误、特定要求或缺乏网络攻击向量知识是执行此类渗透测试的主要目的。

在本文中,将通过真实示例了解如何对 Web 应用程序执行安全测试的步骤以及 Web 应用程序渗透测试期间使用的流行工具。

什么是 Web 应用程序渗透测试?

Web 应用程序渗透测试涉及一系列方法步骤,旨在收集有关目标系统的信息、查找其中的漏洞或故障、研究能够成功克服这些故障或漏洞并危害 Web 应用程序的漏洞利用方法。 

开放Web 应用程序安全项目(OWASP) 是一个专注于发现和报告 Web 应用程序安全漏洞的社区。 

他们享有盛誉的十大安全缺陷列表每年都会更新,以反映 Web 应用程序安全性的全球趋势。OWASP 还发布了最常用的文章和安全工具。

为什么要执行 Web 应用程序渗透测试

由于 Web 应用程序的巨大扩展,越来越多的互联网资源被用于开发软件以及配置应用程序以在这种新环境下正常工作。

然而,这一新发现的前沿开辟了另一个攻击媒介,恶意黑客可以利用它来谋取个人利益。

考虑到某些 Web 应用程序保存敏感数据,因此始终确保它们的安全非常重要,特别是因为其中许多应用程序公开暴露在互联网上。

将 Web 应用程序渗透测试作为软件开发生命周期或 SDLC 流程的一部分进行,将是抵御 Web 应用程序漏洞的最佳且最具成本效益的策略。

Web应用程序渗透测试:步骤、方法和工具

软件开发生命周期 (SDLC)

软件开发生命周期 (SDLC)是一套通用指南,旨在提高正在开发的软件的成功率以供将来使用。

SDLC 定义了一系列要采取的步骤,以便提供对最终用户来说更方便的更好产品,并且还考虑了最具成本效益的方法。

软件测试是 SDLC 过程的重要组成部分,涉及几个关键参数或事件。

通过开发过程的各个阶段,从集思广益到编码,工程师和项目经理都有机会通过生成错误最少的最佳应用程序来提出满足客户需求的最有效方法。

编程错误

缺陷是程序员通常会犯的错误。故障与缺陷的不同之处在于,故障的存在可能允许恶意攻击者利用应用程序并造成危险的情况或场景,从而导致个人信息受到损害或允许未经授权的用户访问系统。

要求

技术债务,即开发人员花在开发代码来修复错误或实施更新上的时间,可能会增加,尤其是当安全性被忽视时。当代码在经过彻底测试并投入生产之前就被加速时,就会发生这种情况。

因此,与 SDLC 过程后期的缺陷测试相比,SDLC 过程早期阶段的缺陷测试通常成本较低。

如果发现 Web 应用程序配置中存在故障或漏洞,将在 SDLC 过程中对软件进行修补。

使用哪些步骤和方法来执行 Web 应用程序笔测试?

为了强调应用程序和Web应用程序之间的区别,Web应用程序的渗透测试主要关注Web应用程序的环境和设置。

换句话说,测试 Web 应用程序的重点是收集有关 Web 应用程序的公共信息,然后继续绘制托管 Web 应用程序所涉及的网络。调查可能的注入篡改攻击以及应用程序的实际学习和处理将在稍后进行。

第 1 步:信息收集

信息收集或侦察阶段是任何渗透测试过程中最重要的步骤,因为它为您提供了大量信息,以便您轻松识别漏洞并在以后利用它们。

将此阶段视为您试图建造的金字塔的基础。

根据您想要与目标系统实现的交互类型,侦察有两种类型:

  1. 主动侦察

  2. 被动侦察

被动侦察

收集互联网上已有的信息并且不直接与目标系统交互的方式称为被动侦察

此阶段的大多数研究都是通过各种网站在线完成的,从 Google 开始。第一步通常涉及使用 Google 语法、枚举网站子域、链接等等。

例如,如果您对某个网站的子域感兴趣,您可以使用以下语法来缩小 Google 搜索结果的范围:“site:*.domain.com”

Web应用程序渗透测试:步骤、方法和工具

您可以使用Wayback Machine查看某个网站不久前的样子,该网站可以帮助您与 Web 应用程序的目标进行交互,而无需直接接触它。

Web应用程序渗透测试:步骤、方法和工具

您可以探索网站的旧版本,并记下可能对您以后的研究和开发阶段有帮助的任何特征。

主动侦察

与被动侦察相反,主动侦察直接探测目标系统并检索输出。

主动侦察的示例包括对 Web 应用程序进行指纹识别、使用 Shodan 网络扫描仪、执行 DNS 正向和反向查找、DNZ 区域传输等。

使用 Nmap 对 Web 应用程序进行指纹识别

对 Web 应用程序进行指纹识别涉及收集有关 Web 应用程序的信息,例如使用的脚本语言、服务器软件和版本以及服务器的操作系统。其中大部分工作可以使用Nmap网络扫描仪来完成。

针对目标 IP 或目标 IP 范围运行 Nmap,并记下所有开放端口和正在运行的服务,以及上述有关操作系统版本的信息。

Shodan 网络扫描仪

使用 Shodan 网络扫描仪,您可以识别有关托管 Web 应用程序的其他信息(如果在互联网上公开可用)。

Web应用程序渗透测试:步骤、方法和工具

Shodan 提供有关其扫描的任何公开 IP 的大量信息。信息范围包括地理位置、打开的端口号、使用的服务器软件以及其他一些有用的详细信息。

DNS 正向和反向查找

为了将新发现的子域与其各自的 IP 地址关联起来,您可以使用正向 dns 查找、ping,甚至使用更高级的工具,例如 Burp Suite。

DNS 区域传输

要执行 DNS 区域传输,请使用“nslookup”命令来识别 DNS 服务器。其他选项是专门用于 DNS 服务器识别的网站。识别所有 DNS 服务器后,使用“dig”命令并尝试 DNS 区域传输。

识别相关外部站点

这是信息收集阶段的重要步骤,因为外部站点和目标站点之间通常存在流量。使用 Burp Suite 可以最轻松地完成此操作,稍后我们将更详细地介绍它。

检查 HEAD 和 OPTIONS HTTP 请求

来自 HEAD 和 OPTION 请求的响应肯定会揭示 Web 服务器软件和版本。有时,响应包含更有价值的数据。

在打开 Burp Suite 的“拦截”功能的情况下,您可以通过访问目标网站轻松拦截此信息。

通过错误页面收集有关 Web 应用程序的信息

错误页面可以提供许多有关网站运行的服务器版本和类型的有用反馈。根据此信息,您可以开始可视化 Web 应用程序的环境。

只需修改所需网站的 URL 并尝试导致404 未找到错误。在下面的例子中,网站论坛未找到页面显示了服务器及其版本(ngnix/1.12.2)。

Web应用程序渗透测试:步骤、方法和工具

检查源代码

源代码还可以提供许多有用的信息,您可以稍后使用这些信息来查找漏洞。

通过仔细检查网页代码,您将能够确定应用程序的环境和应用程序的整体工作原理。

在下面的屏幕截图中,我们可以看到该网站正在 Apache 服务器上运行,版本为 2.2.14。

Web应用程序渗透测试:步骤、方法和工具

侦察阶段的记录

在调查收集阶段以有组织的方式记录一切至关重要。

这将为您提供一个基线,您将在此基础上继续进一步研究目标,并希望找到系统中的漏洞以供以后利用。

接下来,我们将介绍一些最流行的应用程序渗透测试工具,并演示一些有关安全扫描、sql注入、密码暴力破解和其他可以使用的重要渗透测试技术。

第二步:研究与开发

在执行 Web 应用程序渗透测试时,您可以使用大量的安全工具,其中大多数都是开源的。

然而,要将您的选择范围缩小到仅几种工具可能具有挑战性。这就是侦察阶段如此重要的原因。

您不仅可以找到稍后查找漏洞和漏洞利用所需的所有必要信息,还可以缩小攻击向量的范围,从而缩小可用于实现目标的工具的范围。

Web应用程序渗透测试使用哪些工具?

整个渗透测试过程很大程度上取决于侦察阶段和发现的漏洞。通过彻底的调查,找到正确的漏洞并访问系统要容易得多。

在线扫描仪和搜索引擎等工具可以帮助您被动收集有关目标的信息。使用 Nmap 枚举目标系统并发现实时端口。

网站渗透测试中常用的流行工具包括:

  • W3af

  • 打嗝套件

  • SQLMap

  • 元分析软件

  • 九头蛇

  • 约翰·里珀

  • 跳鱼

  • 拉特代理

  • 模糊模糊

  • 守望者

对于自动化Web 应用程序漏洞扫描、嗅探和利用阶段,您可以使用 W3af 扫描仪、Burp Suite Toolkit、SQLMap 等工具以及 Hydra 或 John Ripper 等各种密码破解工具。

Metasploit项目中还提供了大量其他工具,但遗憾的是它们超出了本文的范围。

Kali Linux 中的 Metasploit 框架肯定是首选,但您也可以使用一些专门设计用于帮助 Web 应用程序渗透测试过程的业界最佳工具来补充它。

下面列出的工具及其功能将向您介绍对易受攻击的 Web 应用程序进行一点点篡改可能会发生什么。

Web 应用程序框架 (W3af) 300

Web应用程序渗透测试:步骤、方法和工具W3af或Web应用程序框架是一个安全扫描器,主要用于发现漏洞。您可以在几乎 Web 应用程序渗透测试中使用 W3af 来快速探测目标网站及其托管服务器。

首先,输入“cd w3af.txt”打开 W3af 控制台。进入正确的目录后,输入“./w3af_console”以打开 w3af.conf 文件。

Web应用程序渗透测试:步骤、方法和工具

接下来,输入“target”、“set target xxxx”并按回车键。输入“back”跳转到一个目录,配置将被保存。

Web应用程序渗透测试:步骤、方法和工具

最后,输入“设置插件”以选择所需的扫描选项。在这种情况下,通过键入“audit all”选择全部,然后键入“back”返回一个目录。写“开始”并运行扫描。

Web应用程序渗透测试:步骤、方法和工具

扫描完成后,W3af 将报告扫描发现的漏洞。在下面的案例中,W3af 发现目标系统运行在 Apache 服务器版本 2.2.8 和 PHP 5.2.4 上。

Web应用程序渗透测试:步骤、方法和工具

据 W3af 报告,这两个版本都容易受到 CSS 或跨端脚本攻击。

总之,W3af 具有更多与利用相关的功能,但内容过于庞大,无法在本文中展示。尽管如此,它是一种快速收集有关目标系统的信息的快速且简单的方法。

打嗝套件

Web应用程序渗透测试:步骤、方法和工具Burp Suite是一款开源 Web 应用程序渗透测试工具,有两个选项。开源版本可供任何人免费使用,但该工具缺少各种功能。

Burp Suite 的商业版本提供了更多的自动化和功能,并授权给许多渗透测试公司。

Burp Suite 中的各种功能使其成为全能的 Web 应用程序安全测试工具,可在整个渗透测试过程中使用。使用 Burp Suite 收集 http 流量很容易,并且在利用领域具有巨大的可能性。

为了演示 Burp Suite 最有用的方面,下面是一个使用 Burp Suite 捕获 http 流量并使用 Sqlmap 执行 SQL 注入攻击的简单示例。

首先,导航到 Kali Linux 桌面的左侧打开 Burp Suite,然后在“Web 应用程序分析”选项卡类别中找到 Burp Suite。加载后,确保您的“拦截”选项卡已选择“拦截已打开”。

Web应用程序渗透测试:步骤、方法和工具

接下来,设置 Burp Suite 作为 Firefox 浏览器中的 Web 代理。打开“首选项”按钮,进入“高级设置”à“连接设置”à选择“手动代理配置”并填写IP地址和端口号:127.0.0.1和8080。

Web应用程序渗透测试:步骤、方法和工具

现在一切都已设置完毕,通过 Firefox 浏览器导航到目标网站,并在应用程序 URL 的易受攻击部分插入 1。

在这种情况下,存在漏洞的 PHP 版本允许我们在“title”部分后注入“1”,并确认 SQL 注入是可能的。

捕获到流量后,不再需要 Burp Suite,并且可以关闭“拦截已打开”。将捕获的流量保存到文件中并退出 Burp Suite。

Web应用程序渗透测试:步骤、方法和工具

为了执行实际的 SQL 注入,我们将打开 SQLMap 并执行攻击。但首先,了解一下 SQLMap 的背景知识将使您意识到这个工具有多么有用。

SQLMap

Web应用程序渗透测试:步骤、方法和工具SQLMap是最好的开源自动化工具之一。它简化了执行 SQL 注入攻击的过程,并提供对受感染数据库服务器的访问。

主要功能之一包括数据库指纹识别、扫描漏洞和可能的利用。

为了继续之前在 Burp Suite 中捕获的 http 流量,我们将演示使用 SQLMap 成功执行 SQL 注入攻击的过程。

输入“sqlmap -r nameOfTheSavedFile.txt -p 标题。这将有效地运行 SQLMap,并使用提供的包含捕获流量的文件,尝试在易受攻击的 Web 应用程序 URL 的“标题”部分之后注入代码。

Web应用程序渗透测试:步骤、方法和工具

扫描完成后,SQLMap 会报告应用程序和数据库版本以及有关所有注入尝试的详细信息。

最后,我们将尝试启动 SQL shell 并获取对后端数据库的访问权限。输入“sqlmap -r nameOfTheSavedFile.txt -p title –sql-shell”并按 Enter 键。

Web应用程序渗透测试:步骤、方法和工具

如果对数据库进行正确的访问并允许您执行读取、写入或删除等操作,则此方法可能非常有效。

执行 SQL 注入攻击的另一种方法是针对目标 IP 运行 SQLMap 并尝试获取对数据库的访问权限。出于演示目的,我们选择了容易受到攻击的可用 BWAPP Web 应用程序。

Web应用程序渗透测试:步骤、方法和工具

接下来,执行以下命令,尝试在提供的 Web 应用程序目标 URL 的“title=1”部分之后注入 SQL 代码。

Web应用程序渗透测试:步骤、方法和工具

SQLMap 将运行并要求您确认检测到的数据库版本。

Web应用程序渗透测试:步骤、方法和工具

输入“yes”并继续扫描。

接下来,通过在指定目标后添加“—dbs”继续查找环境中可用的数据库。

Web应用程序渗透测试:步骤、方法和工具

SQLMap检测到可用的数据库后,尝试通过添加“--tables-D”并指定表名来列出其中一个数据库的表。

Web应用程序渗透测试:步骤、方法和工具

由于我们的利用成功,我们将继续获取尽可能多的信息。“bwapp”数据库中的“users”表可能会泄露更多敏感信息。

通过输入目标 URL 转储“users”表,指定操作、数据库和表名称,然后按 Enter 键。

Web应用程序渗透测试:步骤、方法和工具

SQLMap 将自动检测“users”表包含密码哈希值,并询问您是否希望存储它们以供以后可能的字典暴力密码攻击。

将哈希值保存到文件并选择默认字典选项并运行暴力扫描。

Web应用程序渗透测试:步骤、方法和工具

完成后,SQLMap 将显示破解的报告结果。

Web应用程序渗透测试:步骤、方法和工具

您不需要使用 SQLMap 中默认的密码破解功能来获得相同的结果。Hydra 和 John Ripper 是一些最流行的密码破解工具,可以帮助进行额外的密码破解工作。

跨站脚本 (XSS)

有许多在线扫描工具可以自动为您提供所需网站的全面安全扫描。这可以用作确认当前漏洞的快速方法。

使用W3af框架可以达到相同的结果。为了测试这种攻击,渗透测试人员通常拦截客户端和服务器之间的 http 通信,并使用此流量来攻击目标系统。

识别已知的第 3软件供应商

有时,应用程序使用第三方工具来实现某些功能。这使整个应用程序面临与第三方工具相同的风险

在应用程序使用的软件供应商中查找公开的漏洞和漏洞并进行测试。

存在着数千种可能的攻击,它们共同利用应用程序、服务器和数据库。

其他需要提及的常见攻击有:会话固定攻击、会话劫持攻击和二进制攻击。

第 3 步:报告和建议

与编写任何其他渗透测试报告一样,Web 应用程序报告也没有什么不同。

报告的结构应该清晰简洁,并有足够的数据来支持你的发现。确保坚持有效的方法并尽可能具有描述性。

通过写下成功的漏洞利用并按重要性对其进行分类,您将帮助客户公司集中精力修复其系统中最关键的部分。

一些公司确保始终为面向业务的人员编写报告,以便客户 IT 人员和高层管理人员清楚地了解报告以及他们面临风险的程度。 

第 4 步:补救和持续支持

许多公司发现自己无法修复渗透测试发现的所有漏洞。最佳实践是首先缓解严重和高度的漏洞,然后再关注中度和低度的漏洞。

由于每个漏洞被利用的可能性各不相同,因此优先级起着重要作用。

检测到的某些漏洞是可能的,但在没有访问内部系统的情况下是不可能的,并且某些漏洞具有远程代码执行的风险,应充分优先考虑以反映可能性和影响。

许多渗透测试公司提供重新测试作为其合同的一部分,并将为您提供二次渗透测试,以验证先前测试中发现的已缓解的漏洞。

您可以在这里与安全和 IT 团队密切合作,解决首次测试完成后发现的所有漏洞。

结论

与“老式”应用程序不同,Web 应用程序在商业性和实用性方面为市场提供了很多东西。它们为互联网带来了功能,但需要付费。

这些系统通常是公开可用的,因此始终暴露在互联网上。由于互联网的日益普及和存在,Web 应用程序的设计和配置通常带有漏洞,恶意黑客会发现并利用这些漏洞。

由于这些系统几乎总是面向互联网,因此它们带来更大的风险,并且在渗透测试时应该自动成为优先事项。

如果应用程序处理一些信用卡数据、个人信息甚至健康记录,那么执行年度 Web 应用程序渗透测试以满足大多数数据要求的法规遵从性将符合公司的最佳利益。

在不需要渗透测试的情况下,强烈建议将其作为满足最佳安全标准的最佳方法,然后避免执行渗透测试。

通过多种可供选择的工具,Web 应用程序渗透测试开发了一种更加结构化的方法来进行自动化和手动测试。强烈建议选择任何开源安全解决方案,因为可以使用具有升级功能的同一工具的商业版本。

最后,Web 应用程序渗透测试涉及测试应用程序的环境、数据库连接、源代码、不良数据和错误数据,以便发现漏洞并利用它们。

原文始发于微信公众号(河南等级保护测评):Web应用程序渗透测试:步骤、方法和工具

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月12日12:21:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Web应用程序渗透测试:步骤、方法和工具http://cn-sec.com/archives/2568647.html

发表评论

匿名网友 填写信息