gpt4 book ai didi

python - 如何通过 JSON 执行任意代码以及如何清理输入

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:14 25 4
gpt4 key购买 nike

documentation用于 JSON 序列化和反序列化的 Python 的 jsonpickle 模块的说明

Loading a JSON string from an untrusted source represents a potential security vulnerability. jsonpickle makes no attempt to sanitize the input

但我想知道攻击者如何通过 JSON 消息执行任意代码?

此外,按照文档中的建议清理输入的最佳方法是什么?我的应用程序中的 JSON 数据不可信(它来自发送 JSON 消息的客户端)。

最佳答案

jsonpickle 不是 JSON。 jsonpickle 允许创建可能造成有害影响的任意 Python 对象。清理意味着 JSON 对象仅包含可以由 jsonpickle 解释的数据。通常错误的数据会导致异常,但可用于触发不需要的行为。

__reduce__ 利用(参见,例如 Into The Jar | Exploitation of jsonpickle)

jsonpickle.decode('{"py/object": "list", "py/reduce":[{"py/type": "subprocess.Popen"}, ["ls"], null, null, null]}')

只是执行任何命令的一种直接方式。更微妙的方式取决于您的实际代码。

所以简短的回答是,不要在不受信任的环境中使用 jsonpickle。使用普通 JSON 并在使用前检查输入。

关于python - 如何通过 JSON 执行任意代码以及如何清理输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38812106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com