arachni 1.5 → 1.6.1

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 (718) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +63 -0
  3. data/Gemfile +2 -4
  4. data/LICENSE.md +1 -1
  5. data/README.md +112 -111
  6. data/Rakefile +1 -43
  7. data/arachni.gemspec +26 -26
  8. data/bin/arachni +1 -1
  9. data/bin/arachni_console +1 -1
  10. data/bin/arachni_multi +1 -1
  11. data/bin/arachni_reporter +1 -1
  12. data/bin/arachni_reproduce +1 -1
  13. data/bin/arachni_rest_server +1 -1
  14. data/bin/arachni_restore +1 -1
  15. data/bin/arachni_rpc +1 -1
  16. data/bin/arachni_rpcd +1 -1
  17. data/bin/arachni_rpcd_monitor +1 -1
  18. data/bin/arachni_script +1 -1
  19. data/components/checks/active/code_injection.rb +1 -1
  20. data/components/checks/active/code_injection_php_input_wrapper.rb +1 -1
  21. data/components/checks/active/code_injection_timing.rb +1 -1
  22. data/components/checks/active/csrf.rb +7 -2
  23. data/components/checks/active/file_inclusion.rb +1 -1
  24. data/components/checks/active/ldap_injection.rb +1 -1
  25. data/components/checks/active/no_sql_injection.rb +1 -1
  26. data/components/checks/active/no_sql_injection_differential.rb +3 -3
  27. data/components/checks/active/os_cmd_injection.rb +1 -1
  28. data/components/checks/active/os_cmd_injection_timing.rb +1 -1
  29. data/components/checks/active/path_traversal.rb +1 -1
  30. data/components/checks/active/response_splitting.rb +1 -1
  31. data/components/checks/active/rfi.rb +1 -1
  32. data/components/checks/active/session_fixation.rb +1 -1
  33. data/components/checks/active/source_code_disclosure.rb +1 -1
  34. data/components/checks/active/sql_injection.rb +1 -1
  35. data/components/checks/active/sql_injection_differential.rb +3 -3
  36. data/components/checks/active/sql_injection_timing.rb +1 -1
  37. data/components/checks/active/trainer.rb +1 -1
  38. data/components/checks/active/unvalidated_redirect.rb +1 -1
  39. data/components/checks/active/unvalidated_redirect_dom.rb +1 -1
  40. data/components/checks/active/xpath_injection.rb +1 -1
  41. data/components/checks/active/xss.rb +4 -4
  42. data/components/checks/active/xss_dom.rb +1 -1
  43. data/components/checks/active/xss_dom_script_context.rb +1 -1
  44. data/components/checks/active/xss_event.rb +3 -3
  45. data/components/checks/active/xss_path.rb +1 -1
  46. data/components/checks/active/xss_script_context.rb +3 -3
  47. data/components/checks/active/xss_tag.rb +4 -3
  48. data/components/checks/active/xxe.rb +1 -1
  49. data/components/checks/passive/allowed_methods.rb +1 -1
  50. data/components/checks/passive/backdoors.rb +1 -1
  51. data/components/checks/passive/backup_directories.rb +1 -1
  52. data/components/checks/passive/backup_files.rb +2 -2
  53. data/components/checks/passive/common_admin_interfaces.rb +1 -1
  54. data/components/checks/passive/common_directories/directories.txt +1 -0
  55. data/components/checks/passive/common_directories.rb +1 -1
  56. data/components/checks/passive/common_files.rb +1 -1
  57. data/components/checks/passive/directory_listing.rb +1 -1
  58. data/components/checks/passive/grep/captcha.rb +1 -1
  59. data/components/checks/passive/grep/cookie_set_for_parent_domain.rb +1 -1
  60. data/components/checks/passive/grep/credit_card.rb +1 -1
  61. data/components/checks/passive/grep/cvs_svn_users.rb +1 -1
  62. data/components/checks/passive/grep/emails.rb +1 -1
  63. data/components/checks/passive/grep/form_upload.rb +1 -1
  64. data/components/checks/passive/grep/hsts.rb +1 -1
  65. data/components/checks/passive/grep/html_objects.rb +1 -1
  66. data/components/checks/passive/grep/http_only_cookies.rb +1 -1
  67. data/components/checks/passive/grep/insecure_cookies.rb +1 -1
  68. data/components/checks/passive/grep/insecure_cors_policy.rb +1 -1
  69. data/components/checks/passive/grep/mixed_resource.rb +1 -1
  70. data/components/checks/passive/grep/password_autocomplete.rb +1 -1
  71. data/components/checks/passive/grep/private_ip.rb +1 -1
  72. data/components/checks/passive/grep/ssn.rb +1 -1
  73. data/components/checks/passive/grep/unencrypted_password_forms.rb +1 -1
  74. data/components/checks/passive/grep/x_frame_options.rb +4 -4
  75. data/components/checks/passive/htaccess_limit.rb +1 -1
  76. data/components/checks/passive/http_put.rb +1 -1
  77. data/components/checks/passive/insecure_client_access_policy.rb +1 -1
  78. data/components/checks/passive/insecure_cross_domain_policy_access.rb +1 -1
  79. data/components/checks/passive/insecure_cross_domain_policy_headers.rb +1 -1
  80. data/components/checks/passive/interesting_responses.rb +1 -1
  81. data/components/checks/passive/localstart_asp.rb +1 -1
  82. data/components/checks/passive/origin_spoof_access_restriction_bypass.rb +1 -1
  83. data/components/checks/passive/webdav.rb +1 -1
  84. data/components/checks/passive/xst.rb +1 -1
  85. data/components/fingerprinters/frameworks/aspx_mvc.rb +1 -1
  86. data/components/fingerprinters/frameworks/cakephp.rb +1 -1
  87. data/components/fingerprinters/frameworks/cherrypy.rb +1 -1
  88. data/components/fingerprinters/frameworks/django.rb +1 -1
  89. data/components/fingerprinters/frameworks/jsf.rb +1 -1
  90. data/components/fingerprinters/frameworks/nette.rb +1 -1
  91. data/components/fingerprinters/frameworks/rack.rb +1 -1
  92. data/components/fingerprinters/frameworks/rails.rb +1 -1
  93. data/components/fingerprinters/frameworks/symfony.rb +1 -1
  94. data/components/fingerprinters/languages/asp.rb +1 -1
  95. data/components/fingerprinters/languages/aspx.rb +1 -1
  96. data/components/fingerprinters/languages/java.rb +1 -1
  97. data/components/fingerprinters/languages/php.rb +1 -1
  98. data/components/fingerprinters/languages/python.rb +1 -1
  99. data/components/fingerprinters/languages/ruby.rb +1 -1
  100. data/components/fingerprinters/os/bsd.rb +1 -1
  101. data/components/fingerprinters/os/linux.rb +1 -1
  102. data/components/fingerprinters/os/solaris.rb +1 -1
  103. data/components/fingerprinters/os/unix.rb +1 -1
  104. data/components/fingerprinters/os/windows.rb +1 -1
  105. data/components/fingerprinters/servers/apache.rb +1 -1
  106. data/components/fingerprinters/servers/gunicorn.rb +1 -1
  107. data/components/fingerprinters/servers/iis.rb +1 -1
  108. data/components/fingerprinters/servers/jetty.rb +1 -1
  109. data/components/fingerprinters/servers/nginx.rb +1 -1
  110. data/components/fingerprinters/servers/tomcat.rb +1 -1
  111. data/components/path_extractors/anchors.rb +1 -1
  112. data/components/path_extractors/areas.rb +1 -1
  113. data/components/path_extractors/comments.rb +1 -1
  114. data/components/path_extractors/data_url.rb +1 -1
  115. data/components/path_extractors/forms.rb +1 -1
  116. data/components/path_extractors/frames.rb +1 -1
  117. data/components/path_extractors/generic.rb +1 -1
  118. data/components/path_extractors/links.rb +1 -1
  119. data/components/path_extractors/meta_refresh.rb +1 -1
  120. data/components/path_extractors/scripts.rb +2 -2
  121. data/components/plugins/autologin.rb +1 -1
  122. data/components/plugins/beep_notify.rb +1 -1
  123. data/components/plugins/content_types.rb +1 -1
  124. data/components/plugins/cookie_collector.rb +1 -1
  125. data/components/plugins/debug/browser_cluster_job_monitor.rb +1 -1
  126. data/components/plugins/defaults/autothrottle.rb +1 -1
  127. data/components/plugins/defaults/healthmap.rb +2 -2
  128. data/components/plugins/defaults/meta/remedies/discovery.rb +1 -1
  129. data/components/plugins/defaults/meta/remedies/timing_attacks.rb +1 -1
  130. data/components/plugins/defaults/meta/uniformity.rb +1 -1
  131. data/components/plugins/email_notify.rb +1 -1
  132. data/components/plugins/exec.rb +1 -1
  133. data/components/plugins/form_dicattack.rb +1 -1
  134. data/components/plugins/headers_collector.rb +1 -1
  135. data/components/plugins/http_dicattack.rb +1 -1
  136. data/components/plugins/login_script.rb +1 -1
  137. data/components/plugins/metrics.rb +20 -20
  138. data/components/plugins/page_dump.rb +1 -1
  139. data/components/plugins/proxy/panel/verify_login_sequence.html.erb +1 -1
  140. data/components/plugins/proxy/template_scope.rb +1 -1
  141. data/components/plugins/proxy.rb +3 -2
  142. data/components/plugins/rate_limiter.rb +1 -1
  143. data/components/plugins/restrict_to_dom_state.rb +1 -1
  144. data/components/plugins/script.rb +1 -1
  145. data/components/plugins/uncommon_headers.rb +1 -1
  146. data/components/plugins/vector_collector.rb +1 -1
  147. data/components/plugins/vector_feed.rb +1 -1
  148. data/components/plugins/waf_detector.rb +1 -1
  149. data/components/plugins/webhook_notify.rb +1 -1
  150. data/components/reporters/ap.rb +1 -1
  151. data/components/reporters/html/default.erb +3 -1
  152. data/components/reporters/html.rb +5 -7
  153. data/components/reporters/json.rb +1 -1
  154. data/components/reporters/marshal.rb +1 -1
  155. data/components/reporters/plugin_formatters/html/autologin.rb +1 -1
  156. data/components/reporters/plugin_formatters/html/content_types.rb +1 -1
  157. data/components/reporters/plugin_formatters/html/cookie_collector.rb +1 -1
  158. data/components/reporters/plugin_formatters/html/exec.rb +1 -1
  159. data/components/reporters/plugin_formatters/html/form_dicattack.rb +1 -1
  160. data/components/reporters/plugin_formatters/html/healthmap.rb +1 -1
  161. data/components/reporters/plugin_formatters/html/http_dicattack.rb +1 -1
  162. data/components/reporters/plugin_formatters/html/login_script.rb +1 -1
  163. data/components/reporters/plugin_formatters/html/metrics.rb +1 -1
  164. data/components/reporters/plugin_formatters/html/uncommon_headers.rb +1 -1
  165. data/components/reporters/plugin_formatters/html/uniformity.rb +1 -1
  166. data/components/reporters/plugin_formatters/html/vector_collector.rb +1 -1
  167. data/components/reporters/plugin_formatters/html/waf_detector.rb +1 -1
  168. data/components/reporters/plugin_formatters/stdout/autologin.rb +1 -1
  169. data/components/reporters/plugin_formatters/stdout/content_types.rb +1 -1
  170. data/components/reporters/plugin_formatters/stdout/cookie_collector.rb +1 -1
  171. data/components/reporters/plugin_formatters/stdout/exec.rb +1 -1
  172. data/components/reporters/plugin_formatters/stdout/form_dicattack.rb +1 -1
  173. data/components/reporters/plugin_formatters/stdout/healthmap.rb +1 -1
  174. data/components/reporters/plugin_formatters/stdout/http_dicattack.rb +1 -1
  175. data/components/reporters/plugin_formatters/stdout/login_script.rb +1 -1
  176. data/components/reporters/plugin_formatters/stdout/metrics.rb +1 -1
  177. data/components/reporters/plugin_formatters/stdout/uncommon_headers.rb +1 -1
  178. data/components/reporters/plugin_formatters/stdout/uniformity.rb +1 -1
  179. data/components/reporters/plugin_formatters/stdout/vector_collector.rb +1 -1
  180. data/components/reporters/plugin_formatters/stdout/waf_detector.rb +1 -1
  181. data/components/reporters/plugin_formatters/xml/autologin.rb +1 -1
  182. data/components/reporters/plugin_formatters/xml/content_types.rb +1 -1
  183. data/components/reporters/plugin_formatters/xml/cookie_collector.rb +1 -1
  184. data/components/reporters/plugin_formatters/xml/exec.rb +1 -1
  185. data/components/reporters/plugin_formatters/xml/form_dicattack.rb +1 -1
  186. data/components/reporters/plugin_formatters/xml/healthmap.rb +1 -1
  187. data/components/reporters/plugin_formatters/xml/http_dicattack.rb +1 -1
  188. data/components/reporters/plugin_formatters/xml/login_script.rb +1 -1
  189. data/components/reporters/plugin_formatters/xml/metrics.rb +1 -1
  190. data/components/reporters/plugin_formatters/xml/uncommon_headers.rb +1 -1
  191. data/components/reporters/plugin_formatters/xml/uniformity.rb +1 -1
  192. data/components/reporters/plugin_formatters/xml/vector_collector.rb +1 -1
  193. data/components/reporters/plugin_formatters/xml/waf_detector.rb +1 -1
  194. data/components/reporters/stdout.rb +1 -1
  195. data/components/reporters/txt.rb +1 -1
  196. data/components/reporters/xml/schema.xsd +1 -0
  197. data/components/reporters/xml.rb +3 -3
  198. data/components/reporters/yaml.rb +1 -1
  199. data/config/write_paths.yml +4 -0
  200. data/lib/arachni/banner.rb +1 -1
  201. data/lib/arachni/browser/element_locator.rb +1 -1
  202. data/lib/arachni/browser/javascript/dom_monitor.rb +1 -1
  203. data/lib/arachni/browser/javascript/proxy/stub.rb +1 -1
  204. data/lib/arachni/browser/javascript/proxy.rb +1 -1
  205. data/lib/arachni/browser/javascript/scripts/dom_monitor.js +39 -26
  206. data/lib/arachni/browser/javascript/scripts/taint_tracer.js +58 -40
  207. data/lib/arachni/browser/javascript/taint_tracer/frame/called_function.rb +1 -1
  208. data/lib/arachni/browser/javascript/taint_tracer/frame.rb +1 -1
  209. data/lib/arachni/browser/javascript/taint_tracer/sink/base.rb +1 -1
  210. data/lib/arachni/browser/javascript/taint_tracer/sink/data_flow.rb +1 -1
  211. data/lib/arachni/browser/javascript/taint_tracer/sink/execution_flow.rb +1 -1
  212. data/lib/arachni/browser/javascript/taint_tracer.rb +1 -1
  213. data/lib/arachni/browser/javascript.rb +14 -36
  214. data/lib/arachni/browser.rb +133 -216
  215. data/lib/arachni/browser_cluster/job/result.rb +1 -1
  216. data/lib/arachni/browser_cluster/job.rb +1 -1
  217. data/lib/arachni/browser_cluster/jobs/browser_provider.rb +1 -1
  218. data/lib/arachni/browser_cluster/jobs/dom_exploration/event_trigger/result.rb +1 -1
  219. data/lib/arachni/browser_cluster/jobs/dom_exploration/event_trigger.rb +1 -1
  220. data/lib/arachni/browser_cluster/jobs/dom_exploration/result.rb +1 -1
  221. data/lib/arachni/browser_cluster/jobs/dom_exploration.rb +1 -1
  222. data/lib/arachni/browser_cluster/jobs/taint_trace/event_trigger/result.rb +1 -1
  223. data/lib/arachni/browser_cluster/jobs/taint_trace/event_trigger.rb +1 -1
  224. data/lib/arachni/browser_cluster/jobs/taint_trace/result.rb +1 -1
  225. data/lib/arachni/browser_cluster/jobs/taint_trace.rb +1 -1
  226. data/lib/arachni/browser_cluster/worker.rb +11 -26
  227. data/lib/arachni/browser_cluster.rb +2 -3
  228. data/lib/arachni/check/auditor.rb +28 -66
  229. data/lib/arachni/check/base.rb +1 -1
  230. data/lib/arachni/check/manager.rb +1 -1
  231. data/lib/arachni/check.rb +1 -1
  232. data/lib/arachni/component/base.rb +1 -1
  233. data/lib/arachni/component/manager.rb +1 -1
  234. data/lib/arachni/component/options/address.rb +1 -1
  235. data/lib/arachni/component/options/base.rb +1 -1
  236. data/lib/arachni/component/options/bool.rb +1 -1
  237. data/lib/arachni/component/options/float.rb +1 -1
  238. data/lib/arachni/component/options/int.rb +1 -1
  239. data/lib/arachni/component/options/multiple_choice.rb +1 -1
  240. data/lib/arachni/component/options/object.rb +1 -1
  241. data/lib/arachni/component/options/path.rb +1 -1
  242. data/lib/arachni/component/options/port.rb +1 -1
  243. data/lib/arachni/component/options/string.rb +1 -1
  244. data/lib/arachni/component/options/url.rb +1 -1
  245. data/lib/arachni/component/options.rb +1 -1
  246. data/lib/arachni/component/output.rb +1 -1
  247. data/lib/arachni/component/utilities.rb +1 -1
  248. data/lib/arachni/component.rb +1 -1
  249. data/lib/arachni/data/framework/rpc.rb +2 -2
  250. data/lib/arachni/data/framework.rb +2 -2
  251. data/lib/arachni/data/issues.rb +1 -1
  252. data/lib/arachni/data/plugins.rb +1 -1
  253. data/lib/arachni/data/session.rb +1 -1
  254. data/lib/arachni/data.rb +1 -1
  255. data/lib/arachni/element/base.rb +1 -1
  256. data/lib/arachni/element/body.rb +1 -1
  257. data/lib/arachni/element/capabilities/analyzable/differential.rb +1 -1
  258. data/lib/arachni/element/capabilities/analyzable/signature.rb +2 -2
  259. data/lib/arachni/element/capabilities/analyzable/timeout.rb +1 -1
  260. data/lib/arachni/element/capabilities/analyzable.rb +1 -1
  261. data/lib/arachni/element/capabilities/auditable/buffered.rb +1 -1
  262. data/lib/arachni/element/capabilities/auditable/line_buffered.rb +1 -1
  263. data/lib/arachni/element/capabilities/auditable.rb +1 -1
  264. data/lib/arachni/element/capabilities/dom_only.rb +1 -1
  265. data/lib/arachni/element/capabilities/inputtable.rb +1 -1
  266. data/lib/arachni/element/capabilities/mutable.rb +1 -1
  267. data/lib/arachni/element/capabilities/refreshable.rb +1 -1
  268. data/lib/arachni/element/capabilities/submittable.rb +1 -1
  269. data/lib/arachni/element/capabilities/with_auditor/output.rb +1 -1
  270. data/lib/arachni/element/capabilities/with_auditor.rb +1 -1
  271. data/lib/arachni/element/capabilities/with_dom.rb +1 -1
  272. data/lib/arachni/element/capabilities/with_node.rb +1 -1
  273. data/lib/arachni/element/capabilities/with_scope/scope.rb +1 -1
  274. data/lib/arachni/element/capabilities/with_scope.rb +1 -1
  275. data/lib/arachni/element/capabilities/with_source.rb +1 -1
  276. data/lib/arachni/element/cookie/capabilities/inputtable.rb +1 -1
  277. data/lib/arachni/element/cookie/capabilities/mutable.rb +1 -1
  278. data/lib/arachni/element/cookie/capabilities/with_dom.rb +1 -1
  279. data/lib/arachni/element/cookie/dom.rb +1 -1
  280. data/lib/arachni/element/cookie.rb +1 -1
  281. data/lib/arachni/element/dom/capabilities/auditable.rb +1 -1
  282. data/lib/arachni/element/dom/capabilities/inputtable.rb +1 -1
  283. data/lib/arachni/element/dom/capabilities/locatable.rb +1 -1
  284. data/lib/arachni/element/dom/capabilities/mutable.rb +1 -1
  285. data/lib/arachni/element/dom/capabilities/submittable.rb +1 -1
  286. data/lib/arachni/element/dom.rb +1 -1
  287. data/lib/arachni/element/form/capabilities/auditable.rb +1 -1
  288. data/lib/arachni/element/form/capabilities/mutable.rb +1 -1
  289. data/lib/arachni/element/form/capabilities/submittable.rb +1 -1
  290. data/lib/arachni/element/form/capabilities/with_dom.rb +1 -1
  291. data/lib/arachni/element/form/dom.rb +1 -1
  292. data/lib/arachni/element/form.rb +1 -1
  293. data/lib/arachni/element/generic_dom.rb +1 -1
  294. data/lib/arachni/element/header/capabilities/inputtable.rb +1 -1
  295. data/lib/arachni/element/header/capabilities/mutable.rb +1 -1
  296. data/lib/arachni/element/header.rb +1 -1
  297. data/lib/arachni/element/json/capabilities/inputtable.rb +1 -1
  298. data/lib/arachni/element/json/capabilities/mutable.rb +1 -1
  299. data/lib/arachni/element/json.rb +1 -1
  300. data/lib/arachni/element/link/capabilities/auditable.rb +1 -1
  301. data/lib/arachni/element/link/capabilities/submittable.rb +1 -1
  302. data/lib/arachni/element/link/capabilities/with_dom.rb +1 -1
  303. data/lib/arachni/element/link/dom/capabilities/submittable.rb +1 -1
  304. data/lib/arachni/element/link/dom.rb +1 -1
  305. data/lib/arachni/element/link.rb +1 -1
  306. data/lib/arachni/element/link_template/capabilities/auditable.rb +1 -1
  307. data/lib/arachni/element/link_template/capabilities/inputtable.rb +1 -1
  308. data/lib/arachni/element/link_template/capabilities/with_dom.rb +1 -1
  309. data/lib/arachni/element/link_template/dom/capabilities/submittable.rb +1 -1
  310. data/lib/arachni/element/link_template/dom.rb +1 -1
  311. data/lib/arachni/element/link_template.rb +1 -1
  312. data/lib/arachni/element/nested_cookie/capabilities/submittable.rb +35 -0
  313. data/lib/arachni/element/nested_cookie.rb +370 -0
  314. data/lib/arachni/element/path.rb +1 -1
  315. data/lib/arachni/element/server.rb +1 -1
  316. data/lib/arachni/element/ui_form/dom.rb +1 -1
  317. data/lib/arachni/element/ui_form.rb +1 -1
  318. data/lib/arachni/element/ui_input/dom.rb +1 -1
  319. data/lib/arachni/element/ui_input.rb +1 -1
  320. data/lib/arachni/element/xml/capabilities/inputtable.rb +1 -1
  321. data/lib/arachni/element/xml/capabilities/mutable.rb +1 -1
  322. data/lib/arachni/element/xml.rb +1 -1
  323. data/lib/arachni/element_filter.rb +1 -1
  324. data/lib/arachni/error.rb +1 -1
  325. data/lib/arachni/ethon/easy.rb +1 -1
  326. data/lib/arachni/framework/parts/audit.rb +1 -1
  327. data/lib/arachni/framework/parts/browser.rb +1 -1
  328. data/lib/arachni/framework/parts/check.rb +1 -1
  329. data/lib/arachni/framework/parts/data.rb +1 -1
  330. data/lib/arachni/framework/parts/platform.rb +1 -1
  331. data/lib/arachni/framework/parts/plugin.rb +1 -1
  332. data/lib/arachni/framework/parts/report.rb +2 -2
  333. data/lib/arachni/framework/parts/scope.rb +1 -1
  334. data/lib/arachni/framework/parts/state.rb +1 -1
  335. data/lib/arachni/framework.rb +1 -1
  336. data/lib/arachni/http/client/dynamic_404_handler.rb +1 -1
  337. data/lib/arachni/http/client.rb +7 -5
  338. data/lib/arachni/http/cookie_jar.rb +1 -1
  339. data/lib/arachni/http/headers.rb +1 -1
  340. data/lib/arachni/http/message/scope.rb +1 -1
  341. data/lib/arachni/http/message.rb +2 -2
  342. data/lib/arachni/http/proxy_server/connection.rb +3 -8
  343. data/lib/arachni/http/proxy_server/ssl-interceptor-cacert.pem +18 -32
  344. data/lib/arachni/http/proxy_server/ssl-interceptor-cakey.pem +28 -49
  345. data/lib/arachni/http/proxy_server/ssl_interceptor.rb +7 -6
  346. data/lib/arachni/http/proxy_server/tunnel.rb +1 -1
  347. data/lib/arachni/http/proxy_server.rb +1 -1
  348. data/lib/arachni/http/request/scope.rb +1 -1
  349. data/lib/arachni/http/request.rb +8 -2
  350. data/lib/arachni/http/response/scope.rb +1 -1
  351. data/lib/arachni/http/response.rb +3 -3
  352. data/lib/arachni/http.rb +1 -1
  353. data/lib/arachni/issue/severity/base.rb +1 -1
  354. data/lib/arachni/issue/severity.rb +1 -1
  355. data/lib/arachni/issue.rb +1 -1
  356. data/lib/arachni/option_group.rb +1 -1
  357. data/lib/arachni/option_groups/audit.rb +11 -2
  358. data/lib/arachni/option_groups/browser_cluster.rb +28 -4
  359. data/lib/arachni/option_groups/datastore.rb +1 -1
  360. data/lib/arachni/option_groups/dispatcher.rb +1 -1
  361. data/lib/arachni/option_groups/http.rb +5 -5
  362. data/lib/arachni/option_groups/input.rb +1 -1
  363. data/lib/arachni/option_groups/output.rb +1 -1
  364. data/lib/arachni/option_groups/paths.rb +12 -1
  365. data/lib/arachni/option_groups/rpc.rb +1 -1
  366. data/lib/arachni/option_groups/scope.rb +46 -4
  367. data/lib/arachni/option_groups/session.rb +1 -1
  368. data/lib/arachni/option_groups/snapshot.rb +1 -1
  369. data/lib/arachni/option_groups.rb +1 -1
  370. data/lib/arachni/options.rb +2 -2
  371. data/lib/arachni/page/dom/transition.rb +1 -1
  372. data/lib/arachni/page/dom.rb +1 -1
  373. data/lib/arachni/page/scope.rb +1 -1
  374. data/lib/arachni/page.rb +3 -3
  375. data/lib/arachni/parser/document.rb +1 -1
  376. data/lib/arachni/parser/extractors/base.rb +1 -1
  377. data/lib/arachni/parser/nodes/base.rb +1 -1
  378. data/lib/arachni/parser/nodes/comment.rb +1 -1
  379. data/lib/arachni/parser/nodes/element/with_attributes/attributes.rb +2 -2
  380. data/lib/arachni/parser/nodes/element/with_attributes.rb +1 -1
  381. data/lib/arachni/parser/nodes/element.rb +1 -1
  382. data/lib/arachni/parser/nodes/text.rb +2 -2
  383. data/lib/arachni/parser/nodes/with_value.rb +2 -2
  384. data/lib/arachni/parser/sax.rb +2 -1
  385. data/lib/arachni/parser/with_children/search.rb +1 -1
  386. data/lib/arachni/parser/with_children.rb +2 -2
  387. data/lib/arachni/parser.rb +33 -10
  388. data/lib/arachni/platform/fingerprinter.rb +1 -1
  389. data/lib/arachni/platform/list.rb +1 -1
  390. data/lib/arachni/platform/manager.rb +1 -1
  391. data/lib/arachni/platform.rb +1 -1
  392. data/lib/arachni/plugin/base.rb +1 -1
  393. data/lib/arachni/plugin/formatter.rb +1 -1
  394. data/lib/arachni/plugin/manager.rb +1 -1
  395. data/lib/arachni/plugin.rb +1 -1
  396. data/lib/arachni/processes/dispatchers.rb +1 -1
  397. data/lib/arachni/processes/executables/base.rb +2 -1
  398. data/lib/arachni/processes/helpers/dispatchers.rb +1 -1
  399. data/lib/arachni/processes/helpers/instances.rb +1 -1
  400. data/lib/arachni/processes/helpers/processes.rb +1 -1
  401. data/lib/arachni/processes/helpers.rb +1 -1
  402. data/lib/arachni/processes/instances.rb +1 -1
  403. data/lib/arachni/processes/manager.rb +9 -5
  404. data/lib/arachni/processes.rb +1 -1
  405. data/lib/arachni/report.rb +1 -1
  406. data/lib/arachni/reporter/base.rb +1 -1
  407. data/lib/arachni/reporter/formatter_manager.rb +1 -1
  408. data/lib/arachni/reporter/manager.rb +1 -1
  409. data/lib/arachni/reporter/options.rb +1 -10
  410. data/lib/arachni/reporter.rb +1 -1
  411. data/lib/arachni/rest/server/instance_helpers.rb +10 -1
  412. data/lib/arachni/rest/server.rb +7 -1
  413. data/lib/arachni/rpc/client/base.rb +1 -1
  414. data/lib/arachni/rpc/client/dispatcher.rb +1 -1
  415. data/lib/arachni/rpc/client/instance/framework.rb +1 -1
  416. data/lib/arachni/rpc/client/instance/service.rb +1 -1
  417. data/lib/arachni/rpc/client/instance.rb +1 -1
  418. data/lib/arachni/rpc/serializer.rb +1 -1
  419. data/lib/arachni/rpc/server/active_options.rb +1 -1
  420. data/lib/arachni/rpc/server/base.rb +1 -1
  421. data/lib/arachni/rpc/server/check/manager.rb +1 -1
  422. data/lib/arachni/rpc/server/dispatcher/node.rb +1 -1
  423. data/lib/arachni/rpc/server/dispatcher/service.rb +1 -1
  424. data/lib/arachni/rpc/server/dispatcher.rb +1 -1
  425. data/lib/arachni/rpc/server/framework/distributor.rb +1 -1
  426. data/lib/arachni/rpc/server/framework/master.rb +1 -1
  427. data/lib/arachni/rpc/server/framework/multi_instance.rb +1 -1
  428. data/lib/arachni/rpc/server/framework/slave.rb +1 -1
  429. data/lib/arachni/rpc/server/framework.rb +1 -1
  430. data/lib/arachni/rpc/server/instance.rb +1 -1
  431. data/lib/arachni/rpc/server/output.rb +1 -1
  432. data/lib/arachni/rpc/server/plugin/manager.rb +1 -1
  433. data/lib/arachni/ruby/array.rb +1 -1
  434. data/lib/arachni/ruby/hash.rb +1 -1
  435. data/lib/arachni/ruby/object.rb +1 -1
  436. data/lib/arachni/ruby/set.rb +1 -1
  437. data/lib/arachni/ruby/string.rb +1 -1
  438. data/lib/arachni/ruby/webrick/cookie.rb +1 -1
  439. data/lib/arachni/ruby/webrick/httprequest.rb +1 -1
  440. data/lib/arachni/ruby/webrick.rb +1 -1
  441. data/lib/arachni/ruby.rb +1 -1
  442. data/lib/arachni/scope.rb +1 -1
  443. data/lib/arachni/selenium/webdriver/remote/typhoeus.rb +6 -16
  444. data/lib/arachni/session.rb +1 -1
  445. data/lib/arachni/snapshot.rb +2 -2
  446. data/lib/arachni/state/audit.rb +1 -1
  447. data/lib/arachni/state/element_filter.rb +1 -1
  448. data/lib/arachni/state/framework/rpc.rb +1 -1
  449. data/lib/arachni/state/framework.rb +1 -1
  450. data/lib/arachni/state/http.rb +1 -1
  451. data/lib/arachni/state/options.rb +1 -1
  452. data/lib/arachni/state/plugins.rb +1 -1
  453. data/lib/arachni/state.rb +1 -1
  454. data/lib/arachni/support/buffer/autoflush.rb +1 -1
  455. data/lib/arachni/support/buffer/base.rb +1 -1
  456. data/lib/arachni/support/buffer.rb +1 -1
  457. data/lib/arachni/support/cache/base.rb +1 -1
  458. data/lib/arachni/support/cache/least_cost_replacement.rb +1 -1
  459. data/lib/arachni/support/cache/least_recently_pushed.rb +1 -1
  460. data/lib/arachni/support/cache/least_recently_used.rb +1 -1
  461. data/lib/arachni/support/cache/preference.rb +1 -1
  462. data/lib/arachni/support/cache/random_replacement.rb +1 -1
  463. data/lib/arachni/support/cache.rb +1 -1
  464. data/lib/arachni/support/crypto/rsa_aes_cbc.rb +1 -1
  465. data/lib/arachni/support/crypto.rb +1 -1
  466. data/lib/arachni/support/database/base.rb +16 -10
  467. data/lib/arachni/support/database/hash.rb +1 -1
  468. data/lib/arachni/support/database/queue.rb +1 -1
  469. data/lib/arachni/support/database.rb +1 -1
  470. data/lib/arachni/support/glob.rb +1 -1
  471. data/lib/arachni/support/lookup/base.rb +1 -1
  472. data/lib/arachni/support/lookup/hash_set.rb +1 -1
  473. data/lib/arachni/support/lookup/moolb.rb +1 -1
  474. data/lib/arachni/support/lookup.rb +1 -1
  475. data/lib/arachni/support/mixins/observable.rb +1 -1
  476. data/lib/arachni/support/mixins/terminal.rb +1 -1
  477. data/lib/arachni/support/mixins.rb +1 -1
  478. data/lib/arachni/support/profiler.rb +1 -1
  479. data/lib/arachni/support/signature.rb +1 -1
  480. data/lib/arachni/support.rb +1 -1
  481. data/lib/arachni/trainer.rb +1 -1
  482. data/lib/arachni/ui/foo/output.rb +1 -1
  483. data/lib/arachni/uri/scope.rb +1 -1
  484. data/lib/arachni/uri.rb +6 -9
  485. data/lib/arachni/utilities.rb +1 -1
  486. data/lib/arachni/version.rb +1 -1
  487. data/lib/arachni.rb +1 -7
  488. data/lib/version +1 -1
  489. data/spec/arachni/browser/javascript/dom_monitor_spec.rb +81 -77
  490. data/spec/arachni/browser/javascript/proxy_spec.rb +0 -10
  491. data/spec/arachni/browser/javascript/taint_tracer_spec.rb +68 -90
  492. data/spec/arachni/browser/javascript_spec.rb +10 -16
  493. data/spec/arachni/browser_cluster/worker_spec.rb +23 -55
  494. data/spec/arachni/browser_spec.rb +160 -158
  495. data/spec/arachni/check/auditor_spec.rb +44 -165
  496. data/spec/arachni/data/framework/rpc_spec.rb +1 -1
  497. data/spec/arachni/data/framework_spec.rb +1 -1
  498. data/spec/arachni/element/cookie_spec.rb +1 -1
  499. data/spec/arachni/element/nested_cookie_spec.rb +687 -0
  500. data/spec/arachni/element/ui_form_spec.rb +2 -2
  501. data/spec/arachni/element/ui_input_spec.rb +1 -1
  502. data/spec/arachni/http/client_spec.rb +14 -26
  503. data/spec/arachni/http/cookie_jar_spec.rb +2 -2
  504. data/spec/arachni/http/proxy_server_spec.rb +2 -0
  505. data/spec/arachni/http/request_spec.rb +3 -2
  506. data/spec/arachni/issue_spec.rb +1 -1
  507. data/spec/arachni/option_groups/browser_cluster_spec.rb +17 -0
  508. data/spec/arachni/option_groups/http_spec.rb +6 -6
  509. data/spec/arachni/option_groups/paths_spec.rb +23 -1
  510. data/spec/arachni/option_groups/scope_spec.rb +1 -6
  511. data/spec/arachni/page_spec.rb +3 -2
  512. data/spec/arachni/parser_spec.rb +45 -1
  513. data/spec/arachni/platform/list_spec.rb +1 -2
  514. data/spec/arachni/reporter/options_spec.rb +0 -14
  515. data/spec/arachni/rest/server_spec.rb +39 -2
  516. data/spec/arachni/snapshot_spec.rb +1 -1
  517. data/spec/arachni/state/framework_spec.rb +2 -2
  518. data/spec/arachni/uri_spec.rb +1 -1
  519. data/spec/components/checks/active/code_injection_spec.rb +12 -7
  520. data/spec/components/checks/active/code_injection_timing_spec.rb +4 -3
  521. data/spec/components/checks/active/file_inclusion_spec.rb +15 -10
  522. data/spec/components/checks/active/ldap_injection_spec.rb +5 -4
  523. data/spec/components/checks/active/no_sql_injection_differential_spec.rb +1 -1
  524. data/spec/components/checks/active/no_sql_injection_spec.rb +5 -4
  525. data/spec/components/checks/active/os_cmd_injection_spec.rb +6 -4
  526. data/spec/components/checks/active/os_cmd_injection_timing_spec.rb +4 -3
  527. data/spec/components/checks/active/path_traversal_spec.rb +10 -7
  528. data/spec/components/checks/active/response_splitting_spec.rb +5 -4
  529. data/spec/components/checks/active/rfi_spec.rb +9 -8
  530. data/spec/components/checks/active/source_code_disclosure_spec.rb +33 -10
  531. data/spec/components/checks/active/sql_injection_differential_spec.rb +1 -1
  532. data/spec/components/checks/active/sql_injection_spec.rb +53 -36
  533. data/spec/components/checks/active/sql_injection_timing_spec.rb +11 -8
  534. data/spec/components/checks/active/unvalidated_redirect_spec.rb +9 -8
  535. data/spec/components/checks/active/xpath_injection_spec.rb +5 -4
  536. data/spec/components/checks/active/xss_dom_script_context_spec.rb +5 -5
  537. data/spec/components/checks/active/xss_event_spec.rb +5 -3
  538. data/spec/components/checks/active/xss_script_context_spec.rb +4 -3
  539. data/spec/components/checks/active/xss_spec.rb +5 -4
  540. data/spec/components/checks/active/xss_tag_spec.rb +11 -3
  541. data/spec/components/checks/passive/backup_files_spec.rb +0 -4
  542. data/spec/components/checks/passive/grep/x_frame_options_spec.rb +6 -0
  543. data/spec/spec_helper.rb +2 -1
  544. data/spec/support/factories/http/response.rb +1 -1
  545. data/spec/support/factories/issue.rb +1 -2
  546. data/spec/support/fixtures/check_with_invalid_platforms/with_invalid_platforms.rb +1 -1
  547. data/spec/support/fixtures/checks/test.rb +4 -4
  548. data/spec/support/fixtures/checks/test2.rb +1 -1
  549. data/spec/support/fixtures/checks/test3.rb +1 -1
  550. data/spec/support/fixtures/cookies.txt +1 -1
  551. data/spec/support/fixtures/executables/node.rb +2 -3
  552. data/spec/support/fixtures/fingerprinters/test.rb +1 -1
  553. data/spec/support/fixtures/nested_cookies.txt +11 -0
  554. data/spec/support/fixtures/plugins/bad.rb +1 -1
  555. data/spec/support/fixtures/plugins/defaults/default.rb +1 -1
  556. data/spec/support/fixtures/plugins/distributable.rb +1 -1
  557. data/spec/support/fixtures/plugins/loop.rb +1 -1
  558. data/spec/support/fixtures/plugins/suspendable.rb +1 -1
  559. data/spec/support/fixtures/plugins/wait.rb +1 -1
  560. data/spec/support/fixtures/plugins/with_options.rb +1 -1
  561. data/spec/support/fixtures/plugins_with_priorities/p0.rb +1 -1
  562. data/spec/support/fixtures/plugins_with_priorities/p00.rb +1 -1
  563. data/spec/support/fixtures/plugins_with_priorities/p1.rb +1 -1
  564. data/spec/support/fixtures/plugins_with_priorities/p2.rb +1 -1
  565. data/spec/support/fixtures/plugins_with_priorities/p22.rb +1 -1
  566. data/spec/support/fixtures/plugins_with_priorities/p222.rb +1 -1
  567. data/spec/support/fixtures/plugins_with_priorities/p_nil.rb +1 -1
  568. data/spec/support/fixtures/plugins_with_priorities/p_nil2.rb +1 -1
  569. data/spec/support/fixtures/report.afr +0 -0
  570. data/spec/support/fixtures/reporters/base_spec/plugin_formatters/with_formatters/foobar.rb +1 -1
  571. data/spec/support/fixtures/reporters/base_spec/with_formatters.rb +1 -1
  572. data/spec/support/fixtures/reporters/base_spec/with_outfile.rb +1 -1
  573. data/spec/support/fixtures/reporters/base_spec/without_outfile.rb +1 -1
  574. data/spec/support/fixtures/reporters/manager_spec/afr.rb +1 -1
  575. data/spec/support/fixtures/reporters/manager_spec/error.rb +1 -1
  576. data/spec/support/fixtures/reporters/manager_spec/foo.rb +1 -1
  577. data/spec/support/fixtures/run_check/body.rb +1 -1
  578. data/spec/support/fixtures/run_check/cookies.rb +1 -1
  579. data/spec/support/fixtures/run_check/empty.rb +1 -1
  580. data/spec/support/fixtures/run_check/flch.rb +1 -1
  581. data/spec/support/fixtures/run_check/forms.rb +1 -1
  582. data/spec/support/fixtures/run_check/headers.rb +1 -1
  583. data/spec/support/fixtures/run_check/links.rb +1 -1
  584. data/spec/support/fixtures/run_check/nil.rb +1 -1
  585. data/spec/support/fixtures/run_check/path.rb +1 -1
  586. data/spec/support/fixtures/run_check/server.rb +1 -1
  587. data/spec/support/fixtures/signature_check/signature.rb +1 -1
  588. data/spec/support/fixtures/wait_check/wait.rb +1 -1
  589. data/spec/support/helpers/framework.rb +1 -1
  590. data/spec/support/helpers/misc.rb +1 -1
  591. data/spec/support/helpers/paths.rb +1 -1
  592. data/spec/support/helpers/requires.rb +1 -1
  593. data/spec/support/helpers/resets.rb +1 -1
  594. data/spec/support/helpers/web_server.rb +1 -1
  595. data/spec/support/lib/factory.rb +1 -1
  596. data/spec/support/lib/web_server_client.rb +1 -1
  597. data/spec/support/lib/web_server_dispatcher.rb +1 -1
  598. data/spec/support/lib/web_server_manager.rb +1 -1
  599. data/spec/support/servers/arachni/check/auditor.rb +1 -0
  600. data/spec/support/servers/arachni/element/form/form_dom.rb +1 -0
  601. data/spec/support/servers/arachni/element/form.rb +4 -4
  602. data/spec/support/servers/arachni/element/header.rb +1 -1
  603. data/spec/support/servers/arachni/element/nested_cookie.rb +84 -0
  604. data/spec/support/servers/arachni/parser.rb +6 -0
  605. data/spec/support/servers/checks/active/code_injection.rb +18 -0
  606. data/spec/support/servers/checks/active/code_injection_timing.rb +18 -0
  607. data/spec/support/servers/checks/active/file_inclusion.rb +19 -1
  608. data/spec/support/servers/checks/active/ldap_injection.rb +18 -0
  609. data/spec/support/servers/checks/active/no_sql_injection.rb +27 -0
  610. data/spec/support/servers/checks/active/no_sql_injection_differential.rb +19 -0
  611. data/spec/support/servers/checks/active/os_cmd_injection.rb +29 -0
  612. data/spec/support/servers/checks/active/os_cmd_injection_timing.rb +18 -1
  613. data/spec/support/servers/checks/active/path_traversal.rb +30 -3
  614. data/spec/support/servers/checks/active/response_splitting.rb +30 -1
  615. data/spec/support/servers/checks/active/rfi.rb +30 -2
  616. data/spec/support/servers/checks/active/session_fixation.rb +1 -3
  617. data/spec/support/servers/checks/active/source_code_disclosure.rb +16 -0
  618. data/spec/support/servers/checks/active/sql_injection.rb +27 -0
  619. data/spec/support/servers/checks/active/sql_injection_differential.rb +19 -0
  620. data/spec/support/servers/checks/active/sql_injection_timing.rb +19 -1
  621. data/spec/support/servers/checks/active/unvalidated_redirect.rb +40 -1
  622. data/spec/support/servers/checks/active/xpath_injection.rb +27 -0
  623. data/spec/support/servers/checks/active/xss.rb +40 -0
  624. data/spec/support/servers/checks/active/xss_event.rb +22 -1
  625. data/spec/support/servers/checks/active/xss_script_context.rb +18 -0
  626. data/spec/support/servers/checks/active/xss_tag.rb +40 -0
  627. data/spec/support/servers/checks/passive/grep/x_frame_options.rb +5 -0
  628. data/spec/support/shared/check.rb +1 -0
  629. data/spec/support/shared/element/capabilities/auditable/buffered.rb +2 -2
  630. data/spec/support/shared/element/capabilities/auditable/line_buffered.rb +2 -2
  631. data/spec/support/shared/element/capabilities/auditable.rb +2 -2
  632. data/ui/cli/framework/option_parser.rb +44 -8
  633. data/ui/cli/framework.rb +6 -5
  634. data/ui/cli/option_parser.rb +1 -1
  635. data/ui/cli/output.rb +1 -1
  636. data/ui/cli/reporter/option_parser.rb +1 -1
  637. data/ui/cli/reporter.rb +1 -1
  638. data/ui/cli/reproduce/option_parser.rb +1 -1
  639. data/ui/cli/reproduce.rb +1 -1
  640. data/ui/cli/rest/server/option_parser.rb +1 -1
  641. data/ui/cli/rest/server.rb +1 -1
  642. data/ui/cli/restored_framework/option_parser.rb +1 -1
  643. data/ui/cli/restored_framework.rb +1 -1
  644. data/ui/cli/rpc/client/dispatcher_monitor/option_parser.rb +1 -1
  645. data/ui/cli/rpc/client/dispatcher_monitor.rb +1 -1
  646. data/ui/cli/rpc/client/instance.rb +7 -4
  647. data/ui/cli/rpc/client/local/option_parser.rb +1 -1
  648. data/ui/cli/rpc/client/local.rb +1 -1
  649. data/ui/cli/rpc/client/remote/option_parser.rb +1 -1
  650. data/ui/cli/rpc/client/remote.rb +1 -1
  651. data/ui/cli/rpc/server/dispatcher/option_parser.rb +1 -1
  652. data/ui/cli/rpc/server/dispatcher.rb +1 -1
  653. data/ui/cli/utilities.rb +1 -1
  654. metadata +602 -707
  655. data/logs/error-11897.log +0 -2006
  656. data/logs/error-3855.log +0 -382
  657. data/spec/support/logs/Dispatcher - 1024-31864.log +0 -10
  658. data/spec/support/logs/Dispatcher - 1047-41465.log +0 -10
  659. data/spec/support/logs/Dispatcher - 1274-60799.log +0 -64
  660. data/spec/support/logs/Dispatcher - 1295-1058.log +0 -44
  661. data/spec/support/logs/Dispatcher - 1313-27076.log +0 -40
  662. data/spec/support/logs/Dispatcher - 1332-17127.log +0 -35
  663. data/spec/support/logs/Dispatcher - 1350-7351.log +0 -29
  664. data/spec/support/logs/Dispatcher - 1368-38528.log +0 -22
  665. data/spec/support/logs/Dispatcher - 1386-17419.log +0 -14
  666. data/spec/support/logs/Dispatcher - 31030-26156.log +0 -10
  667. data/spec/support/logs/Dispatcher - 321-27189.log +0 -12
  668. data/spec/support/logs/Dispatcher - 32353-50061.log +0 -20
  669. data/spec/support/logs/Dispatcher - 32450-61574.log +0 -10
  670. data/spec/support/logs/Dispatcher - 32470-53874.log +0 -20
  671. data/spec/support/logs/Dispatcher - 32491-10523.log +0 -18
  672. data/spec/support/logs/Dispatcher - 32509-8583.log +0 -14
  673. data/spec/support/logs/Dispatcher - 32536-21209.log +0 -10
  674. data/spec/support/logs/Dispatcher - 32556-53881.log +0 -10
  675. data/spec/support/logs/Dispatcher - 32579-49083.log +0 -50
  676. data/spec/support/logs/Dispatcher - 32761-20025.log +0 -12
  677. data/spec/support/logs/Dispatcher - 347-17512.log +0 -12
  678. data/spec/support/logs/Dispatcher - 3489-43230.log +0 -24
  679. data/spec/support/logs/Dispatcher - 3524-57459.log +0 -26
  680. data/spec/support/logs/Dispatcher - 3559-21544.log +0 -20
  681. data/spec/support/logs/Dispatcher - 3764-33844.log +0 -25
  682. data/spec/support/logs/Dispatcher - 3798-45350.log +0 -26
  683. data/spec/support/logs/Dispatcher - 382-15725.log +0 -12
  684. data/spec/support/logs/Dispatcher - 3836-6205.log +0 -21
  685. data/spec/support/logs/Dispatcher - 4112-45433.log +0 -22
  686. data/spec/support/logs/Dispatcher - 4148-53510.log +0 -26
  687. data/spec/support/logs/Dispatcher - 415-29873.log +0 -14
  688. data/spec/support/logs/Dispatcher - 4185-29736.log +0 -18
  689. data/spec/support/logs/Dispatcher - 4268-60912.log +0 -25
  690. data/spec/support/logs/Dispatcher - 4303-39372.log +0 -26
  691. data/spec/support/logs/Dispatcher - 4342-42190.log +0 -21
  692. data/spec/support/logs/Dispatcher - 463-55220.log +0 -26
  693. data/spec/support/logs/Dispatcher - 4649-12104.log +0 -22
  694. data/spec/support/logs/Dispatcher - 4683-32355.log +0 -26
  695. data/spec/support/logs/Dispatcher - 4724-41636.log +0 -18
  696. data/spec/support/logs/Dispatcher - 4881-57692.log +0 -22
  697. data/spec/support/logs/Dispatcher - 4961-64665.log +0 -26
  698. data/spec/support/logs/Dispatcher - 502-8742.log +0 -25
  699. data/spec/support/logs/Dispatcher - 5052-61726.log +0 -18
  700. data/spec/support/logs/Dispatcher - 536-15972.log +0 -22
  701. data/spec/support/logs/Dispatcher - 620-2220.log +0 -20
  702. data/spec/support/logs/Dispatcher - 638-17826.log +0 -18
  703. data/spec/support/logs/Dispatcher - 656-23967.log +0 -16
  704. data/spec/support/logs/Dispatcher - 700-15701.log +0 -12
  705. data/spec/support/logs/Dispatcher - 726-6080.log +0 -10
  706. data/spec/support/logs/Dispatcher - 749-56590.log +0 -18
  707. data/spec/support/logs/Dispatcher - 807-19073.log +0 -18
  708. data/spec/support/logs/Dispatcher - 871-8764.log +0 -10
  709. data/spec/support/logs/Dispatcher - 898-21496.log +0 -12
  710. data/spec/support/logs/Dispatcher - 933-64070.log +0 -12
  711. data/spec/support/logs/Instance - 1577-32284.error.log +0 -151
  712. data/spec/support/logs/Instance - 1625-58174.error.log +0 -154
  713. data/spec/support/logs/Instance - 2727-57968.error.log +0 -151
  714. data/spec/support/logs/Instance - 2898-20648.error.log +0 -303
  715. data/spec/support/logs/Instance - 2901-30845.error.log +0 -429
  716. data/spec/support/logs/Instance - 31185-37600.error.log +0 -174
  717. data/spec/support/logs/Instance - 3319-20111.error.log +0 -175
  718. data/spec/support/logs/error-3855.log +0 -5132
