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_coreswhenMetasploit::Credential::Engineis installed to getMetasploit::Credential::Cores. UseMdm::Service#loginswhenMetasploit::Credential::Engineis installed to getMetasploit::Credential::Logins. -
#default? ⇒ true, false
Whether this is the Workspace.default workspace.
-
#each_cred {|cred| ... } ⇒ void
deprecated
Deprecated.
Use
workspace.credential_cores.eachwhenMetasploit::Credential::Engineis installed to enumerateMetasploit::Credential::Cores. Useservice.logins.eachwhenMetasploit::Credential::Engineis installed to enumerateMetasploit::Credential::Logins. -
#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 91
|
#created_at ⇒ DateTime
When this workspace was created.
|
|
# File 'app/models/mdm/workspace.rb', line 113
|
#description ⇒ String
Long description (beyond #name) that explains the purpose of this workspace.
|
|
# File 'app/models/mdm/workspace.rb', line 97
|
#limit_to_network ⇒ false, true
Whether #boundary is respected.
|
|
# File 'app/models/mdm/workspace.rb', line 102
|
#name ⇒ String
Name of this workspace.
|
|
# File 'app/models/mdm/workspace.rb', line 108
|
#updated_at ⇒ DateTime
The last time this workspace was updated.
|
|
# File 'app/models/mdm/workspace.rb', line 118
|
Class Method Details
.default ⇒ Mdm::Workspace
Returns default Mdm::Workspace.
156 157 158 |
# File 'app/models/mdm/workspace.rb', line 156 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::Cores. Use Mdm::Service#logins when Metasploit::Credential::Engine is installed to
get Metasploit::Credential::Logins.
145 146 147 148 149 150 151 |
# File 'app/models/mdm/workspace.rb', line 145 def creds Mdm::Cred .joins(service: :host) .where(hosts: { workspace_id: self.id }) end |
#default? ⇒ true, false
Whether this is the default workspace.
164 165 166 |
# File 'app/models/mdm/workspace.rb', line 164 def default? name == DEFAULT end |
#each_cred {|cred| ... } ⇒ void
Use workspace.credential_cores.each when Metasploit::Credential::Engine is installed to enumerate
Metasploit::Credential::Cores. Use service.logins.each when Metasploit::Credential::Engine is installed to
enumerate Metasploit::Credential::Logins.
This method returns an undefined value.
Enumerates each element of #creds.
178 179 180 181 182 |
# File 'app/models/mdm/workspace.rb', line 178 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.
190 191 192 193 194 |
# File 'app/models/mdm/workspace.rb', line 190 def each_host_tag(&block) .each do |host_tag| block.call(host_tag) end end |
#host_tags ⇒ ActiveRecord::Relation<Mdm::Tag>
Tags on #hosts.
199 200 201 202 203 204 205 |
# File 'app/models/mdm/workspace.rb', line 199 def Mdm::Tag .joins(:hosts) .where(hosts: { workspace_id: self.id }) end |
#unique_web_forms ⇒ ActiveRecord::Relation<Mdm::WebForm>
Web forms on #web_sites.
258 259 260 |
# File 'app/models/mdm/workspace.rb', line 258 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.
210 211 212 213 214 215 216 217 |
# File 'app/models/mdm/workspace.rb', line 210 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.
223 224 225 226 227 228 229 230 |
# File 'app/models/mdm/workspace.rb', line 223 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.
235 236 237 238 239 240 241 |
# File 'app/models/mdm/workspace.rb', line 235 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.
267 268 269 270 271 272 273 |
# File 'app/models/mdm/workspace.rb', line 267 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.
246 247 248 249 250 251 252 253 |
# File 'app/models/mdm/workspace.rb', line 246 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 |