Burpsuite macros(宏)的使用
场景:web访问中需要将第一个数据包的返回内容作为第二个数据包的参数值。如:将111.php返回包中的时间戳1528180478自动加载为222.php?uid=的参数值,以便进行重放或者爆破。
Burpsuite macros(宏)的使用 - 图1

步骤一:新建macros(宏)

通过宏录制,实现自动更新数据包内容。
首先抓取相关的两个请求包,并在【Project options】中创建macro
Burpsuite macros(宏)的使用 - 图2
Burpsuite macros(宏)的使用 - 图3
选择需要进行宏录制的两个数据包:(第一个包是用来获取返回包中需要的内容,第二个包是用来重载匹配到的uid的值)
Burpsuite macros(宏)的使用 - 图4
① 选择第一个数据包(提取内容的数据包)进行add操作:
Burpsuite macros(宏)的使用 - 图5
在响应包中选择需要匹配的内容,可正则。操作过程中建议将Parameter name设置为需要进行更新的参数名uid,方便识别。
Burpsuite macros(宏)的使用 - 图6
Burpsuite macros(宏)的使用 - 图7
OK后,配置第二个数据包(需要更新参数值的包)
Burpsuite macros(宏)的使用 - 图8
选择parameter handling值为第一个请求的匹配值。
Burpsuite macros(宏)的使用 - 图9
到此,宏录制完成。可通过Test macro进行验证,是否能自动将第一个数据包的返回值加载到第二个数据包的uid参数中。
Burpsuite macros(宏)的使用 - 图10

第二步:设置需要生效的模块

宏录制完成后,需要在Project options 的sessions中设置其触发的场景。
① 添加session handling rules:
Burpsuite macros(宏)的使用 - 图11
在弹出的rule actions中选择run a post-request macro。
_注意:_
run a macro是直接运行宏,不会更新相关模块数据包中的内容,类似于创建一个子进程,;
run a post-request macro会更改模块中的的数据包,类似于hook。所以如果想使用repeater或者intruder的话,选择的是run a post-request macro
Burpsuite macros(宏)的使用 - 图12
② 选择录制好的宏,并添加需要更新的参数名,这里为uid:
Burpsuite macros(宏)的使用 - 图13
③ 接下来可以设置一系列Scope,用于限制宏的生效模块、生效的网站、生效的参数:
④ Tool Scope:限制生效的模块
Burpsuite macros(宏)的使用 - 图14
⑤ URL scope:限制生效的域名和路径(这样就不会影响其他网站的相关参数)
Burpsuite macros(宏)的使用 - 图15
⑥ Parameter Scope:限制包含定义了如下参数的请求:
Burpsuite macros(宏)的使用 - 图16
设置完成后,可以精确到指定的功能点,而不会影响其他数据包的正常使用。
截图中设置的是在repeater和intruder中生效,将222.php数据包发送到repeater中,点击go,便会自动获取到宏中匹配到的内容,并更新到uid。
Burpsuite macros(宏)的使用 - 图17