arachni 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (348) hide show
  1. data/ACKNOWLEDGMENTS.md +1 -1
  2. data/CHANGELOG.md +146 -0
  3. data/CONTRIBUTORS.md +1 -0
  4. data/HACKING.md +3 -3
  5. data/README.md +81 -49
  6. data/Rakefile +11 -14
  7. data/bin/arachni +4 -8
  8. data/bin/arachni_rpc +17 -0
  9. data/bin/arachni_rpcd +18 -0
  10. data/bin/arachni_rpcd_monitor +18 -0
  11. data/bin/arachni_web +25 -48
  12. data/bin/arachni_web_autostart +3 -3
  13. data/conf/README.webui.yaml.txt +7 -21
  14. data/external/metasploit/plugins/arachni.rb +0 -7
  15. data/extras/modules/recon/raft_dirs.rb +108 -0
  16. data/extras/modules/recon/raft_dirs/raft-large-directories.txt +62290 -0
  17. data/extras/modules/recon/raft_files.rb +110 -0
  18. data/extras/modules/recon/raft_files/raft-large-files.txt +37037 -0
  19. data/extras/modules/recon/svn_digger_dirs.rb +108 -0
  20. data/extras/modules/recon/svn_digger_dirs/Licence.txt +674 -0
  21. data/extras/modules/recon/svn_digger_dirs/ReadMe-Arachni.txt +4 -0
  22. data/extras/modules/recon/svn_digger_dirs/ReadMe.txt +6 -0
  23. data/extras/modules/recon/svn_digger_dirs/all-dirs.txt +5960 -0
  24. data/extras/modules/recon/svn_digger_files.rb +114 -0
  25. data/extras/modules/recon/svn_digger_files/Licence.txt +674 -0
  26. data/extras/modules/recon/svn_digger_files/ReadMe-Arachni.txt +4 -0
  27. data/extras/modules/recon/svn_digger_files/ReadMe.txt +6 -0
  28. data/extras/modules/recon/svn_digger_files/all-extensionless.txt +25419 -0
  29. data/extras/modules/recon/svn_digger_files/all.txt +43135 -0
  30. data/lib/arachni.rb +2 -7
  31. data/lib/{audit_store.rb → arachni/audit_store.rb} +68 -60
  32. data/lib/{component_manager.rb → arachni/component_manager.rb} +8 -8
  33. data/lib/{component_options.rb → arachni/component_options.rb} +34 -4
  34. data/lib/{crypto → arachni/crypto}/rsa_aes_cbc.rb +1 -2
  35. data/lib/arachni/database.rb +4 -0
  36. data/lib/arachni/database/base.rb +125 -0
  37. data/lib/arachni/database/hash.rb +384 -0
  38. data/lib/arachni/database/queue.rb +93 -0
  39. data/lib/{exceptions.rb → arachni/exceptions.rb} +1 -1
  40. data/lib/arachni/framework.rb +899 -0
  41. data/lib/{http.rb → arachni/http.rb} +63 -166
  42. data/lib/{issue.rb → arachni/issue.rb} +46 -17
  43. data/lib/{mixins → arachni/mixins}/observable.rb +1 -1
  44. data/lib/arachni/mixins/progress_bar.rb +81 -0
  45. data/lib/arachni/mixins/terminal.rb +106 -0
  46. data/lib/{module.rb → arachni/module.rb} +0 -0
  47. data/lib/{module → arachni/module}/auditor.rb +250 -86
  48. data/lib/{module → arachni/module}/base.rb +8 -18
  49. data/lib/{module → arachni/module}/element_db.rb +10 -2
  50. data/lib/{module → arachni/module}/key_filler.rb +1 -1
  51. data/lib/arachni/module/manager.rb +145 -0
  52. data/lib/{module → arachni/module}/output.rb +6 -1
  53. data/lib/{module → arachni/module}/trainer.rb +48 -52
  54. data/lib/{module → arachni/module}/utilities.rb +66 -15
  55. data/lib/{nokogiri → arachni/nokogiri}/xml/node.rb +0 -0
  56. data/lib/arachni/options.rb +986 -0
  57. data/lib/{parser.rb → arachni/parser.rb} +0 -0
  58. data/lib/{parser → arachni/parser}/auditable.rb +111 -32
  59. data/lib/{parser → arachni/parser}/elements.rb +28 -20
  60. data/lib/{parser → arachni/parser}/page.rb +20 -3
  61. data/lib/{parser → arachni/parser}/parser.rb +100 -63
  62. data/lib/{plugin.rb → arachni/plugin.rb} +0 -0
  63. data/lib/{plugin → arachni/plugin}/base.rb +43 -6
  64. data/lib/{plugin → arachni/plugin}/manager.rb +40 -13
  65. data/lib/{report.rb → arachni/report.rb} +0 -0
  66. data/lib/{report → arachni/report}/base.rb +43 -2
  67. data/lib/{report → arachni/report}/manager.rb +7 -18
  68. data/lib/arachni/rpc/client/base.rb +42 -0
  69. data/lib/{rpc/xml → arachni/rpc}/client/dispatcher.rb +12 -13
  70. data/lib/arachni/rpc/client/instance.rb +62 -0
  71. data/lib/arachni/rpc/server/base.rb +51 -0
  72. data/lib/arachni/rpc/server/dispatcher.rb +438 -0
  73. data/lib/arachni/rpc/server/framework.rb +1163 -0
  74. data/lib/arachni/rpc/server/instance.rb +184 -0
  75. data/lib/{rpc/xml → arachni/rpc}/server/module/manager.rb +8 -5
  76. data/lib/arachni/rpc/server/node.rb +267 -0
  77. data/lib/{rpc/xml → arachni/rpc}/server/options.rb +6 -35
  78. data/lib/{rpc/xml → arachni/rpc}/server/output.rb +29 -3
  79. data/lib/{rpc/xml → arachni/rpc}/server/plugin/manager.rb +5 -6
  80. data/lib/{ruby.rb → arachni/ruby.rb} +1 -2
  81. data/lib/arachni/ruby/array.rb +31 -0
  82. data/lib/{ruby → arachni/ruby}/object.rb +1 -1
  83. data/lib/{ruby → arachni/ruby}/string.rb +1 -1
  84. data/lib/{spider.rb → arachni/spider.rb} +83 -110
  85. data/lib/arachni/typhoeus/hydra.rb +7 -0
  86. data/lib/{typhoeus → arachni/typhoeus}/request.rb +11 -9
  87. data/lib/{typhoeus → arachni/typhoeus}/response.rb +4 -0
  88. data/lib/{ui → arachni/ui}/cli/cli.rb +154 -84
  89. data/lib/{ui → arachni/ui}/cli/output.rb +57 -19
  90. data/lib/{ui/xmlrpc → arachni/ui/rpc}/dispatcher_monitor.rb +11 -10
  91. data/lib/{ui/xmlrpc/xmlrpc.rb → arachni/ui/rpc/rpc.rb} +102 -158
  92. data/lib/{ui → arachni/ui}/web/addon_manager.rb +23 -3
  93. data/lib/arachni/ui/web/addons/autodeploy.rb +207 -0
  94. data/lib/{ui → arachni/ui}/web/addons/autodeploy/lib/manager.rb +142 -35
  95. data/lib/arachni/ui/web/addons/autodeploy/views/index.erb +291 -0
  96. data/lib/{ui → arachni/ui}/web/addons/sample.rb +1 -1
  97. data/lib/{ui → arachni/ui}/web/addons/sample/views/index.erb +0 -0
  98. data/lib/{ui → arachni/ui}/web/addons/scheduler.rb +30 -22
  99. data/lib/{ui → arachni/ui}/web/addons/scheduler/views/index.erb +56 -22
  100. data/lib/{ui → arachni/ui}/web/addons/scheduler/views/options.erb +0 -0
  101. data/lib/arachni/ui/web/dispatcher_manager.rb +274 -0
  102. data/lib/arachni/ui/web/instance_manager.rb +69 -0
  103. data/lib/{ui → arachni/ui}/web/log.rb +1 -1
  104. data/lib/arachni/ui/web/output_stream.rb +54 -0
  105. data/lib/{ui → arachni/ui}/web/report_manager.rb +48 -54
  106. data/lib/{ui → arachni/ui}/web/scheduler.rb +42 -47
  107. data/lib/arachni/ui/web/server.rb +1197 -0
  108. data/lib/{ui → arachni/ui}/web/server/db/placeholder +0 -0
  109. data/lib/{ui → arachni/ui}/web/server/public/banner.png +0 -0
  110. data/lib/{ui → arachni/ui}/web/server/public/bodybg-small.png +0 -0
  111. data/lib/{ui → arachni/ui}/web/server/public/bodybg.png +0 -0
  112. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/pbar-ani.gif +0 -0
  113. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  114. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  115. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  116. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  117. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  118. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  119. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  120. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  121. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-icons_222222_256x240.png +0 -0
  122. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  123. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-icons_454545_256x240.png +0 -0
  124. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-icons_888888_256x240.png +0 -0
  125. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  126. data/lib/{ui → arachni/ui}/web/server/public/css/smoothness/jquery-ui-1.8.9.custom.css +0 -0
  127. data/lib/{ui → arachni/ui}/web/server/public/favicon.ico +0 -0
  128. data/lib/{ui → arachni/ui}/web/server/public/footer.jpg +0 -0
  129. data/lib/{ui/web/server/public/icons/error.png → arachni/ui/web/server/public/icons/bad.png} +0 -0
  130. data/lib/arachni/ui/web/server/public/icons/error.png +0 -0
  131. data/lib/{ui → arachni/ui}/web/server/public/icons/info.png +0 -0
  132. data/lib/{ui → arachni/ui}/web/server/public/icons/ok.png +0 -0
  133. data/lib/{ui → arachni/ui}/web/server/public/icons/status.png +0 -0
  134. data/lib/{ui → arachni/ui}/web/server/public/js/jquery-1.4.4.min.js +0 -0
  135. data/lib/{ui → arachni/ui}/web/server/public/js/jquery-ui-1.8.9.custom.min.js +0 -0
  136. data/lib/{ui → arachni/ui}/web/server/public/js/jquery-ui-timepicker.js +0 -0
  137. data/lib/{ui → arachni/ui}/web/server/public/logo.png +0 -0
  138. data/lib/{ui → arachni/ui}/web/server/public/nav-left.jpg +0 -0
  139. data/lib/{ui → arachni/ui}/web/server/public/nav-right.jpg +0 -0
  140. data/lib/{ui → arachni/ui}/web/server/public/nav-selected-left.jpg +0 -0
  141. data/lib/{ui → arachni/ui}/web/server/public/nav-selected-right.jpg +0 -0
  142. data/lib/{ui → arachni/ui}/web/server/public/plugins/sample/style.css +0 -0
  143. data/lib/{ui/web/server/tmp → arachni/ui/web/server/public/reports}/placeholder +0 -0
  144. data/lib/{ui → arachni/ui}/web/server/public/sidebar-bottom.jpg +0 -0
  145. data/lib/{ui → arachni/ui}/web/server/public/sidebar-h4.jpg +0 -0
  146. data/lib/{ui → arachni/ui}/web/server/public/sidebar-top.jpg +0 -0
  147. data/lib/{ui → arachni/ui}/web/server/public/spider.png +0 -0
  148. data/lib/{ui → arachni/ui}/web/server/public/style.css +3 -2
  149. data/lib/arachni/ui/web/server/tmp/placeholder +0 -0
  150. data/lib/{ui → arachni/ui}/web/server/views/addon.erb +0 -0
  151. data/lib/{ui → arachni/ui}/web/server/views/addons.erb +0 -0
  152. data/lib/{ui → arachni/ui}/web/server/views/dispatcher_error.erb +0 -0
  153. data/lib/arachni/ui/web/server/views/dispatchers.erb +175 -0
  154. data/lib/arachni/ui/web/server/views/dispatchers_edit.erb +71 -0
  155. data/lib/arachni/ui/web/server/views/error.erb +22 -0
  156. data/lib/{ui → arachni/ui}/web/server/views/flash.erb +2 -2
  157. data/lib/arachni/ui/web/server/views/home.erb +60 -0
  158. data/lib/{ui → arachni/ui}/web/server/views/instance.erb +55 -75
  159. data/lib/arachni/ui/web/server/views/js/home.erb +32 -0
  160. data/lib/{ui → arachni/ui}/web/server/views/layout.erb +2 -2
  161. data/lib/{ui → arachni/ui}/web/server/views/log.erb +0 -0
  162. data/lib/arachni/ui/web/server/views/module.erb +30 -0
  163. data/lib/{ui → arachni/ui}/web/server/views/modules.erb +2 -22
  164. data/lib/{ui → arachni/ui}/web/server/views/options.erb +0 -0
  165. data/lib/{ui → arachni/ui}/web/server/views/output_results.erb +4 -4
  166. data/lib/{ui → arachni/ui}/web/server/views/plugins.erb +23 -12
  167. data/lib/{ui → arachni/ui}/web/server/views/report_formats.erb +1 -1
  168. data/lib/{ui → arachni/ui}/web/server/views/reports.erb +1 -1
  169. data/lib/{ui → arachni/ui}/web/server/views/settings.erb +59 -16
  170. data/lib/{ui → arachni/ui}/web/server/views/welcome.erb +3 -1
  171. data/lib/{ui → arachni/ui}/web/utilities.rb +8 -3
  172. data/lib/arachni/version.rb +16 -0
  173. data/modules/audit/code_injection.rb +11 -20
  174. data/modules/audit/code_injection_timing.rb +2 -6
  175. data/modules/audit/csrf.rb +8 -16
  176. data/modules/audit/ldapi.rb +5 -11
  177. data/modules/audit/os_cmd_injection.rb +5 -9
  178. data/modules/audit/os_cmd_injection_timing.rb +4 -8
  179. data/modules/audit/path_traversal.rb +7 -13
  180. data/modules/audit/response_splitting.rb +8 -21
  181. data/modules/audit/rfi.rb +6 -46
  182. data/modules/audit/sqli.rb +5 -11
  183. data/modules/audit/sqli/regexp_ids.txt +0 -6
  184. data/modules/audit/sqli_blind_rdiff.rb +5 -10
  185. data/modules/audit/sqli_blind_timing.rb +4 -9
  186. data/modules/audit/trainer.rb +6 -12
  187. data/modules/audit/unvalidated_redirect.rb +6 -17
  188. data/modules/audit/xpath.rb +5 -12
  189. data/modules/audit/xss.rb +37 -23
  190. data/modules/audit/xss_event.rb +5 -10
  191. data/modules/audit/xss_path.rb +47 -41
  192. data/modules/audit/xss_script_tag.rb +5 -10
  193. data/modules/audit/xss_tag.rb +5 -10
  194. data/modules/audit/xss_uri.rb +17 -89
  195. data/modules/recon/allowed_methods.rb +6 -15
  196. data/modules/recon/backdoors.rb +12 -52
  197. data/modules/recon/backup_files.rb +25 -88
  198. data/modules/recon/common_directories.rb +8 -54
  199. data/modules/recon/common_files.rb +7 -58
  200. data/modules/recon/directory_listing.rb +6 -15
  201. data/modules/recon/grep/captcha.rb +1 -1
  202. data/modules/recon/grep/credit_card.rb +62 -27
  203. data/modules/recon/grep/cvs_svn_users.rb +1 -1
  204. data/modules/recon/grep/emails.rb +1 -1
  205. data/modules/recon/grep/html_objects.rb +1 -1
  206. data/modules/recon/grep/private_ip.rb +1 -1
  207. data/modules/recon/grep/ssn.rb +9 -9
  208. data/modules/recon/htaccess_limit.rb +6 -14
  209. data/modules/recon/http_put.rb +7 -15
  210. data/modules/recon/interesting_responses.rb +7 -13
  211. data/modules/recon/mixed_resource.rb +100 -0
  212. data/modules/recon/unencrypted_password_forms.rb +8 -20
  213. data/modules/recon/webdav.rb +6 -16
  214. data/modules/recon/xst.rb +7 -13
  215. data/path_extractors/anchors.rb +1 -1
  216. data/path_extractors/forms.rb +1 -1
  217. data/path_extractors/frames.rb +1 -1
  218. data/path_extractors/generic.rb +47 -3
  219. data/path_extractors/links.rb +1 -1
  220. data/path_extractors/meta_refresh.rb +1 -1
  221. data/path_extractors/scripts.rb +3 -4
  222. data/path_extractors/sitemap.rb +1 -1
  223. data/plugins/autologin.rb +9 -18
  224. data/plugins/beep_notify.rb +51 -0
  225. data/plugins/cookie_collector.rb +12 -12
  226. data/plugins/defaults/autothrottle.rb +86 -0
  227. data/plugins/{content_types.rb → defaults/content_types.rb} +25 -19
  228. data/plugins/{healthmap.rb → defaults/healthmap.rb} +30 -18
  229. data/plugins/defaults/metamodules/remedies/discovery.rb +164 -0
  230. data/plugins/defaults/metamodules/remedies/manual_verification.rb +65 -0
  231. data/{metamodules/timeout_notice.rb → plugins/defaults/metamodules/remedies/timing_attacks.rb} +26 -22
  232. data/{metamodules → plugins/defaults/metamodules}/uniformity.rb +15 -14
  233. data/plugins/{profiler.rb → defaults/profiler.rb} +19 -30
  234. data/plugins/defaults/resolver.rb +55 -0
  235. data/plugins/email_notify.rb +108 -0
  236. data/plugins/form_dicattack.rb +8 -16
  237. data/plugins/http_dicattack.rb +4 -12
  238. data/plugins/libnotify.rb +86 -0
  239. data/plugins/proxy.rb +8 -17
  240. data/plugins/proxy/server.rb +3 -3
  241. data/plugins/rescan.rb +60 -0
  242. data/plugins/waf_detector.rb +5 -16
  243. data/profiles/full.afp +3 -30
  244. data/reports/afr.rb +2 -5
  245. data/reports/ap.rb +3 -1
  246. data/reports/html.rb +210 -68
  247. data/reports/html/default.erb +72 -1014
  248. data/reports/html/default/configuration.erb +126 -0
  249. data/reports/html/default/css/jquery-ui.css +570 -0
  250. data/reports/html/default/css/jquery.jqplot.min.css +1 -0
  251. data/reports/html/default/css/main.css +391 -0
  252. data/reports/html/default/issue.erb +189 -0
  253. data/reports/html/default/issues.erb +65 -0
  254. data/reports/html/default/js/charts.js +146 -0
  255. data/reports/html/default/js/helpers.js +95 -0
  256. data/reports/html/default/js/init.js +73 -0
  257. data/reports/html/default/js/lib/jqplot.barRenderer.min.js +57 -0
  258. data/reports/html/default/js/lib/jqplot.categoryAxisRenderer.min.js +57 -0
  259. data/reports/html/default/js/lib/jqplot.cursor.min.js +57 -0
  260. data/reports/html/default/js/lib/jqplot.pieRenderer.min.js +57 -0
  261. data/reports/html/default/js/lib/jqplot.pointLabels.min.js +57 -0
  262. data/reports/html/default/js/lib/jquery-ui.min.js +404 -0
  263. data/reports/html/default/js/lib/jquery.jqplot.min.js +57 -0
  264. data/reports/html/default/js/lib/jquery.min.js +167 -0
  265. data/reports/html/default/plugins.erb +22 -0
  266. data/reports/html/default/search.erb +8 -0
  267. data/reports/html/default/sitemap.erb +15 -0
  268. data/reports/html/default/summary.erb +68 -0
  269. data/reports/html/default/summary_issue.erb +19 -0
  270. data/reports/json.rb +51 -0
  271. data/reports/marshal.rb +49 -0
  272. data/reports/metareport.rb +4 -6
  273. data/reports/metareport/arachni_metareport.rb +1 -1
  274. data/reports/plugin_formatters/html/autologin.rb +30 -41
  275. data/reports/plugin_formatters/html/content_types.rb +1 -10
  276. data/reports/plugin_formatters/html/cookie_collector.rb +36 -44
  277. data/reports/plugin_formatters/html/discovery.rb +50 -0
  278. data/reports/plugin_formatters/html/form_dicattack.rb +24 -32
  279. data/reports/plugin_formatters/html/healthmap.rb +45 -54
  280. data/reports/plugin_formatters/html/http_dicattack.rb +24 -32
  281. data/reports/plugin_formatters/html/profiler.rb +17 -48
  282. data/reports/plugin_formatters/html/profiler/template.erb +6 -99
  283. data/reports/plugin_formatters/html/resolver.rb +63 -0
  284. data/reports/plugin_formatters/html/{metaformatters/timeout_notice.rb → timing_attacks.rb} +7 -19
  285. data/reports/plugin_formatters/html/{metaformatters/uniformity.rb → uniformity.rb} +5 -17
  286. data/reports/plugin_formatters/html/waf_detector.rb +24 -32
  287. data/reports/plugin_formatters/stdout/autologin.rb +30 -35
  288. data/reports/plugin_formatters/stdout/content_types.rb +41 -46
  289. data/reports/plugin_formatters/stdout/cookie_collector.rb +33 -38
  290. data/reports/plugin_formatters/stdout/discovery.rb +47 -0
  291. data/reports/plugin_formatters/stdout/form_dicattack.rb +27 -32
  292. data/reports/plugin_formatters/stdout/healthmap.rb +47 -51
  293. data/reports/plugin_formatters/stdout/http_dicattack.rb +27 -32
  294. data/reports/plugin_formatters/stdout/metamodules.rb +48 -55
  295. data/reports/plugin_formatters/stdout/profiler.rb +60 -65
  296. data/reports/plugin_formatters/stdout/resolver.rb +45 -0
  297. data/reports/plugin_formatters/stdout/{metaformatters/timeout_notice.rb → timing_attacks.rb} +6 -14
  298. data/reports/plugin_formatters/stdout/{metaformatters/uniformity.rb → uniformity.rb} +6 -14
  299. data/reports/plugin_formatters/stdout/waf_detector.rb +23 -28
  300. data/reports/plugin_formatters/xml/autologin.rb +36 -41
  301. data/reports/plugin_formatters/xml/content_types.rb +47 -52
  302. data/reports/plugin_formatters/xml/cookie_collector.rb +39 -44
  303. data/reports/plugin_formatters/xml/discovery.rb +54 -0
  304. data/reports/plugin_formatters/xml/form_dicattack.rb +22 -27
  305. data/reports/plugin_formatters/xml/healthmap.rb +53 -58
  306. data/reports/plugin_formatters/xml/http_dicattack.rb +22 -27
  307. data/reports/plugin_formatters/xml/profiler.rb +61 -77
  308. data/reports/plugin_formatters/xml/resolver.rb +53 -0
  309. data/reports/plugin_formatters/xml/{metaformatters/timeout_notice.rb → timing_attacks.rb} +3 -15
  310. data/reports/plugin_formatters/xml/{metaformatters/uniformity.rb → uniformity.rb} +4 -14
  311. data/reports/plugin_formatters/xml/waf_detector.rb +23 -28
  312. data/reports/stdout.rb +1 -1
  313. data/reports/txt.rb +2 -5
  314. data/reports/xml.rb +2 -5
  315. data/reports/xml/buffer.rb +6 -2
  316. data/reports/yaml.rb +49 -0
  317. metadata +419 -278
  318. data/bin/arachni_xmlrpc +0 -21
  319. data/bin/arachni_xmlrpcd +0 -82
  320. data/bin/arachni_xmlrpcd_monitor +0 -74
  321. data/getoptslong.rb +0 -242
  322. data/lib/anemone.rb +0 -2
  323. data/lib/framework.rb +0 -673
  324. data/lib/module/manager.rb +0 -111
  325. data/lib/options.rb +0 -547
  326. data/lib/rpc/xml/client/base.rb +0 -76
  327. data/lib/rpc/xml/client/instance.rb +0 -88
  328. data/lib/rpc/xml/server/base.rb +0 -112
  329. data/lib/rpc/xml/server/dispatcher.rb +0 -386
  330. data/lib/rpc/xml/server/framework.rb +0 -206
  331. data/lib/rpc/xml/server/instance.rb +0 -191
  332. data/lib/ruby/xmlrpc/server.rb +0 -27
  333. data/lib/ui/web/addons/autodeploy.rb +0 -172
  334. data/lib/ui/web/addons/autodeploy/views/index.erb +0 -124
  335. data/lib/ui/web/dispatcher_manager.rb +0 -165
  336. data/lib/ui/web/instance_manager.rb +0 -87
  337. data/lib/ui/web/output_stream.rb +0 -94
  338. data/lib/ui/web/server.rb +0 -925
  339. data/lib/ui/web/server/public/reports/placeholder +0 -1
  340. data/lib/ui/web/server/views/dispatchers.erb +0 -100
  341. data/lib/ui/web/server/views/dispatchers_edit.erb +0 -42
  342. data/lib/ui/web/server/views/error.erb +0 -1
  343. data/lib/ui/web/server/views/home.erb +0 -25
  344. data/metamodules/autothrottle.rb +0 -74
  345. data/plugins/metamodules.rb +0 -118
  346. data/profiles/comprehensive.afp +0 -74
  347. data/reports/plugin_formatters/html/metamodules.rb +0 -93
  348. data/reports/plugin_formatters/xml/metamodules.rb +0 -91
