Skip to content

Burpsuite测试

准备工具

工具下载地址用途
JDKhttp://jdk.java.net/16Burpsuite的运行时环境
Burpsuite Loaderhttps://github.com/h3110w0r1d-y/BurpLoaderKeygen破解Burpsuite
Burpsuitehttps://portswigger.net/burpBurpsuite主程序
浏览器-进行获取证书等操作,建议使用firefox,因为firefox的证书管理独立于系统

准备环境

以Linux系统为例

环境变量路径说明
TOOLS_PATH/data/tools存放工具的路径
BURPSUITE_HOME$TOOLS_PATH/burpsuiteburpsuite及burpsuite loader存放路径
JAVA_HOME$TOOLS_PATH/jdk-16JDK的存放路径
  • 解压JDK到$JAVA_HOME路径下;
  • 下载Burpsuite到$BURPSUITE_HOME/BurpLoaderKeygen.jar
  • 下载Burpsuite Loader到$BURPSUITE_HOME/burpsuite2021.8.3.jar

穷人专属操作(只需操作一次)

Burpsuite Pro版本是需要付费的,所以穷人需要使用Loader。

  • 运行Loader,获取License。
shell
$JAVA_HOME/bin/java -jar $BURPSUITE_HOME/BurpLoaderKeygen.jar
  • 通过Loader启动Burpsuite进行激活
shell
$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脚本,内容如下
shell
#!/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的数据来源主要有两处:

  1. Repeater 中自行创建。单击铅笔图标,指定host及port,在"Request"中写完整的HTTP请求,比较麻烦;
  2. Proxy模块发送过来的请求。拦截到请求后点击"Action" -> "Send to repeater",比较简单。

Repeater的内容可随意编写,完成后点击"Send"按钮,即可发送请求。
当有大量Repeater请求时,标签名是1、2、3、4...会很不方便,给标签重命名的方式是双击标签名。

Intruder模块

该模块功能较为危险,主要用来做爆破攻击。
我的应用场景:刷接口请求次数等爆破类行为。
该模块对于开发人员用处不大,且用法非常复杂,针对不同的业务有不同的配置方式,所以该模块建议自行研究。

Extender模块

该模块就是用来安装扩展的,使用Java或Python写自己的扩展,然后通过这个模块安装到Burpsuite上。