Skip to content

Commit e14be33

Browse files
authored
Merge pull request Pennyw0rth#393 from Pennyw0rth/neff-fix-kerberos
Fix issues with kerberos and non NTLM domains
2 parents 45a9121 + 66da98c commit e14be33

2 files changed

Lines changed: 5 additions & 7 deletions

File tree

nxc/connection.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ def __init__(self, args, db, target):
134134
# Authentication info
135135
self.password = ""
136136
self.username = ""
137-
self.kerberos = bool(self.args.kerberos or self.args.use_kcache or self.args.aesKey)
137+
self.kerberos = bool(self.args.kerberos or self.args.use_kcache or self.args.aesKey or (hasattr(self.args, "delegate") and self.args.delegate))
138138
self.aesKey = None if not self.args.aesKey else self.args.aesKey[0]
139139
self.use_kcache = None if not self.args.use_kcache else self.args.use_kcache
140140
self.admin_privs = False
@@ -157,7 +157,7 @@ def __init__(self, args, db, target):
157157
else:
158158
return
159159

160-
if self.args.kerberos:
160+
if self.kerberos:
161161
self.host = self.hostname
162162

163163
self.logger.info(f"Socket info: host={self.host}, hostname={self.hostname}, kerberos={self.kerberos}, ipv6={self.is_ipv6}, link-local ipv6={self.is_link_local_ipv6}")
@@ -469,8 +469,6 @@ def try_credentials(self, domain, username, owned, secret, cred_type, data=None)
469469
return False
470470
if self.args.continue_on_success and owned:
471471
return False
472-
if hasattr(self.args, "delegate") and self.args.delegate:
473-
self.args.kerberos = True
474472

475473
if self.args.jitter:
476474
jitter = self.args.jitter
@@ -485,7 +483,7 @@ def try_credentials(self, domain, username, owned, secret, cred_type, data=None)
485483

486484
with sem:
487485
if cred_type == "plaintext":
488-
if self.args.kerberos:
486+
if self.kerberos:
489487
self.logger.debug("Trying to authenticate using Kerberos")
490488
return self.kerberos_login(domain, username, secret, "", "", self.kdcHost, False)
491489
elif hasattr(self.args, "domain"): # Some protocols don't use domain for login
@@ -498,7 +496,7 @@ def try_credentials(self, domain, username, owned, secret, cred_type, data=None)
498496
self.logger.debug("Trying to authenticate using plaintext")
499497
return self.plaintext_login(username, secret)
500498
elif cred_type == "hash":
501-
if self.args.kerberos:
499+
if self.kerberos:
502500
return self.kerberos_login(domain, username, "", secret, "", self.kdcHost, False)
503501
return self.hash_login(domain, username, secret)
504502
elif cred_type == "aesKey":

nxc/protocols/ldap/laps.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ def laps_search(self, username, password, cred_type, domain, dns_server):
356356
password = msMCSAdmPwd
357357
domain = self.hostname
358358
self.args.local_auth = True
359-
self.args.kerberos = False
359+
self.kerberos = False
360360
self.logger.extra["protocol"] = prev_protocol
361361
self.logger.extra["port"] = prev_port
362362
return username, password, domain

0 commit comments

Comments
 (0)