arachni 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (650) hide show
  1. checksums.yaml +8 -8
  2. data/ACKNOWLEDGMENTS.md +3 -0
  3. data/CHANGELOG.md +181 -1
  4. data/README.md +68 -14
  5. data/Rakefile +1 -5
  6. data/arachni.gemspec +9 -6
  7. data/bin/arachni_multi +23 -0
  8. data/bin/arachni_rpc +2 -2
  9. data/bin/arachni_rpcd_monitor +1 -1
  10. data/fingerprinters/frameworks/rack.rb +41 -0
  11. data/fingerprinters/languages/asp.rb +42 -0
  12. data/fingerprinters/languages/aspx.rb +63 -0
  13. data/fingerprinters/languages/jsp.rb +44 -0
  14. data/fingerprinters/languages/php.rb +43 -0
  15. data/fingerprinters/languages/python.rb +40 -0
  16. data/fingerprinters/languages/ruby.rb +41 -0
  17. data/fingerprinters/os/bsd.rb +36 -0
  18. data/fingerprinters/os/linux.rb +42 -0
  19. data/fingerprinters/os/solaris.rb +41 -0
  20. data/fingerprinters/os/unix.rb +36 -0
  21. data/fingerprinters/os/windows.rb +41 -0
  22. data/fingerprinters/servers/apache.rb +36 -0
  23. data/fingerprinters/servers/iis.rb +36 -0
  24. data/fingerprinters/servers/jetty.rb +36 -0
  25. data/fingerprinters/servers/nginx.rb +36 -0
  26. data/fingerprinters/servers/tomcat.rb +36 -0
  27. data/lib/arachni/audit_store.rb +3 -4
  28. data/lib/arachni/banner.rb +0 -2
  29. data/lib/arachni/element/base.rb +25 -35
  30. data/lib/arachni/element/capabilities/auditable.rb +265 -133
  31. data/lib/arachni/element/capabilities/auditable/rdiff.rb +14 -4
  32. data/lib/arachni/element/capabilities/auditable/taint.rb +32 -10
  33. data/lib/arachni/element/capabilities/auditable/timeout.rb +59 -29
  34. data/lib/arachni/element/cookie.rb +4 -3
  35. data/lib/arachni/element/form.rb +1 -5
  36. data/lib/arachni/element/header.rb +10 -0
  37. data/lib/arachni/element/link.rb +0 -1
  38. data/lib/arachni/element_filter.rb +2 -2
  39. data/lib/arachni/framework.rb +37 -13
  40. data/lib/arachni/http.rb +3 -2
  41. data/lib/arachni/issue.rb +27 -0
  42. data/lib/arachni/module.rb +16 -0
  43. data/lib/arachni/module/auditor.rb +107 -70
  44. data/lib/arachni/module/base.rb +1 -1
  45. data/lib/arachni/module/key_filler.rb +26 -39
  46. data/lib/arachni/module/manager.rb +53 -56
  47. data/lib/arachni/options.rb +126 -19
  48. data/lib/arachni/page.rb +41 -42
  49. data/lib/arachni/parser.rb +91 -139
  50. data/lib/arachni/platform.rb +19 -0
  51. data/lib/arachni/platform/fingerprinter.rb +100 -0
  52. data/lib/arachni/platform/list.rb +293 -0
  53. data/lib/arachni/platform/manager.rb +435 -0
  54. data/lib/arachni/platforms.rb +498 -0
  55. data/lib/arachni/plugin.rb +17 -1
  56. data/lib/arachni/plugin/manager.rb +35 -36
  57. data/lib/arachni/processes.rb +27 -0
  58. data/lib/arachni/processes/dispatchers.rb +149 -0
  59. data/lib/arachni/processes/helpers.rb +19 -0
  60. data/lib/arachni/processes/helpers/dispatchers.rb +45 -0
  61. data/lib/arachni/processes/helpers/instances.rb +51 -0
  62. data/lib/arachni/processes/helpers/processes.rb +51 -0
  63. data/lib/arachni/processes/instances.rb +196 -0
  64. data/lib/arachni/processes/manager.rb +129 -0
  65. data/lib/arachni/report.rb +16 -0
  66. data/lib/arachni/rpc/client/base.rb +9 -1
  67. data/lib/arachni/rpc/server/base.rb +1 -0
  68. data/lib/arachni/rpc/server/dispatcher.rb +60 -24
  69. data/lib/arachni/rpc/server/dispatcher/handler.rb +4 -2
  70. data/lib/arachni/rpc/server/dispatcher/node.rb +8 -3
  71. data/lib/arachni/rpc/server/framework.rb +70 -772
  72. data/lib/arachni/rpc/server/{distributor.rb → framework/distributor.rb} +150 -117
  73. data/lib/arachni/rpc/server/framework/master.rb +470 -0
  74. data/lib/arachni/rpc/server/framework/multi_instance.rb +267 -0
  75. data/lib/arachni/rpc/server/framework/slave.rb +159 -0
  76. data/lib/arachni/rpc/server/instance.rb +187 -109
  77. data/lib/arachni/rpc/server/spider.rb +136 -38
  78. data/lib/arachni/ruby.rb +19 -0
  79. data/lib/arachni/ruby/hash.rb +62 -0
  80. data/lib/arachni/ruby/io.rb +49 -0
  81. data/lib/arachni/ruby/set.rb +27 -0
  82. data/lib/arachni/ruby/string.rb +17 -2
  83. data/lib/arachni/spider.rb +60 -38
  84. data/lib/arachni/support.rb +26 -0
  85. data/lib/arachni/support/buffer.rb +19 -0
  86. data/lib/arachni/support/buffer/autoflush.rb +79 -0
  87. data/lib/arachni/{buffer → support/buffer}/base.rb +1 -1
  88. data/lib/arachni/{cache.rb → support/cache.rb} +1 -1
  89. data/lib/arachni/{cache → support/cache}/base.rb +7 -9
  90. data/lib/arachni/{cache → support/cache}/least_cost_replacement.rb +7 -1
  91. data/lib/arachni/{cache → support/cache}/least_recently_used.rb +10 -34
  92. data/lib/arachni/{cache → support/cache}/preference.rb +8 -3
  93. data/lib/arachni/{cache → support/cache}/random_replacement.rb +8 -3
  94. data/lib/arachni/support/crypto.rb +18 -0
  95. data/lib/arachni/{crypto → support/crypto}/rsa_aes_cbc.rb +7 -4
  96. data/lib/arachni/support/database.rb +20 -0
  97. data/lib/arachni/support/database/base.rb +124 -0
  98. data/lib/arachni/{database → support/database}/hash.rb +1 -1
  99. data/lib/arachni/{database → support/database}/queue.rb +1 -1
  100. data/lib/arachni/support/lookup.rb +20 -0
  101. data/lib/arachni/support/lookup/base.rb +91 -0
  102. data/lib/arachni/support/lookup/hash_set.rb +42 -0
  103. data/lib/arachni/support/lookup/moolb.rb +66 -0
  104. data/lib/arachni/support/queue.rb +18 -0
  105. data/lib/arachni/support/queue/disk.rb +171 -0
  106. data/lib/arachni/trainer.rb +2 -2
  107. data/lib/arachni/ui/cli/cli.rb +22 -0
  108. data/lib/arachni/ui/cli/rpc/dispatcher_monitor.rb +7 -3
  109. data/lib/arachni/ui/cli/rpc/{rpc.rb → instance.rb} +69 -97
  110. data/lib/arachni/ui/cli/rpc/local.rb +80 -0
  111. data/lib/arachni/ui/cli/rpc/remote.rb +134 -0
  112. data/lib/arachni/ui/cli/utilities.rb +40 -5
  113. data/lib/arachni/ui/foo/output.rb +19 -16
  114. data/lib/arachni/uri.rb +35 -5
  115. data/lib/arachni/utilities.rb +5 -39
  116. data/lib/version +1 -1
  117. data/logs/Dispatcher - 21448-7331.log +17 -0
  118. data/logs/Dispatcher - 21645-1111.log +13 -0
  119. data/logs/Dispatcher - 21673-1111.log +21 -0
  120. data/modules/audit/code_injection.rb +21 -20
  121. data/modules/audit/code_injection_timing.rb +15 -13
  122. data/modules/audit/os_cmd_injection.rb +14 -10
  123. data/modules/audit/os_cmd_injection_timing.rb +12 -12
  124. data/modules/audit/path_traversal.rb +52 -47
  125. data/modules/audit/rfi.rb +25 -18
  126. data/modules/audit/sqli.rb +10 -10
  127. data/modules/audit/sqli_blind_rdiff.rb +3 -3
  128. data/modules/audit/sqli_blind_timing.rb +10 -10
  129. data/modules/audit/sqli_blind_timing/mssql.txt +9 -0
  130. data/modules/audit/sqli_blind_timing/mysql.txt +32 -0
  131. data/modules/audit/sqli_blind_timing/pgsql.txt +28 -0
  132. data/modules/audit/trainer.rb +7 -4
  133. data/modules/audit/unvalidated_redirect.rb +13 -11
  134. data/modules/audit/xpath.rb +10 -6
  135. data/modules/audit/xss_tag.rb +10 -3
  136. data/modules/recon/grep/html_objects.rb +9 -4
  137. data/plugins/defaults/content_types.rb +3 -3
  138. data/plugins/defaults/meta/remedies/timing_attacks.rb +4 -2
  139. data/plugins/defaults/meta/uniformity.rb +4 -3
  140. data/plugins/proxy.rb +42 -132
  141. data/plugins/proxy/panel/panel.html.erb +6 -0
  142. data/plugins/proxy/panel/vectors.yml.erb +9 -0
  143. data/plugins/proxy/server.rb +41 -10
  144. data/plugins/proxy/template_scope.rb +138 -0
  145. data/plugins/vector_feed.rb +12 -12
  146. data/reports/html.rb +1 -0
  147. data/spec/arachni/audit_store_spec.rb +1 -1
  148. data/spec/arachni/component/manager_spec.rb +10 -57
  149. data/spec/arachni/component/options/address_spec.rb +1 -1
  150. data/spec/arachni/component/options/base_spec.rb +1 -1
  151. data/spec/arachni/component/options/bool_spec.rb +1 -1
  152. data/spec/arachni/component/options/enum_spec.rb +1 -1
  153. data/spec/arachni/component/options/float_spec.rb +1 -1
  154. data/spec/arachni/component/options/int_spec.rb +1 -1
  155. data/spec/arachni/component/options/path_spec.rb +1 -1
  156. data/spec/arachni/component/options/port_spec.rb +1 -1
  157. data/spec/arachni/component/options/string_spec.rb +1 -1
  158. data/spec/arachni/component/options/url_spec.rb +1 -1
  159. data/spec/arachni/element/base_spec.rb +16 -5
  160. data/spec/arachni/element/body_spec.rb +1 -1
  161. data/spec/arachni/element/capabilities/auditable/rdiff_spec.rb +11 -3
  162. data/spec/arachni/element/capabilities/auditable/taint_spec.rb +27 -3
  163. data/spec/arachni/element/capabilities/auditable/timeout_spec.rb +32 -3
  164. data/spec/arachni/element/capabilities/mutable_spec.rb +1 -1
  165. data/spec/arachni/element/cookie_spec.rb +21 -7
  166. data/spec/arachni/element/form_spec.rb +7 -58
  167. data/spec/arachni/element/header_spec.rb +15 -3
  168. data/spec/arachni/element/link_spec.rb +3 -26
  169. data/spec/arachni/element/path_spec.rb +1 -1
  170. data/spec/arachni/element/server_spec.rb +1 -1
  171. data/spec/arachni/element_filter_spec.rb +1 -1
  172. data/spec/arachni/{error.rb → error_spec.rb} +1 -1
  173. data/spec/arachni/framework_spec.rb +127 -50
  174. data/spec/arachni/http/cookie_jar_spec.rb +9 -42
  175. data/spec/arachni/http_spec.rb +9 -21
  176. data/spec/arachni/issue_spec.rb +29 -1
  177. data/spec/arachni/mixins/observable_spec.rb +4 -6
  178. data/spec/arachni/mixins/progress_bar_spec.rb +1 -1
  179. data/spec/arachni/module/auditor_spec.rb +17 -5
  180. data/spec/arachni/module/key_filler.rb +33 -8
  181. data/spec/arachni/module/manager_spec.rb +1 -3
  182. data/spec/arachni/module/utilities_spec.rb +1 -1
  183. data/spec/arachni/options_spec.rb +185 -1
  184. data/spec/arachni/page_spec.rb +16 -3
  185. data/spec/arachni/parser_spec.rb +27 -123
  186. data/spec/arachni/platform/fingerprinter_spec.rb +159 -0
  187. data/spec/arachni/platform/list_spec.rb +399 -0
  188. data/spec/arachni/platform/manager_spec.rb +373 -0
  189. data/spec/arachni/plugin/manager_spec.rb +6 -29
  190. data/spec/arachni/report/base_spec.rb +2 -2
  191. data/spec/arachni/report/manager_spec.rb +2 -2
  192. data/spec/arachni/rpc/client/base_spec.rb +22 -27
  193. data/spec/arachni/rpc/client/dispatcher_spec.rb +4 -15
  194. data/spec/arachni/rpc/client/instance_spec.rb +3 -11
  195. data/spec/arachni/rpc/server/active_options_spec.rb +2 -17
  196. data/spec/arachni/rpc/server/base_spec.rb +23 -7
  197. data/spec/arachni/rpc/server/dispatcher/handler_spec.rb +4 -21
  198. data/spec/arachni/rpc/server/dispatcher/node_spec.rb +30 -8
  199. data/spec/arachni/rpc/server/dispatcher_spec.rb +130 -70
  200. data/spec/arachni/rpc/server/{distributor_spec.rb → framework/distributor_spec.rb} +95 -130
  201. data/spec/arachni/rpc/server/framework_hpg_spec.rb +38 -99
  202. data/spec/arachni/rpc/server/framework_simple_spec.rb +38 -71
  203. data/spec/arachni/rpc/server/instance_spec.rb +183 -135
  204. data/spec/arachni/rpc/server/modules/manager_spec.rb +18 -50
  205. data/spec/arachni/rpc/server/output_spec.rb +1 -1
  206. data/spec/arachni/rpc/server/plugin/manager_spec.rb +12 -36
  207. data/spec/arachni/rpc/server/spider_spec.rb +23 -48
  208. data/spec/arachni/ruby/array_spec.rb +1 -1
  209. data/spec/arachni/ruby/enumerable_spec.rb +1 -1
  210. data/spec/arachni/ruby/hash_spec.rb +70 -0
  211. data/spec/arachni/ruby/io_spec.rb +26 -0
  212. data/spec/arachni/ruby/object_spec.rb +1 -1
  213. data/spec/arachni/ruby/set_spec.rb +15 -0
  214. data/spec/arachni/ruby/string_spec.rb +18 -1
  215. data/spec/arachni/ruby/webrick_spec.rb +1 -1
  216. data/spec/arachni/session_spec.rb +3 -3
  217. data/spec/arachni/spider_spec.rb +30 -6
  218. data/spec/arachni/{buffer → support/buffer}/autoflush_spec.rb +7 -12
  219. data/spec/arachni/{buffer → support/buffer}/base_spec.rb +19 -23
  220. data/spec/arachni/{cache → support/cache}/base_spec.rb +7 -7
  221. data/spec/arachni/{cache → support/cache}/least_cost_replacement_spec.rb +3 -3
  222. data/spec/arachni/{cache → support/cache}/least_recently_used_spec.rb +3 -3
  223. data/spec/arachni/{cache → support/cache}/preference_spec.rb +3 -3
  224. data/spec/arachni/{cache → support/cache}/random_replacement_spec.rb +3 -3
  225. data/spec/arachni/{crypto → support/crypto}/rsa_aes_cbc_spec.rb +3 -5
  226. data/spec/arachni/{database → support/database}/hash_spec.rb +4 -5
  227. data/spec/arachni/{database → support/database}/queue_spec.rb +3 -4
  228. data/spec/arachni/support/lookup/hash_set_spec.rb +5 -0
  229. data/spec/arachni/support/lookup/moolb_spec.rb +41 -0
  230. data/spec/arachni/support/queue/disk_spec.rb +116 -0
  231. data/spec/arachni/trainer_spec.rb +6 -2
  232. data/spec/arachni/typhoeus/hydra_spec.rb +1 -1
  233. data/spec/arachni/typhoeus/requrest_spec.rb +1 -1
  234. data/spec/arachni/typhoeus/response_spec.rb +1 -1
  235. data/spec/arachni/uri_spec.rb +72 -38
  236. data/spec/arachni/utilities_spec.rb +6 -46
  237. data/spec/fingerprinters/frameworks/rack_spec.rb +41 -0
  238. data/spec/fingerprinters/languages/asp_spec.rb +40 -0
  239. data/spec/fingerprinters/languages/aspx_spec.rb +78 -0
  240. data/spec/fingerprinters/languages/jsp_spec.rb +58 -0
  241. data/spec/fingerprinters/languages/php_spec.rb +61 -0
  242. data/spec/fingerprinters/languages/python_spec.rb +23 -0
  243. data/spec/fingerprinters/languages/ruby.rb +34 -0
  244. data/spec/fingerprinters/os/bsd_spec.rb +26 -0
  245. data/spec/fingerprinters/os/linux_spec.rb +34 -0
  246. data/spec/fingerprinters/os/solaris_spec.rb +34 -0
  247. data/spec/fingerprinters/os/unix_spec.rb +26 -0
  248. data/spec/fingerprinters/os/windows_spec.rb +34 -0
  249. data/spec/fingerprinters/servers/apache_spec.rb +26 -0
  250. data/spec/fingerprinters/servers/iis_spec.rb +28 -0
  251. data/spec/fingerprinters/servers/jetty_spec.rb +28 -0
  252. data/spec/fingerprinters/servers/nginx_spec.rb +26 -0
  253. data/spec/fingerprinters/servers/tomcat_spec.rb +28 -0
  254. data/spec/modules/audit/code_injection_spec.rb +2 -2
  255. data/spec/modules/audit/code_injection_timing_spec.rb +1 -1
  256. data/spec/modules/audit/csrf_spec.rb +1 -1
  257. data/spec/modules/audit/ldapi_spec.rb +1 -1
  258. data/spec/modules/audit/os_cmd_injection_spec.rb +1 -1
  259. data/spec/modules/audit/os_cmd_injection_timing_spec.rb +2 -2
  260. data/spec/modules/audit/path_traversal_spec.rb +1 -1
  261. data/spec/modules/audit/response_splitting_spec.rb +1 -1
  262. data/spec/modules/audit/rfi_spec.rb +1 -1
  263. data/spec/modules/audit/session_fixation_spec.rb +1 -1
  264. data/spec/modules/audit/sqli_blind_rdiff_spec.rb +1 -1
  265. data/spec/modules/audit/sqli_blind_timing_spec.rb +4 -4
  266. data/spec/modules/audit/sqli_spec.rb +2 -2
  267. data/spec/modules/audit/trainer_spec.rb +11 -1
  268. data/spec/modules/audit/unvalidated_redirect_spec.rb +1 -1
  269. data/spec/modules/audit/xpath_spec.rb +1 -1
  270. data/spec/modules/audit/xss_event_spec.rb +1 -1
  271. data/spec/modules/audit/xss_path_spec.rb +1 -1
  272. data/spec/modules/audit/xss_script_tag_spec.rb +1 -1
  273. data/spec/modules/audit/xss_spec.rb +1 -1
  274. data/spec/modules/audit/xss_tag_spec.rb +1 -1
  275. data/spec/modules/recon/allowed_methods_spec.rb +1 -1
  276. data/spec/modules/recon/backdoors_spec.rb +1 -1
  277. data/spec/modules/recon/backup_files_spec.rb +1 -1
  278. data/spec/modules/recon/common_directories_spec.rb +1 -1
  279. data/spec/modules/recon/common_files_spec.rb +1 -1
  280. data/spec/modules/recon/directory_listing_spec.rb +1 -1
  281. data/spec/modules/recon/grep/captcha_spec.rb +1 -1
  282. data/spec/modules/recon/grep/credit_card_spec.rb +1 -1
  283. data/spec/modules/recon/grep/cvs_svn_users_spec.rb +1 -1
  284. data/spec/modules/recon/grep/emails_spec.rb +1 -1
  285. data/spec/modules/recon/grep/html_objects_spec.rb +1 -1
  286. data/spec/modules/recon/grep/http_only_cookies_spec.rb +1 -1
  287. data/spec/modules/recon/grep/insecure_cookies_spec.rb +1 -1
  288. data/spec/modules/recon/grep/mixed_resource_spec.rb +1 -1
  289. data/spec/modules/recon/grep/password_autocomplete_spec.rb +1 -1
  290. data/spec/modules/recon/grep/private_ip_spec.rb +1 -1
  291. data/spec/modules/recon/grep/ssn_spec.rb +1 -1
  292. data/spec/modules/recon/grep/unencrypted_password_forms_spec.rb +1 -1
  293. data/spec/modules/recon/htaccess_limit_spec.rb +1 -1
  294. data/spec/modules/recon/http_put_spec.rb +1 -1
  295. data/spec/modules/recon/interesting_responses_spec.rb +1 -1
  296. data/spec/modules/recon/webdav_spec.rb +1 -1
  297. data/spec/modules/recon/xst_spec.rb +1 -1
  298. data/spec/path_extractors/anchors_spec.rb +1 -1
  299. data/spec/path_extractors/areas_spec.rb +1 -1
  300. data/spec/path_extractors/forms_spec.rb +1 -1
  301. data/spec/path_extractors/frames_spec.rb +1 -1
  302. data/spec/path_extractors/generic_spec.rb +1 -1
  303. data/spec/path_extractors/links_spec.rb +1 -1
  304. data/spec/path_extractors/meta_refresh_spec.rb +1 -1
  305. data/spec/path_extractors/scripts_spec.rb +1 -1
  306. data/spec/plugins/autologin_spec.rb +1 -1
  307. data/spec/plugins/autothrottle_spec.rb +2 -2
  308. data/spec/plugins/content_types_spec.rb +1 -1
  309. data/spec/plugins/cookie_collector_spec.rb +1 -1
  310. data/spec/plugins/form_dicattack_spec.rb +7 -7
  311. data/spec/plugins/healthmap_spec.rb +1 -1
  312. data/spec/plugins/http_dicattack_spec.rb +6 -6
  313. data/spec/plugins/meta/remedies/discovery_spec.rb +1 -1
  314. data/spec/plugins/meta/remedies/timing_attacks_spec.rb +1 -1
  315. data/spec/plugins/meta/uniformity_spec.rb +1 -1
  316. data/spec/plugins/profiler_spec.rb +3 -3
  317. data/spec/plugins/rescan_spec.rb +3 -3
  318. data/spec/plugins/resolver_spec.rb +1 -1
  319. data/spec/plugins/script_spec.rb +2 -2
  320. data/spec/plugins/vector_feed_spec.rb +13 -1
  321. data/spec/plugins/waf_detector_spec.rb +2 -2
  322. data/spec/reports/afr_spec.rb +1 -1
  323. data/spec/reports/ap_spec.rb +1 -1
  324. data/spec/reports/html_spec.rb +1 -1
  325. data/spec/reports/json_spec.rb +1 -1
  326. data/spec/reports/marshal_spec.rb +1 -1
  327. data/spec/reports/stdout_spec.rb +1 -1
  328. data/spec/reports/txt_spec.rb +1 -1
  329. data/spec/reports/xml_spec.rb +1 -1
  330. data/spec/reports/yaml_spec.rb +1 -1
  331. data/spec/spec_helper.rb +27 -32
  332. data/spec/{fixtures → support/fixtures}/auditstore.afr +0 -0
  333. data/spec/{fixtures → support/fixtures}/cookies.txt +0 -0
  334. data/spec/support/fixtures/fingerprinters/test.rb +36 -0
  335. data/spec/{fixtures → support/fixtures}/modules/test.rb +0 -0
  336. data/spec/{fixtures → support/fixtures}/modules/test2.rb +0 -0
  337. data/spec/{fixtures → support/fixtures}/modules/test3.rb +0 -0
  338. data/spec/{fixtures → support/fixtures}/passwords.txt +0 -0
  339. data/spec/{fixtures → support/fixtures}/plugins/bad.rb +0 -0
  340. data/spec/{fixtures → support/fixtures}/plugins/defaults/default.rb +0 -0
  341. data/spec/{fixtures → support/fixtures}/plugins/distributable.rb +0 -0
  342. data/spec/{fixtures → support/fixtures}/plugins/loop.rb +0 -0
  343. data/spec/{fixtures → support/fixtures}/plugins/spider_hook.rb +1 -0
  344. data/spec/{fixtures → support/fixtures}/plugins/wait.rb +0 -0
  345. data/spec/{fixtures → support/fixtures}/plugins/with_options.rb +0 -0
  346. data/spec/{fixtures → support/fixtures}/reports/base_spec/plugin_formatters/with_formatters/foobar.rb +0 -0
  347. data/spec/{fixtures → support/fixtures}/reports/base_spec/with_formatters.rb +0 -0
  348. data/spec/{fixtures → support/fixtures}/reports/base_spec/with_outfile.rb +0 -0
  349. data/spec/{fixtures → support/fixtures}/reports/base_spec/without_outfile.rb +0 -0
  350. data/spec/{fixtures → support/fixtures}/reports/manager_spec/afr.rb +0 -0
  351. data/spec/{fixtures → support/fixtures}/reports/manager_spec/foo.rb +0 -0
  352. data/spec/{fixtures → support/fixtures}/rescan.afr.tpl +0 -0
  353. data/spec/{fixtures → support/fixtures}/rpcd_handlers/echo.rb +0 -0
  354. data/spec/{fixtures → support/fixtures}/run_mod/body.rb +0 -0
  355. data/spec/{fixtures → support/fixtures}/run_mod/cookies.rb +0 -0
  356. data/spec/{fixtures → support/fixtures}/run_mod/empty.rb +0 -0
  357. data/spec/{fixtures → support/fixtures}/run_mod/flch.rb +0 -0
  358. data/spec/{fixtures → support/fixtures}/run_mod/forms.rb +0 -0
  359. data/spec/{fixtures → support/fixtures}/run_mod/headers.rb +0 -0
  360. data/spec/{fixtures → support/fixtures}/run_mod/links.rb +0 -0
  361. data/spec/{fixtures → support/fixtures}/run_mod/nil.rb +0 -0
  362. data/spec/{fixtures → support/fixtures}/run_mod/path.rb +0 -0
  363. data/spec/{fixtures → support/fixtures}/run_mod/server.rb +0 -0
  364. data/spec/{fixtures → support/fixtures}/script_plugin.rb +0 -0
  365. data/spec/{fixtures → support/fixtures}/taint_module/taint.rb +0 -0
  366. data/spec/{fixtures → support/fixtures}/usernames.txt +0 -0
  367. data/spec/{fixtures → support/fixtures}/wait_module/wait.rb +0 -0
  368. data/spec/{helpers → support/helpers}/auditor.rb +0 -0
  369. data/spec/support/helpers/framework.rb +19 -0
  370. data/spec/support/helpers/misc.rb +19 -0
  371. data/spec/support/helpers/paths.rb +31 -0
  372. data/spec/support/helpers/requires.rb +24 -0
  373. data/spec/support/helpers/resets.rb +42 -0
  374. data/spec/support/helpers/web_server.rb +27 -0
  375. data/spec/support/lib/web_server_manager.rb +120 -0
  376. data/spec/support/logs/Dispatcher - 11642-42685.log +9 -0
  377. data/spec/support/logs/Dispatcher - 11669-58445.log +21 -0
  378. data/spec/support/logs/Dispatcher - 11803-19013.log +9 -0
  379. data/spec/support/logs/Dispatcher - 11813-58646.log +19 -0
  380. data/spec/support/logs/Dispatcher - 11822-1913.log +17 -0
  381. data/spec/support/logs/Dispatcher - 11831-60571.log +13 -0
  382. data/spec/support/logs/Dispatcher - 11840-20151.log +9 -0
  383. data/spec/support/logs/Dispatcher - 11850-21796.log +9 -0
  384. data/spec/support/logs/Dispatcher - 11859-47650.log +11 -0
  385. data/spec/support/logs/Dispatcher - 11872-13669.log +11 -0
  386. data/spec/support/logs/Dispatcher - 11885-40034.log +35 -0
  387. data/spec/support/logs/Dispatcher - 11946-10629.log +21 -0
  388. data/spec/support/logs/Dispatcher - 11955-55497.log +21 -0
  389. data/spec/support/logs/Dispatcher - 11964-33080.log +23 -0
  390. data/spec/support/logs/Dispatcher - 12005-28558.log +19 -0
  391. data/spec/support/logs/Dispatcher - 12014-59368.log +17 -0
  392. data/spec/support/logs/Dispatcher - 12023-41547.log +15 -0
  393. data/spec/support/logs/Dispatcher - 12037-54838.log +11 -0
  394. data/spec/support/logs/Dispatcher - 12050-38840.log +9 -0
  395. data/spec/support/logs/Dispatcher - 12059-7283.log +9 -0
  396. data/spec/support/logs/Dispatcher - 12068-19765.log +9 -0
  397. data/spec/support/logs/Dispatcher - 12077-24147.log +9 -0
  398. data/spec/support/logs/Dispatcher - 12086-60404.log +11 -0
  399. data/spec/support/logs/Dispatcher - 12099-43307.log +9 -0
  400. data/spec/support/logs/Dispatcher - 12109-9701.log +9 -0
  401. data/spec/support/logs/Dispatcher - 12162-19782.log +63 -0
  402. data/spec/support/logs/Dispatcher - 12171-35883.log +43 -0
  403. data/spec/support/logs/Dispatcher - 12180-6456.log +39 -0
  404. data/spec/support/logs/Dispatcher - 12189-64516.log +34 -0
  405. data/spec/support/logs/Dispatcher - 12198-50800.log +28 -0
  406. data/spec/support/logs/Dispatcher - 12207-6148.log +21 -0
  407. data/spec/support/logs/Dispatcher - 12216-45994.log +13 -0
  408. data/spec/support/logs/Dispatcher - 12226-59932.log +9 -0
  409. data/spec/support/logs/Dispatcher - 12369-42683.log +19 -0
  410. data/spec/support/logs/Dispatcher - 12379-51205.log +21 -0
  411. data/spec/support/logs/Dispatcher - 12388-15229.log +15 -0
  412. data/spec/support/logs/Dispatcher - 12401-35502.log +19 -0
  413. data/spec/support/logs/Dispatcher - 12410-3386.log +21 -0
  414. data/spec/support/logs/Dispatcher - 12419-16056.log +15 -0
  415. data/spec/support/logs/Dispatcher - 12540-25763.log +17 -0
  416. data/spec/support/logs/Dispatcher - 12549-49234.log +21 -0
  417. data/spec/support/logs/Dispatcher - 12558-61027.log +13 -0
  418. data/spec/support/logs/Dispatcher - 12571-34789.log +19 -0
  419. data/spec/support/logs/Dispatcher - 12580-27968.log +21 -0
  420. data/spec/support/logs/Dispatcher - 12589-38100.log +15 -0
  421. data/spec/support/logs/Dispatcher - 12643-8172.log +17 -0
  422. data/spec/support/logs/Dispatcher - 12652-44715.log +21 -0
  423. data/spec/support/logs/Dispatcher - 12661-40547.log +13 -0
  424. data/spec/support/logs/Dispatcher - 12674-20100.log +17 -0
  425. data/spec/support/logs/Dispatcher - 12683-57063.log +21 -0
  426. data/spec/support/logs/Dispatcher - 12692-20974.log +13 -0
  427. data/spec/support/logs/Dispatcher - 12920-24047.log +19 -0
  428. data/spec/support/logs/Dispatcher - 12929-13265.log +21 -0
  429. data/spec/support/logs/Dispatcher - 12938-38472.log +15 -0
  430. data/spec/support/logs/Dispatcher - 12962-47051.log +21 -0
  431. data/spec/support/logs/Dispatcher - 12971-48844.log +25 -0
  432. data/spec/support/logs/Dispatcher - 12980-2331.log +15 -0
  433. data/spec/support/logs/Dispatcher - 13016-57455.log +17 -0
  434. data/spec/support/logs/Dispatcher - 13025-44069.log +21 -0
  435. data/spec/support/logs/Dispatcher - 13034-59986.log +13 -0
  436. data/spec/support/logs/Dispatcher - 13047-17338.log +21 -0
  437. data/spec/support/logs/Dispatcher - 13056-57124.log +25 -0
  438. data/spec/support/logs/Dispatcher - 13065-3014.log +15 -0
  439. data/spec/support/logs/Dispatcher - 13101-42040.log +17 -0
  440. data/spec/support/logs/Dispatcher - 13110-29137.log +21 -0
  441. data/spec/support/logs/Dispatcher - 13119-52878.log +13 -0
  442. data/spec/support/logs/Dispatcher - 13132-20646.log +17 -0
  443. data/spec/support/logs/Dispatcher - 13141-21629.log +21 -0
  444. data/spec/support/logs/Dispatcher - 13150-42002.log +13 -0
  445. data/spec/support/logs/Dispatcher - 8291-38888.log +9 -0
  446. data/spec/support/logs/Dispatcher - 8325-2241.log +21 -0
  447. data/spec/support/logs/Dispatcher - 8458-40239.log +9 -0
  448. data/spec/support/logs/Dispatcher - 8468-26555.log +19 -0
  449. data/spec/support/logs/Dispatcher - 8477-28819.log +17 -0
  450. data/spec/support/logs/Dispatcher - 8486-36985.log +13 -0
  451. data/spec/support/logs/Dispatcher - 8495-59407.log +9 -0
  452. data/spec/support/logs/Dispatcher - 8504-27479.log +9 -0
  453. data/spec/support/logs/Dispatcher - 8513-51807.log +11 -0
  454. data/spec/support/logs/Dispatcher - 8526-53739.log +11 -0
  455. data/spec/support/logs/Dispatcher - 8539-55908.log +35 -0
  456. data/spec/support/logs/Dispatcher - 8603-24287.log +21 -0
  457. data/spec/support/logs/Dispatcher - 8612-37320.log +21 -0
  458. data/spec/support/logs/Dispatcher - 8621-60797.log +23 -0
  459. data/spec/support/logs/Dispatcher - 8662-56395.log +19 -0
  460. data/spec/support/logs/Dispatcher - 8671-54268.log +17 -0
  461. data/spec/support/logs/Dispatcher - 8680-32387.log +15 -0
  462. data/spec/support/logs/Dispatcher - 8693-60728.log +11 -0
  463. data/spec/support/logs/Dispatcher - 8706-53092.log +9 -0
  464. data/spec/support/logs/Dispatcher - 8715-35576.log +9 -0
  465. data/spec/support/logs/Dispatcher - 8724-9842.log +9 -0
  466. data/spec/support/logs/Dispatcher - 8734-37290.log +9 -0
  467. data/spec/support/logs/Dispatcher - 8743-46516.log +11 -0
  468. data/spec/support/logs/Dispatcher - 8756-59294.log +9 -0
  469. data/spec/support/logs/Dispatcher - 8765-16318.log +9 -0
  470. data/spec/support/logs/Dispatcher - 8818-35968.log +63 -0
  471. data/spec/support/logs/Dispatcher - 8827-57068.log +43 -0
  472. data/spec/support/logs/Dispatcher - 8836-31238.log +39 -0
  473. data/spec/support/logs/Dispatcher - 8845-48148.log +34 -0
  474. data/spec/support/logs/Dispatcher - 8854-17355.log +28 -0
  475. data/spec/support/logs/Dispatcher - 8863-6616.log +21 -0
  476. data/spec/support/logs/Dispatcher - 8872-1373.log +13 -0
  477. data/spec/support/logs/Dispatcher - 8882-40014.log +9 -0
  478. data/spec/support/logs/Dispatcher - 8989-17108.log +19 -0
  479. data/spec/support/logs/Dispatcher - 9000-23195.log +21 -0
  480. data/spec/support/logs/Dispatcher - 9009-33836.log +15 -0
  481. data/spec/support/logs/Dispatcher - 9022-55515.log +19 -0
  482. data/spec/support/logs/Dispatcher - 9031-51301.log +21 -0
  483. data/spec/support/logs/Dispatcher - 9040-10025.log +15 -0
  484. data/spec/support/logs/Dispatcher - 9180-20874.log +17 -0
  485. data/spec/support/logs/Dispatcher - 9189-29826.log +21 -0
  486. data/spec/support/logs/Dispatcher - 9198-21818.log +13 -0
  487. data/spec/support/logs/Dispatcher - 9211-64830.log +19 -0
  488. data/spec/support/logs/Dispatcher - 9220-2570.log +21 -0
  489. data/spec/support/logs/Dispatcher - 9229-45654.log +15 -0
  490. data/spec/support/logs/Dispatcher - 9286-1284.log +17 -0
  491. data/spec/support/logs/Dispatcher - 9295-58545.log +21 -0
  492. data/spec/support/logs/Dispatcher - 9304-52355.log +13 -0
  493. data/spec/support/logs/Dispatcher - 9317-58138.log +17 -0
  494. data/spec/support/logs/Dispatcher - 9326-39184.log +21 -0
  495. data/spec/support/logs/Dispatcher - 9336-44714.log +13 -0
  496. data/spec/support/logs/Dispatcher - 9555-26114.log +19 -0
  497. data/spec/support/logs/Dispatcher - 9564-2270.log +21 -0
  498. data/spec/support/logs/Dispatcher - 9573-26148.log +15 -0
  499. data/spec/support/logs/Dispatcher - 9597-62247.log +21 -0
  500. data/spec/support/logs/Dispatcher - 9606-16162.log +25 -0
  501. data/spec/support/logs/Dispatcher - 9615-8643.log +15 -0
  502. data/spec/support/logs/Dispatcher - 9651-49224.log +17 -0
  503. data/spec/support/logs/Dispatcher - 9660-4390.log +21 -0
  504. data/spec/support/logs/Dispatcher - 9669-18266.log +13 -0
  505. data/spec/support/logs/Dispatcher - 9682-44582.log +21 -0
  506. data/spec/support/logs/Dispatcher - 9691-15941.log +25 -0
  507. data/spec/support/logs/Dispatcher - 9700-22186.log +15 -0
  508. data/spec/support/logs/Dispatcher - 9736-29672.log +17 -0
  509. data/spec/support/logs/Dispatcher - 9745-33231.log +21 -0
  510. data/spec/support/logs/Dispatcher - 9754-48381.log +13 -0
  511. data/spec/support/logs/Dispatcher - 9767-29812.log +17 -0
  512. data/spec/support/logs/Dispatcher - 9776-9894.log +21 -0
  513. data/spec/support/logs/Dispatcher - 9785-1421.log +13 -0
  514. data/spec/support/logs/Instance - 12384-38605.error.log +328 -0
  515. data/spec/support/logs/Instance - 12657-2379.error.log +328 -0
  516. data/spec/support/logs/Instance - 12688-50940.error.log +427 -0
  517. data/spec/support/logs/Instance - 12708-13716.error.log +326 -0
  518. data/spec/support/logs/Instance - 12714-45400.error.log +328 -0
  519. data/spec/support/logs/Instance - 12848-32645.error.log +326 -0
  520. data/spec/support/logs/Instance - 9005-21883.error.log +328 -0
  521. data/spec/support/logs/Instance - 9300-33102.error.log +328 -0
  522. data/spec/support/logs/Instance - 9331-48336.error.log +427 -0
  523. data/spec/support/logs/Instance - 9352-62807.error.log +326 -0
  524. data/spec/support/logs/Instance - 9358-45154.error.log +328 -0
  525. data/spec/support/logs/Instance - 9487-8746.error.log +326 -0
  526. data/spec/{logs → support/logs}/placeholder +0 -0
  527. data/spec/{pems → support/pems}/cacert.pem +0 -0
  528. data/spec/{pems → support/pems}/client/cert.pem +0 -0
  529. data/spec/{pems → support/pems}/client/foo-cert.pem +0 -0
  530. data/spec/{pems → support/pems}/client/foo-key.pem +0 -0
  531. data/spec/{pems → support/pems}/client/key.pem +0 -0
  532. data/spec/{pems → support/pems}/server/cert.pem +0 -0
  533. data/spec/{pems → support/pems}/server/key.pem +0 -0
  534. data/spec/{servers → support/servers}/arachni/element/capabilities/auditable/rdiff.rb +0 -0
  535. data/spec/{servers → support/servers}/arachni/element/capabilities/auditable/taint.rb +0 -0
  536. data/spec/{servers → support/servers}/arachni/element/capabilities/auditable/timeout.rb +0 -0
  537. data/spec/{servers → support/servers}/arachni/element/cookie.rb +0 -0
  538. data/spec/{servers → support/servers}/arachni/element/form.rb +0 -0
  539. data/spec/{servers → support/servers}/arachni/element/header.rb +0 -0
  540. data/spec/{servers → support/servers}/arachni/element/link.rb +0 -0
  541. data/spec/{servers → support/servers}/arachni/framework.rb +0 -0
  542. data/spec/{servers → support/servers}/arachni/http.rb +0 -0
  543. data/spec/{servers → support/servers}/arachni/http_auth.rb +0 -0
  544. data/spec/{servers → support/servers}/arachni/module/auditor.rb +0 -0
  545. data/spec/{servers → support/servers}/arachni/parser.rb +0 -0
  546. data/spec/{servers → support/servers}/arachni/rpc/server/framework_hpg.rb +0 -1
  547. data/spec/{servers → support/servers}/arachni/rpc/server/framework_simple.rb +0 -0
  548. data/spec/{servers → support/servers}/arachni/session.rb +0 -0
  549. data/spec/{servers → support/servers}/arachni/spider.rb +0 -0
  550. data/spec/{servers → support/servers}/arachni/spider_https.rb +0 -0
  551. data/spec/{servers → support/servers}/arachni/trainer.rb +0 -0
  552. data/spec/{servers → support/servers}/modules/audit/code_injection.rb +3 -4
  553. data/spec/{servers → support/servers}/modules/audit/code_injection_timing.rb +0 -0
  554. data/spec/{servers → support/servers}/modules/audit/csrf.rb +0 -0
  555. data/spec/{servers → support/servers}/modules/audit/ldapi.rb +1 -1
  556. data/spec/{servers → support/servers}/modules/audit/os_cmd_injection.rb +0 -0
  557. data/spec/{servers → support/servers}/modules/audit/os_cmd_injection_timing.rb +1 -10
  558. data/spec/{servers → support/servers}/modules/audit/path_traversal.rb +0 -0
  559. data/spec/{servers → support/servers}/modules/audit/response_splitting.rb +0 -0
  560. data/spec/{servers → support/servers}/modules/audit/rfi.rb +0 -0
  561. data/spec/{servers → support/servers}/modules/audit/session_fixation.rb +0 -0
  562. data/spec/{servers → support/servers}/modules/audit/sqli.rb +1 -1
  563. data/spec/{servers → support/servers}/modules/audit/sqli/coldfusion +0 -0
  564. data/spec/{servers → support/servers}/modules/audit/sqli/db2 +0 -0
  565. data/spec/{servers → support/servers}/modules/audit/sqli/emc +0 -0
  566. data/spec/{servers → support/servers}/modules/audit/sqli/informix +0 -0
  567. data/spec/{servers → support/servers}/modules/audit/sqli/interbase +0 -0
  568. data/spec/{servers → support/servers}/modules/audit/sqli/jdbc +0 -0
  569. data/spec/{servers → support/servers}/modules/audit/sqli/mssql +0 -0
  570. data/spec/{servers → support/servers}/modules/audit/sqli/mysql +0 -0
  571. data/spec/{servers → support/servers}/modules/audit/sqli/oracle +0 -0
  572. data/spec/{servers → support/servers}/modules/audit/sqli/postgresql +0 -0
  573. data/spec/{servers → support/servers}/modules/audit/sqli/sqlite +0 -0
  574. data/spec/{servers → support/servers}/modules/audit/sqli/sybase +0 -0
  575. data/spec/{servers → support/servers}/modules/audit/sqli_blind_rdiff.rb +1 -1
  576. data/spec/{servers → support/servers}/modules/audit/sqli_blind_timing.rb +0 -0
  577. data/spec/{servers → support/servers}/modules/audit/trainer_module.rb +0 -0
  578. data/spec/{servers → support/servers}/modules/audit/unvalidated_redirect.rb +0 -0
  579. data/spec/{servers → support/servers}/modules/audit/xpath.rb +0 -0
  580. data/spec/{servers → support/servers}/modules/audit/xpath/dotnet +0 -0
  581. data/spec/{servers → support/servers}/modules/audit/xpath/general +0 -0
  582. data/spec/{servers → support/servers}/modules/audit/xpath/java +0 -0
  583. data/spec/{servers → support/servers}/modules/audit/xpath/libxml2 +0 -0
  584. data/spec/{servers → support/servers}/modules/audit/xpath/php +0 -0
  585. data/spec/{servers → support/servers}/modules/audit/xss.rb +0 -0
  586. data/spec/{servers → support/servers}/modules/audit/xss_event.rb +0 -0
  587. data/spec/{servers → support/servers}/modules/audit/xss_path.rb +0 -0
  588. data/spec/{servers → support/servers}/modules/audit/xss_script_tag.rb +0 -0
  589. data/spec/{servers → support/servers}/modules/audit/xss_tag.rb +0 -0
  590. data/spec/{servers → support/servers}/modules/module_server.rb +1 -1
  591. data/spec/{servers → support/servers}/modules/recon/allowed_methods.rb +0 -0
  592. data/spec/{servers → support/servers}/modules/recon/backdoors.rb +0 -0
  593. data/spec/{servers → support/servers}/modules/recon/backup_files.rb +0 -0
  594. data/spec/{servers → support/servers}/modules/recon/common_directories.rb +0 -0
  595. data/spec/{servers → support/servers}/modules/recon/common_files.rb +0 -0
  596. data/spec/{servers → support/servers}/modules/recon/directory_listing.rb +0 -0
  597. data/spec/{servers → support/servers}/modules/recon/grep/captcha.rb +0 -0
  598. data/spec/{servers → support/servers}/modules/recon/grep/credit_card.rb +0 -0
  599. data/spec/{servers → support/servers}/modules/recon/grep/cvs_svn_users.rb +0 -0
  600. data/spec/{servers → support/servers}/modules/recon/grep/emails.rb +0 -0
  601. data/spec/{servers → support/servers}/modules/recon/grep/html_objects.rb +0 -0
  602. data/spec/{servers → support/servers}/modules/recon/grep/http_only_cookies.rb +0 -0
  603. data/spec/{servers → support/servers}/modules/recon/grep/insecure_cookies.rb +0 -0
  604. data/spec/{servers → support/servers}/modules/recon/grep/mixed_resource.rb +0 -0
  605. data/spec/{servers → support/servers}/modules/recon/grep/password_autocomplete.rb +0 -0
  606. data/spec/{servers → support/servers}/modules/recon/grep/private_ip.rb +0 -0
  607. data/spec/{servers → support/servers}/modules/recon/grep/ssn.rb +0 -0
  608. data/spec/{servers → support/servers}/modules/recon/grep/unencrypted_password_forms.rb +0 -0
  609. data/spec/{servers → support/servers}/modules/recon/htaccess_limit.rb +0 -0
  610. data/spec/{servers → support/servers}/modules/recon/http_put.rb +0 -0
  611. data/spec/{servers → support/servers}/modules/recon/interesting_responses.rb +0 -0
  612. data/spec/{servers → support/servers}/modules/recon/webdav.rb +0 -0
  613. data/spec/{servers → support/servers}/modules/recon/xst.rb +0 -0
  614. data/spec/{servers → support/servers}/plugins/autologin.rb +0 -0
  615. data/spec/{servers → support/servers}/plugins/autothrottle.rb +0 -0
  616. data/spec/{servers → support/servers}/plugins/content_types.rb +0 -0
  617. data/spec/{servers → support/servers}/plugins/cookie_collector.rb +0 -0
  618. data/spec/{servers → support/servers}/plugins/form_dicattack.rb +0 -0
  619. data/spec/{servers → support/servers}/plugins/healthmap.rb +0 -0
  620. data/spec/{servers → support/servers}/plugins/http_dicattack.rb +0 -0
  621. data/spec/{servers → support/servers}/plugins/http_dicattack_secure.rb +0 -0
  622. data/spec/{servers → support/servers}/plugins/http_dicattack_unprotected.rb +0 -0
  623. data/spec/{servers → support/servers}/plugins/meta/remedies/discovery.rb +1 -1
  624. data/spec/{servers → support/servers}/plugins/meta/remedies/timing_attacks.rb +0 -0
  625. data/spec/{servers → support/servers}/plugins/profiler.rb +0 -0
  626. data/spec/{servers → support/servers}/plugins/rescan.rb +0 -0
  627. data/spec/{servers → support/servers}/plugins/waf_detector.rb +0 -0
  628. data/spec/{shared → support/shared}/component.rb +1 -1
  629. data/spec/{shared → support/shared}/element/capabilities/auditable.rb +363 -194
  630. data/spec/{shared → support/shared}/element/capabilities/refreshable.rb +0 -0
  631. data/spec/support/shared/fingerprinter.rb +14 -0
  632. data/spec/{shared → support/shared}/module.rb +1 -1
  633. data/spec/{shared → support/shared}/path_extractor.rb +0 -0
  634. data/spec/{shared → support/shared}/plugin.rb +0 -0
  635. data/spec/{shared → support/shared}/reports.rb +1 -1
  636. data/spec/{arachni/bloom_filter_spec.rb → support/shared/support/lookup.rb} +11 -11
  637. metadata +936 -199
  638. data/lib/arachni/bloom_filter.rb +0 -74
  639. data/lib/arachni/buffer.rb +0 -3
  640. data/lib/arachni/buffer/autoflush.rb +0 -77
  641. data/lib/arachni/database.rb +0 -4
  642. data/lib/arachni/database/base.rb +0 -131
  643. data/modules/audit/code_injection_timing/payloads.txt +0 -4
  644. data/modules/audit/os_cmd_injection/payloads.txt +0 -3
  645. data/modules/audit/os_cmd_injection_timing/payloads.txt +0 -2
  646. data/modules/audit/sqli_blind_timing/payloads.txt +0 -69
  647. data/spec/helpers/misc.rb +0 -41
  648. data/spec/helpers/processes.rb +0 -112
  649. data/spec/helpers/requires.rb +0 -8
  650. data/spec/helpers/server.rb +0 -54