@@ -173,7 +173,7 @@ describe Arachni::Element::UIForm do
173
173
 
174
174
  context 'as <input type="button">' do
175
175
  let(:url) { "#{super()}/input-button" }
176
- let(:source) { '<input type="button" id="insert" value="Insert into DOM">' }
176
+ let(:source) { '<input id="insert" type="button" value="Insert into DOM">' }
177
177
 
178
178
  context 'without inputs' do
179
179
  let(:url) { "#{super()}/without-inputs" }
@@ -240,7 +240,7 @@ describe Arachni::Element::UIForm do
240
240
 
241
241
  context 'as <input type="submit">' do
242
242
  let(:url) { "#{super()}/input-submit" }
243
- let(:source) { '<input type="submit" id="insert" value="Insert into DOM">' }
243
+ let(:source) { '<input id="insert" type="submit" value="Insert into DOM">' }
244
244
 
245
245
  context 'without inputs' do
246
246
  let(:url) { "#{super()}/without-inputs" }
@@ -57,7 +57,7 @@ describe Arachni::Element::UIInput do
57
57
 
58
58
  context 'with events' do
59
59
  let(:url) { "#{super()}/with_events" }
60
- let(:source) { '<input type="text" id="my-input" value="stuff">' }
60
+ let(:source) { '<input id="my-input" type="text" value="stuff">' }
61
61
 
