提交 e4d806e5 编写于 作者: W wizardforcel

2021-10-22 22:40:55

上级 fa6dfee8
# 序言
# 零、序言
欢迎来到*学习 Python*渗透测试。本书采用了一种完全不同的方法来教授渗透测试和 Python 脚本编写,而不是强调如何创建与市场上当前工具做相同事情的脚本,或者强调可以编写的特定类型的漏洞利用。我们将探讨如何实现参与,并了解脚本在评估中的适用性,以及当前工具在哪里满足需求。此方法不仅将教您如何从构建介绍性脚本到多线程攻击工具,还将教您如何评估像专业人员这样的组织,而不管您的经验水平如何。
......@@ -14,7 +14,7 @@
[第 5 章](05.html#aid-1DOR01 "Chapter 5. Exploiting Services with Python")*使用 Python*开发服务,重点介绍如何识别利用漏洞以获得初始访问权,如何研究利用后技术以获得特权访问权,以及如何利用该访问权使用自动脚本访问其他系统。
[第 6 章](06.html#aid-1HIT81 "Chapter 6. Assessing Web Applications with Python")*使用 Python*评估 Web 应用程序,是以自动化分析 Web 应用程序弱点为中心的技术的高潮。在这里,可以使用 Python 改进对使用链式技术的复杂应用程序的评估。
[第 6 章](06.html#aid-1HIT81 "Chapter 6. Assessing Web Applications with Python")*使用 Python*评估 Web 应用,是以自动化分析 Web 应用弱点为中心的技术的高潮。在这里,可以使用 Python 改进对使用链式技术的复杂应用的评估。
[第 7 章](07.html#aid-1NA0K2 "Chapter 7. Cracking the Perimeter with Python")*用 Python*破解周界,强调了一些真正的恶意参与者和评估人员用来访问组织的半可信和可信网络的常见技术。这是使用包括 Python 在内的工具和技术完成的,并取决于当前的行业实践。
......
# 第 1 章:了解渗透测试方法
# 一、了解渗透测试方法
在快速切入之前,在本章中,我们将实际定义什么是渗透测试,什么不是,**渗透测试执行标准****PTES**)是什么,以及将使用的工具。这些信息将有助于指导您可能参与的未来业务。本章将帮助指导新的评估员和组织,他们希望建立自己的业务。如果你想直接进入代码和细节,我建议你跳到[第 2 章](02.html#aid-KVCC1 "Chapter 2. The Basics of Python Scripting")*Python 脚本的基础*。我提醒你,阅读本章的好处在于,它将提供一个框架和思维方式,帮助你将脚本儿童与专业人士区分开来。那么,让我们从什么是渗透测试开始。
......@@ -38,9 +38,9 @@
## 逆向工程项目
倒车可以是渗透测试的一部分,但今天比过去难得多。[第 8 章](08.html#aid-1T1401 "Chapter 8. Exploit Development with Python, Metasploit, and Immunity")*利用 Python、Metasploit 和免疫*进行的漏洞开发将更详细地讨论这一点,因为这里将描述实际的漏洞开发。当前的渗透测试可能包括漏洞开发,但其目的是创建与国产代码相关的概念证明,并获得对数据可能驻留的关键系统的访问权。
倒车可以是渗透测试的一部分,但今天比过去难得多。[第 8 章](08.html#aid-1T1401 "Chapter 8. Exploit Development with Python, Metasploit, and Immunity")*利用 Python、Metasploit 和Immunity*进行的漏洞开发将更详细地讨论这一点,因为这里将描述实际的漏洞开发。当前的渗透测试可能包括漏洞开发,但其目的是创建与国产代码相关的概念证明,并获得对数据可能驻留的关键系统的访问权。
相比之下,在大规模的反向服务中,评估员试图证明应用程序对反向服务的总体敏感性以及与源代码、编译和关联库相关的弱点。这些类型的攻击更适合于逆向工程师,他们花时间识别常见的攻击链和方法来破坏应用程序,而不是获得对关键数据的访问。在这一特定领域的经验水平是广泛的。通常,许多评估人员从渗透测试转移到这一特定技能集,在那里他们全职进行反向测试。
相比之下,在大规模的反向服务中,评估员试图证明应用对反向服务的总体敏感性以及与源代码、编译和关联库相关的弱点。这些类型的攻击更适合于逆向工程师,他们花时间识别常见的攻击链和方法来破坏应用,而不是获得对关键数据的访问。在这一特定领域的经验水平是广泛的。通常,许多评估人员从渗透测试转移到这一特定技能集,在那里他们全职进行反向测试。
## 黑客行为
......@@ -48,7 +48,7 @@
# 评估方法
有多种与渗透测试相关的评估方法。一些方法的例子包括**开源安全测试方法手册****OSSTMM**),用于 Web 评估的**开放 Web 应用程序安全项目****OWASP**),以及**国家标准与技术研究所****NIST**特别出版物 800-115《信息安全测试和评估技术指南》和 PTES。本书中我们将重点介绍的方法是 PTES,因为它是新评估人员的可靠资源。
有多种与渗透测试相关的评估方法。一些方法的例子包括**开源安全测试方法手册****OSSTMM**),用于 Web 评估的**开放 Web 应用安全项目****OWASP**),以及**国家标准与技术研究所****NIST**特别出版物 800-115《信息安全测试和评估技术指南》和 PTES。本书中我们将重点介绍的方法是 PTES,因为它是新评估人员的可靠资源。
# 渗透测试执行标准
......@@ -76,7 +76,7 @@ PTE 有七个不同的阶段,即交战前互动、情报收集、威胁建模
PTE 的第一阶段是所有订婚前工作,毫无疑问,这是顺利成功订婚的最重要阶段。在此采取的任何捷径或完成此阶段的过度匆忙都可能对评估的其余部分产生重大影响。此阶段通常由组织创建评估请求开始。可能要求的评估示例通常分为以下一大类:
* Web 应用程序
* Web 应用
* 内部网络
* 外部网络
* 身体的
......@@ -359,7 +359,7 @@ exploit -j
Burp Suite 是透明代理的标准,或者是用于直接交互和处理从浏览器发送到浏览器的 web 流量流的工具。该工具有一个 pro 版本,它添加了一个体面的 web 漏洞扫描器。使用时应小心,因为它可能会导致论坛、电子邮件和交互的多次提交。
同样的道理也可以用它的 Spider 工具来解释,它与范围广泛的 web 应用程序进行交互,并将它们映射为类似于 Google 和 Bing 这样的网络爬虫。确保当您使用这些工具时,您首先禁用自动提交和登录,直到您更好地理解应用程序。更多关于 Burp 和类似 web 工具的信息将在[第 6 章](06.html#aid-1HIT81 "Chapter 6. Assessing Web Applications with Python")*使用 Python 评估 web 应用程序*中介绍。其他类似工具包括**Zed 攻击代理****ZAP**),该工具现在还包含名为 DirBuster 的未链接文件夹和文件研究工具。
同样的道理也可以用它的 Spider 工具来解释,它与范围广泛的 web 应用进行交互,并将它们映射为类似于 Google 和 Bing 这样的网络爬虫。确保当您使用这些工具时,您首先禁用自动提交和登录,直到您更好地理解应用。更多关于 Burp 和类似 web 工具的信息将在[第 6 章](06.html#aid-1HIT81 "Chapter 6. Assessing Web Applications with Python")*使用 Python 评估 web 应用*中介绍。其他类似工具包括**Zed 攻击代理****ZAP**),该工具现在还包含名为 DirBuster 的未链接文件夹和文件研究工具。
## 九头蛇
......
# 第 2 章 Python 脚本的基础知识
# 二、Python 脚本的基础知识
在开始编写第一个 Python 脚本之前,应该了解一些概念。现在学习这些项目将帮助您在将来更快地开发代码。这将提高您作为渗透测试人员的能力,或了解评估人员在创建实时自定义代码时正在做什么,以及您应该问什么问题。您还应该了解如何创建脚本以及您试图实现的目标。你经常会发现你的脚本会随着时间的推移而变形,目的可能会改变。这可能是因为您意识到对脚本的真正需求可能并不存在,或者存在用于特定功能的现有工具。
......@@ -78,7 +78,7 @@ print("You have been hacked!")
OO 编程意味着该语言支持可以根据需要创建和销毁的对象,以完成任务。整个培训课程都是在解释和扩展 OO 概念的基础上开发的。对这些概念的深入解释超出了本书的范围,但仍建议进一步研究。
除了 OO 思维过程和 OO 支持代码的构建之外,还可以创建脚本“Pythonically”或“pythonicscripts”。这不是虚构的;相反,它是定义创建和编写 Python 脚本的正确方法的一种方式。有很多方法可以编写 Python 脚本,多年来,最佳实践不断发展。这被称为**蟒蛇式**,因此,我们应该始终努力以这种方式写作。原因是,当我们作为贡献者向社区提供脚本时,它们更易于阅读、维护和使用。
除了 OO 思维过程和 OO 支持代码的构建之外,还可以创建脚本“Pythonically”或“pythonicscripts”。这不是虚构的;相反,它是定义创建和编写 Python 脚本的正确方法的一种方式。有很多方法可以编写 Python 脚本,多年来,最佳实践不断发展。这被称为**Python式**,因此,我们应该始终努力以这种方式写作。原因是,当我们作为贡献者向社区提供脚本时,它们更易于阅读、维护和使用。
### 注
......@@ -465,7 +465,7 @@ print(dictionary_example['james'])
### 提示
在 Python 中,当实例化一个新对象时,构造函数方法由`__init__`和`__new__`处理。但是,在创建新类时,只需要使用`__init__`函数作为类的构造函数。直到很久以后才需要,但要记住这一点;如果要开发多线程应用程序,这一点很重要。
在 Python 中,当实例化一个新对象时,构造函数方法由`__init__`和`__new__`处理。但是,在创建新类时,只需要使用`__init__`函数作为类的构造函数。直到很久以后才需要,但要记住这一点;如果要开发多线程应用,这一点很重要。
## 将变量传递给字符串
......@@ -570,7 +570,7 @@ Python 中的运算符是表示函数执行的符号。
Python 中变量 incrementor 的函数等价物是`variable=+1`,与`variable = variable + 1`相同。然而,你可能会注意到这里有些东西;可以在此表达式中定义添加到变量的内容。因此,与双加法符号不同,双加法符号表示“向该变量添加 1”,AND 表达式允许您向其中添加任何内容。
这在编写漏洞利用时非常重要,因为可以使用此运算符将多个十六进制值附加到同一个字符串,如前面的字符串连接示例所示,其中两个字符串被添加到一起。[第 8 章](08.html#aid-1T1401 "Chapter 8. Exploit Development with Python, Metasploit, and Immunity")*利用 Python、Metasploit 和免疫*开发漏洞,当您开发**远程代码执行**n(**RCE**漏洞时,将涵盖更多内容。在此之前,请考虑此表以查看不同的赋值运算符及其使用情况:
这在编写漏洞利用时非常重要,因为可以使用此运算符将多个十六进制值附加到同一个字符串,如前面的字符串连接示例所示,其中两个字符串被添加到一起。[第 8 章](08.html#aid-1T1401 "Chapter 8. Exploit Development with Python, Metasploit, and Immunity")*利用 Python、Metasploit 和Immunity*开发漏洞,当您开发**远程代码执行**n(**RCE**漏洞时,将涵盖更多内容。在此之前,请考虑此表以查看不同的赋值运算符及其使用情况:
<colgroup><col> <col></colgroup>
|
......
# 第 3 章:使用 Nmap、Scapy 和 Python 识别目标
# 三、使用 Nmap、Scapy 和 Python 识别目标
目标识别、网络监视和主动侦察都是您可以看到的相互替代的术语,用于描述评估环境的初始过程。根据您使用的框架,例如 PTE、自定义公司方法或其他行业标准,这些术语的含义可能不同。需要记住的重要一点是,您正在查看哪些主机处于批准的范围内,以及它们具有哪些开放和响应的服务、端口和功能。
......@@ -102,7 +102,7 @@ UDP 与监听端口建立通信流。该端口接受数据,并根据需要在
# 理解 Nmap
如果有一个工具在大多数顶级和新的评估工具包中无处不在,那就是 nmap。您可能会发现不同的利用框架、web 应用程序工具和其他首选项,但 nmap 是许多评估形式的主要工具。现在,这并不是说没有其他工具可以使用类似的功能执行;只是他们没有那么能干。这包括 Angyip、HPing、FPing、NetScan、Unicorn scan 等工具。从所有这些工具中,只有两个明显不同,它们是 HPing 和 Unicorn scan。
如果有一个工具在大多数顶级和新的评估工具包中无处不在,那就是 nmap。您可能会发现不同的利用框架、web 应用工具和其他首选项,但 nmap 是许多评估形式的主要工具。现在,这并不是说没有其他工具可以使用类似的功能执行;只是他们没有那么能干。这包括 Angyip、HPing、FPing、NetScan、Unicorn scan 等工具。从所有这些工具中,只有两个明显不同,它们是 HPing 和 Unicorn scan。
我看到新评估员在使用 nmap 时犯的最大错误是一次从同一主机执行多个扫描。他们没有意识到的是,nmap 使用主机操作系统的集成 TCP/IP 堆栈。这意味着执行的任何附加扫描都不会加快结果的速度;相反,操作系统 TCP/IP 堆栈必须同时处理多个会话。这反过来不仅会减慢每次扫描的结果,还会增加错误,因为每个接收到的数据包都会影响结果,具体取决于它接收到的实例。
......
# 第四章,用 Python 执行凭证攻击
# 四、使用 Python 执行凭证攻击
有多种形式的凭证攻击,但通常情况下,它们被视为渗透测试中的最后一步,而其他一切都失败了。这是因为大多数新的评估员以错误的方式进行评估。在讨论全新的评估员使用什么进行凭据攻击时,最常见的两种攻击是在线字典攻击和暴力攻击。他们通过下载包含密码和广泛用户名列表的巨大单词列表并在接口上运行来执行凭据攻击。当攻击失败时,评估员跟进并执行暴力攻击。
......
# 第五章:利用 Python 开发服务
# 五、使用 Python 利用服务
今天,渗透测试和利用服务的一个重大误解是,普遍存在可利用的**远程代码执行****RCE**漏洞。事实是,找到数百个只需要一个**互联网协议****IP**地址就可以插入工具的容易利用的服务的日子已经一去不复返了。您仍然会发现可以通过溢出堆栈或堆来利用的漏洞,它们只是显著减少或更复杂。我们将在[第 8 章](08.html#aid-1T1401 "Chapter 8. Exploit Development with Python, Metasploit, and Immunity")中解释为什么在今天的软件中更难利用这些漏洞,*使用 Python、Metasploit 和免疫进行漏洞开发*,不用担心,我们会说到这一点。
今天,渗透测试和利用服务的一个重大误解是,普遍存在可利用的**远程代码执行****RCE**漏洞。事实是,找到数百个只需要一个**互联网协议****IP**地址就可以插入工具的容易利用的服务的日子已经一去不复返了。您仍然会发现可以通过溢出堆栈或堆来利用的漏洞,它们只是显著减少或更复杂。我们将在[第 8 章](08.html#aid-1T1401 "Chapter 8. Exploit Development with Python, Metasploit, and Immunity")中解释为什么在今天的软件中更难利用这些漏洞,*使用 Python、Metasploit 和Immunity进行漏洞开发*,不用担心,我们会说到这一点。
因此,如果您希望每次都进入网络并利用 Microsoft 安全公告 MS08-067、MS03-024 或 MS06-40 获得立足点,那么您就大错特错了。不要担心,它们仍然存在,但不是在每个主机上都能找到它,而是在网络中可能有一个系统与它在一起。更糟糕的是,对于我们这些模拟的恶意参与者来说,它甚至可能无法让我们进入一个盒子,让我们能够继续参与。通常,它是一个遗留系统或供应商产品,甚至没有使用不同的凭据集连接到域。现在,这并不是说,情况总是这样。
......
此差异已折叠。
# 第七章用蟒蛇破围
# 七、使用 Python 破解边界
大多数评估人员必须面对的最困难的事情是找到一种方法,在不欺骗组织公众的情况下,通过互联网进入内部网络。偶尔会有广泛暴露的网络,但大多数组织已经学会了收紧外部边界。不幸的是,仍然存在一个系统性的问题,即硬的外部,然后是带有灯光监控控制的软的内部,其结构不足以防止真正的恶意参与者破坏资源。这意味着我们应该模拟恶意参与者执行的活动来破解外围。这反过来意味着要了解今天的典型周界。
......@@ -14,7 +14,7 @@
## 网络应用
从安全工程师多年来提出的评估、妥协和建议来看,如今公开服务的主要例子是 web 应用程序。这些应用程序可以位于多种端口上,包括非标准端口。它们通常是负载平衡的,并且可能通过复杂的**内容交付网络****CDN**)提供服务,这些网络可以有效地为请求用户群附近的服务器提供的材料的缓存版本提供服务。此外,这些应用程序可以通过虚拟化平台提供服务,虚拟化平台是提供商环境中其他系统的沙盒。因此,即使您破解了 web 应用程序,也可能无法访问目标网络。如果您想知道为什么在破解 web 应用程序系统后无法取得任何进展,请记住这一点。还要确保您有权测试不受客户端控制的网络。
从安全工程师多年来提出的评估、妥协和建议来看,如今公开服务的主要例子是 web 应用。这些应用可以位于多种端口上,包括非标准端口。它们通常是负载平衡的,并且可能通过复杂的**内容交付网络****CDN**)提供服务,这些网络可以有效地为请求用户群附近的服务器提供的材料的缓存版本提供服务。此外,这些应用可以通过虚拟化平台提供服务,虚拟化平台是提供商环境中其他系统的沙盒。因此,即使您破解了 web 应用,也可能无法访问目标网络。如果您想知道为什么在破解 web 应用系统后无法取得任何进展,请记住这一点。还要确保您有权测试不受客户端控制的网络。
## 加密远程访问服务
......@@ -48,7 +48,7 @@
# 使用打嗝套件破解收件箱
[第 6 章](06.html#aid-1HIT81 "Chapter 6. Assessing Web Applications with Python")*中,我们重点介绍了如何使用 Burp Suite 运行密码喷雾,并使用 Python*评估 Web 应用程序。Burp 套件的最佳目标之一是面向互联网的**Outlook Web Access****OWA**接口。这是您可以执行的最简单的攻击之一,但也是最响亮的攻击之一。如前几章所述,您应该始终减少点击收件箱的时间,并使用符合 Active Directory 复杂性要求的非常常见的密码。
[第 6 章](06.html#aid-1HIT81 "Chapter 6. Assessing Web Applications with Python")*中,我们重点介绍了如何使用 Burp Suite 运行密码喷雾,并使用 Python*评估 Web 应用。Burp 套件的最佳目标之一是面向互联网的**Outlook Web Access****OWA**接口。这是您可以执行的最简单的攻击之一,但也是最响亮的攻击之一。如前几章所述,您应该始终减少点击收件箱的时间,并使用符合 Active Directory 复杂性要求的非常常见的密码。
一旦您识别出与以前的请求相比具有不同字节大小的响应,可能会突出显示您已找到具有有效凭据集的活动收件箱。使用这些详细信息访问收件箱并查找关键数据。关键数据包括任何可能被视为对公司敏感的数据,这些数据将突出领导层面临的风险,或表明需要立即或计划开展活动,以弥补上述风险。它还包括允许您访问组织本身的任何内容。
......
# 第 8 章。利用 Python、Metasploit 和免疫进行开发
# 八、Python、Metasploit 和 Immunity 利用开发
在研究过程中或在罕见的参与中,您可能需要开发或修改漏洞利用以满足您的需求。Python 是一种非常棒的语言,它可以快速生成代码原型,用于测试漏洞,或者帮助将来修改 Metasploit 模块。本章重点介绍编写利用漏洞的方法,而不是如何为这些软件产品创建特定的利用漏洞,以便需要更多的测试来提高可靠性。首先,我们需要了解**中央处理单元****CPU**)如何注册,以及 Windows 内存在可执行文件运行时的结构。在此之前,在 Windows XP 运行模式**虚拟机****虚拟机**上,您需要一些工具来测试这一点。
### 注
在 Windows XP Run 上下载并安装以下组件:模式 VM、Python 2.7、Notepad++、免疫调试器、MinGW(包含所有基本软件包)和免费 MP3 CD 裂土器版本 1.0。还可以使用您当前的 Kali 构建来帮助生成我们将在本章中重点介绍的相关细节。
在 Windows XP Run 上下载并安装以下组件:模式 VM、Python 2.7、Notepad++、Immunity调试器、MinGW(包含所有基本软件包)和免费 MP3 CD 裂土器版本 1.0。还可以使用您当前的 Kali 构建来帮助生成我们将在本章中重点介绍的相关细节。
# 开始使用寄存器
......@@ -64,7 +64,7 @@ Windows**操作系统(OS)**内存结构有许多部分,可以分解为高
堆栈用于以有序方式进行短期本地存储。每次调用函数或线程时,都会为该函数或线程指定一个固定大小的唯一堆栈。函数或线程完成操作后,堆栈将被销毁。
另一方面,堆是以相对无序的方式分配全局变量和值的地方。堆由应用程序共享,内存区域实际上由应用程序或进程管理。一旦应用程序终止,就会释放特定的内存区域。在本例中,我们攻击的是堆栈,而不是堆。
另一方面,堆是以相对无序的方式分配全局变量和值的地方。堆由应用共享,内存区域实际上由应用或进程管理。一旦应用终止,就会释放特定的内存区域。在本例中,我们攻击的是堆栈,而不是堆。
### 提示
......@@ -185,11 +185,11 @@ int main()
![Understanding the manipulation of the stack](../Images/image00375.jpeg)
有了这个基本的理解,我们就可以开始在一个创建糟糕的 C 程序上使用免疫调试器了。
有了这个基本的理解,我们就可以开始在一个创建糟糕的 C 程序上使用Immunity调试器了。
# 了解免疫
# 了解Immunity
我们需要先用免疫设置的方式启动。Immunition 是一个基于 Python 的很棒的调试器。许多包含 Mona 的插件都是用 Python 编写的,这意味着如果需要更改某些内容,只需修改脚本即可。免疫的主屏幕分为四个部分,当您钩住一个进程或执行一个程序时,您可以看到详细信息的输出,如下所示。
我们需要先用Immunity设置的方式启动。Immunition 是一个基于 Python 的很棒的调试器。许多包含 Mona 的插件都是用 Python 编写的,这意味着如果需要更改某些内容,只需修改脚本即可。Immunity的主屏幕分为四个部分,当您钩住一个进程或执行一个程序时,您可以看到详细信息的输出,如下所示。
![Understanding immunity](../Images/image00376.jpeg)
......@@ -220,7 +220,7 @@ int main (int argc, char *argv[])
![Understanding basic buffer overflow](../Images/image00378.jpeg)
现在,启动免疫并使用参数测试打开`username_test.exe`二进制文件,如下所示。这在功能上与 Python 脚本和从命令行运行它的功能相同,这意味着您可以监视调试器的输出。
现在,启动Immunity并使用参数测试打开`username_test.exe`二进制文件,如下所示。这在功能上与 Python 脚本和从命令行运行它的功能相同,这意味着您可以监视调试器的输出。
![Understanding basic buffer overflow](../Images/image00379.jpeg)
......@@ -276,7 +276,7 @@ writeFile.write(exploit)
writeFile.close()
```
此脚本将用 4000 As、1000 Bs 和 1000 Cs 填充恶意 wave 文件。现在,打开具有免疫功能的程序,如下所示:
此脚本将用 4000 As、1000 Bs 和 1000 Cs 填充恶意 wave 文件。现在,打开具有Immunity功能的程序,如下所示:
![Writing a basic buffer overflow exploit](../Images/image00383.jpeg)
......@@ -292,7 +292,7 @@ writeFile.close()
![Writing a basic buffer overflow exploit](../Images/image00386.jpeg)
此外,我们看到在 EBX、EBP、ESI 和 EDI 中有 Bs,但是 ESP 呢?我们需要找到放置外壳代码的空间,最简单的方法是使用 ESP。因此,我们要做的是转储该寄存器的内容。您可以通过右键单击寄存器并查看免疫系统左下角窗格中的详细信息,如两个图像组件所示。
此外,我们看到在 EBX、EBP、ESI 和 EDI 中有 Bs,但是 ESP 呢?我们需要找到放置外壳代码的空间,最简单的方法是使用 ESP。因此,我们要做的是转储该寄存器的内容。您可以通过右键单击寄存器并查看Immunity系统左下角窗格中的详细信息,如两个图像组件所示。
![Writing a basic buffer overflow exploit](../Images/image00387.jpeg)
......@@ -356,7 +356,7 @@ writeFile.close()
* 换行符(“\x0A”)
* 回车(“\x0D”)
其他字符可以通过使用潜在坏字符列表模糊应用程序来测试。将这些字符集列表从“\x00”注入“\xFF”。当您看到应用程序崩溃时,您已经识别出一个坏字符。从元组中删除字符,存储值,然后重试。一旦执行此操作而没有通过坏角色破坏攻击,您就已经确定了所有可行的坏角色。在确定剩余堆栈空间和偏移量有多大之后,我们可以测试坏字符。
其他字符可以通过使用潜在坏字符列表模糊应用来测试。将这些字符集列表从“\x00”注入“\xFF”。当您看到应用崩溃时,您已经识别出一个坏字符。从元组中删除字符,存储值,然后重试。一旦执行此操作而没有通过坏角色破坏攻击,您就已经确定了所有可行的坏角色。在确定剩余堆栈空间和偏移量有多大之后,我们可以测试坏字符。
接下来是堆栈偏移空间的标识。在利用漏洞脚本中,将外壳代码放在 EIP 值之后是无效的。这可能会导致字符读取顺序错误,进而导致外壳代码失败。
......@@ -374,7 +374,7 @@ with open("exploit.wav", "w") as text_file:
text_file.write(data)
```
然后我们运行相同的`pattern_create.rb`脚本,但只使用 1000 个字符,而不是 5000 个字符。将输出数据粘贴到数据变量中并运行生成器脚本。将`exploit.wav`文件加载到程序中,同时对其进行免疫监视,如前所述。当程序再次崩溃时,请查看 ESP 的转储。
然后我们运行相同的`pattern_create.rb`脚本,但只使用 1000 个字符,而不是 5000 个字符。将输出数据粘贴到数据变量中并运行生成器脚本。将`exploit.wav`文件加载到程序中,同时对其进行Immunity监视,如前所述。当程序再次崩溃时,请查看 ESP 的转储。
![Writing a basic buffer overflow exploit](../Images/image00395.jpeg)
......
# 第 9 章:用 Python 自动化报告和任务
# 九、使用 Python 自动化报告和任务
在前面的章节中,我们介绍了大量的信息,这些信息强调了 Python 可以在哪些方面帮助优化技术现场工作。我们甚至展示了一些方法,可以使用 Python 将后续任务从一个流程自动化到另一个流程。每一项都将帮助你更好地将时间花在优先任务上。这一点很重要,因为有三个因素可能会限制渗透测试的成功完成:评估员完成评估的时间、渗透测试范围的限制以及评估员的技能。在本章中,我们将向您展示如何自动化任务,例如解析**可扩展标记语言****XML**)以从工具数据生成报告。
......@@ -98,7 +98,7 @@ Python 的创建者 Guido van Rossum 在一篇博客文章中回应了一些与
`__init__`函数是类实例化期间使用的函数。这意味着调用一个类来创建一个对象,该对象可以作为变量通过正在运行的脚本引用。`__init__`函数帮助定义该对象的初始细节,它基本上充当 Python 类的构造函数。为了更好地理解这一点,`__del__`函数正好相反,因为它是 Python 中的析构函数。
如果函数要使用实例的详细信息,则传递的第一个参数必须是一致的变量,通常称为`self`。如果你愿意,你可以叫它别的名字,但那不是蟒蛇。如果函数没有此变量,则不能在该函数中直接使用实例化的值。`__init__`函数中`self`变量后面的所有值都是在实例化过程中直接传递给类的值。其他语言通过隐藏参数传递这些值;Python 使用`self`实现这一点。现在您已经了解了 Python 脚本的基本知识,我们可以开始构建解析脚本了。
如果函数要使用实例的详细信息,则传递的第一个参数必须是一致的变量,通常称为`self`。如果你愿意,你可以叫它别的名字,但那不是Python。如果函数没有此变量,则不能在该函数中直接使用实例化的值。`__init__`函数中`self`变量后面的所有值都是在实例化过程中直接传递给类的值。其他语言通过隐藏参数传递这些值;Python 使用`self`实现这一点。现在您已经了解了 Python 脚本的基本知识,我们可以开始构建解析脚本了。
## 创建 Python 脚本解析 Nmap XML
......
# 第 10 章:为 Python 工具添加永久性
# 十、为 Python 工具添加永久性
Python 具有巨大的功能,作为评估人员,我们只触及了可用工具和技术的表面。我们将介绍 Python 语言中一些对我们有帮助的更高级的特性。具体来说,我们将重点介绍如何将日志构建到脚本中,然后开发多线程和多处理工具。添加这些更高级的功能意味着您开发的工具将更能经受时间的考验,并且与其他解决方案不同。
......@@ -16,7 +16,7 @@ Python 具有巨大的功能,作为评估人员,我们只触及了可用工
### 提示
如果您回顾[第 8 章](08.html#aid-1T1401 "Chapter 8. Exploit Development with Python, Metasploit, and Immunity")*利用 Python、Metasploit 和免疫*进行开发,并查看 Windows 内存的定义区域,您将更好地了解线程和进程在 Windows 内存结构中的工作方式。请记住,其他**操作系统****操作系统**处理这些内存位置的方式是不同的。
如果您回顾[第 8 章](08.html#aid-1T1401 "Chapter 8. Exploit Development with Python, Metasploit, and Immunity")*利用 Python、Metasploit 和Immunity*进行开发,并查看 Windows 内存的定义区域,您将更好地了解线程和进程在 Windows 内存结构中的工作方式。请记住,其他**操作系统****操作系统**处理这些内存位置的方式是不同的。
## 用 Python 创建多线程脚本
......@@ -30,9 +30,9 @@ Python 具有巨大的功能,作为评估人员,我们只触及了可用工
### 注
对于多线程 Python 应用程序,您将听到一个称为**线程安全**的术语。这意味着,“某个线程是否可以修改某个内容而不影响数据的完整性或可用性?”即使某个内容被认为不是**线程安全的**,您也可以使用锁(稍后将介绍)根据需要控制数据输入。
对于多线程 Python 应用,您将听到一个称为**线程安全**的术语。这意味着,“某个线程是否可以修改某个内容而不影响数据的完整性或可用性?”即使某个内容被认为不是**线程安全的**,您也可以使用锁(稍后将介绍)根据需要控制数据输入。
我们将使用之前在[第 6 章](06.html#aid-1HIT81 "Chapter 6. Assessing Web Applications with Python")中创建的`head_request.py`脚本,*使用 Python*评估 Web 应用程序,并将其作为一个新脚本进行成熟。此脚本将使用队列来保存所有需要处理的任务,这些任务将在执行期间动态分配。该队列是通过从文件中读取值并存储这些值以供以后处理而构建的。我们将合并新的记录器库,以便在脚本执行时将详细信息输出到`results.log` 文件。以下屏幕截图显示了此新脚本执行后的结果:
我们将使用之前在[第 6 章](06.html#aid-1HIT81 "Chapter 6. Assessing Web Applications with Python")中创建的`head_request.py`脚本,*使用 Python*评估 Web 应用,并将其作为一个新脚本进行成熟。此脚本将使用队列来保存所有需要处理的任务,这些任务将在执行期间动态分配。该队列是通过从文件中读取值并存储这些值以供以后处理而构建的。我们将合并新的记录器库,以便在脚本执行时将详细信息输出到`results.log` 文件。以下屏幕截图显示了此新脚本执行后的结果:
![Creating a multithreaded script in Python](../Images/image00435.jpeg)
......@@ -78,7 +78,7 @@ class Agent(threading.Thread):
target_secure = "https://" + host
```
从这里开始,我们将处理主机潜在网站的不安全和安全版本。以下代码用于网站的不安全部分,其工作类似于[第 6 章](06.html#aid-1HIT81 "Chapter 6. Assessing Web Applications with Python")*使用 Python*评估 Web 应用程序中突出显示的脚本。唯一的区别在于,我们添加了新的记录器功能,以将详细信息打印到结果日志文件中。正如您在下面的代码中所看到的,将详细信息写入记录器与写入 print 语句几乎相同。您还将注意到,我们使用了`with`语句来锁定线程进程,以便打印详细信息。这对于 I**/O**是不必要的,但如果不是这样,则很难阅读:
从这里开始,我们将处理主机潜在网站的不安全和安全版本。以下代码用于网站的不安全部分,其工作类似于[第 6 章](06.html#aid-1HIT81 "Chapter 6. Assessing Web Applications with Python")*使用 Python*评估 Web 应用中突出显示的脚本。唯一的区别在于,我们添加了新的记录器功能,以将详细信息打印到结果日志文件中。正如您在下面的代码中所看到的,将详细信息写入记录器与写入 print 语句几乎相同。您还将注意到,我们使用了`with`语句来锁定线程进程,以便打印详细信息。这对于 I**/O**是不必要的,但如果不是这样,则很难阅读:
```
try:
......@@ -183,7 +183,7 @@ Python 有许多库可以支持并发性,从而简化编码。例如,使用
* 对象序列化
* 并行写入或读取数据并处理锁
* 具有相关并行性的操作系统细微差别**应用程序接口****API**
* 具有相关并行性的操作系统细微差别**应用接口****API**
* 将当前脚本(线程或非线程脚本)转换为利用并行性的脚本
在用 Python 编写多处理脚本时,最大的障碍是处理对象的序列化(称为 pickle)和反序列化(称为 unpickle)。当您编写自己的与多处理相关的代码时,可能会看到对 pickle 库的引用错误。这意味着您遇到了与数据序列化方式相关的问题。
......@@ -375,7 +375,7 @@ if __name__ == '__main__':
# 建筑行业标准工具
Python 是一种奇妙的语言,这些高级技术强调控制线程、进程、I/O 和日志记录,对于为脚本添加永久性至关重要。业内有很多例子可以帮助评估安全性,比如 Sulley。这是一个自动化应用程序模糊化的工具,旨在帮助识别安全弱点,其结果可用于编写 Metasploit 等框架。其他工具通过改进代码库帮助强化安全性,例如**开放式 Web 应用程序安全项目的****OWASP**Python 安全项目。这些都是一些工具的例子,这些工具一开始是为了满足缺失的需求,后来获得了强大的追随者。这里提到这些工具是为了突出您的工具在正确的重点下可以成为什么。
Python 是一种奇妙的语言,这些高级技术强调控制线程、进程、I/O 和日志记录,对于为脚本添加永久性至关重要。业内有很多例子可以帮助评估安全性,比如 Sulley。这是一个自动化应用模糊化的工具,旨在帮助识别安全弱点,其结果可用于编写 Metasploit 等框架。其他工具通过改进代码库帮助强化安全性,例如**开放式 Web 应用安全项目的****OWASP**Python 安全项目。这些都是一些工具的例子,这些工具一开始是为了满足缺失的需求,后来获得了强大的追随者。这里提到这些工具是为了突出您的工具在正确的重点下可以成为什么。
### 提示
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册