Skip to content

Commit 476ad5b

Browse files
authored
Merge pull request rapid7#19856 from bwatters-r7/update/esc8-auto-dc
Change behavior of esc8 'AUTO' mode to attempt to get a cert based on DC and Machine types
2 parents f22295b + 7e8c352 commit 476ad5b

File tree

2 files changed

+9
-6
lines changed
  • documentation/modules/auxiliary/server/relay
  • modules/auxiliary/server/relay

2 files changed

+9
-6
lines changed

documentation/modules/auxiliary/server/relay/esc8.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ The issue mode. This controls what the module will do once an authenticated sess
2020
server. Must be one of the following options:
2121

2222
* ALL: Enumerate all available certificate templates and then issue each of them
23-
* AUTO: Automatically select either the `User` or `Machine` template to issue based on if the authenticated user is a
24-
user or machine account. The determination is based on checking for a `$` at the end of the name, which means that it
25-
is a machine account.
26-
* QUERY_ONLY: Enumerate all available certificate templates but do not issue any
23+
* AUTO: Automatically select either the `User` or `DomainController` and `Machine` (`Computer`) templates to issue
24+
based on if the authenticated user is a user or machine account. The determination is based on checking for a `$`
25+
at the end of the name, which means that it is a machine account.
26+
* QUERY_ONLY: Enumerate all available certificate templates but do not issue any. Not all certificate templates
27+
available for use will be displayed; templates with the flag CT_FLAG_MACHINE_TYPE set will not show available and
28+
include `Machine` (AKA `Computer`) and `DomainController`
2729
* SPECIFIC_TEMPLATE: Issue the certificate template specified in the `CERT_TEMPLATE` option
2830

2931
### CERT_TEMPLATE

modules/auxiliary/server/relay/esc8.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,12 @@ def run
107107
def on_relay_success(relay_connection:, relay_identity:)
108108
case datastore['MODE']
109109
when 'AUTO'
110-
cert_template = relay_identity.end_with?('$') ? 'Computer' : 'User'
111-
retrieve_cert(relay_connection, relay_identity, cert_template)
110+
cert_template = relay_identity.end_with?('$') ? ['DomainController', 'Machine'] : ['User']
111+
retrieve_certs(relay_connection, relay_identity, cert_template)
112112
when 'ALL', 'QUERY_ONLY'
113113
cert_templates = get_cert_templates(relay_connection)
114114
unless cert_templates.nil? || cert_templates.empty?
115+
print_status('***Templates with CT_FLAG_MACHINE_TYPE set like Machine and DomainController will not display as available, even if they are.***')
115116
print_good("Available Certificates for #{relay_identity} on #{datastore['RELAY_TARGET']}: #{cert_templates.join(', ')}")
116117
if datastore['MODE'] == 'ALL'
117118
retrieve_certs(relay_connection, relay_identity, cert_templates)

0 commit comments

Comments
 (0)