@@ -1,32 +1,16 @@
1
- require_relative '../../../spec_helper'
2
-
1
+ require 'spec_helper'
3
2
  require 'json'
4
3
 
5
- require Arachni::Options.instance.dir['lib'] + 'rpc/client/instance'
6
- require Arachni::Options.instance.dir['lib'] + 'rpc/server/instance'
7
-
8
4
  describe Arachni::RPC::Server::Framework do
9
5
  before( :all ) do
10
6
  @opts = Arachni::Options.instance
11
- @token = 'secret!'
12
-
13
- @get_instance = proc do |opts|
14
- opts ||= @opts
15
- port = random_port
16
- opts.rpc_port = port
17
- fork_em { Arachni::RPC::Server::Instance.new( opts, @token ) }
18
- sleep 1
19
- Arachni::RPC::Client::Instance.new( opts,
20
- "#{opts.rpc_address}:#{port}", @token
21
- )
22
- end
23
7
 
24
- @instance = @get_instance.call
8
+ @instance = instance_spawn
25
9
  @framework = @instance.framework
26
- @modules = @instance.modules
27
- @plugins = @instance.plugins
10
+ @modules = @instance.modules
11
+ @plugins = @instance.plugins
28
12
 
29
- @instance_clean = @get_instance.call
13
+ @instance_clean = instance_spawn
30
14
  @framework_clean = @instance_clean.framework
