wg-metasploit_data_models 4.1.4.01 → 4.1.4.02

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 (440) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -0
  3. data/.github/workflows/verify.yml +68 -0
  4. data/.gitignore +29 -0
  5. data/.rspec +3 -0
  6. data/.simplecov +38 -0
  7. data/.yardopts +4 -0
  8. data/CHANGELOG.md +6 -0
  9. data/CONTRIBUTING.md +133 -0
  10. data/Gemfile +46 -0
  11. data/LICENSE +27 -0
  12. data/README.md +65 -0
  13. data/RELEASING.md +82 -0
  14. data/Rakefile +72 -0
  15. data/UPGRADING.md +1 -0
  16. data/app/models/mdm/api_key.rb +61 -0
  17. data/app/models/mdm/async_callback.rb +64 -0
  18. data/app/models/mdm/client.rb +50 -0
  19. data/app/models/mdm/cred.rb +205 -0
  20. data/app/models/mdm/event.rb +83 -0
  21. data/app/models/mdm/exploit_attempt.rb +105 -0
  22. data/app/models/mdm/exploited_host.rb +42 -0
  23. data/app/models/mdm/host.rb +619 -0
  24. data/app/models/mdm/host_detail.rb +62 -0
  25. data/app/models/mdm/host_tag.rb +49 -0
  26. data/app/models/mdm/listener.rb +82 -0
  27. data/app/models/mdm/loot.rb +161 -0
  28. data/app/models/mdm/macro.rb +62 -0
  29. data/app/models/mdm/mod_ref.rb +24 -0
  30. data/app/models/mdm/module/action.rb +33 -0
  31. data/app/models/mdm/module/arch.rb +28 -0
  32. data/app/models/mdm/module/author.rb +34 -0
  33. data/app/models/mdm/module/detail.rb +388 -0
  34. data/app/models/mdm/module/mixin.rb +31 -0
  35. data/app/models/mdm/module/platform.rb +29 -0
  36. data/app/models/mdm/module/ref.rb +42 -0
  37. data/app/models/mdm/module/target.rb +37 -0
  38. data/app/models/mdm/nexpose_console.rb +121 -0
  39. data/app/models/mdm/note.rb +125 -0
  40. data/app/models/mdm/payload.rb +103 -0
  41. data/app/models/mdm/profile.rb +45 -0
  42. data/app/models/mdm/ref.rb +48 -0
  43. data/app/models/mdm/route.rb +28 -0
  44. data/app/models/mdm/service.rb +267 -0
  45. data/app/models/mdm/session.rb +203 -0
  46. data/app/models/mdm/session_event.rb +44 -0
  47. data/app/models/mdm/tag.rb +114 -0
  48. data/app/models/mdm/task.rb +168 -0
  49. data/app/models/mdm/task_cred.rb +45 -0
  50. data/app/models/mdm/task_host.rb +41 -0
  51. data/app/models/mdm/task_service.rb +41 -0
  52. data/app/models/mdm/task_session.rb +41 -0
  53. data/app/models/mdm/user.rb +230 -0
  54. data/app/models/mdm/vuln.rb +204 -0
  55. data/app/models/mdm/vuln_attempt.rb +76 -0
  56. data/app/models/mdm/vuln_detail.rb +156 -0
  57. data/app/models/mdm/vuln_ref.rb +21 -0
  58. data/app/models/mdm/web_form.rb +53 -0
  59. data/app/models/mdm/web_page.rb +92 -0
  60. data/app/models/mdm/web_site.rb +113 -0
  61. data/app/models/mdm/web_vuln.rb +193 -0
  62. data/app/models/mdm/wmap_request.rb +101 -0
  63. data/app/models/mdm/wmap_target.rb +56 -0
  64. data/app/models/mdm/workspace.rb +286 -0
  65. data/app/models/metasploit_data_models/automatic_exploitation/match.rb +43 -0
  66. data/app/models/metasploit_data_models/automatic_exploitation/match_result.rb +71 -0
  67. data/app/models/metasploit_data_models/automatic_exploitation/match_set.rb +40 -0
  68. data/app/models/metasploit_data_models/automatic_exploitation/run.rb +29 -0
  69. data/app/models/metasploit_data_models/ip_address/v4/cidr.rb +14 -0
  70. data/app/models/metasploit_data_models/ip_address/v4/nmap.rb +14 -0
  71. data/app/models/metasploit_data_models/ip_address/v4/range.rb +12 -0
  72. data/app/models/metasploit_data_models/ip_address/v4/segment/nmap/list.rb +125 -0
  73. data/app/models/metasploit_data_models/ip_address/v4/segment/nmap/range.rb +12 -0
  74. data/app/models/metasploit_data_models/ip_address/v4/segment/single.rb +123 -0
  75. data/app/models/metasploit_data_models/ip_address/v4/segmented.rb +200 -0
  76. data/app/models/metasploit_data_models/ip_address/v4/single.rb +53 -0
  77. data/app/models/metasploit_data_models/module_run.rb +213 -0
  78. data/app/models/metasploit_data_models/search/operation/ip_address.rb +60 -0
  79. data/app/models/metasploit_data_models/search/operation/port/number.rb +25 -0
  80. data/app/models/metasploit_data_models/search/operation/port/range.rb +79 -0
  81. data/app/models/metasploit_data_models/search/operation/range.rb +56 -0
  82. data/app/models/metasploit_data_models/search/operator/ip_address.rb +33 -0
  83. data/app/models/metasploit_data_models/search/operator/multitext.rb +73 -0
  84. data/app/models/metasploit_data_models/search/operator/port/list.rb +67 -0
  85. data/app/models/metasploit_data_models/search/visitor/attribute.rb +17 -0
  86. data/app/models/metasploit_data_models/search/visitor/includes.rb +47 -0
  87. data/app/models/metasploit_data_models/search/visitor/joins.rb +67 -0
  88. data/app/models/metasploit_data_models/search/visitor/method.rb +16 -0
  89. data/app/models/metasploit_data_models/search/visitor/relation.rb +91 -0
  90. data/app/models/metasploit_data_models/search/visitor/where.rb +128 -0
  91. data/config/initializers/arel_helper.rb +5 -0
  92. data/config/initializers/ipaddr.rb +29 -0
  93. data/config/locales/en.yml +94 -0
  94. data/console_db.yml +9 -0
  95. data/db/migrate/000_create_tables.rb +79 -0
  96. data/db/migrate/001_add_wmap_tables.rb +35 -0
  97. data/db/migrate/002_add_workspaces.rb +36 -0
  98. data/db/migrate/003_move_notes.rb +20 -0
  99. data/db/migrate/004_add_events_table.rb +16 -0
  100. data/db/migrate/005_expand_info.rb +58 -0
  101. data/db/migrate/006_add_timestamps.rb +26 -0
  102. data/db/migrate/007_add_loots.rb +20 -0
  103. data/db/migrate/008_create_users.rb +16 -0
  104. data/db/migrate/009_add_loots_ctype.rb +10 -0
  105. data/db/migrate/010_add_alert_fields.rb +16 -0
  106. data/db/migrate/011_add_reports.rb +19 -0
  107. data/db/migrate/012_add_tasks.rb +24 -0
  108. data/db/migrate/013_add_tasks_result.rb +10 -0
  109. data/db/migrate/014_add_loots_fields.rb +12 -0
  110. data/db/migrate/015_rename_user.rb +16 -0
  111. data/db/migrate/016_add_host_purpose.rb +10 -0
  112. data/db/migrate/017_expand_info2.rb +58 -0
  113. data/db/migrate/018_add_workspace_user_info.rb +29 -0
  114. data/db/migrate/019_add_workspace_desc.rb +23 -0
  115. data/db/migrate/020_add_user_preferences.rb +11 -0
  116. data/db/migrate/021_standardize_info_and_data.rb +18 -0
  117. data/db/migrate/022_enlarge_event_info.rb +10 -0
  118. data/db/migrate/023_add_report_downloaded_at.rb +10 -0
  119. data/db/migrate/024_convert_service_info_to_text.rb +12 -0
  120. data/db/migrate/025_add_user_admin.rb +19 -0
  121. data/db/migrate/026_add_creds_table.rb +19 -0
  122. data/db/migrate/20100819123300_migrate_cred_data.rb +154 -0
  123. data/db/migrate/20100824151500_add_exploited_table.rb +16 -0
  124. data/db/migrate/20100908001428_add_owner_to_workspaces.rb +9 -0
  125. data/db/migrate/20100911122000_add_report_templates.rb +18 -0
  126. data/db/migrate/20100916151530_require_admin_flag.rb +15 -0
  127. data/db/migrate/20100916175000_add_campaigns_and_templates.rb +61 -0
  128. data/db/migrate/20100920012100_add_generate_exe_column.rb +8 -0
  129. data/db/migrate/20100926214000_add_template_prefs.rb +11 -0
  130. data/db/migrate/20101001000000_add_web_tables.rb +57 -0
  131. data/db/migrate/20101002000000_add_query.rb +10 -0
  132. data/db/migrate/20101007000000_add_vuln_info.rb +15 -0
  133. data/db/migrate/20101008111800_add_clients_to_campaigns.rb +10 -0
  134. data/db/migrate/20101009023300_add_campaign_attachments.rb +15 -0
  135. data/db/migrate/20101104135100_add_imported_creds.rb +17 -0
  136. data/db/migrate/20101203000000_fix_web_tables.rb +34 -0
  137. data/db/migrate/20101203000001_expand_host_comment.rb +12 -0
  138. data/db/migrate/20101206212033_add_limit_to_network_to_workspaces.rb +9 -0
  139. data/db/migrate/20110112154300_add_module_uuid_to_tasks.rb +9 -0
  140. data/db/migrate/20110204112800_add_host_tags.rb +28 -0
  141. data/db/migrate/20110317144932_add_session_table.rb +110 -0
  142. data/db/migrate/20110414180600_add_local_id_to_session_table.rb +11 -0
  143. data/db/migrate/20110415175705_add_routes_table.rb +18 -0
  144. data/db/migrate/20110422000000_convert_binary.rb +73 -0
  145. data/db/migrate/20110425095900_add_last_seen_to_sessions.rb +8 -0
  146. data/db/migrate/20110513143900_track_successful_exploits.rb +31 -0
  147. data/db/migrate/20110517160800_rename_and_prune_nessus_vulns.rb +26 -0
  148. data/db/migrate/20110527000000_add_task_id_to_reports_table.rb +11 -0
  149. data/db/migrate/20110527000001_add_api_keys_table.rb +12 -0
  150. data/db/migrate/20110606000001_add_macros_table.rb +16 -0
  151. data/db/migrate/20110622000000_add_settings_to_tasks_table.rb +12 -0
  152. data/db/migrate/20110624000001_add_listeners_table.rb +19 -0
  153. data/db/migrate/20110625000001_add_macro_to_listeners_table.rb +12 -0
  154. data/db/migrate/20110630000001_add_nexpose_consoles_table.rb +21 -0
  155. data/db/migrate/20110630000002_add_name_to_nexpose_consoles_table.rb +12 -0
  156. data/db/migrate/20110717000001_add_profiles_table.rb +15 -0
  157. data/db/migrate/20110727163801_expand_cred_ptype_column.rb +9 -0
  158. data/db/migrate/20110730000001_add_initial_indexes.rb +85 -0
  159. data/db/migrate/20110812000001_prune_indexes.rb +23 -0
  160. data/db/migrate/20110922000000_expand_notes.rb +9 -0
  161. data/db/migrate/20110928101300_add_mod_ref_table.rb +17 -0
  162. data/db/migrate/20111011110000_add_display_name_to_reports_table.rb +24 -0
  163. data/db/migrate/20111203000000_inet_columns.rb +13 -0
  164. data/db/migrate/20111204000000_more_inet_columns.rb +17 -0
  165. data/db/migrate/20111210000000_add_scope_to_hosts.rb +9 -0
  166. data/db/migrate/20120126110000_add_virtual_host_to_hosts.rb +9 -0
  167. data/db/migrate/20120411173220_rename_workspace_members.rb +9 -0
  168. data/db/migrate/20120601152442_add_counter_caches_to_hosts.rb +21 -0
  169. data/db/migrate/20120625000000_add_vuln_details.rb +34 -0
  170. data/db/migrate/20120625000001_add_host_details.rb +16 -0
  171. data/db/migrate/20120625000002_expand_details.rb +16 -0
  172. data/db/migrate/20120625000003_expand_details2.rb +24 -0
  173. data/db/migrate/20120625000004_add_vuln_attempts.rb +19 -0
  174. data/db/migrate/20120625000005_add_vuln_and_host_counter_caches.rb +14 -0
  175. data/db/migrate/20120625000006_add_module_details.rb +118 -0
  176. data/db/migrate/20120625000007_add_exploit_attempts.rb +26 -0
  177. data/db/migrate/20120625000008_add_fail_message.rb +12 -0
  178. data/db/migrate/20120718202805_add_owner_and_payload_to_web_vulns.rb +13 -0
  179. data/db/migrate/20130228214900_change_required_columns_to_null_false_in_web_vulns.rb +19 -0
  180. data/db/migrate/20130412154159_change_foreign_key_in_module_actions.rb +25 -0
  181. data/db/migrate/20130412171844_change_foreign_key_in_module_archs.rb +25 -0
  182. data/db/migrate/20130412173121_change_foreign_key_in_module_authors.rb +25 -0
  183. data/db/migrate/20130412173640_change_foreign_key_in_module_mixins.rb +25 -0
  184. data/db/migrate/20130412174254_change_foreign_key_in_module_platforms.rb +25 -0
  185. data/db/migrate/20130412174719_change_foreign_key_in_module_refs.rb +25 -0
  186. data/db/migrate/20130412175040_change_foreign_key_in_module_targets.rb +25 -0
  187. data/db/migrate/20130423211152_add_creds_counter_cache.rb +24 -0
  188. data/db/migrate/20130430151353_change_required_columns_to_null_false_in_hosts.rb +11 -0
  189. data/db/migrate/20130430162145_enforce_address_uniqueness_in_workspace_in_hosts.rb +101 -0
  190. data/db/migrate/20130510021637_remove_campaigns.rb +11 -0
  191. data/db/migrate/20130515164311_change_web_vulns_confidence_to_integer.rb +48 -0
  192. data/db/migrate/20130515172727_valid_mdm_web_vuln_params.rb +30 -0
  193. data/db/migrate/20130516204810_making_vulns_refs_a_real_ar_model.rb +5 -0
  194. data/db/migrate/20130522001343_create_task_creds.rb +9 -0
  195. data/db/migrate/20130522032517_create_task_hosts.rb +9 -0
  196. data/db/migrate/20130522041110_create_task_services.rb +9 -0
  197. data/db/migrate/20130525015035_remove_campaign_id_from_clients.rb +9 -0
  198. data/db/migrate/20130525212420_drop_table_imported_creds.rb +14 -0
  199. data/db/migrate/20130531144949_making_host_tags_a_real_ar_model.rb +6 -0
  200. data/db/migrate/20130604145732_create_task_sessions.rb +9 -0
  201. data/db/migrate/20130717150737_remove_pname_validation.rb +7 -0
  202. data/db/migrate/20131002004641_create_automatic_exploitation_matches.rb +13 -0
  203. data/db/migrate/20131002164449_create_automatic_exploitation_match_sets.rb +12 -0
  204. data/db/migrate/20131008213344_create_automatic_exploitation_runs.rb +11 -0
  205. data/db/migrate/20131011184338_module_detail_on_automatic_exploitation_match.rb +10 -0
  206. data/db/migrate/20131017150735_create_automatic_exploitation_match_results.rb +11 -0
  207. data/db/migrate/20131021185657_make_match_polymorphic.rb +11 -0
  208. data/db/migrate/20140905031549_add_detected_arch_to_host.rb +5 -0
  209. data/db/migrate/20150112203945_remove_duplicate_services.rb +17 -0
  210. data/db/migrate/20150205192745_drop_service_uniqueness_index.rb +5 -0
  211. data/db/migrate/20150209195939_add_vuln_id_to_note.rb +6 -0
  212. data/db/migrate/20150212214222_remove_duplicate_services2.rb +17 -0
  213. data/db/migrate/20150219173821_create_module_runs.rb +23 -0
  214. data/db/migrate/20150219215039_add_module_run_to_session.rb +8 -0
  215. data/db/migrate/20150226151459_add_module_run_fk_to_loot.rb +8 -0
  216. data/db/migrate/20150312155312_add_module_full_name_to_match.rb +6 -0
  217. data/db/migrate/20150317145455_rename_module_indices.rb +29 -0
  218. data/db/migrate/20150326183742_add_missing_ae_indices.rb +13 -0
  219. data/db/migrate/20150421211719_rename_automatic_exploitation_index.rb +16 -0
  220. data/db/migrate/20150514182921_add_origin_to_mdm_vuln.rb +13 -0
  221. data/db/migrate/20160415153312_remove_not_null_from_web_vuln_p_arams.rb +5 -0
  222. data/db/migrate/20161004165612_add_fingerprinted_to_workspace.rb +5 -0
  223. data/db/migrate/20161227212223_add_os_family_to_hosts.rb +5 -0
  224. data/db/migrate/20180904120211_create_payloads.rb +21 -0
  225. data/db/migrate/20190308134512_create_async_callbacks.rb +13 -0
  226. data/db/migrate/20190507120211_remove_payload_workspaces.rb +5 -0
  227. data/lib/mdm/host/operating_system_normalization.rb +942 -0
  228. data/lib/mdm/module.rb +13 -0
  229. data/lib/mdm.rb +57 -0
  230. data/lib/metasploit_data_models/automatic_exploitation.rb +25 -0
  231. data/lib/metasploit_data_models/base64_serializer.rb +99 -0
  232. data/lib/metasploit_data_models/change_required_columns_to_null_false.rb +21 -0
  233. data/lib/metasploit_data_models/engine.rb +32 -0
  234. data/lib/metasploit_data_models/ip_address/cidr.rb +174 -0
  235. data/lib/metasploit_data_models/ip_address/range.rb +181 -0
  236. data/lib/metasploit_data_models/ip_address/v4/segment/nmap.rb +7 -0
  237. data/lib/metasploit_data_models/ip_address/v4/segment.rb +7 -0
  238. data/lib/metasploit_data_models/ip_address/v4.rb +11 -0
  239. data/lib/metasploit_data_models/ip_address.rb +9 -0
  240. data/lib/metasploit_data_models/match/child.rb +48 -0
  241. data/lib/metasploit_data_models/match/parent.rb +103 -0
  242. data/lib/metasploit_data_models/match.rb +8 -0
  243. data/lib/metasploit_data_models/search/operation/port.rb +9 -0
  244. data/lib/metasploit_data_models/search/operation.rb +9 -0
  245. data/lib/metasploit_data_models/search/operator/port.rb +6 -0
  246. data/lib/metasploit_data_models/search/operator.rb +8 -0
  247. data/lib/metasploit_data_models/search/visitor.rb +11 -0
  248. data/lib/metasploit_data_models/search.rb +8 -0
  249. data/lib/metasploit_data_models/serialized_prefs.rb +27 -0
  250. data/lib/metasploit_data_models/version.rb +13 -0
  251. data/lib/metasploit_data_models.rb +56 -0
  252. data/metasploit_data_models.gemspec +65 -0
  253. data/script/rails +8 -0
  254. data/spec/app/models/mdm/api_key_spec.rb +3 -0
  255. data/spec/app/models/mdm/client_spec.rb +43 -0
  256. data/spec/app/models/mdm/cred_spec.rb +346 -0
  257. data/spec/app/models/mdm/event_spec.rb +90 -0
  258. data/spec/app/models/mdm/exploit_attempt_spec.rb +59 -0
  259. data/spec/app/models/mdm/exploited_host_spec.rb +44 -0
  260. data/spec/app/models/mdm/host_detail_spec.rb +48 -0
  261. data/spec/app/models/mdm/host_spec.rb +1139 -0
  262. data/spec/app/models/mdm/host_tag_spec.rb +69 -0
  263. data/spec/app/models/mdm/listener_spec.rb +107 -0
  264. data/spec/app/models/mdm/loot_spec.rb +84 -0
  265. data/spec/app/models/mdm/macro_spec.rb +3 -0
  266. data/spec/app/models/mdm/mod_ref_spec.rb +3 -0
  267. data/spec/app/models/mdm/module/action_spec.rb +34 -0
  268. data/spec/app/models/mdm/module/arch_spec.rb +34 -0
  269. data/spec/app/models/mdm/module/author_spec.rb +52 -0
  270. data/spec/app/models/mdm/module/detail_spec.rb +746 -0
  271. data/spec/app/models/mdm/module/mixin_spec.rb +34 -0
  272. data/spec/app/models/mdm/module/platform_spec.rb +34 -0
  273. data/spec/app/models/mdm/module/ref_spec.rb +58 -0
  274. data/spec/app/models/mdm/module/target_spec.rb +36 -0
  275. data/spec/app/models/mdm/nexpose_console_spec.rb +146 -0
  276. data/spec/app/models/mdm/note_spec.rb +91 -0
  277. data/spec/app/models/mdm/profile_spec.rb +3 -0
  278. data/spec/app/models/mdm/ref_spec.rb +71 -0
  279. data/spec/app/models/mdm/route_spec.rb +35 -0
  280. data/spec/app/models/mdm/service_spec.rb +232 -0
  281. data/spec/app/models/mdm/session_event_spec.rb +42 -0
  282. data/spec/app/models/mdm/session_spec.rb +118 -0
  283. data/spec/app/models/mdm/tag_spec.rb +116 -0
  284. data/spec/app/models/mdm/task_cred_spec.rb +51 -0
  285. data/spec/app/models/mdm/task_host_spec.rb +50 -0
  286. data/spec/app/models/mdm/task_service_spec.rb +50 -0
  287. data/spec/app/models/mdm/task_session_spec.rb +46 -0
  288. data/spec/app/models/mdm/task_spec.rb +71 -0
  289. data/spec/app/models/mdm/user_spec.rb +50 -0
  290. data/spec/app/models/mdm/vuln_attempt_spec.rb +53 -0
  291. data/spec/app/models/mdm/vuln_detail_spec.rb +65 -0
  292. data/spec/app/models/mdm/vuln_ref_spec.rb +46 -0
  293. data/spec/app/models/mdm/vuln_spec.rb +299 -0
  294. data/spec/app/models/mdm/web_form_spec.rb +46 -0
  295. data/spec/app/models/mdm/web_page_spec.rb +101 -0
  296. data/spec/app/models/mdm/web_site_spec.rb +85 -0
  297. data/spec/app/models/mdm/web_vuln_spec.rb +312 -0
  298. data/spec/app/models/mdm/wmap_request_spec.rb +5 -0
  299. data/spec/app/models/mdm/wmap_target_spec.rb +5 -0
  300. data/spec/app/models/mdm/workspace_spec.rb +500 -0
  301. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_result_spec.rb +86 -0
  302. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_set_spec.rb +46 -0
  303. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_spec.rb +37 -0
  304. data/spec/app/models/metasploit_data_models/automatic_exploitation/run_spec.rb +38 -0
  305. data/spec/app/models/metasploit_data_models/ip_address/v4/cidr_spec.rb +119 -0
  306. data/spec/app/models/metasploit_data_models/ip_address/v4/nmap_spec.rb +149 -0
  307. data/spec/app/models/metasploit_data_models/ip_address/v4/range_spec.rb +298 -0
  308. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/list_spec.rb +276 -0
  309. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/range_spec.rb +302 -0
  310. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/segmented_spec.rb +27 -0
  311. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/single_spec.rb +324 -0
  312. data/spec/app/models/metasploit_data_models/ip_address/v4/single_spec.rb +181 -0
  313. data/spec/app/models/metasploit_data_models/module_run_spec.rb +134 -0
  314. data/spec/app/models/metasploit_data_models/search/operation/ip_address_spec.rb +180 -0
  315. data/spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb +39 -0
  316. data/spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb +138 -0
  317. data/spec/app/models/metasploit_data_models/search/operation/range_spec.rb +233 -0
  318. data/spec/app/models/metasploit_data_models/search/operator/ip_address_spec.rb +17 -0
  319. data/spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb +160 -0
  320. data/spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb +162 -0
  321. data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +96 -0
  322. data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +175 -0
  323. data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +396 -0
  324. data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +49 -0
  325. data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +925 -0
  326. data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +187 -0
  327. data/spec/dummy/Rakefile +7 -0
  328. data/spec/dummy/app/assets/config/manifest.js +1 -0
  329. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  330. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  331. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  332. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  333. data/spec/dummy/app/mailers/.gitkeep +0 -0
  334. data/spec/dummy/app/models/.gitkeep +0 -0
  335. data/spec/dummy/app/models/application_record.rb +3 -0
  336. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  337. data/spec/dummy/bin/bundle +3 -0
  338. data/spec/dummy/bin/rails +4 -0
  339. data/spec/dummy/bin/rake +4 -0
  340. data/spec/dummy/config/application.rb +61 -0
  341. data/spec/dummy/config/boot.rb +4 -0
  342. data/spec/dummy/config/database.yml.example +22 -0
  343. data/spec/dummy/config/database.yml.github_actions +21 -0
  344. data/spec/dummy/config/environment.rb +5 -0
  345. data/spec/dummy/config/environments/development.rb +37 -0
  346. data/spec/dummy/config/environments/production.rb +78 -0
  347. data/spec/dummy/config/environments/test.rb +39 -0
  348. data/spec/dummy/config/initializers/active_record_migrations.rb +4 -0
  349. data/spec/dummy/config/initializers/assets.rb +8 -0
  350. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  351. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  352. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  353. data/spec/dummy/config/initializers/inflections.rb +16 -0
  354. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  355. data/spec/dummy/config/initializers/session_store.rb +3 -0
  356. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  357. data/spec/dummy/config/locales/en.yml +23 -0
  358. data/spec/dummy/config/routes.rb +2 -0
  359. data/spec/dummy/config.ru +4 -0
  360. data/spec/dummy/db/structure.sql +3430 -0
  361. data/spec/dummy/db/structure.sql.from_rails_3 +3403 -0
  362. data/spec/dummy/lib/assets/.gitkeep +0 -0
  363. data/spec/dummy/log/.gitkeep +0 -0
  364. data/spec/dummy/public/404.html +26 -0
  365. data/spec/dummy/public/422.html +26 -0
  366. data/spec/dummy/public/500.html +25 -0
  367. data/spec/dummy/public/favicon.ico +0 -0
  368. data/spec/dummy/script/rails +6 -0
  369. data/spec/factories/mdm/addresses.rb +12 -0
  370. data/spec/factories/mdm/clients.rb +8 -0
  371. data/spec/factories/mdm/creds.rb +17 -0
  372. data/spec/factories/mdm/events.rb +15 -0
  373. data/spec/factories/mdm/exploit_attempts.rb +8 -0
  374. data/spec/factories/mdm/exploited_hosts.rb +7 -0
  375. data/spec/factories/mdm/fingerprints/nessus_fingerprints.rb +6 -0
  376. data/spec/factories/mdm/fingerprints/nexpose_fingerprints.rb +6 -0
  377. data/spec/factories/mdm/fingerprints/nmap_fingerprints.rb +6 -0
  378. data/spec/factories/mdm/fingerprints/retina_fingerprints.rb +6 -0
  379. data/spec/factories/mdm/fingerprints/session_fingerprints.rb +6 -0
  380. data/spec/factories/mdm/host_details.rb +8 -0
  381. data/spec/factories/mdm/host_tags.rb +9 -0
  382. data/spec/factories/mdm/hosts.rb +85 -0
  383. data/spec/factories/mdm/listeners.rb +12 -0
  384. data/spec/factories/mdm/loots.rb +11 -0
  385. data/spec/factories/mdm/module/actions.rb +14 -0
  386. data/spec/factories/mdm/module/archs.rb +14 -0
  387. data/spec/factories/mdm/module/authors.rb +22 -0
  388. data/spec/factories/mdm/module/details.rb +73 -0
  389. data/spec/factories/mdm/module/mixins.rb +14 -0
  390. data/spec/factories/mdm/module/platforms.rb +14 -0
  391. data/spec/factories/mdm/module/refs.rb +14 -0
  392. data/spec/factories/mdm/module/targets.rb +19 -0
  393. data/spec/factories/mdm/nexpose_consoles.rb +15 -0
  394. data/spec/factories/mdm/notes.rb +12 -0
  395. data/spec/factories/mdm/refs.rb +9 -0
  396. data/spec/factories/mdm/routes.rb +36 -0
  397. data/spec/factories/mdm/services.rb +41 -0
  398. data/spec/factories/mdm/session_events.rb +8 -0
  399. data/spec/factories/mdm/sessions.rb +13 -0
  400. data/spec/factories/mdm/tags.rb +14 -0
  401. data/spec/factories/mdm/task.rb +16 -0
  402. data/spec/factories/mdm/task_creds.rb +9 -0
  403. data/spec/factories/mdm/task_hosts.rb +9 -0
  404. data/spec/factories/mdm/task_services.rb +8 -0
  405. data/spec/factories/mdm/task_sessions.rb +8 -0
  406. data/spec/factories/mdm/users.rb +22 -0
  407. data/spec/factories/mdm/vuln_attempts.rb +8 -0
  408. data/spec/factories/mdm/vuln_details.rb +8 -0
  409. data/spec/factories/mdm/vuln_refs.rb +4 -0
  410. data/spec/factories/mdm/vulns.rb +20 -0
  411. data/spec/factories/mdm/web_forms.rb +33 -0
  412. data/spec/factories/mdm/web_pages.rb +64 -0
  413. data/spec/factories/mdm/web_sites.rb +8 -0
  414. data/spec/factories/mdm/web_vulns.rb +64 -0
  415. data/spec/factories/mdm/workspaces.rb +23 -0
  416. data/spec/factories/metasploit_data_models/automatic_exploitation/match_results.rb +7 -0
  417. data/spec/factories/metasploit_data_models/automatic_exploitation/match_sets.rb +8 -0
  418. data/spec/factories/metasploit_data_models/automatic_exploitation/matches.rb +7 -0
  419. data/spec/factories/metasploit_data_models/automatic_exploitation/runs.rb +6 -0
  420. data/spec/factories/module_runs.rb +40 -0
  421. data/spec/lib/base64_serializer_spec.rb +172 -0
  422. data/spec/lib/ipaddr_spec.rb +29 -0
  423. data/spec/lib/metasploit_data_models/ip_address/cidr_spec.rb +356 -0
  424. data/spec/lib/metasploit_data_models/ip_address/range_spec.rb +75 -0
  425. data/spec/lib/metasploit_data_models/match/child_spec.rb +59 -0
  426. data/spec/lib/metasploit_data_models/match/parent_spec.rb +153 -0
  427. data/spec/lib/metasploit_data_models_spec.rb +13 -0
  428. data/spec/spec_helper.rb +148 -0
  429. data/spec/support/matchers/match_regex_exactly.rb +28 -0
  430. data/spec/support/shared/contexts/rex/text.rb +15 -0
  431. data/spec/support/shared/examples/coerces_inet_column_type_to_string.rb +15 -0
  432. data/spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb +20 -0
  433. data/spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb +36 -0
  434. data/spec/support/shared/examples/metasploit_data_models/search/operation/ipaddress/match.rb +109 -0
  435. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_children.rb +38 -0
  436. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_metasploit_model_search_operation_base.rb +26 -0
  437. data/spec/support/shared/examples/metasploit_data_models/search/visitor/relation/visit/matching_record.rb +50 -0
  438. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb +34 -0
  439. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb +51 -0
  440. metadata +444 -6
