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,53 @@
1
+ # A filled-in form on a {#web_site}.
2
+ class Mdm::WebForm < ApplicationRecord
3
+
4
+ #
5
+ # Associations
6
+ #
7
+
8
+ # {Mdm::WebSite Web site} on which this form is.
9
+ belongs_to :web_site,
10
+ class_name: 'Mdm::WebSite',
11
+ inverse_of: :web_forms
12
+
13
+ #
14
+ # Attributes
15
+ #
16
+
17
+ # @!attribute created_at
18
+ # When this web form was created.
19
+ #
20
+ # @return [DateTime]
21
+
22
+ # @!attribute method
23
+ # HTTP method (or verb) used to submitted this form, such as GET or POST.
24
+ #
25
+ # @return [String]
26
+
27
+ # @!attribute path
28
+ # Path portion of URL to which this form was submitted.
29
+ #
30
+ # @return [String]
31
+
32
+ # @!attribute query
33
+ # URL query that submitted for this form.
34
+ #
35
+ # @return [String]
36
+
37
+ # @!attribute updated_at
38
+ # The last time this web form was updated.
39
+ #
40
+ # @return [DateTime]
41
+
42
+ #
43
+ # Serializations
44
+ #
45
+
46
+ # Parameters submitted in this form.
47
+ #
48
+ # @return [Array<Array(String, String)>>]
49
+ serialize :params, MetasploitDataModels::Base64Serializer.new
50
+
51
+ Metasploit::Concern.run(self)
52
+ end
53
+
@@ -0,0 +1,92 @@
1
+ # Web page requested from a {#web_site}.
2
+ class Mdm::WebPage < ApplicationRecord
3
+
4
+ #
5
+ # Associations
6
+ #
7
+
8
+ # Mdm::WebSite Web site} from which this page was requested.
9
+ belongs_to :web_site,
10
+ class_name: 'Mdm::WebSite',
11
+ inverse_of: :web_pages
12
+
13
+ #
14
+ # Attributes
15
+ #
16
+
17
+ # @!attribute auth
18
+ # Credentials sent to server to authenticate to web site to allow access to this web page.
19
+ #
20
+ # @return [String]
21
+
22
+ # @!attribute body
23
+ # Body of response from server.
24
+ #
25
+ # @return [String]
26
+
27
+ # @!attribute code
28
+ # HTTP Status code return from {#web_site} when requesting this web page.
29
+ #
30
+ # @return [Integer]
31
+
32
+ # @!attribute cookie
33
+ # Cookies derived from {#headers}.
34
+ #
35
+ # @return [String]
36
+
37
+ # @!attribute created_at
38
+ # When this web page was created.
39
+ #
40
+ # @return [DateTime]
41
+
42
+ # @!attribute ctype
43
+ # The content type derived from the {#headers} of the returned web page.
44
+ #
45
+ # @return [String]
46
+
47
+ # @!attribute location
48
+ # Location derived from {#headers}.
49
+
50
+ # @return [String]
51
+
52
+ # @!attribute mtime
53
+ # The last modified time of the web page derived from the {#headers}.
54
+ #
55
+ # @return [DateTime]
56
+
57
+ # @!attribute path
58
+ # Path portion of URL that was used to access this web page.
59
+ #
60
+ # @return [String]
61
+
62
+ # @!attribute query
63
+ # Query portion of URLthat was used to access this web page.
64
+ #
65
+ # @return [String]
66
+
67
+ # @!attribute request
68
+ # Request sent to server to cause this web page to be returned.
69
+ #
70
+ # @return [String]
71
+
72
+ # @!attribute updated_at
73
+ # The last time this web page was updated.
74
+ #
75
+ # @return [DateTime]
76
+
77
+ #
78
+ # Serializations
79
+ #
80
+
81
+ # Headers sent from server.
82
+ #
83
+ # @return [Hash{String => String}]
84
+ serialize :headers, MetasploitDataModels::Base64Serializer.new
85
+
86
+ # Cookies sent from server.
87
+ #
88
+ # @return [Hash{String => String}]
89
+ serialize :cookie
90
+ Metasploit::Concern.run(self)
91
+ end
92
+
@@ -0,0 +1,113 @@
1
+ # A Web Site running on a {#service}.
2
+ class Mdm::WebSite < ApplicationRecord
3
+
4
+ #
5
+ # Associations
6
+ #
7
+
8
+ # The service on which this web site is running.
9
+ belongs_to :service,
10
+ class_name: 'Mdm::Service',
11
+ foreign_key: 'service_id',
12
+ inverse_of: :web_sites
13
+
14
+ # Filled-in forms within this web site.
15
+ has_many :web_forms,
16
+ class_name: 'Mdm::WebForm',
17
+ dependent: :destroy,
18
+ inverse_of: :web_site
19
+
20
+ # Web pages found on this web site.
21
+ has_many :web_pages,
22
+ class_name: 'Mdm::WebPage',
23
+ dependent: :destroy,
24
+ inverse_of: :web_site
25
+
26
+ # Vulnerabilities found on this web site.
27
+ has_many :web_vulns,
28
+ class_name: 'Mdm::WebVuln',
29
+ dependent: :destroy,
30
+ inverse_of: :web_site
31
+
32
+ #
33
+ # Attributes
34
+ #
35
+
36
+ # @!attribute [rw] comments
37
+ # User entered comments about this web site.
38
+ #
39
+ # @return [String]
40
+
41
+ # @!attribute [rw] created_at
42
+ # When this web site was created.
43
+ #
44
+ # @return [DateTime]
45
+
46
+ # @!attribute [rw] updated_at
47
+ # The last time this web site was updated.
48
+ #
49
+ # @return [DateTime]
50
+
51
+ # @!attribute [rw] vhost
52
+ # The virtual host for the web site in case `service.host.name` or `service.host.address` is no the host for this
53
+ # web site.
54
+ #
55
+ # @return [String]
56
+
57
+ #
58
+ # Serializations
59
+ #
60
+
61
+ # @!attribute [rw] options
62
+ # @todo Determine format and purpose of Mdm::WebSite#options.
63
+ serialize :options, ::MetasploitDataModels::Base64Serializer.new
64
+
65
+ #
66
+ # Instance Methods
67
+ #
68
+
69
+ # Number of {#web_forms}.
70
+ #
71
+ # @return [Integer]
72
+ def form_count
73
+ web_forms.size
74
+ end
75
+
76
+ # Number of {#web_pages}.
77
+ #
78
+ # @return [Integer]
79
+ def page_count
80
+ web_pages.size
81
+ end
82
+
83
+ # Converts this web site to its URL, including scheme, host and port.
84
+ #
85
+ # @param ignore_vhost [Boolean] if `false` use {#vhost} for host portion of URL. If `true` use {Mdm::Host#address} of
86
+ # {Mdm::Service#host} of {#service} for host portion of URL.
87
+ # @return [String] <scheme>://<host>[:<port>]
88
+ def to_url(ignore_vhost=false)
89
+ proto = self.service.name == "https" ? "https" : "http"
90
+ host = ignore_vhost ? self.service.host.address.to_s : self.vhost
91
+ port = self.service.port
92
+
93
+ if Rex::Socket.is_ipv6?(host)
94
+ host = "[#{host}]"
95
+ end
96
+
97
+ url = "#{proto}://#{host}"
98
+ if not ((proto == "http" and port == 80) or (proto == "https" and port == 443))
99
+ url += ":#{port}"
100
+ end
101
+ url
102
+ end
103
+
104
+ # Number of {#web_vulns}.
105
+ #
106
+ # @return [Integer]
107
+ def vuln_count
108
+ web_vulns.size
109
+ end
110
+
111
+ Metasploit::Concern.run(self)
112
+ end
113
+
@@ -0,0 +1,193 @@
1
+ # A Web Vulnerability found during a web scan or web audit.
2
+ #
3
+ # If you need to modify Mdm::WebVuln you can use ActiveSupport.on_load(:mdm_web_vuln) inside an initializer so that
4
+ # your patches are reloaded on each request in development mode for your Rails application.
5
+ #
6
+ # @example extending Mdm::WebVuln
7
+ # # config/initializers/mdm_web_vuln.rb
8
+ # ActiveSupport.on_load(:mdm_web_vuln) do
9
+ # def confidence_percentage
10
+ # "#{confidence}%"
11
+ # end
12
+ # end
13
+ class Mdm::WebVuln < ApplicationRecord
14
+
15
+ #
16
+ # CONSTANTS
17
+ #
18
+
19
+ # A percentage {#confidence} that the vulnerability is real and not a false positive.
20
+ CONFIDENCE_RANGE = 0 .. 100
21
+
22
+ # Default value for {#params}
23
+ DEFAULT_PARAMS = []
24
+
25
+ # Allowed {#method methods}.
26
+ METHODS = [
27
+ 'GET',
28
+ # XXX I don't know why PATH is a valid method when it's not an HTTP Method/Verb
29
+ 'PATH',
30
+ 'POST'
31
+ ]
32
+
33
+ # {#risk Risk} is rated on a scale from 0 (least risky) to 5 (most risky).
34
+ RISK_RANGE = 0 .. 5
35
+
36
+ #
37
+ # Associations
38
+ #
39
+
40
+ belongs_to :web_site,
41
+ class_name: 'Mdm::WebSite',
42
+ inverse_of: :web_vulns
43
+
44
+ #
45
+ # Attributes
46
+ #
47
+
48
+ # @!attribute [rw] blame
49
+ # Who to blame for the vulnerability
50
+ #
51
+ # @return [String]
52
+
53
+ # @!attribute [rw] category
54
+ # Category of this vulnerability.
55
+ #
56
+ # @return [String]
57
+
58
+ # @!attribute [rw] confidence
59
+ # Percentage confidence scanner or auditor has that this vulnerability is not a false positive
60
+ #
61
+ # @return [Integer] 1% to 100%
62
+
63
+ # @!attribute [rw] description
64
+ # Description of the vulnerability
65
+ #
66
+ # @return [String, nil]
67
+
68
+ # @!attribute [rw] method
69
+ # HTTP Methods for request that found vulnerability. 'PATH' is also allowed even though it is not an HTTP Method.
70
+ #
71
+ # @return [String]
72
+ # @see METHODS
73
+
74
+ # @!attribute [rw] name
75
+ # Name of the vulnerability
76
+ #
77
+ # @return [String]
78
+
79
+ # @!attribute [rw] path
80
+ # Path portion of URL
81
+ #
82
+ # @return [String]
83
+
84
+ # @!attribute [rw] payload
85
+ # Web audit payload that gets executed by the remote server. Used for code injection vulnerabilities.
86
+ #
87
+ # @return [String, nil]
88
+
89
+ # @!attribute [rw] pname
90
+ # Name of parameter that demonstrates vulnerability
91
+ #
92
+ # @return [String]
93
+
94
+ # @!attribute [rw] proof
95
+ # String that proves vulnerability, such as a code snippet, etc.
96
+ #
97
+ # @return [String]
98
+
99
+ # @!attribute [rw] query
100
+ # The GET query.
101
+ #
102
+ # @return [String]
103
+
104
+ # @!attribute [rw] request
105
+ #
106
+ # @return [String]
107
+
108
+ # @!attribute [rw] risk
109
+ # {RISK_RANGE Risk} of leaving this vulnerability unpatched.
110
+ #
111
+ # @return [Integer]
112
+
113
+ #
114
+ # Validations
115
+ #
116
+
117
+ validates :category, :presence => true
118
+ validates :confidence,
119
+ :inclusion => {
120
+ :in => CONFIDENCE_RANGE
121
+ }
122
+ validates :method,
123
+ :inclusion => {
124
+ :in => METHODS
125
+ }
126
+ validates :name, :presence => true
127
+ validates :params, :parameters => true
128
+ validates :path, :presence => true
129
+ validates :proof, :presence => true
130
+ validates :risk,
131
+ :inclusion => {
132
+ :in => RISK_RANGE
133
+ }
134
+ validates :web_site, :presence => true
135
+
136
+ #
137
+ # Serializations
138
+ #
139
+
140
+ # @!attribute [rw] params
141
+ # Parameters sent as part of request
142
+ #
143
+ # @return [Array<Array(String, String)>] Array of parameter key value pairs
144
+ serialize :params, MetasploitDataModels::Base64Serializer.new(:default => DEFAULT_PARAMS)
145
+
146
+ #
147
+ # Methods
148
+ #
149
+
150
+ # Parameters sent as part of request.
151
+ #
152
+ # @return [Array<Array<(String, String)>>]
153
+ def params
154
+ normalize_params(
155
+ read_attribute(:params)
156
+ )
157
+ end
158
+
159
+ # Set parameters sent as part of request.
160
+ #
161
+ # @param params [Array<Array<(String, String)>>, nil] Array of parameter key value pairs
162
+ # @return [void]
163
+ def params=(params)
164
+ write_attribute(
165
+ :params,
166
+ normalize_params(params)
167
+ )
168
+ end
169
+
170
+ private
171
+
172
+ # Creates a duplicate of {DEFAULT_PARAMS} that is safe to modify.
173
+ #
174
+ # @return [Array] an empty array
175
+ def default_params
176
+ DEFAULT_PARAMS.dup
177
+ end
178
+
179
+ # Returns either the given params or {DEFAULT_PARAMS} if params is `nil`
180
+ #
181
+ # @param [Array<Array<(String, String)>>, nil] params
182
+ # @return [Array<<Array<(String, String)>>] params if not `nil`
183
+ # @return [nil] if params is `nil`
184
+ def normalize_params(params)
185
+ params || default_params
186
+ end
187
+
188
+ # switch back to public for load hooks
189
+ public
190
+
191
+ Metasploit::Concern.run(self)
192
+ end
193
+
@@ -0,0 +1,101 @@
1
+ # Request sent to a {Mdm::WmapTarget}. WMAP is a plugin to metasploit-framework.
2
+ class Mdm::WmapRequest < ApplicationRecord
3
+ #
4
+ #
5
+ # Attributes
6
+ #
7
+ #
8
+
9
+ # @!attribute address
10
+ # IP address of {#host} to which this request was sent.
11
+ #
12
+ # @return [String]
13
+
14
+ # @!attribute body
15
+ # Body of this request.
16
+ #
17
+ # @return [String]
18
+
19
+ # @!attribute created_at
20
+ # When this request was created.
21
+ #
22
+ # @return [DateTime]
23
+
24
+ # @!attribute headers
25
+ # Headers sent as part of this request.
26
+ #
27
+ # @return [String]
28
+
29
+ # @!attribute host
30
+ # Name of host to which this request was sent.
31
+ #
32
+ # @return [String]
33
+
34
+ # @!attribute meth
35
+ # HTTP Method (or VERB) used for request.
36
+ #
37
+ # @return [String]
38
+
39
+ # @!attribute path
40
+ # Path portion of URL for this request.
41
+ #
42
+ # @return [String]
43
+
44
+ # @!attribute port
45
+ # Port at {#address} to which this request was sent.
46
+ #
47
+ # @return [Integer]
48
+
49
+ # @!attribute query
50
+ # Query portion of URL for this request.
51
+ #
52
+ # @return [String]
53
+
54
+ # @!attribute ssl
55
+ # Version of SSL to use.
56
+ #
57
+ # @return [Integer]
58
+
59
+ # @!attribute updated_at
60
+ # The last time this request was updated.
61
+ #
62
+ # @return [DateTime]
63
+
64
+ #
65
+ # @!group Response
66
+ #
67
+
68
+ # @!attribute respcode
69
+ # HTTP status code sent in response to this request from server.
70
+ #
71
+ # @return [String]
72
+
73
+ # @!attribute resphead
74
+ # Headers sent in response from server.
75
+ #
76
+ # @return [String]
77
+
78
+ # @!attribute response
79
+ # Response sent from server.
80
+ #
81
+ # @return [String]
82
+
83
+ #
84
+ # @!endgroup
85
+ #
86
+
87
+ #
88
+ # Instance Methods
89
+ #
90
+
91
+ # @note Necessary to avoid coercion to an `IPAddr` object.
92
+ #
93
+ # The IP address for this request.
94
+ #
95
+ # @return [String]
96
+ def address
97
+ self[:address].to_s
98
+ end
99
+
100
+ Metasploit::Concern.run(self)
101
+ end
@@ -0,0 +1,56 @@
1
+ # WMAP target. WMAP is a plugin to metasploit-framework.
2
+ class Mdm::WmapTarget < ApplicationRecord
3
+ #
4
+ # Attributes
5
+ #
6
+
7
+ # @!attribute address
8
+ # IP address of {#host}.
9
+ #
10
+ # @return [String]
11
+
12
+ # @!attribute created_at
13
+ # When this target was created.
14
+ #
15
+ # @return [DateTime]
16
+
17
+ # @!attribute host
18
+ # Name of this target.
19
+ #
20
+ # @return [String]
21
+
22
+ # @!attribute port
23
+ # Port on this target to send {Mdm::WmapRequest requests}.
24
+ #
25
+ # @return [Integer]
26
+
27
+ # @!attribute selected
28
+ # Whether this target should be sent requests.
29
+ #
30
+ # @return [Integer]
31
+
32
+ # @!attribute ssl
33
+ # Version of SSL to use when sending requests to this target.
34
+ #
35
+ # @return [Integer]
36
+
37
+ # @!attribute updated_at
38
+ # The last time this target was updated.
39
+ #
40
+ # @return [DateTime]
41
+
42
+ #
43
+ # Instance Methods
44
+ #
45
+
46
+ # @note Necessary to avoid coercion to an `IPAddr` object.
47
+ #
48
+ # The IP address for this target.
49
+ #
50
+ # @return [String]
51
+ def address
52
+ self[:address].to_s
53
+ end
54
+
55
+ Metasploit::Concern.run(self)
56
+ end