BurpSuite在Web渗透中的实战技巧
CTF论剑场-文件包含
朋友们,今天咱们不聊那些大道理,就来唠唠我手里这把“瑞士军刀”——BurpSuite。说真的,干我们这行的,谁电脑里没装个Burp呢?但说实话,早年我刚用它的时候,也就知道个拦截改包,感觉跟个高级点的Fiddler似的。直到后来在实战里被现实毒打了几次,才真正摸到点门道,发现它那些藏在角落里的技巧,才是真能救命的玩意儿。
你以为的“重放”,和真正的“重放攻击”
我最开始用Repeater模块,就觉得是改个参数重发一下,看看返回。太天真了。有一次碰上一个登录接口,试了常见的SQL注入、弱口令都没戏。我百无聊赖地在Repeater里把同一个正确密码的请求连着发了五六次。你猜怎么着?第五次的时候,服务器居然返回了“密码错误次数过多,请一小时后重试”。我一下就精神了!这说明服务端是有登录失败计数器的,但它的校验逻辑可能在前端或者有延迟。
我立刻换了个思路,用Intruder模块,把“重放”这件事自动化、规模化。设置好Payload,用Pitchfork攻击模式,一个Payload位置放正确的用户名,另一个位置放我准备的密码字典,然后设置一个超长的线程间隔,比如30秒发一次。就这么慢悠悠地“磨”了一下午,愣是没触发那个锁账号的机制,最后还真撞出了一个弱密码。那次之后我才明白,Burp的重放功能,配合不同的节奏和策略,本身就是一种温和却有效的暴力破解。
“Comparer”不止于比较
Comparer这个工具,我估计很多人点开的次数屈指可数。不就是比对比对两个响应包哪里不一样嘛?有一次审计一个查询功能,参数里有个`type`,传1返回一种数据,传2返回另一种。我用Comparer把两个响应包丢进去,单词对比模式下一眼就看到,除了数据内容不同,返回头里还有一个不起眼的`X-Total-Count`字段,值也不一样。
这个发现让我觉得有戏。我马上回到Repeater,把`type`参数改成`1'`,果然报错了,经典的SQL报错信息。你看,Comparer在这里帮我快速定位了“正常响应”的基准特征,一旦出现偏差(比如多了个报错信息),我就能立刻警觉。它像个放大镜,帮我看到了那些肉眼扫过去绝对会忽略的细微差别。
“拦截”的艺术:时机与修改
说到Proxy拦截,新手最爱干的就是打开拦截,然后一刷新页面,手忙脚乱地放行几十个静态资源请求,好不容易等到一个POST包,赶紧改。累不累啊?我现在的习惯是,先关闭拦截,正常浏览一遍目标,看看有哪些关键请求(比如登录、搜索、下单)。然后在Proxy的历史记录里,找到这些关键请求,右键“Send to Intruder”或者“Send to Repeater”。
更高级一点,我会用代理作用域(Target Scope)和拦截规则(Intercept Client/Server Requests)。比如,我只关心`*.target.com/api/*`的请求,那我就在作用域里设置好,然后开启“拦截范围内的请求”。这样一来,Burp就变成了一个智能过滤器,只拦住我真正想看的业务请求,那些图片、CSS、JS统统自动放行,效率提升了不止一个档次。
还有个小技巧,修改数据包时,别光盯着参数。Cookie、Referer、Origin头,甚至是一些自定义的头部,都可能藏着鉴权逻辑或者存在注入点。我遇到过最奇葩的一个漏洞,是藏在`X-Forwarded-For`这个头里的SQL注入,常规测试根本想不到那里去。
那些插件,真不是摆设
Burp的Extender模块,简直是另一个宇宙。官方的商城(BApp Store)里就有不少宝贝。像AuthMatrix,测越权的时候简直神器,不用再手工切账号改Cookie了。还有Turbo Intruder,当你想用丧心病狂的速度发请求时(比如撞验证码),它比自带的Intruder猛得多。
不过我最想推荐的,是一个叫“Collaborator Everywhere”的官方插件。这东西能自动给你经过Burp的流量里的所有外链、请求地址后面加上一个Burp Collaborator的盲注域名。有时候测SSRF或者盲注,你根本不知道服务器会不会真的发起外部请求。装上这个插件,你就等着收Collaborator的回连通知吧,那种“守株待兔”然后突然听到“叮”一声提示音的感觉,实在太美妙了。
工具嘛,用熟了就有感情。BurpSuite对我来说,早就不是冷冰冰的软件,更像是一个懂我心思的老伙计。我知道它的脾气,也知道怎么让它发挥出最大的能耐。下次再打开它的时候,不妨多点几下那些平时不用的按钮,或许你也能发现属于自己的“实战技巧”。

参与讨论
暂无评论,快来发表你的观点吧!