metasploit_data_models 0.7.0-java

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 (214) hide show
  1. data/.gitignore +24 -0
  2. data/.rspec +3 -0
  3. data/.simplecov +38 -0
  4. data/.travis.yml +6 -0
  5. data/.yardopts +4 -0
  6. data/Gemfile +27 -0
  7. data/LICENSE +27 -0
  8. data/README.md +72 -0
  9. data/Rakefile +53 -0
  10. data/app/models/mdm/api_key.rb +20 -0
  11. data/app/models/mdm/client.rb +9 -0
  12. data/app/models/mdm/cred.rb +93 -0
  13. data/app/models/mdm/event.rb +30 -0
  14. data/app/models/mdm/exploit_attempt.rb +14 -0
  15. data/app/models/mdm/exploited_host.rb +11 -0
  16. data/app/models/mdm/host.rb +134 -0
  17. data/app/models/mdm/host_detail.rb +15 -0
  18. data/app/models/mdm/host_tag.rb +13 -0
  19. data/app/models/mdm/imported_cred.rb +10 -0
  20. data/app/models/mdm/listener.rb +24 -0
  21. data/app/models/mdm/loot.rb +63 -0
  22. data/app/models/mdm/macro.rb +20 -0
  23. data/app/models/mdm/mod_ref.rb +3 -0
  24. data/app/models/mdm/module_action.rb +24 -0
  25. data/app/models/mdm/module_arch.rb +24 -0
  26. data/app/models/mdm/module_author.rb +25 -0
  27. data/app/models/mdm/module_detail.rb +59 -0
  28. data/app/models/mdm/module_mixin.rb +24 -0
  29. data/app/models/mdm/module_platform.rb +24 -0
  30. data/app/models/mdm/module_ref.rb +24 -0
  31. data/app/models/mdm/module_target.rb +26 -0
  32. data/app/models/mdm/nexpose_console.rb +20 -0
  33. data/app/models/mdm/note.rb +49 -0
  34. data/app/models/mdm/profile.rb +9 -0
  35. data/app/models/mdm/ref.rb +14 -0
  36. data/app/models/mdm/report.rb +50 -0
  37. data/app/models/mdm/report_template.rb +27 -0
  38. data/app/models/mdm/route.rb +9 -0
  39. data/app/models/mdm/service.rb +56 -0
  40. data/app/models/mdm/session.rb +48 -0
  41. data/app/models/mdm/session_event.rb +9 -0
  42. data/app/models/mdm/tag.rb +46 -0
  43. data/app/models/mdm/task.rb +41 -0
  44. data/app/models/mdm/user.rb +25 -0
  45. data/app/models/mdm/vuln.rb +60 -0
  46. data/app/models/mdm/vuln_attempt.rb +15 -0
  47. data/app/models/mdm/vuln_detail.rb +14 -0
  48. data/app/models/mdm/vuln_ref.rb +13 -0
  49. data/app/models/mdm/web_form.rb +16 -0
  50. data/app/models/mdm/web_page.rb +16 -0
  51. data/app/models/mdm/web_site.rb +47 -0
  52. data/app/models/mdm/web_vuln.rb +190 -0
  53. data/app/models/mdm/wmap_request.rb +3 -0
  54. data/app/models/mdm/wmap_target.rb +3 -0
  55. data/app/models/mdm/workspace.rb +196 -0
  56. data/bin/mdm_console +68 -0
  57. data/console_db.yml +9 -0
  58. data/db/migrate/000_create_tables.rb +79 -0
  59. data/db/migrate/001_add_wmap_tables.rb +35 -0
  60. data/db/migrate/002_add_workspaces.rb +36 -0
  61. data/db/migrate/003_move_notes.rb +20 -0
  62. data/db/migrate/004_add_events_table.rb +16 -0
  63. data/db/migrate/005_expand_info.rb +58 -0
  64. data/db/migrate/006_add_timestamps.rb +26 -0
  65. data/db/migrate/007_add_loots.rb +20 -0
  66. data/db/migrate/008_create_users.rb +16 -0
  67. data/db/migrate/009_add_loots_ctype.rb +10 -0
  68. data/db/migrate/010_add_alert_fields.rb +16 -0
  69. data/db/migrate/011_add_reports.rb +19 -0
  70. data/db/migrate/012_add_tasks.rb +24 -0
  71. data/db/migrate/013_add_tasks_result.rb +10 -0
  72. data/db/migrate/014_add_loots_fields.rb +12 -0
  73. data/db/migrate/015_rename_user.rb +16 -0
  74. data/db/migrate/016_add_host_purpose.rb +10 -0
  75. data/db/migrate/017_expand_info2.rb +58 -0
  76. data/db/migrate/018_add_workspace_user_info.rb +29 -0
  77. data/db/migrate/019_add_workspace_desc.rb +23 -0
  78. data/db/migrate/020_add_user_preferences.rb +11 -0
  79. data/db/migrate/021_standardize_info_and_data.rb +18 -0
  80. data/db/migrate/022_enlarge_event_info.rb +10 -0
  81. data/db/migrate/023_add_report_downloaded_at.rb +10 -0
  82. data/db/migrate/024_convert_service_info_to_text.rb +12 -0
  83. data/db/migrate/025_add_user_admin.rb +19 -0
  84. data/db/migrate/026_add_creds_table.rb +19 -0
  85. data/db/migrate/20100819123300_migrate_cred_data.rb +154 -0
  86. data/db/migrate/20100824151500_add_exploited_table.rb +16 -0
  87. data/db/migrate/20100908001428_add_owner_to_workspaces.rb +9 -0
  88. data/db/migrate/20100911122000_add_report_templates.rb +18 -0
  89. data/db/migrate/20100916151530_require_admin_flag.rb +15 -0
  90. data/db/migrate/20100916175000_add_campaigns_and_templates.rb +61 -0
  91. data/db/migrate/20100920012100_add_generate_exe_column.rb +8 -0
  92. data/db/migrate/20100926214000_add_template_prefs.rb +11 -0
  93. data/db/migrate/20101001000000_add_web_tables.rb +57 -0
  94. data/db/migrate/20101002000000_add_query.rb +10 -0
  95. data/db/migrate/20101007000000_add_vuln_info.rb +15 -0
  96. data/db/migrate/20101008111800_add_clients_to_campaigns.rb +10 -0
  97. data/db/migrate/20101009023300_add_campaign_attachments.rb +15 -0
  98. data/db/migrate/20101104135100_add_imported_creds.rb +17 -0
  99. data/db/migrate/20101203000000_fix_web_tables.rb +34 -0
  100. data/db/migrate/20101203000001_expand_host_comment.rb +12 -0
  101. data/db/migrate/20101206212033_add_limit_to_network_to_workspaces.rb +9 -0
  102. data/db/migrate/20110112154300_add_module_uuid_to_tasks.rb +9 -0
  103. data/db/migrate/20110204112800_add_host_tags.rb +28 -0
  104. data/db/migrate/20110317144932_add_session_table.rb +110 -0
  105. data/db/migrate/20110414180600_add_local_id_to_session_table.rb +11 -0
  106. data/db/migrate/20110415175705_add_routes_table.rb +18 -0
  107. data/db/migrate/20110422000000_convert_binary.rb +73 -0
  108. data/db/migrate/20110425095900_add_last_seen_to_sessions.rb +8 -0
  109. data/db/migrate/20110513143900_track_successful_exploits.rb +31 -0
  110. data/db/migrate/20110517160800_rename_and_prune_nessus_vulns.rb +26 -0
  111. data/db/migrate/20110527000000_add_task_id_to_reports_table.rb +11 -0
  112. data/db/migrate/20110527000001_add_api_keys_table.rb +12 -0
  113. data/db/migrate/20110606000001_add_macros_table.rb +16 -0
  114. data/db/migrate/20110622000000_add_settings_to_tasks_table.rb +12 -0
  115. data/db/migrate/20110624000001_add_listeners_table.rb +19 -0
  116. data/db/migrate/20110625000001_add_macro_to_listeners_table.rb +12 -0
  117. data/db/migrate/20110630000001_add_nexpose_consoles_table.rb +21 -0
  118. data/db/migrate/20110630000002_add_name_to_nexpose_consoles_table.rb +12 -0
  119. data/db/migrate/20110717000001_add_profiles_table.rb +15 -0
  120. data/db/migrate/20110727163801_expand_cred_ptype_column.rb +9 -0
  121. data/db/migrate/20110730000001_add_initial_indexes.rb +85 -0
  122. data/db/migrate/20110812000001_prune_indexes.rb +23 -0
  123. data/db/migrate/20110922000000_expand_notes.rb +9 -0
  124. data/db/migrate/20110928101300_add_mod_ref_table.rb +17 -0
  125. data/db/migrate/20111011110000_add_display_name_to_reports_table.rb +24 -0
  126. data/db/migrate/20111203000000_inet_columns.rb +13 -0
  127. data/db/migrate/20111204000000_more_inet_columns.rb +17 -0
  128. data/db/migrate/20111210000000_add_scope_to_hosts.rb +9 -0
  129. data/db/migrate/20120126110000_add_virtual_host_to_hosts.rb +9 -0
  130. data/db/migrate/20120411173220_rename_workspace_members.rb +9 -0
  131. data/db/migrate/20120601152442_add_counter_caches_to_hosts.rb +21 -0
  132. data/db/migrate/20120625000000_add_vuln_details.rb +34 -0
  133. data/db/migrate/20120625000001_add_host_details.rb +16 -0
  134. data/db/migrate/20120625000002_expand_details.rb +16 -0
  135. data/db/migrate/20120625000003_expand_details2.rb +24 -0
  136. data/db/migrate/20120625000004_add_vuln_attempts.rb +19 -0
  137. data/db/migrate/20120625000005_add_vuln_and_host_counter_caches.rb +14 -0
  138. data/db/migrate/20120625000006_add_module_details.rb +118 -0
  139. data/db/migrate/20120625000007_add_exploit_attempts.rb +26 -0
  140. data/db/migrate/20120625000008_add_fail_message.rb +12 -0
  141. data/db/migrate/20120718202805_add_owner_and_payload_to_web_vulns.rb +13 -0
  142. data/db/migrate/20130228214900_change_required_columns_to_null_false_in_web_vulns.rb +35 -0
  143. data/db/migrate/20130423211152_add_creds_counter_cache.rb +24 -0
  144. data/lib/mdm.rb +12 -0
  145. data/lib/mdm/host/operating_system_normalization.rb +984 -0
  146. data/lib/metasploit_data_models.rb +60 -0
  147. data/lib/metasploit_data_models/base64_serializer.rb +103 -0
  148. data/lib/metasploit_data_models/engine.rb +23 -0
  149. data/lib/metasploit_data_models/serialized_prefs.rb +23 -0
  150. data/lib/metasploit_data_models/validators/ip_format_validator.rb +13 -0
  151. data/lib/metasploit_data_models/validators/password_is_strong_validator.rb +70 -0
  152. data/lib/metasploit_data_models/version.rb +8 -0
  153. data/lib/tasks/yard.rake +26 -0
  154. data/metasploit_data_models.gemspec +54 -0
  155. data/script/rails +8 -0
  156. data/spec/app/models/mdm/module_action_spec.rb +38 -0
  157. data/spec/app/models/mdm/module_arch_spec.rb +38 -0
  158. data/spec/app/models/mdm/module_author_spec.rb +50 -0
  159. data/spec/app/models/mdm/module_detail_spec.rb +291 -0
  160. data/spec/app/models/mdm/module_mixin_spec.rb +38 -0
  161. data/spec/app/models/mdm/module_platform_spec.rb +38 -0
  162. data/spec/app/models/mdm/module_ref_spec.rb +38 -0
  163. data/spec/app/models/mdm/module_target_spec.rb +41 -0
  164. data/spec/app/models/mdm/web_vuln_spec.rb +126 -0
  165. data/spec/dummy/Rakefile +7 -0
  166. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  167. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  168. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  169. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  170. data/spec/dummy/app/mailers/.gitkeep +0 -0
  171. data/spec/dummy/app/models/.gitkeep +0 -0
  172. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  173. data/spec/dummy/config.ru +4 -0
  174. data/spec/dummy/config/application.rb +61 -0
  175. data/spec/dummy/config/boot.rb +10 -0
  176. data/spec/dummy/config/database.yml.example +22 -0
  177. data/spec/dummy/config/database.yml.travis +22 -0
  178. data/spec/dummy/config/environment.rb +5 -0
  179. data/spec/dummy/config/environments/development.rb +37 -0
  180. data/spec/dummy/config/environments/production.rb +67 -0
  181. data/spec/dummy/config/environments/test.rb +37 -0
  182. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  183. data/spec/dummy/config/initializers/inflections.rb +15 -0
  184. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  185. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  186. data/spec/dummy/config/initializers/session_store.rb +8 -0
  187. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  188. data/spec/dummy/config/routes.rb +2 -0
  189. data/spec/dummy/db/schema.rb +639 -0
  190. data/spec/dummy/lib/assets/.gitkeep +0 -0
  191. data/spec/dummy/log/.gitkeep +0 -0
  192. data/spec/dummy/public/404.html +26 -0
  193. data/spec/dummy/public/422.html +26 -0
  194. data/spec/dummy/public/500.html +25 -0
  195. data/spec/dummy/public/favicon.ico +0 -0
  196. data/spec/dummy/script/rails +6 -0
  197. data/spec/factories/mdm/addresses.rb +7 -0
  198. data/spec/factories/mdm/hosts.rb +18 -0
  199. data/spec/factories/mdm/module_actions.rb +14 -0
  200. data/spec/factories/mdm/module_archs.rb +14 -0
  201. data/spec/factories/mdm/module_authors.rb +22 -0
  202. data/spec/factories/mdm/module_details.rb +9 -0
  203. data/spec/factories/mdm/module_mixins.rb +14 -0
  204. data/spec/factories/mdm/module_platforms.rb +14 -0
  205. data/spec/factories/mdm/module_refs.rb +14 -0
  206. data/spec/factories/mdm/module_targets.rb +19 -0
  207. data/spec/factories/mdm/services.rb +35 -0
  208. data/spec/factories/mdm/users.rb +22 -0
  209. data/spec/factories/mdm/web_sites.rb +8 -0
  210. data/spec/factories/mdm/web_vulns.rb +64 -0
  211. data/spec/factories/mdm/workspaces.rb +23 -0
  212. data/spec/lib/base64_serializer_spec.rb +174 -0
  213. data/spec/spec_helper.rb +36 -0
  214. metadata +472 -0
