diff --git a/CHANGELOG b/CHANGELOG index c8cff4a33..3c0d04a41 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,10 @@ o [NSE] Added 9 new fingerprints for script http-default-accounts. Schneider controller, Xerox printer, Citrix NetScaler, ESXi hypervisor) [nnposter] +o [NSE] Fixed a bug in ssl-enum-ciphers which caused it to not output TLSv1.2 + info with DHE ciphersuites or others involving ServerKeyExchange messages. + [Daniel Miller] + o [NSE] Added oracle-tns-version to decode the version number from Oracle Database Server's TNS listener. [Daniel Miller] diff --git a/nselib/tls.lua b/nselib/tls.lua index ffa4b99ae..1155b8910 100644 --- a/nselib/tls.lua +++ b/nselib/tls.lua @@ -831,7 +831,7 @@ KEX_ALGORITHMS.RSA_EXPORT = { local pos local ret = {rsa={}} pos, ret.rsa.modulus, ret.rsa.exponent = bin.unpack(">PP", blob) - pos, ret.signed = unpack_signed(blob, pos) + pos, ret.signed = unpack_signed(blob, pos, protocol) ret.strength = #ret.rsa.modulus return ret end @@ -844,7 +844,7 @@ KEX_ALGORITHMS.DHE_RSA={ local pos local ret = {} pos, ret.dhparams, ret.strength = unpack_dhparams(blob) - pos, ret.signed = unpack_signed(blob, pos) + pos, ret.signed = unpack_signed(blob, pos, protocol) return ret end } @@ -889,7 +889,7 @@ KEX_ALGORITHMS.ECDHE_RSA={ local pos local ret = {} pos, ret.ecdhparams, ret.strength = unpack_ecdhparams(blob) - pos, ret.signed = unpack_signed(blob, pos) + pos, ret.signed = unpack_signed(blob, pos, protocol) return ret end } @@ -968,7 +968,7 @@ KEX_ALGORITHMS.SRP_SHA = { local pos local ret = {srp={}} pos, ret.srp.N, ret.srp.g, ret.srp.s, ret.srp.B = bin.unpack(">PPpP", blob) - pos, ret.signed = unpack_signed(blob, pos) + pos, ret.signed = unpack_signed(blob, pos, protocol) ret.strength = #ret.srp.N return ret end diff --git a/scripts/ssl-enum-ciphers.nse b/scripts/ssl-enum-ciphers.nse index 23db5a364..f21354192 100644 --- a/scripts/ssl-enum-ciphers.nse +++ b/scripts/ssl-enum-ciphers.nse @@ -725,7 +725,7 @@ local function find_ciphers_group(host, port, protocol, group, scores) end local ske = get_body(handshake, "type", "server_key_exchange") if kex.server_key_exchange and ske then - local kex_info = kex.server_key_exchange(ske.data) + local kex_info = kex.server_key_exchange(ske.data, protocol) if kex_info.strength then local rsa_bits = tls.rsa_equiv(kex.type, kex_info.strength) local low_strength_warning = false