62
62
  it 'returns array of elements' do
63
63
  input = described_class.from_browser( @browser, page ).first
@@ -137,19 +137,10 @@ describe Arachni::HTTP::Client do
137
137
 
138
138
  describe Arachni::OptionGroups::HTTP do
139
139
  describe '#request_concurrency' do
140
- context 'Integer' do
141
- it 'uses it as a max_concurrency' do
142
- @opts.http.request_concurrency = 34
143
- subject.reset
144
- expect(subject.max_concurrency).to eq(34)
145
- end
146
- end
147
- context 'nil' do
148
- it 'uses a default max concurrency setting' do
149
- @opts.http.request_concurrency = nil
150
- subject.reset
151
- expect(subject.max_concurrency).to eq(Arachni::HTTP::Client::MAX_CONCURRENCY)
152
- end
140
+ it 'uses it as a max_concurrency' do
141
+ @opts.http.request_concurrency = 34
142
+ subject.reset
143
+ expect(subject.max_concurrency).to eq(34)
153
144
  end
154
145
  end
155
146
 
@@ -329,7 +320,7 @@ describe Arachni::HTTP::Client do
329
320
  it 'provides access to default headers' do
330
321
  headers = subject.headers
331
322
  expect(headers['Accept']).to eq('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
332
- expect(headers['User-Agent']).to eq('Arachni/v' + Arachni::VERSION)
323
+ expect(headers['User-Agent']).to include 'Arachni/v' + Arachni::VERSION
333
324
  end
334
325
 
335
326
  context "when #{Arachni::OptionGroups::HTTP}#request_headers is set" do
@@ -568,18 +559,15 @@ describe Arachni::HTTP::Client do
568
559
 
569
560
  describe '#original_max_concurrency' do
570
561
  it 'returns the original max concurrency' do
571
- expect(subject.original_max_concurrency).to eq(20)
562
+ expect(subject.original_max_concurrency).to eq(10)
572
563
  expect(subject.original_max_concurrency).to eq(subject.max_concurrency)
573
564
 
574
- subject.max_concurrency = 10
575
- expect(subject.original_max_concurrency).to eq(20)
565
+ subject.max_concurrency = 5
566
+ expect(subject.original_max_concurrency).to eq(10)
576
567
  end
577
568
  end
578
569
 
579
570
  describe '#max_concurrency' do
580
- it 'defaults to 20' do
581
- expect(subject.max_concurrency).to eq(20)
582
- end
583
571
  it 'respects the http_request_concurrency option' do
584
572
  @opts.http.request_concurrency = 50
585
573
  subject.reset
@@ -612,8 +600,8 @@ describe Arachni::HTTP::Client do
612
600
  it "fills in #{Arachni::HTTP::Request}#headers_string" do
613
601
  host = "#{Arachni::URI(@url).host}:#{Arachni::URI(@url).port}"
614
602
  expect(subject.request( @url, mode: :sync ).request.headers_string).to eq(
615
- "GET / HTTP/1.1\r\nHost: #{host}\r\nAccept-Encoding: gzip, " +
616
- "deflate\r\nUser-Agent: Arachni/v#{Arachni::VERSION}\r\nAccept: text/html," +
603
+ "GET / HTTP/1.1\r\nHost: #{host}\r\nAuthorization: Basic Og==\r\nAccept-Encoding: gzip, " +
604
+ "deflate\r\nUser-Agent: #{Arachni::Options.http.user_agent}\r\nAccept: text/html," +
617
605
  "application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" +
618
606
  "Accept-Language: en-US,en;q=0.8,he;q=0.6\r\n" +
619
607
  "X-Arachni-Scan-Seed: #{Arachni::Utilities.random_seed}\r\n\r\n"
@@ -803,21 +791,21 @@ describe Arachni::HTTP::Client do
803
791
  response_max_size: 0
804
792
  )
805
793
 
806
- expect(r.headers).not_to include 'Content-Type'
794
+ expect(r.headers['Content-Type']).to be_empty
807
795
  expect(r.body).to be_empty
808
796
 
809
797
  r = subject.request( @url + '/http_response_max_size/without_content_length',
810
798
  mode: :sync,
811
799
  response_max_size: 1
812
800
  )
813
- expect(r.headers).not_to include 'Content-Type'
801
+ expect(r.headers['Content-Type']).to be_empty
814
802
  expect(r.body).to be_empty
815
803
 
816
804
  r = subject.request( @url + '/http_response_max_size/without_content_length',
817
805
  mode: :sync,
818
806
  response_max_size: 999999
819
807
  )
820
- expect(r.headers).not_to include 'Content-Type'
808
+ expect(r.headers['Content-Type']).to be_empty
821
809
  expect(r.body).to be_empty
822
810
 
823
811
  r = subject.request( @url + '/http_response_max_size/without_content_length',
@@ -825,7 +813,7 @@ describe Arachni::HTTP::Client do
825
813
  response_max_size: 1000000
826
814
  )
827
815
 
828
- expect(r.headers).not_to include 'Content-Type'
816
+ expect(r.headers['Content-Type']).to be_empty
829
817
  expect(r.body).not_to be_empty
830
818
  end
831
819
  end
@@ -142,7 +142,7 @@ describe Arachni::HTTP::CookieJar do
142
142
  expect(subject).to be_empty
143
143
 
144
144
  Arachni::Options.url = 'http://test.com'
145
- subject.update( 'some_param=9e4ca2cc0f18a49f7c1881f78bebf7df; path=/; expires=Wed, 02-Oct-2020 23:53:46 GMT; HttpOnly' )
145
+ subject.update( 'some_param=9e4ca2cc0f18a49f7c1881f78bebf7df; path=/; expires=Wed, 02-Oct-2030 23:53:46 GMT; HttpOnly' )
146
146
  expect(subject.cookies.first.name).to eq('some_param')
147
147
  expect(subject.cookies.first.value).to eq('9e4ca2cc0f18a49f7c1881f78bebf7df')
148
148
  end
@@ -153,7 +153,7 @@ describe Arachni::HTTP::CookieJar do
153
153
  expect(subject).to be_empty
154
154
 
155
155
  Arachni::Options.url = 'http://test.com'
156
- subject.update( 'some_param=9e4ca2cc0f18a49f7c1881f78bebf7df; path=/; expires=Wed, 02-Oct-2020 23:53:46 GMT; HttpOnly' )
156
+ subject.update( 'some_param=9e4ca2cc0f18a49f7c1881f78bebf7df; path=/; expires=Wed, 02-Oct-2030 23:53:46 GMT; HttpOnly' )
157
157
  expect(subject.cookies.first.name).to eq('some_param')
158
158
  expect(subject.cookies.first.value).to eq('9e4ca2cc0f18a49f7c1881f78bebf7df')
159
159
  end
@@ -202,12 +202,14 @@ describe Arachni::HTTP::ProxyServer do
202
202
 
203
203
  expect(request.headers_string.split( "\r\n" ).sort).to eq(
204
204
  ("POST / HTTP/1.1\r\n" <<
205
+ "Authorization: Basic Og==\r\n" <<
205
206
  "Host: #{request.parsed_url.host}:#{request.parsed_url.port}\r\n" <<
206
207
  "Accept-Encoding: gzip, deflate\r\n" <<
207
208
  "User-Agent: Typhoeus - https://github.com/typhoeus/typhoeus\r\n" <<
208
209
  "Accept: */*\r\n" <<
209
210
  "Content-Length: 7\r\n" <<
210
211
  "Accept-Language: en-US,en;q=0.8,he;q=0.6\r\n" <<
212
+ "#{Arachni::HTTP::Client::SEED_HEADER_NAME}: #{Arachni::Utilities.random_seed}\r\n" <<
211
213
  "Content-Type: application/x-www-form-urlencoded\r\n\r\n").split( "\r\n" ).sort
212
214
  )
213
215
 
@@ -323,8 +323,9 @@ describe Arachni::HTTP::Request do
323
323
  it "fills in #{Arachni::HTTP::Request}#headers_string" do
324
324
  host = "#{Arachni::URI(@url).host}:#{Arachni::URI(@url).port}"
325
325
  expect(described_class.new( url: @url ).run.request.headers_string).to eq(
326
- "GET / HTTP/1.1\r\nHost: #{host}\r\nAccept-Encoding: gzip, " +
327
- "deflate\r\nUser-Agent: Arachni/v#{Arachni::VERSION}\r\nAccept: text/html," +
326
+ "GET / HTTP/1.1\r\nHost: #{host}\r\nAuthorization: Basic Og==\r\n" +
327
+ "Accept-Encoding: gzip, deflate\r\n" +
328
+ "User-Agent: #{Arachni::Options.http.user_agent}\r\nAccept: text/html," +
328
329
  "application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" +
329
330
  "Accept-Language: en-US,en;q=0.8,he;q=0.6\r\n\r\n"
330
331
  )
@@ -412,7 +412,7 @@ describe Arachni::Issue do
412
412
  targets: {
413
413
  'Generic' => 'all'
414
414
  },
415
- elements: [:link, :form_dom],
415
+ elements: [:link],
416
416
  shortname: 'test'
417
417
  },
