Merge branch 'master' into openss2rfc_rfc2openssl
This commit is contained in:
commit
950b39122e
76
testssl.sh
76
testssl.sh
|
@ -4217,7 +4217,11 @@ certificate_info() {
|
||||||
out "$indent" ; pr_bold " Signature Algorithm "
|
out "$indent" ; pr_bold " Signature Algorithm "
|
||||||
case $cert_sig_algo in
|
case $cert_sig_algo in
|
||||||
sha1WithRSAEncryption)
|
sha1WithRSAEncryption)
|
||||||
pr_svrty_mediumln "SHA1 with RSA"
|
pr_svrty_medium "SHA1 with RSA"
|
||||||
|
if [[ "$SERVICE" == HTTP ]]; then
|
||||||
|
out " -- besides: users will receive a strong browser warning"
|
||||||
|
fi
|
||||||
|
outln
|
||||||
fileout "${json_prefix}algorithm" "MEDIUM" "Signature Algorithm: SHA1 with RSA (warning)"
|
fileout "${json_prefix}algorithm" "MEDIUM" "Signature Algorithm: SHA1 with RSA (warning)"
|
||||||
;;
|
;;
|
||||||
sha224WithRSAEncryption)
|
sha224WithRSAEncryption)
|
||||||
|
@ -6038,14 +6042,20 @@ tls_sockets() {
|
||||||
|
|
||||||
# mainly adapted from https://gist.github.com/takeshixx/10107280
|
# mainly adapted from https://gist.github.com/takeshixx/10107280
|
||||||
run_heartbleed(){
|
run_heartbleed(){
|
||||||
|
local tls_proto_offered tls_hexcode
|
||||||
|
local heartbleed_payload client_hello
|
||||||
|
local -i n ret
|
||||||
|
local -i hb_rounds=3
|
||||||
|
local append=""
|
||||||
|
|
||||||
[[ $VULN_COUNT -le $VULN_THRESHLD ]] && outln && pr_headlineln " Testing for heartbleed vulnerability " && outln
|
[[ $VULN_COUNT -le $VULN_THRESHLD ]] && outln && pr_headlineln " Testing for heartbleed vulnerability " && outln
|
||||||
pr_bold " Heartbleed"; out " (CVE-2014-0160) "
|
pr_bold " Heartbleed"; out " (CVE-2014-0160) "
|
||||||
|
|
||||||
[[ -z "$TLS_EXTENSIONS" ]] && determine_tls_extensions
|
[[ -z "$TLS_EXTENSIONS" ]] && determine_tls_extensions
|
||||||
if ! grep -q heartbeat <<< "$TLS_EXTENSIONS"; then
|
if ! grep -q heartbeat <<< "$TLS_EXTENSIONS"; then
|
||||||
pr_done_best "not vulnerable (OK)"
|
pr_done_best "not vulnerable (OK)"
|
||||||
outln " (no heartbeat extension)"
|
outln ", no heartbeat extension"
|
||||||
fileout "heartbleed" "OK" "Heartbleed (CVE-2014-0160): not vulnerable (OK) (no heartbeat extension)"
|
fileout "heartbleed" "OK" "Heartbleed (CVE-2014-0160): not vulnerable (OK), no heartbeat extension"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -6113,9 +6123,10 @@ run_heartbleed(){
|
||||||
# extension: heartbeat
|
# extension: heartbeat
|
||||||
x00, x0f, x00, x01, x01"
|
x00, x0f, x00, x01, x01"
|
||||||
|
|
||||||
|
for (( n=1; n <= hb_rounds; n++)); do
|
||||||
fd_socket 5 || return 6
|
fd_socket 5 || return 6
|
||||||
|
debugme out "\nsending client hello (TLS version $tls_hexcode)"
|
||||||
debugme outln "\nsending client hello (TLS version $tls_hexcode)"
|
debugme outln " ($n of $hb_rounds)"
|
||||||
socksend "$client_hello" 1
|
socksend "$client_hello" 1
|
||||||
|
|
||||||
debugme outln "\nreading server hello"
|
debugme outln "\nreading server hello"
|
||||||
|
@ -6128,37 +6139,60 @@ run_heartbleed(){
|
||||||
|
|
||||||
socksend "$heartbleed_payload" 1
|
socksend "$heartbleed_payload" 1
|
||||||
sockread 16384 $HEARTBLEED_MAX_WAITSOCK
|
sockread 16384 $HEARTBLEED_MAX_WAITSOCK
|
||||||
retval=$?
|
[[ $? -eq 3 ]] && append=", timed out"
|
||||||
|
|
||||||
if [[ $DEBUG -ge 3 ]]; then
|
if [[ $DEBUG -ge 3 ]]; then
|
||||||
outln "\nheartbleed reply: "
|
outln "\nheartbleed reply: "
|
||||||
echo "$SOCKREPLY" | "${HEXDUMPVIEW[@]}"
|
echo "$SOCKREPLY" | "${HEXDUMPVIEW[@]}"
|
||||||
outln
|
outln
|
||||||
fi
|
fi
|
||||||
|
|
||||||
lines_returned=$(echo "$SOCKREPLY" | "${HEXDUMP[@]}" | wc -l | sed 's/ //g')
|
lines_returned=$(echo "$SOCKREPLY" | "${HEXDUMP[@]}" | wc -l | sed 's/ //g')
|
||||||
|
|
||||||
if [[ $lines_returned -gt 1 ]]; then
|
if [[ $lines_returned -gt 1 ]]; then
|
||||||
pr_svrty_critical "VULNERABLE (NOT ok)"
|
if [[ "$STARTTLS_PROTOCOL" == "ftp" ]] || [[ "$STARTTLS_PROTOCOL" == "ftps" ]]; then
|
||||||
if [[ $retval -eq 3 ]]; then
|
# check possibility of weird vsftpd reply, see #426
|
||||||
fileout "heartbleed" "NOT ok" "Heartbleed (CVE-2014-0160): VULNERABLE (NOT ok) (timed out)"
|
saved_sockreply[n]=$SOCKREPLY
|
||||||
|
debugme out "${saved_sockreply[n]}"
|
||||||
|
#TMPFILE="${saved_sockreply[n]}"
|
||||||
|
close_socket
|
||||||
|
tmpfile_handle "$FUNCNAME,$n.txt"
|
||||||
else
|
else
|
||||||
fileout "heartbleed" "NOT ok" "Heartbleed (CVE-2014-0160): VULNERABLE (NOT ok)"
|
pr_svrty_critical "VULNERABLE (NOT ok)"
|
||||||
fi
|
fileout "heartbleed" "NOT ok" "Heartbleed (CVE-2014-0160): VULNERABLE (NOT ok)$append"
|
||||||
ret=1
|
ret=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
pr_done_best "not vulnerable (OK)"
|
pr_done_best "not vulnerable (OK)"
|
||||||
if [[ $retval -eq 3 ]]; then
|
fileout "heartbleed" "OK" "Heartbleed (CVE-2014-0160): not vulnerable (OK)$append"
|
||||||
fileout "heartbleed" "OK" "Heartbleed (CVE-2014-0160): not vulnerable (OK) (timed out)"
|
|
||||||
else
|
|
||||||
fileout "heartbleed" "OK" "Heartbleed (CVE-2014-0160): not vulnerable (OK)"
|
|
||||||
fi
|
|
||||||
ret=0
|
ret=0
|
||||||
|
break
|
||||||
fi
|
fi
|
||||||
[[ $retval -eq 3 ]] && out " (timed out)"
|
done
|
||||||
outln
|
|
||||||
|
|
||||||
close_socket
|
if [[ $n -gt 1 ]]; then
|
||||||
|
# more than one round of heartbleed checks --> vsftpd probably.
|
||||||
|
# This is the robust approach. According to a few tests it could also suffice # to check for "500 OOPS" only.
|
||||||
|
# Checking for the same socket reply DOES NOT suffice -- server can be idle and return the same memory
|
||||||
|
if [[ "${saved_sockreply[1]}" == "${saved_sockreply[2]}" ]] && [[ "${saved_sockreply[2]}" == "${saved_sockreply[3]}" ]] \
|
||||||
|
&& echo "${saved_sockreply[1]}" | grep -q '500 OOPS'; then
|
||||||
|
pr_done_best "not vulnerable (OK)$append"
|
||||||
|
[[ $DEBUG -ge 1 ]] && out ", successful weeded out vsftpd false positive"
|
||||||
|
fileout "heartbleed" "OK" "Heartbleed (CVE-2014-0160): not vulnerable (OK)$append"
|
||||||
|
else
|
||||||
|
out "likely "
|
||||||
|
pr_svrty_critical "VULNERABLE (NOT ok)"
|
||||||
|
[[ $DEBUG -ge 1 ]] && out " use debug >=2 to confirm"
|
||||||
|
fileout "heartbleed" "NOT ok" "Heartbleed (CVE-2014-0160): likely VULNERABLE (NOT ok)$append"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# for the repeated tries we did that already
|
||||||
|
#TMPFILE="$SOCKREPLY"
|
||||||
|
close_socket 2>/dev/null
|
||||||
tmpfile_handle $FUNCNAME.txt
|
tmpfile_handle $FUNCNAME.txt
|
||||||
|
fi
|
||||||
|
outln "$append"
|
||||||
|
|
||||||
return $ret
|
return $ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9132,4 +9166,4 @@ fi
|
||||||
exit $?
|
exit $?
|
||||||
|
|
||||||
|
|
||||||
# $Id: testssl.sh,v 1.537 2016/09/01 17:09:11 dirkw Exp $
|
# $Id: testssl.sh,v 1.540 2016/09/06 06:32:04 dirkw Exp $
|
||||||
|
|
Loading…
Reference in New Issue