forked from extern/SSH-Snake
Use ssh_timeout for dns timeout, slightly less gnu-ism, and finish if no dests.
This commit is contained in:
parent
f9a46b8c86
commit
730963eb57
@ -259,14 +259,15 @@ printf "[%s]" "$(date +%s)"
|
|||||||
printf "%s\n" "$line"
|
printf "%s\n" "$line"
|
||||||
done < <(echo 'printf "%s" "$1" | base64 -d | stdbuf -o0 bash --noprofile --norc -s $1' | stdbuf -o0 bash --noprofile --norc -s "$(printf "%s" "$local_script" | base64 | tr -d '\n')" 2>&1 | grep -v -F 'INTERNAL_MSG')
|
done < <(echo 'printf "%s" "$1" | base64 -d | stdbuf -o0 bash --noprofile --norc -s $1' | stdbuf -o0 bash --noprofile --norc -s "$(printf "%s" "$local_script" | base64 | tr -d '\n')" 2>&1 | grep -v -F 'INTERNAL_MSG')
|
||||||
[[ $use_retry_all_dests -eq 1 ]] || return
|
[[ $use_retry_all_dests -eq 1 ]] || return
|
||||||
printf "\n\n---------------------------------------\n\n"
|
|
||||||
printf "use_retry_all_dests=1. Re-starting.\n"
|
|
||||||
local retried_interesting_dests
|
local retried_interesting_dests
|
||||||
retried_interesting_dests="$(gen_retried_interesting_dests | sort -u)"
|
retried_interesting_dests="$(gen_retried_interesting_dests | sort -u)"
|
||||||
|
[[ "${#retried_interesting_dests}" -gt 0 ]] || return
|
||||||
|
printf "\n\n---------------------------------------\n\n"
|
||||||
|
printf "use_retry_all_dests=1. Re-starting.\n"
|
||||||
printf "%s destinations (from %s unique servers) added to interesting_dests.\n" "$(echo "$retried_interesting_dests" | wc -l)" "${#root_ssh_hostnames_dests[@]}"
|
printf "%s destinations (from %s unique servers) added to interesting_dests.\n" "$(echo "$retried_interesting_dests" | wc -l)" "${#root_ssh_hostnames_dests[@]}"
|
||||||
retried_interesting_dests="$(echo "$retried_interesting_dests" | tr '\n' ' ')"
|
retried_interesting_dests="$(echo "$retried_interesting_dests" | tr '\n' ' ')"
|
||||||
printf "\n---------------------------------------\n\n\n"
|
printf "\n---------------------------------------\n\n\n"
|
||||||
local_script="$(printf "%s" "$local_script" | sed '/^interesting_dests=(/c\interesting_dests=('"$retried_interesting_dests"')')"
|
local_script="$(printf "%s" "$local_script" | sed 's/^interesting_dests=(/interesting_dests=('"$retried_interesting_dests"'/')"
|
||||||
local_script="$(printf "%s" "$local_script" | sed 's/^use_retry_all_dests=1/use_retry_all_dests=2/')"
|
local_script="$(printf "%s" "$local_script" | sed 's/^use_retry_all_dests=1/use_retry_all_dests=2/')"
|
||||||
remove_function="find_from_authorized_keys find_from_hosts find_from_last find_arp_neighbours find_d_block find_from_ignore_list find_from_known_hosts find_from_hashed_known_hosts find_from_prev_dest combinate_users_hosts_aggressive combinate_interesting_users_hosts interesting_users interesting_hosts deduplicate_resolved_hosts_keys init_ignored ignored_users ignored_hosts ignored_dests find_user_from_file "
|
remove_function="find_from_authorized_keys find_from_hosts find_from_last find_arp_neighbours find_d_block find_from_ignore_list find_from_known_hosts find_from_hashed_known_hosts find_from_prev_dest combinate_users_hosts_aggressive combinate_interesting_users_hosts interesting_users interesting_hosts deduplicate_resolved_hosts_keys init_ignored ignored_users ignored_hosts ignored_dests find_user_from_file "
|
||||||
local_script="$(remove_functions "$local_script" "$remove_function")"
|
local_script="$(remove_functions "$local_script" "$remove_function")"
|
||||||
@ -997,7 +998,7 @@ local res
|
|||||||
local use_mac
|
local use_mac
|
||||||
local to
|
local to
|
||||||
if command -v timeout >/dev/null 2>&1; then
|
if command -v timeout >/dev/null 2>&1; then
|
||||||
to="timeout 5"
|
to="timeout $ssh_timeout"
|
||||||
fi
|
fi
|
||||||
if getent ahostsv4 -- 1.1.1.1 >/dev/null 2>&1; then
|
if getent ahostsv4 -- 1.1.1.1 >/dev/null 2>&1; then
|
||||||
res="$to getent ahostsv4 --"
|
res="$to getent ahostsv4 --"
|
||||||
@ -1022,7 +1023,6 @@ for ssh_dest in "${!ssh_dests[@]}"; do
|
|||||||
local ssh_user
|
local ssh_user
|
||||||
local ssh_host
|
local ssh_host
|
||||||
local resolved_ssh_host
|
local resolved_ssh_host
|
||||||
ssh_dest="${ssh_dest,,}"
|
|
||||||
is_ssh_dest "$ssh_dest" || continue
|
is_ssh_dest "$ssh_dest" || continue
|
||||||
ssh_user="${ssh_dest%%@*}"
|
ssh_user="${ssh_dest%%@*}"
|
||||||
ssh_host="${ssh_dest#*@}"
|
ssh_host="${ssh_dest#*@}"
|
||||||
|
18
Snake.sh
18
Snake.sh
@ -25,7 +25,7 @@ ignore_user=0 # [0|1]: Consider a dest already scanned based only on the ip addr
|
|||||||
|
|
||||||
use_sudo=1 # [1|0]: Attempt to use sudo on the dest. This may generate a large amount of security-related logs and can be extremely noisy.
|
use_sudo=1 # [1|0]: Attempt to use sudo on the dest. This may generate a large amount of security-related logs and can be extremely noisy.
|
||||||
|
|
||||||
ssh_timeout=3 # [3|n]: The connection timeout for ssh. See ssh_config(5)'s ConnectTimeout.
|
ssh_timeout=3 # [3|n]: The connection timeout for ssh and DNS resolution. See ssh_config(5)'s ConnectTimeout.
|
||||||
|
|
||||||
retry_count=3 # [3|n]: In some cases, a recoverable error in ssh may be encountered (such as trying to access an an AWS instance with a disabled username). This number corresponds to the maximum amount of times the destination is tried again. It's generally advised to set this to at least 1.
|
retry_count=3 # [3|n]: In some cases, a recoverable error in ssh may be encountered (such as trying to access an an AWS instance with a disabled username). This number corresponds to the maximum amount of times the destination is tried again. It's generally advised to set this to at least 1.
|
||||||
|
|
||||||
@ -482,18 +482,21 @@ shape_script() {
|
|||||||
|
|
||||||
[[ $use_retry_all_dests -eq 1 ]] || return
|
[[ $use_retry_all_dests -eq 1 ]] || return
|
||||||
|
|
||||||
|
local retried_interesting_dests
|
||||||
|
retried_interesting_dests="$(gen_retried_interesting_dests | sort -u)"
|
||||||
|
|
||||||
|
[[ "${#retried_interesting_dests}" -gt 0 ]] || return
|
||||||
|
|
||||||
printf "\n\n---------------------------------------\n\n"
|
printf "\n\n---------------------------------------\n\n"
|
||||||
printf "use_retry_all_dests=1. Re-starting.\n"
|
printf "use_retry_all_dests=1. Re-starting.\n"
|
||||||
|
|
||||||
local retried_interesting_dests
|
|
||||||
retried_interesting_dests="$(gen_retried_interesting_dests | sort -u)"
|
|
||||||
|
|
||||||
printf "%s destinations (from %s unique servers) added to interesting_dests.\n" "$(echo "$retried_interesting_dests" | wc -l)" "${#root_ssh_hostnames_dests[@]}"
|
printf "%s destinations (from %s unique servers) added to interesting_dests.\n" "$(echo "$retried_interesting_dests" | wc -l)" "${#root_ssh_hostnames_dests[@]}"
|
||||||
retried_interesting_dests="$(echo "$retried_interesting_dests" | tr '\n' ' ')"
|
retried_interesting_dests="$(echo "$retried_interesting_dests" | tr '\n' ' ')"
|
||||||
|
|
||||||
printf "\n---------------------------------------\n\n\n"
|
printf "\n---------------------------------------\n\n\n"
|
||||||
|
|
||||||
local_script="$(printf "%s" "$local_script" | sed '/^interesting_dests=(/c\interesting_dests=('"$retried_interesting_dests"')')"
|
local_script="$(printf "%s" "$local_script" | sed 's/^interesting_dests=(/interesting_dests=('"$retried_interesting_dests"'/')"
|
||||||
local_script="$(printf "%s" "$local_script" | sed 's/^use_retry_all_dests=1/use_retry_all_dests=2/')"
|
local_script="$(printf "%s" "$local_script" | sed 's/^use_retry_all_dests=1/use_retry_all_dests=2/')"
|
||||||
|
|
||||||
# We do not want to find any new dests and so on, so remove all of the non-key functions.
|
# We do not want to find any new dests and so on, so remove all of the non-key functions.
|
||||||
@ -1682,7 +1685,7 @@ deduplicate_resolved_hosts_keys() {
|
|||||||
|
|
||||||
# DNS timeout of 5 seconds per address (bleh, hack).
|
# DNS timeout of 5 seconds per address (bleh, hack).
|
||||||
if command -v timeout >/dev/null 2>&1; then
|
if command -v timeout >/dev/null 2>&1; then
|
||||||
to="timeout 5"
|
to="timeout $ssh_timeout"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Use getent if it's available.
|
# Use getent if it's available.
|
||||||
@ -1720,9 +1723,6 @@ deduplicate_resolved_hosts_keys() {
|
|||||||
local ssh_host
|
local ssh_host
|
||||||
local resolved_ssh_host
|
local resolved_ssh_host
|
||||||
|
|
||||||
# Make everything lower case.
|
|
||||||
ssh_dest="${ssh_dest,,}"
|
|
||||||
|
|
||||||
is_ssh_dest "$ssh_dest" || continue # Checks if the host has been ignored in this loop
|
is_ssh_dest "$ssh_dest" || continue # Checks if the host has been ignored in this loop
|
||||||
|
|
||||||
ssh_user="${ssh_dest%%@*}"
|
ssh_user="${ssh_dest%%@*}"
|
||||||
@ -1900,7 +1900,9 @@ add_ssh_dest() {
|
|||||||
local ssh_user
|
local ssh_user
|
||||||
|
|
||||||
ssh_dest="$1"
|
ssh_dest="$1"
|
||||||
|
|
||||||
ssh_dest="${ssh_dest,,}"
|
ssh_dest="${ssh_dest,,}"
|
||||||
|
|
||||||
ssh_user="${ssh_dest%%@*}"
|
ssh_user="${ssh_dest%%@*}"
|
||||||
ssh_host="${ssh_dest#*@}"
|
ssh_host="${ssh_dest#*@}"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user