Linux、Unix、MacOS 存在 sudo 漏洞(CVE-2021-3156) 利用复现
2021年02月04日 12:21:24 · 本文共 1,016 字阅读时间约 3分钟 · 4,029 次浏览2021年1月26日在sudo中发现了严重的基于堆的缓冲区溢出,任何本地用户均可利用此溢出。它的发现者将其命名为 Baron Samedit。即使未在sudoers文件中列出用户,也可以利用该错误将特权提升为root用户。利用该漏洞不需要用户认证。
这是 Sudo 工具中存在十年之久的漏洞,可能会授予任意本地用户对基于 Unix 的系统(包括 macOS Big Sur 和早期版本)进行根访问。
可通过非法操作为任意本地用户授予 root 权限。用户要触发它,只需要重写 argv[0]或者创建一个符号链接。
- 漏洞编号:CVE-2021-3156
- 漏洞级别:高危
- 受影响版本:sudo: 1.8.2 - 1.8.31p2、sudo: 1.9.0 - 1.9.5p1
检测方法
以非root用户登录系统,并运行如下命令:
sudoedit -s /
如果响应一个以 sudoedit: 开头的报错,那么表明存在漏洞。
如果响应一个以 usage: 开头的报错,那么表明补丁已经生效。
漏洞细节
当sudo通过-s或-i命令行选项在shell模式下 运行命令时,它将在命令参数中使用反斜杠转义特殊字符。如果命令在shell模式下运行,那么sudoers策略插件将在评估sudoers策略(不希望使用转义字符)之前从参数中删除转义字符。
如果代码中的错误以未转义的反斜杠字符结尾,那么它将删除转义字符的错误会超出字符串的最后一个字符。在正常情况下,此错误将是无害的,因为sudo避免了命令参数中的所有反斜杠。但是,由于存在另一个错误,这次是在命令行解析代码中,因此可以 使用-s或-i选项运行sudoedit,并设置一个指示启用Shell模式的标志。因为实际上没有运行命令,所以sudo不会 转义特殊字符。最后,决定是否删除转义符的代码并没有检查命令是否正在实际运行,仅检查了设置了shell标志。
漏洞利用与复现
修改配置文件
vim /etc/sudoers
在root ALL=(ALL:ALL) ALL 下面添加一行配置:renfei ALL=(ALL,!root) ALL
注意:需创建renfei用户:useradd renfei,修改密码:passwd renfei ,修改完配置文件保存退出::wq!
renfei 表示名字为renfei的用户
- 第一个ALL 表示用户可以在任意地方使用sudo
- 第二个(ALL,!root) 表示命令可以被除了root以外的任意用户执行
- 最后面的ALL 表示被允许执行
- 整体: renfei用户可以使用sudo,但是除了root以外的任意用户去执行命令
切换到renfei用户,执行 sudo id(查看root的id),发现是无权运行的:
使用如下方法执行我们想要执行的命令
sudo -u# 数字 命令
其中数字范围:-1~4294967295,命令是系统命令
如果以root身份去执行命令,数字使用-1和4294967295
修复方法
更新sudo版本。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.renfei.net/posts/1003448
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。
- 前后端分离项目接口数据加密的秘钥交换逻辑(RSA、AES)
- OmniGraffle 激活/破解 密钥/密匙/Key/License
- 人大金仓 KingbaseES V8 R3 安装包、驱动包和 License 下载地址
- Parallels Desktop For Mac 16.0.1.48911 破解版 [TNT]
- Redis 未授权访问漏洞分析 cleanfda 脚本复现漏洞挖矿
- CleanMyMac X 破解版 [TNT] 4.6.0
- OmniPlan 激活/破解 密钥/密匙/Key/License
- Sound Control 破解版 2.4.2
- Parallels Desktop For Mac 15.1.4.47270 破解版 [TNT]
- Parallels Desktop For Mac 16.0.0.48916 破解版 [TNT]
- 博客完全迁移上阿里云,我所使用的阿里云架构
- 微软确认Windows 10存在bug 部分电脑升级后被冻结
- 大佬们在说的AQS,到底啥是个AQS(AbstractQueuedSynchronizer)同步队列
- 比特币(BTC)钱包客户端区块链数据同步慢,区块链数据离线下载
- Java中说的CAS(compare and swap)是个啥
- 小心免费主题!那些WordPress主题后门,一招拥有管理员权限
- 强烈谴责[wamae.win]恶意反向代理我站并篡改我站网页
- 讨论下Java中的volatile和JMM(Java Memory Model)Java内存模型
- 新版个人网站 NEILREN4J 上线并开源程序源码
- 我站近期遭受到恶意不友好访问攻击公告