Skip to content

Commit 1fce072

Browse files
committed
Merge branch 'marshall-tests-fix' into neff-e2e_tests
2 parents c1d5236 + 2f098f2 commit 1fce072

2 files changed

Lines changed: 50 additions & 24 deletions

File tree

tests/e2e_commands.txt

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ netexec smb TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS -M spooler
100100
netexec smb TARGET_HOST -u '' -p '' -M zerologon
101101
netexec smb TARGET_HOST -u '' -p '' -M petitpotam
102102
##### SMB Auth File
103-
netexec smb TARGET_HOST -u data/test_users.txt -p data/test_passwords.txt --no-bruteforce
104-
netexec smb TARGET_HOST -u data/test_users.txt -p data/test_passwords.txt --no-bruteforce --continue-on-success
105-
netexec smb TARGET_HOST -u data/test_users.txt -p data/test_passwords.txt
103+
netexec smb TARGET_HOST -u TEST_USER_FILE -p TEST_PASSWORD_FILE--no-bruteforce
104+
netexec smb TARGET_HOST -u TEST_USER_FILE -p TEST_PASSWORD_FILE--no-bruteforce --continue-on-success
105+
netexec smb TARGET_HOST -u TEST_USER_FILE -p data/test_passwords.txt
106106
##### WMI
107107
netexec wmi TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS # need an extra space after this command due to regex
108108
netexec wmi TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS --wmi-namespace root/cimv2
@@ -113,7 +113,8 @@ netexec wmi TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS -M spooler
113113
netexec wmi TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS -M zerologon
114114
netexec wmi TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS -M enum_dns
115115
netexec wmi TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS -M get_netconnections
116-
#netexec wmi TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS -M rdp
116+
#netexec wmi TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS -M rdp -o ACTION=enable
117+
#netexec wmi TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS -M rdp -o ACTION=disable
117118
##### LDAP
118119
netexec ldap TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS --users
119120
netexec ldap TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS --groups
@@ -155,7 +156,7 @@ netexec winrm TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS --port 59
155156
netexec winrm TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS --check-proto http --port 5985
156157
netexec winrm TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS --check-proto https --port 5986
157158
##### MSSQL
158-
netexec mssql TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS
159+
netexec mssql TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS # Need a space at the end for kerb regex
159160
##### MSSQL Modules
160161
# netexec mssql TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD -M empire_exec
161162
netexec mssql TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS -L
@@ -170,22 +171,22 @@ netexec mssql TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS -M web_de
170171
netexec rdp TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS # need an extra space after this command due to regex
171172
netexec rdp TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD KERBEROS --nla-screenshot
172173
##### SSH - Default test passwords and random key; switch these out if you want correct authentication
173-
netexec ssh TARGET_HOST -u USERNAME -p PASSWORD
174-
netexec ssh TARGET_HOST -u data/test_users.txt -p data/test_passwords.txt --no-bruteforce
175-
netexec ssh TARGET_HOST -u data/test_users.txt -p data/test_passwords.txt --no-bruteforce --continue-on-success
176-
netexec ssh TARGET_HOST -u data/test_users.txt -p data/test_passwords.txt
177-
netexec ssh TARGET_HOST -u USERNAME -p PASSWORD --key-file data/test_key.priv
178-
netexec ssh TARGET_HOST -u USERNAME -p '' --key-file data/test_key.priv
179-
netexec ssh TARGET_HOST -u USERNAME -p PASSWORD --sudo-check
180-
netexec ssh TARGET_HOST -u USERNAME -p PASSWORD --sudo-check --sudo-check-method sudo-stdin
181-
netexec ssh TARGET_HOST -u USERNAME -p PASSWORD --sudo-check --sudo-check-method sudo-stdin --get-output-tries 10
182-
netexec ssh TARGET_HOST -u USERNAME -p PASSWORD --sudo-check --sudo-check-method mkfifo
183-
netexec ssh TARGET_HOST -u USERNAME -p PASSWORD --sudo-check --sudo-check-method mkfifo --get-output-tries 10
174+
netexec ssh TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD
175+
netexec ssh TARGET_HOST -u TEST_USER_FILE -p TEST_PASSWORD_FILE--no-bruteforce
176+
netexec ssh TARGET_HOST -u TEST_USER_FILE -p TEST_PASSWORD_FILE--no-bruteforce --continue-on-success
177+
netexec ssh TARGET_HOST -u TEST_USER_FILE -p data/test_passwords.txt
178+
netexec ssh TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD --key-file data/test_key.priv
179+
netexec ssh TARGET_HOST -u LOGIN_USERNAME -p '' --key-file data/test_key.priv
180+
netexec ssh TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD --sudo-check
181+
netexec ssh TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD --sudo-check --sudo-check-method sudo-stdin
182+
netexec ssh TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD --sudo-check --sudo-check-method sudo-stdin --get-output-tries 10
183+
netexec ssh TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD --sudo-check --sudo-check-method mkfifo
184+
netexec ssh TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD --sudo-check --sudo-check-method mkfifo --get-output-tries 10
184185
##### FTP- Default test passwords and random key; switch these out if you want correct authentication
185-
netexec ftp TARGET_HOST -u USERNAME -p PASSWORD
186-
netexec ftp TARGET_HOST -u USERNAME -p PASSWORD --ls
187-
netexec ftp TARGET_HOST -u USERNAME -p PASSWORD --put data/test_file.txt test_file.txt
188-
netexec ftp TARGET_HOST -u USERNAME -p PASSWORD --get test_file.txt
189-
netexec ftp TARGET_HOST -u data/test_users.txt -p data/test_passwords.txt --no-bruteforce
190-
netexec ftp TARGET_HOST -u data/test_users.txt -p data/test_passwords.txt --no-bruteforce --continue-on-success
191-
netexec ftp TARGET_HOST -u data/test_users.txt -p data/test_passwords.txt
186+
netexec ftp TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD
187+
netexec ftp TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD --ls
188+
netexec ftp TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD --put data/test_file.txt test_file.txt
189+
netexec ftp TARGET_HOST -u LOGIN_USERNAME -p LOGIN_PASSWORD --get test_file.txt
190+
netexec ftp TARGET_HOST -u TEST_USER_FILE -p TEST_PASSWORD_FILE --no-bruteforce
191+
netexec ftp TARGET_HOST -u TEST_USER_FILE -p TEST_PASSWORD_FILE --no-bruteforce --continue-on-success
192+
netexec ftp TARGET_HOST -u TEST_USER_FILE -p TEST_PASSWORD_FILE