@@ -10,5 +10,5 @@ I’d like to thank:
10
10
 
11
11
  for allowing me to test Arachni against their websites during the early stages of development.
12
12
 
13
- All the people on [GitHub](http://github.com/Zapotek/arachni/issues)
13
+ All the people on [GitHub](http://github.com/Zapotek/arachni/issues)
14
14
  that have submitted bugs and given constructive feedback.
@@ -1,6 +1,152 @@
1
1
 
2
2
  # ChangeLog
3
3
 
4
+ ## Version 0.4 _(January 7, 2012)_
5
+ - RPC Infrastructure (**New**)
6
+ - Dispatcher
7
+ - Dispatchers can now be connected to form a High Performance Grid and share scan workloads.
8
+ - Users can now specify a range of ports to be used for spawned Instances. [Issue #76]
9
+ - Now checks for signal availability before using <em>trap()</em>. (**New**) [Issue #71]
10
+ - Now uses Windows compliant filenames for the logs. (**New**) [Issue #70]
11
+ - Ruby's XMLRPC libraries have been replaced by <a href="https://github.com/Arachni/arachni-rpc">Arachni-RPC</a>,
12
+ a light-weight and high-performance custom client/server RPC implementation.
13
+ - Added <em>extras</em> directory holding components that are considered too specialised, dangerous or in some way unsuitable for
14
+ utilising without explicit user interaction. (**New**)
15
+ - Modules
16
+ - Recon
17
+ - SVN Digger dirs -- Finds directories, based on wordlists created from open source repositories (Herman Stevens)
18
+ - SVN Digger files -- Finds files, based on wordlists created from open source repositories (Herman Stevens)
19
+ - RAFT dirs (Herman Stevens)
20
+ - RAFT files (Herman Stevens)
21
+ - Framework
22
+ - <em>stats()</em>
23
+ - Fixed bug that caused the <em>current_page</em> to not be refreshed during timing attacks.
24
+ - Fixed bug that caused a less than 100% progress at the end of scans. [Issue #86]
25
+ - If the crawler is limited by link-count it will be taken under consideration.
26
+ - Significantly reduced memory footprint by re-scheduling the consumption of Trainer generated pages.
27
+ - User Interfaces
28
+ - WebUI
29
+ - Sinatra
30
+ - Updated to use the light-weight and high-performance <a href="http://code.macournoyer.com/thin/">Thin</a> server.
31
+ - Added <a href="https://github.com/raggi/async_sinatra">async_sinatra</a> to allow for asynchronous responses. (**New**)
32
+ - Added support for HTTP Basic Auth (**New**)
33
+ - Updated screens to provide access to HPG (High Performance Grid) features:
34
+ - Home
35
+ - Added option to enable HPG mode on a per scan basis (**New**)
36
+ - Dispatchers
37
+ - Added node information (Nickname, Pipe ID, Weight, Cost). (**New**)
38
+ - Added neighbour inspection per dispatcher. (**New**)
39
+ - Added log inspection per dispatcher. (**New**)
40
+ - Improved accuracy of instance statuses.
41
+ - Added percentages for memory and CPU usage per instance. (**New**)
42
+ - Instance (scan management)
43
+ - Provides an average of all stats of scanner instances. (**New**)
44
+ - Added per instance progress bars. (**New**)
45
+ - Added per instance statuses. (**New**)
46
+ - Added est. remaining time. (**New**)
47
+ - Settings
48
+ - Added proxy settings. [Issue #74] (**New**)
49
+ - Added settings for restrict and extend paths options. (**New**)
50
+ - Fixed small typo in "Settings" screen. [Issue #62]
51
+ - Reports -- AFR report is now served straight-up to avoid corruption. [Issue #55]
52
+ - Add-ons -- Updated to use the new async libraries.
53
+ - Added help buttons. (**New**)
54
+ - CLI
55
+ - Improved interrupt handler:
56
+ - It now exits in a cleaner fashion and is more obedient.
57
+ - Added est. remaining time. (**New**)
58
+ - Added progressbar. (**New**)
59
+ - HTTP client
60
+ - Added support for including custom headers. [Issue #90] (**New**)
61
+ - Refactored in order for all methods to use <em>request()</em>.
62
+ - Bug-fixed cookie preservation.
63
+ - Spider
64
+ - spider-first option removed and set to true by default.
65
+ - Added "--depth" parameter. (**New**)
66
+ - Fixed incorrect implementation of the inclusion filters.
67
+ - Now follows "Location" headers directly and bypasses the trainer.
68
+ - Added support for extending the crawl scope with a file that contains newline separated URLs. (**New**) [Issue #67]
69
+ - Added support for restricting the crawl scope with a file that contains newline separated URLs. (**New**)
70
+ - Made more resilient against malformed/non-standard URLs. [Issue #57]
71
+ - Parser
72
+ - Encoded URLs with fragments right after the host caused URI.parse to fail. [Issue #66]
73
+ - Auditable elements
74
+ - If there are 2 or more password fields in a form an extra variation is added with
75
+ the same inputs for all passwords in case it's a 'please repeat your password' thing. (**New**) [Issue #59]
76
+ - Plugins
77
+ - API -- Added <code>distributable?()</code> and <code>merge()</code> class methods which declare
78
+ if a plug-in can be distributed to all instances when running in Grid mode and merge an array of its own results respectively.
79
+ - Distributable plug-ins:
80
+ - Content-Types
81
+ - Cookie collector
82
+ - Healthmap
83
+ - Profiler
84
+ - AutoThrottle
85
+ - Profiler -- Removed response time logging and moved it to <em>defaults</em>.
86
+ - Proxy -- Fixed bug which caused some headers not to be forwarded. [Issue #64]
87
+ - Discovery (accompanied by appropriate report formatters). (**New**) [Issue #81]
88
+ - Performs anomaly detection on issues logged by discovery modules and warns of the possibility of false positives where applicable.
89
+ - Added the 'defaults' subdirectory which contains plug-ins that should be loaded by default.
90
+ - Added: (**New**)
91
+ - ReScan -- It uses the AFR report of a previous scan to extract the sitemap in order to avoid a redundant crawl.
92
+ - BeepNotify -- Beeps when the scan finishes.
93
+ - LibNotify -- Uses the libnotify library to send notifications for each discovered issue and a summary at the end of the scan.
94
+ - EmailNotify -- Sends a notification (and optionally a report) over SMTP at the end of the scan.
95
+ - Manual verification -- Flags issues that require manual verification as untrusted in order to reduce the signal-to-noise ratio.
96
+ - Resolver -- Resolves vulnerable hostnames to IP addresses.
97
+ - Reports
98
+ - HTML report
99
+ - Fixed replay forms to include URL params in the <em>action</em> attribute. [Issue #73]
100
+ - Refactored and broken into erb partials.
101
+ - Organised subsections into tabs. (**New**)
102
+ - HTML responses of logged Issues are now rendered on-demand. [Issue #88]
103
+ - Added graph showing issue trust totals. (**New**)
104
+ - The main issue graph shows trusted and untrusted issues in 2 different series.
105
+ - ALl JavaScript and CSS code is now included in the report for off-line viewing.
106
+ - Removed manual-verification piechart, obsoleted by the trust chart.
107
+ - Replaced Highcharts with jqPlot due to licensing reasons.
108
+ - Removed false-positive reporting -- was causing segfaults on Mac OSX. [Issue #126]
109
+ - Added (**New**)
110
+ - JSON -- Exports the audit results as a JSON serialized Hash.
111
+ - Marshal -- Exports the audit results as a Marshal serialized Hash.
112
+ - YAML -- Exports the audit results as a YAML serialized Hash.
113
+ - Heeded Ruby's warnings (<em>ruby -w</em>).
114
+ - Modules
115
+ - API
116
+ - Auditor
117
+ - Added helper methods for checking the existence of remote files and directories. (**New**)
118
+ - Added helper methods for issue logging. (**New**)
119
+ - Refactored modules replacing duplicate code with the new helper methods.
120
+ - Audit
121
+ - XSS -- Updated to actually inject an element, parse the HTML response and
122
+ look for that element before logging in order to eliminate false positives. [Issue #59]
123
+ - Path traversal -- Fixed broken regular expressions
124
+ - SQL Injection -- Fixed broken regular expressions
125
+ - XSS Path -- Updated to verify the injection using HTML parsing
126
+ - XSS URI -- Made obsolete and will be removed from future releases -- loads and runs XSS Path instead.
127
+ - Recon
128
+ - Added MixedResource detection module (<a href="http://googleonlinesecurity.blogspot.com/2011/06/trying-to-end-mixed-scripting.html">Reference</a>) (**New**) [Issue #56]
129
+ - Meta-Modules
130
+ - Have all been converted to regular plug-ins in order to make distribution across the Grid easier.
131
+ - Dependencies
132
+ - Added
133
+ - Arachni-RPC
134
+ - EventMachine
135
+ - EM Synchrony
136
+ - AsyncSinatra
137
+ - Updated
138
+ - Typhoeus => 0.3.3
139
+ - Sys-proctable => 0.9.1
140
+ - Nokogiri => 1.5.0
141
+ - Sinatra => 1.3.1
142
+ - Datamapper => 1.1.0
143
+ - Json => 1.6.1
144
+ - Datamapper SQLite adapter => 1.1.0
145
+ - Net-SSH => 2.2.1
146
+ - Removed
147
+ - Rack-CSRF
148
+ - JSON (Provided by DataMapper)
149
+
4
150
  ## Version 0.3 _(July 26, 2011)_
5
151
  - HTTP client
6
152
  - Fixed race condition in timeout options.
@@ -7,5 +7,6 @@ These are the people that helped improve Arachni either by submitting code, sugg
7
7
  - [Brandon Potter](mailto:bpotter8705@gmail.com) for the original "arachni_web_autostart" script
8
8
  - [Steve Pinkham](http://github.com/spinkham) for beta testing and patches.
9
9
  - [Aung Khant](mailto:aungkhant@yehg.net) for general suggestions.
10
+ - [Herman Stevens](mailto:herman@astyran.com) for contributing recon modules.
10
11
 
11
12
  A big thanks to my buddy [Andreas](mailto:rainmakergr@gmail.com) for the original spider drawing used in the project graphics.
data/HACKING.md CHANGED
@@ -90,9 +90,9 @@ power to work with.
90
90
 
91
91
  ## Creating New Plug-ins
92
92
 
93
- Unlike the two previous types of components plug-ins are demi-gods.
94
- Each plug-in is passed the instance of the running framework to do with it what it pleases.
95
- Via the framework they have access to all Arachni subsystems and can alter or extend Arachni's behavior on the fly.
93
+ Unlike the two previous types of components plug-ins are demi-gods.<br/>
94
+ Each plug-in is passed the instance of the running framework to do with it what it pleases.<br/>
95
+ Via the framework they have access to all Arachni subsystems and can alter or extend Arachni's behavior on the fly.<br/>
96
96
  Plug-ins run in parallel to the framework and are executed right before the scan process starts.
97
97
 
98
98
  ## Licensing
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  <table>
3
3
  <tr>
4
4
  <th>Version</th>
5
- <td>0.3</td>
5
+ <td>0.4</td>
6
6
  </tr>
7
7
  <tr>
8
8
  <th>Homepage</th>
@@ -29,7 +29,7 @@
29
29
  </tr>
30
30
  <tr>
31
31
  <th>Author</th>
32
- <td><a href="mailto:tasos.laskos@gmail.com">Tasos</a> <a href="mailto:zapotek@segfault.gr">Zapotek</a> <a href="mailto:tasos.laskos@gmail.com">Laskos</a></td>
32
+ <td><a href="mailto:tasos.laskos@gmail.com">Tasos Laskos</a></td>
33
33
  </tr>
34
34
  <tr>
35
35
  <th>Twitter</th>
@@ -37,7 +37,7 @@
37
37
  </tr>
38
38
  <tr>
39
39
  <th>Copyright</th>
40
- <td>2010-2011</td>
40
+ <td>2010-2012 Tasos Laskos</td>
41
41
  </tr>
42
42
  <tr>
43
43
  <th>License</th>
@@ -47,23 +47,24 @@
47
47
 
48
48
  ![Arachni logo](http://zapotek.github.com/arachni/logo.png)
49
49
 
50
- Kindly sponsored by: [![NopSec](http://zapotek.github.com/arachni/nopsec_logo.png)](http://www.nopsec.com)
51
-
52
- Help by donating:
53
- [![Click here to lend your support to: Arachni - Web Application Security Scanner Framework and make a donation at www.pledgie.com!](http://pledgie.com/campaigns/14482.png)](http://www.pledgie.com/campaigns/14482)
54
-
55
50
  ## Synopsis
56
51
 
57
52
  Arachni is a feature-full, modular, high-performance Ruby framework aimed towards helping
58
53
  penetration testers and administrators evaluate the security of web applications.
59
54
 
60
- Arachni is smart, it trains itself by learning from the HTTP responses it receives during the audit process.<br/>
61
- Unlike other scanners, Arachni takes into account the dynamic nature of web applications and can detect changes caused while travelling<br/>
62
- through the paths of a web application's cyclomatic complexity.<br/>
55
+ Arachni is smart, it trains itself by learning from the HTTP responses it receives during the audit process and
56
+ is able to perform meta-analysis using a number of factors in order to correctly assess the trustworthiness of results and intelligently identify false-positives.
57
+
58
+ Unlike other scanners, it takes into account the dynamic nature of web applications, can detect changes caused while travelling<br/>
59
+ through the paths of a web application's cyclomatic complexity and is able to adjust itself accordingly.<br/>
63
60
  This way attack/input vectors that would otherwise be undetectable by non-humans are seamlessly handled by Arachni.
64
61
 
65
- Finally, Arachni yields great performance due to its asynchronous HTTP model (courtesy of [Typhoeus](https://github.com/pauldix/typhoeus)).<br/>
66
- Thus, you'll only be limited by the responsiveness of the server under audit and your available bandwidth.
62
+ Moreover, Arachni yields great performance due to its asynchronous HTTP model (courtesy of [Typhoeus](https://github.com/pauldix/typhoeus)) --
63
+ especially when combined with a High Performance Grid setup which allows you to combine the resources of multiple nodes for lightning fast scans.<br/>
64
+ Thus, you'll only be limited by the responsiveness of the server under audit.
65
+
66
+ Finally, it is versatile enough to cover a great deal of use cases,
67
+ ranging from a simple command line scanner utility, to a global high performance grid of scanners, to a Ruby library allowing for scripted audits.
67
68
 
68
69
  **Note**: _Despite the fact that Arachni is mostly targeted towards web application security, it can easily be used for general purpose scraping, data-mining, etc with the addition of custom modules._
69
70
 
@@ -85,7 +86,8 @@ From a user's or a component developer's point of view everything appears simple
85
86
 
86
87
  ### General
87
88
 
88
- - Cookie-jar support
89
+ - Cookie-jar support.
90
+ - Custom header support.
89
91
  - SSL support.
90
92
  - User Agent spoofing.
91
93
  - Proxy support for SOCKS4, SOCKS4A, SOCKS5, HTTP/1.1 and HTTP/1.0.
@@ -94,16 +96,16 @@ From a user's or a component developer's point of view everything appears simple
94
96
  - Highlighted command line output.
95
97
  - UI abstraction:
96
98
  - Command line UI
97
- - Web UI (Utilizing the Client - Dispatch-server XMLRPC architecture)
98
- - XMLRPC Client/Dispatch server
99
- - Centralised deployment
100
- - Multiple clients
101
- - Parallel scans
102
- - SSL encryption
103
- - SSL cert based client authentication
104
- - Remote monitoring
99
+ - Web UI (Utilizing the Client - Dispatcher RPC infrastructure)
105
100
  - Pause/resume functionality.
106
101
  - High performance asynchronous HTTP requests.
102
+ - Open [RPC](https://github.com/Zapotek/arachni/wiki/RPC-API) Client/Dispatcher Infrastructure
103
+ - Distributed deployment
104
+ - Multiple clients
105
+ - Parallel scans
106
+ - SSL encryption (with peer authentication)
107
+ - Remote monitoring
108
+ - Support for [High Performance Grid](https://github.com/Zapotek/arachni/wiki/RPC-server#wiki-grid) configuration, combining the resources of multiple nodes to perform fast scans.
107
109
 
108
110
  ### Website Crawler
109
111
 
@@ -114,6 +116,7 @@ From a user's or a component developer's point of view everything appears simple
114
116
  - Adjustable link count limit.
115
117
  - Adjustable redirect limit.
116
118
  - Modular path extraction via "Path Extractor" components.
119
+ - Can read paths from multiple user supplied files (to both restrict and extend the scope of the crawl).
117
120
 
118
121
  ### HTML Parser
119
122
 
@@ -174,6 +177,13 @@ The analyzer can graciously handle badly written HTML code due to a combination
174
177
  - E-mail address disclosure
175
178
  - US Social Security Number disclosure
176
179
  - Forceful directory listing
180
+ - Mixed Resource/Scripting
181
+ - Extras
182
+ - SVN Digger dirs
183
+ - SVN Digger files
184
+ - RAFT dirs
185
+ - RAFT files
186
+
177
187
 
178
188
  ### Report Management
179
189
 
@@ -183,8 +193,11 @@ The analyzer can graciously handle badly written HTML code due to a combination
183
193
  - HTML (Cheers to [Christos Chiotis](mailto:chris@survivetheinternet.com) for designing the new HTML report template.)
184
194
  - XML
185
195
  - TXT
186
- - YAML serialization
187
- - Metareport (providing Metasploit integration to allow for [automated and assisted exploitation](http://zapotek.github.com/arachni/file.EXPLOITATION.html))
196
+ - AFR -- The default Arachni Framework Report format.
197
+ - JSON
198
+ - Marshal
199
+ - YAML
200
+ - Metareport -- Providing Metasploit integration to allow for [automated and assisted exploitation](http://zapotek.github.com/arachni/file.EXPLOITATION.html).
188
201
 
189
202
  ### Plug-in Management
190
203
 
@@ -192,6 +205,7 @@ The analyzer can graciously handle badly written HTML code due to a combination
192
205
  - Plug-ins are framework demi-gods, they have direct access to the framework instance.
193
206
  - Can be used to add any functionality to Arachni.
194
207
  - Currently available plugins:
208
+ - ReScan -- It uses the AFR report of a previous scan to extract the sitemap in order to avoid a redundant crawl.
195
209
  - Passive Proxy -- Analyzes requests and responses between the web app and the browser assisting in AJAX audits, logging-in and/or restricting the scope of the audit
196
210
  - Form based AutoLogin
197
211
  - Dictionary attacker for HTTP Auth
@@ -201,11 +215,17 @@ The analyzer can graciously handle badly written HTML code due to a combination
201
215
  - Healthmap -- Generates sitemap showing the health of each crawled/audited URL
202
216
  - Content-types -- Logs content-types of server responses aiding in the identification of interesting (possibly leaked) files
203
217
  - WAF (Web Application Firewall) Detector -- Establishes a baseline of normal behavior and uses rDiff analysis to determine if malicious inputs cause any behavioral changes
204
- - MetaModules -- Loads and runs high-level meta-analysis modules pre/mid/post-scan
205
- - AutoThrottle -- Dynamically adjusts HTTP throughput during the scan for maximum bandwidth utilization
206
- - TimeoutNotice -- Provides a notice for issues uncovered by timing attacks when the affected audited pages returned unusually high response times to begin with.</br>
207
- It also points out the danger of DoS attacks against pages that perform heavy-duty processing.
208
- - Uniformity -- Reports inputs that are uniformly vulnerable across a number of pages hinting to the lack of a central point of input sanitization.
218
+ - AutoThrottle -- Dynamically adjusts HTTP throughput during the scan for maximum bandwidth utilization
219
+ - TimingAttacks -- Provides a notice for issues uncovered by timing attacks when the affected audited pages returned unusually high response times to begin with.</br>
220
+ It also points out the danger of DoS attacks against pages that perform heavy-duty processing.
221
+ - Uniformity -- Reports inputs that are uniformly vulnerable across a number of pages hinting to the lack of a central point of input sanitization.
222
+ - Discovery -- Performs anomaly detection on issues logged by discovery modules and warns of the possibility of false positives where applicable.
223
+ - BeepNotify -- Beeps when the scan finishes.
224
+ - LibNotify -- Uses the libnotify library to send notifications for each discovered issue and a summary at the end of the scan.
225
+ - EmailNotify -- Sends a notification (and optionally a report) over SMTP at the end of the scan.
226
+ - Manual verification -- Flags issues that require manual verification as untrusted in order to reduce the signal-to-noise ratio.
227
+ - Resolver -- Resolves vulnerable hostnames to IP addresses.
228
+
209
229
 
210
230
  ### Trainer subsystem
211
231
 
@@ -216,51 +236,63 @@ However, this is usually not required since Arachni is aware of which requests a
216
236
 
217
237
  Still, this can be an invaluable asset to Fuzzer modules.
218
238
 
219
- ## Usage
220
-
221
- ### [WebUI](https://github.com/Zapotek/arachni/wiki/Web-user-interface)
222
-
223
-
224
- ### [Command line interface](https://github.com/Zapotek/arachni/wiki/Command-line-user-interface)
225
-
226
- ## Installation
239
+ ## [Installation](https://github.com/Zapotek/arachni/wiki/Installation)
227
240
 
228
241
  ### CDE packages for Linux
229
242
 
230
- <del>Arachni is released as [CDE packages](http://stanford.edu/~pgbovine/cde.html) for your convinience.<br/>
243
+ Arachni is released as [CDE packages](http://stanford.edu/~pgbovine/cde.html) for your convinience.<br/>
231
244
  CDE packages are self contained and thus alleviate the need for Ruby and other dependencies to be installed or root access.<br/>
232
245
  You can download the latest CDE package from the [download](https://github.com/Zapotek/arachni/downloads) page and escape the dependency hell.<br/>
233
- If you decide to go the CDE route you can skip the rest, you're done.</del>
234
-
235
- Due to some incompatibility this release does not have a CDE package yet.
246
+ If you decide to go the CDE route you can skip the rest, you're done.
236
247
 
237
248
  ### Gem
238
249
 
239
250
  To install the Gem or work with the source code you'll also need the following system libraries:
240
251
 
241
- $ sudo apt-get install libxml2-dev libxslt1-dev libcurl4-openssl-dev libsqlite3-dev
252
+ sudo apt-get install libxml2-dev libxslt1-dev libcurl4-openssl-dev libsqlite3-dev
242
253
 
243
- You will also need to have Ruby 1.9.2 installed *including* the dev package/headers.<br/>
244
- The prefered ways to accomplish this is by either using [RVM](http://rvm.beginrescueend.com/) or by downloading and compiling the source code for [Ruby 1.9.2](http://www.ruby-lang.org/en/downloads/) manually.
254
+ You will also need to have Ruby 1.9.2 (or later) installed *including* the dev package/headers.<br/>
255
+ The prefered ways to accomplish this is by either using [RVM](http://rvm.beginrescueend.com/) or by downloading and compiling the source code for [Ruby](http://www.ruby-lang.org/en/downloads/) manually.
245
256
 
246
257
 
247
258
  To install Arachni:
248
259
 
249
- $ gem install arachni
260
+ gem install arachni
250
261
 
251
262
  ### Source
252
263
 
253
264
  If you want to clone the repository and work with the source code then you'll need to run the following to install all gem dependencies and Arachni:
254
265
 
255
- $ rake install
266
+ git clone git://github.com/Zapotek/arachni.git
267
+ cd arachni
268
+ rake install
269
+
270
+
271
+ ### [Windows -- under Cygwin](https://github.com/Zapotek/arachni/wiki/Installation)
272
+
273
+
274
+ ## Usage
275
+
276
+ ### [Command line interface](https://github.com/Zapotek/arachni/wiki/Command-line-user-interface)
277
+
278
+ ### [WebUI](https://github.com/Zapotek/arachni/wiki/Web-user-interface)
279
+
280
+ ### [Starting a Dispatcher](https://github.com/Zapotek/arachni/wiki/RPC-server)
281
+
282
+
283
+ ## Configuration of <em>extras</em>
284
+
285
+ The <em>extras</em> directory holds components that are considered too specialised, dangerous or in some way unsuitable for utilising without explicit user interaction. <br/>
286
+ This directory was mainly added to distribute modules which can be helpful but should not be put in the default <em>modules</em> directory to prevent them from being
287
+ automatically loaded.
256
288
 
289
+ Should you want to use these extra components simply move them from the <em>extras</em> folder to their appropriate system directories.
257
290
 
258
291
  ## Supported platforms
259
292
 
260
- Arachni should work on all *nix and POSIX compliant platforms with Ruby
261
- and the aforementioned requirements.
293
+ Arachni should work on all *nix and POSIX compliant platforms with Ruby and the aforementioned requirements.
262
294
 
263
- Windows users should run Arachni in Cygwin.
295
+ Windows users can run Arachni in Cygwin by following these [instructions](https://github.com/Zapotek/arachni/wiki/Installation).
264
296
 
265
297
  ## Bug reports/Feature requests
266
298
  Please send your feedback using Github's issue system at
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  =begin
2
2
  Arachni
3
- Copyright (c) 2010-2011 Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
3
+ Copyright (c) 2010-2012 Tasos "Zapotek" Laskos <tasos.laskos@gmail.com>
4
4
 
5
5
  This is free software; you can copy and distribute and modify
6
6
  this program under the term of the GPL v2.0 License
@@ -8,6 +8,8 @@
8
8
 
9
9
  =end
10
10
 
11
+ require File.expand_path( File.dirname( __FILE__ ) ) + '/lib/arachni/version'
12
+
11
13
  desc "Generate docs"
12
14
 
13
15
  task :docs do
@@ -54,11 +56,15 @@ desc "Cleaning report and log files."
54
56
  task :clean do
55
57
 
56
58
  sh "rm *.afr || true"
59
+ sh "rm *.yaml || true"
60
+ sh "rm *.json || true"
61
+ sh "rm *.marshal || true"
57
62
  sh "rm *.gem || true"
58
- sh "rm logs/XMLRPC* || true"
59
- sh "rm lib/ui/web/server/db/log.db || true"
60
- sh "rm lib/ui/web/server/db/default.db || true"
61
- sh "rm lib/ui/web/server/db/welcomed || true"
63
+ sh "rm logs/*.log || true"
64
+ sh "rm lib/arachni/ui/web/server/db/*.* || true"
65
+ sh "rm lib/arachni/ui/web/server/db/welcomed || true"
66
+ sh "rm lib/arachni/ui/web/server/public/reports/*.* || true"
67
+ sh "rm lib/arachni/ui/web/server/tmp/*.* || true"
62
68
  end
63
69
 
64
70
 
@@ -67,9 +73,6 @@ end
67
73
  #
68
74
  desc "Build the arachni gem."
69
75
  task :build => [ :clean ] do
70
-
71
- require File.expand_path( File.dirname( __FILE__ ) ) + '/lib/arachni'
72
-
73
76
  sh "gem build arachni.gemspec"
74
77
  end
75
78
 
@@ -79,9 +82,6 @@ end
79
82
  #
80
83
  desc "Build and install the arachni gem."
81
84
  task :install => [ :build ] do
82
-
83
- require File.expand_path( File.dirname( __FILE__ ) ) + '/lib/arachni'
84
-
85
85
  sh "gem install arachni-#{Arachni::VERSION}.gem"
86
86
  end
87
87
 
@@ -91,8 +91,5 @@ end
91
91
  #
92
92
  desc "Push a new version to Gemcutter"
93
93
  task :publish => [ :build ] do
94
-
95
- require File.expand_path( File.dirname( __FILE__ ) ) + '/lib/arachni'
96
-
97
94
  sh "gem push arachni-#{Arachni::VERSION}.gem"
98
95
  end