418
418
  trusted: true,
@@ -52,4 +52,21 @@ describe Arachni::OptionGroups::BrowserCluster do
52
52
  end
53
53
  end
54
54
  end
55
+
56
+ describe '#session_storage' do
57
+ context 'when passed a Hash' do
58
+ it 'sets it' do
59
+ subject.session_storage = { 1 => 2 }
60
+ expect(subject.session_storage).to eq({ 1 => 2 })
61
+ end
62
+ end
63
+
64
+ context 'when passed anything other than Hash' do
65
+ it 'raises ArgumentError' do
66
+ expect do
67
+ subject.session_storage = 1
68
+ end.to raise_error ArgumentError
69
+ end
70
+ end
71
+ end
55
72
  end
@@ -14,20 +14,20 @@ describe Arachni::OptionGroups::HTTP do
14
14
  end
15
15
 
16
16
  describe '#user_agent' do
17
- it "defaults to Arachni/v#{Arachni::VERSION}" do
18
- expect(subject.user_agent).to eq('Arachni/v' + Arachni::VERSION.to_s)
17
+ it "defaults to Mozilla/5.0 (Gecko) Arachni/v#{Arachni::VERSION}" do
18
+ expect(subject.user_agent).to eq('Mozilla/5.0 (Gecko) Arachni/v' + Arachni::VERSION.to_s)
19
19
  end
