可以增强前面讨论的相同代码库,以开发基于 web 的漏洞扫描程序版本,同时具有端口扫描和服务扫描功能。该工具有许多不同的功能,包括一个四层体系结构,它有一个 web 层表示、一个 web 层服务器、一个 API 层和一个 DB 层。从 GitHub 存储库[下载并安装该工具的 web 版本 https://github.com/FurqanKhan1/Dictator/wiki](https://github.com/FurqanKhan1/Dictator/wiki) 。或者,您可以使用即插即用虚拟机,只需登录并在`https://127.0.0.1:8888`打开浏览器即可访问该工具。
可以增强前面讨论的相同代码库,以开发基于 web 的漏洞扫描器版本,同时具有端口扫描和服务扫描功能。该工具有许多不同的功能,包括一个四层体系结构,它有一个 web 层表示、一个 web 层服务器、一个 API 层和一个 DB 层。从 GitHub 存储库[下载并安装该工具的 web 版本 https://github.com/FurqanKhan1/Dictator/wiki](https://github.com/FurqanKhan1/Dictator/wiki) 。或者,您可以使用即插即用虚拟机,只需登录并在`https://127.0.0.1:8888`打开浏览器即可访问该工具。
如今,**机器学习**(**ML**是我们经常遇到的一个术语。在本章中,我们将概述 ML 到底是什么,它解决了什么样的问题,以及它在网络安全生态系统中可以有什么样的应用。我们还将研究各种不同类型的 ML 模型,以及在哪些情况下可以使用哪些模型。应该注意的是,本书的范围不是详细介绍 ML,而是提供对 ML 及其在网络安全领域中的应用的坚实理解。
...
...
@@ -367,7 +367,7 @@ from sklearn.feature_extraction.text import CountVectorizer
在上一个屏幕截图中,我们可以看到一个 ID 为`9`的新任务已经创建,它正在扫描本地托管的易受攻击的 Web 应用程序。截图时,任务能够识别四个高问题、十个中问题和三个低问题。在下一节中,我们可以看到如何让扫描仪不断告诉我们扫描的状态。为了做到这一点,我们需要设置一个回调 URL。换句话说,我们需要一个监听端口,扫描仪将不断地发送结果。我们可以在控制台上按如下方式打印:
在上一个屏幕截图中,我们可以看到一个 ID 为`9`的新任务已经创建,它正在扫描本地托管的易受攻击的 Web 应用。截图时,任务能够识别四个高问题、十个中问题和三个低问题。在下一节中,我们可以看到如何让扫描仪不断告诉我们扫描的状态。为了做到这一点,我们需要设置一个回调 URL。换句话说,我们需要一个监听端口,扫描仪将不断地发送结果。我们可以在控制台上按如下方式打印:
```
curl -vgw "\n" -X POST 'http://127.0.0.1:1337/Sm2fbfwrTQVqwH3VERLKIuXkiVbAwJgm/v0.1/scan' -d '{"application_logins":[{"password":"password","username":"admin"}],"scan_callback":{"url":"http://127.0.0.1:8000"},"scope":{"exclude":[{"rule":"http://192.168.250.1/dvwa/logout.php","type":"SimpleScopeDef"}],"include":[{"rule":"http://192.168.250.1/dvwa/","type":"SimpleScopeDef"}]},"urls":["http://192.168.250.1/dvwa/"]}'
...
...
@@ -179,9 +179,9 @@ obj.start()
# SQL 注入
**SQL 注入攻击**是一种攻击,使用该攻击可以更改 SQL 查询的执行以满足攻击者的需要。web 应用程序可能在后端与数据库进行交互,它可能会接受用户输入,这些输入构成参数或将要执行的 SQL 查询的一部分,以插入、删除、更新或检索数据库表中的数据。在这种情况下,开发人员必须非常小心,不要将用户提供的参数直接传递给后端数据库系统,因为这可能导致 SQL 注入。开发人员必须确保使用参数化查询。假设我们在应用程序上有一个登录页面,该页面接受用户的用户名和密码,并将此信息传递给支持的 SQL 查询:`select * from users where email ='"+request.POST['email']+"' and password ='"+request.POST['password']"`。
**SQL 注入攻击**是一种攻击,使用该攻击可以更改 SQL 查询的执行以满足攻击者的需要。web 应用可能在后端与数据库进行交互,它可能会接受用户输入,这些输入构成参数或将要执行的 SQL 查询的一部分,以插入、删除、更新或检索数据库表中的数据。在这种情况下,开发人员必须非常小心,不要将用户提供的参数直接传递给后端数据库系统,因为这可能导致 SQL 注入。开发人员必须确保使用参数化查询。假设我们在应用上有一个登录页面,该页面接受用户的用户名和密码,并将此信息传递给支持的 SQL 查询:`select * from users where email ='"+request.POST['email']+"' and password ='"+request.POST['password']"`。
继续上一章的讨论,我们现在将学习如何使用 Python 自动检测**跨站点脚本**(**XSS**)、**跨站点请求伪造**(**CSRF**)、点击劫持和**安全套接字层**(【T10 SSL】)剥离。我们将在本章中讨论的所有技术都将帮助我们加快 web 应用程序评估过程。我建议您不要局限于我们将在本章中讨论的方法。讨论的方法可以作为基线,同样的想法可以扩展和改进,以获得更好的解决方案或开发工具来帮助笔测试社区。本章将讨论以下主题:
继续上一章的讨论,我们现在将学习如何使用 Python 自动检测**跨站点脚本**(**XSS**)、**跨站点请求伪造**(**CSRF**)、点击劫持和**安全套接字层**(【T10 SSL】)剥离。我们将在本章中讨论的所有技术都将帮助我们加快 web 应用评估过程。我建议您不要局限于我们将在本章中讨论的方法。讨论的方法可以作为基线,同样的想法可以扩展和改进,以获得更好的解决方案或开发工具来帮助笔测试社区。本章将讨论以下主题:
* 跨站点脚本
* 跨站点请求伪造
...
...
@@ -9,7 +9,7 @@
# XSS
**XSS**攻击属于 web 应用攻击的注入类。它们主要是由于没有清理从最终用户传递到 web 应用程序的用户输入而导致的。这不会导致服务器受到危害,但对用户数据的危害是非常严重的。当攻击者能够将某种 Java 脚本或 HTML 内容注入将提供给用户的网页时,就会发生攻击。此恶意内容可能试图从访问网站的用户处窃取敏感信息。在以下部分中,我们将了解不同类型的 XSS 攻击。
**XSS**攻击属于 web 应用攻击的注入类。它们主要是由于没有清理从最终用户传递到 web 应用的用户输入而导致的。这不会导致服务器受到危害,但对用户数据的危害是非常严重的。当攻击者能够将某种 Java 脚本或 HTML 内容注入将提供给用户的网页时,就会发生攻击。此恶意内容可能试图从访问网站的用户处窃取敏感信息。在以下部分中,我们将了解不同类型的 XSS 攻击。
# 存储或类型 1 XSS 攻击
...
...
@@ -27,7 +27,7 @@
# 用 Python 实现 XSS 的自动检测
在这里,我们将看到一种使用 Python、Beautifulsoup、Selenium 和 Phantomjs 在 web 应用程序中自动检测 XS 的方法。
在这里,我们将看到一种使用 Python、Beautifulsoup、Selenium 和 Phantomjs 在 web 应用中自动检测 XS 的方法。
当我们谈到 web 应用程序扫描时,我们经常会遇到爬虫,它们内置在我们用于 web 应用程序扫描的自动扫描工具中。Burp Suite、Acunetix、web inspect 等工具都有出色的爬虫程序,可以在 web 应用程序中进行爬网,并尝试针对爬网 URL 的各种攻击向量。在本章中,我们将了解爬虫是如何工作的,以及在引擎盖下会发生什么。本章的目的是让用户了解爬虫如何收集所有信息并形成各种攻击的攻击面。同样的知识可以在以后用于开发一个自定义工具,该工具可以自动化 web 应用程序扫描。在本章中,我们将创建一个自定义网络爬虫程序,该程序将在网站中爬行,并为我们提供一个包含以下内容的列表:
当我们谈到 web 应用扫描时,我们经常会遇到爬虫,它们内置在我们用于 web 应用扫描的自动扫描工具中。Burp Suite、Acunetix、web inspect 等工具都有出色的爬虫程序,可以在 web 应用中进行爬网,并尝试针对爬网 URL 的各种攻击向量。在本章中,我们将了解爬虫是如何工作的,以及在引擎盖下会发生什么。本章的目的是让用户了解爬虫如何收集所有信息并形成各种攻击的攻击面。同样的知识可以在以后用于开发一个自定义工具,该工具可以自动化 web 应用扫描。在本章中,我们将创建一个自定义网络爬虫程序,该程序将在网站中爬行,并为我们提供一个包含以下内容的列表:
* 网页
* HTML 表单
* 每个表单中的所有输入字段
我们将了解如何以两种模式抓取 web 应用程序:
我们将了解如何以两种模式抓取 web 应用:
* 未经认证
* 通过身份验证
我们将在 Django(Python 的 web 应用程序框架)中开发一个小型 GUI,使用户能够在测试应用程序上进行爬行。必须注意的是,本章的主要重点是爬虫程序的工作原理,因此我们将详细讨论爬虫程序代码。我们不会把重点放在 Django web 应用程序的工作上。为此,本章末尾将提供参考链接。我将在 GitHub 存储库中共享整个代码库,供读者下载和执行,以便更好地了解应用程序。
我们将在 Django(Python 的 web 应用框架)中开发一个小型 GUI,使用户能够在测试应用上进行爬行。必须注意的是,本章的主要重点是爬虫程序的工作原理,因此我们将详细讨论爬虫程序代码。我们不会把重点放在 Django web 应用的工作上。为此,本章末尾将提供参考链接。我将在 GitHub 存储库中共享整个代码库,供读者下载和执行,以便更好地了解应用。
如前所述,我们有一个用户界面,用于收集要爬网的 web 应用程序的用户参数。因此,请求被转发到`views.py`文件,从那里我们将调用爬虫驱动程序文件`run_crawler.py`,该文件将依次调用`crawler.py`。`new_scan`视图方法获取所有用户参数,将其保存在数据库中,并为爬网项目分配新的项目 ID。然后将项目 ID 传递给爬虫驱动程序,让爬虫驱动程序在 ID 的帮助下引用并拉取相关项目参数,然后将其传递给`crawler.py`开始扫描。
如前所述,我们有一个用户界面,用于收集要爬网的 web 应用的用户参数。因此,请求被转发到`views.py`文件,从那里我们将调用爬虫驱动程序文件`run_crawler.py`,该文件将依次调用`crawler.py`。`new_scan`视图方法获取所有用户参数,将其保存在数据库中,并为爬网项目分配新的项目 ID。然后将项目 ID 传递给爬虫驱动程序,让爬虫驱动程序在 ID 的帮助下引用并拉取相关项目参数,然后将其传递给`crawler.py`开始扫描。
在某些情况下,某些页面将返回重定向(`3XX`响应代码),我们需要适当地保存 URL 和表单内容。假设我们向第 X 页提出了一个`GET`请求,作为回应,我们有三份表格。理想情况下,我们将使用标记为 X 的 URL 保存这些表单。但是,假设在第 X 页上发出`GET`请求时,我们得到了到第 Y 页的 302 重定向,并且响应 HTML 实际上属于设置重定向的网页。在这种情况下,我们将最终保存用 URL X 映射的三个表单的响应内容,这是不正确的。因此,在第(20)和(21)节中,我们正在处理这些重定向,并将响应内容映射到适当的 URL:
在本章中,我们讨论了 Linux 中的逆向工程。我们还使用 Python 研究了模糊化。我们在 Linux 调试器(`edb`和`gdb`的上下文中研究了汇编语言和助记符。我们详细讨论了堆栈缓冲区溢出,并了解了堆缓冲区溢出和字符串格式漏洞的概念。我强烈建议在这些想法上花费大量时间,并在不同的操作系统版本和易受攻击的应用程序上探索它们。在本章结束时,您应该对 Linux 环境中的缓冲区溢出漏洞和反转有了相当的了解。
在本章中,我们讨论了 Linux 中的逆向工程。我们还使用 Python 研究了模糊化。我们在 Linux 调试器(`edb`和`gdb`的上下文中研究了汇编语言和助记符。我们详细讨论了堆栈缓冲区溢出,并了解了堆缓冲区溢出和字符串格式漏洞的概念。我强烈建议在这些想法上花费大量时间,并在不同的操作系统版本和易受攻击的应用上探索它们。在本章结束时,您应该对 Linux 环境中的缓冲区溢出漏洞和反转有了相当的了解。
在下一章中,我们将讨论 Windows 环境中的反向工程和缓冲区溢出漏洞。我们将使用一个真实世界的应用程序演示利用。
在下一章中,我们将讨论 Windows 环境中的反向工程和缓冲区溢出漏洞。我们将使用一个真实世界的应用演示利用。
***免疫调试器**:这是在 Windows 环境中运行并调试 Windows 应用程序的最著名的调试器之一。可从[下载 https://www.immunityinc.com/products/debugger/](https://www.immunityinc.com/products/debugger/) 并作为可直接运行的可执行文件提供:
***免疫调试器**:这是在 Windows 环境中运行并调试 Windows 应用的最著名的调试器之一。可从[下载 https://www.immunityinc.com/products/debugger/](https://www.immunityinc.com/products/debugger/) 并作为可直接运行的可执行文件提供:
SLMail 5.5.0 邮件服务器软件中存在已知的缓冲区溢出漏洞。让我们下载应用程序(从以下 URL:[https://slmail.software.informer.com/5.5/ 双击`exe`安装程序,在 Windows 中安装](https://slmail.software.informer.com/5.5/)。安装后,在 Windows 7 虚拟机中运行它,如下所示:
SLMail 5.5.0 邮件服务器软件中存在已知的缓冲区溢出漏洞。让我们下载应用(从以下 URL:[https://slmail.software.informer.com/5.5/ 双击`exe`安装程序,在 Windows 中安装](https://slmail.software.informer.com/5.5/)。安装后,在 Windows 7 虚拟机中运行它,如下所示:
在本章中,我们学习了如何开发定制的利用 web 和网络服务的方法。我们还讨论了如何从防病毒软件中规避攻击。此外,我们还研究了各种 web 漏洞,如 LFI 和 RFI,并讨论了如何提升这些漏洞以从受害者那里获得反向外壳。重要的是要理解,开发利用漏洞需要很好地理解潜在的漏洞,我们应该始终尝试进行可重用的通用利用漏洞。请随意修改我们讨论过的利用漏洞代码,使其成为通用代码,并在其他应用程序中试用。
在本章中,我们学习了如何开发定制的利用 web 和网络服务的方法。我们还讨论了如何从防病毒软件中规避攻击。此外,我们还研究了各种 web 漏洞,如 LFI 和 RFI,并讨论了如何提升这些漏洞以从受害者那里获得反向外壳。重要的是要理解,开发利用漏洞需要很好地理解潜在的漏洞,我们应该始终尝试进行可重用的通用利用漏洞。请随意修改我们讨论过的利用漏洞代码,使其成为通用代码,并在其他应用中试用。