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,64 @@
1
+ # An asychronous callback that has been received by the Mettle Pingback Listener and is logged
2
+ class Mdm::AsyncCallback < ApplicationRecord
3
+ extend ActiveSupport::Autoload
4
+
5
+ include Metasploit::Model::Search
6
+
7
+ #
8
+ # Associations
9
+ #
10
+
11
+
12
+ #
13
+ # Attributes
14
+ #
15
+
16
+ # @!attribute [rw] uuid
17
+ # A 16-byte unique identifier for this payload. The UUID is encoded to include specific information.
18
+ # See lib/msf/core/payload/uuid.rb in the https://github.com/rapid7/metasploit-framework repo.
19
+ #
20
+ # @return [String]
21
+
22
+ # @!attribute [rw] timestamp
23
+ # The Unix format timestamp when this payload called back.
24
+ #
25
+ # @return [Integer]
26
+
27
+ # @!attribute [rw] listener_uri
28
+ # Non-unique URIs (eg. "tcp://192.168.1.7:4444") which received callbacks from this payload.
29
+ #
30
+ # @return [String]
31
+
32
+ # @!attribute [rw] target_host
33
+ # The IP address (eg. "192.168.1.7" or "fe80::1") from which the callback originated, from the view of the callback listener.
34
+ #
35
+ # @return [String]
36
+
37
+ # @!attribute [rw] target_port
38
+ # The IP port (eg. "4444") from which the callback originated, from the view of the callback listener.
39
+ #
40
+ # @return [Integer]
41
+
42
+ #
43
+ # Validations
44
+ #
45
+
46
+
47
+ #
48
+ # Search Attributes
49
+ #
50
+
51
+ search_attribute :uuid,
52
+ type: :string
53
+
54
+ #
55
+ # Serializations
56
+ #
57
+
58
+ # NONE
59
+
60
+
61
+ public
62
+
63
+ Metasploit::Concern.run(self)
64
+ end
@@ -0,0 +1,50 @@
1
+ # Client used for `report_client` in metasploit-framework Metasploit Modules.
2
+ class Mdm::Client < ApplicationRecord
3
+ #
4
+ # Associations
5
+ #
6
+
7
+ # {Mdm::Host} from which this client connected.
8
+ belongs_to :host,
9
+ class_name: 'Mdm::Host',
10
+ inverse_of: :clients
11
+
12
+ #
13
+ # Attributes
14
+ #
15
+
16
+ # @!attribute created_at
17
+ # When this client was created.
18
+ #
19
+ # @return [DateTime]
20
+
21
+ # @!attribute updated_at
22
+ # When this client was last updated.
23
+ #
24
+ # @return [DateTime]
25
+
26
+ #
27
+ # @!group User Agent
28
+ #
29
+
30
+ # @!attribute ua_name
31
+ # Parsed name from {#ua_string user agent string}
32
+ #
33
+ # @return [String]
34
+
35
+ # @!attribute ua_string
36
+ # Raw user agent string from client browser
37
+ #
38
+ # @return [String]
39
+
40
+ # @!attribute ua_ver
41
+ # Version of user agent.
42
+ #
43
+ # @return [String]
44
+
45
+ #
46
+ # @!endgroup
47
+ #
48
+
49
+ Metasploit::Concern.run(self)
50
+ end
@@ -0,0 +1,205 @@
1
+ # @deprecated Use metasploit-credential's `Metasploit::Credential::Core`.
2
+ #
3
+ # A credential captured from a {#service}.
4
+ class Mdm::Cred < ApplicationRecord
5
+ #
6
+ # CONSTANTS
7
+ #
8
+
9
+ # Checks if {#proof} is an SSH Key in {#ssh_key_id}.
10
+ KEY_ID_REGEX = /([0-9a-fA-F:]{47})/
11
+
12
+ # Maps {#ptype_human} to {#ptype}.
13
+ PTYPES = {
14
+ 'read/write password' => 'password_rw',
15
+ 'read-only password' => 'password_ro',
16
+ 'SMB hash' => 'smb_hash',
17
+ 'SSH private key' => 'ssh_key',
18
+ 'SSH public key' => 'ssh_pubkey'
19
+ }
20
+
21
+ #
22
+ #
23
+ # Associations
24
+ #
25
+ #
26
+
27
+ # The {Mdm::Service} this Cred is for.
28
+ belongs_to :service,
29
+ class_name: 'Mdm::Service',
30
+ inverse_of: :creds
31
+
32
+ # Joins {#tasks} to this Cred.
33
+ has_many :task_creds,
34
+ class_name: 'Mdm::TaskCred',
35
+ dependent: :destroy,
36
+ inverse_of: :cred
37
+
38
+ #
39
+ # through: :task_creds
40
+ #
41
+
42
+ # Tasks that touched this service
43
+ has_many :tasks, :through => :task_creds
44
+
45
+ #
46
+ # Attributes
47
+ #
48
+
49
+ # @!attribute active
50
+ # Whether the credential is active.
51
+ #
52
+ # @return [false] if a captured credential cannot be used to log into {#service}.
53
+ # @return [true] otherwise
54
+
55
+ # @!attribute created_at
56
+ # When this credential was created.
57
+ #
58
+ # @return [DateTime]
59
+
60
+ # @!attribute pass
61
+ # Pass of credential.
62
+ #
63
+ # @return [String, nil]
64
+
65
+ # @!attribute proof
66
+ # Proof of credential capture.
67
+ #
68
+ # @return [String]
69
+
70
+ # @!attribute ptype
71
+ # Type of {#pass}.
72
+ #
73
+ # @return [String]
74
+
75
+ # @!attribute source_id
76
+ # Id of source of this credential.
77
+ #
78
+ # @return [Integer, nil]
79
+
80
+ # @!attribute source_type
81
+ # Type of source with {#source_id}.
82
+ #
83
+ # @return [String, nil]
84
+
85
+ # @!attribute updated_at
86
+ # The last time this credential was updated.
87
+ #
88
+ # @return [DateTime]
89
+
90
+ # @!attribute user
91
+ # User name of credential.
92
+ #
93
+ # @return [String, nil]
94
+
95
+ #
96
+ # Callbacks
97
+ #
98
+
99
+ after_create :increment_host_counter_cache
100
+ after_destroy :decrement_host_counter_cache
101
+
102
+ #
103
+ # Instance methods
104
+ #
105
+
106
+ # Humanized {#ptype}.
107
+ #
108
+ # @return [String, nil]
109
+ def ptype_human
110
+ humanized = PTYPES.select do |k, v|
111
+ v == ptype
112
+ end.keys[0]
113
+
114
+ humanized ? humanized : ptype
115
+ end
116
+
117
+ # Returns SSH Key ID.
118
+ #
119
+ # @return [String] SSH Key Id if ssh-type key and {#proof} matches {KEY_ID_REGEX}.
120
+ # @return [nil] otherwise
121
+ def ssh_key_id
122
+ return nil unless self.ptype =~ /^ssh_/
123
+ return nil unless self.proof =~ KEY_ID_REGEX
124
+ $1.downcase # Can't run into NilClass problems.
125
+ end
126
+
127
+ # Returns whether `other`'s SSH private key or public key matches.
128
+ #
129
+ # @return [false] if `other` is not same class as `self`.
130
+ # @return [false] if {#ptype} does not match.
131
+ # @return [false] if {#ptype} is neither `"ssh_key"` nor `"ssh_pubkey"`.
132
+ # @return [false] if {#ssh_key_id} is `nil`.
133
+ # @return [false] if {#ssh_key_id} does not match.
134
+ # @return [true] if {#ssh_key_id} matches.
135
+ def ssh_key_matches?(other_cred)
136
+ return false unless other_cred.kind_of? self.class
137
+ return false unless self.ptype == other_cred.ptype
138
+ case self.ptype
139
+ when "ssh_key"
140
+ matches = self.ssh_private_keys
141
+ when "ssh_pubkey"
142
+ matches = self.ssh_public_keys
143
+ else
144
+ return false
145
+ end
146
+ matches.include?(self) and matches.include?(other_cred)
147
+ end
148
+
149
+ # Returns all keys with matching key ids, including itself.
150
+ #
151
+ # @return [ActiveRecord::Relation<Mdm::Cred>] ssh_key and ssh_pubkey creds with matching {#ssh_key_id}.
152
+ def ssh_keys
153
+ (self.ssh_private_keys | self.ssh_public_keys)
154
+ end
155
+
156
+ # Returns all private keys with matching {#ssh_key_id}, including itself.
157
+ #
158
+ # @return [ActiveRecord::Relation<Mdm::Cred>] ssh_key creds with matching {#ssh_key_id}.
159
+ def ssh_private_keys
160
+ return [] unless self.ssh_key_id
161
+ matches = Mdm::Cred.where(
162
+ "ptype = ? AND proof ILIKE ?", "ssh_key", "%#{self.ssh_key_id}%"
163
+ ).to_a
164
+ matches.select {|c| c.workspace == self.workspace}
165
+ end
166
+
167
+ # Returns all public keys with matching {#ssh_key_id}, including itself.
168
+ #
169
+ # @return [ActiveRecord::Relation<Mdm::Cred>] ssh_pubkey creds with matching {#ssh_key_id}.
170
+ def ssh_public_keys
171
+ return [] unless self.ssh_key_id
172
+ matches = Mdm::Cred.where(
173
+ "ptype = ? AND proof ILIKE ?", "ssh_pubkey", "%#{self.ssh_key_id}%"
174
+ ).to_a
175
+ matches.select {|c| c.workspace == self.workspace}
176
+ end
177
+
178
+ # Returns its workspace
179
+ #
180
+ # @return [Mdm::Workspace]
181
+ def workspace
182
+ self.service.host.workspace
183
+ end
184
+
185
+ private
186
+
187
+ # Decrements {Mdm::Host#cred_count}.
188
+ #
189
+ # @return [void]
190
+ def decrement_host_counter_cache
191
+ Mdm::Host.decrement_counter("cred_count", self.service.host_id)
192
+ end
193
+
194
+ # Increments {Mdm::Host#cred_count}.
195
+ #
196
+ # @return [void]
197
+ def increment_host_counter_cache
198
+ Mdm::Host.increment_counter("cred_count", self.service.host_id)
199
+ end
200
+
201
+ # Switch back to public for load hooks.
202
+ public
203
+
204
+ Metasploit::Concern.run(self)
205
+ end
@@ -0,0 +1,83 @@
1
+ # Records framework events to the database.
2
+ class Mdm::Event < ApplicationRecord
3
+
4
+ #
5
+ # Associations
6
+ #
7
+
8
+ # Host on which this event occurred.
9
+ #
10
+ # @return [Mdm::Host]
11
+ # @return [nil] if event did not occur on a host.
12
+ belongs_to :host,
13
+ class_name: 'Mdm::Host',
14
+ inverse_of: :events
15
+
16
+ # {Mdm::Workspace} in which this event occured. If {#host} is present, then this will match
17
+ # {Mdm::Host#workspace `host.workspace`}.
18
+ belongs_to :workspace,
19
+ class_name: 'Mdm::Workspace',
20
+ inverse_of: :events
21
+
22
+ #
23
+ # Attributes
24
+ #
25
+
26
+ # @!attribute created_at
27
+ # When this event was created.
28
+ #
29
+ # @return [DateTime]
30
+
31
+ # @!attribute critical
32
+ # Indicates if the event is critical.
33
+ #
34
+ # @return [false] event is not critical.
35
+ # @return [true] event is critical.
36
+
37
+ # @!attribute name
38
+ # Name of the event, such as 'module_run'.
39
+ #
40
+ # @return [String]
41
+
42
+ # @!attribute seen
43
+ # Whether a user has seen these events.
44
+ #
45
+ # @return [false] if the event has not been seen.
46
+ # @return [true] if any user has seen the event.
47
+
48
+ # @!attribute updated_at
49
+ # The last time this event was updated.
50
+ #
51
+ # @return [DateTime]
52
+
53
+ # @!attribute username
54
+ # Name of user that triggered the event. Not necessarily a {Mdm::User#username}, as {#username} may be set to
55
+ # the username of the user inferred from `ENV` when using metasploit-framework.
56
+ #
57
+ # @return [String]
58
+
59
+ #
60
+ # Scopes
61
+ #
62
+
63
+ scope :flagged, -> { where(:critical => true, :seen => false) }
64
+ scope :module_run, -> { where(:name => 'module_run') }
65
+
66
+ #
67
+ # Serializations
68
+ #
69
+
70
+ # {#name}-specific information about this event.
71
+ #
72
+ # @return [Hash]
73
+ serialize :info, MetasploitDataModels::Base64Serializer.new
74
+
75
+ #
76
+ # Validations
77
+ #
78
+
79
+ validates :name, :presence => true
80
+
81
+ Metasploit::Concern.run(self)
82
+ end
83
+
@@ -0,0 +1,105 @@
1
+ # An attempt to exploit {#host}.
2
+ class Mdm::ExploitAttempt < ApplicationRecord
3
+
4
+ #
5
+ # Associations
6
+ #
7
+
8
+ # Host that was attempted to be exploited.
9
+ #
10
+ # @return [Mdm::Host]
11
+ belongs_to :host,
12
+ class_name: 'Mdm::Host',
13
+ counter_cache: :exploit_attempt_count,
14
+ inverse_of: :exploit_attempts
15
+
16
+ # Loot gathers from the successful exploit.
17
+ #
18
+ # @return [Mdm::Loot, nil]
19
+ belongs_to :loot,
20
+ class_name: 'Mdm::Loot',
21
+ inverse_of: :exploit_attempt
22
+
23
+ # The service being exploited on {#host}.
24
+ #
25
+ # @return [Mdm::Service, nil]
26
+ belongs_to :service,
27
+ class_name: 'Mdm::Service',
28
+ inverse_of: :exploit_attempts
29
+
30
+ # The session that was established when this attempt was successful.
31
+ #
32
+ # @return [Mdm::Session]
33
+ # @return [nil] if session was not established.
34
+ belongs_to :session,
35
+ class_name: 'Mdm::Session',
36
+ inverse_of: :exploit_attempt
37
+
38
+ # The vulnerability that was attempted to be exploited.
39
+ #
40
+ # @return [Mdm::Vuln, nil]
41
+ belongs_to :vuln,
42
+ class_name: 'Mdm::Vuln',
43
+ inverse_of: :exploit_attempts
44
+
45
+ #
46
+ # Attributes
47
+ #
48
+
49
+ # @!attribute attempted_at
50
+ # When the attempt was made.
51
+ #
52
+ # @return [DateTime]
53
+
54
+ # @!attribute exploited
55
+ # Whether the attempt was successful.
56
+ #
57
+ # @return [true] attempt was successful.
58
+ # @return [false] attempt was not successful.
59
+
60
+ # @!attribute fail_detail
61
+ # A more verbose reason (compared to {#fail_reason} for the failure.
62
+ #
63
+ # @return [String, nil]
64
+
65
+ # @!attribute fail_reason
66
+ # Summary of why the attempt failed if {#exploited} is `false`. For more details see {#fail_detail}.
67
+ #
68
+ # @return [String, nil]
69
+
70
+ # @!attribute host_id
71
+ # Foreign key to look up {#host}.
72
+ #
73
+ # @return [Integer]
74
+
75
+ # @!attribute module
76
+ # The full name of the exploit module that made the attempt.
77
+ #
78
+ # @return [String]
79
+ # @todo Remove deprecated Mdm::Exploit#module (MSP-9281)
80
+
81
+ # @!attribute port
82
+ # The port on {#host} which the exploit was attempted.
83
+ #
84
+ # @return [Integer]
85
+ # @todo Mdm::ExploitAttempt#port and Mdm::ExploitAttempt#proto are obsolete and should be removed (MSP-9284)
86
+
87
+ # @!attribute proto
88
+ # The protocol name used on {#port}.
89
+ #
90
+ # @return [String]
91
+ # @todo Mdm::ExploitAttempt#port and Mdm::ExploitAttempt#proto are obsolete and should be removed (MSP-9284)
92
+
93
+ # @!attribute username
94
+ # Name of user that made the attempt. May be an {Mdm::User#name} or a system username.
95
+ #
96
+ # @return [String]
97
+
98
+ #
99
+ # Validations
100
+ #
101
+
102
+ validates :host_id, :presence => true
103
+
104
+ Metasploit::Concern.run(self)
105
+ end
@@ -0,0 +1,42 @@
1
+ # @deprecated use {Mdm::ExploitAttempt} instead.
2
+ #
3
+ # When a {#host} or {#service} on a {#host} is exploited.
4
+ class Mdm::ExploitedHost < ApplicationRecord
5
+ #
6
+ # Associations
7
+ #
8
+
9
+ # The host that was exploited.
10
+ belongs_to :host,
11
+ class_name: 'Mdm::Host',
12
+ inverse_of: :exploited_hosts
13
+
14
+ # The service on {#host} that was exploited.
15
+ belongs_to :service,
16
+ class_name: 'Mdm::Service',
17
+ inverse_of: :exploited_hosts
18
+
19
+ #
20
+ # Attributes
21
+ #
22
+
23
+ # @!attribute name
24
+ # Name of exploit.
25
+ #
26
+ # @return [String]
27
+
28
+ # @!attribute payload
29
+ # {Mdm::Module::Class#full_name Full name of the payload module} used to exploit the {#host} or {#service} on
30
+ # {#host}.
31
+ #
32
+ # @return [String]
33
+
34
+ # @!attribute session_uuid
35
+ # UUID of local session.
36
+ #
37
+ # @return [String]
38
+ # @deprecated Sessions no longer have UUIDs. They have {Mdm::Session#local_id} that reflects the in-memory
39
+ # Msf::Session ID and an in-database {Mdm::Session#id}.
40
+
41
+ Metasploit::Concern.run(self)
42
+ end