arachni 1.4 → 1.5

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 (746) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +136 -0
  3. data/Gemfile +3 -1
  4. data/LICENSE.md +1 -1
  5. data/README.md +5 -2
  6. data/Rakefile +1 -1
  7. data/arachni.gemspec +35 -30
  8. data/bin/arachni +1 -1
  9. data/bin/arachni_console +1 -1
  10. data/bin/arachni_multi +6 -1
  11. data/bin/arachni_reporter +1 -1
  12. data/bin/arachni_reproduce +12 -0
  13. data/bin/arachni_rest_server +1 -1
  14. data/bin/arachni_restore +1 -1
  15. data/bin/arachni_rpc +6 -1
  16. data/bin/arachni_rpcd +1 -1
  17. data/bin/arachni_rpcd_monitor +6 -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 +15 -75
  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 +1 -1
  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 +3 -3
  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/regexps/hsqldb.yaml +1 -0
  36. data/components/checks/active/sql_injection/substrings/hsqldb +1 -0
  37. data/components/checks/active/sql_injection/substrings/java +4 -0
  38. data/components/checks/active/sql_injection/substrings/oracle +0 -1
  39. data/components/checks/active/sql_injection/substrings/sqlite +1 -0
  40. data/components/checks/active/sql_injection_differential.rb +1 -1
  41. data/components/checks/active/sql_injection_timing.rb +1 -1
  42. data/components/checks/active/trainer.rb +1 -1
  43. data/components/checks/active/unvalidated_redirect.rb +34 -11
  44. data/components/checks/active/unvalidated_redirect_dom.rb +4 -4
  45. data/components/checks/active/xpath_injection.rb +1 -1
  46. data/components/checks/active/xss.rb +52 -27
  47. data/components/checks/active/xss_dom.rb +15 -11
  48. data/components/checks/active/xss_dom_script_context.rb +4 -6
  49. data/components/checks/active/xss_event.rb +45 -33
  50. data/components/checks/active/xss_path.rb +9 -6
  51. data/components/checks/active/xss_script_context.rb +99 -46
  52. data/components/checks/active/xss_tag.rb +39 -14
  53. data/components/checks/active/xxe.rb +1 -1
  54. data/components/checks/passive/allowed_methods.rb +1 -1
  55. data/components/checks/passive/backdoors.rb +1 -1
  56. data/components/checks/passive/backup_directories.rb +15 -3
  57. data/components/checks/passive/backup_files.rb +39 -6
  58. data/components/checks/passive/common_admin_interfaces.rb +1 -1
  59. data/components/checks/passive/common_admin_interfaces/admin-panels.txt +1 -0
  60. data/components/checks/passive/common_directories.rb +1 -1
  61. data/components/checks/passive/common_files.rb +1 -1
  62. data/components/checks/passive/directory_listing.rb +1 -1
  63. data/components/checks/passive/grep/captcha.rb +8 -9
  64. data/components/checks/passive/grep/cookie_set_for_parent_domain.rb +1 -1
  65. data/components/checks/passive/grep/credit_card.rb +1 -1
  66. data/components/checks/passive/grep/cvs_svn_users.rb +1 -1
  67. data/components/checks/passive/grep/emails.rb +1 -1
  68. data/components/checks/passive/grep/form_upload.rb +3 -5
  69. data/components/checks/passive/grep/hsts.rb +1 -1
  70. data/components/checks/passive/grep/html_objects.rb +1 -1
  71. data/components/checks/passive/grep/http_only_cookies.rb +1 -1
  72. data/components/checks/passive/grep/insecure_cookies.rb +5 -5
  73. data/components/checks/passive/grep/insecure_cors_policy.rb +1 -1
  74. data/components/checks/passive/grep/mixed_resource.rb +4 -4
  75. data/components/checks/passive/grep/password_autocomplete.rb +1 -1
  76. data/components/checks/passive/grep/private_ip.rb +1 -1
  77. data/components/checks/passive/grep/ssn.rb +1 -1
  78. data/components/checks/passive/grep/unencrypted_password_forms.rb +3 -3
  79. data/components/checks/passive/grep/x_frame_options.rb +1 -1
  80. data/components/checks/passive/htaccess_limit.rb +1 -1
  81. data/components/checks/passive/http_put.rb +1 -1
  82. data/components/checks/passive/insecure_client_access_policy.rb +2 -2
  83. data/components/checks/passive/insecure_cross_domain_policy_access.rb +2 -2
  84. data/components/checks/passive/insecure_cross_domain_policy_headers.rb +2 -2
  85. data/components/checks/passive/interesting_responses.rb +1 -1
  86. data/components/checks/passive/localstart_asp.rb +1 -1
  87. data/components/checks/passive/origin_spoof_access_restriction_bypass.rb +1 -1
  88. data/components/checks/passive/webdav.rb +1 -1
  89. data/components/checks/passive/xst.rb +10 -12
  90. data/components/fingerprinters/frameworks/aspx_mvc.rb +1 -1
  91. data/components/fingerprinters/frameworks/cakephp.rb +1 -1
  92. data/components/fingerprinters/frameworks/cherrypy.rb +1 -1
  93. data/components/fingerprinters/frameworks/django.rb +1 -1
  94. data/components/fingerprinters/frameworks/jsf.rb +1 -1
  95. data/components/fingerprinters/frameworks/nette.rb +1 -1
  96. data/components/fingerprinters/frameworks/rack.rb +1 -1
  97. data/components/fingerprinters/frameworks/rails.rb +1 -1
  98. data/components/fingerprinters/frameworks/symfony.rb +1 -1
  99. data/components/fingerprinters/languages/asp.rb +1 -1
  100. data/components/fingerprinters/languages/aspx.rb +1 -1
  101. data/components/fingerprinters/languages/java.rb +1 -1
  102. data/components/fingerprinters/languages/php.rb +1 -1
  103. data/components/fingerprinters/languages/python.rb +1 -1
  104. data/components/fingerprinters/languages/ruby.rb +1 -1
  105. data/components/fingerprinters/os/bsd.rb +1 -1
  106. data/components/fingerprinters/os/linux.rb +1 -1
  107. data/components/fingerprinters/os/solaris.rb +1 -1
  108. data/components/fingerprinters/os/unix.rb +1 -1
  109. data/components/fingerprinters/os/windows.rb +1 -1
  110. data/components/fingerprinters/servers/apache.rb +1 -1
  111. data/components/fingerprinters/servers/gunicorn.rb +1 -1
  112. data/components/fingerprinters/servers/iis.rb +1 -1
  113. data/components/fingerprinters/servers/jetty.rb +1 -1
  114. data/components/fingerprinters/servers/nginx.rb +1 -1
  115. data/components/fingerprinters/servers/tomcat.rb +1 -1
  116. data/components/path_extractors/anchors.rb +3 -5
  117. data/components/path_extractors/areas.rb +3 -4
  118. data/components/path_extractors/comments.rb +4 -5
  119. data/components/path_extractors/data_url.rb +4 -5
  120. data/components/path_extractors/forms.rb +3 -4
  121. data/components/path_extractors/frames.rb +3 -5
  122. data/components/path_extractors/generic.rb +3 -1
  123. data/components/path_extractors/links.rb +3 -4
  124. data/components/path_extractors/meta_refresh.rb +11 -17
  125. data/components/path_extractors/scripts.rb +18 -15
  126. data/components/plugins/autologin.rb +3 -2
  127. data/components/plugins/beep_notify.rb +1 -1
  128. data/components/plugins/content_types.rb +1 -1
  129. data/components/plugins/cookie_collector.rb +1 -1
  130. data/components/plugins/debug/browser_cluster_job_monitor.rb +60 -0
  131. data/components/plugins/defaults/autothrottle.rb +1 -1
  132. data/components/plugins/defaults/healthmap.rb +3 -1
  133. data/components/plugins/defaults/meta/remedies/discovery.rb +1 -1
  134. data/components/plugins/defaults/meta/remedies/timing_attacks.rb +1 -1
  135. data/components/plugins/defaults/meta/uniformity.rb +1 -1
  136. data/components/plugins/email_notify.rb +26 -9
  137. data/components/plugins/exec.rb +1 -1
  138. data/components/plugins/form_dicattack.rb +3 -4
  139. data/components/plugins/headers_collector.rb +1 -1
  140. data/components/plugins/http_dicattack.rb +4 -5
  141. data/components/plugins/login_script.rb +2 -2
  142. data/components/plugins/metrics.rb +41 -15
  143. data/components/plugins/page_dump.rb +60 -0
  144. data/components/plugins/proxy.rb +42 -30
  145. data/components/plugins/proxy/template_scope.rb +6 -1
  146. data/components/plugins/rate_limiter.rb +80 -0
  147. data/components/plugins/restrict_to_dom_state.rb +1 -1
  148. data/components/plugins/script.rb +1 -1
  149. data/components/plugins/uncommon_headers.rb +1 -1
  150. data/components/plugins/vector_collector.rb +1 -1
  151. data/components/plugins/vector_feed.rb +1 -1
  152. data/components/plugins/waf_detector.rb +3 -3
  153. data/components/plugins/webhook_notify.rb +99 -0
  154. data/components/reporters/ap.rb +1 -1
  155. data/components/reporters/html.rb +2 -3
  156. data/components/reporters/html/default.erb +1 -2
  157. data/components/reporters/html/default/configuration.erb +2 -0
  158. data/components/reporters/json.rb +1 -1
  159. data/components/reporters/marshal.rb +1 -1
  160. data/components/reporters/plugin_formatters/html/autologin.rb +1 -1
  161. data/components/reporters/plugin_formatters/html/content_types.rb +1 -1
  162. data/components/reporters/plugin_formatters/html/cookie_collector.rb +1 -1
  163. data/components/reporters/plugin_formatters/html/exec.rb +1 -1
  164. data/components/reporters/plugin_formatters/html/form_dicattack.rb +1 -1
  165. data/components/reporters/plugin_formatters/html/healthmap.rb +1 -1
  166. data/components/reporters/plugin_formatters/html/http_dicattack.rb +1 -1
  167. data/components/reporters/plugin_formatters/html/login_script.rb +1 -1
  168. data/components/reporters/plugin_formatters/html/metrics.rb +46 -1
  169. data/components/reporters/plugin_formatters/html/uncommon_headers.rb +1 -1
  170. data/components/reporters/plugin_formatters/html/uniformity.rb +1 -1
  171. data/components/reporters/plugin_formatters/html/vector_collector.rb +1 -1
  172. data/components/reporters/plugin_formatters/html/waf_detector.rb +1 -1
  173. data/components/reporters/plugin_formatters/stdout/autologin.rb +1 -1
  174. data/components/reporters/plugin_formatters/stdout/content_types.rb +1 -1
  175. data/components/reporters/plugin_formatters/stdout/cookie_collector.rb +1 -1
  176. data/components/reporters/plugin_formatters/stdout/exec.rb +1 -1
  177. data/components/reporters/plugin_formatters/stdout/form_dicattack.rb +1 -1
  178. data/components/reporters/plugin_formatters/stdout/healthmap.rb +1 -1
  179. data/components/reporters/plugin_formatters/stdout/http_dicattack.rb +1 -1
  180. data/components/reporters/plugin_formatters/stdout/login_script.rb +1 -1
  181. data/components/reporters/plugin_formatters/stdout/metrics.rb +11 -1
  182. data/components/reporters/plugin_formatters/stdout/uncommon_headers.rb +1 -1
  183. data/components/reporters/plugin_formatters/stdout/uniformity.rb +1 -1
  184. data/components/reporters/plugin_formatters/stdout/vector_collector.rb +1 -1
  185. data/components/reporters/plugin_formatters/stdout/waf_detector.rb +1 -1
  186. data/components/reporters/plugin_formatters/xml/autologin.rb +1 -1
  187. data/components/reporters/plugin_formatters/xml/content_types.rb +10 -7
  188. data/components/reporters/plugin_formatters/xml/cookie_collector.rb +6 -3
  189. data/components/reporters/plugin_formatters/xml/exec.rb +1 -1
  190. data/components/reporters/plugin_formatters/xml/form_dicattack.rb +1 -1
  191. data/components/reporters/plugin_formatters/xml/healthmap.rb +1 -1
  192. data/components/reporters/plugin_formatters/xml/http_dicattack.rb +1 -1
  193. data/components/reporters/plugin_formatters/xml/login_script.rb +1 -1
  194. data/components/reporters/plugin_formatters/xml/metrics.rb +1 -1
  195. data/components/reporters/plugin_formatters/xml/uncommon_headers.rb +5 -2
  196. data/components/reporters/plugin_formatters/xml/uniformity.rb +1 -1
  197. data/components/reporters/plugin_formatters/xml/vector_collector.rb +8 -5
  198. data/components/reporters/plugin_formatters/xml/waf_detector.rb +1 -1
  199. data/components/reporters/stdout.rb +3 -2
  200. data/components/reporters/txt.rb +1 -1
  201. data/components/reporters/xml.rb +39 -22
  202. data/components/reporters/xml/schema.xsd +28 -13
  203. data/components/reporters/yaml.rb +1 -1
  204. data/lib/arachni.rb +1 -1
  205. data/lib/arachni/banner.rb +1 -1
  206. data/lib/arachni/browser.rb +242 -231
  207. data/lib/arachni/browser/element_locator.rb +9 -5
  208. data/lib/arachni/browser/javascript.rb +103 -168
  209. data/lib/arachni/browser/javascript/dom_monitor.rb +1 -1
  210. data/lib/arachni/browser/javascript/proxy.rb +1 -1
  211. data/lib/arachni/browser/javascript/proxy/stub.rb +1 -1
  212. data/lib/arachni/browser/javascript/scripts/dom_monitor.js +295 -51
  213. data/lib/arachni/browser/javascript/scripts/polyfills.js +0 -28
  214. data/lib/arachni/browser/javascript/scripts/taint_tracer.js +46 -8
  215. data/lib/arachni/browser/javascript/taint_tracer.rb +1 -1
  216. data/lib/arachni/browser/javascript/taint_tracer/frame.rb +1 -1
  217. data/lib/arachni/browser/javascript/taint_tracer/frame/called_function.rb +1 -1
  218. data/lib/arachni/browser/javascript/taint_tracer/sink/base.rb +1 -1
  219. data/lib/arachni/browser/javascript/taint_tracer/sink/data_flow.rb +1 -1
  220. data/lib/arachni/browser/javascript/taint_tracer/sink/execution_flow.rb +1 -1
  221. data/lib/arachni/browser_cluster.rb +78 -60
  222. data/lib/arachni/browser_cluster/job.rb +9 -2
  223. data/lib/arachni/browser_cluster/job/result.rb +1 -1
  224. data/lib/arachni/browser_cluster/jobs/browser_provider.rb +8 -2
  225. data/lib/arachni/browser_cluster/jobs/dom_exploration.rb +13 -1
  226. data/lib/arachni/browser_cluster/jobs/dom_exploration/event_trigger.rb +1 -1
  227. data/lib/arachni/browser_cluster/jobs/dom_exploration/event_trigger/result.rb +1 -1
  228. data/lib/arachni/browser_cluster/jobs/dom_exploration/result.rb +1 -1
  229. data/lib/arachni/browser_cluster/jobs/taint_trace.rb +1 -1
  230. data/lib/arachni/browser_cluster/jobs/taint_trace/event_trigger.rb +1 -1
  231. data/lib/arachni/browser_cluster/jobs/taint_trace/event_trigger/result.rb +1 -1
  232. data/lib/arachni/browser_cluster/jobs/taint_trace/result.rb +1 -1
  233. data/lib/arachni/browser_cluster/worker.rb +109 -84
  234. data/lib/arachni/check.rb +1 -1
  235. data/lib/arachni/check/auditor.rb +137 -93
  236. data/lib/arachni/check/base.rb +1 -1
  237. data/lib/arachni/check/manager.rb +1 -1
  238. data/lib/arachni/component.rb +1 -1
  239. data/lib/arachni/component/base.rb +3 -1
  240. data/lib/arachni/component/manager.rb +1 -1
  241. data/lib/arachni/component/options.rb +1 -1
  242. data/lib/arachni/component/options/address.rb +1 -1
  243. data/lib/arachni/component/options/base.rb +1 -1
  244. data/lib/arachni/component/options/bool.rb +1 -1
  245. data/lib/arachni/component/options/float.rb +1 -1
  246. data/lib/arachni/component/options/int.rb +1 -1
  247. data/lib/arachni/component/options/multiple_choice.rb +1 -1
  248. data/lib/arachni/component/options/object.rb +1 -1
  249. data/lib/arachni/component/options/path.rb +1 -1
  250. data/lib/arachni/component/options/port.rb +1 -1
  251. data/lib/arachni/component/options/string.rb +1 -1
  252. data/lib/arachni/component/options/url.rb +1 -1
  253. data/lib/arachni/component/output.rb +8 -2
  254. data/lib/arachni/component/utilities.rb +1 -1
  255. data/lib/arachni/data.rb +1 -1
  256. data/lib/arachni/data/framework.rb +2 -1
  257. data/lib/arachni/data/framework/rpc.rb +1 -1
  258. data/lib/arachni/data/issues.rb +1 -1
  259. data/lib/arachni/data/plugins.rb +1 -1
  260. data/lib/arachni/data/session.rb +1 -1
  261. data/lib/arachni/element/base.rb +1 -1
  262. data/lib/arachni/element/body.rb +1 -1
  263. data/lib/arachni/element/capabilities/analyzable.rb +1 -1
  264. data/lib/arachni/element/capabilities/analyzable/differential.rb +142 -175
  265. data/lib/arachni/element/capabilities/analyzable/signature.rb +39 -17
  266. data/lib/arachni/element/capabilities/analyzable/timeout.rb +1 -1
  267. data/lib/arachni/element/capabilities/auditable.rb +2 -8
  268. data/lib/arachni/element/capabilities/auditable/buffered.rb +92 -0
  269. data/lib/arachni/element/capabilities/auditable/line_buffered.rb +103 -0
  270. data/lib/arachni/element/capabilities/dom_only.rb +1 -1
  271. data/lib/arachni/element/capabilities/inputtable.rb +6 -2
  272. data/lib/arachni/element/capabilities/mutable.rb +1 -1
  273. data/lib/arachni/element/capabilities/refreshable.rb +1 -1
  274. data/lib/arachni/element/capabilities/submittable.rb +1 -1
  275. data/lib/arachni/element/capabilities/with_auditor.rb +1 -1
  276. data/lib/arachni/element/capabilities/with_auditor/output.rb +4 -3
  277. data/lib/arachni/element/capabilities/with_dom.rb +1 -1
  278. data/lib/arachni/element/capabilities/with_node.rb +3 -3
  279. data/lib/arachni/element/capabilities/with_scope.rb +1 -1
  280. data/lib/arachni/element/capabilities/with_scope/scope.rb +1 -1
  281. data/lib/arachni/element/capabilities/with_source.rb +2 -2
  282. data/lib/arachni/element/cookie.rb +49 -24
  283. data/lib/arachni/element/cookie/capabilities/inputtable.rb +1 -1
  284. data/lib/arachni/element/cookie/capabilities/mutable.rb +1 -1
  285. data/lib/arachni/element/cookie/capabilities/with_dom.rb +1 -1
  286. data/lib/arachni/element/cookie/dom.rb +1 -1
  287. data/lib/arachni/element/dom.rb +1 -1
  288. data/lib/arachni/element/dom/capabilities/auditable.rb +44 -3
  289. data/lib/arachni/element/dom/capabilities/inputtable.rb +1 -1
  290. data/lib/arachni/element/dom/capabilities/locatable.rb +1 -1
  291. data/lib/arachni/element/dom/capabilities/mutable.rb +7 -3
  292. data/lib/arachni/element/dom/capabilities/submittable.rb +51 -22
  293. data/lib/arachni/element/form.rb +21 -32
  294. data/lib/arachni/element/form/capabilities/auditable.rb +1 -1
  295. data/lib/arachni/element/form/capabilities/mutable.rb +16 -11
  296. data/lib/arachni/element/form/capabilities/submittable.rb +1 -1
  297. data/lib/arachni/element/form/capabilities/with_dom.rb +1 -1
  298. data/lib/arachni/element/form/dom.rb +1 -1
  299. data/lib/arachni/element/generic_dom.rb +1 -1
  300. data/lib/arachni/element/header.rb +3 -1
  301. data/lib/arachni/element/header/capabilities/inputtable.rb +1 -1
  302. data/lib/arachni/element/header/capabilities/mutable.rb +1 -1
  303. data/lib/arachni/element/json.rb +4 -8
  304. data/lib/arachni/element/json/capabilities/inputtable.rb +1 -1
  305. data/lib/arachni/element/json/capabilities/mutable.rb +1 -1
  306. data/lib/arachni/element/link.rb +11 -30
  307. data/lib/arachni/element/link/capabilities/auditable.rb +1 -1
  308. data/lib/arachni/element/link/capabilities/submittable.rb +1 -1
  309. data/lib/arachni/element/link/capabilities/with_dom.rb +1 -1
  310. data/lib/arachni/element/link/dom.rb +1 -1
  311. data/lib/arachni/element/link/dom/capabilities/submittable.rb +1 -1
  312. data/lib/arachni/element/link_template.rb +10 -19
  313. data/lib/arachni/element/link_template/capabilities/auditable.rb +1 -1
  314. data/lib/arachni/element/link_template/capabilities/inputtable.rb +1 -1
  315. data/lib/arachni/element/link_template/capabilities/with_dom.rb +1 -1
  316. data/lib/arachni/element/link_template/dom.rb +2 -2
  317. data/lib/arachni/element/link_template/dom/capabilities/submittable.rb +1 -1
  318. data/lib/arachni/element/path.rb +1 -1
  319. data/lib/arachni/element/server.rb +11 -11
  320. data/lib/arachni/element/ui_form.rb +5 -6
  321. data/lib/arachni/element/ui_form/dom.rb +1 -1
  322. data/lib/arachni/element/ui_input.rb +4 -6
  323. data/lib/arachni/element/ui_input/dom.rb +1 -1
  324. data/lib/arachni/element/xml.rb +3 -7
  325. data/lib/arachni/element/xml/capabilities/inputtable.rb +1 -1
  326. data/lib/arachni/element/xml/capabilities/mutable.rb +1 -1
  327. data/lib/arachni/element_filter.rb +1 -1
  328. data/lib/arachni/error.rb +1 -1
  329. data/lib/arachni/ethon/easy.rb +1 -1
  330. data/lib/arachni/framework.rb +1 -1
  331. data/lib/arachni/framework/parts/audit.rb +6 -1
  332. data/lib/arachni/framework/parts/browser.rb +14 -14
  333. data/lib/arachni/framework/parts/check.rb +1 -1
  334. data/lib/arachni/framework/parts/data.rb +1 -1
  335. data/lib/arachni/framework/parts/platform.rb +1 -1
  336. data/lib/arachni/framework/parts/plugin.rb +1 -1
  337. data/lib/arachni/framework/parts/report.rb +2 -2
  338. data/lib/arachni/framework/parts/scope.rb +1 -1
  339. data/lib/arachni/framework/parts/state.rb +1 -1
  340. data/lib/arachni/http.rb +1 -1
  341. data/lib/arachni/http/client.rb +32 -7
  342. data/lib/arachni/http/client/dynamic_404_handler.rb +74 -16
  343. data/lib/arachni/http/cookie_jar.rb +13 -8
  344. data/lib/arachni/http/headers.rb +11 -5
  345. data/lib/arachni/http/message.rb +9 -8
  346. data/lib/arachni/http/message/scope.rb +1 -1
  347. data/lib/arachni/http/proxy_server.rb +44 -11
  348. data/lib/arachni/http/proxy_server/connection.rb +113 -80
  349. data/lib/arachni/http/proxy_server/ssl_interceptor.rb +2 -1
  350. data/lib/arachni/http/proxy_server/tunnel.rb +4 -4
  351. data/lib/arachni/http/request.rb +236 -44
  352. data/lib/arachni/http/request/scope.rb +1 -1
  353. data/lib/arachni/http/response.rb +71 -8
  354. data/lib/arachni/http/response/scope.rb +1 -1
  355. data/lib/arachni/issue.rb +42 -14
  356. data/lib/arachni/issue/severity.rb +1 -1
  357. data/lib/arachni/issue/severity/base.rb +1 -1
  358. data/lib/arachni/option_group.rb +1 -1
  359. data/lib/arachni/option_groups.rb +1 -1
  360. data/lib/arachni/option_groups/audit.rb +1 -1
  361. data/lib/arachni/option_groups/browser_cluster.rb +6 -2
  362. data/lib/arachni/option_groups/datastore.rb +1 -1
  363. data/lib/arachni/option_groups/dispatcher.rb +1 -1
  364. data/lib/arachni/option_groups/http.rb +35 -6
  365. data/lib/arachni/option_groups/input.rb +1 -1
  366. data/lib/arachni/option_groups/output.rb +1 -1
  367. data/lib/arachni/option_groups/paths.rb +1 -1
  368. data/lib/arachni/option_groups/rpc.rb +1 -1
  369. data/lib/arachni/option_groups/scope.rb +13 -1
  370. data/lib/arachni/option_groups/session.rb +1 -1
  371. data/lib/arachni/option_groups/snapshot.rb +1 -1
  372. data/lib/arachni/options.rb +23 -4
  373. data/lib/arachni/page.rb +8 -6
  374. data/lib/arachni/page/dom.rb +46 -54
  375. data/lib/arachni/page/dom/transition.rb +5 -2
  376. data/lib/arachni/page/scope.rb +1 -1
  377. data/lib/arachni/parser.rb +157 -77
  378. data/lib/arachni/parser/document.rb +34 -0
  379. data/lib/arachni/parser/extractors/base.rb +48 -0
  380. data/lib/arachni/parser/nodes/base.rb +22 -0
  381. data/lib/arachni/parser/nodes/comment.rb +32 -0
  382. data/lib/arachni/parser/nodes/element.rb +48 -0
  383. data/lib/arachni/parser/nodes/element/with_attributes.rb +35 -0
  384. data/lib/arachni/parser/nodes/element/with_attributes/attributes.rb +31 -0
  385. data/lib/arachni/parser/nodes/text.rb +32 -0
  386. data/lib/arachni/parser/nodes/with_value.rb +29 -0
  387. data/lib/arachni/parser/sax.rb +75 -0
  388. data/lib/arachni/parser/with_children.rb +35 -0
  389. data/lib/arachni/parser/with_children/search.rb +92 -0
  390. data/lib/arachni/platform.rb +1 -1
  391. data/lib/arachni/platform/fingerprinter.rb +1 -1
  392. data/lib/arachni/platform/list.rb +1 -1
  393. data/lib/arachni/platform/manager.rb +2 -2
  394. data/lib/arachni/plugin.rb +1 -1
  395. data/lib/arachni/plugin/base.rb +2 -2
  396. data/lib/arachni/plugin/formatter.rb +1 -1
  397. data/lib/arachni/plugin/manager.rb +8 -5
  398. data/lib/arachni/processes.rb +1 -1
  399. data/lib/arachni/processes/dispatchers.rb +1 -1
  400. data/lib/arachni/processes/executables/browser.rb +0 -2
  401. data/lib/arachni/processes/helpers.rb +1 -1
  402. data/lib/arachni/processes/helpers/dispatchers.rb +1 -1
  403. data/lib/arachni/processes/helpers/instances.rb +1 -1
  404. data/lib/arachni/processes/helpers/processes.rb +1 -1
  405. data/lib/arachni/processes/instances.rb +1 -1
  406. data/lib/arachni/processes/manager.rb +10 -5
  407. data/lib/arachni/report.rb +8 -1
  408. data/lib/arachni/reporter.rb +1 -1
  409. data/lib/arachni/reporter/base.rb +1 -1
  410. data/lib/arachni/reporter/formatter_manager.rb +1 -1
  411. data/lib/arachni/reporter/manager.rb +1 -1
  412. data/lib/arachni/reporter/options.rb +1 -1
  413. data/lib/arachni/rest/server.rb +7 -1
  414. data/lib/arachni/rest/server/instance_helpers.rb +1 -1
  415. data/lib/arachni/rpc/client/base.rb +1 -1
  416. data/lib/arachni/rpc/client/dispatcher.rb +1 -1
  417. data/lib/arachni/rpc/client/instance.rb +1 -1
  418. data/lib/arachni/rpc/client/instance/framework.rb +1 -1
  419. data/lib/arachni/rpc/client/instance/service.rb +1 -1
  420. data/lib/arachni/rpc/serializer.rb +1 -1
  421. data/lib/arachni/rpc/server/active_options.rb +1 -1
  422. data/lib/arachni/rpc/server/base.rb +1 -1
  423. data/lib/arachni/rpc/server/check/manager.rb +1 -1
  424. data/lib/arachni/rpc/server/dispatcher.rb +1 -1
  425. data/lib/arachni/rpc/server/dispatcher/node.rb +1 -1
  426. data/lib/arachni/rpc/server/dispatcher/service.rb +1 -1
  427. data/lib/arachni/rpc/server/framework.rb +1 -1
  428. data/lib/arachni/rpc/server/framework/distributor.rb +1 -1
  429. data/lib/arachni/rpc/server/framework/master.rb +1 -1
  430. data/lib/arachni/rpc/server/framework/multi_instance.rb +1 -1
  431. data/lib/arachni/rpc/server/framework/slave.rb +1 -1
  432. data/lib/arachni/rpc/server/instance.rb +1 -1
  433. data/lib/arachni/rpc/server/output.rb +1 -1
  434. data/lib/arachni/rpc/server/plugin/manager.rb +1 -1
  435. data/lib/arachni/ruby.rb +1 -1
  436. data/lib/arachni/ruby/array.rb +1 -1
  437. data/lib/arachni/ruby/hash.rb +1 -1
  438. data/lib/arachni/ruby/object.rb +1 -1
  439. data/lib/arachni/ruby/set.rb +1 -1
  440. data/lib/arachni/ruby/string.rb +9 -5
  441. data/lib/arachni/ruby/webrick.rb +1 -1
  442. data/lib/arachni/ruby/webrick/cookie.rb +1 -1
  443. data/lib/arachni/ruby/webrick/httprequest.rb +1 -1
  444. data/lib/arachni/scope.rb +1 -1
  445. data/lib/arachni/selenium/webdriver/element.rb +4 -4
  446. data/lib/arachni/selenium/webdriver/remote/typhoeus.rb +69 -0
  447. data/lib/arachni/session.rb +32 -13
  448. data/lib/arachni/snapshot.rb +1 -1
  449. data/lib/arachni/state.rb +1 -1
  450. data/lib/arachni/state/audit.rb +1 -1
  451. data/lib/arachni/state/element_filter.rb +1 -1
  452. data/lib/arachni/state/framework.rb +1 -1
  453. data/lib/arachni/state/framework/rpc.rb +1 -1
  454. data/lib/arachni/state/http.rb +2 -2
  455. data/lib/arachni/state/options.rb +1 -1
  456. data/lib/arachni/state/plugins.rb +1 -1
  457. data/lib/arachni/support.rb +1 -1
  458. data/lib/arachni/support/buffer.rb +1 -1
  459. data/lib/arachni/support/buffer/autoflush.rb +1 -1
  460. data/lib/arachni/support/buffer/base.rb +1 -1
  461. data/lib/arachni/support/cache.rb +1 -1
  462. data/lib/arachni/support/cache/base.rb +1 -1
  463. data/lib/arachni/support/cache/least_cost_replacement.rb +1 -1
  464. data/lib/arachni/support/cache/least_recently_pushed.rb +1 -1
  465. data/lib/arachni/support/cache/least_recently_used.rb +1 -1
  466. data/lib/arachni/support/cache/preference.rb +1 -1
  467. data/lib/arachni/support/cache/random_replacement.rb +1 -1
  468. data/lib/arachni/support/crypto.rb +1 -1
  469. data/lib/arachni/support/crypto/rsa_aes_cbc.rb +1 -1
  470. data/lib/arachni/support/database.rb +1 -1
  471. data/lib/arachni/support/database/base.rb +1 -1
  472. data/lib/arachni/support/database/hash.rb +1 -1
  473. data/lib/arachni/support/database/queue.rb +1 -1
  474. data/lib/arachni/support/glob.rb +1 -1
  475. data/lib/arachni/support/lookup.rb +1 -1
  476. data/lib/arachni/support/lookup/base.rb +1 -1
  477. data/lib/arachni/support/lookup/hash_set.rb +1 -1
  478. data/lib/arachni/support/lookup/moolb.rb +1 -1
  479. data/lib/arachni/support/mixins.rb +1 -1
  480. data/lib/arachni/support/mixins/observable.rb +1 -1
  481. data/lib/arachni/support/mixins/terminal.rb +1 -1
  482. data/lib/arachni/support/profiler.rb +52 -13
  483. data/lib/arachni/support/signature.rb +18 -6
  484. data/lib/arachni/trainer.rb +55 -39
  485. data/lib/arachni/ui/foo/output.rb +1 -1
  486. data/lib/arachni/uri.rb +132 -103
  487. data/lib/arachni/uri/scope.rb +15 -13
  488. data/lib/arachni/utilities.rb +10 -10
  489. data/lib/arachni/version.rb +1 -1
  490. data/lib/version +1 -1
  491. data/logs/error-11897.log +2006 -0
  492. data/logs/error-3855.log +382 -0
  493. data/spec/arachni/browser/element_locator_spec.rb +42 -18
  494. data/spec/arachni/browser/javascript/dom_monitor_spec.rb +214 -63
  495. data/spec/arachni/browser/javascript/polyfills_spec.rb +0 -15
  496. data/spec/arachni/browser/javascript/taint_tracer_spec.rb +68 -121
  497. data/spec/arachni/browser/javascript_spec.rb +92 -51
  498. data/spec/arachni/browser_cluster/job_spec.rb +23 -8
  499. data/spec/arachni/browser_cluster/jobs/dom_exploration_spec.rb +6 -1
  500. data/spec/arachni/browser_cluster/worker_spec.rb +31 -57
  501. data/spec/arachni/browser_cluster_spec.rb +124 -43
  502. data/spec/arachni/browser_spec.rb +352 -312
  503. data/spec/arachni/check/auditor_spec.rb +118 -33
  504. data/spec/arachni/element/capabilities/analyzable/signature_spec.rb +46 -3
  505. data/spec/arachni/element/cookie/dom_spec.rb +1 -1
  506. data/spec/arachni/element/cookie_spec.rb +158 -63
  507. data/spec/arachni/element/form/dom_spec.rb +1 -1
  508. data/spec/arachni/element/form_spec.rb +101 -54
  509. data/spec/arachni/element/header_spec.rb +3 -1
  510. data/spec/arachni/element/json_spec.rb +2 -0
  511. data/spec/arachni/element/link/dom_spec.rb +2 -2
  512. data/spec/arachni/element/link_spec.rb +46 -15
  513. data/spec/arachni/element/link_template/dom_spec.rb +1 -1
  514. data/spec/arachni/element/link_template_spec.rb +36 -12
  515. data/spec/arachni/element/server_spec.rb +22 -5
  516. data/spec/arachni/element/ui_form/dom_spec.rb +1 -1
  517. data/spec/arachni/element/ui_input/dom_spec.rb +1 -1
  518. data/spec/arachni/element/xml_spec.rb +5 -3
  519. data/spec/arachni/framework/parts/audit_spec.rb +2 -14
  520. data/spec/arachni/framework/parts/data_spec.rb +0 -6
  521. data/spec/arachni/http/client/dynamic_404_handlers_spec.rb +126 -0
  522. data/spec/arachni/http/client_spec.rb +82 -10
  523. data/spec/arachni/http/headers_spec.rb +59 -12
  524. data/spec/arachni/http/proxy_server_spec.rb +56 -25
  525. data/spec/arachni/http/request_spec.rb +379 -33
  526. data/spec/arachni/http/response_spec.rb +135 -7
  527. data/spec/arachni/issue_spec.rb +20 -1
  528. data/spec/arachni/option_groups/http_spec.rb +15 -0
  529. data/spec/arachni/option_groups/scope_spec.rb +26 -1
  530. data/spec/arachni/options_spec.rb +8 -1
  531. data/spec/arachni/page/dom_spec.rb +20 -6
  532. data/spec/arachni/page_spec.rb +5 -5
  533. data/spec/arachni/parser/document_spec.rb +49 -0
  534. data/spec/arachni/parser/nodes/comment_spec.rb +24 -0
  535. data/spec/arachni/parser/nodes/element/with_attributes/attributes_spec.rb +40 -0
  536. data/spec/arachni/parser/nodes/element/with_attributes_spec.rb +50 -0
  537. data/spec/arachni/parser/nodes/element_spec.rb +18 -0
  538. data/spec/arachni/parser/nodes/text_spec.rb +24 -0
  539. data/spec/arachni/parser/sax_spec.rb +88 -0
  540. data/spec/arachni/parser/with_children/search_spec.rb +146 -0
  541. data/spec/arachni/parser/with_children_spec.rb +37 -0
  542. data/spec/arachni/parser_spec.rb +166 -26
  543. data/spec/arachni/report_spec.rb +9 -2
  544. data/spec/arachni/rest/server_spec.rb +52 -6
  545. data/spec/arachni/rpc/server/active_options_spec.rb +1 -1
  546. data/spec/arachni/rpc/server/framework/distributor_spec.rb +6 -6
  547. data/spec/arachni/ruby/string_spec.rb +6 -0
  548. data/spec/arachni/session_spec.rb +69 -8
  549. data/spec/arachni/support/signature_spec.rb +58 -0
  550. data/spec/arachni/trainer_spec.rb +102 -21
  551. data/spec/arachni/uri_spec.rb +11 -8
  552. data/spec/arachni/utilities_spec.rb +3 -3
  553. data/spec/components/checks/active/csrf_spec.rb +1 -21
  554. data/spec/components/checks/active/path_traversal_spec.rb +12 -12
  555. data/spec/components/checks/active/sql_injection_spec.rb +10 -1
  556. data/spec/components/checks/active/unvalidated_redirect_spec.rb +6 -6
  557. data/spec/components/checks/active/xss_dom_script_context_spec.rb +1 -5
  558. data/spec/components/checks/active/xss_dom_spec.rb +2 -2
  559. data/spec/components/checks/active/xss_event_spec.rb +8 -2
  560. data/spec/components/checks/active/xss_script_context_spec.rb +5 -5
  561. data/spec/components/checks/active/xss_spec.rb +3 -3
  562. data/spec/components/checks/passive/backup_directories_spec.rb +3 -1
  563. data/spec/components/checks/passive/backup_files_spec.rb +8 -1
  564. data/spec/components/checks/passive/grep/insecure_cookies_spec.rb +2 -2
  565. data/spec/components/path_extractors/comments_spec.rb +3 -1
  566. data/spec/components/path_extractors/data_url_spec.rb +6 -2
  567. data/spec/components/path_extractors/links_spec.rb +1 -1
  568. data/spec/components/plugins/autologin_spec.rb +2 -2
  569. data/spec/components/plugins/webhook_notify_spec.rb +69 -0
  570. data/spec/spec_helper.rb +1 -1
  571. data/spec/support/factories/page/dom.rb +6 -0
  572. data/spec/support/factories/scan_report.rb +1 -0
  573. data/spec/support/factories/vector.rb +7 -3
  574. data/spec/support/fixtures/check_with_invalid_platforms/with_invalid_platforms.rb +1 -1
  575. data/spec/support/fixtures/checks/test.rb +1 -1
  576. data/spec/support/fixtures/checks/test2.rb +1 -1
  577. data/spec/support/fixtures/checks/test3.rb +1 -1
  578. data/spec/support/fixtures/cookies.txt +2 -2
  579. data/spec/support/fixtures/fingerprinters/test.rb +1 -1
  580. data/spec/support/fixtures/plugins/bad.rb +1 -1
  581. data/spec/support/fixtures/plugins/defaults/default.rb +1 -1
  582. data/spec/support/fixtures/plugins/distributable.rb +1 -1
  583. data/spec/support/fixtures/plugins/loop.rb +1 -1
  584. data/spec/support/fixtures/plugins/suspendable.rb +1 -1
  585. data/spec/support/fixtures/plugins/wait.rb +1 -1
  586. data/spec/support/fixtures/plugins/with_options.rb +1 -1
  587. data/spec/support/fixtures/plugins_with_priorities/p0.rb +1 -1
  588. data/spec/support/fixtures/plugins_with_priorities/p00.rb +1 -1
  589. data/spec/support/fixtures/plugins_with_priorities/p1.rb +1 -1
  590. data/spec/support/fixtures/plugins_with_priorities/p2.rb +1 -1
  591. data/spec/support/fixtures/plugins_with_priorities/p22.rb +1 -1
  592. data/spec/support/fixtures/plugins_with_priorities/p222.rb +1 -1
  593. data/spec/support/fixtures/plugins_with_priorities/p_nil.rb +1 -1
  594. data/spec/support/fixtures/plugins_with_priorities/p_nil2.rb +1 -1
  595. data/spec/support/fixtures/report.afr +0 -0
  596. data/spec/support/fixtures/reporters/base_spec/plugin_formatters/with_formatters/foobar.rb +1 -1
  597. data/spec/support/fixtures/reporters/base_spec/with_formatters.rb +1 -1
  598. data/spec/support/fixtures/reporters/base_spec/with_outfile.rb +1 -1
  599. data/spec/support/fixtures/reporters/base_spec/without_outfile.rb +1 -1
  600. data/spec/support/fixtures/reporters/manager_spec/afr.rb +1 -1
  601. data/spec/support/fixtures/reporters/manager_spec/error.rb +1 -1
  602. data/spec/support/fixtures/reporters/manager_spec/foo.rb +1 -1
  603. data/spec/support/fixtures/run_check/body.rb +1 -1
  604. data/spec/support/fixtures/run_check/cookies.rb +1 -1
  605. data/spec/support/fixtures/run_check/empty.rb +1 -1
  606. data/spec/support/fixtures/run_check/flch.rb +1 -1
  607. data/spec/support/fixtures/run_check/forms.rb +1 -1
  608. data/spec/support/fixtures/run_check/headers.rb +1 -1
  609. data/spec/support/fixtures/run_check/links.rb +1 -1
  610. data/spec/support/fixtures/run_check/nil.rb +1 -1
  611. data/spec/support/fixtures/run_check/path.rb +1 -1
  612. data/spec/support/fixtures/run_check/server.rb +1 -1
  613. data/spec/support/fixtures/signature_check/signature.rb +1 -1
  614. data/spec/support/fixtures/wait_check/wait.rb +1 -1
  615. data/spec/support/helpers/browser_cluster/jobs/taint_tracer.rb +0 -3
  616. data/spec/support/helpers/framework.rb +1 -1
  617. data/spec/support/helpers/misc.rb +1 -1
  618. data/spec/support/helpers/paths.rb +1 -1
  619. data/spec/support/helpers/requires.rb +1 -1
  620. data/spec/support/helpers/resets.rb +1 -1
  621. data/spec/support/helpers/web_server.rb +1 -1
  622. data/spec/support/lib/factory.rb +1 -1
  623. data/spec/support/lib/web_server_client.rb +1 -1
  624. data/spec/support/lib/web_server_dispatcher.rb +1 -1
  625. data/spec/support/lib/web_server_manager.rb +4 -2
  626. data/spec/support/logs/Dispatcher - 1024-31864.log +10 -0
  627. data/spec/support/logs/Dispatcher - 1047-41465.log +10 -0
  628. data/spec/support/logs/Dispatcher - 1274-60799.log +64 -0
  629. data/spec/support/logs/Dispatcher - 1295-1058.log +44 -0
  630. data/spec/support/logs/Dispatcher - 1313-27076.log +40 -0
  631. data/spec/support/logs/Dispatcher - 1332-17127.log +35 -0
  632. data/spec/support/logs/Dispatcher - 1350-7351.log +29 -0
  633. data/spec/support/logs/Dispatcher - 1368-38528.log +22 -0
  634. data/spec/support/logs/Dispatcher - 1386-17419.log +14 -0
  635. data/spec/support/logs/Dispatcher - 31030-26156.log +10 -0
  636. data/spec/support/logs/Dispatcher - 321-27189.log +12 -0
  637. data/spec/support/logs/Dispatcher - 32353-50061.log +20 -0
  638. data/spec/support/logs/Dispatcher - 32450-61574.log +10 -0
  639. data/spec/support/logs/Dispatcher - 32470-53874.log +20 -0
  640. data/spec/support/logs/Dispatcher - 32491-10523.log +18 -0
  641. data/spec/support/logs/Dispatcher - 32509-8583.log +14 -0
  642. data/spec/support/logs/Dispatcher - 32536-21209.log +10 -0
  643. data/spec/support/logs/Dispatcher - 32556-53881.log +10 -0
  644. data/spec/support/logs/Dispatcher - 32579-49083.log +50 -0
  645. data/spec/support/logs/Dispatcher - 32761-20025.log +12 -0
  646. data/spec/support/logs/Dispatcher - 347-17512.log +12 -0
  647. data/spec/support/logs/Dispatcher - 3489-43230.log +24 -0
  648. data/spec/support/logs/Dispatcher - 3524-57459.log +26 -0
  649. data/spec/support/logs/Dispatcher - 3559-21544.log +20 -0
  650. data/spec/support/logs/Dispatcher - 3764-33844.log +25 -0
  651. data/spec/support/logs/Dispatcher - 3798-45350.log +26 -0
  652. data/spec/support/logs/Dispatcher - 382-15725.log +12 -0
  653. data/spec/support/logs/Dispatcher - 3836-6205.log +21 -0
  654. data/spec/support/logs/Dispatcher - 4112-45433.log +22 -0
  655. data/spec/support/logs/Dispatcher - 4148-53510.log +26 -0
  656. data/spec/support/logs/Dispatcher - 415-29873.log +14 -0
  657. data/spec/support/logs/Dispatcher - 4185-29736.log +18 -0
  658. data/spec/support/logs/Dispatcher - 4268-60912.log +25 -0
  659. data/spec/support/logs/Dispatcher - 4303-39372.log +26 -0
  660. data/spec/support/logs/Dispatcher - 4342-42190.log +21 -0
  661. data/spec/support/logs/Dispatcher - 463-55220.log +26 -0
  662. data/spec/support/logs/Dispatcher - 4649-12104.log +22 -0
  663. data/spec/support/logs/Dispatcher - 4683-32355.log +26 -0
  664. data/spec/support/logs/Dispatcher - 4724-41636.log +18 -0
  665. data/spec/support/logs/Dispatcher - 4881-57692.log +22 -0
  666. data/spec/support/logs/Dispatcher - 4961-64665.log +26 -0
  667. data/spec/support/logs/Dispatcher - 502-8742.log +25 -0
  668. data/spec/support/logs/Dispatcher - 5052-61726.log +18 -0
  669. data/spec/support/logs/Dispatcher - 536-15972.log +22 -0
  670. data/spec/support/logs/Dispatcher - 620-2220.log +20 -0
  671. data/spec/support/logs/Dispatcher - 638-17826.log +18 -0
  672. data/spec/support/logs/Dispatcher - 656-23967.log +16 -0
  673. data/spec/support/logs/Dispatcher - 700-15701.log +12 -0
  674. data/spec/support/logs/Dispatcher - 726-6080.log +10 -0
  675. data/spec/support/logs/Dispatcher - 749-56590.log +18 -0
  676. data/spec/support/logs/Dispatcher - 807-19073.log +18 -0
  677. data/spec/support/logs/Dispatcher - 871-8764.log +10 -0
  678. data/spec/support/logs/Dispatcher - 898-21496.log +12 -0
  679. data/spec/support/logs/Dispatcher - 933-64070.log +12 -0
  680. data/spec/support/logs/Instance - 1577-32284.error.log +151 -0
  681. data/spec/support/logs/Instance - 1625-58174.error.log +154 -0
  682. data/spec/support/logs/Instance - 2727-57968.error.log +151 -0
  683. data/spec/support/logs/Instance - 2898-20648.error.log +303 -0
  684. data/spec/support/logs/Instance - 2901-30845.error.log +429 -0
  685. data/spec/support/logs/Instance - 31185-37600.error.log +174 -0
  686. data/spec/support/logs/Instance - 3319-20111.error.log +175 -0
  687. data/spec/support/logs/error-3855.log +5132 -0
  688. data/spec/support/servers/arachni/browser.rb +275 -4
  689. data/spec/support/servers/arachni/browser/javascript/dom_monitor.rb +48 -0
  690. data/spec/support/servers/arachni/browser/javascript/taint_tracer.rb +15 -3
  691. data/spec/support/servers/arachni/check/auditor.rb +8 -0
  692. data/spec/support/servers/arachni/element/cookie.rb +34 -0
  693. data/spec/support/servers/arachni/element/form.rb +34 -0
  694. data/spec/support/servers/arachni/element/header.rb +36 -1
  695. data/spec/support/servers/arachni/element/json.rb +33 -0
  696. data/spec/support/servers/arachni/element/link.rb +33 -1
  697. data/spec/support/servers/arachni/element/link_template.rb +37 -5
  698. data/spec/support/servers/arachni/element/xml.rb +33 -0
  699. data/spec/support/servers/arachni/http/client.rb +43 -4
  700. data/spec/support/servers/arachni/http/client/dynamic_404_handler.rb +36 -0
  701. data/spec/support/servers/arachni/http/client/dynamic_404_handler_redirect_1.rb +18 -0
  702. data/spec/support/servers/arachni/http/client/dynamic_404_handler_redirect_2.rb +11 -0
  703. data/spec/support/servers/arachni/http/proxy_server.rb +12 -0
  704. data/spec/support/servers/arachni/session.rb +24 -1
  705. data/spec/support/servers/checks/active/csrf.rb +0 -76
  706. data/spec/support/servers/checks/active/sql_injection/java +2 -0
  707. data/spec/support/servers/checks/active/unvalidated_redirect.rb +81 -0
  708. data/spec/support/servers/checks/active/xss_event.rb +1 -1
  709. data/spec/support/servers/checks/passive/backup_files.rb +20 -1
  710. data/spec/support/servers/checks/passive/grep/cookie_set_for_parent_domain.rb +3 -5
  711. data/spec/support/servers/checks/passive/grep/insecure_cookies_https.rb +9 -0
  712. data/spec/support/servers/plugins/autologin.rb +17 -1
  713. data/spec/support/servers/plugins/webhook_notify.rb +9 -0
  714. data/spec/support/shared/element/capabilities/auditable.rb +26 -32
  715. data/spec/support/shared/element/capabilities/auditable/buffered.rb +791 -0
  716. data/spec/support/shared/element/capabilities/auditable/line_buffered.rb +797 -0
  717. data/spec/support/shared/element/capabilities/inputtable.rb +26 -0
  718. data/spec/support/shared/element/capabilities/with_node.rb +2 -2
  719. data/spec/support/shared/element/dom/submittable.rb +10 -10
  720. data/spec/support/shared/path_extractor.rb +17 -5
  721. data/ui/cli/framework.rb +24 -4
  722. data/ui/cli/framework/option_parser.rb +35 -6
  723. data/ui/cli/option_parser.rb +1 -1
  724. data/ui/cli/output.rb +10 -3
  725. data/ui/cli/reporter.rb +1 -1
  726. data/ui/cli/reporter/option_parser.rb +1 -1
  727. data/ui/cli/reproduce.rb +228 -0
  728. data/ui/cli/reproduce/option_parser.rb +90 -0
  729. data/ui/cli/rest/server.rb +1 -1
  730. data/ui/cli/rest/server/option_parser.rb +1 -1
  731. data/ui/cli/restored_framework.rb +1 -1
  732. data/ui/cli/restored_framework/option_parser.rb +1 -1
  733. data/ui/cli/rpc/client/dispatcher_monitor.rb +9 -11
  734. data/ui/cli/rpc/client/dispatcher_monitor/option_parser.rb +1 -1
  735. data/ui/cli/rpc/client/instance.rb +1 -1
  736. data/ui/cli/rpc/client/local.rb +1 -1
  737. data/ui/cli/rpc/client/local/option_parser.rb +1 -1
  738. data/ui/cli/rpc/client/remote.rb +1 -1
  739. data/ui/cli/rpc/client/remote/option_parser.rb +1 -1
  740. data/ui/cli/rpc/server/dispatcher.rb +1 -1
  741. data/ui/cli/rpc/server/dispatcher/option_parser.rb +1 -1
  742. data/ui/cli/utilities.rb +1 -1
  743. metadata +253 -49
  744. data/ACKNOWLEDGMENTS.md +0 -21
  745. data/AUTHORS.md +0 -3
  746. data/CONTRIBUTORS.md +0 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f4c2f78464615f487fac68b9e72685088d568977
