Skip to content

Commit e20385d

Browse files
committed
Merge pull request rapid7#1864 from dmaloney-r7/feature/task_associations/cred_service_host
Passes specs and functional tests
2 parents 9843dc4 + c8ff455 commit e20385d

File tree

6 files changed

+354
-188
lines changed

6 files changed

+354
-188
lines changed

Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ group :db do
1515
# Needed for Msf::DbManager
1616
gem 'activerecord'
1717
# Database models shared between framework and Pro.
18-
gem 'metasploit_data_models', '~> 0.14.3'
18+
gem 'metasploit_data_models', '~> 0.15.0'
1919
# Needed for module caching in Mdm::ModuleDetails
2020
gem 'pg', '>= 0.11'
2121
end

Gemfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ GEM
2323
i18n (0.6.1)
2424
json (1.7.7)
2525
metaclass (0.0.1)
26-
metasploit_data_models (0.14.3)
26+
metasploit_data_models (0.15.0)
2727
activerecord (>= 3.2.13)
2828
activesupport
2929
pg
@@ -65,7 +65,7 @@ DEPENDENCIES
6565
database_cleaner
6666
factory_girl (>= 4.1.0)
6767
json
68-
metasploit_data_models (~> 0.14.3)
68+
metasploit_data_models (~> 0.15.0)
6969
msgpack
7070
nokogiri
7171
pcaprub

db/schema.rb

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#
1212
# It's strongly recommended to check this file into your version control system.
1313

14-
ActiveRecord::Schema.define(:version => 20130516204810) do
14+
ActiveRecord::Schema.define(:version => 20130522041110) do
1515

1616
create_table "api_keys", :force => true do |t|
1717
t.text "token"
@@ -427,6 +427,27 @@
427427
t.datetime "updated_at", :null => false
428428
end
429429

430+
create_table "task_creds", :force => true do |t|
431+
t.integer "task_id", :null => false
432+
t.integer "cred_id", :null => false
433+
t.datetime "created_at", :null => false
434+
t.datetime "updated_at", :null => false
435+
end
436+
437+
create_table "task_hosts", :force => true do |t|
438+
t.integer "task_id", :null => false
439+
t.integer "host_id", :null => false
440+
t.datetime "created_at", :null => false
441+
t.datetime "updated_at", :null => false
442+
end
443+
444+
create_table "task_services", :force => true do |t|
445+
t.integer "task_id", :null => false
446+
t.integer "service_id", :null => false
447+
t.datetime "created_at", :null => false
448+
t.datetime "updated_at", :null => false
449+
end
450+
430451
create_table "tasks", :force => true do |t|
431452
t.integer "workspace_id", :default => 1, :null => false
432453
t.string "created_by"

lib/msf/core/auxiliary/report.rb

Lines changed: 59 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,17 @@ def db
2121

2222
def myworkspace
2323
@myworkspace = framework.db.find_workspace(self.workspace)
24-
end
24+
end
25+
26+
def mytask
27+
if self[:task]
28+
return self[:task].record
29+
elsif @task && @task.class == Mdm::Task
30+
return @task
31+
else
32+
return nil
33+
end
34+
end
2535

2636
def inside_workspace_boundary?(ip)
2737
return true if not framework.db.active
@@ -41,7 +51,10 @@ def inside_workspace_boundary?(ip)
4151
#
4252
def report_host(opts)
4353
return if not db
44-
opts = {:workspace => myworkspace}.merge(opts)
54+
opts = {
55+
:workspace => myworkspace,
56+
:task => mytask
57+
}.merge(opts)
4558
framework.db.report_host(opts)
4659
end
4760

@@ -63,7 +76,10 @@ def get_host(opts)
6376
#
6477
def report_client(opts={})
6578
return if not db
66-
opts = {:workspace => myworkspace}.merge(opts)
79+
opts = {
80+
:workspace => myworkspace,
81+
:task => mytask
82+
}.merge(opts)
6783
framework.db.report_client(opts)
6884
end
6985

@@ -78,63 +94,93 @@ def get_client(opts={})
7894
#
7995
def report_service(opts={})
8096
return if not db
81-
opts = {:workspace => myworkspace}.merge(opts)
97+
opts = {
98+
:workspace => myworkspace,
99+
:task => mytask
100+
}.merge(opts)
82101
framework.db.report_service(opts)
83102
end
84103

85104
def report_note(opts={})
86105
return if not db
87-
opts = {:workspace => myworkspace}.merge(opts)
106+
opts = {
107+
:workspace => myworkspace,
108+
:task => mytask
109+
}.merge(opts)
88110
framework.db.report_note(opts)
89111
end
90112

91113
def report_auth_info(opts={})
92114
return if not db
93-
opts = {:workspace => myworkspace}.merge(opts)
115+
opts = {
116+
:workspace => myworkspace,
117+
:task => mytask
118+
}.merge(opts)
94119
framework.db.report_auth_info(opts)
95120
end
96121

97122
def report_vuln(opts={})
98123
return if not db
99-
opts = {:workspace => myworkspace}.merge(opts)
124+
opts = {
125+
:workspace => myworkspace,
126+
:task => mytask
127+
}.merge(opts)
100128
framework.db.report_vuln(opts)
101129
end
102130

103131
# This will simply log a deprecation warning, since report_exploit()
104132
# is no longer implemented.
105133
def report_exploit(opts={})
106134
return if not db
107-
opts = {:workspace => myworkspace}.merge(opts)
135+
opts = {
136+
:workspace => myworkspace,
137+
:task => mytask
138+
}.merge(opts)
108139
framework.db.report_exploit(opts)
109140
end
110141

111142
def report_loot(opts={})
112143
return if not db
113-
opts = {:workspace => myworkspace}.merge(opts)
144+
opts = {
145+
:workspace => myworkspace,
146+
:task => mytask
147+
}.merge(opts)
114148
framework.db.report_loot(opts)
115149
end
116150

117151
def report_web_site(opts={})
118152
return if not db
119-
opts = {:workspace => myworkspace}.merge(opts)
153+
opts = {
154+
:workspace => myworkspace,
155+
:task => mytask
156+
}.merge(opts)
120157
framework.db.report_web_site(opts)
121158
end
122159

123160
def report_web_page(opts={})
124161
return if not db
125-
opts = {:workspace => myworkspace}.merge(opts)
162+
opts = {
163+
:workspace => myworkspace,
164+
:task => mytask
165+
}.merge(opts)
126166
framework.db.report_web_page(opts)
127167
end
128168

129169
def report_web_form(opts={})
130170
return if not db
131-
opts = {:workspace => myworkspace}.merge(opts)
171+
opts = {
172+
:workspace => myworkspace,
173+
:task => mytask
174+
}.merge(opts)
132175
framework.db.report_web_form(opts)
133176
end
134177

135178
def report_web_vuln(opts={})
136179
return if not db
137-
opts = {:workspace => myworkspace}.merge(opts)
180+
opts = {
181+
:workspace => myworkspace,
182+
:task => mytask
183+
}.merge(opts)
138184
framework.db.report_web_vuln(opts)
139185
end
140186

0 commit comments

Comments
 (0)