mirror of
				https://github.com/drwetter/testssl.sh.git
				synced 2025-10-31 05:45:26 +01:00 
			
		
		
		
	- fixed bug where terminal width was not inherited in file batch mode so that terminal wdith appeared to be 80 chars
- hint when URI is missing - PFS_CIPHERs rather locally
This commit is contained in:
		
							
								
								
									
										20
									
								
								testssl.sh
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								testssl.sh
									
									
									
									
									
								
							| @@ -126,10 +126,12 @@ tty -s && \ | |||||||
|      readonly INTERACTIVE=true || \ |      readonly INTERACTIVE=true || \ | ||||||
|      readonly INTERACTIVE=false |      readonly INTERACTIVE=false | ||||||
|  |  | ||||||
| if ! tput cols &>/dev/null || ! $INTERACTIVE; then     # Prevent tput errors if running non interactive | if [[ -z $TERM_WIDTH ]]; then                               # no batch file and no otherwise predefined TERM_WIDTH | ||||||
|      TERM_WIDTH=${COLUMNS:-80} |      if ! tput cols &>/dev/null || ! "$INTERACTIVE";then    # Prevent tput errors if running non interactive | ||||||
|  |           export TERM_WIDTH=${COLUMNS:-80} | ||||||
|      else |      else | ||||||
|      TERM_WIDTH=${COLUMNS:-$(tput cols)}               # for custom line wrapping and dashes |           export TERM_WIDTH=${COLUMNS:-$(tput cols)}        # for custom line wrapping and dashes | ||||||
|  |      fi | ||||||
| fi | fi | ||||||
| TERM_CURRPOS=0                                              # custom line wrapping needs alter the current horizontal cursor pos | TERM_CURRPOS=0                                              # custom line wrapping needs alter the current horizontal cursor pos | ||||||
|  |  | ||||||
| @@ -182,9 +184,6 @@ DAYS2WARN2=${DAYS2WARN2:-30}            # days to warn before cert expires, thre | |||||||
| VULN_THRESHLD=${VULN_THRESHLD:-1}       # if vulnerabilities to check >$VULN_THRESHLD we DON'T show a separate header line in the output each vuln. check | VULN_THRESHLD=${VULN_THRESHLD:-1}       # if vulnerabilities to check >$VULN_THRESHLD we DON'T show a separate header line in the output each vuln. check | ||||||
| NODNS=${NODNS:-false}                   # always do DNS lookups per default. For some pentests it might save time to set this to true | NODNS=${NODNS:-false}                   # always do DNS lookups per default. For some pentests it might save time to set this to true | ||||||
| readonly CLIENT_MIN_PFS=5               # number of ciphers needed to run a test for PFS | readonly CLIENT_MIN_PFS=5               # number of ciphers needed to run a test for PFS | ||||||
|                                         # generated from 'kEECDH:kEDH:!aNULL:!eNULL:!DES:!3DES:!RC4' with openssl 1.0.2i and openssl 1.1.0 |  | ||||||
| readonly ROBUST_PFS_CIPHERS="DHE-DSS-AES128-GCM-SHA256:DHE-DSS-AES128-SHA256:DHE-DSS-AES128-SHA:DHE-DSS-AES256-GCM-SHA384:DHE-DSS-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-DSS-CAMELLIA128-SHA256:DHE-DSS-CAMELLIA128-SHA:DHE-DSS-CAMELLIA256-SHA256:DHE-DSS-CAMELLIA256-SHA:DHE-DSS-SEED-SHA:DHE-RSA-AES128-CCM8:DHE-RSA-AES128-CCM:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-CCM8:DHE-RSA-AES256-CCM:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA256:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-CAMELLIA256-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-CHACHA20-POLY1305-OLD:DHE-RSA-CHACHA20-POLY1305:DHE-RSA-SEED-SHA:ECDHE-ECDSA-AES128-CCM8:ECDHE-ECDSA-AES128-CCM:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-CAMELLIA128-SHA256:ECDHE-ECDSA-CAMELLIA256-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305-OLD:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-CAMELLIA128-SHA256:ECDHE-RSA-CAMELLIA256-SHA384:ECDHE-RSA-CHACHA20-POLY1305-OLD:ECDHE-RSA-CHACHA20-POLY1305" |  | ||||||
|  |  | ||||||
| HAD_SLEPT=0 | HAD_SLEPT=0 | ||||||
| CAPATH="${CAPATH:-/etc/ssl/certs/}"     # Does nothing yet (FC has only a CA bundle per default, ==> openssl version -d) | CAPATH="${CAPATH:-/etc/ssl/certs/}"     # Does nothing yet (FC has only a CA bundle per default, ==> openssl version -d) | ||||||
| FNAME=${FNAME:-""}                      # file name to read commands from | FNAME=${FNAME:-""}                      # file name to read commands from | ||||||
| @@ -6656,7 +6655,9 @@ run_pfs() { | |||||||
|      local pfs_offered=false ecdhe_offered=false ffdhe_offered=false |      local pfs_offered=false ecdhe_offered=false ffdhe_offered=false | ||||||
|      local hexc dash pfs_cipher sslvers auth mac export curve dhlen |      local hexc dash pfs_cipher sslvers auth mac export curve dhlen | ||||||
|      local -a hexcode normalized_hexcode ciph rfc_ciph kx enc ciphers_found sigalg ossl_supported |      local -a hexcode normalized_hexcode ciph rfc_ciph kx enc ciphers_found sigalg ossl_supported | ||||||
|      local pfs_cipher_list="$ROBUST_PFS_CIPHERS" pfs_hex_cipher_list="" ciphers_to_test |      # generated from 'kEECDH:kEDH:!aNULL:!eNULL:!DES:!3DES:!RC4' with openssl 1.0.2i and openssl 1.1.0 | ||||||
|  |      local pfs_cipher_list="DHE-DSS-AES128-GCM-SHA256:DHE-DSS-AES128-SHA256:DHE-DSS-AES128-SHA:DHE-DSS-AES256-GCM-SHA384:DHE-DSS-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-DSS-CAMELLIA128-SHA256:DHE-DSS-CAMELLIA128-SHA:DHE-DSS-CAMELLIA256-SHA256:DHE-DSS-CAMELLIA256-SHA:DHE-DSS-SEED-SHA:DHE-RSA-AES128-CCM8:DHE-RSA-AES128-CCM:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-CCM8:DHE-RSA-AES256-CCM:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA256:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-CAMELLIA256-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-CHACHA20-POLY1305-OLD:DHE-RSA-CHACHA20-POLY1305:DHE-RSA-SEED-SHA:ECDHE-ECDSA-AES128-CCM8:ECDHE-ECDSA-AES128-CCM:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-CAMELLIA128-SHA256:ECDHE-ECDSA-CAMELLIA256-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305-OLD:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-CAMELLIA128-SHA256:ECDHE-RSA-CAMELLIA256-SHA384:ECDHE-RSA-CHACHA20-POLY1305-OLD:ECDHE-RSA-CHACHA20-POLY1305" | ||||||
|  |      local pfs_hex_cipher_list="" ciphers_to_test | ||||||
|      local ecdhe_cipher_list="" ecdhe_cipher_list_hex="" ffdhe_cipher_list_hex="" |      local ecdhe_cipher_list="" ecdhe_cipher_list_hex="" ffdhe_cipher_list_hex="" | ||||||
|      local curves_hex=("00,01" "00,02" "00,03" "00,04" "00,05" "00,06" "00,07" "00,08" "00,09" "00,0a" "00,0b" "00,0c" "00,0d" "00,0e" "00,0f" "00,10" "00,11" "00,12" "00,13" "00,14" "00,15" "00,16" "00,17" "00,18" "00,19" "00,1a" "00,1b" "00,1c" "00,1d" "00,1e") |      local curves_hex=("00,01" "00,02" "00,03" "00,04" "00,05" "00,06" "00,07" "00,08" "00,09" "00,0a" "00,0b" "00,0c" "00,0d" "00,0e" "00,0f" "00,10" "00,11" "00,12" "00,13" "00,14" "00,15" "00,16" "00,17" "00,18" "00,19" "00,1a" "00,1b" "00,1c" "00,1d" "00,1e") | ||||||
|      local -a curves_ossl=("sect163k1" "sect163r1" "sect163r2" "sect193r1" "sect193r2" "sect233k1" "sect233r1" "sect239k1" "sect283k1" "sect283r1" "sect409k1" "sect409r1" "sect571k1" "sect571r1" "secp160k1" "secp160r1" "secp160r2" "secp192k1" "prime192v1" "secp224k1" "secp224r1" "secp256k1" "prime256v1" "secp384r1" "secp521r1" "brainpoolP256r1" "brainpoolP384r1" "brainpoolP512r1" "X25519" "X448") |      local -a curves_ossl=("sect163k1" "sect163r1" "sect163r2" "sect193r1" "sect193r2" "sect233k1" "sect233r1" "sect239k1" "sect283k1" "sect283r1" "sect409k1" "sect409r1" "sect571k1" "sect571r1" "secp160k1" "secp160r1" "secp160r2" "secp192k1" "prime192v1" "secp224k1" "secp224r1" "secp256k1" "prime256v1" "secp384r1" "secp521r1" "brainpoolP256r1" "brainpoolP384r1" "brainpoolP512r1" "X25519" "X448") | ||||||
| @@ -12113,8 +12114,7 @@ run_mass_testing_parallel() { | |||||||
|      fi |      fi | ||||||
|      pr_reverse "====== Running in parallel file batch mode with file=\"$FNAME\" ======"; outln |      pr_reverse "====== Running in parallel file batch mode with file=\"$FNAME\" ======"; outln | ||||||
|      outln "(output is in ....\n)" |      outln "(output is in ....\n)" | ||||||
| #FIXME: once this function is being called we need a handler which does the right thing | #FIXME: once this function is being called we need a handler which does the right thing, i.e.  ==> not to overwrite | ||||||
| # ==> not overwrite |  | ||||||
|      while read cmdline; do |      while read cmdline; do | ||||||
|           cmdline=$(filter_input "$cmdline") |           cmdline=$(filter_input "$cmdline") | ||||||
|           [[ -z "$cmdline" ]] && continue |           [[ -z "$cmdline" ]] && continue | ||||||
| @@ -12608,7 +12608,7 @@ parse_cmd_line() { | |||||||
|  |  | ||||||
|      # Show usage if no options were specified |      # Show usage if no options were specified | ||||||
|      if [[ -z "$1" ]] && [[ -z "$FNAME" ]] && ! $do_display_only; then |      if [[ -z "$1" ]] && [[ -z "$FNAME" ]] && ! $do_display_only; then | ||||||
|           help 0 |           echo && fatal "URI missing" "1" | ||||||
|      else |      else | ||||||
|      # left off here is the URI |      # left off here is the URI | ||||||
|           URI="$1" |           URI="$1" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Dirk
					Dirk