Burpsuite测试
准备工具
工具 | 下载地址 | 用途 |
---|---|---|
JDK | http://jdk.java.net/16 | Burpsuite的运行时环境 |
Burpsuite Loader | https://github.com/h3110w0r1d-y/BurpLoaderKeygen | 破解Burpsuite |
Burpsuite | https://portswigger.net/burp | Burpsuite主程序 |
浏览器 | - | 进行获取证书等操作,建议使用firefox,因为firefox的证书管理独立于系统 |
准备环境
以Linux系统为例
环境变量 | 路径 | 说明 |
---|---|---|
TOOLS_PATH | /data/tools | 存放工具的路径 |
BURPSUITE_HOME | $TOOLS_PATH/burpsuite | burpsuite及burpsuite loader存放路径 |
JAVA_HOME | $TOOLS_PATH/jdk-16 | JDK的存放路径 |
- 解压JDK到
$JAVA_HOME
路径下; - 下载Burpsuite到
$BURPSUITE_HOME/BurpLoaderKeygen.jar
; - 下载Burpsuite Loader到
$BURPSUITE_HOME/burpsuite2021.8.3.jar
。
穷人专属操作(只需操作一次)
Burpsuite Pro版本是需要付费的,所以穷人需要使用Loader。
- 运行Loader,获取License。
$JAVA_HOME/bin/java -jar $BURPSUITE_HOME/BurpLoaderKeygen.jar
- 通过Loader启动Burpsuite进行激活
$JAVA_HOME/bin/java -javaagent:$BURPSUITE_HOME/BurpLoaderKeygen.jar -noverify --illegal-access=permit -jar $BURPSUITE_HOME/burpsuite2021.8.3.jar
- 将Loader显示的License粘贴到Burpsuite窗口中
- 选择手动激活
- 将Burpsuite窗口中的Activation Request复制,粘贴到Loader窗口的对应输入栏
- 将Loader窗口中Activation Response内容复制,粘贴到Burpsuite窗口的对应输入栏 完成以上动作后,激活完成。
为方便日后使用,可创建$BURPSUITE_HOME\burpsuite.sh
脚本,内容如下
#!/bin/bash
$JAVA_HOME/bin/java -javaagent:$BURPSUITE_HOME/BurpLoaderKeygen.jar -noverify --illegal-access=permit -jar $BURPSUITE_HOME/burpsuite2021.8.3.jar
给$BURPSUITE_HOME\burpsuite.sh
脚本添加执行权限,之后每次使用只需要调用$BURPSUITE_HOME\burpsuite.sh
脚本即可。
准备工作
设置代理
- 打开Burpsuite后,进入"Proxy"标签页,选择"Options"标签。
- 查看"Proxy Listeners"设置中的内容,默认监听地址为"127.0.0.1:8080",如需修改,可以单击对应item,再点击左侧的"edit"进行修改。
- 在浏览器(如火狐浏览器,则只需要修改浏览器内的代理配置)或系统网络代理中修改代理配置,将HTTP和HTTPS代理指定到"Proxy Listeners"中的地址。
- 使用已被代理的网络工具访问https://burp/cert 该URL会返回HTTPS证书,需要在被代理的网络工具上信任该证书。
配置验证
HTTP请求拦截验证
打开http://baidu.com。
如代理配置正确,请求将会被拦截,可在Burpsuite窗口的"Proxy"标签页,"Intercept"标签下看到被拦截的请求。
如代理配置错误,将查看不到对应请求。
HTTPS请求拦截验证
打开https://baidu.com。
如证书信任配置正确,请求将会被拦截,且能看到明文内容。
如证书信任配置错误,请求也会被拦截,但内容为乱码。
常用模块
Proxy模块
当代理配置完成后,网络资源请求均会被Proxy模块拦截到。
我的应用场景:前后端联调,尤其是前后端均找不出问题,但功能依然异常时,使用该模块查看请求和响应的hex值,总能发现问题。
Intercept
该标签下的功能为网络请求的拦截与修改,高级一点的用法是拦截到请求后,将请求发送给Burpsuite的其他模块,以进行爆破、重放等操作。
该标签下拦截到的请求内容及响应内容都是可编辑的,编辑框里的内容就是Forward出去的内容,误修改要及时ctrl+z
- 点击"Forward"将此次请求放行;点击"Drop"会将此次请求丢弃,浏览器上的表现就是请求失败;点击"Intercept is on"会将本次及以后的请求全部放行,直至点击"Intercept is off"。
- 如需拦截请求的响应内容,可点击"Action" -> "Do intercept" -> "Response to this request"。
HTTP history
该标签下的功能就是记录HTTP(S)的请求及响应,如果有需要发送到其他模块的请求,但是在"Intercept"时忘了发送,可在这里找到对应请求再发送给其他模块。
Webockets history
功能与HTTP history相同。
Options
配置监听、请求及响应拦截规则、自动修改响应内容等,一般情况下不需要修改。
Repeater模块
该模块用来做重放测试,可以当Postman使用,但不建议(因为旧版本保存repeater总是有问题)。
我的应用场景:接口功能测试。
Repeater的数据来源主要有两处:
- Repeater 中自行创建。单击铅笔图标,指定host及port,在"Request"中写完整的HTTP请求,比较麻烦;
- Proxy模块发送过来的请求。拦截到请求后点击"Action" -> "Send to repeater",比较简单。
Repeater的内容可随意编写,完成后点击"Send"按钮,即可发送请求。
当有大量Repeater请求时,标签名是1、2、3、4...会很不方便,给标签重命名的方式是双击标签名。
Intruder模块
该模块功能较为危险,主要用来做爆破攻击。
我的应用场景:刷接口请求次数等爆破类行为。
该模块对于开发人员用处不大,且用法非常复杂,针对不同的业务有不同的配置方式,所以该模块建议自行研究。
Extender模块
该模块就是用来安装扩展的,使用Java或Python写自己的扩展,然后通过这个模块安装到Burpsuite上。