metasploit_data_models 6.0.13 → 6.0.15
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/session.rb +26 -0
- data/app/models/mdm/session_tag.rb +51 -0
- data/app/models/mdm/tag.rb +6 -0
- data/db/migrate/20251231162000_add_session_tags.rb +14 -0
- data/lib/metasploit_data_models/version.rb +1 -1
- data/metasploit_data_models.gemspec +0 -1
- data/spec/dummy/db/structure.sql +53 -0
- metadata +3 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d4d011d8005f59d1f1f2395ec7bd72aeffcb88fcd8a6e701b05ae4150f822a1a
|
|
4
|
+
data.tar.gz: f0e9c11fdd9167932491e4d9c97b877e82ff296d30b45c60c771f15e60cab87c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 980eb17b3a2fa52fd7410cd06e015e0cc3263de2791b622a2b8a46a4c83e19672cfdc53e6fcd28c6ecda05cefbe0cf094113c5d0b1586de4eb2a1a5f9ed919d6
|
|
7
|
+
data.tar.gz: 4e7f6dc83030e7520a3c3349ed8513163074bfa2efee28c66e486c79795c5ff1cc82023adfd06a080b45dc9c06b8b338457c3c33b0d7f781967e8dc1f67a69b7
|
data/app/models/mdm/session.rb
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# A session opened on a {#host} using an {#via_exploit exploit} and controlled through a {#via_payload payload} to
|
|
2
2
|
# connect back to the local host using meterpreter or a cmd shell.
|
|
3
3
|
class Mdm::Session < ApplicationRecord
|
|
4
|
+
extend ActiveSupport::Autoload
|
|
5
|
+
|
|
6
|
+
include Metasploit::Model::Search
|
|
7
|
+
|
|
8
|
+
require_relative 'session_tag'
|
|
4
9
|
|
|
5
10
|
#
|
|
6
11
|
# Associations
|
|
@@ -67,6 +72,27 @@ class Mdm::Session < ApplicationRecord
|
|
|
67
72
|
class_name: 'Mdm::VulnAttempt',
|
|
68
73
|
inverse_of: :session
|
|
69
74
|
|
|
75
|
+
# @!attribute sessions_tags
|
|
76
|
+
# A join model between {Mdm::Tag} and {Mdm::Session}. Use {#tags} to get the actual {Mdm::Tag Mdm::Tags} on this host.
|
|
77
|
+
#
|
|
78
|
+
# @todo MSP-2723
|
|
79
|
+
# @return [ActiveRecord::Relation<Mdm::SessionTag>]
|
|
80
|
+
has_many :sessions_tags,
|
|
81
|
+
class_name: 'Mdm::SessionTag',
|
|
82
|
+
dependent: :destroy,
|
|
83
|
+
inverse_of: :session
|
|
84
|
+
|
|
85
|
+
#
|
|
86
|
+
# Through sessions_tags
|
|
87
|
+
#
|
|
88
|
+
|
|
89
|
+
# @!attribute [r] tags
|
|
90
|
+
# The tags on this session. Tags are used to filter sessions.
|
|
91
|
+
#
|
|
92
|
+
# @return [ActiveRecord::Relation<Mdm::Tag>]
|
|
93
|
+
# @see #sessions_tags
|
|
94
|
+
has_many :tags, :class_name => 'Mdm::Tag', :through => :sessions_tags
|
|
95
|
+
|
|
70
96
|
#
|
|
71
97
|
# Through :host
|
|
72
98
|
#
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Join model between {Mdm::Host} and {Mdm::Tag}.
|
|
2
|
+
class Mdm::SessionTag < ApplicationRecord
|
|
3
|
+
self.table_name = "sessions_tags"
|
|
4
|
+
|
|
5
|
+
#
|
|
6
|
+
# Associations
|
|
7
|
+
#
|
|
8
|
+
|
|
9
|
+
# Session with {#tag}.
|
|
10
|
+
#
|
|
11
|
+
# @todo MSP-2723
|
|
12
|
+
belongs_to :session,
|
|
13
|
+
class_name: 'Mdm::Session',
|
|
14
|
+
inverse_of: :sessions_tags
|
|
15
|
+
|
|
16
|
+
# Tag on {#host}.
|
|
17
|
+
#
|
|
18
|
+
# @todo MSP-2723
|
|
19
|
+
belongs_to :tag,
|
|
20
|
+
class_name: 'Mdm::Tag',
|
|
21
|
+
inverse_of: :sessions_tags
|
|
22
|
+
|
|
23
|
+
#
|
|
24
|
+
# Callbacks
|
|
25
|
+
#
|
|
26
|
+
|
|
27
|
+
# @see http://stackoverflow.com/a/11694704
|
|
28
|
+
after_destroy :destroy_orphan_tag
|
|
29
|
+
|
|
30
|
+
#
|
|
31
|
+
# Instance Methods
|
|
32
|
+
#
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
# Destroys {#tag} if it is orphaned
|
|
37
|
+
#
|
|
38
|
+
# @see http://stackoverflow.com/a/11694704
|
|
39
|
+
# @return [void]
|
|
40
|
+
def destroy_orphan_tag
|
|
41
|
+
# ensure fresh load of tag record
|
|
42
|
+
# in theory this will always return one result safe navigation is just "extra"
|
|
43
|
+
Mdm::Tag.where(id: tag.id).first&.destroy_if_orphaned
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# switch back to public for load hooks
|
|
47
|
+
public
|
|
48
|
+
|
|
49
|
+
Metasploit::Concern.run(self)
|
|
50
|
+
end
|
|
51
|
+
|
data/app/models/mdm/tag.rb
CHANGED
|
@@ -12,6 +12,12 @@ class Mdm::Tag < ApplicationRecord
|
|
|
12
12
|
dependent: :destroy,
|
|
13
13
|
inverse_of: :tag
|
|
14
14
|
|
|
15
|
+
# Joins {#sessions} to this tag.
|
|
16
|
+
has_many :sessions_tags,
|
|
17
|
+
class_name: 'Mdm::SessionTag',
|
|
18
|
+
dependent: :destroy,
|
|
19
|
+
inverse_of: :tag
|
|
20
|
+
|
|
15
21
|
# User that created this tag.
|
|
16
22
|
belongs_to :user,
|
|
17
23
|
class_name: 'Mdm::User',
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
class AddSessionTags < ActiveRecord::Migration[7.0]
|
|
2
|
+
|
|
3
|
+
def change
|
|
4
|
+
create_table :sessions_tags do |t|
|
|
5
|
+
t.integer :session_id
|
|
6
|
+
t.integer :tag_id
|
|
7
|
+
end
|
|
8
|
+
add_index :sessions_tags, [:session_id, :tag_id], unique: true
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def self.down
|
|
12
|
+
drop_table :sessions_tags
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -39,7 +39,6 @@ Gem::Specification.new do |s|
|
|
|
39
39
|
s.add_runtime_dependency 'metasploit-model', '~>5.0.4'
|
|
40
40
|
s.add_runtime_dependency 'railties', '~>7.0'
|
|
41
41
|
s.add_runtime_dependency 'webrick'
|
|
42
|
-
s.add_runtime_dependency 'concurrent-ruby', '<1.3.5'
|
|
43
42
|
|
|
44
43
|
# os fingerprinting
|
|
45
44
|
s.add_runtime_dependency 'recog'
|
data/spec/dummy/db/structure.sql
CHANGED
|
@@ -1456,6 +1456,36 @@ CREATE SEQUENCE public.sessions_id_seq
|
|
|
1456
1456
|
ALTER SEQUENCE public.sessions_id_seq OWNED BY public.sessions.id;
|
|
1457
1457
|
|
|
1458
1458
|
|
|
1459
|
+
--
|
|
1460
|
+
-- Name: sessions_tags; Type: TABLE; Schema: public; Owner: -
|
|
1461
|
+
--
|
|
1462
|
+
|
|
1463
|
+
CREATE TABLE public.sessions_tags (
|
|
1464
|
+
id bigint NOT NULL,
|
|
1465
|
+
session_id integer,
|
|
1466
|
+
tag_id integer
|
|
1467
|
+
);
|
|
1468
|
+
|
|
1469
|
+
|
|
1470
|
+
--
|
|
1471
|
+
-- Name: sessions_tags_id_seq; Type: SEQUENCE; Schema: public; Owner: -
|
|
1472
|
+
--
|
|
1473
|
+
|
|
1474
|
+
CREATE SEQUENCE public.sessions_tags_id_seq
|
|
1475
|
+
START WITH 1
|
|
1476
|
+
INCREMENT BY 1
|
|
1477
|
+
NO MINVALUE
|
|
1478
|
+
NO MAXVALUE
|
|
1479
|
+
CACHE 1;
|
|
1480
|
+
|
|
1481
|
+
|
|
1482
|
+
--
|
|
1483
|
+
-- Name: sessions_tags_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
|
|
1484
|
+
--
|
|
1485
|
+
|
|
1486
|
+
ALTER SEQUENCE public.sessions_tags_id_seq OWNED BY public.sessions_tags.id;
|
|
1487
|
+
|
|
1488
|
+
|
|
1459
1489
|
--
|
|
1460
1490
|
-- Name: tags; Type: TABLE; Schema: public; Owner: -
|
|
1461
1491
|
--
|
|
@@ -2432,6 +2462,13 @@ ALTER TABLE ONLY public.session_events ALTER COLUMN id SET DEFAULT nextval('publ
|
|
|
2432
2462
|
ALTER TABLE ONLY public.sessions ALTER COLUMN id SET DEFAULT nextval('public.sessions_id_seq'::regclass);
|
|
2433
2463
|
|
|
2434
2464
|
|
|
2465
|
+
--
|
|
2466
|
+
-- Name: sessions_tags id; Type: DEFAULT; Schema: public; Owner: -
|
|
2467
|
+
--
|
|
2468
|
+
|
|
2469
|
+
ALTER TABLE ONLY public.sessions_tags ALTER COLUMN id SET DEFAULT nextval('public.sessions_tags_id_seq'::regclass);
|
|
2470
|
+
|
|
2471
|
+
|
|
2435
2472
|
--
|
|
2436
2473
|
-- Name: tags id; Type: DEFAULT; Schema: public; Owner: -
|
|
2437
2474
|
--
|
|
@@ -2886,6 +2923,14 @@ ALTER TABLE ONLY public.sessions
|
|
|
2886
2923
|
ADD CONSTRAINT sessions_pkey PRIMARY KEY (id);
|
|
2887
2924
|
|
|
2888
2925
|
|
|
2926
|
+
--
|
|
2927
|
+
-- Name: sessions_tags sessions_tags_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
2928
|
+
--
|
|
2929
|
+
|
|
2930
|
+
ALTER TABLE ONLY public.sessions_tags
|
|
2931
|
+
ADD CONSTRAINT sessions_tags_pkey PRIMARY KEY (id);
|
|
2932
|
+
|
|
2933
|
+
|
|
2889
2934
|
--
|
|
2890
2935
|
-- Name: tags tags_pkey; Type: CONSTRAINT; Schema: public; Owner: -
|
|
2891
2936
|
--
|
|
@@ -3324,6 +3369,13 @@ CREATE INDEX index_services_on_state ON public.services USING btree (state);
|
|
|
3324
3369
|
CREATE INDEX index_sessions_on_module_run_id ON public.sessions USING btree (module_run_id);
|
|
3325
3370
|
|
|
3326
3371
|
|
|
3372
|
+
--
|
|
3373
|
+
-- Name: index_sessions_tags_on_session_id_and_tag_id; Type: INDEX; Schema: public; Owner: -
|
|
3374
|
+
--
|
|
3375
|
+
|
|
3376
|
+
CREATE UNIQUE INDEX index_sessions_tags_on_session_id_and_tag_id ON public.sessions_tags USING btree (session_id, tag_id);
|
|
3377
|
+
|
|
3378
|
+
|
|
3327
3379
|
--
|
|
3328
3380
|
-- Name: index_vulns_on_name; Type: INDEX; Schema: public; Owner: -
|
|
3329
3381
|
--
|
|
@@ -3548,6 +3600,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
|
|
3548
3600
|
('20250718122714'),
|
|
3549
3601
|
('20250720082201'),
|
|
3550
3602
|
('20250721114306'),
|
|
3603
|
+
('20251231162000'),
|
|
3551
3604
|
('20260130124052'),
|
|
3552
3605
|
('21'),
|
|
3553
3606
|
('22'),
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: metasploit_data_models
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 6.0.
|
|
4
|
+
version: 6.0.15
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Metasploit Hackers
|
|
@@ -178,20 +178,6 @@ dependencies:
|
|
|
178
178
|
- - ">="
|
|
179
179
|
- !ruby/object:Gem::Version
|
|
180
180
|
version: '0'
|
|
181
|
-
- !ruby/object:Gem::Dependency
|
|
182
|
-
name: concurrent-ruby
|
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
|
184
|
-
requirements:
|
|
185
|
-
- - "<"
|
|
186
|
-
- !ruby/object:Gem::Version
|
|
187
|
-
version: 1.3.5
|
|
188
|
-
type: :runtime
|
|
189
|
-
prerelease: false
|
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
191
|
-
requirements:
|
|
192
|
-
- - "<"
|
|
193
|
-
- !ruby/object:Gem::Version
|
|
194
|
-
version: 1.3.5
|
|
195
181
|
- !ruby/object:Gem::Dependency
|
|
196
182
|
name: recog
|
|
197
183
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -343,6 +329,7 @@ files:
|
|
|
343
329
|
- app/models/mdm/service_link.rb
|
|
344
330
|
- app/models/mdm/session.rb
|
|
345
331
|
- app/models/mdm/session_event.rb
|
|
332
|
+
- app/models/mdm/session_tag.rb
|
|
346
333
|
- app/models/mdm/tag.rb
|
|
347
334
|
- app/models/mdm/task.rb
|
|
348
335
|
- app/models/mdm/task_cred.rb
|
|
@@ -528,6 +515,7 @@ files:
|
|
|
528
515
|
- db/migrate/20250718122714_create_service_links.rb
|
|
529
516
|
- db/migrate/20250720082201_drop_service_uniqueness_index2.rb
|
|
530
517
|
- db/migrate/20250721114306_remove_duplicate_services3.rb
|
|
518
|
+
- db/migrate/20251231162000_add_session_tags.rb
|
|
531
519
|
- db/migrate/20260130124052_add_sso_status_to_user.rb
|
|
532
520
|
- lib/mdm.rb
|
|
533
521
|
- lib/mdm/host/operating_system_normalization.rb
|