31
15
  end
32
16
 
@@ -56,7 +40,7 @@ describe Arachni::RPC::Server::Framework do
56
40
  end
57
41
  context 'when the scan is running' do
58
42
  it 'returns true' do
59
- @instance.opts.url = server_url_for( :auditor ) + '/sleep'
43
+ @instance.opts.url = web_server_url_for( :auditor ) + '/sleep'
60
44
  @modules.load( 'test' )
61
45
  @framework.run.should be_true
62
46
  @framework.busy?.should be_true
@@ -73,14 +57,9 @@ describe Arachni::RPC::Server::Framework do
73
57
  @framework_clean.revision.should == Arachni::Framework::REVISION
74
58
  end
75
59
  end
76
- describe '#high_performance?' do
77
- it 'returns false' do
78
- @framework_clean.high_performance?.should be_false
79
- end
80
- end
81
60
  describe '#master?' do
82
61
  it 'returns false' do
83
- @framework_clean.high_performance?.should be_false
62
+ @framework_clean.master?.should be_false
84
63
  end
85
64
  end
86
65
  describe '#slave?' do
@@ -131,23 +110,23 @@ describe Arachni::RPC::Server::Framework do
131
110
 
132
111
  describe '#list_modules' do
133
112
  it 'lists all available modules' do
