arachni 1.1 → 1.2

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 (287) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +159 -0
  3. data/LICENSE.md +126 -196
  4. data/README.md +32 -24
  5. data/arachni.gemspec +7 -7
  6. data/components/checks/active/code_injection_timing.rb +3 -3
  7. data/components/checks/active/csrf.rb +2 -2
  8. data/components/checks/active/file_inclusion.rb +6 -7
  9. data/components/checks/active/os_cmd_injection.rb +3 -3
  10. data/components/checks/active/path_traversal.rb +7 -7
  11. data/components/checks/active/response_splitting.rb +9 -4
  12. data/components/checks/active/session_fixation.rb +7 -3
  13. data/components/checks/active/source_code_disclosure.rb +5 -5
  14. data/components/checks/active/unvalidated_redirect.rb +12 -3
  15. data/components/checks/active/unvalidated_redirect_dom.rb +3 -3
  16. data/components/checks/active/xss.rb +23 -10
  17. data/components/checks/active/xss_dom_inputs.rb +113 -11
  18. data/components/checks/active/xxe.rb +3 -3
  19. data/components/checks/passive/backdoors.rb +6 -5
  20. data/components/checks/passive/backup_directories.rb +6 -6
  21. data/components/checks/passive/backup_files.rb +6 -6
  22. data/components/checks/passive/common_admin_interfaces.rb +58 -0
  23. data/components/checks/passive/common_admin_interfaces/admin-panels.txt +49 -0
  24. data/components/checks/passive/common_directories/directories.txt +0 -16
  25. data/components/checks/passive/common_files.rb +6 -5
  26. data/components/checks/passive/common_files/filenames.txt +0 -2
  27. data/components/checks/passive/directory_listing.rb +6 -6
  28. data/components/checks/passive/grep/cookie_set_for_parent_domain.rb +3 -3
  29. data/components/checks/passive/grep/hsts.rb +6 -3
  30. data/components/checks/passive/grep/http_only_cookies.rb +3 -3
  31. data/components/checks/passive/grep/insecure_cookies.rb +2 -2
  32. data/components/checks/passive/grep/insecure_cors_policy.rb +6 -4
  33. data/components/checks/passive/grep/x_frame_options.rb +6 -4
  34. data/components/checks/passive/htaccess_limit.rb +6 -2
  35. data/components/checks/passive/http_put.rb +8 -4
  36. data/components/checks/passive/interesting_responses.rb +3 -2
  37. data/components/checks/passive/localstart_asp.rb +6 -2
  38. data/components/checks/passive/origin_spoof_access_restriction_bypass.rb +5 -1
  39. data/components/checks/passive/xst.rb +6 -2
  40. data/components/fingerprinters/frameworks/aspx_mvc.rb +43 -0
  41. data/components/fingerprinters/frameworks/cakephp.rb +28 -0
  42. data/components/fingerprinters/frameworks/cherrypy.rb +31 -0
  43. data/components/fingerprinters/frameworks/django.rb +33 -0
  44. data/components/fingerprinters/frameworks/jsf.rb +30 -0
  45. data/components/fingerprinters/frameworks/rack.rb +5 -7
  46. data/components/fingerprinters/frameworks/rails.rb +43 -0
  47. data/components/fingerprinters/languages/aspx.rb +11 -11
  48. data/components/fingerprinters/languages/{jsp.rb → java.rb} +11 -7
  49. data/components/fingerprinters/languages/php.rb +6 -6
  50. data/components/fingerprinters/languages/python.rb +14 -6
  51. data/components/fingerprinters/languages/ruby.rb +3 -5
  52. data/components/fingerprinters/servers/apache.rb +5 -4
  53. data/components/fingerprinters/servers/gunicorn.rb +33 -0
  54. data/components/fingerprinters/servers/jetty.rb +1 -1
  55. data/components/fingerprinters/servers/tomcat.rb +11 -4
  56. data/components/path_extractors/anchors.rb +5 -12
  57. data/components/path_extractors/areas.rb +5 -13
  58. data/components/path_extractors/comments.rb +5 -3
  59. data/components/path_extractors/data_url.rb +21 -0
  60. data/components/path_extractors/forms.rb +5 -13
  61. data/components/path_extractors/frames.rb +6 -13
  62. data/components/path_extractors/generic.rb +3 -12
  63. data/components/path_extractors/links.rb +5 -13
  64. data/components/path_extractors/meta_refresh.rb +5 -13
  65. data/components/path_extractors/scripts.rb +8 -14
  66. data/components/plugins/autologin.rb +17 -5
  67. data/components/plugins/defaults/meta/remedies/discovery.rb +11 -29
  68. data/components/plugins/login_script.rb +40 -10
  69. data/components/plugins/metrics.rb +235 -0
  70. data/components/plugins/proxy.rb +21 -4
  71. data/components/plugins/proxy/panel/page_accordion.html.erb +34 -2
  72. data/components/plugins/restrict_to_dom_state.rb +70 -0
  73. data/components/plugins/vector_feed.rb +38 -9
  74. data/components/reporters/plugin_formatters/html/metrics.rb +290 -0
  75. data/components/reporters/plugin_formatters/stdout/metrics.rb +80 -0
  76. data/components/reporters/plugin_formatters/xml/metrics.rb +29 -0
  77. data/components/reporters/stdout.rb +4 -2
  78. data/components/reporters/xml.rb +4 -4
  79. data/components/reporters/xml/schema.xsd +95 -0
  80. data/lib/arachni.rb +2 -0
  81. data/lib/arachni/browser.rb +132 -77
  82. data/lib/arachni/browser/javascript.rb +173 -45
  83. data/lib/arachni/browser/javascript/scripts/dom_monitor.js +81 -6
  84. data/lib/arachni/browser/javascript/scripts/taint_tracer.js +31 -3
  85. data/lib/arachni/browser_cluster.rb +41 -15
  86. data/lib/arachni/browser_cluster/job.rb +4 -0
  87. data/lib/arachni/browser_cluster/jobs/resource_exploration.rb +0 -9
  88. data/lib/arachni/browser_cluster/worker.rb +8 -5
  89. data/lib/arachni/check/auditor.rb +20 -8
  90. data/lib/arachni/check/base.rb +38 -6
  91. data/lib/arachni/element/base.rb +18 -1
  92. data/lib/arachni/element/capabilities/analyzable/differential.rb +0 -1
  93. data/lib/arachni/element/capabilities/analyzable/taint.rb +40 -10
  94. data/lib/arachni/element/capabilities/analyzable/timeout.rb +27 -23
  95. data/lib/arachni/element/capabilities/auditable/dom.rb +22 -0
  96. data/lib/arachni/element/capabilities/inputtable.rb +6 -2
  97. data/lib/arachni/element/capabilities/submittable.rb +1 -1
  98. data/lib/arachni/element/cookie.rb +37 -23
  99. data/lib/arachni/element/cookie/capabilities/mutable.rb +6 -6
  100. data/lib/arachni/element/cookie/dom.rb +0 -8
  101. data/lib/arachni/element/form.rb +28 -14
  102. data/lib/arachni/element/form/capabilities/auditable.rb +2 -2
  103. data/lib/arachni/element/form/capabilities/mutable.rb +5 -5
  104. data/lib/arachni/element/form/dom.rb +0 -8
  105. data/lib/arachni/element/generic_dom.rb +1 -1
  106. data/lib/arachni/element/json.rb +2 -1
  107. data/lib/arachni/element/json/capabilities/inputtable.rb +6 -6
  108. data/lib/arachni/element/json/capabilities/mutable.rb +1 -1
  109. data/lib/arachni/element/link.rb +13 -16
  110. data/lib/arachni/element/link/dom.rb +1 -14
  111. data/lib/arachni/element/link_template.rb +3 -2
  112. data/lib/arachni/element/link_template/dom.rb +0 -16
  113. data/lib/arachni/element/server.rb +51 -9
  114. data/lib/arachni/element/xml.rb +1 -0
  115. data/lib/arachni/ethon/easy.rb +4 -1
  116. data/lib/arachni/framework/parts/audit.rb +26 -77
  117. data/lib/arachni/framework/parts/browser.rb +50 -55
  118. data/lib/arachni/framework/parts/check.rb +4 -3
  119. data/lib/arachni/framework/parts/data.rb +41 -6
  120. data/lib/arachni/framework/parts/state.rb +16 -7
  121. data/lib/arachni/http/client.rb +66 -38
  122. data/lib/arachni/http/client/dynamic_404_handler.rb +46 -14
  123. data/lib/arachni/http/headers.rb +22 -10
  124. data/lib/arachni/http/proxy_server.rb +67 -22
  125. data/lib/arachni/http/proxy_server/ssl-interceptor-cacert.pem +34 -0
  126. data/lib/arachni/http/proxy_server/ssl-interceptor-cakey.pem +51 -0
  127. data/lib/arachni/http/request.rb +71 -18
  128. data/lib/arachni/issue.rb +17 -3
  129. data/lib/arachni/option_groups/browser_cluster.rb +34 -1
  130. data/lib/arachni/option_groups/http.rb +1 -1
  131. data/lib/arachni/page.rb +26 -13
  132. data/lib/arachni/page/dom/transition.rb +2 -2
  133. data/lib/arachni/parser.rb +28 -11
  134. data/lib/arachni/platform/fingerprinter.rb +5 -0
  135. data/lib/arachni/platform/manager.rb +65 -32
  136. data/lib/arachni/plugin/base.rb +8 -0
  137. data/lib/arachni/processes/instances.rb +25 -11
  138. data/lib/arachni/reporter/manager.rb +2 -2
  139. data/lib/arachni/rpc/client/instance.rb +4 -0
  140. data/lib/arachni/rpc/server/framework/master.rb +3 -3
  141. data/lib/arachni/rpc/server/framework/multi_instance.rb +0 -8
  142. data/lib/arachni/rpc/server/instance.rb +2 -1
  143. data/lib/arachni/ruby/array.rb +5 -0
  144. data/lib/arachni/ruby/hash.rb +5 -0
  145. data/lib/arachni/ruby/string.rb +2 -3
  146. data/lib/arachni/session.rb +32 -6
  147. data/lib/arachni/state/framework.rb +6 -2
  148. data/lib/arachni/support/cache.rb +1 -0
  149. data/lib/arachni/support/cache/base.rb +12 -8
  150. data/lib/arachni/support/cache/least_recently_pushed.rb +29 -0
  151. data/lib/arachni/support/cache/least_recently_used.rb +5 -8
  152. data/lib/arachni/support/cache/preference.rb +1 -1
  153. data/lib/arachni/support/cache/random_replacement.rb +1 -25
  154. data/lib/arachni/support/database/queue.rb +21 -8
  155. data/lib/arachni/support/lookup/base.rb +7 -1
  156. data/lib/arachni/support/mixins/observable.rb +3 -1
  157. data/lib/arachni/support/profiler.rb +51 -10
  158. data/lib/arachni/support/signature.rb +11 -2
  159. data/lib/arachni/trainer.rb +8 -2
  160. data/lib/arachni/uri.rb +28 -25
  161. data/lib/arachni/uri/scope.rb +1 -1
  162. data/lib/arachni/utilities.rb +8 -0
  163. data/lib/arachni/watir/element.rb +1 -1
  164. data/lib/version +1 -1
  165. data/spec/arachni/browser/javascript/dom_monitor_spec.rb +388 -53
  166. data/spec/arachni/browser/javascript/taint_tracer_spec.rb +41 -0
  167. data/spec/arachni/browser/javascript_spec.rb +235 -61
  168. data/spec/arachni/browser_cluster/jobs/resource_exploration_spec.rb +0 -9
  169. data/spec/arachni/browser_cluster_spec.rb +58 -10
  170. data/spec/arachni/browser_spec.rb +170 -26
  171. data/spec/arachni/check/auditor_spec.rb +22 -3
  172. data/spec/arachni/check/base_spec.rb +84 -0
  173. data/spec/arachni/element/body_spec.rb +1 -1
  174. data/spec/arachni/element/capabilities/analyzable/taint_spec.rb +3 -3
  175. data/spec/arachni/element/capabilities/analyzable/timeout_spec.rb +1 -1
  176. data/spec/arachni/element/cookie/dom_spec.rb +0 -9
  177. data/spec/arachni/element/cookie_spec.rb +85 -0
  178. data/spec/arachni/element/form/dom_spec.rb +0 -9
  179. data/spec/arachni/element/form_spec.rb +46 -3
  180. data/spec/arachni/element/json_spec.rb +20 -0
  181. data/spec/arachni/element/link/dom_spec.rb +0 -9
  182. data/spec/arachni/element/link_spec.rb +40 -15
  183. data/spec/arachni/element/link_template/dom_spec.rb +0 -8
  184. data/spec/arachni/element/link_template_spec.rb +2 -6
  185. data/spec/arachni/element/server_spec.rb +94 -8
  186. data/spec/arachni/element/xml_spec.rb +20 -0
  187. data/spec/arachni/framework/parts/audit_spec.rb +12 -14
  188. data/spec/arachni/framework/parts/browser_spec.rb +0 -171
  189. data/spec/arachni/framework/parts/platform_spec.rb +14 -8
  190. data/spec/arachni/framework/parts/report_spec.rb +1 -1
  191. data/spec/arachni/framework/parts/state_spec.rb +0 -9
  192. data/spec/arachni/http/client/dynamic_404_handlers_spec.rb +19 -0
  193. data/spec/arachni/http/client_spec.rb +169 -42
  194. data/spec/arachni/http/headers_spec.rb +18 -0
  195. data/spec/arachni/http/request_spec.rb +23 -0
  196. data/spec/arachni/issue_spec.rb +17 -6
  197. data/spec/arachni/page_spec.rb +22 -2
  198. data/spec/arachni/parser_spec.rb +5 -0
  199. data/spec/arachni/platform/manager_spec.rb +57 -25
  200. data/spec/arachni/reporter/manager_spec.rb +26 -0
  201. data/spec/arachni/rpc/server/active_options_spec.rb +9 -4
  202. data/spec/arachni/state/framework_spec.rb +2 -8
  203. data/spec/arachni/support/cache/least_recently_pushed_spec.rb +90 -0
  204. data/spec/arachni/support/cache/least_recently_used_spec.rb +5 -13
  205. data/spec/arachni/support/database/queue_spec.rb +7 -0
  206. data/spec/arachni/support/mixins/observable_spec.rb +15 -1
  207. data/spec/arachni/trainer_spec.rb +2 -2
  208. data/spec/components/checks/active/code_injection_timing_spec.rb +1 -1
  209. data/spec/components/checks/active/file_inclusion_spec.rb +6 -6
  210. data/spec/components/checks/active/path_traversal_spec.rb +2 -2
  211. data/spec/components/checks/active/source_code_disclosure_spec.rb +2 -2
  212. data/spec/components/checks/active/unvalidated_redirect_spec.rb +6 -6
  213. data/spec/components/checks/active/xss_dom_inputs_spec.rb +3 -5
  214. data/spec/components/checks/active/xss_dom_script_context_spec.rb +1 -1
  215. data/spec/components/checks/active/xss_spec.rb +5 -5
  216. data/spec/components/checks/passive/common_admin_interfaces_spec.rb +15 -0
  217. data/spec/components/checks/passive/interesting_responses_spec.rb +14 -1
  218. data/spec/components/fingerprinters/frameworks/aspx_mvc_spec.rb +31 -0
  219. data/spec/components/fingerprinters/frameworks/cakephp_spec.rb +22 -0
  220. data/spec/components/fingerprinters/frameworks/cherrypy_spec.rb +28 -0
  221. data/spec/components/fingerprinters/frameworks/django_spec.rb +37 -0
  222. data/spec/components/fingerprinters/frameworks/jsf_spec.rb +27 -0
  223. data/spec/components/fingerprinters/frameworks/rack_spec.rb +11 -14
  224. data/spec/components/fingerprinters/frameworks/rails_spec.rb +53 -0
  225. data/spec/components/fingerprinters/languages/asp_spec.rb +7 -9
  226. data/spec/components/fingerprinters/languages/aspx_spec.rb +10 -24
  227. data/spec/components/fingerprinters/languages/java_spec.rb +88 -0
  228. data/spec/components/fingerprinters/languages/php_spec.rb +19 -12
  229. data/spec/components/fingerprinters/languages/python_spec.rb +22 -9
  230. data/spec/components/fingerprinters/languages/ruby.rb +6 -4
  231. data/spec/components/fingerprinters/os/bsd_spec.rb +6 -4
  232. data/spec/components/fingerprinters/os/linux_spec.rb +6 -4
  233. data/spec/components/fingerprinters/os/solaris_spec.rb +6 -4
  234. data/spec/components/fingerprinters/os/unix_spec.rb +6 -4
  235. data/spec/components/fingerprinters/os/windows_spec.rb +6 -4
  236. data/spec/components/fingerprinters/servers/apache_spec.rb +15 -4
  237. data/spec/components/fingerprinters/servers/gunicorn_spec.rb +28 -0
  238. data/spec/components/fingerprinters/servers/iis_spec.rb +6 -6
  239. data/spec/components/fingerprinters/servers/jetty_spec.rb +6 -6
  240. data/spec/components/fingerprinters/servers/nginx_spec.rb +6 -4
  241. data/spec/components/fingerprinters/servers/tomcat_spec.rb +15 -6
  242. data/spec/components/path_extractors/data_url_spec.rb +19 -0
  243. data/spec/components/plugins/autologin_spec.rb +23 -0
  244. data/spec/components/plugins/login_script_spec.rb +112 -24
  245. data/spec/components/plugins/restrict_to_dom_state_spec.rb +16 -0
  246. data/spec/components/plugins/vector_feed_spec.rb +39 -1
  247. data/spec/support/factories/page/dom.rb +9 -4
  248. data/spec/support/factories/page/dom/transition.rb +31 -9
  249. data/spec/support/factories/scan_report.rb +8 -6
  250. data/spec/support/fixtures/empty/placeholder +0 -0
  251. data/spec/support/fixtures/report.afr +0 -0
  252. data/spec/support/fixtures/reporters/manager_spec/error.rb +18 -0
  253. data/spec/support/servers/arachni/browser.rb +117 -11
  254. data/spec/support/servers/arachni/browser/javascript/dom_monitor.rb +148 -4
  255. data/spec/support/servers/arachni/check/auditor.rb +4 -0
  256. data/spec/support/servers/arachni/element/cookie/cookie_dom.rb +1 -1
  257. data/spec/support/servers/arachni/http/client.rb +5 -0
  258. data/spec/support/servers/arachni/http/client/dynamic_404_handler.rb +13 -0
  259. data/spec/support/servers/checks/active/code_injection_timing.rb +1 -1
  260. data/spec/support/servers/checks/active/file_inclusion.rb +2 -2
  261. data/spec/support/servers/checks/active/path_traversal.rb +2 -2
  262. data/spec/support/servers/checks/active/source_code_disclosure.rb +40 -33
  263. data/spec/support/servers/checks/active/trainer_check.rb +9 -10
  264. data/spec/support/servers/checks/active/unvalidated_redirect_dom.rb +7 -4
  265. data/spec/support/servers/checks/active/xss.rb +35 -0
  266. data/spec/support/servers/checks/active/xss_dom.rb +1 -1
  267. data/spec/support/servers/checks/active/xss_dom_inputs.rb +24 -0
  268. data/spec/support/servers/checks/active/xss_dom_script_context.rb +1 -1
  269. data/spec/support/servers/checks/passive/common_admin_interfaces.rb +6 -0
  270. data/spec/support/servers/plugins/autologin.rb +9 -0
  271. data/spec/support/servers/plugins/restrict_to_dom_state.rb +4 -0
  272. data/spec/support/shared/element/base.rb +42 -0
  273. data/spec/support/shared/element/capabilities/auditable.rb +4 -4
  274. data/spec/support/shared/element/capabilities/auditable/dom.rb +26 -0
  275. data/spec/support/shared/element/capabilities/inputtable.rb +16 -11
  276. data/spec/support/shared/element/capabilities/submitable.rb +7 -2
  277. data/spec/support/shared/fingerprinter.rb +8 -0
  278. data/spec/support/shared/path_extractor.rb +1 -1
  279. data/ui/cli/framework.rb +3 -3
  280. data/ui/cli/framework/option_parser.rb +9 -0
  281. data/ui/cli/output.rb +9 -0
  282. data/ui/cli/reporter.rb +5 -2
  283. data/ui/cli/utilities.rb +4 -2
  284. metadata +76 -17
  285. data/lib/arachni/http/proxy_server/ssl-interceptor-cert.pem +0 -34
  286. data/lib/arachni/http/proxy_server/ssl-interceptor-pkey.pem +0 -51
  287. data/spec/components/fingerprinters/languages/jsp_spec.rb +0 -56
