Exemple #1
0
    def process(self, prio, fuzz_res):
        # Getting results from plugins or directly from http if not activated
        enq_item = 0
        plugin_name = ""

        # Check for plugins new enqueued requests
        while fuzz_res.plugins_backfeed:
            plg_backfeed = fuzz_res.plugins_backfeed.pop()
            plugin_name = plg_backfeed.source

            self.stats.backfeed += 1
            self.stats.pending_fuzz += 1
            self.send(plg_backfeed)
            enq_item += 1

        if enq_item > 0:
            plres = PluginResult()
            plres.source = "Backfeed"
            fuzz_res.plugins_res.append(plres)
            plres.issue = "Plugin %s enqueued %d more requests (rlevel=%d)" % (
                plugin_name, enq_item, fuzz_res.rlevel)

        # check if recursion is needed
        if self.max_rlevel >= fuzz_res.rlevel and fuzz_res.is_path():
            self.send_new_seed(fuzz_res)

        # send new result
        self.send(fuzz_res)
Exemple #2
0
 def run(self, fuzzresult, control_queue, results_queue):
     try:
         self.results_queue = results_queue
         self.base_fuzz_res = fuzzresult
         self.process(fuzzresult)
     except Exception, e:
         plres = PluginResult()
         plres.source = "$$exception$$"
         plres.issue = "Exception within plugin {0!s}: {1!s}".format(
             self.name, str(e))
         results_queue.put(plres)
Exemple #3
0
    def send_new_seed(self, res):
        # Little hack to output that the result generates a new recursion seed
        plres = PluginResult()
        plres.source = "Recursion"
        plres.issue = "Enqueued response for recursion (level=%d)" % (
            res.rlevel)
        res.plugins_res.append(plres)

        # send new seed
        self.stats.pending_seeds += 1
        self.send(res.to_new_seed())
Exemple #4
0
    def add_result(self, issue):
        plres = PluginResult()
        plres.source = self.name
        plres.issue = issue

        self.results_queue.put(plres)