metasploit_data_models 0.23.1 → 0.23.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/models/mdm/host.rb +42 -33
- data/app/models/mdm/loot.rb +9 -0
- data/app/models/mdm/module/detail.rb +28 -7
- data/app/models/mdm/module/ref.rb +4 -4
- data/app/models/mdm/ref.rb +5 -5
- data/app/models/mdm/session.rb +18 -1
- data/app/models/mdm/user.rb +13 -0
- data/app/models/mdm/vuln.rb +16 -7
- data/app/models/mdm/workspace.rb +16 -8
- data/app/models/metasploit_data_models/automatic_exploitation.rb +5 -0
- data/app/models/metasploit_data_models/automatic_exploitation/match.rb +42 -0
- data/app/models/metasploit_data_models/automatic_exploitation/match_result.rb +40 -0
- data/app/models/metasploit_data_models/automatic_exploitation/match_set.rb +30 -0
- data/app/models/metasploit_data_models/automatic_exploitation/run.rb +27 -0
- data/app/models/metasploit_data_models/module_run.rb +213 -0
- data/app/validators/password_is_strong_validator.rb +5 -5
- data/db/migrate/20131002004641_create_automatic_exploitation_matches.rb +13 -0
- data/db/migrate/20131002164449_create_automatic_exploitation_match_sets.rb +12 -0
- data/db/migrate/20131008213344_create_automatic_exploitation_runs.rb +11 -0
- data/db/migrate/20131011184338_module_detail_on_automatic_exploitation_match.rb +10 -0
- data/db/migrate/20131017150735_create_automatic_exploitation_match_results.rb +11 -0
- data/db/migrate/20131021185657_make_match_polymorphic.rb +11 -0
- data/db/migrate/20150219173821_create_module_runs.rb +23 -0
- data/db/migrate/20150219215039_add_module_run_to_session.rb +8 -0
- data/db/migrate/20150226151459_add_module_run_fk_to_loot.rb +8 -0
- data/db/migrate/20150312155312_add_module_full_name_to_match.rb +6 -0
- data/db/migrate/20150326183742_add_missing_ae_indices.rb +13 -0
- data/lib/metasploit_data_models/version.rb +1 -1
- data/spec/app/models/mdm/host_spec.rb +28 -27
- data/spec/app/models/mdm/loot_spec.rb +1 -0
- data/spec/app/models/mdm/module/detail_spec.rb +2 -2
- data/spec/app/models/mdm/session_spec.rb +21 -18
- data/spec/app/models/mdm/vuln_spec.rb +9 -10
- data/spec/app/models/metasploit_data_models/automatic_exploitation/match_result_spec.rb +88 -0
- data/spec/app/models/metasploit_data_models/automatic_exploitation/match_set_spec.rb +48 -0
- data/spec/app/models/metasploit_data_models/automatic_exploitation/match_spec.rb +25 -0
- data/spec/app/models/metasploit_data_models/automatic_exploitation/run_spec.rb +40 -0
- data/spec/app/models/metasploit_data_models/module_run_spec.rb +136 -0
- data/spec/dummy/db/structure.sql +369 -2
- data/spec/factories/mdm/module/details.rb +21 -21
- data/spec/factories/metasploit_data_models/automatic_exploitation/match_results.rb +7 -0
- data/spec/factories/metasploit_data_models/automatic_exploitation/match_sets.rb +8 -0
- data/spec/factories/metasploit_data_models/automatic_exploitation/matches.rb +6 -0
- data/spec/factories/metasploit_data_models/automatic_exploitation/runs.rb +6 -0
- data/spec/factories/module_runs.rb +40 -0
- metadata +30 -172
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4779d55987df4d62d75eaad7b3f5e40b0b880510
|
4
|
+
data.tar.gz: a87a7b50dae2bc02d2ea544290eeae4c406047fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8be1a0f211354eda1de426d22ba9b1ccb81627ab9f0abde742af2b4ce90defd4632650bf8f237c83495c7db9c5c0c4eec499eabf94c48882dcc03f4a9029252a
|
7
|
+
data.tar.gz: fc93045d392e8107af1b77619742fd1743f49df7fac46259e48a44e57a5df9d45461f87694b4889b15e73a8c7b38f2509d39dbdf678e875fc4e0e72b02d07047
|
data/app/models/mdm/host.rb
CHANGED
@@ -66,7 +66,7 @@ class Mdm::Host < ActiveRecord::Base
|
|
66
66
|
# @!attribute [rw] clients
|
67
67
|
# Users connected to this host
|
68
68
|
#
|
69
|
-
# @return [
|
69
|
+
# @return [ActiveRecord::Relation<Mdm::Client>]
|
70
70
|
has_many :clients,
|
71
71
|
class_name: 'Mdm::Client',
|
72
72
|
dependent: :destroy,
|
@@ -84,7 +84,7 @@ class Mdm::Host < ActiveRecord::Base
|
|
84
84
|
# @!attribute [rw] task_hosts
|
85
85
|
# Details about what Tasks touched this host
|
86
86
|
#
|
87
|
-
# @return [
|
87
|
+
# @return [ActiveRecord::Relation<Mdm::TaskHost>]
|
88
88
|
has_many :task_hosts,
|
89
89
|
class_name: 'Mdm::TaskHost',
|
90
90
|
dependent: :destroy,
|
@@ -93,7 +93,7 @@ class Mdm::Host < ActiveRecord::Base
|
|
93
93
|
# @!attribute [rw] exploit_attempts
|
94
94
|
# Attempts to run exploits against this host.
|
95
95
|
#
|
96
|
-
# @return [
|
96
|
+
# @return [ActiveRecord::Relation<Mdm::ExploitAttempt]
|
97
97
|
has_many :exploit_attempts,
|
98
98
|
class_name: 'Mdm::ExploitAttempt',
|
99
99
|
dependent: :destroy,
|
@@ -108,7 +108,7 @@ class Mdm::Host < ActiveRecord::Base
|
|
108
108
|
inverse_of: :host
|
109
109
|
|
110
110
|
# @!attribute [rw] host_details
|
111
|
-
# @return [
|
111
|
+
# @return [ActiveRecord::Relation<Mdm::HostDetail>]
|
112
112
|
has_many :host_details,
|
113
113
|
class_name: 'Mdm::HostDetail',
|
114
114
|
dependent: :destroy,
|
@@ -138,7 +138,7 @@ class Mdm::Host < ActiveRecord::Base
|
|
138
138
|
# @!attribute [rw] notes
|
139
139
|
# Notes about the host entered by a user with {Mdm::Note#created_at oldest notes} first.
|
140
140
|
#
|
141
|
-
# @return [
|
141
|
+
# @return [ActiveRecord::Relation<Mdm::Note>]
|
142
142
|
has_many :notes,
|
143
143
|
class_name: 'Mdm::Note',
|
144
144
|
inverse_of: :host,
|
@@ -149,7 +149,7 @@ class Mdm::Host < ActiveRecord::Base
|
|
149
149
|
# The services running on {Mdm::Service#port ports} on the host with services ordered by {Mdm::Service#port port}
|
150
150
|
# and {Mdm::Service#proto protocol}.
|
151
151
|
#
|
152
|
-
# @return [
|
152
|
+
# @return [ActiveRecord::Relation<Mdm::Service>]
|
153
153
|
has_many :services,
|
154
154
|
class_name: 'Mdm::Service',
|
155
155
|
dependent: :destroy,
|
@@ -160,7 +160,7 @@ class Mdm::Host < ActiveRecord::Base
|
|
160
160
|
# Sessions that are open or previously were open on the host ordered by {Mdm::Session#opened_at when the session was
|
161
161
|
# opened}
|
162
162
|
#
|
163
|
-
# @return [
|
163
|
+
# @return [ActiveRecord::Relation<Mdm::Session]
|
164
164
|
has_many :sessions,
|
165
165
|
class_name: 'Mdm::Session',
|
166
166
|
dependent: :destroy,
|
@@ -170,7 +170,7 @@ class Mdm::Host < ActiveRecord::Base
|
|
170
170
|
# @!attribute [rw] vulns
|
171
171
|
# Vulnerabilities found on the host.
|
172
172
|
#
|
173
|
-
# @return [
|
173
|
+
# @return [ActiveRecord::Relation<Mdm::Vuln>]
|
174
174
|
has_many :vulns,
|
175
175
|
class_name: 'Mdm::Vuln',
|
176
176
|
dependent: :delete_all,
|
@@ -191,7 +191,7 @@ class Mdm::Host < ActiveRecord::Base
|
|
191
191
|
# @!attribute [r] tags
|
192
192
|
# The tags on this host. Tags are used to filter hosts.
|
193
193
|
#
|
194
|
-
# @return [
|
194
|
+
# @return [ActiveRecord::Relation<Mdm::Tag>]
|
195
195
|
# @see #hosts_tags
|
196
196
|
has_many :tags, :class_name => 'Mdm::Tag', :through => :hosts_tags
|
197
197
|
|
@@ -202,14 +202,14 @@ class Mdm::Host < ActiveRecord::Base
|
|
202
202
|
# @!attribute [r] creds
|
203
203
|
# Credentials captured from {#services}.
|
204
204
|
#
|
205
|
-
# @return [
|
205
|
+
# @return [ActiveRecord::Relation<Mdm::Cred>]
|
206
206
|
# @see #services
|
207
207
|
has_many :creds, :class_name => 'Mdm::Cred', :through => :services
|
208
208
|
|
209
209
|
# @!attribute [r] service_notes
|
210
210
|
# {Mdm::Note Notes} about {#services} running on this host.
|
211
211
|
#
|
212
|
-
# @return [
|
212
|
+
# @return [ActiveRecord::Relation<Mdm::Note>]
|
213
213
|
# @see #services
|
214
214
|
has_many :service_notes,
|
215
215
|
class_name: 'Mdm::Note',
|
@@ -219,10 +219,20 @@ class Mdm::Host < ActiveRecord::Base
|
|
219
219
|
# @!attribute [r] web_sites
|
220
220
|
# {Mdm::WebSite Web sites} running on top of {#services} on this host.
|
221
221
|
#
|
222
|
-
# @return [
|
222
|
+
# @return [ActiveRecord::Relation<Mdm::WebSite>]
|
223
223
|
# @see services
|
224
224
|
has_many :web_sites, :class_name => 'Mdm::WebSite', :through => :services
|
225
225
|
|
226
|
+
# @!attribute [r] module_runs
|
227
|
+
# Records of Metasploit modules being run on/against this {Mdm::Host}
|
228
|
+
#
|
229
|
+
# @return [ActiveRecord::Relation<MetasploitDataModels::ModuleRun>]
|
230
|
+
# @see services
|
231
|
+
has_many :module_runs,
|
232
|
+
class_name: 'MetasploitDataModels::ModuleRun',
|
233
|
+
as: :trackable
|
234
|
+
|
235
|
+
|
226
236
|
#
|
227
237
|
# through: :task_hosts
|
228
238
|
#
|
@@ -235,49 +245,49 @@ class Mdm::Host < ActiveRecord::Base
|
|
235
245
|
class_name: 'Mdm::Task',
|
236
246
|
through: :task_hosts
|
237
247
|
|
238
|
-
|
239
|
-
|
240
|
-
|
248
|
+
#
|
249
|
+
# Through vulns
|
250
|
+
#
|
241
251
|
|
242
252
|
# @!attribute [r] vuln_refs
|
243
253
|
# Join model between {#vulns} and {#refs}. Use either of those asssociations instead of this join model.
|
244
254
|
#
|
245
255
|
# @todo https://www.pivotaltracker.com/story/show/49004623
|
246
|
-
# @return [
|
256
|
+
# @return [ActiveRecord::Relation<Mdm::VulnRef>]
|
247
257
|
# @see #refs
|
248
258
|
# @see #vulns
|
249
|
-
|
259
|
+
has_many :vuln_refs, :class_name => 'Mdm::VulnRef', :source => :vulns_refs, :through => :vulns
|
250
260
|
|
251
|
-
|
252
|
-
|
253
|
-
|
261
|
+
#
|
262
|
+
# Through vuln_refs
|
263
|
+
#
|
254
264
|
|
255
265
|
# @!attribute [r] refs
|
256
266
|
# External references, such as CVE, to vulnerabilities found on this host.
|
257
267
|
#
|
258
|
-
# @return [
|
268
|
+
# @return [ActiveRecord::Relation<Mdm::Ref>]
|
259
269
|
# @see #vuln_refs
|
260
|
-
|
270
|
+
has_many :refs, :class_name => 'Mdm::Ref', :through => :vuln_refs
|
261
271
|
|
262
|
-
|
263
|
-
|
264
|
-
|
272
|
+
#
|
273
|
+
# Through refs
|
274
|
+
#
|
265
275
|
|
266
276
|
# @!attribute [r] module_refs
|
267
277
|
# {Mdm::Module::Ref References for modules} for {Mdm::Ref references for vulnerabilities}.
|
268
278
|
#
|
269
|
-
# @return [
|
270
|
-
|
279
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Ref>]
|
280
|
+
has_many :module_refs, :class_name => 'Mdm::Module::Ref', :through => :refs
|
271
281
|
|
272
|
-
|
273
|
-
|
274
|
-
|
282
|
+
#
|
283
|
+
# Through module_refs
|
284
|
+
#
|
275
285
|
|
276
286
|
# @!attribute [r] module_details
|
277
287
|
# {Mdm::Module::Detail Details about modules} that were used to find {#vulns vulnerabilities} on this host.
|
278
288
|
#
|
279
|
-
# @return [
|
280
|
-
|
289
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Detail]
|
290
|
+
has_many :module_details,
|
281
291
|
:class_name => 'Mdm::Module::Detail',
|
282
292
|
:source =>:detail,
|
283
293
|
:through => :module_refs,
|
@@ -571,4 +581,3 @@ class Mdm::Host < ActiveRecord::Base
|
|
571
581
|
|
572
582
|
Metasploit::Concern.run(self)
|
573
583
|
end
|
574
|
-
|
data/app/models/mdm/loot.rb
CHANGED
@@ -32,6 +32,15 @@ class Mdm::Loot < ActiveRecord::Base
|
|
32
32
|
class_name: 'Mdm::Host',
|
33
33
|
inverse_of: :loots
|
34
34
|
|
35
|
+
# @!attribute [rw] module_run
|
36
|
+
# The run of Metasploit content that acquired the loot
|
37
|
+
#
|
38
|
+
# @return [MetasploitDataModels::ModuleRun]
|
39
|
+
belongs_to :module_run,
|
40
|
+
class_name: 'MetasploitDataModels::ModuleRun',
|
41
|
+
foreign_key: :module_run_id,
|
42
|
+
inverse_of: :loots
|
43
|
+
|
35
44
|
# @!attribute [rw] service
|
36
45
|
# The service running on the {#host} from which the loot was gathered.
|
37
46
|
#
|
@@ -49,44 +49,65 @@ class Mdm::Module::Detail < ActiveRecord::Base
|
|
49
49
|
# @!attribute [rw] actions
|
50
50
|
# Auxiliary actions to perform when this running this module.
|
51
51
|
#
|
52
|
-
# @return [
|
52
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Action>]
|
53
53
|
has_many :actions, :class_name => 'Mdm::Module::Action', :dependent => :destroy
|
54
54
|
|
55
55
|
# @!attribute [rw] archs
|
56
56
|
# Architectures supported by this module.
|
57
57
|
#
|
58
|
-
# @return [
|
58
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Arch>]
|
59
59
|
has_many :archs, :class_name => 'Mdm::Module::Arch', :dependent => :destroy
|
60
60
|
|
61
61
|
# @!attribute [rw] authors
|
62
62
|
# Authors (and their emails) of this module. Usually includes the original discoverer who wrote the
|
63
63
|
# proof-of-concept and then the people that ported the proof-of-concept to metasploit-framework.
|
64
64
|
#
|
65
|
-
# @return [
|
65
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Mixin>]
|
66
66
|
has_many :authors, :class_name => 'Mdm::Module::Author', :dependent => :destroy
|
67
67
|
|
68
|
+
# @!attribute [rw] matches
|
69
|
+
# Matches for this module
|
70
|
+
#
|
71
|
+
# @return [ActiveRecord::Relation<MetasploitDataModels::AutomaticExploitation::Match>]
|
72
|
+
has_many :matches,
|
73
|
+
:class_name => 'MetasploitDataModels::AutomaticExploitation::Match',
|
74
|
+
:dependent => :destroy,
|
75
|
+
:primary_key => :fullname,
|
76
|
+
:foreign_key => :module_fullname,
|
77
|
+
:inverse_of => :module_detail
|
78
|
+
|
68
79
|
# @!attribute [rw] mixins
|
69
80
|
# Mixins used by this module.
|
70
81
|
#
|
71
|
-
# @return [
|
82
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Mixin>]
|
72
83
|
has_many :mixins, :class_name => 'Mdm::Module::Mixin', :dependent => :destroy
|
73
84
|
|
85
|
+
# @!attribute [rw] module_runs
|
86
|
+
# Records of times when this module has been used
|
87
|
+
#
|
88
|
+
# @return [ActiveRecord::Relation<MetasploitDataModels::ModuleRun>]
|
89
|
+
has_many :module_runs,
|
90
|
+
:class_name => 'MetasploitDataModels::ModuleRun',
|
91
|
+
:primary_key => :fullname,
|
92
|
+
:foreign_key => :module_fullname,
|
93
|
+
:inverse_of => :module_detail
|
94
|
+
|
74
95
|
# @!attribute [rw] platforms
|
75
96
|
# Platforms supported by this module.
|
76
97
|
#
|
77
|
-
# @return [
|
98
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Platform>]
|
78
99
|
has_many :platforms, :class_name => 'Mdm::Module::Platform', :dependent => :destroy
|
79
100
|
|
80
101
|
# @!attribute [rw] refs
|
81
102
|
# External references to the vulnerabilities this module exploits.
|
82
103
|
#
|
83
|
-
# @return [
|
104
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Ref>]
|
84
105
|
has_many :refs, :class_name => 'Mdm::Module::Ref', :dependent => :destroy
|
85
106
|
|
86
107
|
# @!attribute [rw] targets
|
87
108
|
# Names of targets with different configurations that can be exploited by this module.
|
88
109
|
#
|
89
|
-
# @return [
|
110
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Target>]
|
90
111
|
has_many :targets, :class_name => 'Mdm::Module::Target', :dependent => :destroy
|
91
112
|
|
92
113
|
#
|
@@ -16,10 +16,10 @@ class Mdm::Module::Ref < ActiveRecord::Base
|
|
16
16
|
# References with the same name attached to {Mdm::Vuln Mdm::Vulns}.
|
17
17
|
#
|
18
18
|
# @return [Array<Mdm::Ref>]
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
has_many :refs,
|
20
|
+
:class_name => 'Mdm::Ref',
|
21
|
+
:foreign_key => :name,
|
22
|
+
:primary_key => :name
|
23
23
|
|
24
24
|
#
|
25
25
|
# Attributes
|
data/app/models/mdm/ref.rb
CHANGED
@@ -10,15 +10,15 @@ class Mdm::Ref < ActiveRecord::Base
|
|
10
10
|
# {Mdm::Module::Ref Mdm::Module::Refs} with the same name as this ref.
|
11
11
|
#
|
12
12
|
# @return [Array<Mdm::Module::Ref>]
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
has_many :module_refs,
|
14
|
+
:class_name => 'Mdm::Module::Ref',
|
15
|
+
:foreign_key => :name,
|
16
|
+
:primary_key => :name
|
17
17
|
|
18
18
|
# @!attribute [rw] vulns_refs
|
19
19
|
# Join model to {Mdm::Vuln Mdm::Vulns}. Use {#vulns} to get the actual {Mdm::Vuln Mdm::Vulns}.
|
20
20
|
#
|
21
|
-
|
21
|
+
# @todo MSP-3066
|
22
22
|
# @return [Array<Mdm::VulnRef>]
|
23
23
|
has_many :vulns_refs,
|
24
24
|
:class_name => 'Mdm::VulnRef',
|
data/app/models/mdm/session.rb
CHANGED
@@ -34,12 +34,29 @@ class Mdm::Session < ActiveRecord::Base
|
|
34
34
|
# @!attribute [rw] routes
|
35
35
|
# Routes tunneled throug this session.
|
36
36
|
#
|
37
|
-
# @return [
|
37
|
+
# @return [ActiveRecord::Relation<Mdm::Route>]
|
38
38
|
has_many :routes,
|
39
39
|
class_name: 'Mdm::Route',
|
40
40
|
dependent: :delete_all,
|
41
41
|
inverse_of: :session
|
42
42
|
|
43
|
+
# @!attribute [rw] originating_module_run
|
44
|
+
# Records the Metasploit modules run that created this session
|
45
|
+
#
|
46
|
+
# @return [MetasploitDataModels::ModuleRun]
|
47
|
+
belongs_to :originating_module_run,
|
48
|
+
class_name: 'MetasploitDataModels::ModuleRun',
|
49
|
+
foreign_key: :module_run_id,
|
50
|
+
inverse_of: :spawned_session
|
51
|
+
|
52
|
+
# @!attribute [rw] target_module_runs
|
53
|
+
# Records the Metasploit modules run on this session
|
54
|
+
#
|
55
|
+
# @return [ActiveRecord::Relation<MetasploitDataModels::ModuleRun>]
|
56
|
+
has_many :target_module_runs,
|
57
|
+
class_name: 'MetasploitDataModels::ModuleRun',
|
58
|
+
inverse_of: :target_session
|
59
|
+
|
43
60
|
# @!attribute vuln_attempt
|
44
61
|
# Vulnerability attempt that created this session.
|
45
62
|
#
|
data/app/models/mdm/user.rb
CHANGED
@@ -5,15 +5,28 @@ class Mdm::User < ActiveRecord::Base
|
|
5
5
|
# Relations
|
6
6
|
#
|
7
7
|
|
8
|
+
has_many :automatic_exploitation_runs,
|
9
|
+
class_name: 'MetasploitDataModels::AutomaticExploitation::Run',
|
10
|
+
inverse_of: :user
|
11
|
+
|
12
|
+
has_many :automatic_exploitation_match_sets,
|
13
|
+
class_name: 'MetasploitDataModels::AutomaticExploitation::MatchSet',
|
14
|
+
inverse_of: :user
|
15
|
+
|
8
16
|
has_many :owned_workspaces,
|
9
17
|
class_name: 'Mdm::Workspace',
|
10
18
|
foreign_key: 'owner_id',
|
11
19
|
inverse_of: :owner
|
12
20
|
|
21
|
+
has_many :module_runs,
|
22
|
+
class_name: 'MetasploitDataModels::ModuleRun',
|
23
|
+
inverse_of: :user
|
24
|
+
|
13
25
|
has_many :tags,
|
14
26
|
class_name: 'Mdm::Tag',
|
15
27
|
inverse_of: :user
|
16
28
|
|
29
|
+
|
17
30
|
has_and_belongs_to_many :workspaces, :join_table => 'workspace_members', :uniq => true, :class_name => 'Mdm::Workspace'
|
18
31
|
|
19
32
|
#
|
data/app/models/mdm/vuln.rb
CHANGED
@@ -32,7 +32,7 @@ class Mdm::Vuln < ActiveRecord::Base
|
|
32
32
|
# @!attribute [rw] vuln_attempts
|
33
33
|
# Attempts to exploit this vulnerability.
|
34
34
|
#
|
35
|
-
# @return [
|
35
|
+
# @return [ActiveRecord::Relation<Mdm::VulnAttempt>]
|
36
36
|
has_many :vuln_attempts,
|
37
37
|
class_name: 'Mdm::VulnAttempt',
|
38
38
|
dependent: :destroy,
|
@@ -41,7 +41,7 @@ class Mdm::Vuln < ActiveRecord::Base
|
|
41
41
|
# @!attribute [rw] vuln_details
|
42
42
|
# Additional information about this vulnerability.
|
43
43
|
#
|
44
|
-
# @return [
|
44
|
+
# @return [ActiveRecord::Relation<Mdm::VulnDetail>]
|
45
45
|
has_many :vuln_details,
|
46
46
|
class_name: 'Mdm::VulnDetail',
|
47
47
|
dependent: :destroy,
|
@@ -50,7 +50,7 @@ class Mdm::Vuln < ActiveRecord::Base
|
|
50
50
|
# @!attribute [rw] vulns_refs
|
51
51
|
# Join model that joins this vuln to its {Mdm::Ref external references}.
|
52
52
|
#
|
53
|
-
# @return [
|
53
|
+
# @return [ActiveRecord::Relation<Mdm::VulnRef>]
|
54
54
|
has_many :vulns_refs,
|
55
55
|
class_name: 'Mdm::VulnRef',
|
56
56
|
dependent: :destroy,
|
@@ -59,7 +59,7 @@ class Mdm::Vuln < ActiveRecord::Base
|
|
59
59
|
# @!attribute [rw] notes
|
60
60
|
# Notes about the vuln entered by a user with {Mdm::Note#created_at oldest notes} first.
|
61
61
|
#
|
62
|
-
# @return [
|
62
|
+
# @return [<ActiveRecord::RelationMdm::Note>]
|
63
63
|
has_many :notes,
|
64
64
|
class_name: 'Mdm::Note',
|
65
65
|
inverse_of: :vuln,
|
@@ -73,7 +73,7 @@ class Mdm::Vuln < ActiveRecord::Base
|
|
73
73
|
# @!attribute [r] refs
|
74
74
|
# External references to this vulnerability.
|
75
75
|
#
|
76
|
-
# @return [
|
76
|
+
# @return [ActiveRecord::Relation<Mdm::Ref>]
|
77
77
|
has_many :refs, :class_name => 'Mdm::Ref', :through => :vulns_refs
|
78
78
|
|
79
79
|
#
|
@@ -83,9 +83,18 @@ class Mdm::Vuln < ActiveRecord::Base
|
|
83
83
|
# @!attribute [r] module_refs
|
84
84
|
# References in module that match {Mdm::Ref#name names} in {#refs}.
|
85
85
|
#
|
86
|
-
# @return [
|
86
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Ref>]
|
87
87
|
has_many :module_refs, :class_name => 'Mdm::Module::Ref', :through => :refs
|
88
88
|
|
89
|
+
|
90
|
+
# @!attribute [r] module_runs
|
91
|
+
# References to times that a module has been run to exercise this vuln
|
92
|
+
#
|
93
|
+
# @return [ActiveRecord::Relation<MetasploitDataModels::ModuleRun>]
|
94
|
+
has_many :module_runs,
|
95
|
+
class_name: 'MetasploitDataModels::ModuleRun',
|
96
|
+
as: :trackable
|
97
|
+
|
89
98
|
#
|
90
99
|
# Through module_refs
|
91
100
|
#
|
@@ -93,7 +102,7 @@ class Mdm::Vuln < ActiveRecord::Base
|
|
93
102
|
# @!attribute [r] module_details
|
94
103
|
# {Mdm::Module::Detail Modules} that share the same external references as this vuln.
|
95
104
|
#
|
96
|
-
# @return [
|
105
|
+
# @return [ActiveRecord::Relation<Mdm::Module::Detail>]
|
97
106
|
has_many :module_details,
|
98
107
|
:class_name => 'Mdm::Module::Detail',
|
99
108
|
:source => :detail,
|