BurpSuite学习第六节--Intruder

一.Intruder的介绍

Burp intruder是一个强大的工具,用于自动对Web应用程序自定义的攻击。它可以用来自动执行您的测试过程中可能出现的所有类型的任务

要开始了解Burp Intruder,请执行以下步骤
  1. 首先,确保已安装并运行 Burp ,并且已将浏览器配置为与Burp一起使用
  2. 如果您还没有这样做,请浏览一些目标应用程序,以填充Burp的Target站点地图,其中包含应用程序内容和功能的详细信息。在这样做之前,为了加快速度,请转到Proxy选项卡,然后是Intercept子选项卡,并关闭Proxy拦截(如果按钮显示“Intercept is on”,则单击它以将拦截状态切换为off)
  3. 转到“代理”选项卡和“历史记录”子选项卡。查找包含许多参数的目标应用程序的有趣请求。选择此单个请求,然后从上下文菜单中选择“发送到入侵者”
  4. 转到入侵者选项卡。Burp Intruder允许您同时配置多个攻击。您发送给Intruder的每个请求都会在其自己的攻击选项卡中打开,默认情况下这些请求按顺序编号。您可以双击选项卡标题以重命名选项卡,拖动选项卡以重新排序它们,还可以关闭并打开新选项卡
  5. 在为您发送的请求创建的Intruder攻击选项卡中,查看Target和Positions选项卡
  6. Burp Intruder本质上是通过获取基本模板请求(您在那里发送的请求),循环通过多个攻击有效负载,将这些有效负载放入基本请求中的定义位置,并发出每个结果请求。“位置”选项卡用于配置将有效负载插入基本请求的位置。您可以看到Burp已经自动猜测了您希望定位有效负载的位置。默认情况下,有效负载被放入所有请求参数和cookie的值中。每对有效载荷标记定义单个有效载荷位置,并且可以包含来自基本请求的一些文本,当使用该有效载荷位置时,该文本将被有效载荷的内容替换
  7. 请求编辑器旁边的按钮可用于添加和清除有效负载标记。尝试在请求中的新位置添加有效负载标记,并删除其他标记,并查看效果。了解有效负载标记的工作方式后,单击“自动§”按钮可恢复为Burp为您配置的默认有效负载位置。如果您已修改了请求本身的文本,则可以重复步骤3以创建包含原始请求的新Intruder攻击选项卡
  8. 转到“有效负载”选项卡。这使您可以定义将放入定义的有效负载位置的有效负载。保持默认设置(使用有效负载的“简单列表”),并将一些测试字符串添加到列表中。您可以通过在“输入新项目”框中键入并单击“添加”来输入自己的字符串
  9. Professional 您可以使用“从列表添加”下拉列表,并从内置有效内容字符串列表中选择“Fuzzing - quick”
  10. 您现在已配置了启动攻击的最小选项。转到入侵者菜单,然后选择“开始攻击”
  11. 攻击将在包含“结果”选项卡中的表的新窗口中打开。结果表包含每个请求的条目,包括各种关键详细信息,例如使用的有效负载,HTTP状态代码,响应长度等。您可以选择表中的任何项目来查看完整的请求和响应。您还可以通过单击列标题对表进行排序,并使用过滤器栏过滤表的内容。这些功能的工作方式与代理历史记录的工作方式相同
  12. 攻击窗口包含其他选项卡,显示用于当前攻击的配置。攻击开始后,您可以修改大部分配置。转到选项选项卡,向下滚动到“Grep - 匹配”,然后选中“使用与这些表达式匹配的响应标记结果项”框。这将导致Intruder检查与列表中每个表达式匹配的项的响应,并标记具有匹配项的项。默认情况下,列表显示一些在模糊测试时很有用的常见错误字符串,但您可以根据需要配置自己的字符串。返回“结果”选项卡,查看Intruder是否为列表中的每个项添加了一列,其中包含指示是否在每个响应中找到表达式的复选框
  13. 现在选择表格中的任何项目并查看该项目的响应。在响应中查找有趣的字符串(例如页面标题或错误消息)。右键单击表中的项目,然后从上下文菜单中选择“从响应中定义提取grep”。在对话框中,选择响应中的有趣字符串,然后单击“确定”。结果表现在包含一个新列,该列从每个响应中提取此文本(在每种情况下可能不同)。您可以使用此功能在具有数千个响应的大型攻击中查找感兴趣的数据。请注意,您还可以在攻击之前或期间在“选项”选项卡中配置“提取grep”项
  14. 选择结果表中的任何项目,然后打开上下文菜单。选择“发送到中继器”,然后转到“中继器”选项卡。您将看到所选请求已复制到Repeater工具中,以便进一步测试。上下文菜单中提供了许多其他有用的选项
  15. 您可以使用结果窗口中的“保存”菜单来保存结果表或整个攻击。您可以将结果表加载到其他工具或电子表格程序中。您可以通过主Burp UI上的入侵者菜单重新加载已保存的攻击
  16. 这些步骤仅描述了Burp Intruder的一个简单用例,用于使用一些标准攻击字符串对请求进行模糊测试以及为错误消息进行grepping。您可以将Intruder用于许多不同类型的攻击,具有多种不同的有效负载和攻击选项

 