134
- @framework_clean.lsmod.should be_any
113
+ @framework_clean.list_modules.should be_any
135
114
  end
136
115
  it 'aliased to #lsmod' do
137
116
  @framework_clean.list_modules.should == @framework_clean.lsmod
138
117
  end
139
118
  end
140
- describe '#output' do
141
- it 'returns the instance\'s output messages' do
142
- output = @framework_clean.output.first
143
- output.keys.first.is_a?( Symbol ).should be_true
144
- output.values.first.is_a?( String ).should be_true
119
+
120
+ describe '#list_platforms' do
121
+ it 'lists all available platforms' do
122
+ @framework_clean.list_platforms.should == Arachni::Framework.new.list_platforms
145
123
  end
146
124
  end
125
+
147
126
  describe '#run' do
148
127
  it 'performs a scan' do
149
128
  instance = @instance_clean
150
- instance.opts.url = server_url_for( :framework_simple )
129
+ instance.opts.url = web_server_url_for( :framework_simple )
151
130
  instance.modules.load( 'test' )
152
131
  instance.framework.run.should be_true
153
132
  sleep( 1 ) while instance.framework.busy?
@@ -168,7 +147,7 @@ describe Arachni::RPC::Server::Framework do
168
147
  describe '#stats' do
169
148
  it 'returns a hash containing general runtime statistics' do
