5号黯区 活跃在一线渗透攻击的队伍

BurpSuite2021视频笔记

2021-07-05

2.BurpSuite环境配置及安装

BurpSuite 1.7.x —— java 8

BurpSuite 2021 —— java 11
http://jdk.java.net/java-se-ri/11

BurpSuite下载:
https://portswigger.net/burp/releases

激活文件(注册机):
https://github.com/h3110w0r1d-y/BurpLoaderKeygen/releases

1
2
3
4
5
DIM objShell
DIM command
set objShell=wscript.createObject("wscript.shell")
command="java -javaagent:BurpLoaderKeygen.jar -noverify -jar burpsuite_pro_v2021.7.jar"
iReturn=objShell.Run(command, 0, TRUE)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Diagnostics;
using System.IO;
//csc.exe /target:winexe /out:c:\users\dark5\desktop\Bp.exe /win32icon:C:\Users\dArk5\Pictures\IconGroup1001.ico C:\Users\dArk5\Desktop\1.cs
//https://imagedark5.oss-cn-beijing.aliyuncs.com/archives/bp.ico
namespace burpsuite_pro_v2021._7
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
string startbp_seconde = "java -javaagent:BurpLoaderKeygen.jar -noverify -jar burpsuite_pro_v2021.7.jar";
if (File.Exists("config.cfg"))
{
Exec(startbp_seconde);
}
else
{
string first = "java -jar BurpLoaderKeygen.jar";
Exec(first);
}
}

static void Exec(string cmd)
{
Process p = new Process();
//设置要启动的应用程序
p.StartInfo.FileName = "cmd.exe";
//是否使用操作系统shell启动
p.StartInfo.UseShellExecute = false;
// 接受来自调用程序的输入信息
p.StartInfo.RedirectStandardInput = true;
//输出信息
p.StartInfo.RedirectStandardOutput = true;
// 输出错误
p.StartInfo.RedirectStandardError = true;
//不显示程序窗口
p.StartInfo.CreateNoWindow = true;
//启动程序
p.Start();
//向cmd窗口发送输入信息
p.StandardInput.WriteLine(cmd+ "&exit");
p.StandardInput.AutoFlush = true;
//获取输出信息
string strOuput = p.StandardOutput.ReadToEnd();
//等待程序执行完退出进程
//p.WaitForExit();
p.Close();
}
}
}

8.BurpSuite之Intruder详解

Simple list

This is the simplest payload type, and lets you configure a simple list of strings that are used as payloads.
You can manually add items to the list using the text box and the “Add” button, or you can paste a list from the clipboard, or load from file.

这是最简单的负载类型,可让您配置用作负载的简单字符串列表。

您可以使用文本框和“添加”按钮手动将项目添加到列表中,或者您可以从剪贴板粘贴列表,或从文件加载。

说人话:就是一个比较小的列表,你可以从文件中加载,还可以手工add添加。适合小字典。

Runtime file

This payload type lets you configure a file from which to read payload strings at runtime. This is useful when a very large list of payloads is needed, to avoid holding the entire list in memory. One payload is read from each line of the file, hence payloads may not contain newline characters.
此有效负载类型允许您配置一个文件,在运行时从中读取有效负载字符串。 当需要非常大的有效负载列表时,这很有用,以避免将整个列表保存在内存中。 从文件的每一行读取一个负载,因此负载可能不包含换行符。

说人话:如果你有一个非常大的字典,选择Simple list加载进内存会增加计算机的负荷,让你的内存爆满,所以选择Runtime file的话,是从文件中一行一行读取,不会全部加载进内存。适合大字典。

Custom iterator - 自定义迭代器

This payload type lets you configure multiple lists of items, and generate payloads using all permutations of items in the lists. It provides a powerful way to generate custom permutations of characters or other items according to a given template. For example, a payroll application may identify individuals using a personnel number of the form AB/12; you may need to iterate through all possible personnel numbers to obtain the details of all individuals.
The custom iterator defines up to 8 different “positions” which are used to generate permutations. Each position is configured with a list of items, and an optional “separator” string, which is inserted between that position and the next. In the example already mentioned, positions 1 and 2 would be configured with the items A - Z, positions 3 and 4 with the items 0 - 9, and position 2 would be set with the separator character /. When the attack is executed, the custom iterator iterates through each item in each position, to cover all possible permutations. Hence, in this example, the total number of payloads is equal to 26 * 26 * 10 * 10.
The list items can be edited in the same way as described for the simple list payload type. The “Clear all” button removes all configuration from all positions of the custom iterator.
The “Choose a preset scheme” drop-down menu can be used to select a preconfigured setup for the custom iterator. These can be used for various standard attacks or modified for customized attacks. Available schemes are “directory / file . extension”, which can be used to generate URLs, and “password + digit” which can be used to generate an extended wordlist for password guessing attacks.

