예제 #1
0
    def get_fuzzable_request(self,
                             discover_fuzzable_headers=False,
                             discover_fuzzable_url_parts=False):
        """
        Creates a fuzzable request by querying different parts of the spec
        parameters, operation, etc.

        :param discover_fuzzable_headers: If it's set to true,
                                          then all fuzzable headers will be added to the fuzzable request.
        :param discover_fuzzable_url_parts: If it's set to true,
                                            then all fuzzable url parts will be added to the fuzzable request.

        :return: A fuzzable request.
        """
        method = self.get_method()
        uri = self.get_uri()
        headers = self.get_headers()
        data_container = self.get_data_container(headers)

        fuzzable_request = FuzzableRequest(uri,
                                           headers=headers,
                                           post_data=data_container,
                                           method=method)

        if discover_fuzzable_headers:
            fuzzable_request.set_force_fuzzing_headers(
                self._get_parameter_headers())

        if discover_fuzzable_url_parts:
            fuzzable_request.set_force_fuzzing_url_parts(self._get_url_parts())

        return fuzzable_request
예제 #2
0
    def test_forced_url_parts(self):
        freq = FuzzableRequest(URL('http://www.w3af.com/static/foo/bar.ext'))
        freq.set_force_fuzzing_url_parts([('/static/', False), ('foo', True),
                                          ('/bar.', False), ('ext', True)])

        generated_mutants = URLPartsMutant.create_mutants(
            freq, self.payloads, [], False, self.fuzzer_config)

        expected_urls = [
            'http://www.w3af.com/static/abc/bar.ext',
            'http://www.w3af.com/static/def/bar.ext',
            'http://www.w3af.com/static/foo/bar.abc',
            'http://www.w3af.com/static/foo/bar.def'
        ]

        generated_urls = set(
            [m.get_url().url_string for m in generated_mutants])

        self.assertEqual(set(expected_urls), generated_urls)