170
149
  instance = @instance_clean
171
- instance.opts.url = server_url_for( :framework_simple )
150
+ instance.opts.url = web_server_url_for( :framework_simple )
172
151
  instance.modules.load( 'test' )
173
152
  instance.framework.run.should be_true
174
153
 
@@ -209,8 +188,8 @@ describe Arachni::RPC::Server::Framework do
209
188
  end
210
189
  describe '#status' do
211
190
  before( :all ) do
212
- @inst = @get_instance.call
213
- @inst.opts.url = server_url_for( :framework_simple ) + '/crawl'
191
+ @inst = instance_spawn
192
+ @inst.opts.url = web_server_url_for( :framework_simple ) + '/crawl'
214
193
  @inst.modules.load( 'test' )
215
194
  end
216
195
  context 'after initialization' do
@@ -237,10 +216,10 @@ describe Arachni::RPC::Server::Framework do
237
216
  context 'during audit' do
238
217
  it 'returns "audit"' do
239
218
  mod_lib = @opts.dir['modules'].dup
240
- @opts.dir['modules'] = spec_path + '/fixtures/wait_module/'
219
+ @opts.dir['modules'] = fixtures_path + '/wait_module/'
241
220
 
242
- inst = @get_instance.call
243
- inst.opts.url = server_url_for( :framework_simple )
221
+ inst = instance_spawn
222
+ inst.opts.url = web_server_url_for( :framework_simple )
244
223
  inst.opts.audit_headers = true