此有效负载类型允许您配置多个项目列表,并使用列表中项目的所有排列生成有效负载。它提供了一种根据给定模板生成字符或其他项的自定义排列的强大方法。例如,工资单应用程序可以使用表格AB/12的人员编号识别个人;您可能需要遍历所有可能的人员编号,以获取所有人员的详细信息。

自定义迭代器最多定义8个不同的“位置”,用于生成置换。每个位置都配置有一个项目列表和一个可选的“分隔符”字符串,该字符串插入到该位置和下一个位置之间。在前面提到的示例中,位置1和2将配置为项目A-Z,位置3和4将配置为项目0-9,位置2将设置为分隔符/。执行攻击时,自定义迭代器遍历每个位置的每个项,以覆盖所有可能的排列。因此,在本例中,有效载荷的总数等于26×26×10×10。

可以使用与简单列表有效负载类型相同的方式编辑列表项。“全部清除”按钮从自定义迭代器的所有位置删除所有配置。

“选择预设方案”下拉菜单可用于为自定义迭代器选择预配置的设置。这些可以用于各种标准攻击,也可以修改为自定义攻击。可用的方案是“目录/文件”。扩展名”,可用于生成URL,以及“密码+数字”,可用于生成用于密码猜测攻击的扩展单词列表。

说人话:这个payload 类型可以让你最多设置8个变量位,可以极大程度定义payload。比如第一个位置设置a-z,第二个位置设置1-5,那么payload就是:
a1 a2 a3 a4 a5
b1 b2 b3 b4 b5
······
主要是针对某些有规律的值进行使用,如枚举webshell,假设shell的名字长度是3位,第一位是字母,第三位也是字母。第一个位置设a-z,第二个位置0-9及a-z,第三个位置a-z,这个位置的加上一个分隔符.,第四个位置留给扩展名,设:php,那么payload就是:
a0a.php
a0b.php
……
a1a.php
a1b.php

b0a.php
b0b.php

以此类推。

Character substitution - 字符替换

This payload type lets you configure a list of strings and apply various character substitutions to each item. It may be useful in password guessing attacks, for generating common variations on dictionary words.

The UI lets you configure a number of character substitutions. When the attack is executed, the payload type works through each of the configured list items in turn. For each item, it generates a number of payloads, to include all permutations of substituted characters according to the defined substitutions. For example, with the default substitution rules (which include e > 3 and t > 7), the item “peter” will generate the following payloads:

peter
p3ter
pe7er
p37er
pet3r
p3t3r
pe73r
p373r

The list items can be edited in the same way as described for the simple list payload type.

说人话:把单个字符替换成其他的单个字符,现如果payload中有多个匹配的且相同的字符,会依次替换直至全部都替换。(此处表达有点不足,看上面的例子)

Case modification - 案例修改

No change - 该项目未经修改即被使用。
To lower case - 项目中的所有字母都转换为小写。
To upper case - 项目中的所有字母都转换为大写。
To Propername - 项目中的第一个字母转换为大写,后面的字母转换为小写。
To ProperName - 项目中的第一个字母转换为大写,后面的字母不变。

Recursive grep - 递归grep

说人话:从原始response中提取字符串作为第一次攻击测试的payload,再从第一次攻击的response中提取字符串作为第二次攻击的payload,以此类推,直至提取规则提取不到字符串就停止。

Illegal Unicode - 非法 Unicode

  • maximum overlong UTF-8 length

Unicode 编码允许最多使用 6 字节表示一个字符。使用一种类型就可以正确地表示出(0x00-0x7F) Basic ASCII 字符。然而,使用多字节的Unicode 方案也能表示出它们(如, ”overlong”编码)。下拉菜单用来指定是否使用超长编码,以及应该设定的最大使用长度。** **

  • Illegal UTF-8 continuation bytes

当选择的最大超长 UTF-8 长度为 2 字节以上,这个选项是可用的。

  • Do illegal UTF-8

当使用多字节编码一个字符时,第一个字节后面的字节应该用 10XXXXXX 这样的二进制格式,来指出后续的字节。然而,第一个字节里最有意义的位会指出后面还有多少后续字节。因此,Unicode 编码例程会安全地忽略掉后续字节的前 2 位。这就意味着每个后续字节可能有 3 个非法变种,格式为 00XXXXXX, 01XXXXXX 和 11XXXXXX。如果选中这个选项,则非法 Unicode 有效负荷源会为每个后续字节生成 3 个附加编码。

  • Maximize permutations in multi-byte encodings