二.使用Burp Intruder

Burp Intruder是一种用于自动定制针对Web应用程序的攻击的工具。它功能强大且可配置,可用于执行大量任务,从简单的网络目录蛮力猜测到复杂的盲SQL注入漏洞的主动利用

入侵者如何运作

Burp Intruder通过获取HTTP请求(称为“基本请求”),以各种系统方式修改请求,发出请求的每个修改版本以及分析应用程序的响应来识别有趣的功能。
每次攻击,你必须指定的一组或多组有效载荷位置在基本请求,其中有效载荷将被放置。可以使用许多生成有效载荷的方法(包括字符串,数字,日期,蛮力,位翻转等简单列表)。可以使用不同的算法将有效载荷置于有效载荷位置。各种工具可用于帮助分析结果并识别有趣的项目以供进一步调查
 
典型用途
Burp Intruder是一个非常灵活的工具,可以帮助您在测试Web应用程序时自动执行各种任务。Intruder最常见的用例分为以下几类:

枚举标识符

Web应用程序经常使用标识符来引用数据和资源项; 例如,用户名,文档ID和帐号。通常,您需要循环遍历大量潜在标识符,以枚举哪些是有效的或值得进一步调查。要在Burp Intruder中执行此操作,您需要执行以下步骤:
  • 查找包含参数中的标识符的应用程序请求,以及响应指示标识符是否有效的位置。
  • 在参数的值处 配置单个有效负载位置
  • 使用正确的格式或方案,使用合适的有效负载类型生成要测试的潜在标识符。
  • 确定可以可靠地推断出有效标识符的响应功能,并相应地配置Burp。例如,如果有效标识符返回不同的HTTP状态代码或响应长度,则可以对此属性的攻击结果进行排序。或者,如果有效标识符返回包含特定表达式的响应,则可以定义匹配grep项以选择与此表达式匹配的响应

收获有用的数据

在许多情况下,您需要提取有关每个项目的一些有趣数据,以帮助您将精力集中在最关键的项目上,或者用于其他攻击,而不是简单地识别有效的标识符。要在Burp Intruder中执行此操作,您需要执行以下步骤:
  • 查找包含参数中的标识符的应用程序请求,以及响应包含有关所请求项目的有趣数据的位置。
  • 在参数的值处 配置单个有效负载位置
  • 使用正确的格式或方案,使用合适的有效负载类型生成要测试的潜在标识符。
  • 配置提取grep项以从每个响应中检索相关数据,并在攻击结果中列出该数据

模糊漏洞

许多基于输入的漏洞,例如SQL注入,跨站点脚本文件路径遍历,可以通过在请求参数中提交各种测试字符串,并分析应用程序对错误消息和其他异常的响应来检测。 您可以使用以下步骤自动使用Burp Intruder进行Web应用程序模糊测试:
  • 在所有请求参数的值处配置有效负载位置。
  • 使用简单列表有效内容类型。
  • 使用Burp的预定义有效负载列表之一配置有效负载列表,该列表包含常见的模糊字符串或您自己的攻击字符串列表。
  • 使用各种常见错误消息字符串 配置匹配grep项。match grep UI中的默认选项包含用于此目的的有用字符串列表。
  • 之后发动进攻,查看攻击结果,以确定有趣的错误和其他异常现象。您应该对每个匹配grep列以及其他相关列(例如响应长度,HTTP状态代码,响应计时器等)对结果表进行排序

配置攻击

主Intruder UI允许您同时配置多个攻击,每个攻击都在其自己的选项卡中。当您向Intruder发送请求时,每个请求都会在其自己的编号选项卡中打开。每个攻击配置选项卡都包含几个用于配置攻击的子选项卡。使用以下链接获取有关每个选项卡详细信息的帮助:
  • 目标 - 用于配置攻击的目标服务器的详细信息。
  • 位置 - 用于配置攻击的请求模板,有效负载位置和攻击类型(这决定了有效负载分配给有效负载位置的方式)。
  • 有效负载 - 用于配置一组或多组有效负载,这些有效负载将在攻击期间置于有效负载位置。
  • 选项 - 用于配置影响攻击的众多其他选项

Module1:Target

用于配置攻击的目标服务器的详细信息。所需的选项是:
  • Host:目标服务器的IP地址或主机名
  • Port:这是目标服务的端口号
  • Use HTTPS:指定的SSL是否应该被使用
