标签(空格分隔): web扫描器
- FuzzableRequest 处理流程概述
- _input和output的关联处理详细流程图
- FuzzableRequest _input处理详细流程图
- FuzzableRequest output处理详细流程图
FuzzableRequest 处理流程概述
FuzzableRequest的处理过程通过queue实现,即生产者消费者模式,生产者队列list为:
_input = [self._seed_producer, self._discovery_consumer,
self._bruteforce_consumer]
消费者队列list为:
output = [self._audit_consumer, self._discovery_consumer,
self._bruteforce_consumer]
通过函数 _route_one_fuzzable_request_batch(_input, output, finished, consumer_forced_end)
_input = [self._seed_producer, self._discovery_consumer,
self._bruteforce_consumer]
output = [self._audit_consumer, self._discovery_consumer,
self._bruteforce_consumer]
进行FuzzableRequest的处理,接下来分从_input、output以及_input和output的关联进行阐述。
_input和output的关联处理详细流程图
1、进入strategy.py的start函数,开启整个扫描策略
2、_fuzzable_request_router,这个函数主要是把fuzzable_request写入_input以及从ouput取数据,并进入audit、crawl等插件进行处理
3、_route_one_fuzzable_request_batch,这个函数主要是是协调_input和output两个queue list
注释:
set_consumers_to_none
位置:/w3af/w3af/core/controllers/core_helpers/strategy.py
seed
FuzzableRequest _input处理详细流程图
_input以self._seed_producer为例。
1、set_consumers_to_none函数,通过seed(self._w3af_core)根据初始用户输入的url进行配置;
2、seed函数,通过seed_output_queue根据target_urls(初始用户指定url)获取第一批需要检测的url,然后通过_out_queue.put(),压入_out_queue队列。
注释:
set_consumers_to_none
位置:/w3af/w3af/core/controllers/core_helpers/strategy.py
seed
位置:/w3af/w3af/core/controllers/core_helpers/consumers/seed.py
seed_output_queue位置:在seed类
FuzzableRequest output处理详细流程图
_input以self._audit_consumer为例。
1、_setup_audit函数初始化用户配置的audit插件
2、base_consumer,audit调用其基类base_consumer.py的_consume_wrapper方法,该方法调用_consume(work_unit),消费in_queue队列的FuzzableRequest
注释:
_setup_audit
位置:/w3af/w3af/core/controllers/core_helpers/strategy.py
audit
位置:/w3af/w3af/core/controllers/core_helpers/consumers/audit.py
_consume_wrapper:
位置:/w3af/w3af/core/controllers/core_helpers/consumers/base_consumer.py