打开Burp Suite,使用第一眼看到的使用那个界面,大概率会让你有点懵。使用Proxy、使用Spider、使用Scanner、使用Intruder、使用Repeater……一排标签页排在上面,使用像飞机驾驶舱。使用别慌,使用常用的使用就那么几个。我用了六七年,使用真正高频的使用也就Proxy和Repeater,偶尔碰一下Intruder。使用Scanner?使用社区版根本没这功能,想用爆破模块还得掏钱买Pro。
先把代理配好,这是所有操作的地基。Burp默认监听127.0.0.1:8080,你得让浏览器的流量走这个端口。Firefox配合FoxyProxy插件最省事,点一下就能切换。Chrome的话,用SwitchyOmega也行,或者干脆启动参数挂--proxy-server。配完之后访问一个http网站,Burp的Proxy→HTTP history里应该立刻刷出记录。没刷出来?检查证书。
HTTPS流量要解密,必须装Burp的CA证书。浏览器访问http://burp,点右上角CA Certificate下载,然后导入到系统或浏览器的信任库。这一步卡住过无数人——证书没装对,history里全是CONNECT请求,看不到具体内容。macOS和Windows的导入方式不太一样,Firefox还有自己独立的证书管理,得单独再导一次。
Proxy模块里最值得花时间的是Intercept。默认是关的,打开之后每个请求都会被拦下来,你可以改参数、改Header、改Body,然后Forward放行或者Drop丢掉。测试越权漏洞的时候特别顺手:拦截一个普通用户的请求,把Cookie换成管理员的,Forward,看返回。就这么简单。不过记得测完关掉Intercept,不然正常上网会被烦死。
HTTP history才是日常用得最多的。所有经过代理的请求都在这儿,按时间倒序排列。右键任意一条记录,可以Send to Repeater、Send to Intruder、或者直接Copy as curl。我习惯先正常操作一遍目标网站,把关键请求都走一遍,然后回到history里挑出有价值的,逐个丢进Repeater慢慢磨。
Repeater就是一个手动发包的工具。左边改请求,右边看响应。改一个参数,点Send,对比两次响应的差异。找SQL注入的时候,我经常在参数后面加个单引号,看报错信息变不变。找XSS就试试<script>alert(1)</script>,看能不能原样反射回来。Repeater的好处是你可以反复微调,每次只改一个变量,观察响应长度的变化。响应长度这个指标特别有用,差几个字节往往就意味着注入成功了。
Intruder做爆破。选中要攻击的位置,点Add §,或者直接用§包裹。Payloads里选字典,Sniper模式一次只替换一个位置,Cluster bomb可以多位置组合。社区版限速严重,跑大字典基本别想。我一般只用它来测简单的验证码爆破或者用户名枚举,复杂场景还是写Python脚本更靠谱。
有个细节很多人忽略:Burp的Project options里可以设置上游代理。如果你在公司内网,或者需要走另一层代理才能出网,这里配一下就行。另外Match and Replace功能可以自动改请求头,比如把User-Agent统一换成某个值,省得每次手动改。
插件生态是Burp真正强大的地方。BApp Store里装个Logger++,请求记录比自带的history清晰得多。装个Autorize,自动跑越权测试。装个Turbo Intruder,绕过社区版的限速。不过插件别装太多,启动会变慢,内存也扛不住。
最后说个坑。Burp抓本地localhost的流量有时候会抽风,浏览器不走代理。解决办法是用127.0.0.1代替localhost,或者在Burp的Proxy设置里勾上“Support invisible proxying”。这个问题折腾过我一个下午,最后发现是hosts文件里localhost被指到了::1。