4
- data.tar.gz: db89773e54c4321dbb18bd9c18958c3263f4c952
3
+ metadata.gz: 9258760c9e75d398da9ab655640904e5d51544c4
4
+ data.tar.gz: b7f5f56e8f1977916b7a87465954c354892cc4d3
5
5
  SHA512:
6
- metadata.gz: 5ed261c2eab8f545585e8ac2a733f59296823e8d3de533a6789ba871c4a4ff732108760c33169198fde6b8c240192cdbeba16a9241d8eba4a03da6b9ee9b176b
7
- data.tar.gz: 50297d450fd4e8d53b1c556af729d889a94ea0c4cd2f7220e2703dd70f274bff373d6603fb57dfb99860d3fd90199b0258d0a6e271d672e92564884cf8be5a1f
6
+ metadata.gz: baef5531633d799813d4bbfdfc89a44aa682feb5b502349e40c19ec9036ef074f2cf4f8838403487e79b2ac905ace671863b5ee092515251418d0180f0db659b
7
+ data.tar.gz: 43e379175dff426bc078a5055dda4b0d65dee05f47df7032559501ce1603d5e4c32517ff0c9fb69669a0d21b7710df4f62b2899de099e32ebcc530165a039c46
@@ -1,5 +1,140 @@
1
1
  # ChangeLog
