Cubrimos el nivel OverTheWire Natas 19-20. Este nivel era similar al nivel anterior, pero la ID de sesión ya no se genera secuencialmente y en el nuevo desafío, la ID de sesión se genera usando un rango de números del 1 al 640 y luego se combina con el nombre de usuario usado para iniciar sesión y, por último, el final. La cadena está codificada en hexadecimal. Al utilizar secuencias de comandos de Python, pudimos identificar el patrón utilizado para crear el ID de sesión y encontrar el asociado con la cuenta de administrador. . Esto fue parte de OverTheWire Juegos de Guerra Natas Nivel 19-20

Obtenga notas del certificado OSCP

Transcripción del vídeo

Qué está pasando, chicos, bienvenidos de nuevo a este video de hoy. Haremos juegos CTF por cable y haremos amor e iluminación para pasar a otros 19 al nivel 20.
Bien, visitamos la URL y vemos un formulario de inicio de sesión. El título dice que esta página utiliza prácticamente el mismo código que el nivel anterior, pero los ID de sesión ya no son secuenciales.
Entonces, básicamente, si va al nivel anterior, si recuerda el nivel anterior, forzamos bruscamente los ID de sesión, por lo que los ID de sesión eran predecibles y se les asignaba un valor numérico en el código que no es bueno desde una perspectiva de seguridad.

Porque puedes usar la fuerza bruta
el ID de seguridad o el ID de sesión y básicamente averigua cuál es el ID de sesión asociado con la cuenta de administrador, eso es lo que hicimos en el video anterior, pero ahora este ya no es el caso porque dice que los ID de sesión ya no son secuenciales, además lo somos. No proporcionar el código fuente, lo que significa que se trata de una prueba de caja negra.

Inicie sesión con su cuenta de administrador para recuperar las credenciales de los nativos 20, de modo que si iniciamos sesión ahora con algo para probar la respuesta de la aplicación web.
Dado que estamos probando los ID de sesión, queremos echar un vistazo ahora al ID de sesión del usuario que usamos para iniciar sesión, que es Test2, así que hacemos clic derecho y vamos a inspeccionar. Desde aquí vamos a la aplicación.
y resaltamos las cookies. Tomaré nota del ID de la sesión. Esta es la sesión. Si la copiamos y vamos a Cyberchef.

De hexadecimal ahora convertimos el valor de hexadecimal al texto ASCII correspondiente, como puede ver, el resultado es 380-Test 2, por lo que el usuario que hemos utilizado es parte de esta ID de sesión.

Para comprender mejor esto, debemos regresar e iniciar sesión con un usuario diferente y ver cómo diferirá el ID de decisión, por lo que eliminamos esta cookie desde aquí.
volvemos a la página principal y escribimos esta vez test5 inicia sesión nuevamente vamos a inspeccionar esperamos las cookies hacemos clic en el ID de sesión vamos a cyberchef pegamos el ID de sesión
Y de hecho, este es el ID de la nueva sesión, así que vean, muchachos, el nombre de usuario que usamos siempre se agrega como parte de la cookie antes de la codificación hexadecimal.
esta vez y esta vez Test2 y test5 y hay un número entre antes del nombre de usuario.

Esta vez vamos a intentar iniciar sesión con una cuenta de administrador, por lo que la contraseña de admin1 es admin 1 y ahora queremos echar un vistazo a la cookie.
copie la cookie para que sean las nuevas cookies, así que nuevamente incluye el nombre de usuario admin1 y antes del nombre de usuario hay un número, intentemos ahora con otro usuario administrador.
entonces eliminamos la última cookie admin6, esta vez eche un vistazo nuevamente a las cookies y nuevamente, como puede ver, admin6 es parte de la cookie y antes del nombre de usuario está el número.
Ahora ve que hay un patrón, por lo que cuando iniciamos sesión por primera vez con usuarios habituales, puede ver que las cookies parecen tener partes comunes que comienzan con 2D 2d74657375, esta es la parte común para los usuarios o usuarios habituales.

