Comprensión de la vulnerabilidad de la fijación de sesión

10

Lo que he leído

He leído los siguientes recursos sobre la fijación de la sesión, pero todavía tengo dificultades para comprender algunos aspectos de este tipo de vulnerabilidad:

  1. Guía de seguridad de Ruby on Rails § 2.7 Fijación de sesión .

  2. Medida preventiva para detectar ataques de fijación de sesión .

  3. Ataque de fijación de sesión .

  4. Wikipedia: Fijación de sesión .

Supongamos que los ID de las sesiones son generados por el servidor, y que se almacenan y se accede a ellos desde cookies, no se transfieren a través de las solicitudes GET y POST . La guía de Rails en el enlace # 1 anterior describe el ataque de esta manera (resumido de la fuente, el énfasis es mío):

  

    
  1. ElatacantecreaunIDdesesiónválido:carganlapáginadeiniciodesesióndelaaplicaciónwebdondedeseancorregirlasesiónytomanelIDdesesiónenlacookiedelarespuesta(consultelosnúmeros1y2enlaimagen).

  2.   
  3. Posiblementemantienelasesión.Lassesionesqueexpiran,porejemplocada20minutos,reducenengranmedidaelmarcodetiempoparaelataque.Porlotanto,accedenalaaplicaciónwebdevezencuandoparamantenervivalasesión.

  4.   
  5. AhoraelatacanteforzaráalnavegadordelusuarioausaresteIDdesesión(verelnúmero3enlaimagen).Comonopuedecambiarunacookiedeotrodominio(debidoalamismapolíticadeorigen),elatacantedebeejecutarunJavaScriptdesdeeldominiodelaaplicaciónwebdedestino.

  6.   
  7. ElatacanteatraealavíctimaalapáginainfectadaconelcódigoJavaScript.Alverlapágina,elnavegadordelavíctimacambiaráelIDdesesiónalIDdesesióntrampa.

  8.   
  9. Comolanuevasesióndecapturanoestáenuso,laaplicaciónwebrequeriráqueelusuarioseautentique.

  10.   
  11. Deahoraenadelante,lavíctimayelatacanteutilizaránlaaplicaciónwebenlamismasesión:lasesiónsehizoválidaylavíctimanonotóelataque.

  12.   

Loquenoentiendo

Ahoraaquíestálapartequenoentiendo.DejandodeladoelhechodequeunacontramedidaefectivacontraesteataqueessimplementeemitirunnuevoIDdesesiónalusuariovíctimacuandoiniciesesiónenelsitiolegítimo,¿porquéelservidorlegítimorequierequeelusuariovíctimainiciesesión?¿Detodosmodos,aunqueyatienenunIDdesesión"válido"?

Después de todo, el atacante ha estado manteniendo la validez de la ID de sesión fija de antemano (como se señaló en el paso # 2 de la guía de seguridad de Rails citada anteriormente), ¿por qué el servidor no acepta la ID de sesión y el registro? el usuario víctima en el sitio web como atacante? ¿Por qué se requieren las credenciales de inicio de sesión nuevamente?

Tenga en cuenta que esta pregunta no es específica de Ruby on Rails. Se aplica a cualquier implementación de sesiones de usuario, en cualquier marco e idioma.

    
pregunta 40XUserNotFound 15.04.2014 - 21:25
fuente

1 respuesta

10

El atacante nunca inicia sesión en el sitio con sus credenciales, solo accede a una página para obtener el ID de sesión, por lo que mientras pasan un ID de sesión válido a la víctima, no pasan una sesión autenticada. Cuando la víctima inicia sesión en el sitio, la sesión ahora está autenticada y el atacante puede acceder a ella como la víctima.

    
respondido por el Robert Munn 15.04.2014 - 21:47
fuente

Lea otras preguntas en las etiquetas