配置这些详细信息的最简单方法是在Burp中的任何位置选择要攻击的请求,并在上下文菜单中选择“发送到入侵者”选项。这会将所选请求发送到Intruder中的新选项卡,并自动填充Target和Positions选项卡
 
Module2:Positions
此选项卡用于配置攻击的请求模板以及有效负载标记攻击类型(确定将有效负载分配给有效负载位置的方式)
设置Payloads的插入点以及攻击类型

 1.有效载荷标记

使用§字符放置有效负载标记,其功能如下:
  • 每对标记指定单个有效载荷位置。
  • 一对标记可以可选地将模板请求中的一些文本包含在它们之间。
  • 当为有效负载位置分配有效负载时,标记和任何封闭文本都将替换为有效负载。
  • 当有效负载位置没有指定的有效负载时,将删除标记,但随附的文本保持不变。

2.攻击类型

Burp Intruder支持各种攻击类型 - 这些类型决定了有效载荷分配给有效载荷位置的方式。可以使用请求模板编辑器上方的下拉列表选择攻击类型。可以使用以下攻击类型:
  • 狙击手 - 这使用一组有效载荷。它依次针对每个有效载荷位置,并依次将每个有效载荷放入该位置。未针对给定请求定位的位置不受影响 - 位置标记将被删除,并且模板中位于它们之间的任何封闭文本将保持不变。此攻击类型对于针对常见漏洞单独模糊大量请求参数非常有用。攻击中生成的请求总数是有效负载集中位置数和有效负载数的乘积。
  • Battering ram - 这使用一组有效负载。它迭代有效载荷,并将相同的有效载荷一次放入所有定义的有效载荷位置。当攻击要求在请求中的多个位置插入相同的输入时(例如,Cookie中的用户名和body参数),此攻击类型非常有用。攻击中生成的请求总数是有效负载集中的有效负载数。
  • 叉 - 这使用多个有效负载集。每个定义的位置都有不同的有效负载集(最多20个)。攻击同时迭代所有有效负载集,并将一个有效负载放入每个定义的位置。换句话说,第一个请求将第一个有效载荷从有效载荷集1放入位置1,第一个有效载荷从有效载荷集2放入位置2; 第二个请求将第二个有效载荷从有效载荷集1放入位置1,第二个有效载荷从有效载荷集2放入位置2,等等。当攻击需要在不同的地方插入不同但相关的输入时,这种攻击类型很有用。请求(例如,一个参数中的用户名,以及与另一个参数中的该用户名相对应的已知ID号)。
  • 集束炸弹 - 这使用多个有效负载集。每个定义的位置都有不同的有效负载集(最多20个)。攻击依次迭代每个有效载荷集,以便测试有效载荷组合的所有排列。即,如果有两个有效载荷位置,则攻击将把有效载荷集2中的第一个有效载荷放入位置2,并迭代位置1中有效载荷集1中的所有有效载荷; 然后,它将第二个有效载荷从有效载荷集2放入位置2,并迭代位置1中有效载荷集1中的所有有效载荷。当攻击需要在多个地方插入不同且无关或未知的输入时,此类攻击类型很有用。在请求中(例如,在猜测凭证时,一个参数中的用户名和另一个参数中的密码)
Attack type:攻击模式设置
  • sniper:对变量依次进行破解
  • battering ram:对变量同时进行破解
  • pitchfork:每一个变量标记对应一个字典,取每个字典的对应项
  • cluster bomb:每个变量对应一个字典,并且进行交集破解,尝试各种组合

Module3:Payloads

此选项卡用于配置一个或多个有效负载集。有效负载集的数量取决于“ 位置”选项卡中定义的攻击类型。对于许多常见任务,例如模糊测试参数,蛮力猜测用户密码或循环访问页面标识符,只需要一个有效负载集
配置有效负载集所需的配置步骤如下:
  • 从下拉列表中选择要配置的有效负载集。
  • 从下拉列表中 选择要使用的有效内容类型。可以使用大量有效负载类型,这些类型具有高度可配置性,允许您在几乎任何情况下快速自动生成有效负载。
  • 配置所选有效内容类型的有效内容选项
  • 配置任何进一步所需的有效负载处理,包括有效负载处理规则,以各种方式操作生成的有效负载,以及有效负载编码,以确保正确的字符是URL编码的,以便通过HTTP安全传输

选项1:Payload Sets

用于选项2的内容依据选项1的设置而改变,即不载讲述

选项3:Payload Processing
对生成的Payload进行编码,加密,截取等操作

选项4:Payload Encoding

 配置哪些有效载荷中的字符应该是URL编码的HTTP请求中的安全传输

Module4:攻击选项

此选项卡包含请求标头的入侵者攻击选项,请求引擎攻击结果grep匹配grep提取grep有效负载重定向。您可以在启动攻击之前在主Intruder UI中编辑这些选项,并且当攻击已经运行时,也可以在攻击窗口中修改大多数设置
 
