
文章源自【字节脉搏社区】-字节脉搏实验室
作者-叶子
前一阵报了saltstack的一个漏洞,一直没太关注,试了试还挺好用的。
漏洞原理也很简单,__init__.py里可以找到检验认证的函数check_authentication


完事再跟一下key值的来源,出自master.py里的_prep_auth_info函数此处第三种认证方式,该函数随后返回了key值与API携带key值在self.authenticate_key()中做比对。

这个逻辑本来是是没问题的。问题出在了权限的划分,攻击者可以匿名外部调用API访问_prep_auth_info方法,从而获取到self.key,以key通过之后的验证获取root的权限。
看一下官方版本的patch

跟一下clearfuncs的类

过滤方法从过滤双下划线开头的private变成了添加了一个白名单解决问题。
其实除了白名单的方法,过滤关键字或者换端口藏一藏服务都可。
现已加入vulhub豪华套餐,poc可用,https://github.com/heikanet/CVE-2020-11651-CVE-2020-11652-EXP/blob/master/CVE-2020-11651.py
护网也许可以内网走一圈