245
224
  inst.modules.load( 'wait' )
246
225
  inst.framework.run
@@ -252,8 +231,8 @@ describe Arachni::RPC::Server::Framework do
252
231
  end
253
232
  context 'once the scan had completed' do
254
233
  it 'returns "done"' do
255
- inst = @get_instance.call
256
- inst.opts.url = server_url_for( :framework_simple )
234
+ inst = instance_spawn
235
+ inst.opts.url = web_server_url_for( :framework_simple )
257
236
  inst.modules.load( 'test' )
258
237
  inst.framework.run
259
238
  sleep 2
@@ -263,8 +242,8 @@ describe Arachni::RPC::Server::Framework do
263
242
  end
264
243
  describe '#clean_up' do
265
244
  it 'sets the framework state to finished and wait for plugins to finish' do
266
- instance = @get_instance.call
267
- instance.opts.url = server_url_for( :framework_hpg )
245
+ instance = instance_spawn
246
+ instance.opts.url = web_server_url_for( :framework_hpg )
268
247
  instance.modules.load( 'test' )
269
248
  instance.plugins.load( { 'wait' => {} } )
270
249
  instance.framework.run.should be_true
@@ -398,7 +377,7 @@ describe Arachni::RPC::Server::Framework do
398
377
 
399
378
  describe '#token' do
400
379
  it 'returns the RPC token' do
401
- @instance_clean.framework.token.should == @token
380
+ @instance_clean.framework.token.should == instance_token_for( @instance_clean )
402
381
  end
403
382
  end
404
383
 
@@ -408,29 +387,17 @@ describe Arachni::RPC::Server::Framework do
408
387
  json = @instance_clean.framework.report_as( :json )
409
388
  JSON.load( json )['issues'].size.should == @instance_clean.framework.auditstore.issues.size
410
389
  end
411
- end
412
390
 
413
- context 'when passed an valid report name which does not support the \'outfile\' option' do
414
- it 'raises an exception' do
415
- raised = false
416
- begin
417
- @instance_clean.framework.report_as( :stdout )
418
- rescue Exception
419
- raised = true
391
+ context 'which does not support the \'outfile\' option' do
392
+ it 'raises an exception' do
393
+ expect { @instance_clean.framework.report_as( :stdout ) }.to raise_error
420
394
  end
421
- raised.should be_true
422
395
  end