2
2
 
3
+ ## 1.5 _(January 31, 2017)_
4
+
5
+ - Executables
6
+ - `arachni_rpcd_monitor` -- Brought up to date with Dispatcher refactoring.
7
+ - New
8
+ - `arachni_reproduce` -- Reproduces the issues in the given report.
9
+ - Options
10
+ - `url` -- Raise error on addresses starting with `127.` because
11
+ PhantomJS 2.1.1 doesn't proxy any loopback connections.
12
+ - `--http-cookie-string` -- Updated to only accept `Set-Cookie` formatted
13
+ cookies instead of `Cookie` ones.
14
+ - `--browser-cluster-job-timeout`
15
+ - Repurposed to apply to communication requests for Selenium rather than
16
+ the entire job.
17
+ - Lowered to `10` seconds.
18
+ - New
19
+ - `--http-authentication-type`
20
+ - `auto` -- Default
21
+ - `basic`
22
+ - `digest`
23
+ - `digest_ie`
24
+ - `negotiate`
25
+ - `ntlm`
26
+ - `--scope-dom-event-limit` -- Limits the amount of DOM events to be
27
+ triggered for each DOM depth.
28
+ - `--daemon-friendly` -- Disables status screen.
29
+ - `UI`
30
+ - `CLI`
31
+ - `Framework` -- Trap `USR1` signal and go into a `pry` session for debugging.
32
+ - `URI`
33
+ - `.fast_parse` --- Ignore `data:` URIs.
34
+ - `HTTP`
35
+ - `ProxyServer`
36
+ - Fixed state of abruptly closed SSL interceptor connections leading to
37
+ frozen browser operations.
38
+ - Added support for configurable concurrency of origin requests to keep
39
+ the amount of `Thread`s low.
40
+ - Added support for `Connection: Upgrade` requests by tunneling WebSocket
41
+ connections.
42
+ - `Client`
43
+ - Added `X-Arachni-Scan-Seed` header that includes the random scan seed.
44
+ - `Dynamic404Handler`
45
+ - Added more training scenarios for when:
46
+ - Dashes are used as routing separators.
47
+ - Directory name prepending and appending is ignored.
48
+ - Updated to not dismiss redirects but follow the location.
49
+ - `Browser`
50
+ - Updated engine to PhantomJS 2.1.1.
51
+ - Remove `Content-Security-Policy` to allow the Arachni JS env to run.
52
+ - `#snapshot_id` -- Moved to browser-side `DOMMonitor` for better performance.
53
+ - `#capture` -- Extract query parameters from `POST` requests.
54
+ - `#capture_snapshot` -- Deduplicate based on DOM URL and transitions as well.
55
+ - `ElementLocator` -- Fixed bug causing broken CSS selectors with UTF8 characters.
56
+ - `Javascript`
57
+ - `#dom_elements_with_events`
58
+ - Moved code to browser-side `DOMMonitor`.
59
+ - Updated it to return results in batches, in order to keep RAM
60
+ usage under control when processing large pages with thousands
61
+ of elements with events.
62
+ - `BrowserCluster`
63
+ - `Worker`
64
+ - `#run_job` -- Retry 5 times on job time-outs.
65
+ - `Element`
66
+ - `Capabilities`
67
+ - `Auditable`
68
+ - New
69
+ - `Buffered` -- Reads audit responses in chunks.
70
+ - `LineBuffered` -- Reads audit responses in chunks of lines.
71
+ - `DOM`
72
+ - `Capabilities`
73
+ - `Submittable`, `Auditable` -- Switched from `Proc` to class methods
74
+ for callbacks, in order to avoid keeping contexts in memory.
75
+ - Session -- Allow for a submit input to be specified when the login needs to be
76
+ triggered by clicking it, rather than just triggering the submit event on
77
+ the form.
78
+ - REST API
79
+ - Added `GET /scans/:id/summary` to return scan progress data without
80
+ `issues`, `errors` and `sitemap`.
81
+ - Report
82
+ - Added `#seed` attribute that includes the random scan seed.
83
+ - Plugins
84
+ - New
85
+ - `webhook_notify` -- Sends a webhook payload over HTTP at the end of the scan.
86
+ - `rate_limiter` -- Rate limits HTTP requests.
87
+ - `page_dump` -- Dumps page data to disk as YAML.
88
+ - `proxy` -- `bind_address` default switched to `127.0.0.1`, `0.0.0.0` breaks
89
+ SSL interception on MS Windows.
90
+ - `metrics`
91
+ - Fixed division by 0 error when no requests have been performed.
92
+ - Added:
93
+ - HTTP
94
+ - Request time-outs
95
+ - Responses per second
96
+ - Browser cluster
97
+ - Timed-out jobs
98
+ - Seconds per job
99
+ - Total job time
100
+ - Job count
101
+ - `email_notify`
102
+ - Retry on error.
103
+ - Default to `afr` as a report format.
104
+ - Checks
105
+ - Active
106
+ - `xss` -- Only check HTML responses to avoid FPs.
107
+ - `xss_event`
108
+ - Replaced full parsing of responses with SAX.
109
+ - Only check HTML responses to avoid FPs.
110
+ - `xss_script_context`
111
+ - Replaced full parsing of responses with SAX.
112
+ - Only check HTML responses to avoid FPs.
113
+ - `xss_tag`
114
+ - Replaced full parsing of responses with SAX.
115
+ - Only check HTML responses to avoid FPs.
116
+ - `unvalidated_redirect`, `unvalidated_redirect_dom`, `xss`, `xss_dom`,
117
+ `xss_dom_script_context`, `xss_script_context` -- Replaced `Proc`s
118
+ with class methods for `BrowserCluster` job callbacks.
119
+ - `unvalidated_redirect` -- Added prepended payload to the default value.
120
+ - `sql_injection` -- Added more error signatures for HSQLDB, Java and SQLite.
121
+ - `csrf` -- Removed heuristics that try to match tokens based on format;
122
+ now only uses a nonce check.
123
+ - `path_traversal` -- Increased maximum traversals to 8.
124
+ - Passive
125
+ - `backup_files`
126
+ - Ignore media files to avoid FPs when dealing with galleries and the like.
127
+ - Added issue remark explaining how the original resource name was manipulated.
128
+ - `backup_directories` -- Added issue remark explaining how the original
129
+ resource name was manipulated.
130
+ - `xst` -- Run once for each protocol, not just for the first page.
131
+ - Path extractors
132
+ - `data_url` -- Extract from all elements, not just links.
133
+ - Reporters
134
+ - `xml`
135
+ - Replaced unsupported null-bytes with a placeholder.
136
+ - Made `issues/issue/page/dom/data_flow_sinks/data_flow_sink/frame/line` nil-able.
137
+
3
138
  ## 1.4 _(February 7, 2016)_
