burp详解


burpsuite的使用

系统的放点东西,借鉴为主,供参考。

SSL和proxy高级选项

HTTPS协议是为了数据传输安全的需要,在HTTP原有的基础上,加入了安全套接字层SSL协议,通过CA证书来验证服务器的身份,并对通信消息进行加密。

基于HTTPS协议这些特性, 我们在使用Burp Proxy代理时,需要增加更多的设置,才能拦截HTTPS的消息。(安装ca证书)

proxy监听设置

当我们启动Burp Suite时,默认会监听本地回路地址的8080端口,除此之外,我们也可以在默认监听的基础上,根据我们自己的需求,对监听端口和地址等参数进行自由设置。

特别是当 我们测试非浏览器应用时,无法使用浏览器代理的方式去拦截客户端与服务器端通信的数据 流量,这种情况下,我们会使用自己的Proxy监听设置,而不会使用默认设置。

image-20211115171138095

当我们在实际使用中,可能需要同时测试不同的应用程序时,我们可以通过设置不同的代理、端口,来区分不同的应用程序,Proxy监听即提供这样的功能设置。

点击图中的【Add】按 钮,会弹出Proxy监听设置对话框,里面有更丰富的设置,满足我们不同的测试需求。

image-20211115171252052

Proxy监听设置主要包含3块功能:

  1. 端口和IP绑定设置Binding 绑定的端口port是指Burp Proxy代理服务监听的端口,绑定IP 地址分仅本地回路、所有接口、指定地址三种模式,在渗透测试中,无论你选择哪种模 式,你需要明白一点,当你选择的非本地回路IP地址时,同局域网内的其他电脑也可以 访问你的监听地址

  2. 请求处理Request Handling 请求处理主要是用来控制接受到Burp Proxy监听端口的请求 后,如果对请求进行处理的。

    image-20211115172100204

    其具体配置可分为:端口的转发、主机名/域名的转发、强制使用SSL和隐形代理4个部 分。

    当我们配置了端口的转发时,所有的请求都会被转发到这个端口上;如果我们配置 了主机或域名的转发,则所有的请求会转发到指定的主机或域名上。

    同时,我们可以指定,通过Burp Proxy的消息是否强制使用SSL,如果设置了此项,则请求若是http协议, 经Burp proxy代理后将转换为https协议。

    隐形代理主要是用于测试富客户端应用或者是非浏览器代理方式的应用,当我们设置了它,访问这些应用时,将通过非代理的方式,直接连接Burp Proxy的监听端口。

  3. SSL 证书 这些设置控制呈现给SSL客户端的服务器SSL证书。可以解决使用拦截代理时 出现的一些SSL问题:

    1.您可以消除您的浏览器的SSL警报,并需要建立SSL例外。其 中,网页加载来自其他域的SSL保护的项目,可以确保这些正确的加载到浏览器,而不需 要为每个域手动接受代理的SSL证书。

    2.可以与该拒绝无效的SSL证书连接到服务器胖客 户机应用程序的工作。

    它有下列选项可供设置:

    1. 使用自签名证书(Use a self-signed certificate ) —— 一个简单的自签名SSL证书呈现 给您的浏览器,它总是会导致SSL警告。

    2. 生成每个主机的CA签名证书(Generate CA-signed per-host certificates)—— 这是默认 选项。在安装时,Burp创造了一个独特的自签名的证书颁发机构(CA)证书,并将此计 算机上使用。当你的浏览器发出的SSL连接指定主机,Burp生成该主机的SSL证书,由 CA证书签名。您可以安装Burp的CA证书作为浏览器中的受信任的根,从而使每个主机证 书没有任何警报接受。

    3. 生成与特定的主机名CA签发的证书(Generate a CA-signed certificate with a specific hostname)—— -是类似于前面的选项;不同的是,Burp会生成一个主机证书与每一个 SSL连接使用,使用指定的主机名。

    4. 使用自定义证书(Use a custom certificate)—— 此选项可以加载一个特定的证书(在 PKCS#12格式)呈现给浏览器。如果应用程序使用这需要一个特定的服务器证书(例 如,与给定的序列号或证书链)的客户端应该使用这个选项。

SSL直连和隐形代理

SSL直连的设置主要用于指定的目的服务器直接通过SSL连接,而通过这些连接的请求或响应,任何细节将在Burp代理拦截视图或历史日志中可见。

通过SSL连接传递可以并不是简单地消 除在客户机上SSL错误的情况下有用。比如说,在执行SSL证书的移动应用。如果应用程序访问多个域,或使用HTTP和HTTPS连接的混合,然后通过SSL连接到特定的主机问题,仍然使您 能够以正常的方式使用Burp的其他方式进行通信。如果启用自动添加客户端SSL协商失败的选项,当客户端失败的SSL协议检测(例如,由于不承认Burp的CA证书),并会自动将相关 的服务器添加到SSL直通通过列表中去。其设置界面如下图所示:

image-20211115190736800

有时候,在拦截富客户端软件时,我们通常需要使用隐形代理。富客户端软件通常是指运行 在浏览器之外的客户端软件,这就意味着它本身不具有HTTP代理是属性。当它进行网络通信 时,客户端将无法使代理感知或者无法由代理进行通信。在Burp中,我们可以使用隐形代理 的方式,对通信内容进行代理或拦截,从而对通信的请求和响应消息进行分析。使用隐形代

理通常需要做如下设置(以https://example.com为例):

  1. 配置hosts文件,Windows操作系 统下的目录位置Windows/System32/drivers/etc/hosts,而Linux或者Unix下的目录 为/etc/hosts,添加如下行:

    127.0.0.1 example.com 
  2. 第一步设置完成之后,我们需要添加一个新的监听来运行在HTTP默认的80端口,如果通信 流量使用HTTPS协议,则端口为443。

    image-20211115190955222

  3. 如果是HTTPS协议的通信方式,我们需要一个指定域名的CA证书。 image-20211115191010173

  4. 接着,我们需要把Burp拦截的流量转发给原始请求的服务器。这需要在Options- Connections->Hostname Resolution 进行设置。因为我们已经告诉了操作系统, example.com的监听地址在127.0.0.1上,所以我们必须告诉Burp,将example.com的流量转 发到真实的服务器那里去。

    image-20211115191046827

通过这样的配置,我们就可以欺骗富客户端软件,将流量发送到Burp监听的端口上,再由 Burp将流量转发给真实的服务器。

如何使用burp target

Burp Target 组件主要包含站点地图、目标域、Target 工具三部分组成,他们帮助渗透测试人 员更好地了解目标应用的整体状况、当前的工作涉及哪些目标域、分析可能存在的攻击面等 信息。

目标域设置 target score

Target Scope中作用域的定义比较宽泛,通常来说,当我们对某个产品进行渗透测试时,可以 通过域名或者主机名去限制拦截内容,这里域名或主机名就是我们说的作用域;如果我们想 限制得更为细粒度化,比如,你只想拦截login目录下的所有请求,这时我们也可以在此设 置,此时,作用域就是目录。总体来说,Target Scope主要使用于下面几种场景中:

  • 限制站点地图和Proxy 历史中的显示结果
  • 告诉Burp Proxy 拦截哪些请求
  • Burp Spider抓取哪些内容
  • Burp Scanner自动扫描哪些作用域的安全漏洞
  • 在Burp Intruder和Burp Repeater 中指定URL

通过Target Scope 我们能方便地控制Burp 的拦截范围、操作对象,减少无效的噪音。在 Target Scope的设置中,主要包含两部分功能:允许规则和去除规则。

image-20211115191942118

其中允许规则顾名思义,即包含在此规则列表中的,视为操作允许、有效。如果此规则用于 拦截,则请求消息匹配包含规则列表中的将会被拦截;反之,请求消息匹配去除列表中的将 不会被拦截。

image-20211115192408099

从上图的添加 规则对话框中我们可以看出,规则主要由协议、域名或IP地址、端口、文件名4个部分组成, 这就意味着我们可以从协议、域名或IP地址、端口、文件名4个维度去控制哪些消息出现在允许或去除在规则列表中。

当我们设置了Target Scope (默认全部为允许),使用Burp Proxy进行代理拦截,在渗透测 试中通过浏览器代理浏览应用时,Burp会自动将浏览信息记录下来,包含每一个请求和应答 的详细信息,保存在Target站点地图中。

站点地图 site map

下图所示站点地图为一次渗透测试中,通过浏览器浏览的历史记录在站点地图中的展现结 果。

image-20211115192618871

从图中我们可以看出,Site Map的左边为访问的URL,按照网站的层级和深度,树形展示整 个应用系统的结构和关联其他域的url情况;右边显示的是某一个url被访问的明细列表,共访 问哪些url,请求和应答内容分别是什么,都有着详实的记录。

基于左边的树形结构,我们可 以选择某个分支,对指定的路径进行扫描和抓取。

image-20211115192715467

同时,我们也可以将某个域直接加入 Target Scope中

image-20211115193232487

除了加入 Target Scope外,从上图中,我们也可以看到,对于站点地图的分层,可以通过折 叠和展开操作,更好的分析站点结构

target模块使用

Target 模块的使用的使用主要包括以下部分:

  • 手工获取站点地图
  • 站点比较
  • 攻击面分析

当我们手工获取站点地图时,需要遵循以下操作步骤:

  1. 设置浏览器代理和Burp Proxy代 理,并使之能正常工作。
  2. 关闭Burp Proxy的拦截功能。
  3. 手工浏览网页

这时,Target会 自动记录站点地图信息。

手工获取站点地图的方式有一个好处就是,我们可以根据自己的需 要和分析,自主地控制访问内容,记录的信息比较准确。与自动抓取相比,则需要更长的时 间,如果需要渗透测试的产品系统是大型的系统,则对于系统的功能点依次操作一遍所需要 的精力和时间对渗透测试人员来说付出都是很大的。

站点比较是一个Burp提供给渗透测试人员对站点进行动态分析的利器,我们在比较帐号权限 时经常使用到它。当我们登陆应用系统,使用不同的帐号,帐号本身在应用系统中被赋予了 不同的权限,那么帐号所能访问的功能模块、内容、参数等都是不尽相同的,此时使用站点 比较,能很好的帮助渗透测试人员区分出来。一般来说,主要有以下3种场景:

  1. 同一个帐 号,具有不同的权限,比较两次请求结果的差异。
  2. 两个不同的帐号,具有不同的权限,比 较两次请求结果的差异。
  3. 两个不同的帐号,具有相同的权限,比较两次请求结果的差异。

站点比较:

1.首先我们在需要进行比较的功能链接上右击, 找到站点比较的菜单,点击菜单进入下一步。

image-20211115193903324

2.由于站点比较是在两个站点地图之间进行的,所以我们在配置过程中需要分别指定Site Map 1和Site Map2。通常情况下,Site Map 1 我们默认为当前会话。如图所示,点击【Next】。

image-20211115193941067

3.这时我们会进入Site Map 1 设置页面,如果是全站点比较我们选择第一项,如果仅仅比较我 们选中的功能,则选择第二项。如下图,点击【Next】。如果全站点比较,且不想加载其他 域时,我们可以勾选只选择当前域。

image-20211115194310168

4.接下来就是Site Map 2 的配置,对于Site Map 2我们同样有两种方式,第一种是之前我们已 经保存下来的Burp Suite 站点记录,第二种是重新发生一次请求作为Site Map2.这里,我们选 择第二种方式。

image-20211115194636024

5.如果上一步选择了第二种方式,则进入请求消息设置界面。在这个界面,我们需要指定通信 的并发线程数、失败重试次数、暂停的间隙时间。

image-20211115195134217

6.设置完Site Map 1 和Site Map 2之后,将进入请求消息匹配设置。在这个界面,我们可以通 过URL文件路径、Http请求方式、请求参数、请求头、请求Body来对匹配条件进行过滤。

image-20211115195158211

7.设置请求匹配条件,接着进入应答比较设置界面。在这个界面上,我们可以设置哪些内容 我们指定需要进行比较的。从下图我们可以看出,主要有响应头、form表单域、空格、MIME 类型。点击【Next】。

image-20211115195352015

8.如果我们之前是针对全站进行比较,且是选择重新发生一次作为Site Map2的方式,则界面 加载过程中会不停提示你数据加载的进度,如果涉及功能请求的链接较少,则很快进入比较 界面。如下图。

image-20211115195631294

9.从上图我们可以看到,站点比较的界面上部为筛选过滤器(这个过滤器与其他过滤器使用雷 同,此处不再赘述),下部由左、中、右三块构成。左边为请求的链接列表,中间为Site Map 1 和Site Map 2的消息记录,右边为消息详细信息。当我们选择Site Map 1某条消息记录 时,默认会自动选择Site Map 2与之对应的记录,这是有右上角的【同步选择】勾选框控制 的,同时,在右边的消息详细区域,会自动展示Site Map 1与Site Map 2通信消息的差异,包含请求消息和应答消息,存在差异的地方用底色标注出来。

image-20211115195942823

攻击面分析:

攻击面分析是Burp Suite 交互工具(Engagement tools)中的功能,这里我们先看看Analyze Target使用。

1.首先,我们通过站点地图,打开 Analyze Target,如图所示。

image-20211115200053267

2.在弹出的分析界面中,我们能看到概况、动态URL、静态URL、参数4个视图。

image-20211115200145326

3.概况视图主要展示当前站点动态URL数量、静态URL数量、参数的总数、唯一的参数名数 目,通过这些信息,我们对当前站点的总体状况有粗线条的了解。

4.动态URL视图展示所有 动态的URL请求和应答消息,跟其他的工具类似,当你选中某一条消息时,下方会显示此消 息的详细信息。

image-20211115200312753

5.静态URL视图与动态URL视图类似,如图

image-20211115200353400

6.参数视图有上中下三部分组成,上部为参数和参数计数统计区,你可以通过参数使用的次数 进行排序,对使用频繁的参数进行分析;中部为参数对于的使用情况列表,记录对于的参数 每一次的使用记录;下部为某一次使用过程中,请求消息和应答消息的详细信息。

image-20211115200451761

在使用攻击面分析功能时,需要注意,此功能主要是针对站点地图中的请求URL进行分析, 如果某些URL没有记录,则不会被分析到。同时,在实际使用中,存在很点站点使用伪静 态,如果请求的URL中不带有参数,则分析时无法区别,只能当做静态URL来分析。

intruder模块使用

在渗透测试过程中,我们经常使用Burp Intruder,它的工作原理是:

Intruder在原始请求数据的基础上,通过修改各种请求参数,以获取不同的请求应答。每一次请求中,Intruder通常会 携带一个或多个有效攻击载荷(Payload),在不同的位置进行攻击重放,通过应答数据的比对分析来获得需要的特征数据。Burp Intruder通常被使用在以下场景:

  1. 标识符枚举 Web应用程序经常使用标识符来引用用户、账户、资产等数据信息。例如, 用户名、文件ID和账户号码。

  2. 提取有用的数据。在某些场景下,而不是简单地识别有效标识符,你需要通过简单标识符,提取一些其他的数据。比如说,你想通过用户的个人空间id,获取所有用户在个人空间标准的昵称和年龄。

  3. 模糊测试,很多输入型的漏洞,如SQL注入,跨站点脚本和文件路径遍历。可以通过请求参数提交各种测试字符串,并分析错误消息和其他异常情况,来对应用程序进行检测。由 于的应用程序的大小和复杂性,手动执行这个测试是一个耗时且繁琐的过程。这样的场 景,您可以设置Payload,通过Burp Intruder自动化地对Web应用程序进行模糊测试。

具体操作流程不赘述。options也不赘述了。

payload攻击类型

目前攻击类型主要有四种:

  • 狙击手模式(Sniper)——它使用一组Payload集合,依次替换Payload位置上(一次攻击只能使用一个Payload位置)被§标志的文本(而没有被§标志的文本将不受影响),对 服务器端进行请求,通常用于测试请求参数是否存在漏洞。
  • 攻城锤模式(Battering ram)——它使用单一的Payload集合,依次替换Payload位置上被§标志的文本(而没有被§标志的文本将不受影响),对服务器端进行请求,与狙击手 模式的区别在于,如果有多个参数且都为Payload位置标志时,使用的Payload值是相同的,而狙击手模式只能使用一个Payload位置标志。
  • 草叉模式(Pitchfork )——它可以使用多组Payload集合,在每一个不同的Payload标志位置上(最多20个),遍历所有的Payload。举例来说,如果有两个Payload标志位置, 第一个Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起两次攻击,第一次使用的Payload分别为A和C,第二次使用的Payload分别为B和D。
  • 集束炸弹模式(Cluster bomb) 它可以使用多组Payload集合,在每一个不同的Payload 标志位置上(最多20个),依次遍历所有的Payload。它与草叉模式的主要区别在于,执行Payload数据Payload组的乘积。举例来说,如果有两个Payload标志位置,第一个 Payload值为A和B,第二个Payload值为C和D,则发起攻击时,将共发起四次攻击,第 一次使用的Payload分别为A和C,第二次使用的Payload分别为A和D,第三次使用的 Payload分别为B和C,第四次使用的Payload分别为B和D。

payload类型与处理

在Burp Intruder的Payload选项卡中,有Payload集合的设置选项,包含了经常使用的Payload 类型,共18种。

image-20211118210101952

分别是:

简单列表(Simple list)

——最简单的Payload类型,通过配置一个字符串列表作为 Payload,也可以手工添加字符串列表或从文件加载字符串列表。其设置界面如下图:选择的Payload列表中,已经预定义了一组简单Payload列表,包括XSS脚本、CGI 脚本、SQL注入脚本、数字、大写字母、小写字母、用户名、密码、表单域的字段名、 IIS文件名和目录名等等,比较方便。

image-20211118210359162

运行时文件(Runtime file)

——指定文件,作为相对应Payload位置上的Payload列表。

其设置界面如下图:

image-20211118210646569

当我们如上图所示操作,指定Payload set的位置1使用的Payload类型为Runtime file时,下方 的Payload Options将自动改变为文件选择按钮和输入框,当我们点击【select file】选择 文件时,将弹出图中所示的对话框,选择指定的Payload文件。运行时,Burp Intruder将 读取文件的每一行作为一个Payload。

自定义迭代器(Custom iterator)

——这是一款功能强大的Payload,它共有8个占位, 每一个占位可以指定简单列表的Payload类型,然后根据占位的多少,与每一个简单列表 的Payload进行笛卡尔积,生成最终的Payload列表。

例如,某个参数的值格式是 username@@password,则设置此Payload的步骤是:

位置1,选择Usernames image-20211118211432235

位置2,输入值@@

image-20211118211517984

位置3,选择passwords

image-20211118211603669

开始攻击后payload如下

image-20211118211736789

字符串替换(Character substitution)

——顾名思义,此种Payload的类型是对预定义的 字符串进行替换后生成新的Payload。

比如说,预定义字符串为ABCD,按照下图的替换 规则设置后,将对AB的值进行枚举后生成新的Payload。 image-20211118212316190

生成的payload如下

image-20211118212405399

大小写替换(Case modification)

——对预定义的字符串,按照大小写规则,进行替换。

比如说,预定义的字符串为Alan Walker,则按照下图的设置后,会生成新的 Payload。

image-20211118212935624

生成规则由上而下依次是:No change(不改变,使用原始字符串)、To lower case(转为小写字母)、To upper case(转为大写字母)、To Propername(首字母大 写,其他小写)、To ProperName(首字母大写,其他不改变)。

生成的payload如下

image-20211118212852527

递归grep(Recursive grep)

——此Payload类型主要使用于从服务器端提取有效数据的 场景。需要先从服务器的响应中提取数据作为Payload,然后替换Payload的位置,进行攻击。它的数据来源于原始的响应消息,基于原始响应,在Payload的可选项设置 (Options)中配置Grep规则,然后根据grep去提取数据才能发生攻击。

比如,我在 grep extract 中设置取服务器端的EagleId作为新的Payload值。

位置

image-20211118214523727

设置内容:

image-20211118214553768

ok后完成payload设置

image-20211118214818818

当我发起攻击时,Burp会对每一次响应的消息进行分析,如果提取到了EagleId的值,则 作为Payload再发生一次请求。操作图如下:

image-20211118214856873

可以看到请求序号为偶数的消息的Payload是上一次服务器端响应的报文中的EagleId值。

不合法的Unicode编码(Illegal Unicode)

—— 在payloads里用指定的不合法Unicode 编码替换字符本身,从这些Payload列表里产生出一个或者多个有效负荷。在尝试回避基于模式匹配的输入验证时,这个有效负荷会有用的。

例如,在防御目录遍历攻击时../和..序列的期望编码的匹配。其配置界面如下:

image-20211123134936839

上图中的配置选项主要用来控制不合法编码的生成,各项的含义如下:

  • 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)

——这种类型的Payload是指使用一个给出的输入字符串, 根据指定的设置产生指定大小的字符块,表现形式为生成指定长度的字符串。它通常使用于边界测试或缓冲区溢出。

image-20211123135739175

  • Base string 是指设置原始字符串
  • Min length是指Payload的最小长度
  • Max length 是指 Payload的最大长度
  • Step是指生成Payload时的步长。

如上图的配置后,生成的Payload 如下图所示:

image-20211123135941195

数字类型(Number)

——这种类型的Payload是指根据配置,生成一系列的数字作为 Payload。它的设置界面如下:

image-20211123140112920

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

日期类型(Dates)

——这种类型的Payload是指根据配置,生成一系列的日期。界面如 下

image-20211123140528748

暴力字典(Brute forcer)

——此类Payload生成包含一个指定的字符集的所有排列特定长度的有效载荷,通常用于枚举字典的生成,其设置界面如下:

image-20211123140829765

  • Character set 表示生成字典的数据集,从此数据集中抽取字符进行生成。
  • Min length表 示生成Payload的最小长度
  • Max length表示生成Payload的最大长度。

空类型(Null payloads)

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

image-20211123141119823

在配置Payload生成方式时,它有两个选项,:

  • 我们可以指定生成(Generate)多少 Payload
  • 也可以设置为一直持续攻击(Continue indefinitely)

字符frobber(Character frobber)

——依次修改指定字符串在每个字符位置的值,每次都是在原字符上递增一个该字符的ASCII码。

它通常使用于测试系统使用了复杂的会话令牌的部件来跟踪会话状态,当修改会话令牌中的单个字符的值之后,您的会话还是进行了处理,那么很可能是这个令牌实际上没有被用来追踪您的会话。其配置界面如图:

image-20211123141523101

执行后生成的payload如下:

image-20211123141618516

Bit翻转(Bit flipper)

——对预设的Payload原始值,按照比特位,依次进行修改。它的设置界面如下图:

image-20211123141733364

  • Operate on 指定是对Payload位置的原始数据进行Bit翻转还是指定值进行Bit翻转

  • Format of original data 是指是否对原始数据的文本意义进行操作,还是应该把它当作ASCII十六进制

  • Select bits to flip是指选择翻转的Bit位置。 可以配置基于文本意义进行操作,或基于ASCII十六进制字符串进行翻转。例如,如果原始值 是“ab”,基于文本意义的翻转结果是:

    `b
    cb
    eb
    ib
    qb
    Ab
    !b
    ¡b
    ac
    a`
    af
    aj
    ar
    aB
    a"
    a¢

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

    aa
    a9
    af
    a3
    bb
    8b
    eb
    2b

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

用户名生成器(Username generator)

这种类型的Payload主要用于用户名和email帐号 的自动生成,其设置界面如下图:

image-20211123143255459

执行生成payload如下:

image-20211123143321200

ECB 加密块洗牌(ECB block shuffler)

——这种类型的Payload是基于ECB加密模式的 Payload生成器。其原理是因为 ECB加密模式中每组64位的数据之间相互独立,通过改变分组数据的位置方式来验证应用程序是否易受到攻击。

其设置界面如下图:

image-20211123143540848

Burp Payload生成插件(Extension-generated)

——这种类型的Payload是基于Burp插件来生成Payload值,因此使用前必须安装配置Burp插件,在插件里注册一个Intruder payload生成器,供此处调用。

image-20211123143727838

Payload复制(Copy other payload)

——这种类型的Payload是将其他位置的参数复制到 Payload位置上作为新的Payload值,通常适用于多个参数的请求消息中,它的使用场景可能是:

1.两个不同的参数需要使用相同的值,比如说,用户注册时,密码设置会输 入两遍,其值也完全一样,可以使用此Payload类型。

2.在一次请求中,一个参数的值是基于另一个参数的值在前端通过脚本来生成的值,可以使用此Payload类型。

它的设置界 面和参数比较简单,如下图所示,其中Payload位置的索引值就是指向图中Payload set的 值。

image-20211123144109255

macros(宏)的使用

Burpsuite的宏(Macros),是一个预先定义好的HTTP请求序列,这个序列中可以包含一个或多个HTTP请求。在Burpsuite的会话管理规则(Session Handling Rules)中使用宏,可以完成多种任务,典型的使用方式包括:

  • 通过页面的跳转验证当前的会话是否仍然有效
  • 执行登陆动作获取新的有效会话
  • 获取前一次HTTP请求响应的Token或其它参数,作为后续请求的输入参数(如CSRF Token的绕过)
  • 扫描或模糊测试时,执行一些先前请求,确保扫描请求能被正常执行
  • 测试请求执行之后,执行后续的请求操作(如结合Intruder使用不同账号登陆后进行批量投票)

使用宏对有token验证的网站后台密码破解,具体操作在day20中写到


文章作者: 晓莎K
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 晓莎K !
评论
  目录