如果选择的最大超长 UTF-8 长度为 3 字节以上,并且选中” illegal UTF-8 ”这个选项可用。如果”Maximize permutations in multi-byte encodings”没被选中,则在生产非法变种时,不合法 Unicode 有效负荷源会按顺序处理每个后续字节,为每个后续字节产生 3 个非法变种,并且其他的后续字节不会改变。如果”Maximize permutations in multi-byte encodings”被选中了,不合法 的Unicode 有效负荷源会为后续字节生成所有的非法变种排序 。 如,多个后续字节会同时被修改。在目标系统上回避高级模式匹配控制时,这个功能就会很有用。

  • Illegal hex

这个选择基本上一直可用。当使用超长编码和后续字节的非法变种(如果选中)生成非法编码项列表时,通过修改由此产生的十六进制编码可能会迷惑到某种模式匹配控制。十六进制编码使用字符 A—F 代表十进制 10—15 的值。然而有些十六进制编码会把G解释为 16, H 为 17,等等。因此 0x1G 会被解释为 32。另外,如果非法的十六进制字符使用在一个 2 位数的十六进制编码的第一个位置,则由此产生的编码就会溢出单个字节的大小,并且有些十六进制编码只使用了结果数字的后 8 个有效位,因此 0x1G 会被解码为 257,而那时会被解释为 1。每个合法的 2 位数的十六进制编码有 4—6 种相关的非法十六进制表示,如果使用的是上面的编码,则这些表示会被解释为同一种十六进制编码。如果”illegal hex”被选中,则非法 Unicode 有效负荷源会在非法编码项列表里,生成每个字节的所有可能的非法十六进制编码。

  • Maximize permutations in multi-byte encodings

如果选中的最大超长 UTF-8 长度为 2 字节以上并且“illegal hex”也被选中,则这个选项可用。如果Maximize permutations in multi-byte encodings”没被选中,在生成非法十六进制编码时,非法 Unicode 有效负荷源会按顺序处理每个字节。对于每个字节,会生成 4—6 个非法十六进制编码,其他的字节不变。如果Maximize permutations in multi-byte encodings”被选中,则非法 Unicode 有效负荷源会为所有的字节,生成非法十六进制的所有排序。如,多个字节会被同时修改。在目标系统上回避高级模式匹配控制时,这个功能会非常有用。

  • add % prefix

如果选中这个选项,在产生的有效负荷里的每个 2 位数十六进制编码前面,都会插入一个%符号。

  • Use lower case alpha characters

这个选项决定了是否在十六进制编码里使用大小写字母。

  • Total encodings

    这个选项为会产生的非法编码数量放置了一个上界,如果大量使用超长编码或者选中了最大列表,这个选项会很有用,因为那会生成大量的非法编码。

  • Match / replace in list items

    这个选项用户控制Payload列表中的字符串,它是由匹配字符(Match character)和替换字符编码(Replace with encodings of )来成对的控制Payload的生成。

当攻击执行时,这个有效负荷源会迭代所有预设项列表,在非法编码集合里,每个预设 项替换每个项里的指定字符的所有实例。

Character blocks - 字符串块

说人话:可检测在本机(非托管)上下文中运行的软件中的缓冲区溢出和其他边界条件漏洞;还可用于利用某些逻辑缺陷,主要是因为特定长度的输入绕过过滤器或触发意想不到的的路径访问。

Numbers

  • Type表示使用序列还是随机数
  • From表示从什么数字开始
  • To表示到什么数字截止
  • Step **表示步长是多少,如果是随机数,则How many**被激活,表示一共生成多少个随机数。
  • Base表示数字使用十进制还是十六进制形式
  • Min integer digits 表示最小的整数是多少
  • Max integer digits **表示最大的整数是多少,如果是10进制,则Min fraction digits** 表示小数点后最少几位数,Max fraction digits表示小数点后最多几位数。

Dates

Brute forcer - 暴力破解

此负载类型生成指定长度的负载,其中包含指定字符集的所有排列。

character set - 要在有效负载中使用的字符集。请注意,有效载荷的总数随着该集合的大小呈指数增长。
Min length - 最短有效载荷的长度。
Max length - 最长有效载荷的长度。

Null payloads

