arachni 0.2.4 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/CHANGELOG.md +33 -0
  2. data/README.md +2 -4
  3. data/Rakefile +15 -4
  4. data/bin/arachni +0 -0
  5. data/bin/arachni_web +0 -0
  6. data/bin/arachni_web_autostart +0 -0
  7. data/bin/arachni_xmlrpc +0 -0
  8. data/bin/arachni_xmlrpcd +0 -0
  9. data/bin/arachni_xmlrpcd_monitor +0 -0
  10. data/lib/arachni.rb +1 -1
  11. data/lib/framework.rb +36 -6
  12. data/lib/http.rb +12 -5
  13. data/lib/module/auditor.rb +482 -59
  14. data/lib/module/base.rb +17 -0
  15. data/lib/module/manager.rb +26 -2
  16. data/lib/module/trainer.rb +1 -12
  17. data/lib/module/utilities.rb +12 -0
  18. data/lib/parser/auditable.rb +8 -3
  19. data/lib/parser/elements.rb +11 -0
  20. data/lib/parser/page.rb +3 -1
  21. data/lib/parser/parser.rb +130 -18
  22. data/lib/rpc/xml/server/dispatcher.rb +21 -0
  23. data/lib/spider.rb +141 -82
  24. data/lib/ui/cli/cli.rb +2 -3
  25. data/lib/ui/web/addon_manager.rb +273 -0
  26. data/lib/ui/web/addons/autodeploy.rb +172 -0
  27. data/lib/ui/web/addons/autodeploy/lib/manager.rb +291 -0
  28. data/lib/ui/web/addons/autodeploy/views/index.erb +124 -0
  29. data/lib/ui/web/addons/sample.rb +78 -0
  30. data/lib/ui/web/addons/sample/views/index.erb +4 -0
  31. data/lib/ui/web/addons/scheduler.rb +139 -0
  32. data/lib/ui/web/addons/scheduler/views/index.erb +131 -0
  33. data/lib/ui/web/addons/scheduler/views/options.erb +93 -0
  34. data/lib/ui/web/dispatcher_manager.rb +80 -13
  35. data/lib/ui/web/instance_manager.rb +87 -0
  36. data/lib/ui/web/scheduler.rb +166 -0
  37. data/lib/ui/web/server.rb +142 -202
  38. data/lib/ui/web/server/public/js/jquery-ui-timepicker.js +985 -0
  39. data/lib/ui/web/server/public/plugins/sample/style.css +0 -0
  40. data/lib/ui/web/server/public/style.css +42 -0
  41. data/lib/ui/web/server/views/addon.erb +15 -0
  42. data/lib/ui/web/server/views/addons.erb +46 -0
  43. data/lib/ui/web/server/views/dispatchers.erb +1 -1
  44. data/lib/ui/web/server/views/instance.erb +9 -11
  45. data/lib/ui/web/server/views/layout.erb +14 -1
  46. data/lib/ui/web/server/views/welcome.erb +7 -6
  47. data/lib/ui/web/utilities.rb +134 -0
  48. data/modules/audit/code_injection_timing.rb +6 -2
  49. data/modules/audit/code_injection_timing/payloads.txt +2 -2
  50. data/modules/audit/os_cmd_injection_timing.rb +7 -3
  51. data/modules/audit/os_cmd_injection_timing/payloads.txt +1 -1
  52. data/modules/audit/sqli_blind_rdiff.rb +18 -233
  53. data/modules/audit/sqli_blind_rdiff/payloads.txt +5 -0
  54. data/modules/audit/sqli_blind_timing.rb +9 -2
  55. data/path_extractors/anchors.rb +1 -1
  56. data/path_extractors/forms.rb +1 -1
  57. data/path_extractors/frames.rb +1 -1
  58. data/path_extractors/generic.rb +1 -1
  59. data/path_extractors/links.rb +1 -1
  60. data/path_extractors/meta_refresh.rb +1 -1
  61. data/path_extractors/scripts.rb +1 -1
  62. data/path_extractors/sitemap.rb +1 -1
  63. data/plugins/proxy/server.rb +3 -2
  64. data/plugins/waf_detector.rb +0 -3
  65. metadata +37 -34
  66. data/lib/anemone/cookie_store.rb +0 -35
  67. data/lib/anemone/core.rb +0 -371
  68. data/lib/anemone/exceptions.rb +0 -5
  69. data/lib/anemone/http.rb +0 -144
  70. data/lib/anemone/page.rb +0 -338
  71. data/lib/anemone/page_store.rb +0 -160
  72. data/lib/anemone/storage.rb +0 -34
  73. data/lib/anemone/storage/base.rb +0 -75
  74. data/lib/anemone/storage/exceptions.rb +0 -15
  75. data/lib/anemone/storage/mongodb.rb +0 -89
  76. data/lib/anemone/storage/pstore.rb +0 -50
  77. data/lib/anemone/storage/redis.rb +0 -90
  78. data/lib/anemone/storage/tokyo_cabinet.rb +0 -57
  79. data/lib/anemone/tentacle.rb +0 -40
@@ -1,57 +0,0 @@
1
- begin
2
- require 'tokyocabinet'
3
- rescue LoadError
4
- puts "You need the tokyocabinet gem to use Anemone::Storage::TokyoCabinet"
5
- exit
6
- end
7
-
8
- require 'forwardable'
9
-
10
- module Anemone
11
- module Storage
12
- class TokyoCabinet
13
- extend Forwardable
14
-
15
- def_delegators :@db, :close, :size, :keys, :has_key?
16
-
17
- def initialize(file)
18
- raise "TokyoCabinet filename must have .tch extension" if File.extname(file) != '.tch'
19
- @db = ::TokyoCabinet::HDB::new
20
- @db.open(file, ::TokyoCabinet::HDB::OWRITER | ::TokyoCabinet::HDB::OCREAT)
21
- @db.clear
22
- end
23
-
24
- def [](key)
25
- if value = @db[key]
26
- load_value(value)
27
- end
28
- end
29
-
30
- def []=(key, value)
31
- @db[key] = [Marshal.dump(value)].pack("m")
32
- end
33
-
34
- def delete(key)
35
- value = self[key]
36
- @db.delete(key)
37
- value
38
- end
39
-
40
- def each
41
- @db.each { |k, v| yield k, load_value(v) }
42
- end
43
-
44
- def merge!(hash)
45
- hash.each { |key, value| self[key] = value }
46
- self
47
- end
48
-
49
- private
50
-
51
- def load_value(value)
52
- Marshal.load(value.unpack("m")[0])
53
- end
54
-
55
- end
56
- end
57
- end
@@ -1,40 +0,0 @@
1
-
2
- require Arachni::Options.instance.dir['lib'] + 'anemone/http'
3
-
4
- module Anemone
5
- class Tentacle
6
-
7
- #
8
- # Create a new Tentacle
9
- #
10
- def initialize(link_queue, page_queue, opts = {})
11
- @link_queue = link_queue
12
- @page_queue = page_queue
13
- @http = Anemone::HTTP.new(opts)
14
- @opts = opts
15
- end
16
-
17
- #
18
- # Gets links from @link_queue, and returns the fetched
19
- # Page objects into @page_queue
20
- #
21
- def run
22
- loop do
23
- link, referer, depth = @link_queue.deq
24
-
25
- break if link == :END
26
-
27
- @http.fetch_pages(link, referer, depth).each { |page| @page_queue << page }
28
-
29
- delay
30
- end
31
- end
32
-
33
- private
34
-
35
- def delay
36
- sleep @opts[:delay] if @opts[:delay] > 0
37
- end
38
-
39
- end
40
- end