Burp Suite之Intruder模块(四)
Burp Suite之Intruder模块(三)
Intruder介绍:
Burp intruder是一个强大的工具,用于自动对Web应用程序自定义的攻击。它可以用来自动执行所有类型的任务您的测试过程中可能出现的。
Scaner模块配置详解
Target
用于配置目标服务器进行攻击的详细信息。所需的选项有: Host(主机) - 这是目标服务器的IP地址或主机名。 Port(端口) - 这是HTTP / S服务的端口号。 Use HTTPS(使用HTTPS),这指定的SSL是否应该被使用。 配置这些细节最简单的方法是选择你要攻击中BurpSuite的任何地方的请求,并选择上下文菜单中的“Send to intruder”选项。这将发送选定的请求,在intruder一个新的选项卡,将自动填充的目标和位置选项卡。
Positions
用于配置request temlate的攻击,和payloads markers、attack type一起。
Request Template
主要请求编辑器是用来定义从所有攻击请求都将被导出的请求模板。对于每一个攻击的请求,BurpSuite接受请求的模板,并把一个或多个有效载荷送入由有效载荷标记定义的位置。 成立请求模板的最简单的方法是选择你要攻击中BurpSuite的任何地方的请求,并选择上下文菜单中的“Send to intruder”选项。这将发送选定的请求,在intruder的选项卡,将自动填充的Target和Positions选项卡。
Payload Markers
有效载荷的标记是使用§字符,并且功能如下放置:
1
)每对标记指定一个有效载荷的位置。
2
)一对标记物可以从它们之间任选的模板要求附上一些文字。
3
)当一个有效载荷的位置被分配了一个有效载荷,无论是标记和任何包含的文本将被替换为有效载荷。
4
)当一个有效载荷的位置不具有分配的有效载荷,该标记将被删除,但是所包含的文本保持不变。
Attack type
Burp Intruder支持各种攻击类型 - 这些决定在何种负载分配给有效载荷仓的方式。攻击类型可以使用请求模板编辑器上方的下拉菜单进行选择。以下攻击类型可供选择:
Sniper(狙击手) - 这将使用一套单一的payloads。它的目标依次在每个有效载荷的位置,并把每个有效载荷送入依次那个位置。这不是针对一个给定的请求的位置不受影响 - 位置标记被移除,并在它们之间出现在模板中任何封闭文本保持不变。这种攻击类型为个别模糊测试的一些请求参数常见的漏洞非常有用。在攻击中生成的请求的总数是位置的数目和在有效载荷中设定的有效载荷的数量的乘积。
Battering ram(撞击物) - 使用一组payload。通过迭代的有效载荷方式,并将相同的payloads再一次填充到所有已定义的有效载荷仓。当其中一个攻击需要相同的输入将被插入在多个地方在请求中(例如,一个Cookie中的用户名和cookie参数)对这种攻击类型是非常有用的。在攻击中生成的请求的总数是有效载荷的有效载荷中设定的数目。
例如生成一组数字1-9,则就是1-1 ,2-2,3-3这种形式 Pitchfork(相交叉) - 这将使用多个payloads集。有对每个定义的位置(最多20个)不同的有效载荷组。通过设置所有有效载荷的攻击迭代的方式,并将一个有效载荷到每个定义的位置。
例如设置多个,每个payload设置一个字典,则就是1-1-1,2-2-2,3-3-3这种形式
换句话说,第一个请求将放置第一个有效载荷的Payload set 1到Positions 1 ,并从有效载荷中的第一个Payload set 2到Positons 2 ;第二个请求将放置第二个Payload set 1到Positions 1 ,并从payload中的第二个Payload set 2到Postions2 ,等在那里的攻击需要不同但相关的输入进行插在多个地方,这种攻击类型是有用的请求(例如,用户名中的一个参数,和对应于该用户名中的另一个参数已知的ID号) 。在攻击中生成的请求的总数是有效载荷中的最小有效载荷组的数目。
Cluster bomb(集束炸弹) - 使用多个Payload sets。有对每个定义的Positions(最多20个)设置不同的payload set。通过每个有效载荷的攻击迭代依次设置,使有效载荷组合的所有排列进行测试。
例如设置三个字典都是10个数,则总共有1000总匹配的模式
也就是说,如果有两个有效载荷的位置,则该攻击将放置第一个有效载荷从payload set 2到Positions 2 ,并通过在有效负载的所有 payload set 1中的positions 1 ;然后它将第二个有效载荷从载荷设置2到位置2 ,并通过有效载荷全部载入循环设置1到位置1 。其中一个攻击需要不同的和无关的或未知输入要在多个地方插入这种类型的攻击是非常有用的在请求中(例如猜测凭证,在一个参数的用户名,并且在另一个参数密码时) 。在攻击中生成的请求的总数是在所有定义的有效载荷的有效载荷集的数目的乘积 - 这可能是非常大的。
Payloads
Types
Burp Intruder包含以下几种attack type:
Simple list--简单字典
Runtime file--运行文件
Custom iterator--自定义迭代器
Character substitution--字符替换
另外推荐一个在密码猜解很有用的type
Case modification--此负载类型允许您配置一个字符串列表,并应用各种情况下修改每个项目。这可能是密码猜测攻击非常有用,用来产生在字典中的单词的情况下的变化。 可以选择以下的情况下修改规则:
No change - 这个项目可以用不被修改。
To lower
case
- 在该项目的所有字母转换为小写。
To upper
case
- 在该项目的所有字母转换为大写。
To Propername - 在该项目的第一个字母转换为大写,以及随后的字母转换为小写。
To ProperName - 在该项目的第一个字母转换为大写,以及随后的字母都不会改变。
Payload Processing
在它被使用之前可以定义规则来对每个有效载荷执行各种处理任务。该定义的规则按顺序执行,并且可以打开和关闭,以帮助调试与配置的任何问题。有效载荷的处理规则是有用的在多种情况下,你需要生成不同寻常的有效载荷,或者需要在一个更广泛的结构或在使用前编码方案包的有效载荷可达。
Add prefix - 添加一个文字前缀
Add suffix - 添加一个文字后缀
Match/replace - 将替换匹配特定正则表达式的有效载荷的任何部位,用一个文字字符串表示。
Substring - 提取的有效载荷的子部分中,从指定的偏移量(
0
-索引)和至所指定的长度开始。
Reverse substring - 对于子规则来说,最终的偏移量指定的有效载荷的末尾向后计数,并且长度从端部向后偏移计数。
Modify
case
- 这个修改了的有效载荷的情况下,如果适用的话。同样的选项作为的情况下修改有效载荷类型。
Encode - URL,HTML,Base64的,ASCII码或十六进制字符串构建各种平台:采用不同的计划,该编码的有效载荷。
Hash - hash Add raw payload - 这之前或之后,在当前处理的值增加了原始负载值。它可以是有用的,例如,如果你需要提交相同的有效载荷在raw和哈希表。 Skip raw payload - 将检查是否当前处理的值匹配指定的正则表达式,如果是这样,跳过有效载荷和移动到下一个。这可能是有用的,例如,如果知道一个参数值必须有一个最小长度和要跳过的一个列表,比这更短的长度的任何值。
Invoke Burp extension - 调用一个Burp exxtension(扩展)来处理负载。扩展名必须已注册入侵者有效载荷处理器。您可以从已注册的当前加载的扩展可用的处理器列表中选择所需的处理器。
Payload Encoding
你可以配置哪些有效载荷中的字符应该是URL编码的HTTP请求中的安全传输。任何已配置的URL编码最后应用,任何有效载荷处理规则执行之后。 这是推荐使用此设置进行最终URL编码,而不是一个有效载荷处理规则,因为可以用来有效载荷的grep选项来检查响应为呼应有效载荷的最终URL编码应用之前。.
Optins
此选项卡包含了request headers,request engine,attack results ,grep match,grep_extrack,grep payloads和redirections。你可以发动攻击之前,在主要Intruder的UI上编辑这些选项,大部分设置也可以在攻击时对已在运行的窗口进行修改。
Request Headers
这些设置控制在攻击Intruder(入侵者)是否更新配置请求头。请注意,您可以完全控制请求头通过在Payload positions(有效载荷位置)标签的要求范围内。这些选项可以用来更新每个请求的报头的方式,通常是有帮助的。
下列选项可用:
Update Content-length header(更新Content-Length头) - 此选项使Intruder(入侵者)添加或更新的Content-Length头的每个请求,与该特定请求的HTTP体的长度正确的值。此功能通常用于该插入可变长度的有效载荷送入模板的HTTP请求的主体的攻击至关重要。如果未指定正确的值,则目标服务器可能会返回一个错误,可能不完全响应请求,或者可能无限期地等待在请求继续接收数据。
Set Connection:close(设置连接:关闭) - 此选项使Intruder(入侵者)添加或更新连接头的值为“close(关闭)” 。在某些情况下(当服务器本身并不返回一个有效的Content-Length或Transfer-Encoding头) ,这个选项可以让攻击更快速地执行。
Request Engine
设置控制用于发出HTTP请求中的Intruder(入侵者)攻击的Engine(引擎)。下列选项可用:
Number of threads(执行进程数) - [专业版]该选项控制并发请求数的攻击。
Number of retries on network failure(网络故障的重试次数) - 如果出现连接错误或其他网络问题,Burp会放弃和移动之前重试的请求指定的次数。测试时间歇性网络故障是常见的,所以最好是在发生故障时重试该请求了好几次。
Pause before retry(重试前暂停) - 当重试失败的请求,Burp会等待指定的时间(以毫秒为单位) ,然后重试失败以下。如果服务器被宕机,繁忙,或间歇性的问题发生,最好是等待很短的时间,然后重试。
Throttle between requests(请求之间的节流) - Burp可以在每次请求之前等待一个指定的延迟(以毫秒为单位) 。此选项很有用,以避免超载应用程序,或者是更隐蔽。或者,您可以配置一个可变延迟(与给定的初始值和增量) 。这个选项可以是有用的测试应用程序执行的会话超时时间间隔。
Start time(开始时间) - 此选项允许您配置攻击立即启动,或在指定的延迟后,或开始处于暂停状态。如果攻击被配置,将在未来的某个时刻以供将来使用被执行,或保存这些替代品可能是有用的。
小心使用这些选项可让您微调攻击引擎,这取决于对应用程序性能的影响,并在自己的处理能力和带宽。如果您发现该攻击运行缓慢,但应用程序表现良好和你自己的CPU利用率很低,可以增加线程数,使你的攻击进行得更快。如果您发现连接错误发生,该应用程序正在放缓,或者说自己的电脑被锁定了,你应该减少线程数,也许增加网络故障和重试之间的间隔重试的次数。
Attack Results
这些设置控制哪些信息被捕获的攻击效果。下列选项可用:
Store requests/responses(存储请求/响应) - 这些选项确定攻击是否会保存单个请求和响应的内容。保存请求和响应占用磁盘空间,在你的临时目录中,但可以让您在攻击期间在众目睽睽这些,如果有必要重复单个请求,并将其发送到其他Burp工具。
Make unmodified baseline request(未修改的基本请求) - 如果选择此选项,那么除了配置的攻击请求,Burp会发出模板请求设置为基值,所有有效载荷的位置。此请求将在结果表显示为项目#
0
。使用此选项很有用,提供一个用来比较的攻击响应基地的响应。
Use denial-of-service mode(使用拒绝服务的模式) - 如果选择此选项,那么攻击会发出请求,如正常,但不会等待处理从服务器收到任何答复。只要发出的每个请求, TCP连接将被关闭。这个功能可以被用来执行拒绝服务的应用层对脆弱的应用程序的攻击,通过重复发送该启动高负荷任务的服务器上,同时避免通过举办开放套接字等待服务器响应锁定了本地资源的请求。
Store full payloads(保存完整的有效载荷) - 如果选择此选项,Burp将存储全部有效载荷值的结果。此选项会占用额外的内存,但如果你想在运行时执行某些操作,如修改payload grep setting(有效负载值设置),或重新发出请求与修改请求模板可能需要。
Grep-Match
设置可用于包含在响应中指定的表达式标志结果的项目。对于配置列表中的每个项目,Burp会添加一个包含一个复选框,指出项目是否被发现在每个响应的新成果列。然后,您可以到组排序此列(通过单击列标题)匹配的结果相加。
使用此选项可以是非常强大的,帮助分析大套的成绩,并迅速找出有趣的项目。例如,在口令猜测攻击,扫描短语,如“password incorrect(密码不正确)”或“login successful(登录成功)”,可以找到成功登录;在测试SQL注入漏洞,扫描含有“ ODBC ” , “error(错误)”等消息可以识别易受攻击的参数。
除了表达式匹配的列表,下列选项可用:
Match(匹配类型) - 指定的表达式是否是简单的字符串或regular expressions(正则表达式)。
Case sensitive match(区分大小写的匹配) - 指定检查表达式是否应区分大小写。
Exclude HTTP headers(不包括HTTP头) - 指定的HTTP响应头是否应被排除在检查。
Grep-Extrack
可以被用来Extrack(提取)从反应有用的信息进入攻击结果的表。对于配置列表中的每个项目,Burp会添加一个包含提取该项目的文本的新成果列。然后,您可以排序此列(通过单击列标题)命令所提取的数据。
注意:这个是特别有用的,你可以提取在响应回来的邮箱,手机号码等
可以使用正则,前提是你会写正则。在乌云社区有人提起过当时怎么匹配手机号,就可以从这里提取。
Grep-Payloads
设置可用于含有所提交的有效载荷的反射标志的结果项。如果启用该选项,Burp会添加一个包含一个复选框,指示当前负载的值是否被发现在每个响应的新成果列。 (如果使用一个以上的有效载荷,单独的列将每个有效载荷集加。 )
此功能可以在检测跨站点脚本和其他应对注入漏洞,它可以出现在用户输入动态地插入到应用程序的响应是有用的。
下列选项可用:
Case sensitive match(区分大小写的匹配) - 指定检查payload(负载)是否应区分大小写。
Exclude HTTP headers(不包括HTTP头) - 这指定的HTTP响应头是否应被排除在检查。
Match against pre-URL-encoded payloads(对预URL编码的有效载荷匹配) - 这是正常的配置Inturder(入侵者)请求中URL编码的有效载荷。然而,这些通常是由应用程序解码,回荡在他们的原始形式。您可以使用此选项,以用于有效载荷Burp检查反应在他们的预编码形式。
Redirections
控制Burp在进行攻击时如何处理重定向。它往往是要遵循重定向来实现你的攻击目标。例如,在一个口令猜测攻击,每一次尝试的结果可能只能通过下面的重定向显示。模糊测试的时候,相关的反馈可能只出现在最初的重定向响应后返回的错误消息。
下列选项可用: Follow redirections(跟随重定向) - 控制重定向都遵循的目标。下列选项可用:
1
)Never(从来没有) - 入侵者不会遵循任何重定向。
2
)On-site only(现场唯一的) - 入侵者只会跟随重定向到同一个网页“网站” ,即使用相同的主机,端口和协议的是在原始请求使用的URL 。
3
)In-scope only(调查范围内的唯一) - Intruder只会跟随重定向到该套件范围的目标范围之内的URL 。
4
)Always(总是) - Intruder将遵循重定向到任何任何URL 。您应使用此选项时应谨慎 - 偶尔, Web应用程序在中继重定向到第三方的请求参数,并按照重定向你可能会不小心攻击。
Process cookies in redirections(过程中的Cookie重定向) - 如果选择此选项,然后在重定向响应设置任何cookies将被当重定向目标之后重新提交。例如,如果你正在尝试暴力破解登录的挑战就可能是必要的,它总是返回一个重定向到一个页面显示登录的结果,和一个新的会话响应每个登录尝试创建。
Burp会跟进到10链重定向,如果必要的。在结果表中的列将显示重定向是否其次为每个单独的结果,以及完整的请求和响应中的重定向链存储与每个结果的项目。重定向的类型Burp会处理( 3xx的状态码,刷新头,等)配置在一套全重定向选项。
注意重定向: 在某些情况下,可能需要下面的重定向时只使用一个单线程的攻击。出现这种情况时,应用程序存储会话中的初始请求的结果,并提供重定向响应时检索此。
自动下重定向有时可能会造成问题 - 例如,如果应用程序响应一个重定向到注销页面的一些恶意的请求,那么下面的重定向可能会导致您的会话被终止时,它原本不会这么做。
BurpSuite Intruder使用
使用BurpSuite Intruder,执行以下步骤:
1
)首先,确保Burp安装并运行,并且您已配置您的浏览器与Burp工作。
2
)如果你还没有这样做的话,浏览周围的一些目标应用程序,来填充的应用程序的内容和功能的详细信息Burp的SiteMap。在这样做之前,要加快速度,进入代理服务器选项卡,然后截取子标签,并关闭代理拦截(如果按钮显示为“Intercept is On”,然后点击它来截取状态切换为关闭) 。
3
)转到Proxy选项卡也可以在站点地图(site map),并在History选项卡。发现一个有趣的前瞻性要求,您的目标应用程序,包含了一些参数。选择这个单一的请求,然后从上下文菜单中选择“Send to intruder” 。
4
)转到Intruder标签。Burp Intruder可以让你同时配置多个攻击。您Send to Intruder的每个请求在自己的攻击选项卡中打开,而这些都是顺序编号的默认。您可以双击标签头重命名选项卡,拖动标签来重新排序,并且还关闭和打开新的标签页。
5
)为您发送请求建立的Intruder选项卡,看看Target和Positions选项卡。这些已经自动填入您发送的请求的细节。
6
)Burp Intruder本质工作,采取了基本模板的要求(你送到那里的那个) ,通过一些payloads的循环,将这些payloads送入定义的Positions,基本要求范围内,并发出每个结果的要求。位置标签用于配置,其中有效载荷将被插入到基本要求的位置。你可以看到,BurpSuite一直在你想用来放置有效载荷自动进行猜测。默认情况下,有效载荷放入所有的请求参数和cookie的值。每对有效载荷标记定义了一个有效载荷的位置,并且可以从基体的要求,这将被替换的有效载荷的内容,当该payload position用于括一些文本。有关进一步详情,请参阅Payload Markers的帮助。
7
)旁边的请求编辑器中的按钮可以被用于添加和清除有效载荷的标志。试着增加payload position在新的地点请求中,并删除其他标志物,并看到效果了。当你理解了payload positions是如何工作的,请单击“Auto§ ”按钮恢复到BurpSuite为您配置的默认payload positions。如果你修改了请求本身的文本,可以重复步骤
3
创建与它的原始请求一个新的Intruder的攻击选项卡。
8
)转到Payloads选项卡。这使您可以定义将要放入已定义的有效载荷仓的有效载荷。保持默认设置(使用有效载荷的“Simple list” ) ,并添加一些测试字符串到列表中。您可以通过输入到“Enter a
new
item”框中,单击“add”,输入自己的字符串。或者您可以使用“add from file”下拉菜单,然后选择“Fuzzing-quick”,从内置的负载串[专业版]列表中。
9
)现在,您已经配置了最低限度的选项来发动攻击。转到Intruder菜单,然后选择“Start attack” 。
10
)在包含在结果选项卡一个新的窗口中打开攻击。结果表包含已经取得,与各关键细节,如所使用的有效载荷, HTTP状态码,响应长度等,您可以在表中选择任何项目,以查看完整的请求和响应每个请求的条目。您还可以对表进行排序通过单击列标题,并使用过滤器栏过滤表中的内容。这些特征以相同的方式工作,作为Proxy history。
11
)这次袭击窗口包含其他标签,显示被用于当前攻击的配置。您可以修改大部分这种配置的攻击已经开始。转到选项选项卡,向下滚动到“ grep-match” ,并勾选“标志的结果与项目相匹配的响应这些表达式” 。这将导致Intruder检查响应匹配列表中的每个表达式项目和标志的火柴。默认情况下,列表显示fuzzing时是很有用的一些常见的错误字符串,但可以配置,如果你想自己的字符串。返回result选项卡,看到Intruder增加了对每个项目列在列表中,而这些包含复选框,指示表达式是否被发现在每一个响应。如果你是幸运的,你的基本模糊测试可能引发一个错误的存在在一些回应的错误消息。
12
)现在,在表中选择任何项目,并期待在该项目的响应。发现在反应(如网页标题,或错误消息)一个有趣的字符串。右键单击该项目在表中,然后从上下文菜单中选择“Define extrace grep from response” 。在对话框中,选择响应的有趣字符串,然后单击“确定” 。结果表中现在包含一个新的列,其提取这一段文字从每个响应(其可以是不同的在每一种情况下) 。您可以使用此功能来定位在大型攻击有趣的数据与成千上万的反应。请注意,您还可以配置“extrace grep ”项目中的选项选项卡,在此之前前或在攻击期间。
13
)在结果表中选择任一项目,并打开上下文菜单。选择“Send to Repeater” ,然后转到Repeater选项卡。你会看到所选的请求已被复制到Repeater工具,进行进一步的测试。许多其他有用的选项是可用的上下文菜单中。有关发送BurpSuite工具之间的项目,使整体测试工作流程的详细信息。
14
)您可以使用“Save”菜单在结果窗口中都救不结果表或整个攻击。你可以加载结果表到其他工具或电子表格程序。您可以通过在主Burp的UI Intruder菜单重新加载保存的攻击。
15
)这些步骤只介绍一个简单的用例Intruder,对于Fuzzing的要求有一些标准的攻击字符串和用grep搜索中的错误消息。您可以使用Intruder许多不同类型的攻击,有许多不同的payloads和攻击选项。
实例演示:
一般步骤如下
1.代理好服务器地址,然后访问这个网站地址,尝试登陆网站
2.burp拦截了数据之后发送到repeater
3.接下来就是发送到intruder,target一般都不需要管,已经自动填好了,然后选择positions
注意:默认攻击为Sniper方式
4.先点击Clear$,选择密码地地方点击add$
5.切换到payloads设置payload type,选择我们自己的字典2018-10-23
6.切换到options去设置进程数和失败之后重试次数、过滤结果
把Grep-Match清理掉,省得干扰
另外通过返回响应的字符判断,是否爆破成功,假设登陆成功后的响应返回Index.php,添加到里面去。
7.接下来点击intruder下的start attack就开始爆破了,可以根据length来判断跟其他的不同