@@ -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
+
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
2
+
3
+ class Report < ActiveRecord::Base
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.find(: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
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
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
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
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
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
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
@@ -0,0 +1,34 @@
1
+ class AddVulnDetails < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :vuln_details do |t|
5
+ t.integer :vuln_id # Vuln table reference
6
+ t.float :cvss_score # 0.0 to 10.0
7
+ t.string :cvss_vector # Ex: (AV:N/AC:L/Au:N/C:C/I:C/A:C)(AV:N/AC:L/Au:N/C:C/I:C/A:C)
8
+
9
+ t.string :title # Short identifier
10
+ t.text :description # Plain text or HTML (trusted)
11
+ t.text :solution # Plain text or HTML (trusted)
12
+ t.binary :proof # Should be UTF-8, but may not be, sanitize on output
13
+ # Technically this duplicates vuln.info, but that field
14
+ # is poorly managed / handled today. Eventually we will
15
+ # replace vuln.info
16
+
17
+ # Nexpose-specific fields
18
+ t.integer :nx_console_id # NexposeConsole table reference
19
+ t.integer :nx_device_id # Reference from the Nexpose side
20
+ t.string :nx_vuln_id # 'jre-java-update-flaw'
21
+ t.float :nx_severity # 0-10
22
+ t.float :nx_pci_severity # 0-10
23
+ t.timestamp :nx_published # Normalized from "20081205T000000000"
24
+ t.timestamp :nx_added # Normalized from "20081205T000000000"
25
+ t.timestamp :nx_modified # Normalized from "20081205T000000000"
26
+ t.text :nx_tags # Comma separated
27
+
28
+ end
29
+ end
30
+
31
+ def self.down
32
+ drop_table :vuln_details
33
+ end
34
+ end
@@ -0,0 +1,16 @@
1
+ class AddHostDetails < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :host_details do |t|
5
+ t.integer :host_id # Host table reference
6
+
7
+ # Nexpose-specific fields
8
+ t.integer :nx_console_id # NexposeConsole table reference
9
+ t.integer :nx_device_id # Reference from the Nexpose side
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :host_details
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ class ExpandDetails < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ add_column :vuln_details, :nx_vuln_status, :text
5
+ add_column :vuln_details, :nx_proof_key, :text
6
+ add_column :vuln_details, :src, :string
7
+ add_column :host_details, :src, :string
8
+ end
9
+
10
+ def self.down
11
+ remove_column :vuln_details, :nx_vuln_status
12
+ remove_column :vuln_details, :nx_proof_key
13
+ remove_column :vuln_details, :src
14
+ remove_column :host_details, :src
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ class ExpandDetails2 < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ add_column :host_details, :nx_site_name, :string
5
+ add_column :host_details, :nx_site_importance, :string
6
+ add_column :host_details, :nx_scan_template, :string
7
+ add_column :host_details, :nx_risk_score, :float
8
+
9
+ add_column :vuln_details, :nx_scan_id, :integer
10
+ add_column :vuln_details, :nx_vulnerable_since, :timestamp
11
+ add_column :vuln_details, :nx_pci_compliance_status, :string
12
+ end
13
+
14
+ def self.down
15
+ remove_column :host_details, :nx_site_name
16
+ remove_column :host_details, :nx_site_importance
17
+ remove_column :host_details, :nx_scan_template
18
+ remove_column :host_details, :nx_risk_score
19
+
20
+ remove_column :vuln_details, :nx_scan_id
21
+ remove_column :vuln_details, :nx_vulnerable_since
22
+ remove_column :vuln_details, :nx_pci_compliance_status
23
+ end
24
+ end
@@ -0,0 +1,19 @@
1
+ class AddVulnAttempts < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :vuln_attempts do |t|
5
+ t.integer :vuln_id # Vuln table reference
6
+ t.timestamp :attempted_at # Timestamp of when the session was opened or the module exited
7
+ t.boolean :exploited # Whether or not the attempt succeeded
8
+ t.string :fail_reason # Short string corresponding to a Msf::Exploit::Failure constant
9
+ t.string :username # The user that tested this vulnerability
10
+ t.text :module # The specific module name that was used
11
+ t.integer :session_id # Database identifier of any opened session
12
+ t.integer :loot_id # Database identifier of any 'proof' loot (for non-session exploits)
13
+ end
14
+ end
15
+
16
+ def self.down
17
+ drop_table :vuln_attempts
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ class AddVulnAndHostCounterCaches < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ add_column :hosts, :host_detail_count, :integer, :default => 0
5
+ add_column :vulns, :vuln_detail_count, :integer, :default => 0
6
+ add_column :vulns, :vuln_attempt_count, :integer, :default => 0
7
+ end
8
+
9
+ def self.down
10
+ remove_column :hosts, :host_detail_count
11
+ remove_column :vulns, :vuln_detail_count
12
+ remove_column :vulns, :vuln_attempt_count
13
+ end
14
+ end
@@ -0,0 +1,118 @@
1
+ class AddModuleDetails < ActiveRecord::Migration
2
+
3
+ def self.up
4
+
5
+ create_table :module_details do |t|
6
+ t.timestamp :mtime # disk modified time
7
+ t.text :file # location on disk
8
+ t.string :mtype # exploit, auxiliary, post, etc
9
+ t.text :refname # module path (no type)
10
+ t.text :fullname # module path with type
11
+ t.text :name # module title
12
+ t.integer :rank # exploit rank
13
+ t.text :description #
14
+ t.string :license # MSF_LICENSE
15
+ t.boolean :privileged # true or false
16
+ t.timestamp :disclosure_date # Mar 10 2004
17
+ t.integer :default_target # 0
18
+ t.text :default_action # "scan"
19
+ t.string :stance # "passive"
20
+ t.boolean :ready # true/false
21
+ end
22
+
23
+ add_index :module_details, :refname
24
+ add_index :module_details, :name
25
+ add_index :module_details, :description
26
+ add_index :module_details, :mtype
27
+
28
+ create_table :module_authors do |t|
29
+ t.integer :module_detail_id
30
+ t.text :name
31
+ t.text :email
32
+ end
33
+ add_index :module_authors, :module_detail_id
34
+
35
+ create_table :module_mixins do |t|
36
+ t.integer :module_detail_id
37
+ t.text :name
38
+ end
39
+ add_index :module_mixins, :module_detail_id
40
+
41
+ create_table :module_targets do |t|
42
+ t.integer :module_detail_id
43
+ t.integer :index
44
+ t.text :name
45
+ end
46
+ add_index :module_targets, :module_detail_id
47
+
48
+ create_table :module_actions do |t|
49
+ t.integer :module_detail_id
50
+ t.text :name
51
+ end
52
+ add_index :module_actions, :module_detail_id
53
+
54
+ create_table :module_refs do |t|
55
+ t.integer :module_detail_id
56
+ t.text :name
57
+ end
58
+ add_index :module_refs, :module_detail_id
59
+ add_index :module_refs, :name
60
+
61
+ create_table :module_archs do |t|
62
+ t.integer :module_detail_id
63
+ t.text :name
64
+ end
65
+ add_index :module_archs, :module_detail_id
66
+
67
+ create_table :module_platforms do |t|
68
+ t.integer :module_detail_id
69
+ t.text :name
70
+ end
71
+ add_index :module_platforms, :module_detail_id
72
+
73
+ end
74
+
75
+ def self.down
76
+ remove_index :module_details, :refname
77
+ remove_index :module_details, :name
78
+ remove_index :module_details, :description
79
+ remove_index :module_details, :mtype
80
+
81
+ remove_index :module_authors, :module_detail_id
82
+ remove_index :module_mixins, :module_detail_id
83
+ remove_index :module_targets, :module_detail_id
84
+ remove_index :module_actions, :module_detail_id
85
+ remove_index :module_refs, :module_detail_id
86
+ remove_index :module_refs, :name
87
+ remove_index :module_archs, :module_detail_id
88
+ remove_index :module_platform, :module_detail_id
89
+
90
+ drop_table :module_details
91
+ drop_table :module_authors
92
+ drop_table :module_mixins
93
+ drop_table :module_targets
94
+ drop_table :module_actions
95
+ drop_table :module_refs
96
+ drop_table :module_archs
97
+ drop_table :module_platforms
98
+
99
+ end
100
+ end
101
+
102
+ =begin
103
+
104
+ Mdm::Host.find_by_sql("
105
+ SELECT
106
+ hosts.id, hosts.address, module_details.mtype AS mtype, module_details.refname AS mname, vulns.name AS vname, refs.name AS vref
107
+ FROM
108
+ hosts,vulns,vulns_refs,refs,module_refs,module_details
109
+ WHERE
110
+ hosts.id = vulns.host_id AND
111
+ vulns.id = vulns_refs.vuln_id AND
112
+ vulns_refs.ref_id = refs.id AND
113
+ refs.name = module_refs.name AND
114
+ module_refs.module_detail_id = modules_details.id
115
+ ").map{|x| [x.address, x.mname, x.vname, x.vref ] }
116
+
117
+
118
+ =end
@@ -0,0 +1,26 @@
1
+ class AddExploitAttempts < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :exploit_attempts do |t|
5
+ t.integer :host_id # Host table reference (primary)
6
+ t.integer :service_id # Service table reference (optional)
7
+ t.integer :vuln_id # Vuln table reference (optional)
8
+ t.timestamp :attempted_at # Timestamp of when the session was opened or the module exited
9
+ t.boolean :exploited # Whether or not the attempt succeeded
10
+ t.string :fail_reason # Short string corresponding to a Msf::Exploit::Failure constant
11
+ t.string :username # The user that tested this vulnerability
12
+ t.text :module # The specific module name that was used
13
+ t.integer :session_id # Database identifier of any opened session
14
+ t.integer :loot_id # Database identifier of any 'proof' loot (for non-session exploits)
15
+ t.integer :port # Port -> Services are created/destroyed frequently and failed
16
+ t.string :proto # Protocol | attempts may be against closed ports.
17
+ end
18
+
19
+ add_column :hosts, :exploit_attempt_count, :integer, :default => 0
20
+ end
21
+
22
+ def self.down
23
+ drop_table :exploit_attempts
24
+ remove_column :hosts, :exploit_attempt_count
25
+ end
26
+ end
@@ -0,0 +1,12 @@
1
+ class AddFailMessage < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ add_column :vuln_attempts, :fail_detail, :text
5
+ add_column :exploit_attempts, :fail_detail, :text
6
+ end
7
+
8
+ def self.down
9
+ remove_column :vuln_attempts, :fail_detail
10
+ remove_column :exploit_attempts, :fail_detail
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ class AddOwnerAndPayloadToWebVulns < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ add_column :web_vulns, :owner, :string
5
+ add_column :web_vulns, :payload, :text
6
+ end
7
+
8
+ def self.down
9
+ remove_column :web_vulns, :owner
10
+ remove_column :web_vulns, :payload
11
+ end
12
+
13
+ end
@@ -0,0 +1,35 @@
1
+ # Changes all the {COLUMNS} in the web_vulns table that are required for {Mdm::WebVuln}, but were previously
2
+ # :null => true
3
+ class ChangeRequiredColumnsToNullFalseInWebVulns < ActiveRecord::Migration
4
+ # Columns that were previously :null => true, but are actually required to be non-null, so should be
5
+ # :null => false
6
+ COLUMNS = [
7
+ :category,
8
+ :confidence,
9
+ :method,
10
+ :name,
11
+ :params,
12
+ :path,
13
+ :pname,
14
+ :proof,
15
+ :risk
16
+ ]
17
+ # Table in which {COLUMNS} are.
18
+ TABLE_NAME = :web_vulns
19
+
20
+ # Marks all the {COLUMNS} as :null => true
21
+ def down
22
+ COLUMNS.each do |column|
23
+ change_column_null(TABLE_NAME, column, true)
24
+ end
25
+ end
26
+
27
+ # Marks all the {COLUMNS} as :null => false
28
+ def up
29
+ COLUMNS.each do |column|
30
+ change_column_null(TABLE_NAME, column, false)
31
+ end
32
+ end
33
+
34
+
35
+ end