在互联网的早期,安全只是一个事后的想法。然后,随着黑客开始利用企业松懈的安全姿态,情况逐渐开始发生变化。起初,像电子前哨基金会这样的非营利组织开始推动网络用户使用 HTTPS Everywhere。作为回应,认证机构开始向任何想要 SSL 证书的站点管理员提供免费的 SSL 证书变体。因此,至少79.6% 的活跃网站现在使用 SSL。
那只是开始。在接下来的几年里,开发者和 web 应用管理员逐渐开始加强他们的应用来抵御各种各样的攻击。他们推出了更复杂的密码要求。他们开始添加双因素身份验证作为默认措施。他们甚至开始将面向公众的服务置于高性能的 Web 应用防火墙之后。
但是尽管取得了所有的进步,漏洞依然存在,这意味着 web 应用开发者和管理员必须了解如何对他们的系统进行渗透测试,以查看是否有任何已知的漏洞可以穿透他们的多层防御。要做到这一点,他们必须了解渗透测试过程的各个阶段,以避免留下任何安全漏洞。下面是 Web 应用程序渗透测试涉及的四个主要步骤。
步骤1: 观察和侦察
Web 应用程序渗透测试过程中的第一个重要步骤涉及采取与攻击者相同的策略: 尽可能地了解目标。首先要做的是从谷歌这样的公共网站上收集目标网络应用的信息。使用搜索修饰符,可以收集与应用程序相关的子域名和页面的完整列表。这为黑客必须处理的潜在攻击提供了一个相当不错的地图。
接下来要做的是使用像 Nmap 这样的网络扫描仪来收集特定于 web 应用程序本身的数据。其思想是弄清楚有多少关于软件和服务器的信息对外部世界是可见的。然后,使用像 Burp Suite 这样的安全测试软件进行全面扫描,应该可以显示从服务器软件版本到应用程序环境的所有信息。
步骤2: 漏洞研究和攻击
Web 应用程序渗透测试过程的下一个主要步骤是使用收集的数据开始缩小可尝试利用的漏洞列表。换句话说,如果您发现攻击者可以告诉您正在使用某个特定的 Apache 和 PHP 版本,那么您应该开始寻找这些版本中已知的漏洞,以便尝试利用它们。
幸运的是,一些伟大的开源渗透测试工具可以自动化一些工作。您可以根据所检查的漏洞类型从中进行选择。受欢迎的选择包括:
- W3af
- Metasploit
- SQLMap
- Hydra 九头蛇
其思想是尝试找到每一个潜在的可利用的漏洞,并将找到的漏洞编目。如果可能的话,最好使用这些漏洞模拟攻击,以了解恶意行为者利用这些漏洞能走多远。
步骤3: 目录和报告
该过程的下一步是创建一个报告,该报告详细说明在前两个步骤中找到的所有内容。这个想法是创建一个中央知识库,整个开发团队可以将其作为修复问题的路线图。这就是您在攻击模拟中收集的数据将派上用场的地方。
报告应该根据漏洞的严重程度对它们进行分类。有各种公开可用的示例渗透测试报告,您可以使用它们来开发适合您需要的格式。这样的话,关闭所有安全漏洞的工作就更容易分清主次了。如果您正在处理一个已经在运行的应用程序,那么这是一个绝对关键的步骤。请记住,您发现的漏洞可能已经在黑客的雷达上,所以您越快修补严重的漏洞越好。
步骤4: 修补和重复
最后一步是审阅渗透测试报告,并开始解决其中确定的漏洞。对于一个已经存在的应用程序,最好从应用尽可能多的权宜之计开始。这些可能包括改变网站访问规则在你的网页应用层防火墙或采取特别脆弱的部分你的应用离线。
然后,继续决定报告中漏洞的最佳可能修复方案。从最严重的问题开始,简单地检查每个问题,因为它已经修复,同时仔细记录下修复是什么,以及它们可能影响应用程序的其他部分。这将帮助您知道在哪里集中于您的下一轮测试,您将不得不在完成补救工作之后开始。
创建一个硬目标
通过重复上述过程,直到没有漏洞被发现,Web 应用程序开发人员和管理员可以合理地保证,他们不是一个坐以待毙的鸭子,等待攻击。当然,这只是针对已知的漏洞,因此这个过程不会使攻击变得不可能,只是不太可能。在不断变化的网络安全环境中,这通常是人们所能期望的最好结果。请记住,不久以前,SSL 和复杂的密码还是 Web 应用程序安全的最终目标,因此持续的警惕将永远是真正安全的代价。