@@ -0,0 +1,49 @@
1
+ .admin
2
+ .adm
3
+ adm
4
+ admin
5
+ admin-login
6
+ admin.asp
7
+ admin.aspx
8
+ admin.cfm
9
+ admin.cgi
10
+ admin.do
11
+ admin.htm
12
+ admin.html
13
+ admin.jsp
14
+ admin.php
15
+ admin.php3
16
+ admin2
17
+ admin_
18
+ admin_login
19
+ admin_logon
20
+ administracion
21
+ administrador
22
+ administrateur
23
+ administration
24
+ administrator
25
+ administrator
26
+ administrator-login
27
+ adminlogon
28
+ authadmin
29
+ console
30
+ fpadmin
31
+ iisadmin
32
+ manage
33
+ manager
34
+ operador
35
+ operator
36
+ ops
37
+ phpmyadmin
38
+ portal
39
+ siteadmin
40
+ staff
41
+ user
42
+ users
43
+ usuario
44
+ usuarios
45
+ vpn
46
+ webadmin
47
+ wp-admin/install.php
48
+ wp-admin/setup-config.php
49
+ ~admin
@@ -4,7 +4,6 @@ cgi-bin
4
4
  cgi-sys
5
5
  mailman
6
6
  iishelp
7
- iisadmin
8
7
  uploader