423
396
  end
424
397
 
425
398
  context 'when passed an invalid report name' do
426
399
  it 'raises an exception' do
427
- raised = false
428
- begin
429
- @instance_clean.framework.report_as( :blah )
430
- rescue Exception
431
- raised = true
432
- end
433
- raised.should be_true
400
+ expect { @instance_clean.framework.report_as( :blah ) }.to raise_error
434
401
  end
435
402
  end
436
403
  end
@@ -471,10 +438,10 @@ describe Arachni::RPC::Server::Framework do
471
438
  describe '#restrict_to_elements' do
472
439
  it 'restricts the audit to the provided element signatures' do
473
440
  mod_lib = @opts.dir['modules'].dup
474
- @opts.dir['modules'] = spec_path + '/fixtures/taint_module/'
441
+ @opts.dir['modules'] = fixtures_path + '/taint_module/'
475
442
 
476
- inst = @get_instance.call( @opts)
477
- inst.opts.url = server_url_for( :framework_simple ) + '/restrict_to_elements'
443
+ inst = instance_spawn
444
+ inst.opts.url = web_server_url_for( :framework_simple ) + '/restrict_to_elements'
478
445
  inst.opts.audit_links = true
479
446
  inst.modules.load( 'taint' )
480
447
 
@@ -494,8 +461,8 @@ describe Arachni::RPC::Server::Framework do
494
461
  end
495
462
  describe '#update_page_queue' do
496
463
  it 'pushs the provided page objects to the page audit queue' do
497
- url = server_url_for( :framework_simple )
498
- inst = @get_instance.call
464
+ url = web_server_url_for( :framework_simple )
465
+ inst = instance_spawn
499
466
  inst.opts.url = url
500
467
  inst.opts.audit_links = true
501
468
  inst.modules.load( 'taint' )
@@ -513,14 +480,14 @@ describe Arachni::RPC::Server::Framework do
513
480
  inst.framework.issues.size.should == 2
514
481
  end
515
482
  end
516
- describe '#register_issues' do
483
+ describe '#update_issues' do
517
484
  it 'registers an issue with the instance' do
518
- url = server_url_for( :framework_simple )
519
- inst = @get_instance.call
485
+ url = web_server_url_for( :framework_simple )
486
+ inst = instance_spawn
520
487
  inst.opts.url = url
521
488
 
522
489
  issue = Arachni::Issue.new( name: 'stuff', url: url, elem: 'link' )
523
- inst.framework.register_issues( [issue] ).should be_true
490
+ inst.framework.update_issues( [issue] ).should be_true
524
491
 
525
492
  issues = inst.framework.issues
526
493
  issues.size.should == 1
@@ -1,63 +1,17 @@
1
- require_relative '../../../spec_helper'
1
+ require 'spec_helper'
2
2
 
3
- require Arachni::Options.instance.dir['lib'] + 'rpc/server/dispatcher'
4
- require Arachni::Options.instance.dir['lib'] + 'rpc/client/instance'
5
- require Arachni::Options.instance.dir['lib'] + 'rpc/server/instance'
6
-
7
- describe Arachni::RPC::Server::Instance do
3
+ describe 'Arachni::RPC::Server::Instance' do
8
4
  before( :all ) do
9
- @opts = Arachni::Options.instance
10
- @token = 'secret!'
11
-
12
- @instances = []
13
-
14
- @get_instance = proc do |opts|
15
- opts ||= @opts
16
-
17
- port = random_port
18
- opts.rpc_port = port
19
-
20
- fork_em { Arachni::RPC::Server::Instance.new( opts, @token ) }
21
- sleep 1
22
-
23
- @instances << Arachni::RPC::Client::Instance.new( opts,
24
- "#{opts.rpc_address}:#{port}", @token
25
- )
26
-
27
- @instances.last
28
- end
29
-
30
- @utils = Arachni::Module::Utilities
31
- @instance = @get_instance.call
32
-
33
- @dispatchers = []
34
-
35
- @opts.pool_size = 1
36
- @get_grid_instance = proc do |opts|
37
- opts ||= @opts
38
- port = random_port
39
- opts.rpc_port = port
40
- exec_dispatcher( opts )
41
-
42
- port2 = random_port
43
- opts.rpc_port = port2
44
- opts.neighbour = "#{opts.rpc_address}:#{port}"
45
- opts.pipe_id = 'blah'
46
- exec_dispatcher( opts )
47
-
48
- dispatcher = Arachni::RPC::Client::Dispatcher.new( opts,
49
- "#{opts.rpc_address}:#{port}" )
50
- @dispatchers << dispatcher
51
-
52
- inst_info = dispatcher.dispatch
53
- @instances << Arachni::RPC::Client::Instance.new( opts,inst_info['url'], inst_info['token'] )
54
- @instances.last
55
- end
5
+ @opts = Arachni::Options.instance
6
+ @utils = Arachni::Module::Utilities
7
+ @instance = instance_spawn
56
8
  end
57
9
 
58
- after( :all ) do
59
- @instances.each { |i| i.service.shutdown rescue nil }
60
- @dispatchers.each { |d| d.stats['consumed_pids'].each { |p| pids << p } }
10
+ it 'supports UNIX sockets' do
11
+ socket = '/tmp/arachni-instance'
12
+ instance = instance_spawn( socket: socket )
13
+ instance.framework.multi_self_url.should == socket
14
+ instance.service.alive?.should be_true
61
15
  end
62
16
 
63
17
  describe '#service' do
@@ -113,7 +67,7 @@ describe Arachni::RPC::Server::Instance do
113
67
  end
114
68
  end
115
69
 
116
- [:list_modules, :list_plugins, :list_reports, :busy?, :report].each do |m|
70
+ [:list_platforms, :list_modules, :list_plugins, :list_reports, :busy?, :report].each do |m|
117
71
  describe "##{m}" do
118
72
  it "delegates to Framework##{m}" do
119
73
  @instance.service.send(m).should == @instance.framework.send(m)
@@ -161,19 +115,22 @@ describe Arachni::RPC::Server::Instance do
161
115
 
162
116
  describe '#scan' do
163
117
  it 'configures and starts a scan' do
164
- instance = @get_instance.call
118
+ instance = instance_spawn
165
119
 
166
- slave = @get_instance.call
120
+ slave = instance_spawn
167
121
 
168
122
  instance.service.busy?.should == instance.framework.busy?
169
123
  instance.service.status.should == instance.framework.status
170
124
 
171
125
  instance.service.scan(
172
- url: server_url_for( :framework_simple ),
126
+ url: web_server_url_for( :framework_simple ),
173
127
  audit_links: true,
174
128
  audit_forms: true,
175
129
  modules: :test,
176
- slaves: [ { url: slave.url, token: @token } ]
130
+ slaves: [{
131
+ url: slave.url,
132
+ token: instance_token_for( slave )
133
+ }]
177
134
  )
178
135
 
179
136
  # if a scan in already running it should just bail out early
@@ -193,20 +150,34 @@ describe Arachni::RPC::Server::Instance do
193
150
  i_report['issues'].should be_any
194
151
  end
195
152
 
153
+ context 'with invalid :platforms' do
154
+ it 'raises ArgumentError' do
155
+ expect {
156
+ instance_spawn.service.scan(
157
+ url: web_server_url_for( :framework_simple ),
158
+ platforms: [ :stuff ]
159
+ )
160
+ }.to raise_error
161
+ end
162
+ end
163
+
196
164
  context 'when the options Hash uses Strings instead of Symbols' do
197
165
  it 'makes no difference' do
198
- instance = @get_instance.call
199
- slave = @get_instance.call
166
+ instance = instance_spawn
167
+ slave = instance_spawn
200
168
 
201
169
  instance.service.busy?.should == instance.framework.busy?
202
170
  instance.service.status.should == instance.framework.status
203
171
 
204
172
  instance.service.scan(
205
- 'url' => server_url_for( :framework_simple ),
173
+ 'url' => web_server_url_for( :framework_simple ),
206
174
  'audit_links '=> true,
207
175
  'audit_forms' => true,
208
176
  'modules' => 'test',
209
- 'slaves' => [ { 'url' => slave.url, 'token' => @token } ]
177
+ slaves: [{
178
+ url: slave.url,
179
+ token: instance_token_for( slave )
180
+ }]
210
181
  )
211
182
 
212
183
  # if a scan in already running it should just bail out early
@@ -230,74 +201,133 @@ describe Arachni::RPC::Server::Instance do
230
201
 
231
202
  describe :spawns do
232
203
  context 'when it has a Dispatcher' do
233
- it 'requests its slaves from it' do
234
- instance = @get_grid_instance.call
204
+ context 'which is a Grid member' do
205
+ context 'with grid_mode set to' do
206
+ context :aggregate do
207
+ it 'requests slaves from grid members with unique Pipe-IDs' do
208
+ instance = instance_grid_spawn
235
209
 
236
- instance.service.scan(
237
- url: server_url_for( :framework_simple ),
238
- audit_links: true,
239
- audit_forms: true,
240
- modules: :test,
241
- spawns: 4
242
- )
210
+ instance.service.scan(
211
+ url: web_server_url_for( :framework_simple ),
212
+ audit_links: true,
213
+ audit_forms: true,
214
+ modules: :test,
215
+ spawns: 4,
216
+ grid_mode: :aggregate
217
+ )
243
218
 
244
- # if a scan in already running it should just bail out early
245
- instance.service.scan.should be_false
219
+ # if a scan in already running it should just bail out early
220
+ instance.service.scan.should be_false
246
221
 
247
- sleep 1 while instance.service.busy?
222
+ sleep 1 while instance.service.busy?
248
223
 
249
- instance.framework.progress_data['instances'].size.should == 5
224
+ # Since we've only got 3 Dispatchers in the Grid.
225
+ instance.framework.progress_data['instances'].size.should == 3
250
226
 