@@ -0,0 +1,110 @@
1
+ class AddSessionTable < ActiveRecord::Migration[4.2]
2
+
3
+ class Event < ApplicationRecord
4
+ serialize :info
5
+ end
6
+
7
+ class SessionEvent < ApplicationRecord
8
+ belongs_to :session
9
+ end
10
+
11
+ class Session < ApplicationRecord
12
+ has_many :events, :class_name => 'AddSessionTable::SessionEvent'
13
+ serialize :datastore
14
+ end
15
+
16
+ def self.up
17
+
18
+ create_table :sessions do |t|
19
+ t.integer :host_id
20
+
21
+ t.string :stype # session type: meterpreter, shell, etc
22
+ t.string :via_exploit # module name
23
+ t.string :via_payload # payload name
24
+ t.string :desc # session description
25
+ t.integer :port
26
+ t.string :platform # platform type of the remote system
27
+ t.string :routes
28
+
29
+ t.text :datastore # module's datastore
30
+
31
+ t.timestamp :opened_at, :null => false
32
+ t.timestamp :closed_at
33
+
34
+ t.string :close_reason
35
+ end
36
+
37
+ create_table :session_events do |t|
38
+ t.integer :session_id
39
+
40
+ t.string :etype # event type: command, output, upload, download, filedelete
41
+ t.binary :command
42
+ t.binary :output
43
+ t.string :remote_path
44
+ t.string :local_path
45
+
46
+ t.timestamp :created_at
47
+ end
48
+
49
+ #
50
+ # Migrate session data from events table
51
+ #
52
+
53
+ close_events = Event.where(name: "session_close")
54
+ open_events = Event.where(name: "session_open")
55
+
56
+ command_events = Event.where(name: "session_command")
57
+ output_events = Event.where(name: "session_output")
58
+ upload_events = Event.where(name: "session_upload")
59
+ download_events = Event.where(name: "session_download")
60
+
61
+ open_events.each do |o|
62
+ c = close_events.find { |e| e.info[:session_uuid] == o.info[:session_uuid] }
63
+
64
+ s = Session.new(
65
+ :host_id => o.host_id,
66
+ :stype => o.info[:session_type],
67
+ :via_exploit => o.info[:via_exploit],
68
+ :via_payload => o.info[:via_payload],
69
+ :datastore => o.info[:datastore],
70
+ :opened_at => o.created_at
71
+ )
72
+
73
+ if c
74
+ s.closed_at = c.created_at
75
+ s.desc = c.info[:session_info]
76
+ else
77
+ # couldn't find the corresponding close event
78
+ s.closed_at = s.opened_at
79
+ s.desc = "?"
80
+ end
81
+
82
+ uuid = o.info[:session_uuid]
83
+
84
+ command_events.select { |e| e.info[:session_uuid] == uuid }.each do |e|
85
+ s.events.build(:created_at => e.created_at, :etype => "command", :command => e.info[:command] )
86
+ end
87
+
88
+ output_events.select { |e| e.info[:session_uuid] == uuid }.each do |e|
89
+ s.events.build(:created_at => e.created_at, :etype => "output", :output => e.info[:output] )
90
+ end
91
+
92
+ upload_events.select { |e| e.info[:session_uuid] == uuid }.each do |e|
93
+ s.events.build(:created_at => e.created_at, :etype => "upload", :local_path => e.info[:local_path], :remote_path => e.info[:remote_path] )
94
+ end
95
+
96
+ download_events.select { |e| e.info[:session_uuid] == uuid }.each do |e|
97
+ s.events.build(:created_at => e.created_at, :etype => "download", :local_path => e.info[:local_path], :remote_path => e.info[:remote_path] )
98
+ end
99
+
100
+ s.events.sort_by(&:created_at)
101
+
102
+ s.save!
103
+ end
104
+ end
105
+
106
+ def self.down
107
+ drop_table :sessions
108
+ drop_table :session_events
109
+ end
110
+ end
@@ -0,0 +1,11 @@
1
+ class AddLocalIdToSessionTable < ActiveRecord::Migration[4.2]
2
+
3
+ def self.up
4
+ add_column :sessions, :local_id, :integer
5
+ end
6
+
7
+ def self.down
8
+ remove_column :sessions, :local_id
9
+ end
10
+
11
+ end
@@ -0,0 +1,18 @@
1
+ class AddRoutesTable < ActiveRecord::Migration[4.2]
2
+
3
+ def self.up
4
+ create_table :routes do |t|
5
+ t.integer :session_id
6
+ t.string :subnet
7
+ t.string :netmask
8
+ end
9
+
10
+ remove_column :sessions, :routes
11
+ end
12
+
13
+ def self.down
14
+ drop_table :routes
15
+
16
+ add_column :sessions, :routes, :string
17
+ end
18
+ end
@@ -0,0 +1,73 @@
1
+ # -*- coding: binary -*-
2
+ class ConvertBinary < ActiveRecord::Migration[4.2]
3
+
4
+
5
+ class WebPage < ApplicationRecord
6
+ serialize :headers
7
+ end
8
+
9
+ class WebVuln < ApplicationRecord
10
+ serialize :params
11
+ end
12
+
13
+ def bfilter(str)
14
+ str = str.to_s
15
+ str.encoding = 'binary' if str.respond_to?('encoding=')
16
+ str.gsub(/[\x00\x7f-\xff]/, '')
17
+ end
18
+
19
+ def self.up
20
+ rename_column :web_pages, :body, :body_text
21
+ rename_column :web_pages, :request, :request_text
22
+ rename_column :web_vulns, :request, :request_text
23
+ rename_column :web_vulns, :proof, :proof_text
24
+
25
+ add_column :web_pages, :body, :binary
26
+ add_column :web_pages, :request, :binary
27
+ add_column :web_vulns, :request, :binary
28
+ add_column :web_vulns, :proof, :binary
29
+
30
+ WebPage.all.each { |r| r.body = r.body_text; r.save! }
31
+ WebPage.all.each { |r| r.request = r.request_text; r.save! }
32
+ WebVuln.all.each { |r| r.proof = r.proof_text; r.save! }
33
+ WebVuln.all.each { |r| r.request = r.request_text; r.save! }
34
+
35
+ remove_column :web_pages, :body_text
36
+ remove_column :web_pages, :request_text
37
+ remove_column :web_vulns, :request_text
38
+ remove_column :web_vulns, :proof_text
39
+
40
+ WebPage.connection.schema_cache.clear!
41
+ WebPage.reset_column_information
42
+ WebVuln.connection.schema_cache.clear!
43
+ WebVuln.reset_column_information
44
+ end
45
+
46
+ def self.down
47
+
48
+ rename_column :web_pages, :body, :body_binary
49
+ rename_column :web_pages, :request, :request_binary
50
+ rename_column :web_vulns, :request, :request_binary
51
+ rename_column :web_vulns, :proof, :proof_binary
52
+
53
+ add_column :web_pages, :body, :text
54
+ add_column :web_pages, :request, :text
55
+ add_column :web_vulns, :request, :text
56
+ add_column :web_vulns, :proof, :text
57
+
58
+ WebPage.all.each { |r| r.body = bfilter(r.body_binary); r.save! }
59
+ WebPage.all.each { |r| r.request = bfilter(r.request_binary); r.save! }
60
+ WebVuln.all.each { |r| r.proof = bfilter(r.proof_binary); r.save! }
61
+ WebVuln.all.each { |r| r.request = bfilter(r.request_binary); r.save! }
62
+
63
+ remove_column :web_pages, :body_binary
64
+ remove_column :web_pages, :request_binary
65
+ remove_column :web_vulns, :request_binary
66
+ remove_column :web_vulns, :proof_binary
67
+
68
+ WebPage.connection.schema_cache.clear!
69
+ WebPage.reset_column_information
70
+ WebVuln.connection.schema_cache.clear!
71
+ WebVuln.reset_column_information
72
+ end
73
+ end
@@ -0,0 +1,8 @@
1
+ class AddLastSeenToSessions < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+ add_column :sessions, :last_seen, :timestamp
4
+ end
5
+ def self.down
6
+ remove_column :sessions, :last_seen
7
+ end
8
+ end
@@ -0,0 +1,31 @@
1
+ class TrackSuccessfulExploits < ActiveRecord::Migration[4.2]
2
+
3
+
4
+ class ExploitedHost < ApplicationRecord
5
+ end
6
+
7
+ class Vuln < ApplicationRecord
8
+ end
9
+
10
+ def self.up
11
+ add_column :vulns, :exploited_at, :timestamp
12
+
13
+ # Migrate existing exploited_hosts entries
14
+
15
+ ExploitedHost.all.select {|x| x.name}.each do |exploited_host|
16
+ next unless(exploited_host.name =~ /^(exploit|auxiliary)\//)
17
+ vulns = Vuln.where(name: exploited_host.name, host_id: exploited_host.host_id)
18
+ next if vulns.empty?
19
+ vulns.each do |vuln|
20
+ vuln.exploited_at = exploited_host.updated_at
21
+ vuln.save
22
+ end
23
+ end
24
+
25
+ end
26
+
27
+ def self.down
28
+ remove_column :vulns, :exploited_at
29
+ end
30
+
31
+ end
@@ -0,0 +1,26 @@
1
+ class RenameAndPruneNessusVulns < ActiveRecord::Migration[4.2]
2
+
3
+ class Vuln < ApplicationRecord
4
+ end
5
+
6
+ # No table changes, just vuln renaming to drop the NSS id
7
+ # from those vulns that have it and a descriptive name.
8
+ def self.up
9
+ Vuln.all.each do |v|
10
+ if v.name =~ /^NSS-0?\s*$/
11
+ v.delete
12
+ next
13
+ end
14
+ next unless(v.name =~ /^NSS-[0-9]+\s(.+)/)
15
+ new_name = $1
16
+ next if(new_name.nil? || new_name.strip.empty?)
17
+ v.name = new_name
18
+ v.save!
19
+ end
20
+ end
21
+
22
+ def self.down
23
+ say "Cannot un-rename and un-prune NSS vulns for migration 20110517160800."
24
+ end
25
+
26
+ end
@@ -0,0 +1,11 @@
1
+ class AddTaskIdToReportsTable < ActiveRecord::Migration[4.2]
2
+
3
+ def self.up
4
+ add_column :reports, :task_id, :integer
5
+ end
6
+
7
+ def self.down
8
+ remove_column :reports, :task_id
9
+ end
10
+
11
+ end
@@ -0,0 +1,12 @@
1
+ class AddApiKeysTable < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+ create_table :api_keys do |t|
4
+ t.text :token
5
+ t.timestamps null: false
6
+ end
7
+ end
8
+ def self.down
9
+ drop_table :api_keys
10
+ end
11
+ end
12
+
@@ -0,0 +1,16 @@
1
+ class AddMacrosTable < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+ create_table :macros do |t|
4
+ t.timestamps null: false
5
+ t.text :owner
6
+ t.text :name
7
+ t.text :description
8
+ t.binary :actions
9
+ t.binary :prefs
10
+ end
11
+ end
12
+ def self.down
13
+ drop_table :macros
14
+ end
15
+ end
16
+
@@ -0,0 +1,12 @@
1
+ class AddSettingsToTasksTable < ActiveRecord::Migration[4.2]
2
+
3
+ def self.up
4
+ add_column :tasks, :settings, :binary
5
+ end
6
+
7
+ def self.down
8
+ remove_column :tasks, :settings
9
+ end
10
+
11
+ end
12
+
@@ -0,0 +1,19 @@
1
+ class AddListenersTable < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+ create_table :listeners do |t|
4
+ t.timestamps null: false
5
+ t.integer :workspace_id, :null => false, :default => 1
6
+ t.integer :task_id
7
+ t.boolean :enabled, :default => true
8
+ t.text :owner
9
+ t.text :payload
10
+ t.text :address
11
+ t.integer :port
12
+ t.binary :options
13
+ end
14
+ end
15
+ def self.down
16
+ drop_table :listeners
17
+ end
18
+ end
19
+
@@ -0,0 +1,12 @@
1
+ class AddMacroToListenersTable < ActiveRecord::Migration[4.2]
2
+
3
+ def self.up
4
+ add_column :listeners, :macro, :text
5
+ end
6
+
7
+ def self.down
8
+ remove_column :listeners, :macro
9
+ end
10
+
11
+ end
12
+
@@ -0,0 +1,21 @@
1
+ class AddNexposeConsolesTable < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+ create_table :nexpose_consoles do |t|
4
+ t.timestamps null: false
5
+ t.boolean :enabled, :default => true
6
+ t.text :owner
7
+ t.text :address
8
+ t.integer :port, :default => 3780
9
+ t.text :username
10
+ t.text :password
11
+ t.text :status
12
+ t.text :version
13
+ t.text :cert
14
+ t.binary :cached_sites
15
+ end
16
+ end
17
+ def self.down
18
+ drop_table :nexpose_consoles
19
+ end
20
+ end
21
+
@@ -0,0 +1,12 @@
1
+ class AddNameToNexposeConsolesTable < ActiveRecord::Migration[4.2]
2
+
3
+ def self.up
4
+ add_column :nexpose_consoles, :name, :text
5
+ end
6
+
7
+ def self.down
8
+ remove_column :nexpose_consoles, :name
9
+ end
10
+
11
+ end
12
+
@@ -0,0 +1,15 @@
1
+ class AddProfilesTable < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+ create_table :profiles do |t|
4
+ t.timestamps null: false
5
+ t.boolean :active, :default => true
6
+ t.text :name
7
+ t.text :owner
8
+ t.binary :settings
9
+ end
10
+ end
11
+ def self.down
12
+ drop_table :profiles
13
+ end
14
+ end
15
+
@@ -0,0 +1,9 @@
1
+ class ExpandCredPtypeColumn < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+ change_column :creds, :ptype, :string, :limit => 256
4
+ end
5
+ def self.down
6
+ change_column :creds, :ptype, :string, :limit => 16
7
+ end
8
+ end
9
+
@@ -0,0 +1,85 @@
1
+ class AddInitialIndexes < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+
4
+
5
+ add_index :hosts, :address
6
+ add_index :hosts, :address6
7
+ add_index :hosts, :name
8
+ add_index :hosts, :state
9
+ add_index :hosts, :os_name
10
+ add_index :hosts, :os_flavor
11
+ add_index :hosts, :purpose
12
+
13
+ # Removed (conditionally dropped in the next migration)
14
+ # add_index :hosts, :comments
15
+
16
+ add_index :services, :port
17
+ add_index :services, :proto
18
+ add_index :services, :state
19
+ add_index :services, :name
20
+
21
+ # Removed (conditionally dropped in the next migration)
22
+ # add_index :services, :info
23
+
24
+ add_index :notes, :ntype
25
+
26
+ add_index :vulns, :name
27
+
28
+ # Removed (conditionally dropped in the next migration)
29
+ # add_index :vulns, :info
30
+
31
+ add_index :refs, :name
32
+
33
+ add_index :web_sites, :vhost
34
+ add_index :web_sites, :comments
35
+ add_index :web_sites, :options
36
+
37
+ add_index :web_pages, :path
38
+ add_index :web_pages, :query
39
+
40
+ add_index :web_forms, :path
41
+
42
+ add_index :web_vulns, :path
43
+ add_index :web_vulns, :method
44
+ add_index :web_vulns, :name
45
+ end
46
+
47
+ def self.down
48
+
49
+ remove_index :hosts, :address
50
+ remove_index :hosts, :address6
51
+ remove_index :hosts, :name
52
+ remove_index :hosts, :state
53
+ remove_index :hosts, :os_name
54
+ remove_index :hosts, :os_flavor
55
+ remove_index :hosts, :purpose
56
+ remove_index :hosts, :comments
57
+
58
+ remove_index :services, :port
59
+ remove_index :services, :proto
60
+ remove_index :services, :state
61
+ remove_index :services, :name
62
+ remove_index :services, :info
63
+
64
+ remove_index :notes, :ntype
65
+
66
+ remove_index :vulns, :name
67
+ remove_index :vulns, :info
68
+
69
+ remove_index :refs, :name
70
+
71
+ remove_index :web_sites, :vhost
72
+ remove_index :web_sites, :comments
73
+ remove_index :web_sites, :options
74
+
75
+ remove_index :web_pages, :path
76
+ remove_index :web_pages, :query
77
+
78
+ remove_index :web_forms, :path
79
+
80
+ remove_index :web_vulns, :path
81
+ remove_index :web_vulns, :method
82
+ remove_index :web_vulns, :name
83
+ end
84
+ end
85
+
@@ -0,0 +1,23 @@
1
+ class PruneIndexes < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+
4
+ if indexes(:hosts).map{|x| x.columns }.flatten.include?("comments")
5
+ remove_index :hosts, :comments
6
+ end
7
+
8
+ if indexes(:services).map{|x| x.columns }.flatten.include?("info")
9
+ remove_index :services, :info
10
+ end
11
+
12
+ if indexes(:vulns).map{|x| x.columns }.flatten.include?("info")
13
+ remove_index :vulns, :info
14
+ end
15
+ end
16
+
17
+ def self.down
18
+ add_index :hosts, :comments
19
+ add_index :services, :info
20
+ add_index :vulns, :info
21
+ end
22
+ end
23
+
@@ -0,0 +1,9 @@
1
+ class ExpandNotes < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+ change_column :notes, :data, :text
4
+ end
5
+ def self.down
6
+ change_column :notes, :data, :string, :limit => 65536
7
+ end
8
+ end
9
+
@@ -0,0 +1,17 @@
1
+ # Probably temporary, a spot to stash module names and their associated refs
2
+ # Don't count on it being populated at any given moment.
3
+ class AddModRefTable < ActiveRecord::Migration[4.2]
4
+
5
+ def self.up
6
+ create_table :mod_refs do |t|
7
+ t.string :module, :limit => 1024
8
+ t.string :mtype, :limit => 128
9
+ t.text :ref
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :mod_refs
15
+ end
16
+
17
+ end
@@ -0,0 +1,24 @@
1
+ class AddDisplayNameToReportsTable < ActiveRecord::Migration[4.2]
2
+
3
+ class Report < ApplicationRecord
4
+ end
5
+
6
+ def self.up
7
+
8
+ add_column :reports, :name, :string, :limit => 63
9
+
10
+ # Migrate to have a default name.
11
+
12
+ Report.all.each do |report|
13
+ rtype = report.rtype.to_s =~ /^([A-Z0-9]+)\x2d/i ? $1 : "AUDIT"
14
+ default_name = rtype[0,57].downcase.capitalize + "-" + report.id.to_s[0,5]
15
+ report.name = default_name
16
+ report.save
17
+ end
18
+ end
19
+
20
+ def self.down
21
+ remove_column :reports, :name
22
+ end
23
+
24
+ end
@@ -0,0 +1,13 @@
1
+ class InetColumns < ActiveRecord::Migration[4.2]
2
+
3
+ def self.up
4
+ change_column :hosts, :address, 'INET using address::INET'
5
+ remove_column :hosts, :address6
6
+ end
7
+
8
+ def self.down
9
+ change_column :hosts, :address, :text
10
+ add_column :hosts, :address6, :text
11
+ end
12
+
13
+ end
@@ -0,0 +1,17 @@
1
+ class MoreInetColumns < ActiveRecord::Migration[4.2]
2
+
3
+ def self.up
4
+ change_column :wmap_requests, :address, 'INET using address::INET'
5
+ remove_column :wmap_requests, :address6
6
+ change_column :wmap_targets, :address, 'INET using address::INET'
7
+ remove_column :wmap_targets, :address6
8
+ end
9
+
10
+ def self.down
11
+ change_column :wmap_requests, :address, :string, :limit => 16
12
+ add_column :wmap_requests, :address6, :string, :limit => 255
13
+ change_column :wmap_targets, :address, :string, :limit => 16
14
+ add_column :wmap_targets, :address6, :string, :limit => 255
15
+ end
16
+
17
+ end
@@ -0,0 +1,9 @@
1
+ class AddScopeToHosts < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+ add_column :hosts, :scope, :text
4
+ end
5
+
6
+ def self.down
7
+ remove_column :hosts, :scope
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class AddVirtualHostToHosts < ActiveRecord::Migration[4.2]
2
+ def self.up
3
+ add_column :hosts, :virtual_host, :text
4
+ end
5
+
6
+ def self.down
7
+ remove_column :hosts, :viritual_host
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class RenameWorkspaceMembers < ActiveRecord::Migration[4.2]
2
+ def up
3
+ rename_table :project_members, :workspace_members
4
+ end
5
+
6
+ def down
7
+ rename_table :workspace_members, :project_members
8
+ end
9
+ end
@@ -0,0 +1,21 @@
1
+ class AddCounterCachesToHosts < ActiveRecord::Migration[4.2]
2
+
3
+ def self.up
4
+ add_column :hosts, :note_count, :integer, :default => 0
5
+ add_column :hosts, :vuln_count, :integer, :default => 0
6
+ add_column :hosts, :service_count, :integer, :default => 0
7
+
8
+ Mdm::Host.reset_column_information
9
+ Mdm::Host.all.each do |h|
10
+ Mdm::Host.reset_counters h.id, :notes
11
+ Mdm::Host.reset_counters h.id, :vulns
12
+ Mdm::Host.reset_counters h.id, :services
13
+ end
14
+ end
15
+
16
+ def self.down
17
+ remove_column :hosts, :note_count
18
+ remove_column :hosts, :vuln_count
19
+ remove_column :hosts, :service_count
20
+ end
21
+ end