9
8
  uploads
10
9
  tsweb
@@ -28,14 +27,9 @@ feedback
28
27
  global
29
28
  globals
30
29
  guestbook
31
- admin_
32
- admin_login
33
- admin_logon
34
- adminlogon
35
30
  client
36
31
  clients
37
32
  cmd
38
- INSTALL_admin
39
33
  incomming
40
34
  upload
41
35
  backend
@@ -57,9 +51,6 @@ pics
57
51
  _logs
58
52
  _errors
59
53
  _tests
60
- .adm
61
- .admin
62
- ~admin
63
54
  secret
64
55
  owa
65
56
  db2
@@ -121,7 +112,6 @@ bug
121
112
  bugs
122
113
  buy
123
114
  auth
124
- authadmin
125
115
  import
126
116
  apps
127
117
  application
@@ -184,11 +174,8 @@ install
184
174
  installer
185
175
  shop
186
176
  private
187
- fpadmin
188
- administrator
189
177
  intranet
190
178
  inventory
191
- webadmin
192
179
  employees
193
180
  accounting
194
181
  tree
@@ -212,7 +199,6 @@ jrun
212
199
  job
213
200
  zipfiles
214
201
  pw
215
- admin
216
202
  new
217
203
  adm
218
204
  oracle
@@ -241,7 +227,6 @@ stats
241
227
  sitestats
