arachni 0.2.4 → 0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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