Skip to content

Authentication bypass via encryption oracle

[20260311144930.png]

LAB

Al iniciar sesión y luego realizar un comentario:

[20260311145144.png]

Y que el mail este incorrectamente, este muestra un error:

[20260311145159.png]

Por lo que al revisar las solicitudes generadas observamos que al enviar el comentario se se envia como respuesta en la cookie un notification el que tiene una valor en base64

[20260311145556.png]

Al iniciar sesión nuevamente, esta vez marcando el apartado de Stay logged in:

[20260311150649.png]

Y volver a comentar, en nuestra solicitud vemos que viaja una cookie stay-logged-in= que es muy parecida en sintaxis al que se genera de notification

[20260311150710.png]

c
Cookie: notification=; session=0ahOs7fdbFZmBdQFpCcPXnxE6yYDH1xT; stay-logged-in=QgTywx0K9P%2bHO9x%2bRPSYnCeblp1iVWQ8%2fhduzlOiXE4%3d

Al cambiar el valor de stay-logged-in en notification este es el valor de un usuario y el tiempo iniciado sesion.

[20260311150805.png]

Teniendo en cuenta esto, podemos generar una cookie para el usuario adminsitrator

[20260311151232.png]

Al enviar la solictud, vemos que se nos genera:

c
csrf=xMbpcrfYekwvhjTk0LXItSBd8IpnIZte&postId=5&comment=aaa&name=aaa&email=administrator:1773259521313&website=http%3A%2F%2Ftest.com

Por lo que al cambiar en notification vemos que este da un error:

[20260311151421.png]

Pero podemos tomar el valor en base64 y borrar os caracteres, así quedarnos solo con administrator:1773259521313

[20260311151743.png]

Por lo que para solo tener administrator:1773259521313, se tiene que borrar 23 bytes

[20260311151919.png]

Al borrar los 23 bytes y solo dejar: administrator:1773259521313

[20260311152355.png]

Tenemos lo siguiente:

c
wZD2SYYLZ6h+yZs20+3QlNvQWJn8ktPTBSoI/uPpk2PHcY6/G0fYCXc=

wZD2SYYLZ6h%2byZs20%2b3QlNvQWJn8ktPTBSoI/uPpk2PHcY6/G0fYCXc%3d

Luego de urlencodear y agregar en la cookie, este nos da un error el cual indica que se encripta 16 en 16, por lo que al borrar los 23 quedan bytes que no son múltiplos de 16.

[20260311152455.png]

Por lo que podemos hacer es agregar 9 letras mas y tendríamos una cadena que borrar (23 +9 = 32) que es múltiplo de 16.

Volvemos a enviar la solicitud:

c
csrf=xMbpcrfYekwvhjTk0LXItSBd8IpnIZte&postId=5&comment=aaa&name=aaa&email=xxxxxxxxxadministrator:1773259521313&website=http%3A%2F%2Ftest.com

Y generamos nuevamente para luego borrar 32 bytes:

[20260311152917.png]

Así obteniendo los siguiente:

c
xywurkwius9YHetBihB/EoOVYvy9QOGan8i35KHoBcM=

xywurkwius9YHetBihB/EoOVYvy9QOGan8i35KHoBcM%3d

Antes de editar el valor de stay-logged-in= cerramos sesión del usuario wiener para que no exista conflictos:

[20260311154411.png]

Al editar el valor de stay-logged-in= y recargar el sito web observamos que tenemos una pestaña del panel administrativo:

[20260311154446.png]

[20260311154511.png]

Ahora solo debemos eliminar al usuario Carlos para completar el laboratorio.