提交 6439681b 编写于 作者: W wizardforcel

2021-10-21 22:24:04

上级 a7fd83b5
# 前言
# 零、前言
本书是一本实用指南,通过详细的代码示例,向您展示了使用 Python 进行 pentesting 的优势。本书首先探讨了 Python 网络的基础知识,然后讨论了网络和无线测试,包括信息收集和攻击。您将学习如何建立蜜罐陷阱。稍后,我们将深入研究黑客攻击应用层,首先从网站收集信息,然后最终进入与网站黑客攻击相关的概念,如参数篡改、DDOS、XSS 和 SQL 注入。
......@@ -20,7 +20,7 @@
[第 6 章](6.html)*蜜罐——为攻击者搭建陷阱*重点介绍如何为攻击者搭建陷阱。您将学习如何将代码从 TCP 层 2 构建到 TCP 层 4。
[第 7 章](7.html)*脚印 Web 服务器和 Web 应用程序*,深入探讨了 Web 服务器签名、电子邮件收集的重要性,以及为什么知道服务器签名是黑客攻击的第一步。
[第 7 章](7.html)*脚印 Web 服务器和 Web 应用*,深入探讨了 Web 服务器签名、电子邮件收集的重要性,以及为什么知道服务器签名是黑客攻击的第一步。
[第 8 章](8.html)*客户端和 DDoS 攻击*探讨客户端验证以及如何绕过客户端验证。本章介绍四种 DDoS 攻击的植入。
......
# 具有渗透测试和网络的 Python
# 一、Python 渗透测试和网络
**渗透****笔**)测试员和黑客是类似的术语。不同之处在于,渗透测试人员为一个组织工作,以防止黑客企图,而黑客则为任何目的进行黑客攻击,如名誉、为钱出售漏洞或利用个人敌意的漏洞。
......
# 扫描测试
# 二、扫描测试
网络扫描指的是一组过程,用于调查活动主机、主机类型、打开的端口以及主机上运行的服务类型。网络扫描是情报收集的一部分,攻击者可以通过它创建目标组织的配置文件。
......@@ -655,7 +655,7 @@ print "Accuracy of detection is:\t\t", nm[host]['osmatch'][0]['osclass'][0]['acc
考虑用户通常使用他们的计算机下载游戏的情况,并且在安装游戏期间识别木马。特洛伊木马进入隐藏模式;打开一个端口;将所有击键(包括日志信息)发送给黑客。在这种情况下,端口扫描有助于识别受害者计算机上运行的未知服务。
端口号范围从`0``65535`。众所周知的端口(也称为系统端口)是那些范围从`0``1023`并为特权服务保留的端口。范围从`1024``49151`的端口是用于应用程序的注册端口类供应商;例如,`3306`端口是为 MySQL 保留的。
端口号范围从`0``65535`。众所周知的端口(也称为系统端口)是那些范围从`0``1023`并为特权服务保留的端口。范围从`1024``49151`的端口是用于应用的注册端口类供应商;例如,`3306`端口是为 MySQL 保留的。
# 端口扫描仪的概念
......
# 嗅探和渗透测试
# 三、嗅探和渗透测试
当我攻读工程硕士学位时,我曾用我最喜欢的工具*凯恩和亚伯*嗅探朋友宿舍里的网络。我的朋友通常会在电子商务网站上冲浪。第二天,当我告诉他们要买的鞋子很好时,他们会感到惊讶。他们总是想知道我是怎么得到这些信息的。这都是因为嗅探网络。
......@@ -13,7 +13,7 @@
# 介绍一种网络嗅探器
嗅探是使用软件(应用程序)或硬件设备监视和捕获通过给定网络的所有数据包的过程。嗅探通常由网络管理员完成。但是,攻击者可能使用嗅探器捕获数据,这些数据有时可能包含敏感信息,如用户名和密码。网络管理员使用交换机`SPAN`端口。交换机向`SPAN`端口发送一份流量副本。管理员使用这个`SPAN`端口来分析流量。如果你是黑客,你一定使用过*Wireshark*工具。嗅探只能在子网内完成。在本章中,我们将学习如何使用 Python 进行嗅探。然而,在此之前,我们需要知道有两种嗅探方法。详情如下:
嗅探是使用软件(应用)或硬件设备监视和捕获通过给定网络的所有数据包的过程。嗅探通常由网络管理员完成。但是,攻击者可能使用嗅探器捕获数据,这些数据有时可能包含敏感信息,如用户名和密码。网络管理员使用交换机`SPAN`端口。交换机向`SPAN`端口发送一份流量副本。管理员使用这个`SPAN`端口来分析流量。如果你是黑客,你一定使用过*Wireshark*工具。嗅探只能在子网内完成。在本章中,我们将学习如何使用 Python 进行嗅探。然而,在此之前,我们需要知道有两种嗅探方法。详情如下:
* 被动嗅探
* 主动嗅探
......@@ -166,7 +166,7 @@ connected by ('192.168.0.11', 1417)
在继续嗅探之前,您应该了解以下定义:
* **PF_ 包**:在设备驱动层操作。Linux 的`pcap`库使用`PF_PACKET`套接字。要运行此操作,您必须以 root 用户身份登录。如果您希望在互联网协议层下的最基本级别发送和接收消息,则需要使用`PF_PACKET`
* **原始套接字**:它不关心网络层堆栈,提供直接与应用程序发送和接收数据包的快捷方式。
* **原始套接字**:它不关心网络层堆栈,提供直接与应用发送和接收数据包的快捷方式。
以下套接字方法用于字节顺序转换:
......
# 网络攻击与防范
# 四、网络攻击与防范
在前几章中,您学习了网络扫描和网络嗅探。在本章中,您将看到不同类型的网络攻击以及如何防止它们。本章将对网络管理员和网络管理员有所帮助。
......
# 无线测试
# 五、无线测试
无线连接时代带来了灵活性和移动性,但也带来了许多安全问题。通过有线连接,攻击者需要物理访问才能进行连接和攻击。在无线连接的情况下,攻击者只需要信号的可用性就可以发起攻击。在继续之前,您应该了解所使用的术语:
......
# 蜜罐–为攻击者构建陷阱
# 六、蜜罐——为攻击者构建陷阱
[第 5 章](5.html)*无线测试*中,您看到了各种网络攻击以及如何防范。在本章中,您将看到一些积极主动的方法。在[第 2 章](https://cdp.packtpub.com/python_penetration_testing_essentials__second_edition/wp-admin/post.php?post=52&action=edit)*扫描测试*中,您学习了使用 ping 扫描的 IP 扫描和使用 TCP 连接扫描的端口扫描。但是当 ping 扫描和端口扫描代码给你假目标时会发生什么呢?你会试图利用假目标。这台机器被设置成诱饵来引诱攻击者,它记录了攻击者的动作。在看到所有的技巧和攻击之后,管理员可以建立一个新的策略来加强网络。在本章中,我们将使用 Python 代码来完成这些任务
......@@ -548,4 +548,4 @@ logger.addHandler(fh)
在本章中,您学习了如何发送假 ICMP(ping)回复。为了发送 ICMP 应答,必须运行 ARP 协议。通过同时运行这两个代码,它们在网络层产生了一种错觉。但是,在运行代码之前,必须设置防火墙以删除传出帧。在传输层,进行了两个实验:假端口打开和假操作系统运行。通过了解更多关于`nmap`的信息,可以创建特定操作系统的精确假响应。在应用层,Python web 服务器代码给出了一个伪造的服务器签名。您可以根据需要更改服务器签名。
[第 7 章](7.html)*脚印 Web 服务器和 Web 应用程序*中,您将了解如何脚印 Web 服务器。您还将学习如何获取 HTTP 的头文件以及如何获取横幅**
\ No newline at end of file
[第 7 章](7.html)*脚印 Web 服务器和 Web 应用*中,您将了解如何脚印 Web 服务器。您还将学习如何获取 HTTP 的头文件以及如何获取横幅**
\ No newline at end of file
# 脚踏打印 Web 服务器和 Web 应用程序
# 六、踩点 Web 服务器和 Web 应用
到目前为止,我们已经阅读了四章相关内容,从数据链路层到传输层。现在,我们转到应用层渗透测试。在本章中,我们将介绍以下主题:
* web 服务器的脚打印概念
* web 服务器的踩点概念
* 介绍信息收集
* HTTP 头检查
* BeautifulSoup 解析器从 smartwhois.com 收集网站信息
* 网站的横幅抓取
* 强化 web 服务器
# web 服务器的脚打印概念
# web 服务器的踩点概念
渗透测试的概念不能在一个步骤中解释或执行;因此,它被分为几个步骤。脚印是 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 服务器。
* 设置活动用户数量限制,以防止 DDoS 攻击。
......
# 客户端和 DDoS 攻击
# 八、客户端和 DDoS 攻击
在上一章中,您学习了如何解析 web 页面,以及如何从 HTML 页面收集特定信息。在本章中,我们将介绍以下主题:
......
# 测试 SQL 和 XSS
# 九、测试 SQL 和 XSS
在本章中,我们将讨论一些针对 web 应用程序的严重攻击。你一定听说过数据盗窃、用户名和密码被破解、网站被破坏等事件。已知这些漏洞主要是由于 web 应用程序中存在的漏洞造成的,这些漏洞通常是通过 SQL 注入和 XSS 攻击执行的。在[第 7 章](7.html)*中,您学习了如何查看 Web 服务器和 Web 应用程序*上正在使用哪些数据库软件以及运行哪些操作系统。现在,我们将一个接一个地进行我们的攻击。在本章中,我们将介绍以下主题:
在本章中,我们将讨论一些针对 web 应用的严重攻击。你一定听说过数据盗窃、用户名和密码被破解、网站被破坏等事件。已知这些漏洞主要是由于 web 应用中存在的漏洞造成的,这些漏洞通常是通过 SQL 注入和 XSS 攻击执行的。在[第 7 章](7.html)*中,您学习了如何查看 Web 服务器和 Web 应用*上正在使用哪些数据库软件以及运行哪些操作系统。现在,我们将一个接一个地进行我们的攻击。在本章中,我们将介绍以下主题:
* SQL 注入攻击
* SQL 注入攻击的类型
......@@ -11,13 +11,13 @@
# 介绍 SQL 注入攻击
SQL 注入是一种技术,或者可以说是一种专家技术,用于利用未验证的输入漏洞窃取数据。web 应用程序的工作方法可以在以下屏幕截图中看到:
SQL 注入是一种技术,或者可以说是一种专家技术,用于利用未验证的输入漏洞窃取数据。web 应用的工作方法可以在以下屏幕截图中看到:
![](img/f55d0252-f3f7-486f-ac45-48329533f0c1.png)
web 应用程序工作的方法
web 应用工作的方法
如果我们的查询未经验证,那么它将转到数据库执行,然后可能会显示敏感数据或删除数据。前面的屏幕截图显示了数据驱动网站的工作原理。在这个屏幕截图中,我们看到客户端在本地计算机上打开网页。主机通过 internet 连接到 web 服务器。前面的屏幕截图清楚地显示了 web 应用程序与 web 服务器数据库交互的方法。
如果我们的查询未经验证,那么它将转到数据库执行,然后可能会显示敏感数据或删除数据。前面的屏幕截图显示了数据驱动网站的工作原理。在这个屏幕截图中,我们看到客户端在本地计算机上打开网页。主机通过 internet 连接到 web 服务器。前面的屏幕截图清楚地显示了 web 应用与 web 服务器数据库交互的方法。
# SQL 注入的类型
......@@ -153,7 +153,7 @@ while (True):
现在,是时候执行基于重言式的 SQL 注入攻击了。基于重言式的 SQL 注入通常用于绕过用户身份验证。
例如,假设数据库包含用户名和密码。在这种情况下,web 应用程序编程代码如下所示:
例如,假设数据库包含用户名和密码。在这种情况下,web 应用编程代码如下所示:
```py
$sql = "SELECT count(*) FROM cros where (User=".$uname." and Pass=".$pass.")";
......@@ -312,7 +312,7 @@ SQL 注入用户名查询漏洞
PHP 中的 SQL 注入过滤器
到目前为止,您已经了解了如何执行 SQL 注入攻击。在 SQL 注入攻击中,我们必须手动执行很多操作,因为有很多 SQL 注入攻击,例如基于时间、基于 SQL 查询的包含顺序、基于联合等。每个 pentester 都应该知道如何手工创建查询。对于一种类型的攻击,您可以制作一个程序,但是现在,不同的网站开发人员使用不同的方法来显示数据库中的数据。有些开发人员使用 HTML 表单来显示数据,有些开发人员使用简单的 HTML 语句来显示数据。一个名为*sqlmap*的 Python 工具可以做很多事情。然而,有时会出现 web 应用程序防火墙,如 mod security;这不允许通过查询*联合**订单。在这种情况下,您必须手动创建查询,如下所示:*
到目前为止,您已经了解了如何执行 SQL 注入攻击。在 SQL 注入攻击中,我们必须手动执行很多操作,因为有很多 SQL 注入攻击,例如基于时间、基于 SQL 查询的包含顺序、基于联合等。每个 pentester 都应该知道如何手工创建查询。对于一种类型的攻击,您可以制作一个程序,但是现在,不同的网站开发人员使用不同的方法来显示数据库中的数据。有些开发人员使用 HTML 表单来显示数据,有些开发人员使用简单的 HTML 语句来显示数据。一个名为*sqlmap*的 Python 工具可以做很多事情。然而,有时会出现 web 应用防火墙,如 mod security;这不允许通过查询*联合**订单。在这种情况下,您必须手动创建查询,如下所示:*
```py
/*!UNION*/ SELECT 1,2,3,4,5,6,--
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册