PyYAML 给出构造函数错误?
PyYAML giving constructor errors?
所以我目前正在尝试模拟不安全的反序列化攻击。这是我正在使用的代码:
import yaml
with open('malicious.yml') as yaml_file:
contents = yaml.load(yaml_file)
print(contents['foo'])
文件 malicious.yml 包含以下内容:
foo: !!python/object/apply:subprocess.check_output ['ls']
但是,当我 运行 脚本时,出现以下错误:
yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/object/apply:subprocess.check_output'
in "malicious.yml", line 1, column 6
我四处看了看,还是没找到原因。任何帮助将不胜感激。
如果您试图模拟不安全的反序列化攻击,您应该使用
contents = yaml.danger_load(yaml_file)
或使用旧版本的 PyYAML (pip install pyyaml<4
)。 API 在 4.1 版中进行了更改,没有任何文档更改。
所以我目前正在尝试模拟不安全的反序列化攻击。这是我正在使用的代码:
import yaml
with open('malicious.yml') as yaml_file:
contents = yaml.load(yaml_file)
print(contents['foo'])
文件 malicious.yml 包含以下内容:
foo: !!python/object/apply:subprocess.check_output ['ls']
但是,当我 运行 脚本时,出现以下错误:
yaml.constructor.ConstructorError: could not determine a constructor for the tag 'tag:yaml.org,2002:python/object/apply:subprocess.check_output'
in "malicious.yml", line 1, column 6
我四处看了看,还是没找到原因。任何帮助将不胜感激。
如果您试图模拟不安全的反序列化攻击,您应该使用
contents = yaml.danger_load(yaml_file)
或使用旧版本的 PyYAML (pip install pyyaml<4
)。 API 在 4.1 版中进行了更改,没有任何文档更改。