Class: Mdm::Workspace
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Mdm::Workspace
- Defined in:
- app/models/mdm/workspace.rb
Overview
Workspace to separate different collections of #hosts. Can be used to separate pentests against different networks or different clients as reports are normally generated against all records in a workspace.
Constant Summary collapse
- DEFAULT =
CONSTANTS
'default'
Instance Attribute Summary collapse
-
#boundary ⇒ String
Comma separated list of IP ranges (in various formats) and IP addresses that users of this workspace are allowed to interact with if #limit_to_network is
true
. -
#created_at ⇒ DateTime
When this workspace was created.
-
#description ⇒ String
Long description (beyond #name) that explains the purpose of this workspace.
-
#limit_to_network ⇒ false, true
Whether #boundary is respected.
-
#name ⇒ String
Name of this workspace.
-
#updated_at ⇒ DateTime
The last time this workspace was updated.
Class Method Summary collapse
-
.default ⇒ Mdm::Workspace
Returns default Workspace.
Instance Method Summary collapse
-
#creds ⇒ ActiveRecord::Relation<Mdm::Cred>
deprecated
Deprecated.
Use
Mdm::Workspace#credential_cores
whenMetasploit::Credential::Engine
is installed to getMetasploit::Credential::Core
s. UseMdm::Service#logins
whenMetasploit::Credential::Engine
is installed to getMetasploit::Credential::Login
s. -
#default? ⇒ true, false
Whether this is the Workspace.default workspace.
-
#each_cred {|cred| ... } ⇒ void
deprecated
Deprecated.
Use
workspace.credential_cores.each
whenMetasploit::Credential::Engine
is installed to enumerateMetasploit::Credential::Core
s. Useservice.logins.each
whenMetasploit::Credential::Engine
is installed to enumerateMetasploit::Credential::Login
s. -
#each_host_tag {|tag| ... } ⇒ void
Enumerates each element of #host_tags.
-
#host_tags ⇒ ActiveRecord::Relation<Mdm::Tag>
Tags on #hosts.
-
#unique_web_forms ⇒ ActiveRecord::Relation<Mdm::WebForm>
Web forms on #web_sites.
-
#web_forms ⇒ ActiveRecord::Relation<Mdm::WebForm>
Web forms found on #web_sites.
-
#web_pages ⇒ ActiveRecord::Relation<Mdm::WebPage>
Web pages found on #web_sites.
-
#web_sites ⇒ ActiveRecord::Relation<Mdm::WebSite>
Web sites running on #services.
-
#web_unique_forms(addrs = nil) ⇒ Array<Mdm::WebForm>
#unique_web_forms hosted on
addrs
. -
#web_vulns ⇒ ActiveRecord::Relation<Mdm::WebVuln>
Web vulnerability found on #web_sites.
Instance Attribute Details
#boundary ⇒ String
Comma separated list of IP ranges (in various formats) and IP addresses that users of this workspace are allowed
to interact with if #limit_to_network is true
.
|
# File 'app/models/mdm/workspace.rb', line 88
|
#created_at ⇒ DateTime
When this workspace was created.
|
# File 'app/models/mdm/workspace.rb', line 110
|
#description ⇒ String
Long description (beyond #name) that explains the purpose of this workspace.
|
# File 'app/models/mdm/workspace.rb', line 94
|
#limit_to_network ⇒ false, true
Whether #boundary is respected.
|
# File 'app/models/mdm/workspace.rb', line 99
|
#name ⇒ String
Name of this workspace.
|
# File 'app/models/mdm/workspace.rb', line 105
|
#updated_at ⇒ DateTime
The last time this workspace was updated.
|
# File 'app/models/mdm/workspace.rb', line 115
|
Class Method Details
.default ⇒ Mdm::Workspace
Returns default Mdm::Workspace.
153 154 155 |
# File 'app/models/mdm/workspace.rb', line 153 def self.default where(name: DEFAULT).first_or_create end |
Instance Method Details
#creds ⇒ ActiveRecord::Relation<Mdm::Cred>
Use Mdm::Workspace#credential_cores
when Metasploit::Credential::Engine
is installed to get
Metasploit::Credential::Core
s. Use Mdm::Service#logins
when Metasploit::Credential::Engine
is installed to
get Metasploit::Credential::Login
s.
142 143 144 145 146 147 148 |
# File 'app/models/mdm/workspace.rb', line 142 def creds Mdm::Cred .joins(service: :host) .where(hosts: { workspace_id: self.id }) end |
#default? ⇒ true, false
Whether this is the default workspace.
161 162 163 |
# File 'app/models/mdm/workspace.rb', line 161 def default? name == DEFAULT end |
#each_cred {|cred| ... } ⇒ void
Use workspace.credential_cores.each
when Metasploit::Credential::Engine
is installed to enumerate
Metasploit::Credential::Core
s. Use service.logins.each
when Metasploit::Credential::Engine
is installed to
enumerate Metasploit::Credential::Login
s.
This method returns an undefined value.
Enumerates each element of #creds.
175 176 177 178 179 |
# File 'app/models/mdm/workspace.rb', line 175 def each_cred(&block) creds.each do |cred| block.call(cred) end end |
#each_host_tag {|tag| ... } ⇒ void
This method returns an undefined value.
Enumerates each element of #host_tags.
187 188 189 190 191 |
# File 'app/models/mdm/workspace.rb', line 187 def each_host_tag(&block) .each do |host_tag| block.call(host_tag) end end |
#host_tags ⇒ ActiveRecord::Relation<Mdm::Tag>
Tags on #hosts.
196 197 198 199 200 201 202 |
# File 'app/models/mdm/workspace.rb', line 196 def Mdm::Tag .joins(:hosts) .where(hosts: { workspace_id: self.id }) end |
#unique_web_forms ⇒ ActiveRecord::Relation<Mdm::WebForm>
Web forms on #web_sites.
255 256 257 |
# File 'app/models/mdm/workspace.rb', line 255 def unique_web_forms web_forms.select('web_forms.id, web_forms.web_site_id, web_forms.path, web_forms.method, web_forms.query') end |
#web_forms ⇒ ActiveRecord::Relation<Mdm::WebForm>
Web forms found on #web_sites.
207 208 209 210 211 212 213 214 |
# File 'app/models/mdm/workspace.rb', line 207 def web_forms Mdm::WebForm.joins( Mdm::WebForm.join_association(:web_site), Mdm::WebSite.join_association(:service), Mdm::Service.join_association(:host), Mdm::Host.join_association(:workspace) ).where(Mdm::Workspace[:id].eq(id)).uniq end |
#web_pages ⇒ ActiveRecord::Relation<Mdm::WebPage>
Web pages found on #web_sites.
220 221 222 223 224 225 226 227 |
# File 'app/models/mdm/workspace.rb', line 220 def web_pages Mdm::WebPage.joins( Mdm::WebPage.join_association(:web_site), Mdm::WebSite.join_association(:service), Mdm::Service.join_association(:host), Mdm::Host.join_association(:workspace) ).where(Mdm::Workspace[:id].eq(id)).uniq end |
#web_sites ⇒ ActiveRecord::Relation<Mdm::WebSite>
Web sites running on #services.
232 233 234 235 236 237 238 |
# File 'app/models/mdm/workspace.rb', line 232 def web_sites Mdm::WebSite.joins( Mdm::WebSite.join_association(:service), Mdm::Service.join_association(:host), Mdm::Host.join_association(:workspace) ).where(Mdm::Workspace[:id].eq(id)).uniq end |
#web_unique_forms(addrs = nil) ⇒ Array<Mdm::WebForm>
#unique_web_forms hosted on addrs
.
264 265 266 267 268 269 270 |
# File 'app/models/mdm/workspace.rb', line 264 def web_unique_forms(addrs=nil) forms = unique_web_forms if addrs forms.to_a.reject!{|f| not addrs.include?( f.web_site.service.host.address.to_s ) } end forms end |
#web_vulns ⇒ ActiveRecord::Relation<Mdm::WebVuln>
Web vulnerability found on #web_sites.
243 244 245 246 247 248 249 250 |
# File 'app/models/mdm/workspace.rb', line 243 def web_vulns Mdm::WebVuln.joins( Mdm::WebVuln.join_association(:web_site), Mdm::WebSite.join_association(:service), Mdm::Service.join_association(:host), Mdm::Host.join_association(:workspace) ).where(Mdm::Workspace[:id].eq(id)).uniq end |