4
139
 
5
140
  - Native MS Windows compatibility.
@@ -95,6 +230,7 @@
95
230
  there's no way to verify SSNs.
96
231
  - `http_only_cookies`, `insecure_cookies` -- Only check current page
97
232
  cookies, don't let the CookieJar ones sneak in.
233
+ - `insecure_cookies` -- Check JS cookies too.
98
234
  - Plugins
99
235
  - `proxy`
100
236
  - Removed injection of control toolbar to each response.
data/Gemfile CHANGED
@@ -1,6 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rake'
3
+ gem 'rake', '11.3.0'
4
+ gem 'pry'
4
5
 
5
6
  group :docs do
6
7
  gem 'yard'
@@ -19,6 +20,7 @@ group :prof do
19
20
  gem 'sys-proctable'
20
21
  gem 'ruby-mass'
21
22
  gem 'benchmark-ips'
23
+ gem 'memory_profiler'
22
24
  end
23
25
 
24
26
  gemspec
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # License
2
2
 
3
- Copyright 2010-2016 [Tasos Laskos](mailto:tasos.laskos@arachni-scanner.com).
3
+ Copyright 2010-2017 [Sarosys LLC](http://www.sarosys.com).
4
4
 
5
5
  ```
6
6
  Arachni Public Source License
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  <table>
4
4
  <tr>
5
5
  <th>Version</th>
6
- <td>1.4</td>
6
+ <td>1.5</td>
7
7
  </tr>
8
8
  <tr>
9
9
  <th>Homepage</th>
@@ -38,7 +38,7 @@
38
38
  </tr>
39
39
  <tr>
40
40
  <th>Copyright</th>
41
- <td>2010-2016 Tasos Laskos</td>
41
+ <td>2010-2017 <a href="http://www.sarosys.com">Sarosys LLC</a></td>
42
42
  </tr>
43
43
  <tr>
44
44
  <th>License</th>
@@ -555,6 +555,9 @@ core remains lean and makes it easy for anyone to add arbitrary functionality.
555
555
  - Metrics (`metrics`) -- Captures metrics about multiple aspects of the scan and the web application.
556
556
  - Restrict to DOM state (`restrict_to_dom_state`) -- Restricts the audit to a single page's DOM
557
557
  state, based on a URL fragment.
558
+ - Webhook notify (`webhook_notify`) -- Sends a webhook payload over HTTP at the end of the scan.
559
+ - Rate limiter (`rate_limiter`) -- Rate limits HTTP requests.
560
+ - Page dump (`page_dump`) -- Dumps page data to disk as YAML.
558
561
 
559
562
  ##### Defaults
560
563
 
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  =begin
2
- Copyright 2010-2016 Tasos Laskos <tasos.laskos@arachni-scanner.com>
2
+ Copyright 2010-2017 Sarosys LLC <http://www.sarosys.com>
3
3
 
4
4
  This file is part of the Arachni Framework project and is subject to
5
5
  redistribution and commercial restrictions. Please see the Arachni Framework
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
  =begin
3
- Copyright 2010-2016 Tasos Laskos <tasos.laskos@arachni-scanner.com>
3
+ Copyright 2010-2017 Sarosys LLC <http://www.sarosys.com>
4
4
 
5
5
  This file is part of the Arachni Framework project and is subject to
6
6
  redistribution and commercial restrictions. Please see the Arachni Framework
@@ -10,7 +10,7 @@
10
10
  Gem::Specification.new do |s|
11
11
  require File.expand_path( File.dirname( __FILE__ ) ) + '/lib/arachni/version'
12
12
 
13
- s.required_ruby_version = '>= 2.0.0'
13
+ s.required_ruby_version = '>= 2.2.0'
14
14
 
15
15
  s.name = 'arachni'
16
16
  s.version = Arachni::VERSION
@@ -37,77 +37,82 @@ Gem::Specification.new do |s|
37
37
 
38
38
  s.executables = Dir.glob( 'bin/*' ).map { |e| File.basename e }
39
39
 
40
- s.extra_rdoc_files = %w(README.md ACKNOWLEDGMENTS.md LICENSE.md
41
- AUTHORS.md CHANGELOG.md CONTRIBUTORS.md)
40
+ s.extra_rdoc_files = %w(README.md LICENSE.md CHANGELOG.md)
42
41
 
43
42
  s.rdoc_options = [ '--charset=UTF-8' ]
44
43
 
45
- s.add_dependency 'awesome_print'
44
+ s.add_dependency 'awesome_print', '1.6.1'
46
45
 
47
- s.add_dependency 'rack'
46
+ s.add_dependency 'rack', '1.6.4'
48
47
 
48
+ # Don't specify version, messes with the packages since they always grab the
49
+ # latest one.
49
50
  s.add_dependency 'bundler'
50
51
 
51
- s.add_dependency 'concurrent-ruby', '1.0.0'
52
- s.add_dependency 'concurrent-ruby-ext', '1.0.0'
52
+ s.add_dependency 'concurrent-ruby', '1.0.2'
53
+ s.add_dependency 'concurrent-ruby-ext', '1.0.2'
53
54
 
54
55
  # For compressing/decompressing system state archives.
55
- s.add_dependency 'rubyzip', '1.1.6'
56
+ s.add_dependency 'rubyzip', '1.1.6'
56
57
 
57
58
  # HTTP proxy server
58
- s.add_dependency 'http_parser.rb'
59
+ s.add_dependency 'http_parser.rb', '0.6.0'
59
60
 
60
61
  # HTML report
61
- s.add_dependency 'coderay', '1.1.0'
62
+ s.add_dependency 'coderay', '1.1.0'
62
63
 
63
- s.add_dependency 'childprocess', '0.5.3'
64
+ s.add_dependency 'childprocess', '0.5.3'
64
65
 
65
66
  # RPC serialization.
66
- s.add_dependency 'msgpack', '0.7.0'
67
+ s.add_dependency 'msgpack', '0.7.0'
67
68
 
68
69
  if RUBY_PLATFORM != 'java'
69
70
  # Optimized JSON.
70
- s.add_dependency 'oj', '~> 2.14.3'
71
- s.add_dependency 'oj_mimic_json'
71
+ s.add_dependency 'oj', '2.15.0'
72
+ s.add_dependency 'oj_mimic_json', '1.0.1'
72
73
  end
73
74
 
74
75
  # Web server
75
- s.add_dependency 'puma', '2.14.0'
76
+ s.add_dependency 'puma', '2.14.0'
76
77
 
77
78
  # REST API
78
- s.add_dependency 'sinatra', '1.4.6'
79
- s.add_dependency 'sinatra-contrib', '1.4.6'
79
+ s.add_dependency 'sinatra', '1.4.6'
80
+ s.add_dependency 'sinatra-contrib', '1.4.6'
80
81
 
81
82
  # RPC client/server implementation.
82
- s.add_dependency 'arachni-rpc', '0.2.1.3'
83
+ s.add_dependency 'arachni-rpc', '~> 0.2.1.4'
83
84
 
84
85
  # HTTP client.
85
- s.add_dependency 'typhoeus', '1.0.1'
86
+ s.add_dependency 'typhoeus', '1.0.2'
86
87
 
87
88
  # Fallback URI parsing and encoding utilities.
88
- s.add_dependency 'addressable', '2.3.6'
89
+ s.add_dependency 'addressable', '2.3.6'
89
90
 
90
91
  # E-mail plugin.
91
- s.add_dependency 'pony', '1.8'
92
+ s.add_dependency 'pony', '1.11'
92
93
 
93
94
  # For the Arachni console (arachni_console).
94
- s.add_dependency 'rb-readline', '0.5.1'
95
+ s.add_dependency 'rb-readline', '0.5.1'
95
96
 
96
- # Markup parsing.
97
- s.add_dependency 'nokogiri', '1.6.8rc2'
97
+ # Markup parsing, for reports and Element::XML.
98
+ s.add_dependency 'nokogiri', '1.6.8.1'
99
+ # Really fast and lightweight markup parsing, for pages.
100
+ s.add_dependency 'ox', '2.4.9'
98
101
 
99
102
  # Outputting data in table format (arachni_rpcd_monitor).
100
- s.add_dependency 'terminal-table', '1.4.5'
103
+ s.add_dependency 'terminal-table', '1.4.5'
101
104
 
102
105
  # Browser support for DOM/JS/AJAX analysis stuff.
103
- s.add_dependency 'watir-webdriver', '0.8.0'
106
+ # Lock webdriver, newer versions has issues.
107
+ s.add_dependency 'selenium-webdriver', '3.0.1'
108
+ s.add_dependency 'watir-webdriver', '0.8.0'
104
109
 
105
110
  # Markdown to HTML conversion, used by the HTML report for component
106
111
  # descriptions.
107
- s.add_dependency 'kramdown', '1.4.1'
112
+ s.add_dependency 'kramdown', '1.4.1'
108
113
 
109
114
  # Used to scrub Markdown for XSS etc.
110
- s.add_dependency 'loofah', '~> 2.0.0'
115
+ s.add_dependency 'loofah', '2.0.3'
111
116
 
112
117
  s.post_install_message = <<MSG
113
118
 
@@ -124,7 +129,7 @@ License - Arachni Public Source License v1.0
124
129
  (https://github.com/Arachni/arachni/blob/master/LICENSE.md)
125
130
  Author - Tasos "Zapotek" Laskos (http://twitter.com/Zap0tek)
126
131
  Twitter - http://twitter.com/ArachniScanner
127
- Copyright - 2010-2016 Tasos Laskos
132
+ Copyright - 2010-2017 Sarosys LLC (http://www.sarosys.com)
128
133
 
129
134
  Please do not hesitate to ask for assistance (via the support portal)
130
135
  or report a bug (via GitHub Issues) if you come across any problem.
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin
3
- Copyright 2010-2016 Tasos Laskos <tasos.laskos@arachni-scanner.com>
3
+ Copyright 2010-2017 Sarosys LLC <http://www.sarosys.com>
4
4
 
5
5
  This file is part of the Arachni Framework project and is subject to
6
6
  redistribution and commercial restrictions. Please see the Arachni Framework
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin
3
- Copyright 2010-2016 Tasos Laskos <tasos.laskos@arachni-scanner.com>
3
+ Copyright 2010-2017 Sarosys LLC <http://www.sarosys.com>
4
4
 
5
5
  This file is part of the Arachni Framework project and is subject to
6
6
  redistribution and commercial restrictions. Please see the Arachni Framework
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin
3
- Copyright 2010-2016 Tasos Laskos <tasos.laskos@arachni-scanner.com>
3
+ Copyright 2010-2017 Sarosys LLC <http://www.sarosys.com>
4
4
 
5
5
  This file is part of the Arachni Framework project and is subject to
6
6
  redistribution and commercial restrictions. Please see the Arachni Framework
@@ -10,4 +10,9 @@
10
10
  require_relative '../lib/arachni'
11
11
  require_relative '../ui/cli/rpc/client/local'
12
12
 
13
+ if Arachni.windows?
14
+ Arachni::UI::Output.print_error "This interface is not available on MS Windows."
15
+ exit
16
+ end
17
+
13
18
  Arachni::UI::CLI::RPC::Client::Local.new
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin
3
- Copyright 2010-2016 Tasos Laskos <tasos.laskos@arachni-scanner.com>
3
+ Copyright 2010-2017 Sarosys LLC <http://www.sarosys.com>
4
4
 
5
5
  This file is part of the Arachni Framework project and is subject to
6
6
  redistribution and commercial restrictions. Please see the Arachni Framework
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ =begin
3
+ Copyright 2010-2017 Sarosys LLC <http://www.sarosys.com>
4
+
5
+ This file is part of the Arachni Framework project and is subject to
6
+ redistribution and commercial restrictions. Please see the Arachni Framework
7
+ web site for more information on licensing and terms of use.
8
+ =end
9
+
10
+ require_relative '../ui/cli/reproduce'
11
+
12
+ Arachni::UI::CLI::Reproduce.new
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin
3
- Copyright 2010-2016 Tasos Laskos <tasos.laskos@arachni-scanner.com>
3
+ Copyright 2010-2017 Sarosys LLC <http://www.sarosys.com>
4
4
 
5
5
  This file is part of the Arachni Framework project and is subject to
6
6
  redistribution and commercial restrictions. Please see the Arachni Framework
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin
3
- Copyright 2010-2016 Tasos Laskos <tasos.laskos@arachni-scanner.com>
3
+ Copyright 2010-2017 Sarosys LLC <http://www.sarosys.com>
4
4
 
5
5
  This file is part of the Arachni Framework project and is subject to
6
6
  redistribution and commercial restrictions. Please see the Arachni Framework
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  =begin
3
- Copyright 2010-2016 Tasos Laskos <tasos.laskos@arachni-scanner.com>
3
+ Copyright 2010-2017 Sarosys LLC <http://www.sarosys.com>
4
4
 
5
5
  This file is part of the Arachni Framework project and is subject to
6
6
  redistribution and commercial restrictions. Please see the Arachni Framework
@@ -10,4 +10,9 @@
10
10
  require_relative '../lib/arachni'
11
11
  require_relative '../ui/cli/rpc/client/remote'
12
12
 
13
+ if Arachni.windows?
14
+ Arachni::UI::Output.print_error "This interface is not available on MS Windows."
15
+ exit
16
+ end
17
+
13
18
  Arachni::UI::CLI::RPC::Client::Remote.new