20
20
  end
21
21
 
22
22
  describe '#request_concurrency' do
23
- it 'defaults to 20' do
24
- expect(subject.request_concurrency).to eq(20)
23
+ it 'defaults to 10' do
24
+ expect(subject.request_concurrency).to eq(10)
25
25
  end
26
26
  end
27
27
 
28
28
  describe '#request_timeout' do
29
- it 'defaults to 10000' do
30
- expect(subject.request_timeout).to eq(10000)
29
+ it 'defaults to 20000' do
30
+ expect(subject.request_timeout).to eq(20000)
31
31
  end
32
32
  end
33
33
 
@@ -14,7 +14,7 @@ describe Arachni::OptionGroups::Paths do
14
14
  end
15
15
  end
16
16
 
17
- let(:paths_config_file) { "#{Arachni.tmpdir}/paths-#{Process.pid}.yml" }
17
+ let(:paths_config_file) { "#{Arachni::Options.paths.tmpdir}/paths-#{Process.pid}.yml" }
18
18
 
19
19
  %w(root arachni components logs checks reporters plugins services
20
20
  path_extractors fingerprinters lib support mixins snapshots).each do |method|
@@ -29,6 +29,28 @@ describe Arachni::OptionGroups::Paths do
29
29
  it { is_expected.to respond_to "#{method}=" }
