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
CVE-2021-38297-Go-wasm-Replication — Prueba de concepto educativa que replica CVE-2021-38297, un desbordamiento de búfer en Go WASM que conduce a XSS almacenado. Incluye configuración de la aplicación vulnerable, pasos de reproducción del exploit y guía de parcheo para investigación de seguridad. | Kitploit
Herramientas/GitHubGitHub/paras98/cve-2021-38297-go-wasm-replication
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebCTFPapers e InvestigaciónAprendizaje y EducaciónExplotación de BinariosLabs y Práctica
GitHubparas98/cve-2021-38297-go-wasm-replication

CVE-2021-38297-Go-wasm-Replication

Prueba de concepto educativa que replica CVE-2021-38297, un desbordamiento de búfer en Go WASM que conduce a XSS almacenado. Incluye configuración de la aplicación vulnerable, pasos de reproducción del exploit y guía de parcheo para investigación de seguridad.

Ver Repositorio
47hace 2 añosAún no revisado

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 →
Compartir

🚨 Explotando CVE-2021-38297: Un viaje al desbordamiento de búfer de GO Wasm 🚨

🌐 Resumen de la vulnerabilidad 🌐

WebAssembly (WASM) 🌍, un formato de instrucción binaria de vanguardia, permite la ejecución fluida de lenguajes de alto nivel como C, C++, Rust y GO en navegadores web modernos. Sin embargo, el descubrimiento de CVE-2021-38297 🚩 reveló una falla crítica en el proceso de compilación y carga de GO para binarios WASM compilados con GO. Esta vulnerabilidad, encontrada en el cargador JavaScript de WASM (wasm_exec.js) proporcionado por GO, permitía la inclusión sin restricciones de datos en el argumento argv. Dado que argv se almacena en la memoria lineal de WASM, actores maliciosos podrían explotar esto para sobrescribir la memoria lineal del programa WASM compilado con GO con una entrada argv de tamaño excesivo, lo que lleva a resultados impredecibles y potencialmente peligrosos. Esta vulnerabilidad era una preocupación significativa en versiones de GO anteriores a la 1.17.2. En resumen:

  1. El front-end renderiza cada publicación y sus comentarios.
  2. Durante el renderizado, el módulo GO WASM se carga, procesando los comentarios a través de la variable argv y las publicaciones en la dirección de memoria 0x5000.
  3. Funciones como toLeetSpeak y processSharedVar se emplean para el contenido de comentarios y publicaciones, respectivamente.

💻 Aplicación vulnerable: Vuln-Twitter 💻

En nuestra prueba de concepto, presentamos "Vuln-Twitter", una plataforma de redes sociales simulada que permite contenido generado por el usuario a través de publicaciones y comentarios. Utilizando un servidor web Node.js y SQLite para el almacenamiento de datos, el front-end de Vuln-Twitter emplea JavaScript plano junto con un módulo GO WASM llamado wordprocessor.wasm para el renderizado dinámico de contenido. Este módulo, notablemente, incluye métodos como toLeetSpeak, que transforma las entradas del usuario en "LeetSpeak" estilizado para una experiencia de usuario atractiva. Interfaz de Vuln Twitter

Explotando el desbordamiento de búfer

Nuestra exploración revela un punto crítico de explotación durante la fase de renderizado de contenido, donde cada comentario se transforma mediante el módulo GO WASM. Un comentario especialmente diseñado y de gran tamaño puede desencadenar la vulnerabilidad, provocando un desbordamiento de búfer que manipula el contenido de la publicación original, demostrando un vector de ataque clásico de XSS almacenado. Esta vulnerabilidad no solo subraya el potencial de manipulación maliciosa de datos, sino que también resalta las implicaciones más amplias de las prácticas de programación segura en el contexto del desarrollo web y las aplicaciones WASM. Consulte la sección de código que hace lo mismo:

Lógica de renderizado

Diagrama de memoria lineal de WASM al renderizar un comentario:

Memoria de lógica de renderizado Flujo de explotación

Reproduciendo la explotación

Para los entusiastas e investigadores interesados en explorar esta vulnerabilidad más a fondo, proporcionamos pasos detallados para reproducir el entorno de explotación utilizando una versión vulnerable específica de GO. Este enfoque práctico facilita una comprensión más profunda de la mecánica de la vulnerabilidad y las posibles estrategias de mitigación. Nota: Para reproducir esto, necesita instalar la versión go1.17.1 de go localmente, que es la versión vulnerable utilizada en este escenario. Puede consultar la documentación oficial de go sobre cómo instalar versiones específicas de go.

Ahora intentemos reproducir el escenario anterior:

  1. Para configurar toda la aplicación, primero clone el proyecto: git clone [email protected]:gkrishnan724/CVE-2021-38297.git && cd vuln-twitter
  2. Ejecute npm install para instalar todas las dependencias
  3. Ejecute npm run resetDB que inicializará la base de datos con algunas publicaciones y comentarios.
  4. Ejecute npm run dev que iniciará el servidor local, abra localhost:3000 en un navegador y debería poder ver una página de inicio de sesión.

Ahora, iniciemos sesión con una cuenta maliciosa; use las credenciales: nombre de usuario: I_CANT_HACK, contraseña: hacker. Una vez iniciada la sesión, debería poder ver el feed con algunas publicaciones.

Esta publicación parece bastante interesante:

Amazon: ready 4 black friday? https://www.amazon.com/blackfriday

¿Qué pasa si, utilizando la técnica anterior, podemos sobrescribir la publicación de Amazon.com para que apunte a un enlace malicioso?

Consulte el archivo exploit.txt, que contiene el comentario relleno con muchas "A" de manera que sobrescribimos todo hasta la dirección 0x5000; al final puede ver el texto ready for black friday? https://evil.com/blackfriday. Si copiamos este texto y comentamos en la publicación anterior, deberíamos poder sobrescribir la publicación original con el texto anterior.

Inténtelo usted mismo y vea :) Exploit

🛠️ Parche y mitigación 🛠️

Reconociendo la gravedad de esta vulnerabilidad, también describimos una estrategia integral de parcheo, utilizando una versión actualizada y segura de GO para mitigar el riesgo. Esta sección sirve como guía para desarrolladores y administradores de sistemas para fortalecer sus aplicaciones contra tales vulnerabilidades, enfatizando la importancia de las actualizaciones periódicas de software y las prácticas de seguridad vigilantes.

En esta aplicación, también he proporcionado un script de parche. Que utiliza una versión más nueva de go:

  1. Ejecute el objetivo npm run patchServer

Esto debería recompilar el archivo go con la nueva versión e iniciar el servidor con la versión parcheada

Ahora debería notar que la publicación no se sobrescribe y, si observa la consola, vemos un error en su lugar: Argument length too long. Parche

💡 Conclusión y reflexiones 💡

Nuestro viaje a través de la explotación y mitigación de CVE-2021-38297 ofrece valiosas ideas sobre los desafíos y oportunidades que presenta la integración de lenguajes de programación de alto nivel en entornos web a través de WASM. Invita a un examen crítico de las prácticas de seguridad en el desarrollo de software, instando a un enfoque proactivo en la gestión de vulnerabilidades y la adopción de estándares de codificación segura. Según nuestro entendimiento, creemos que el diseño de la memoria lineal de GO se representa a continuación:

Diseño de memoria de GO

🎓 Presentación y contribución académica 🎓

Descargar herramienta