Skip to content

Commit a76044c

Browse files
committed
Handle error in enum_users
If a blank response is received from rpcclient the data processing is skipped preventing errors.
1 parent 1de6e86 commit a76044c

File tree

1 file changed

+27
-16
lines changed

1 file changed

+27
-16
lines changed

enum4linux.pl

+27-16
Original file line numberDiff line numberDiff line change
@@ -960,33 +960,44 @@ sub enum_users_rids {
960960
}
961961

962962
sub enum_users {
963+
my @rids;
964+
my @rids2;
965+
963966
print_heading("Users on $global_target");
964967
my $command = "rpcclient -W '$global_workgroup' -c querydispinfo -U'$global_username'\%'$global_password' '$global_target' 2>&1";
965968
print_verbose("Attempting to get userlist with command: $command\n") if $verbose;
966969
my $users = `$command`;
967-
my $continue = 1;
968-
if ($users =~ /NT_STATUS_ACCESS_DENIED/) {
969-
print_error("Couldn't find users using querydispinfo: NT_STATUS_ACCESS_DENIED\n");
970+
if ($users ne "") {
971+
my $continue = 1;
972+
if ($users =~ /NT_STATUS_ACCESS_DENIED/) {
973+
print_error("Couldn't find users using querydispinfo: NT_STATUS_ACCESS_DENIED\n");
974+
} else {
975+
($users) = $users =~ /(index:.*)/s;
976+
print $users;
977+
$continue = 0;
978+
}
979+
my @rids_hex = $users =~ /RID:\s+0x([a-fA-f0-9]+)\s/gs;
980+
@rids = map { hex($_) } @rids_hex;
970981
} else {
971-
($users) = $users =~ /(index:.*)/s;
972-
print $users;
973-
$continue = 0;
974-
}
975-
my @rids_hex = $users =~ /RID:\s+0x([a-fA-f0-9]+)\s/gs;
976-
my @rids = map { hex($_) } @rids_hex;
982+
print_error("No response using rpcclient querydispinfo\n");
983+
}
977984

978985
print "\n";
979986
$command = "rpcclient -W '$global_workgroup' -c enumdomusers -U'$global_username'\%'$global_password' '$global_target' 2>&1";
980987
print_verbose("Attempting to get userlist with command: $command\n") if $verbose;
981988
$users = `$command`;
982-
if ($users =~ /NT_STATUS_ACCESS_DENIED/) {
983-
print_error("Couldn't find users using enumdomusers: NT_STATUS_ACCESS_DENIED\n");
989+
if ($users ne "") {
990+
if ($users =~ /NT_STATUS_ACCESS_DENIED/) {
991+
print_error("Couldn't find users using enumdomusers: NT_STATUS_ACCESS_DENIED\n");
992+
} else {
993+
($users) = $users =~ /(user:.*)/s;
994+
print $users;
995+
}
996+
my @rids_hex2 = $users =~ /rid:\[0x([A-Fa-f0-9]+)\]/gs;
997+
@rids2 = map { hex($_) } @rids_hex2;
984998
} else {
985-
($users) = $users =~ /(user:.*)/s;
986-
print $users;
987-
}
988-
my @rids_hex2 = $users =~ /rid:\[0x([A-Fa-f0-9]+)\]/gs;
989-
my @rids2 = map { hex($_) } @rids_hex2;
999+
print_error("No response using rpcclient enumdomusers\n");
1000+
}
9901001

9911002
my %rids;
9921003
foreach my $rid (@rids, @rids2) {

0 commit comments

Comments
 (0)