Si vamos a los usuarios administradores y resaltamos las partes comunes en sus ID de sesión, podemos comenzar desde aquí, entonces, ¿qué debemos hacer?
debemos asumir que queremos obtener acceso al usuario administrador solo administrador para poder hacerlo, necesitamos averiguar dónde está la parte de administrador en hexadecimal.
Entonces me parece que esta es la parte de administración en hexadecimal para confirmar la sospecha, como pueden ver la parte de administración, por lo que debemos mantener esta parte de administración constante en nuestra confusión y debemos encontrar el número correcto.

Básicamente, vamos a precisar números similares desde cero hasta 640. Bien, porque 640 fue el número máximo utilizado para generar los ID de sesión, si recuerdas del último desafío, de 0 a 640 estos números se generan de acuerdo con ese rango de 0 a 640. 640, así que queremos revisar estos números del 0 al 640 y probarlos con el administrador y ella determinará cuál nos otorga acceso, así que básicamente estamos haciendo fuerza bruta y fuzzing al mismo tiempo.
veamos cómo se ve esto en un script de Python.

Bien, lo primero que hacemos es definir el objetivo, esta es la URL a la que navegaremos y estas son las credenciales y vamos a simular.
autenticación básica usando el protocolo HTTP con las credenciales del nivel anterior. Muy bien, a continuación definimos los parámetros que controlan el ID de sesión de PHP, son los máximos y
el número más bajo y más alto, el número más bajo es uno y el número más alto es 640 nuevamente de acuerdo con el desafío anterior, por lo que entre estos dos números generaremos los ID de sesión, luego pasamos por un ciclo while aquí, por lo que en el ciclo while queremos pruebe con todos los ID de sesión posibles. El ID de sesión se compone de dos bits, el primer bit es el número en el rango entre 0 y 640 y el nombre de usuario en sí. Queremos probar estos números pero queremos mantener constante el nombre de usuario, que resulta ser admin. Para hacer eso, esta es la parte de administración.
en HEX y así es como convertimos el número entre 1 y 640 en hexadecimal, como puedes ver, lo tomamos de
el ciclo While desde aquí, por lo que primero el primer número será uno y luego los aumentaremos en uno cada vez que pasemos por el ciclo.
y lo convertimos a hexadecimal al final. El ID de decisión viene como es hexadecimal.

El formato hexadecimal más las partes de administración, este es el formato hexadecimal y esta parte del álbum, los sumamos para obtener esta fórmula, el número y el nombre de usuario, y luego probamos esto en una solicitud básica a través de los encabezados y las variables de respuesta. A continuación ejecutamos el script, ahora esto o la extensión del script imprimirán cada ID de sesión posible que se genere durante el proceso.
ahora todas estas identificaciones de sesión se están intentando en vivo contra su aplicación.

Entonces ese fue el ID de sesión que generó la respuesta correcta que queríamos, así que echemos un vistazo, copie eso y vayamos al navegador, ya que puede leer todo esto, por lo que es 281-admin, ese es el número correcto que generó la cookie que se procesó. Esta salida es así.
si bajas, podemos ver esta respuesta, eres administrador, las credenciales para el siguiente nivel no son 20 y esta es la contraseña, por lo que efectivamente concluye el nivel actual.
y ahora podemos intentar iniciar sesión en el siguiente nivel cambiando el 19 en la URL por 20, está bien, así que probemos con la contraseña y ahora estamos en el nivel 20. Haremos esto en los próximos videos, chicos, por ahora concluyo este video y Quiero agradecerles por mirar. Nos vemos más tarde.

Tutorial en vídeo

 

Acerca del Autor

Creo notas de ciberseguridad, notas de marketing digital y cursos online. También brindo consultoría de marketing digital que incluye, entre otros, SEO, Google y meta anuncios y administración de CRM.

Ver Artículos