30
30
  end
31
31
 
32
+ describe '#tmpdir' do
33
+ context 'when no tmpdir has been specified via config' do
34
+ it 'defaults to the OS tmpdir' do
35
+ expect(subject.tmpdir).to eq Arachni.get_long_win32_filename( Dir.tmpdir )
36
+ end
37
+ end
38
+
39
+ context "when #{described_class}.config['framework']['tmpdir']" do
40
+ it 'returns its value' do
41
+ allow(described_class).to receive(:config) do
42
+ {
43
+ 'framework' => {
44
+ 'tmpdir' => '/my/tmpdir/'
45
+ }
46
+ }
47
+ end
48
+
49
+ expect(subject.tmpdir).to eq('/my/tmpdir/')
50
+ end
51
+ end
52
+ end
53
+
32
54
  describe '#logs' do
33
55
  it 'returns the default location' do
34
56
  expect(subject.logs).to eq("#{subject.root}logs/")
@@ -54,12 +54,7 @@ describe Arachni::OptionGroups::Scope do
54
54
  end
55
55
  describe 'when #auto_redundant_paths has been disabled' do
56
56
  it 'returns false' do
57
- subject.auto_redundant_paths = nil
58
- expect(subject.auto_redundant?).to be_falsey
59
- end
60
- end
61
- describe 'by default' do
62
- it 'returns false' do
57
+ subject.auto_redundant_paths = 0
63
58
  expect(subject.auto_redundant?).to be_falsey
