在扫描、实时审计还有攻击测试的时候,资源池要怎么配置,以及它的并发数跑起来不太稳,碰到这种情况,主要得先分清楚当前跑的到底是扫描器、实时审计,还是攻击任务,Burp Suite里的资源池,作用是让好几个任务共享同一套网络资源配额,用它来控制同一时间发出去的请求数量,还有请求往外发的速度,如果没有手动去选一个资源池,扫描任务就会自己去用系统默认的那个,这个资源池主要是给扫描和实时审计这类任务用的,对于被动爬取那类任务,它并不适用。
一、资源池要怎么配置
在配置BurpSuite资源池的时候,不能只盯着并发数量看,还得把目标站点自己能扛住多大压力、当前登录状态是不是稳定、代理的网络环境,还有任务本身是什么类型,这些因素结合到一起来设置,配置的入口有两个,一个是在新建任务的时候顺手就选了,另一个是在项目设置里进行统一管理。
1、在扫描任务里面创建一个资源池
新建扫描任务时,在向导里把扫描范围和配置都弄完以后,就切到资源池那个页面,在里面选上新建一个资源池的选项,给它起一个名字,再把最大并发请求数,还有每个请求之间要间隔多长时间,这两项设好,保存完以后启动扫描,这个资源池就会跟着这个任务一起建好,放在那里等后面的其他任务再来选它用。
2、到项目设置里面统一管理
要是希望能提前准备好几套不同配置的资源池,就可以去点一下顶部的设置按钮,进到项目下面的任务管理,找到资源池的设置页面,在这里用新建按钮去创建新的资源池,或者用编辑按钮去改一下已有的,很适合建立起“低并发扫描”“普通测试”“重点接口验证”这样不同力度的配置,后面再建任务的时候直接选一个用就行。
3、给攻击任务单独分配一个
攻击这个任务也是可以去用资源池的,进到攻击器里面,找到任务配置的地方,把资源池的侧边栏打开,在里面选一个已经建好的,或者点一下新建按钮再去建一个,有一点需要注意,攻击任务那种压测的感觉会更强烈,并发数要是设得太高了,非常容易触发目标那边的限流,或者直接把会话状态给弄没了,所以不要直接把扫描任务那套配置原封不动地套过来用。
二、资源池并发不稳定要怎么调整
BurpSuite的并发跑起来不稳定,常见的表现有请求速度一会儿快一会儿慢、响应老是超时、登录状态动不动就掉了、跑出来的结果一大堆都是报错,又或者是服务器那边开始返回限流或者服务不可用的状态码了,一碰到这些情况,先不要想着再去把并发往大了加,正确的做法是把资源池参数朝着能让它稳下来的方向去调。
1、先把最大并发请求数降下来
进到对应那个资源池的设置里面,把最大并发请求数这个值往小了调,比如说原来设的是二十个,那就可以先把它减到五个,然后再去观察一下请求的成功率怎么样了、响应时间变没变,还有报错数量有没有少下去,官方在做性能排查的时候给出的建议也是,当目标已经没办法承受请求的速度了,那就得去减少同一时间发出去的请求数量。
2、把请求之间的间隔加大一点
在请求间隔那个设置里面,增加一个毫秒级别的延迟,设一个固定延迟适合拿来让请求的节奏变得更平稳,设一个随机延迟适合用来减少请求集中在一起冲过去的冲击力,而设一个慢慢往上加的延迟,则比较适合用来观察在没有请求的这段时间里,那个会话大概多久就会过期,请求之间的间隔也不是设得越大就越好,只要调到错误明显变少、扫描也能继续推得动,这就行了。
3、把自动节流功能打开
要是目标站点已经开始往回返限流或者服务不可用的状态码了,那就可以把自动节流这个功能打开,让Burp在看到指定的那种响应码时自己主动把请求速度放慢下来,官方文档也提醒过,不要把那类普通的成功响应码设成节流的触发条件,比如返回成功的那种,要不然扫描效率会掉得很明显。
4、把不同的任务拆到不同的资源池里面
千万不要把全站爬取、主动扫描还有攻击任务,全都一股脑儿塞进同一个高并发的资源池里面,可以让全站扫描用一个低并发在那儿慢慢跑着,给重点接口验证分配一个优先级更高的资源池,而攻击任务就另外再去设一个它自己独用的资源池,Burp也是支持的,可以在它跑着的过程当中把任务挪到别的资源池里面,用这个办法就能临时把压力降一降,或者把某个任务的优先级提上去。
三、资源池调整的结果要怎么判断
资源池参数调完以后到底有没有效果,不能光看那个任务是不是跑完了,而是得去看它的错误率、响应时间、登录状态,还有有效且有用的结果数量,这几样东西是不是都稳住了,在并发数设得太高的时候,扫描看着好像跑得飞快,可实际上拿回来的很有可能是一大堆超时,还有那种根本没有用的响应。
1、看一看响应码的变化情况
把调整前和调整后那种限流的、服务不可用的、超时的还有连接失败的数量拿出来对比一下,要是把并发降下来以后这些异常数目有了很明显的减少,那就说明原来那个资源池的配置超出了目标能够承受的范围。
2、看一看登录状态是不是还在
有不少业务系统一旦并发上来了,就会导致验证码、防止跨站攻击的令牌还有会话状态的异常,只要发现登录状态在频繁地丢,那就应该继续把并发往下降,把请求间隔再拉开一点,并且去检查一下登录的录制或者是认证的配置有没有出问题。
3、看一看任务类型是不是对得上
要是你在用那种像递归搜索一样,需要依赖前一个请求的结果才能继续往下走的攻击载荷,那这个时候资源池的最大并发数就一定得把它死死地设成一,不然请求的顺序就会被搞乱,最后跑出来的结果也就不会稳定了。
总结
BurpSuite的资源池要怎么去配置,还有当它并发跑起来不稳的时候又要怎么去调整,这其中的关键就是得按照任务的类型去设置一个合适的并发数和延迟,扫描任务可以在创建任务时资源池那个页面里去建,想要统一管理就可以到设置里面的项目任务栏去完成,而攻击任务就需要单独评估一下它在并发上的风险,当并发不稳的时候先把最大并发请求数降下来,再把请求间隔加上去,必要的时候再把自动节流打开,并且把资源池拆分开,这么做下来拿到手的测试结果比盲目追求速度要可靠得多。
