渗透测试的概念不能在一个步骤中解释或执行;因此,它被分为几个步骤。脚印是 pentesting 的第一步,攻击者试图收集有关目标的信息。在当今世界,电子商务发展迅速。因此,web 服务器已成为黑客的主要目标。为了攻击 web 服务器,我们必须首先知道 web 服务器是什么。我们还需要了解 web 服务器托管软件、托管操作系统以及 web 服务器上运行的应用程序。在获得这些信息后,我们可以建立我们的漏洞。获取此信息称为在 web 服务器上进行脚印。
渗透测试的概念不能在一个步骤中解释或执行;因此,它被分为几个步骤。脚印是 pentesting 的第一步,攻击者试图收集有关目标的信息。在当今世界,电子商务发展迅速。因此,web 服务器已成为黑客的主要目标。为了攻击 web 服务器,我们必须首先知道 web 服务器是什么。我们还需要了解 web 服务器托管软件、托管操作系统以及 web 服务器上运行的应用。在获得这些信息后,我们可以建立我们的漏洞。获取此信息称为在 web 服务器上进行脚印。
# 介绍信息收集
在本节中,我们将尝试使用错误处理技术收集有关 web 服务器上运行的 web 软件、操作系统和应用程序的信息。从黑客的角度来看,从错误处理中收集信息并没有那么有用。但是,从 pentester 的角度来看,这非常重要,因为在提交给客户的 pentesting 最终报告中,您必须指定错误处理技术。
在本节中,我们将尝试使用错误处理技术收集有关 web 服务器上运行的 web 软件、操作系统和应用的信息。从黑客的角度来看,从错误处理中收集信息并没有那么有用。但是,从 pentester 的角度来看,这非常重要,因为在提交给客户的 pentesting 最终报告中,您必须指定错误处理技术。
错误处理背后的逻辑是尝试在 web 服务器中产生错误,返回代码`404`,并查看错误页面的输出。我已经写了一个小代码来获得输出。我们将逐行检查以下代码:
...
...
@@ -101,7 +101,7 @@ file_text.write(content)
程序的两个输出
前面的屏幕截图显示了服务器签名打开时的输出。通过查看此输出,我们可以说 web 软件是 Apache,版本是 2.2.3,操作系统是 Red Hat。在下一个输出中,没有来自服务器的信息意味着服务器签名已关闭。有时有人使用 web 应用程序防火墙,比如 mod security,它提供了一个伪造的服务器签名。在这种情况下,您需要检查`result.txt`文件以获得完整、详细的输出。我们来查看`result.txt`的输出,如下图所示:
前面的屏幕截图显示了服务器签名打开时的输出。通过查看此输出,我们可以说 web 软件是 Apache,版本是 2.2.3,操作系统是 Red Hat。在下一个输出中,没有来自服务器的信息意味着服务器签名已关闭。有时有人使用 web 应用防火墙,比如 mod security,它提供了一个伪造的服务器签名。在这种情况下,您需要检查`result.txt`文件以获得完整、详细的输出。我们来查看`result.txt`的输出,如下图所示:
![](img/7ed8bc70-6e70-48b6-8ea7-d934ac05996e.png)
...
...
@@ -129,9 +129,9 @@ if http_r.code == 200:
获取标题信息
您会注意到,我们从程序中获取了两个输出。在第一次输出中,我们输入了`http://www.juggyboy.com/`作为 URL。该节目提供了很多有趣的信息,例如`Server: Microsoft-IIS/6.0`和`X-Powered-By: ASP.NET`;它推断该网站托管在 Windows 计算机上,web 软件为 IIS 6.0,ASP.NET 用于 web 应用程序编程。
您会注意到,我们从程序中获取了两个输出。在第一次输出中,我们输入了`http://www.juggyboy.com/`作为 URL。该节目提供了很多有趣的信息,例如`Server: Microsoft-IIS/6.0`和`X-Powered-By: ASP.NET`;它推断该网站托管在 Windows 计算机上,web 软件为 IIS 6.0,ASP.NET 用于 web 应用编程。
在第二个输出中,我提供了本地机器的 IP 地址,即`http://192.168.0.5/`。该程序透露了一些秘密信息,例如 web 软件是 Apache2.2.3,它运行在 Red Hat 机器上,PHP 5.1 用于 web 应用程序编程。通过这种方式,您可以获得有关操作系统、web 服务器软件和 web 应用程序的信息。
在第二个输出中,我提供了本地机器的 IP 地址,即`http://192.168.0.5/`。该程序透露了一些秘密信息,例如 web 软件是 Apache2.2.3,它运行在 Red Hat 机器上,PHP 5.1 用于 web 应用编程。通过这种方式,您可以获得有关操作系统、web 服务器软件和 web 应用的信息。
现在,让我们看看如果服务器签名关闭,我们将得到什么输出:
...
...
@@ -139,7 +139,7 @@ if http_r.code == 200:
当服务器签名关闭时
从前面的输出中,我们可以看到 Apache 正在运行。但是,它既不显示版本也不显示操作系统。对于 web 应用程序编程,使用了 PHP,但有时,输出不显示编程语言。为此,您必须解析网页以获得任何有用的信息,例如超链接。
从前面的输出中,我们可以看到 Apache 正在运行。但是,它既不显示版本也不显示操作系统。对于 web 应用编程,使用了 PHP,但有时,输出不显示编程语言。为此,您必须解析网页以获得任何有用的信息,例如超链接。
如果要获取标题的详细信息,请打开标题目录,如以下代码所示:
...
...
@@ -290,11 +290,11 @@ while True:
* 始终隐藏服务器签名。
* 如果可能,设置一个虚假的服务器签名以误导攻击者。
* 处理错误。
* 如果可能,请使用虚拟环境(监禁)来运行应用程序。
* 尝试隐藏编程语言页面扩展,因为攻击者很难看到 web 应用程序的编程语言。
* 如果可能,请使用虚拟环境(监禁)来运行应用。
* 尝试隐藏编程语言页面扩展,因为攻击者很难看到 web 应用的编程语言。
* 使用供应商提供的最新修补程序更新 web 服务器。它避免了任何利用 web 服务器的机会。至少可以保护服务器的已知漏洞。
* 不要使用第三方补丁来更新 web 服务器。第三方修补程序可能包含特洛伊木马或病毒。
* 不要在 web 服务器上安装其他应用程序。如果安装操作系统,如 RHEL 或 Windows,请不要安装其他不必要的软件,如 Office 或 Editor,因为它们可能包含漏洞。
* 不要在 web 服务器上安装其他应用。如果安装操作系统,如 RHEL 或 Windows,请不要安装其他不必要的软件,如 Office 或 Editor,因为它们可能包含漏洞。
* 关闭除`80`和`443`之外的所有端口。
* 不要在 web 服务器上安装任何不必要的编译器,如 gcc。如果攻击者破坏了 web 服务器并希望上载可执行文件,则 ID 或 IP 可以检测到该文件。在这种情况下,攻击者将在 web 服务器上上载代码文件(以文本文件的形式),并在 web 服务器上执行该文件。此执行可能会损坏 web 服务器。
在本章中,我们将讨论一些针对 web 应用程序的严重攻击。你一定听说过数据盗窃、用户名和密码被破解、网站被破坏等事件。已知这些漏洞主要是由于 web 应用程序中存在的漏洞造成的,这些漏洞通常是通过 SQL 注入和 XSS 攻击执行的。在[第 7 章](7.html)*中,您学习了如何查看 Web 服务器和 Web 应用程序*上正在使用哪些数据库软件以及运行哪些操作系统。现在,我们将一个接一个地进行我们的攻击。在本章中,我们将介绍以下主题:
在本章中,我们将讨论一些针对 web 应用的严重攻击。你一定听说过数据盗窃、用户名和密码被破解、网站被破坏等事件。已知这些漏洞主要是由于 web 应用中存在的漏洞造成的,这些漏洞通常是通过 SQL 注入和 XSS 攻击执行的。在[第 7 章](7.html)*中,您学习了如何查看 Web 服务器和 Web 应用*上正在使用哪些数据库软件以及运行哪些操作系统。现在,我们将一个接一个地进行我们的攻击。在本章中,我们将介绍以下主题:
如果我们的查询未经验证,那么它将转到数据库执行,然后可能会显示敏感数据或删除数据。前面的屏幕截图显示了数据驱动网站的工作原理。在这个屏幕截图中,我们看到客户端在本地计算机上打开网页。主机通过 internet 连接到 web 服务器。前面的屏幕截图清楚地显示了 web 应用程序与 web 服务器数据库交互的方法。
如果我们的查询未经验证,那么它将转到数据库执行,然后可能会显示敏感数据或删除数据。前面的屏幕截图显示了数据驱动网站的工作原理。在这个屏幕截图中,我们看到客户端在本地计算机上打开网页。主机通过 internet 连接到 web 服务器。前面的屏幕截图清楚地显示了 web 应用与 web 服务器数据库交互的方法。