tests/e2e_tests.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
from rich.console import Console
66
import platform
77

8+
script_dir = os.path.dirname(os.path.abspath(__file__))
9+
run_dir = os.path.dirname(os.path.abspath(__file__))
10+
811

912
def get_cli_args():
1013
parser = argparse.ArgumentParser(description="Script for running end to end tests for nxc")
@@ -75,6 +78,20 @@ def get_cli_args():
7578
required=False,
7679
help="Prints all the commands of failed tests at the end (default: True)",
7780
)
81+
parser.add_argument(
82+
"--test-user-file",
83+
dest="test_user_file",
84+
required=False,
85+
default="data/test_usernames.txt",
86+
help="Path to the file containing test usernames",
87+
)
88+
parser.add_argument(
89+
"--test-password-file",
90+
dest="test_password_file",
91+
required=False,
92+
default="data/test_passwords.txt",
93+
help="Path to the file containing test passwords",
94+
)
7895
return parser.parse_args()
7996

8097

@@ -123,7 +140,13 @@ def generate_commands(args):
123140
def replace_command(args, line):
124141
kerberos = "-k " if args.kerberos else ""
125142

126-
line = line.replace("TARGET_HOST", args.target).replace("LOGIN_USERNAME", f'"{args.username}"').replace("LOGIN_PASSWORD", f'"{args.password}"').replace("KERBEROS ", kerberos)
143+
line = line\
144+
.replace("TARGET_HOST", args.target)\
145+
.replace("LOGIN_USERNAME", f'"{args.username}"')\
146+
.replace("LOGIN_PASSWORD", f'"{args.password}"')\
147+
.replace("KERBEROS ", kerberos)\
148+
.replace("TEST_USER_FILE", args.test_user_file)\
149+
.replace("TEST_PASSWORD_FILE", args.test_password_file)
127150
if args.poetry:
128151
line = f"poetry run {line}"
129152
return line
@@ -154,6 +177,7 @@ def run_e2e_tests(args):
154177
if platform.system() == "Linux":
155178
task = task.replace('"', "'")
156179

180+
# we print the command before running because very often things will timeout and we want the last thing ran
157181
console.log(f"Running command: {task}")
158182
result = subprocess.Popen(
159183
task,
@@ -179,6 +203,7 @@ def run_e2e_tests(args):
179203

180204
if args.errors:
181205
raw_text = text.decode("utf-8")
206+
# this is not a good way to detect errors, but it does catch a lot of things
182207
if "error" in raw_text.lower() or "failure" in raw_text.lower() or "Traceback (most recent call last)" in raw_text:
183208
console.log("[bold red]Error Detected:")
184209
console.log(f"{raw_text}")

0 commit comments

Comments
 (0)