¿Cómo uso "openssl s_client" para probar (en ausencia de) el soporte de SSLv3?

107

Para mitigar la vulnerabilidad de "Caniche" , me gustaría desactivar el soporte SSLv3 en mi ( en este caso, servidor TLS, en lugar de HTTPS). ¿Cómo puedo usar openssl s_client para verificar que he hecho esto?

    
pregunta Roger Lipscombe 15.10.2014 - 11:54
fuente

5 respuestas

133

OpenSSL s_client

Para comprobar si ha deshabilitado la compatibilidad con SSLv3, ejecute lo siguiente

openssl s_client -connect example.com:443 -ssl3

que debería producir algo como

3073927320:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1258:SSL alert number 40
3073927320:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596:

significa que SSLv3 está deshabilitado en el servidor. De lo contrario, la conexión se establecerá correctamente.

Nmap

Alternativamente, puede usar nmap para escanear el servidor en busca de una versión compatible:

# nmap --script ssl-enum-ciphers example.com
Starting Nmap 6.47 ( http://nmap.org ) at 2014-10-15 03:19 PDT
Nmap scan report for example.com (203.0.113.100)
Host is up (0.090s latency).
rDNS record for 203.0.113.100: edge.example.com
Not shown: 997 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https
| ssl-enum-ciphers: 
|   **SSLv3: No supported ciphers found**
|   TLSv1.0: 
    
respondido por el P4cK3tHuNt3R 15.10.2014 - 12:16
fuente
23

En una nota al margen, puede usar nmap con el script ssl-enum-ciphers de la siguiente manera

nmap --script ssl-enum-ciphers -p 443 example.com

Obtendrás una respuesta como esta.

PORT    STATE SERVICE
443/tcp open  https
| ssl-enum-ciphers: 
|   SSLv3: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong
|       TLS_RSA_WITH_RC4_128_MD5 - strong
|       TLS_RSA_WITH_RC4_128_SHA - strong
|     compressors: 
|       NULL
|   TLSv1.0: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_RSA_WITH_RC4_128_MD5 - strong
|       TLS_RSA_WITH_RC4_128_SHA - strong
|     compressors: 
|       NULL
|   TLSv1.1: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|     compressors: 
|       NULL
|   TLSv1.2: 
|     ciphers: 
|       TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong
|       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - strong
|     compressors: 
|       NULL
|_  least strength: strong

Como puede ver, enumera todas las versiones compatibles de ssl / tls, así como las suites de cifrado

    
respondido por el Anonymous Platypus 06.07.2015 - 14:57
fuente
6

Creé esta prueba para la disponibilidad del protocolo SSLv3. Probablemente hay una mejor manera de buscar una cadena que también muestre que los cifrados CBC están en uso, pero la mayoría de las personas parece querer saber si SSLv3 está disponible.

Algunas cosas a tener en cuenta:

  • Escrito para el bash en Mac OS X, así que no puedo asegurar que funcionará en todas partes
  • Usa gtimeout vs. timeout ya que Mac es raro con esos utils principales
  • allexternal.txt es un archivo con un nombre de host o IP por línea

script:

for ip in 'awk '{print $1}' < allexternal.txt'; do
    if gtimeout 30 openssl s_client -connect $ip:443 -ssl3 | grep -q 'Protocol  : SSLv3' ; then
        echo $ip SSLv3 detected >> sslv3output;
    else
        echo $ip SSLv3 NOT detected >> sslv3output;
    fi;
done
    
respondido por el theterribletrivium 16.10.2014 - 00:43
fuente
2

Si solo SSLv3 está deshabilitado, también puedes forzar a openssl s_client a usar solo TLS:

openssl s_client -connect exmaple.com:443 -tls1
    
respondido por el Mathias R. Jessen 26.02.2015 - 01:29
fuente
1

Vale la pena señalar que la opción -ssl3 en OpenSSL ahora tiene que estar habilitada en el momento de la compilación. Si está ejecutando en binarios precompilados, la opción puede no estar disponible. Consulte este número: enlace

Una herramienta alternativa es testssl.sh. Esto busca protocolos, cifrados y vulnerabilidades seleccionadas: enlace

    
respondido por el matttyg 12.09.2018 - 13:00
fuente

Lea otras preguntas en las etiquetas