Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
SealSecurityAssignment — Investigando sobre la vulnerabilidad CVE-2023-26136 | Kitploit
Herramientas/GitHubGitHub/cucumberanorsncompany/sealsecurityassignment
Análisis EstáticoAnálisis de VulnerabilidadesAnálisis de CódigoExplotaciónSeguridad WebAprendizaje y Educación
GitHubcucumberanorsncompany/sealsecurityassignment

SealSecurityAssignment

Investigando sobre la vulnerabilidad CVE-2023-26136

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Ver Repositorio
110hace 2 añosAún no revisado
Compartir

SealSecurityAssignment

Investigando la vulnerabilidad CVE-2023-26136

Investigación sobre Vulnerabilidad: CVE-2023-26136

Descripción:

Las versiones del paquete tough-cookie anteriores a la 4.1.3 son vulnerables a Prototype Pollution debido al manejo inadecuado de cookies al usar CookieJar en modo rejectPublicSuffixes=false. Este problema surge de la forma en que se inicializan los objetos.

https://nvd.nist.gov/vuln/detail/CVE-2023-26136

Introducción:

¿Qué es Prototype Pollution?

JavaScript tiene el concepto de objetos, que es algo similar a los diccionarios. Un objeto puede contener un conjunto de variables de diferentes tipos (por ejemplo, string, Boolean, int, etc.), el nombre de la variable es una clave y su valor es el valor, si continuamos con la analogía de diccionarios y objetos. Más precisamente, el objeto es análogo a la estructura de datos del diccionario en sí, y cada variable es análoga a un par clave-valor. Los objetos también tienen la palabra clave proto que permite agregar variables adicionales a un objeto modificando su prototipo. Prototype Pollution es un ataque en el que el atacante contamina su objeto agregándole variables adicionales mediante la palabra clave proto. La siguiente interacción con la consola del navegador demuestra el ataque.

imagen

Como podemos ver, tenemos dos usuarios: admin1 y user1. El objeto admin1 tiene una variable booleana: "isAdmin", que está establecida en true. User1 no tiene esta variable en absoluto. En la línea 7, agregamos la variable isAdmin al prototipo de user1, y aunque es evidente en la línea 10 que la variable no se ha agregado al objeto user1 en sí, la consola responde positivamente, esta vez, cuando verificamos el valor de user1.isAdmin. Esto se debe a que user1 está heredando las propiedades de su prototipo.

imagen

También vale la pena mencionar que el prototipo es un objeto en sí mismo, que a su vez hereda propiedades y métodos de su prototipo, creando así una cadena de prototipos. La cadena termina con un prototipo nulo, por lo tanto, un enfoque razonable para prevenir Prototype Pollution es hacer que el objeto con el que estamos trabajando herede explícitamente de un prototipo nulo.

¿Qué son las cookies?

Las cookies (a menudo conocidas como cookies de internet) son archivos de texto con pequeños fragmentos de datos —como un nombre de usuario y contraseña— que se utilizan para identificar tu computadora mientras usas una red. Se utilizan cookies específicas para identificar usuarios concretos y mejorar su experiencia de navegación web.

Cortesía de Kaspersky: https://www.kaspersky.com/resource-center/definitions/cookies

¿Qué es CookieJar?

CookieJar es un objeto para almacenar cookies.

La Tarea:

La vulnerabilidad:

Según la descripción de la vulnerabilidad, surge de la forma en que Tough-Cookie inicializa las Cookies. Dado que las Cookies son objetos, son, al menos teóricamente, vulnerables a Prototype Pollution.

Los Riesgos:

Al poder manipular objetos y particularmente cookies, a través del prototipo del objeto, el atacante puede potencialmente acceder a datos no autorizados, ejecutar código remoto, causar una denegación de servicio, secuestrar la sesión si el sitio web depende de cookies para gestionar la sesión y extraer datos sensibles de las propias cookies.

El Parche:

El parche se realizó en el archivo: memstore.js. Según el seguimiento del problema así como el parche introducido en la versión 4.1.3, para parchear la vulnerabilidad, necesitamos almacenar las cookies en un mapa o crear el objeto this.idx. Al crear this.idx usando: this.idx = Object.create(null); en lugar de this.idx = {}, practico mi sugerencia sobre cómo prevenir Prototype Pollution en la introducción, heredando de un prototipo nulo y cortando la cadena de prototipos.

Probando la vulnerabilidad (index.js):

Snyk publicó una Prueba de Concepto (PoC) para la vulnerabilidad discutida. Construí index.js basándome en ella. Lo envolví en una lógica try-catch para capturar excepciones si surgían, agregué salida adicional para seguir el progreso de las pruebas y terminé con el resultado requerido (por ejemplo, "EXPLOITED SUCCESSFULLY" o "EXPLOITED FAILED"). Al ejecutar el comando: npm install [email protected] && node index.js Obtenemos la siguiente salida:

imagen

Al ejecutar el comando: npm install ./tough-cookie-2.5.0-PATCHED.tgz && node index.js Obtenemos la siguiente salida:

imagen

En ambos escenarios (ejecutando con la versión publicada 2.5.0 y ejecutando con mi versión parcheada), logramos configurar tanto la cookie normal como la cookie explotada, pero en la versión parcheada, no pudimos acceder a la cookie explotada.

Resumen:

En esta tarea aprendí sobre el ataque Prototype Pollution, aprendí sobre el objeto JavaScript y me introduje al paquete Tough-Cookie.

Descargar herramienta