Class: Watobo::Gui::FuzzerCheck

Inherits:
ActiveCheck
  • Object
show all
Defined in:
lib/watobo/gui/fuzzer_gui.rb

Constant Summary

Constants included from Constants

Constants::AC_GROUP_APACHE, Constants::AC_GROUP_DOMINO, Constants::AC_GROUP_ENUMERATION, Constants::AC_GROUP_FILE_INCLUSION, Constants::AC_GROUP_FLASH, Constants::AC_GROUP_GENERIC, Constants::AC_GROUP_JBOSS, Constants::AC_GROUP_JOOMLA, Constants::AC_GROUP_SAP, Constants::AC_GROUP_SQL, Constants::AC_GROUP_TYPO3, Constants::AC_GROUP_XSS, Constants::AUTH_TYPE_BASIC, Constants::AUTH_TYPE_DIGEST, Constants::AUTH_TYPE_NONE, Constants::AUTH_TYPE_NTLM, Constants::CHAT_SOURCE_AUTO_SCAN, Constants::CHAT_SOURCE_FUZZER, Constants::CHAT_SOURCE_INTERCEPT, Constants::CHAT_SOURCE_MANUAL, Constants::CHAT_SOURCE_MANUAL_SCAN, Constants::CHAT_SOURCE_PROXY, Constants::CHAT_SOURCE_UNDEF, Constants::DEFAULT_PORT_HTTP, Constants::DEFAULT_PORT_HTTPS, Constants::FINDING_TYPE_HINT, Constants::FINDING_TYPE_INFO, Constants::FINDING_TYPE_UNDEFINED, Constants::FINDING_TYPE_VULN, Constants::FIRST_TIME_FILE, Constants::GUI_REGULAR_FONT_SIZE, Constants::GUI_SMALL_FONT_SIZE, Constants::ICON_PATH, Constants::LOG_DEBUG, Constants::LOG_INFO, Constants::SCAN_CANCELED, Constants::SCAN_FINISHED, Constants::SCAN_PAUSED, Constants::SCAN_STARTED, Constants::TE_CHUNKED, Constants::TE_COMPRESS, Constants::TE_DEFLATE, Constants::TE_GZIP, Constants::TE_IDENTITY, Constants::TE_NONE, Constants::VULN_RATING_CRITICAL, Constants::VULN_RATING_HIGH, Constants::VULN_RATING_INFO, Constants::VULN_RATING_LOW, Constants::VULN_RATING_MEDIUM, Constants::VULN_RATING_UNDEFINED

Instance Method Summary collapse

Methods included from CheckInfoMixin::InfoMethods

#check_group, #check_name

Constructor Details

#initialize(project, fuzzer_list, filter_list, requestEditor, prefs = {}) ⇒ FuzzerCheck

Returns a new instance of FuzzerCheck.


31
32
33
34
35
36
37
# File 'lib/watobo/gui/fuzzer_gui.rb', line 31

def initialize(project, fuzzer_list, filter_list, requestEditor, prefs={} )
   super(project.object_id, prefs)
   @fuzzer_list = fuzzer_list
   @requestEditor = requestEditor
   @filter_list = filter_list
   @prefs = prefs
end

Instance Method Details

#fuzzels(fuzzers, index = 0, result = nil) ⇒ Object


39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/watobo/gui/fuzzer_gui.rb', line 39

def fuzzels(fuzzers, index=0, result=nil)
   begin
      unless fuzzers[index].nil?
         fuzzers[index].run(result) do |fuzz|
            if index < fuzzers.length - 1
               fuzzels(fuzzers, index+1, fuzz) do |sr|
                  yield sr
               end
            else
               yield fuzz
            end
         end
      end
   rescue => bang
      puts bang
      puts bang.backtrace if $DEBUG
   end
end

#generateChecks(chat) ⇒ Object


64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/watobo/gui/fuzzer_gui.rb', line 64

def generateChecks(chat)
   unless @fuzzer_list.empty?
      fuzzels(@fuzzer_list) do |fuzzle|
        test_fuzzle = Hash.new
        test_fuzzle.update YAML.load(YAML.dump(fuzzle))
         checker = proc{                     
            #puts test_fuzzle
            fuzz_request = @requestEditor.parseRequest(test_fuzzle)
            fuzz_request.extend Watobo::Mixin::Shaper::Web10
            fuzz_request.extend Watobo::Mixin::Parser::Web10
            fuzz_request.extend Watobo::Mixin::Parser::Url

            test_request, test_response = doRequest(fuzz_request, @prefs)

            notify(:fuzzer_match, test_fuzzle, test_request, test_response, test_response.join) if @filter_list.empty?

            @filter_list.each do |f|
               matches = f.func.call(test_response) if f.func.respond_to? :call
               matches.each do |match|
                  notify(:fuzzer_match, test_fuzzle, test_request, test_response, match)
               end
            end

            [ test_request, test_response ]
         }
         yield checker
      end
   end
end

#resetObject


60
61
62
# File 'lib/watobo/gui/fuzzer_gui.rb', line 60

def reset()

end