这种负载类型产生的Payload,其值是一个空字符串。在攻击时,需要同样的请求反复被执行,在没有任何修改原始请求的场景下此Payload是非常有用的。它可用于各种攻击,例如cookie的序列分析、应用层Dos、或保活会话令牌是在其它的间歇试验中使用。

Character frobber

此有效负载类型对字符串输入进行操作,并依次修改每个字符位置的值。它可以对每个有效载荷位置的现有基值或指定字符串进行操作。它一次一个字符地循环遍历基本字符串,将该字符的 ASCII 代码递增 1。
在测试哪些参数值或值的一部分对应用程序的响应有影响时,此负载类型很有用。特别是,它在测试复杂会话令牌的哪些部分实际用于跟踪会话状态时非常有用。如果修改会话令牌中单个字符的值仍然导致您的请求在会话中得到处理,则令牌中的这个字符可能实际上并未用于跟踪您的会话。

Bit flipper

其设置选项主要有:Operate on **指定是对Payload位置的原始数据进行Bit翻转还是指定值进行Bit翻转,Format of original data 是指是否对原始数据的文本意义进行操作,还是应该把它当作ASCII十六进制,Select bits to flip**是指选择翻转的Bit位置。 您可以配置基于文本意义进行操作,或基于ASCII十六进制字符串进行翻转。例如,如果原始值是“ab”,基于文本意义的翻转结果是:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
`b
cb
eb
ib
qb
Ab
!b
¡b
ac
a`
af
aj
ar
aB
a"

如果是基于ASCII十六进制字符串进行翻转,则结果是:

1
2
3
4
5
6
7
8
aa
a9
af
a3
bb
8b
eb
2b

这种类型的Payload类似于字符frobber,但在你需要更细粒度的控制时是有用的。例如,会话令牌或其他参数值使用CBC模式的块密码加密,有可能系统地由前一密码块内修改Bit位以改变解密后的数据。在这种情况下,你可以使用的Bit 翻转的Payload来确定加密值内部修改了个别bit位后是否对应用程序产生影响,并了解应用程序是否容易受到攻击。关于加密模式可以点击阅读这篇文章做进一步的了解。

Username generator

说人话:根据你给定的字符,生成一个字典list,当然这个字典是猜解用户名的,所以一般给定的是目标的姓名,不具备跟生日之类的配合的功能。

ECB block shuffler

基于ECB加密模式的Payload生成器,关于加密模式可以点击阅读这篇文章做进一步的了解。其原理是因为ECB加密模式中每组64位的数据之间相互独立,通过改变分组数据的位置方式来验证应用程序是否易受到攻击。

Extension-generated - 扩展生成

就是从外部加载一个插件,然后用插件生成。

Copy other payload

这种类型的Payload是将其他位置的参数复制到Payload位置上,作为新的Payload值,通常适用于多个参数的请求消息中,它的使用场景可能是: 1.两个不同的参数需要使用相同的值,比如说,用户注册时,密码设置会输入两遍,其值也完全一样,可以使用此Payload类型。 2.在一次请求中,一个参数的值是基于另一个参数的值在前端通过脚本来生成的值,可以使用此Payload类型。

intruder攻击类型

  1. Sniper标签 这个是我们最常用的,Sniper是狙击手的意思。这个模式会使用单一的payload【就是导入字典的payload】组。它会针对每个position中$$位置设置payload。这种攻击类型适合对常见漏洞中的请求参数单独地进行测试。攻击中的请求总数应该是position数量和payload数量的乘积。
  2. Battering ram – 这一模式是使用单一的payload组。它会重复payload并且一次把所有相同的payload放入指定的位置中。这种攻击适合那种需要在请求中把相同的输入放到多个位置的情况。请求的总数是payload组中payload的总数。简单说就是一个playload字典同时应用到多个position中
  3. Pitchfork – 这一模式是使用多个payload组。对于定义的位置可以使用不同的payload组。攻击会同步迭代所有的payload组,把payload放入每个定义的位置中。比如:position中A处有a字典,B处有b字典,则a【1】将会对应b【1】进行attack处理,这种攻击类型非常适合那种不同位置中需要插入不同但相关的输入的情况。请求的数量应该是最小的payload组中的payload数量
  4. Cluster bomb – 这种模式会使用多个payload组。每个定义的位置中有不同的payload组。攻击会迭代每个payload组,每种payload组合都会被测试一遍。比如:position中A处有a字典,B处有b字典,则两个字典将会循环搭配组合进行attack处理这种攻击适用于那种位置中需要不同且不相关或者未知的输入的攻击。攻击请求的总数是各payload组中payload数量的乘积。