251
- instance.service.busy?.should == instance.framework.busy?
252
- instance.service.status.should == instance.framework.status
227
+ instance.service.busy?.should == instance.framework.busy?
228
+ instance.service.status.should == instance.framework.status
253
229
 
254
- i_report = instance.service.report
255
- f_report = instance.framework.report
230
+ i_report = instance.service.report
231
+ f_report = instance.framework.report
256
232
 
257
- i_report.should == f_report
258
- i_report['issues'].should be_any
259
- end
233
+ i_report.should == f_report
234
+ i_report['issues'].should be_any
235
+ end
236
+ end
237
+ context :balance do
238
+ it 'requests its slaves from it' do
239
+ instance = instance_grid_spawn
260
240
 
261
- context 'which is a Grid member' do
262
- it 'requests its slaves from it' do
263
- instance = @get_grid_instance.call
241
+ instance.service.scan(
242
+ url: web_server_url_for( :framework_simple ),
243
+ audit_links: true,
244
+ audit_forms: true,
245
+ modules: :test,
246
+ spawns: 4,
247
+ grid_mode: :balance
248
+ )
264
249
 
265
- instance.service.scan(
266
- url: server_url_for( :framework_simple ),
267
- audit_links: true,
268
- audit_forms: true,
269
- modules: :test,
270
- spawns: 4,
271
- grid: true
272
- )
250
+ # if a scan in already running it should just bail out early
251
+ instance.service.scan.should be_false
273
252
 
274
- # if a scan in already running it should just bail out early
275
- instance.service.scan.should be_false
253
+ sleep 1 while instance.service.busy?
276
254
 
277
- sleep 1 while instance.service.busy?
255
+ # No matter how many grid members with unique Pipe-IDs there are
256
+ # since we're in balance mode.
257
+ instance.framework.progress_data['instances'].size.should == 5
278
258
 
279
- # Since we've only got 2 Dispatchers in the Grid.
280
- instance.framework.progress_data['instances'].size.should == 2
259
+ instance.service.busy?.should == instance.framework.busy?
260
+ instance.service.status.should == instance.framework.status
281
261
 
282
- instance.service.busy?.should == instance.framework.busy?
283
- instance.service.status.should == instance.framework.status
262
+ i_report = instance.service.report
263
+ f_report = instance.framework.report
264
+
265
+ i_report.should == f_report
266
+ i_report['issues'].should be_any
267
+ end
268
+ end
284
269
 
285
- i_report = instance.service.report
286
- f_report = instance.framework.report
270
+ context 'unknown option' do
271
+ it 'raises an exception' do
272
+ expect {
273
+ instance_grid_spawn.service.scan(
274
+ url: web_server_url_for( :framework_simple ),
275
+ audit_links: true,
276
+ audit_forms: true,
277
+ modules: :test,
278
+ spawns: 4,
279
+ grid_mode: :blahblah
280
+ )
281
+ }.to raise_error
282
+ end
283
+ end
287
284
 
288
- i_report.should == f_report
289
- i_report['issues'].should be_any
285
+ end
286
+
287
+ context 'with :grid set to' do
288
+ context true do
289
+ it 'it a shorthand for grid_mode: :balance' do
290
+ instance = instance_grid_spawn
291
+
292
+ instance.service.scan(
293
+ url: web_server_url_for( :framework_simple ),
294
+ audit_links: true,
295
+ audit_forms: true,
296
+ modules: :test,
297
+ spawns: 4,
298
+ grid: true
299
+ )
300
+
301
+ # if a scan in already running it should just bail out early
302
+ instance.service.scan.should be_false
303
+
304
+ sleep 1 while instance.service.busy?
305
+
306
+ # No matter how many grid members with unique Pipe-IDs there are
307
+ # since we're in balance mode.
308
+ instance.framework.progress_data['instances'].size.should == 5
309
+
310
+ instance.service.busy?.should == instance.framework.busy?
311
+ instance.service.status.should == instance.framework.status
312
+
313
+ i_report = instance.service.report
314
+ f_report = instance.framework.report
315
+
316
+ i_report.should == f_report
317
+ i_report['issues'].should be_any
318
+ end
319
+ end
290
320
  end
291
321
 
292
322
  context 'when it is less than 1' do
293
323
  it 'raises an exception' do
294
- instance = @get_grid_instance.call
324
+ instance = instance_grid_spawn
295
325
 
296
326
  raised = false
297
327
  begin
298
328
  instance.service.scan(
299
- url: server_url_for( :framework_simple ),
300
- grid: true
329
+ url: web_server_url_for( :framework_simple ),
330
+ grid_mode: :balance
301
331
  )
302
332
  rescue => e
303
333
  raised = e.rpc_exception?
@@ -309,14 +339,14 @@ describe Arachni::RPC::Server::Instance do
309
339
 
310
340
  context 'when Options#restrict_to_paths is set' do
311
341
  it 'raises an exception' do
312
- instance = @get_grid_instance.call
313
- url = server_url_for( :framework_simple )
342
+ instance = instance_grid_spawn
343
+ url = web_server_url_for( :framework_simple )
314
344
 
315
345
  raised = false
316
346
  begin
317
347
  instance.service.scan(
318
348
  url: url,
319
- grid: true,
349
+ grid_mode: :balance,
320
350
  spawns: 4,
321
351
  restrict_paths: [url]
322
352
  )
@@ -332,20 +362,37 @@ describe Arachni::RPC::Server::Instance do
332
362
  end
333
363
 
334
364
  context 'when it does not have a Dispatcher' do
365
+ it 'uses UNIX sockets to communicate with the slaves' do
366
+ instance = instance_spawn
367
+ instance.service.scan(
368
+ url: web_server_url_for( :framework_simple ),
369
+ audit_links: true,
370
+ audit_forms: true,
371
+ modules: :test,
372
+ spawns: 4
373
+ )
374
+ sleep 1 while instance.service.busy?
375
+
376
+ self_url = instance.framework.self_url
377
+
378
+ instance.service.progress( with: :instances )['instances'].each do |progress|
379
+ url = progress['url']
380
+ next if url == self_url
381
+ File.socket?( url ).should be_true
382
+ end
383
+ end
384
+
335
385
  it 'spawns a number of slaves' do
336
- instance = @get_instance.call
386
+ instance = instance_spawn
337
387
 
338
388
  instance.service.scan(
339
- url: server_url_for( :framework_simple ),
389
+ url: web_server_url_for( :framework_simple ),
340
390
  audit_links: true,
341
391
  audit_forms: true,
342
392
  modules: :test,
343
393
  spawns: 4
344
394
  )
345
395
 
346
- # if a scan in already running it should just bail out early
347
- instance.service.scan.should be_false
348
-
349
396
  sleep 1 while instance.service.busy?
350
397
 
351
398
  instance.framework.progress_data['instances'].size.should == 5
@@ -363,13 +410,13 @@ describe Arachni::RPC::Server::Instance do
363
410
 
364
411
  context 'when link_count_limit has been set' do
365
412
  it 'should be divided by the amount of spawns' do
366
- instance = @get_instance.call
413
+ instance = instance_spawn
367
414
 
368
415
  link_count_limit = 100
369
416
  spawns = 4
370
417
 
371
418
  instance.service.scan(
372
- url: server_url_for( :framework_simple ),
419
+ url: web_server_url_for( :framework_simple ),
373
420
  audit_links: true,
374
421
  audit_forms: true,
375
422
  modules: :test,
@@ -382,13 +429,13 @@ describe Arachni::RPC::Server::Instance do
382
429
  end
383
430
  context 'when http_req_limit has been set' do
384
431
  it 'should be divided by the amount of spawns' do
385
- instance = @get_instance.call
432
+ instance = instance_spawn
386
433
 
387
434
  http_req_limit = 100
388
435
  spawns = 4
389
436
 
390
437
  instance.service.scan(
391
- url: server_url_for( :framework_simple ),
438
+ url: web_server_url_for( :framework_simple ),
392
439
  audit_links: true,
393
440
  audit_forms: true,
394
441
  modules: :test,
@@ -404,9 +451,9 @@ describe Arachni::RPC::Server::Instance do
404
451
 
405
452
  describe '#progress' do
406
453
  before( :all ) do
407
- @progress_instance = @get_instance.call
454
+ @progress_instance = instance_spawn
408
455
  @progress_instance.service.scan(
409
- url: server_url_for( :framework_simple ),
456
+ url: web_server_url_for( :framework_simple ),
410
457
  audit_links: true,
411
458
  audit_forms: true,
412
459
  modules: :test,
@@ -499,9 +546,16 @@ describe Arachni::RPC::Server::Instance do
499
546
  describe :instances do
500
547
  it 'includes instances' do
501
548
  instance = @progress_instance
502
- p = instance.service.progress( with: :instances )
503
- p['instances'].size.should == 2
504
- p['instances'].should == instance.framework.progress_data['instances']
549
+
550
+ stats1 = instance.service.progress( with: :instances )['instances']
551
+ stats2 = instance.framework.progress_data['instances']
552
+
553
+ # Average req/s may differ.
554
+ stats1.each { |h| h.delete 'avg' }
555
+ stats2.each { |h| h.delete 'avg' }
556
+
557
+ stats1.size.should == 2
558
+ stats1.should == stats2
505
559
  end
506
560
  end
507
561
 
@@ -523,17 +577,11 @@ describe Arachni::RPC::Server::Instance do
523
577
 
524
578
  describe '#shutdown' do
525
579
  it 'shuts-down the instance' do
526
- instance = @get_instance.call
580
+ instance = instance_spawn
527
581
  instance.service.shutdown.should be_true
528
582
  sleep 4
529
- raised = false
530
- begin
531
- instance.service.alive?
532
- rescue Exception
533
- raised = true
534
- end
535
583
 
536
- raised.should be_true
584
+ expect { instance.service.alive? }.to raise_error
537
585
  end
538
586
  end
539
587
  end