¿Puede alguien usando Wireshark obtener la URL completa si mi programa usa HTTPS?

20

Al leer detenidamente el contenido de los archivos pcap, he notado que algunas URL parecen ser visibles a pesar de ser HTTPS. Estos ocurren principalmente dentro de las cargas útiles que contienen URL cert, pero también veo las URL HTTPS dentro de lo que parecen ser cargas útiles HTTP.

¿Alguien puede decir de manera concluyente si las URL de HTTPS realmente se mantienen en secreto?

Me preocupa esto porque quiero poner algunos parámetros en la URL y no quiero que estos se descubran fácilmente.

    
pregunta Icann 06.02.2015 - 03:14
fuente

5 respuestas

37

Con HTTPS, la ruta y la cadena de consulta de la URL se cifran, mientras que el nombre del host es visible dentro del protocolo de enlace SSL como texto sin formato si el cliente utiliza la Indicación del nombre del servidor (SNI). Todos los clientes modernos usan SNI porque es la única forma de tener hosts diferentes con sus propios certificados detrás de la misma dirección IP.

El resto de la URL (es decir, todo menos el nombre de host) solo se utilizará dentro de la conexión cifrada. Por lo tanto, en teoría, está oculto para el atacante a menos que el cifrado se rompa (comprometiendo la clave privada, los ataques del intermediario, etc.). En la práctica, un atacante puede tener formas indirectas de obtener información sobre la parte restante de la URL:

  • Las diferentes páginas en el mismo servidor sirven contenido diferente con diferentes tamaños, etc. Si el atacante escanea el sitio para averiguar todas las páginas posibles, entonces podrá averiguar a qué páginas ha accedido simplemente mirando el tamaño de los datos transferidos.
  • Los enlaces a otros sitios contienen encabezado de referencia. Por lo general, el Referer se elimina cuando se vincula desde https a http, pero si el atacante controla uno de los sitios vinculados con https, podría averiguar de dónde proviene el enlace, ese es el sitio al que ha accedido.

Pero en la mayoría de los casos usted está bastante seguro con HTTPS, al menos mucho más seguro que con HTTP simple.

    
respondido por el Steffen Ullrich 06.02.2015 - 07:08
fuente
10

Tanto los encabezados HTTP (que contienen la URL solicitada) como los datos de la aplicación en HTTPS están cifrados.

Puede ver el nombre de host solicitado, porque los navegadores lo envían en la extensión Service Name Indation durante handshake, para que el servidor pueda elegir el certificado SSL correspondiente.

    
respondido por el zakjan 06.02.2015 - 05:16
fuente
8

Al utilizar Wirehark, podrá averiguar el nombre del host, como lo mencionan otras respuestas, debido a SNI. Además, podrás ver algunas partes de los certificados. Las URL de https que has visto son probablemente las URL de CRL s o OCSP s.

Si alguien puede acceder a sus URL recorriendo su sitio y comparando el tamaño de las páginas devueltas con el tamaño de lo que se devuelve en su página cifrada, podrían hacer suposiciones sobre a qué página llamó su programa. Pero, como quiere poner algunos parámetros en la URL y ocultarlos, este no es un gran vector de ataque en su caso. Si su URL es https://my.server/api?user=scott&password=tiger&highscore=12345 , y su api siempre devuelve páginas entre 1000 y 1010 bytes, el hecho de que se devuelvan 1007 bytes no ayudará a nadie a determinar el usuario o la contraseña o cómo ingresar una puntuación más alta.

HOWEVER

enlace fiddler , charles o mitmproxy redirige su tráfico a ellos mismos, presenta un certificado falso al cliente, descifra el tráfico, regístrelo, vuelva a cifrarlo y envíelo al sitio original.

Si su cliente confía en el almacén de confianza del sistema operativo, el atacante podrá insertar su propio certificado en el almacén de confianza y su cliente no notará nada. Los READMEs de las herramientas mencionadas anteriormente tienen instrucciones de cómo hacer esto.

Por lo tanto, si va a https para evitar el descifrado, deberá verificar si el certificado devuelto por el servidor es correcto antes de enviar su URL. Compruebe cómo fijación de certificados para su sistema operativo / lenguaje de programación, y use las herramientas anteriores para asegurarse de que su cliente detectará un certificado falso y no enviar la URL antes de publicarlo.

    
respondido por el Guntram Blohm 06.02.2015 - 11:09
fuente
3

Es posible realizar un análisis del tráfico rastreando el sitio web y comparando los tamaños de paquetes, etc. Dependiendo de la cantidad de contenido dinámico presente o las imágenes a las que se hace referencia desde URL es posible obtener una comprensión muy precisa de qué URL se visitaron.

La presentación Ataques de análisis de tráfico SSL - Vincent Berg (YouTube) lo explica Y tiene algunas demostraciones funcionales.

    
respondido por el wireghoul 06.02.2015 - 07:37
fuente
0

Es posible si el atacante tiene acceso al cliente; para obtener una descripción general, consulte:      enlace

Por ejemplo, en Java-Clients se puede adjuntar un agente como jSSLKeylog para interceptar y registrar el contenido / URL supuestamente cifrado. Si el PreMaster-Secreto de una comunicación puede obtenerse por cualquier medio en el proceso, la comunicación cifrada capturada puede decodificarse posteriormente.

    
respondido por el Alim Özdemir 11.05.2018 - 16:03
fuente

Lea otras preguntas en las etiquetas