242
228
  www
243
229
  errors
244
- siteadmin
245
230
  backups
246
231
  testing
247
232
  internal
@@ -258,7 +243,6 @@ network
258
243
  xamp
259
244
  xampp
260
245
  lamp
261
- phpmyadmin
262
246
  AD
263
247
  AE
264
248
  AF
@@ -25,11 +25,12 @@ class Arachni::Checks::CommonFiles < Arachni::Check::Base
25
25
 
26
26
  def self.info
27
27
  {
28
- name: 'Common files',
29
- description: %q{Tries to find common sensitive files on the server.},
30
- elements: [ Element::Server ],
31
- author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com> ',
32
- version: '0.2.3',
28
+ name: 'Common files',
29
+ description: %q{Tries to find common sensitive files on the server.},
30
+ elements: [ Element::Server ],
31
+ author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com> ',
32
+ version: '0.2.4',
33
+ exempt_platforms: Arachni::Platform::Manager::FRAMEWORKS,
33
34
 
34
35
  issue: {
35
36
  name: %q{Common sensitive file},
@@ -14,8 +14,6 @@ _mmDBScripts/MMHTTPDB.php
14
14
  _mmDBScripts/MMHTTPDB.asp
15
15
  config/database.yml
16
16
  install.php
17
- wp-admin/install.php
18
- wp-admin/setup-config.php
19
17
  config.php
20
18
  php.ini
21
19
  error_log
@@ -76,11 +76,12 @@ class Arachni::Checks::DirectoryListing < Arachni::Check::Base
76
76
 
77
77
  def self.info
78
78
  {
79
- name: 'Directory listing',
80
- description: %q{Tries to force directory listings.},
81
- elements: [ Element::Server ],
82
- author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>',
83
- version: '0.1.5',
79
+ name: 'Directory listing',
80
+ description: %q{Tries to force directory listings.},
81
+ elements: [ Element::Server ],
82
+ author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>',
83
+ version: '0.1.6',
84
+ exempt_platforms: Arachni::Platform::Manager::FRAMEWORKS,
84
85
 
85
86
  issue: {
86
87
  name: %q{Directory listing},
@@ -98,7 +99,6 @@ application is structured.
98
99
  Arachni discovered that the affected page permits directory listing.
99
100
  },
100
101
  references: {
101
- 'CWE' => 'http://cwe.mitre.org/data/definitions/548.html',
102
102
  'WASC' => 'http://projects.webappsec.org/w/page/13246922/Directory%20Indexing'
103
103
  },
104
104
  tags: %w(path directory listing index),
@@ -7,7 +7,7 @@
7
7
  =end
8
8
 
9
9
  # @author Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
10
- # @version 0.1.1
10
+ # @version 0.1.2
11
11
  class Arachni::Checks::CookieSetForParentDomain < Arachni::Check::Base
12
12
 
13
13
  def run
@@ -16,7 +16,7 @@ class Arachni::Checks::CookieSetForParentDomain < Arachni::Check::Base
16
16
  page.parser.cookies.each do |cookie|
17
17
  next if !cookie.domain.start_with?( '.' ) || audited?( cookie.name )
18
18
 
19
- log( vector: cookie )
19
+ log( vector: cookie, proof: cookie.domain )
20
20
  audited( cookie.name )
21
21
  end
22
22
  end
@@ -27,7 +27,7 @@ class Arachni::Checks::CookieSetForParentDomain < Arachni::Check::Base
27
27
  description: %q{Logs cookies that are accessible by all subdomains.},
28
28
  elements: [ Element::Cookie ],
29
29
  author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>',
30
- version: '0.1.1',
30
+ version: '0.1.2',
31
31
 
32
32
  issue: {
33
33
  name: %q{Cookie set for parent domain},
@@ -7,7 +7,7 @@
7
7
  =end
8
8
 
9
9
  # @author Tasos Laskos <tasos.laskos@arachni-scanner.com>
10
- # @version 0.1
10
+ # @version 0.1.1
11
11
  class Arachni::Checks::Hsts < Arachni::Check::Base
12
12
 
13
13
  def run
@@ -17,7 +17,10 @@ class Arachni::Checks::Hsts < Arachni::Check::Base
17
17
 
18
18
  audited( page.parsed_url.host )
19
19
 
20
- log( vector: Element::Server.new( page.url ) )
20
+ log(
21
+ vector: Element::Server.new( page.url ),
22
+ proof: page.response.headers_string
23
+ )
21
24
  end
22
25
 
23
26
  def self.info
@@ -25,7 +28,7 @@ class Arachni::Checks::Hsts < Arachni::Check::Base
25
28
  name: 'HTTP Strict Transport Security',
26
29
  description: %q{Checks HTTPS pages for missing `Strict-Transport-Security` headers.},
27
30
  author: 'Tasos Laskos <tasos.laskos@arachni-scanner.com>',
28
- version: '0.1',
31
+ version: '0.1.1',
29
32
  elements: [ Element::Server ],
30
33
 
31
34
  issue: {
@@ -9,14 +9,14 @@
9
9
  # Logs cookies that are accessible via JavaScript.
10
10
  #
11
11
  # @author Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>
12
- # @version 0.1.2
12
+ # @version 0.1.3
13
13
  class Arachni::Checks::HttpOnlyCookies < Arachni::Check::Base
14
14
 
15
15
  def run
16
16
  page.cookies.each do |cookie|
17
17
  next if cookie.http_only? || audited?( cookie.name )
18
18
 
19
- log( vector: cookie )
19
+ log( vector: cookie, proof: cookie.source )
20
20
  audited( cookie.name )
21
21
  end
22
22
  end
@@ -27,7 +27,7 @@ class Arachni::Checks::HttpOnlyCookies < Arachni::Check::Base
27
27
  description: %q{Logs cookies that are accessible via JavaScript.},
28
28
  elements: [ Element::Cookie ],
29
29
  author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>',
30
- version: '0.1.2',
30
+ version: '0.1.3',
31
31
 
32
32
  issue: {
33
33
  name: %q{HttpOnly cookie},
@@ -15,7 +15,7 @@ class Arachni::Checks::InsecureCookies < Arachni::Check::Base
15
15
  page.cookies.each do |cookie|
16
16
  next if cookie.secure? || audited?( cookie.name )
17
17
 
18
- log( vector: cookie )
18
+ log( vector: cookie, proof: cookie.source )
19
19
  audited( cookie.name )
20
20
  end
21
21
  end
@@ -29,7 +29,7 @@ Logs cookies that are served over an encrypted channel but without having the
29
29
  },
30
30
  elements: [ Element::Cookie ],
31
31
  author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>',
32
- version: '0.1.2',
32
+ version: '0.1.3',
33
33
 
34
34
  issue: {
35
35
  name: %q{Insecure cookie},
@@ -7,16 +7,18 @@
7
7
  =end
8
8
 
9
9
  # @author Tasos Laskos <tasos.laskos@arachni-scanner.com>
10
- # @version 0.1
10
+ # @version 0.1.1
11
11
  class Arachni::Checks::InsecureCORSPolicy < Arachni::Check::Base
12
12
 
13
13
  def run
14
14
  return if audited?( page.parsed_url.host ) ||
15
15
  page.response.headers['Access-Control-Allow-Origin'] != '*'
16
-
17
16
  audited( page.parsed_url.host )
18
17
 
19
- log( vector: Element::Server.new( page.url ) )
18
+ log(
19
+ vector: Element::Server.new( page.url ),
20
+ proof: page.response.headers_string[/Access-Control-Allow-Origin.*$/i]
21
+ )
20
22
  end
21
23
 
22
24
  def self.info
@@ -24,7 +26,7 @@ class Arachni::Checks::InsecureCORSPolicy < Arachni::Check::Base
24
26
  name: 'Insecure CORS policy',
25
27
  description: %q{Checks the host for a wildcard (`*`) `Access-Control-Allow-Origin` header.},
26
28
  author: 'Tasos Laskos <tasos.laskos@arachni-scanner.com>',
27
- version: '0.1',
29
+ version: '0.1.1',
28
30
  elements: [ Element::Server ],
29
31
 
30
32
  issue: {
@@ -7,16 +7,18 @@
7
7
  =end
8
8
 
9
9
  # @author Tasos Laskos <tasos.laskos@arachni-scanner.com>
10
- # @version 0.1
10
+ # @version 0.1.1
11
11
  class Arachni::Checks::XFrameOptions < Arachni::Check::Base
12
12
 
13
13
  def run
14
14
  return if audited?( page.parsed_url.host ) ||
15
15
  page.response.headers['X-Frame-Options']
16
-
17
16
  audited( page.parsed_url.host )
18
17
 
19
- log( vector: Element::Server.new( page.url ) )
18
+ log(
19
+ vector: Element::Server.new( page.url ),
20
+ proof: page.response.headers_string
21
+ )
20
22
  end
21
23
 
22
24
  def self.info
@@ -24,7 +26,7 @@ class Arachni::Checks::XFrameOptions < Arachni::Check::Base
24
26
  name: 'Missing X-Frame-Options header',
25
27
  description: %q{Checks the host for a missing `X-Frame-Options` header.},
26
28
  author: 'Tasos Laskos <tasos.laskos@arachni-scanner.com>',
27
- version: '0.1',
29
+ version: '0.1.1',
28
30
  elements: [ Element::Server ],
29
31
 
30
32
  issue: {
@@ -20,7 +20,11 @@ class Arachni::Checks::HtaccessLimit < Arachni::Check::Base
20
20
  def check_and_log( response )
21
21
  return if response.code != 200
22
22
 
23
- log vector: Element::Server.new( response.url ), response: response
23
+ log(
24
+ vector: Element::Server.new( response.url ),
25
+ response: response,
26
+ proof: response.status_line
27
+ )
24
28
  print_ok "Request was accepted: #{response.url}"
25
29
  end
26
30
 
@@ -31,7 +35,7 @@ class Arachni::Checks::HtaccessLimit < Arachni::Check::Base
31
35
  GET requests but allows POST.},
32
36
  elements: [ Element::Server ],
33
37
  author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>',
34
- version: '0.1.6',
38
+ version: '0.1.7',
35
39
 
36
40
  issue: {
37
41
  name: %q{Misconfiguration in LIMIT directive of .htaccess file},
@@ -28,7 +28,7 @@ class Arachni::Checks::HttpPut < Arachni::Check::Base
28
28
  next if res.code != 201
29
29
 
30
30
  http.get( path ) do |c_res|
31
- check_and_log( c_res )
31
+ check_and_log( c_res, res )
32
32
 
33
33
  # Try to DELETE the PUT file.
34
34
  http.request( path, method: :delete ){}
@@ -36,10 +36,14 @@ class Arachni::Checks::HttpPut < Arachni::Check::Base
36
36
  end
37
37
  end
38
38
 
39
- def check_and_log( response )
39
+ def check_and_log( response, put_response )
40
40
  return if !response.body.to_s.include?( self.class.substring )
41
41
 
42
- log vector: Element::Server.new( response.url ), response: response
42
+ log(
43
+ vector: Element::Server.new( response.url ),
44
+ response: put_response,
45
+ proof: put_response.status_line
46
+ )
43
47
  print_ok "File has been created: #{response.url}"
44
48
  end
45
49
 
@@ -49,7 +53,7 @@ class Arachni::Checks::HttpPut < Arachni::Check::Base
49
53
  description: %q{Checks if uploading files is possible using the HTTP PUT method.},
50
54
  elements: [ Element::Server ],
51
55
  author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>',
52
- version: '0.2.1',
56
+ version: '0.2.2',
53
57
 
54
58
  issue: {
55
59
  name: %q{Publicly writable directory},
@@ -34,7 +34,8 @@ class Arachni::Checks::InterestingResponses < Arachni::Check::Base
34
34
 
35
35
  def check_and_log( response )
36
36
  return if IGNORE_CODES.include?( response.code ) ||
37
- response.body.to_s.empty? || issue_limit_reached?
37
+ response.body.to_s.empty? || issue_limit_reached? ||
38
+ response.scope.out?
38
39
 
39
40
  path = uri_parse( response.url ).path
40
41
 
@@ -57,7 +58,7 @@ class Arachni::Checks::InterestingResponses < Arachni::Check::Base
57
58
  description: %q{Logs all non 200 (OK) server responses.},
58
59
  elements: [ Element::Server ],
59
60
  author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>',
60
- version: '0.2',
61
+ version: '0.2.1',
61
62
 
62
63
  issue: {
63
64
  name: %q{Interesting response},
@@ -31,7 +31,11 @@ class Arachni::Checks::LocalstartAsp < Arachni::Check::Base
31
31
  def check_and_log( response )
32
32
  return if response.code != 401
33
33
 
34
- log vector: Element::Server.new( response.url ), response: response
34
+ log(
35
+ vector: Element::Server.new( response.url ),
36
+ response: response,
37
+ proof: response.status_line
38
+ )
35
39
  end
36
40
 
37
41
  def self.info
@@ -40,7 +44,7 @@ class Arachni::Checks::LocalstartAsp < Arachni::Check::Base
40
44
  description: %q{Checks for localstart.asp.},
41
45
  elements: [ Element::Server ],
42
46
  author: 'Tasos "Zapotek" Laskos <tasos.laskos@arachni-scanner.com>',
43
- version: '0.1.2',
47
+ version: '0.1.3',
44
48
 
45
49
  issue: {
46
50
  name: %q{Exposed localstart.asp page},
@@ -34,7 +34,11 @@ class Arachni::Checks::OriginSpoofAccessRestrictionBypass < Arachni::Check::Base
34
34
  def check_and_log( response )
35
35
  return if response.code != 200
36
36
 
37
- log vector: Element::Server.new( response.url ), response: response
37
+ log(
38
+ vector: Element::Server.new( response.url ),
39
+ response: response,
40
+ proof: response.status_line
41
+ )
38
42
  print_ok "Request was accepted: #{response.url}"
39
43
  end
40
44