64
59
  end
65
60
  end
@@ -644,13 +644,14 @@ describe Arachni::Page do
644
644
 
645
645
  describe '#elements' do
646
646
  it 'returns all page elements' do
647
- expect(page.elements).to eq(page.links | page.forms | page.cookies | page.headers)
647
+ expect(page.elements).to eq(page.links | page.forms | page.cookies |
648
+ page.nested_cookies | page.headers)
648
649
  end
649
650
  end
650
651
 
651
652
  describe '#elements_within_scope' do
652
653
  it 'returns all elements that are within scope' do
653
- Arachni::Options.audit.elements :links, :forms, :cookies, :headers
654
+ Arachni::Options.audit.elements :links, :forms, :cookies, :nested_cookies, :headers
654
655
 
655
656
  elements = page.elements
656
657
  element = elements.pop
@@ -378,9 +378,35 @@ describe Arachni::Parser do
378
378
  end
379
379
  end
380
380
 
381
+ describe '#nested_cookies' do
382
+ it 'returns an array of nested cookies' do
383
+ expect(subject.nested_cookies.size).to eq(2)
384
+
385
+ cookies = subject.nested_cookies.sort_by { |cookie| cookie.name }.reverse
386
+
387
+ cookie = cookies.pop
388
+ expect(cookie.action).to eq(@url)
389
+ expect(cookie.name).to eq('http_equiv_ns_cookie_name')
390
+ expect(cookie.inputs).to eq({ "name2" => "value2" })
391
+ expect(cookie.secure?).to be_truthy
392
+ expect(cookie.http_only?).to be_truthy
393
+ expect(cookie.method).to eq(:get)
394
+ expect(cookie.url).to eq(@url)
395
+
396
+ cookie = cookies.pop
397
+ expect(cookie.action).to eq(@url)
398
+ expect(cookie.name).to eq('ns_cookie')
399
+ expect(cookie.inputs).to eq({ 'name' => 'value' })
400
+ expect(cookie.method).to eq(:get)
401
+ expect(cookie.secure?).to be_falsey
402
+ expect(cookie.http_only?).to be_falsey
403
+ expect(cookie.url).to eq(@url)
404
+ end
405
+ end
406
+
381
407
  describe '#cookies' do
382
408
  it 'returns an array of cookies' do
383
- expect(subject.cookies.size).to eq(3)
409
+ expect(subject.cookies.size).to eq(5)
384
410
 
385
411
  cookies = subject.cookies.sort_by { |cookie| cookie.name }.reverse
386
412
 
@@ -407,6 +433,24 @@ describe Arachni::Parser do
407
433
  expect(cookie.http_only?).to be_truthy
408
434
  expect(cookie.method).to eq(:get)
409
435
  expect(cookie.url).to eq(@url)
436
+
437
+ cookie = cookies.pop
438
+ expect(cookie.action).to eq(@url)
439
+ expect(cookie.name).to eq('http_equiv_ns_cookie_name')
440
+ expect(cookie.inputs).to eq({ 'http_equiv_ns_cookie_name' => 'name2=value2' })
441
+ expect(cookie.method).to eq(:get)
442
+ expect(cookie.secure?).to be_truthy
443
+ expect(cookie.http_only?).to be_truthy
444
+ expect(cookie.url).to eq(@url)
445
+
446
+ cookie = cookies.pop
447
+ expect(cookie.action).to eq(@url)
448
+ expect(cookie.name).to eq('ns_cookie')
449
+ expect(cookie.inputs).to eq({ 'ns_cookie' => 'name=value' })
450
+ expect(cookie.method).to eq(:get)
451
+ expect(cookie.secure?).to be_falsey
452
+ expect(cookie.http_only?).to be_falsey
453
+ expect(cookie.url).to eq(@url)
410
454
  end
411
455
  end
412
456
 
@@ -224,8 +224,7 @@ describe Arachni::Platform::List do
224
224
  context 'with valid platforms' do
225
225
  it 'returns a copy of self including the given platforms' do
226
226
  platforms << :unix
227
- platforms.merge( [:php, :unix] ).to_a.sort == [:unix, :php].sort
228
- expect(platforms.to_a).to eq([:unix])
227
+ expect(platforms.merge( [:php, :unix] ).to_a.sort).to eq([:unix, :php].sort)
229
228
  end
230
229
  end
231
230
  context 'with invalid platforms' do
@@ -31,18 +31,4 @@ describe Arachni::Reporter::Options do
31
31
  end
32
32
  end
33
33
 
34
- describe '#skip_responses' do
35
- it 'returns a :skip_responses reporter option' do
36
- expect(subject.skip_responses.name).to eq(:skip_responses)
37
- end
38
-
39
- it "defaults to 'false'" do
40
- expect(subject.skip_responses.default).to eq(false)
41
- end
42
-
43
- it 'has a description' do
44
- expect(subject.skip_responses.description).to be_truthy
45
- end
46
- end
47
-
48
34
  end
@@ -14,6 +14,10 @@ describe Arachni::Rest::Server do
14
14
  reset_options
15
15
  end
16
16
 
17
+ after do
18
+ FileUtils.rm @afr_path if @afr_path
19
+ end
20
+
17
21
  def create_scan
18
22
  post '/scans',
19
23
  url: scan_url,
@@ -88,7 +92,7 @@ describe Arachni::Rest::Server do
88
92
  end
89
93
  end
90
94
 
91
- describe 'SSL options', if: !Arachni.jruby? && !Arachni.windows? do
95
+ describe 'SSL options', if: !Arachni.jruby? && !Arachni.windows? && false do
92
96
  let(:ssl_key) { nil }
93
97
  let(:ssl_cert) { nil }
94
98
  let(:ssl_ca) { nil }
@@ -103,7 +107,7 @@ describe Arachni::Rest::Server do
103
107
  Arachni::Options.rpc.server_port = Arachni::Utilities.available_port
104
108
  Arachni::Processes::Manager.spawn( :rest_service )
105
109
 
106
- sleep 0.1 while Typhoeus.get( url ).return_code == :couldnt_connect
110
+ sleep 0.1 while Typhoeus.get( url, timeout: 5 ).return_code == :couldnt_connect
107
111
  end
108
112
 
109
113
  after do
@@ -319,6 +323,39 @@ describe Arachni::Rest::Server do
319
323
  end
