PyYAML给构造函数错误?

时间:2018-06-27 12:27:53

标签: python yaml pyyaml

因此,我目前正在尝试模拟不安全的反序列化攻击。这是我正在使用的代码:

import yaml

with open('malicious.yml') as yaml_file:
    contents = yaml.load(yaml_file)
    print(contents['foo'])

恶意文件.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

我环顾四周,但仍然找不到原因。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您尝试模拟不安全的反序列化攻击,则应使用

contents = yaml.danger_load(yaml_file)

或使用较旧版本的PyYAML(pip install pyyaml<4)。该API在4.1版中进行了更改,没有任何文档更改。