灵活的修改
Burp请求
Burp
的Match and Replace
功能来实现,加解密也有一些插件可以实现,但是它们普遍存在着以下缺陷:-
自定义数据不能进行保存
-
加解密不能灵活的指定位置
Python Scripter: https://github.com/PortSwigger/python-scripter
01
简介
brief introduction
首先是将请求信息传递给用户自定义脚本的集合中,然后每个脚本分别对请求信息进行处理
这里的处理其实就是用户编译代码通过后,把操作Burp
的接口作为全局变量传递进去并执行
这就实现了以插件“写”插件。
02
完善
perfect
https://github.com/lanmaster53/pyscripter-er/blob/master/pyscripterer.py
则成功的将其变为了现实。其定义了一个接受messageInfo
等请求信息的Class
,并且提供了许多写好的方法以便于更新请求信息,例如删除一个请求头,可以这么写:这样任何请求都将不存在Sec-Ch-Ua-Mobile
这个字段,remove_request_headers
就是pyscripter-er
中定义好的一个方法,主要作用就是遍历移除指定header_name
开头的haeder
字段并重新构造请求包
如果要增加新的通用函数只需要在pyscripterer
中进行修改即可,比如增加一个添加请求头的方法
03
实战
actual combat
接下来用实战来检验下,在测试某个网站时碰到了如下加密请求
通过分析JS
发现其加密算法是base64
加上一定的换位:
那我们的思路就是每次请求时找到jsonparams
这个参数,并对其进行加密,这样在发送请求时我们看到的参数就是未加密的了,方便我们在repeater
进行测试。首先创建一个函数用于获取参数,根据参数名遍历即可
删除找到的参数,之后重新创建一个新的参数,其值为加密后的值
加密函数
结合起来调用
当我们发送请求
jsonparams={"UserId":"1234"}
可以从logger
中观测到其发生了变化,在intruder
中的请求也会发生变化,再碰到需要爆破的场景时也是很实用的。
除了对请求处理之外,我们也可以对响应做处理,而且操作结果会直接在当前页面里显现出来,不会像请求一样需要在日志里查看其修改结果,可以很好的解决响应内容加密的问题。还拿上面的请求为例,其响应内容是未加密的,这里给它做一次加密,简单的对相应内容做一次替换:
使用base64
进行加密
最终的结果如下
04
总结
summary
python-scripter
可以灵活的写出适用于不同场景下的插件,同时可以将其保存为模板,方便之后遇到相似情况下的使用。本次虽然遇到的加密算法比较简单,但是以python
执行jS
的便捷,相信再复杂些的算法也能很快的实现。pyscripterer
已上传至github
:https://github.com/No4l/python-scripter/blob/main/pyscripterer.py原文始发于微信公众号(RainSec):《灵活的修改Burp请求》
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论