选项1:Request Headers
这些设置控制Intruder是否在攻击期间更新配置的请求标头。请注意,您可以通过有效负载位置选项卡中的请求模板完全控制请求标头。这些选项可用于以通常有用的方式更新每个请求的标头。
可以使用以下选项:
  • 更新Content-Length标头 - 此选项使Intruder在每个请求中添加或更新Content-Length标头,并使用该特定请求的HTTP主体长度的正确值。此功能通常对于将可变长度有效负载插入模板HTTP请求主体的攻击至关重要。如果未指定正确的值,则目标服务器可能返回错误,可能响应不完整的请求,或者可能无限期地等待在请求中接收进一步的数据。
  • Set Connection:close - 此选项使Intruder添加或更新值为“close”的Connection标头。在某些情况下(当服务器本身不返回有效的Content-Length或Transfer-Encoding标头时),此选项可能允许更快地执行攻击

选项2:Request Engine

这些设置控制用于在Intruder攻击中发出HTTP请求的引擎。可以使用以下选项:
  • Professional 线程数 - 此选项控制攻击能够进行的并发请求数。
  • 网络故障的重试次数 - 如果发生连接错误或其他网络问题,Burp将在放弃和继续之前重试该请求指定的次数。测试时间歇性网络故障很常见,因此最好在发生故障时多次重试请求。
  • 重试前暂停 - 重试失败的请求时,Burp将在失败之后等待指定的时间(以毫秒为单位),然后重试。如果服务器被流量淹没,或者发生间歇性问题,最好等待一小段时间再重试。
  • 请求之间的节流 - 可选地,Burp可以在每个请求之前等待指定的延迟(以毫秒为单位)。此选项有助于避免应用程序过载或更隐蔽。或者,您可以配置可变延迟(具有给定的起始值和增量)。此选项可用于测试应用程序强制执行的会话超时间隔。
  • 开始时间 - 此选项允许您将攻击配置为立即启动,或在指定的延迟后启动,或者以暂停状态启动。如果正在配置将在未来某个时间点执行的攻击,或者保存以供将来使用,则这些替代方案非常有用。

选项3:Attack Results

这些设置控制在攻击结果中捕获的信息。可以使用以下选项:
  • 存储请求/响应 - 这些选项确定攻击是否将保存单个请求和响应的内容。保存请求和响应会占用临时目录中的磁盘空间,但允许您在攻击期间完整查看这些空间,必要时重复单个请求,并将其发送到其他Burp工具。
  • 进行未修改的基线请求 - 如果选择此选项,则除了配置的攻击请求之外,Burp还将发出模板请求,并将所有有效负载位置设置为其基值。此请求将在结果表中显示为项目#0。使用此选项可用于提供基本响应,以便比较攻击响应。
  • 使用拒绝服务模式 - 如果选择此选项,则攻击将正常发出请求,但不会等待处理从服务器收到的任何响应。一旦发出每个请求,就会关闭TCP连接。此功能可用于通过在服务器上重复发送启动高工作负载任务的请求来对易受攻击的应用程序执行应用程序层拒绝服务攻击,同时通过保持套接字打开等待服务器响应来避免锁定本地资源。
  • 存储完整的有效负载 - 如果选择此选项,Burp将存储每个结果的完整有效负载值。此选项会占用额外的内存,但如果要在运行时执行某些操作(例如修改有效负载grep设置或使用已修改的请求模板重新发出请求),则可能需要此选项。
选项4:Grep-Match
这些设置可用于标记响应中包含指定表达式的结果项
 
选项5:Grep-Extract
 
选项6:Grep-Payloads
这些设置可用于标记包含提交的有效负载反射的结果项
可以使用以下选项:
  • 区分大小写匹配 - 指定对有效内容的检查是否区分大小写。
  • 排除HTTP标头 - 指定是否应从检查中排除HTTP响应标头。
  • 与URL前编码的有效负载匹配 - 将Intruder配置为请求中的有效负载进行URL编码是正常的。但是,这些通常由应用程序解码并以其原始形式回显。您可以使用此选项以预编码形式对有效负载进行Burp检查响应。
 
选项7:Redirections
这些设置控制Burp在执行攻击时如何处理重定向
可以使用以下选项:
  • 遵循重定向 - 此设置控制所遵循的重定向目标。
  • 在重定向中处理cookie - 如果选择此选项,则在遵循重定向目标时将重新提交重定向响应中设置的任何cookie。例如,如果您尝试强制执行始终返回指向登录结果的页面的重定向的登录质询,则可能需要此选项,并且会创建新会话以响应每次登录尝试。
原文地址:https://www.cnblogs.com/LQ6H/p/Burp-Intruder.html