320
324
  end
321
325
 
326
+ describe 'afr' do
327
+ let(:format) { 'afr' }
328
+
329
+ before do
330
+ @id = create_scan
331
+ end
332
+
333
+ it 'returns scan report as an AFR file' do
334
+ get url
335
+
336
+ @afr_path = "#{Arachni::Options.paths.tmpdir}/#{Process.pid}.afr"
337
+ IO.write( @afr_path, last_response.body )
338
+
339
+ expect do
340
+ Arachni::Report.load( @afr_path )
341
+ end.to_not raise_error
342
+ end
343
+
344
+ it 'has content-type application/octet-stream' do
345
+ get url
346
+ expect(last_response.headers['content-type']).to eq 'application/octet-stream'
347
+ end
348
+
349
+ context 'when passed a non-existent id' do
350
+ let(:id) { non_existent_id }
351
+
352
+ it 'returns 404' do
353
+ get url
354
+ expect(response_code).to eq 404
355
+ end
356
+ end
357
+ end
358
+
322
359
  describe 'json' do
323
360
  let(:format) { 'json' }
324
361
 
@@ -8,7 +8,7 @@ describe Arachni::Snapshot do
8
8
 
9
9
  subject { described_class }
10
10
  let(:dump_archive) do
11
- @dump_archive = "#{Arachni.tmpdir}/snapshot-#{Arachni::Utilities.generate_token}.afs"
11
+ @dump_archive = "#{Arachni::Options.paths.tmpdir}/snapshot-#{Arachni::Utilities.generate_token}.afs"
12
12
  end
13
13
 
14
14
  describe '.summary' do
@@ -741,10 +741,10 @@ describe Arachni::State::Framework do
741
741
 
742
742
  subject.pause( :caller, false )
743
743
  subject.paused
744
- subject.status == :paused
744
+ expect(subject.status).to be :paused
745
745
 
746
746
  subject.resume( :caller )
747
- subject.status == :my_status
747
+ expect(subject.status).to be :my_status
748
748
  end
749
749
 
750
750
  context 'when called before a #pause signal has been sent' do
@@ -79,7 +79,7 @@ describe Arachni::URI do
79
79
  "http://test.com/stuff?name=val&amp;name2=val2"=>
80
80
  "http://test.com/stuff?name=val&name2=val2",
81
81
  "http://testfire.net/bank/queryxpath.aspx?__EVENTVALIDATION=%2FwEWAwLNx%2B2YBwKw59eKCgKcjoPABw%3D%3D&__VIEWSTATE=%2FwEPDwUKMTEzMDczNTAxOWRk&_ctl0%3A_ctl0%3AContent%3AMain%3AButton1=Query&_ctl0%3A_ctl0%3AContent%3AMain%3ATextBox1=Enter+title+%28e.g.+IBM%29%27%3Becho+287630581954%2B4196403186331128%3B%23"=>
82
- "http://testfire.net/bank/queryxpath.aspx?__EVENTVALIDATION=/wEWAwLNx%202YBwKw59eKCgKcjoPABw==&__VIEWSTATE=/wEPDwUKMTEzMDczNTAxOWRk&_ctl0:_ctl0:Content:Main:Button1=Query&_ctl0:_ctl0:Content:Main:TextBox1=Enter%20title%20(e.g.%20IBM)';echo%20287630581954%204196403186331128;%23",
82
+ "http://testfire.net/bank/queryxpath.aspx?__EVENTVALIDATION=/wEWAwLNx%2B2YBwKw59eKCgKcjoPABw==&__VIEWSTATE=/wEPDwUKMTEzMDczNTAxOWRk&_ctl0:_ctl0:Content:Main:Button1=Query&_ctl0:_ctl0:Content:Main:TextBox1=Enter%20title%20(e.g.%20IBM)';echo%20287630581954%2B4196403186331128;%23",
83
83
  "http://192.168.0.232/dvwa/phpinfo.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000%23%5E%28%24%21%40%24%29%28%28%29%29%29%2A%2A%2A%2A%2A%2A&_arachni_trainer_c987fdb6d3955bd60191449bc465bb5ca760f60661fa4bcdf28736ae04aa2a1e=c987fdb6d3955bd60191449bc465bb5ca760f60661fa4bcdf28736ae04aa2a1e"=>
84
84
  "http://192.168.0.232/dvwa/phpinfo.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000%23%5E($!@$)(()))******&_arachni_trainer_c987fdb6d3955bd60191449bc465bb5ca760f60661fa4bcdf28736ae04aa2a1e=c987fdb6d3955bd60191449bc465bb5ca760f60661fa4bcdf28736ae04aa2a1e",
85
85
  "http://foo.com/user/login?user%5Bname%5D=bar&user%5Bpass%5D=asdasd%26asdihbasd"=>
@@ -8,8 +8,8 @@ describe name_from_filename do
8
8
  end
9
9
 
10
10
  def self.elements
11
- [ Element::Form, Element::Link, Element::Cookie, Element::Header,
12
- Element::LinkTemplate, Element::JSON, Element::XML ]
11
+ [ Element::Form, Element::Link, Element::Cookie, Element::NestedCookie,
12
+ Element::Header, Element::LinkTemplate, Element::JSON, Element::XML ]
13
13
  end
14
14
 
15
15
  def issue_count_per_element_per_platform
@@ -21,7 +21,8 @@ describe name_from_filename do
21
21
  Element::Header => 4,
22
22
  Element::LinkTemplate => 8,
23
23
  Element::JSON => 4,
24
- Element::XML => 8
24
+ Element::XML => 8,
25
+ Element::NestedCookie => 8
25
26
  },
26
27
  perl: {
27
28
  Element::Form => 8,
@@ -30,7 +31,8 @@ describe name_from_filename do
30
31
  Element::Header => 4,
31
32
  Element::LinkTemplate => 8,
32
33
  Element::JSON => 4,
33
- Element::XML => 8
34
+ Element::XML => 8,
35
+ Element::NestedCookie => 8
34
36
  },
35
37
  python: {
36
38
  Element::Form => 4,
@@ -39,7 +41,8 @@ describe name_from_filename do
39
41
  Element::Header => 2,
40
42
  Element::LinkTemplate => 4,
41
43
  Element::JSON => 2,
42
- Element::XML => 4
44
+ Element::XML => 4,
45
+ Element::NestedCookie => 4
43
46
  },
44
47
  asp: {
45
48
  Element::Form => 8,
@@ -48,7 +51,8 @@ describe name_from_filename do
48
51
  Element::Header => 4,
49
52
  Element::LinkTemplate => 8,
50
53
  Element::JSON => 4,
51
- Element::XML => 8
54
+ Element::XML => 8,
55
+ Element::NestedCookie => 8
52
56
  },
53
57
  ruby: {
54
58
  Element::Form => 4,
@@ -57,7 +61,8 @@ describe name_from_filename do
57
61
  Element::Header => 4,
58
62
  Element::LinkTemplate => 4,
59
63
  Element::JSON => 4,
60
- Element::XML => 8
64
+ Element::XML => 8,
65
+ Element::NestedCookie => 4
61
66
  }
62
67
  }
63
68
  end
@@ -8,8 +8,8 @@ describe name_from_filename do
8
8
  end
9
9
 
10
10
  def self.elements
11
- [ Element::Form, Element::Link, Element::Cookie, Element::Header,
12
- Element::LinkTemplate, Element::JSON, Element::XML ]
11
+ [ Element::Form, Element::Link, Element::Cookie, Element::NestedCookie,
12
+ Element::Header, Element::LinkTemplate, Element::JSON, Element::XML ]
13
13
  end
14
14
 
15
15
  def issue_count_per_element
@@ -20,7 +20,8 @@ describe name_from_filename do
20
20
  Element::Header => 3,
21
21
  Element::LinkTemplate => 4,
22
22
  Element::JSON => 4,
23
- Element::XML => 8
23
+ Element::XML => 8,
24
+ Element::NestedCookie => 4
24
25
  }
25
26
  end
26
27
 
@@ -8,8 +8,8 @@ describe name_from_filename do
8
8
  end
9
9
 
10
10
  def self.elements
11
- [ Element::Form, Element::Link, Element::Cookie, Element::Header,
12
- Element::LinkTemplate, Element::JSON, Element::XML ]
11
+ [ Element::Form, Element::Link, Element::Cookie, Element::NestedCookie,
12
+ Element::Header, Element::LinkTemplate, Element::JSON, Element::XML ]
13
13
  end
14
14
 
15
15
  def issue_count_per_element_per_platform
@@ -21,16 +21,18 @@ describe name_from_filename do
21
21
  Element::Header => 8,
22
22
  Element::LinkTemplate => 16,
23
23
  Element::JSON => 16,
24
- Element::XML => 16
24
+ Element::XML => 16,
25
+ Element::NestedCookie => 32
25
26
  },
26
27
  windows: {
27
28
  Element::Form => 192,
28
- Element::Link => 192,
29
+ Element::Link => 190,
29
30
  Element::Cookie => 96,
30
31
  Element::Header => 48,
31
32
  Element::LinkTemplate => 96,
32
33
  Element::JSON => 96,
33
- Element::XML => 96
34
+ Element::XML => 96,
35
+ Element::NestedCookie => 192
34
36
  },
35
37
  java: {
36
38
  Element::Form => 16,
@@ -39,25 +41,28 @@ describe name_from_filename do
39
41
  Element::Header => 4,
40
42
  Element::LinkTemplate => 8,
41
43
  Element::JSON => 8,
42
- Element::XML => 8
44
+ Element::XML => 8,
45
+ Element::NestedCookie => 16
43
46
  },
44
47
  php: {
45
48
  Element::Form => 240,
46
- Element::Link => 240,
49
+ Element::Link => 238,
47
50
  Element::Cookie => 112,
48
51
  Element::Header => 56,
49
52
  Element::LinkTemplate => 120,
50
53
  Element::JSON => 112,
51
- Element::XML => 112
54
+ Element::XML => 112,
55
+ Element::NestedCookie => 224
52
56
  },
53
57
  perl: {
54
58
  Element::Form => 240,
55
- Element::Link => 240,
59
+ Element::Link => 238,
56
60
  Element::Cookie => 120,
57
61
  Element::Header => 60,
58
62
  Element::LinkTemplate => 120,
59
63
  Element::JSON => 120,
60
- Element::XML => 120
64
+ Element::XML => 120,
65
+ Element::NestedCookie => 240
61
66
  }
62
67
  }
63
68
  end