CVE-2023-22809:Sudo权限提升漏洞研究

CVE-2023-22809:Sudo权限提升漏洞研究

时间:2023-05-12 作者:安帝科技-CSX安全实验室


Sudo(su”do”)允许系统管理员将权限委托给特定用户(或用户组),使他们能够以root或其他用户的身份运行部分(或所有)命令,同时提供命令及其参数的审计追踪。

Part1 漏洞状态

Part2 漏洞描述


漏洞环境:
Kali 2022.04 x64
Sudo 1.9.11p3

Part3 漏洞复现

1.进入kali Copy测试脚本test.sh
2.设置脚本执行权限
3.运行测试脚本

复现成功!

Part4 漏洞分析

Sudo使用用户提供的环境变量来让用户选择他们喜欢的编辑器。这些变量的内容扩展了传递给sudo_edit() 函数的实际命令。然而,后者依赖于 — 参数的存在来确定要编辑的文件列表。在授权的环境变量之一中注入额外的 — 参数可以更改此列表,并通过使用RunAs用户的权限编辑其他任何文件来实现权限升级。此问题发生在 sudoers策略验证之后。
sudoers策略插件首先调用sudoers_policy_main()来处理策略的查找和验证,使用sudoers_lookup()。然而,在这个函数的结尾,在成功的策略验证之后,命令会使用名为find_editor()的编辑器查找方法进行重写。

根据文档,此函数首先使用三个用户提供的环境变量进行编辑器查找,分别是 SUDO_EDITOR、VISUAL 和 EDITOR。


如果存在这些值,它们将被发送到 resolve_editor() 进行解析。然而,后者不仅解析编辑器的路径,还接受要传递到最终命令行中的额外参数。这些参数被放置在 –(双破折号)参数之前,以便与原始命令行中的文件分开。


然后使用生成的命令调用sudo_edit() 函数。在找到一个临时可写目录(/var/tmp、/usr/tmp、/tmp或取消操作)后,该方法解析命令行以提取要处理的文件列表。为此,之前的 –(double dash)参数用作分隔符,其右边的每个参数都被视为要处理的文件名。

当在先前用于查找编辑器的环境变量中注入额外的双破折号时,这种行为会导致混淆。

这样设置,命令行将被解析为:

因此,假设采用以下策略,用户将能够通过编辑系统上的敏感文件来将权限升级到 root。

Part5 修复建议

升级sudo到最新的1.9.13p3版本。
————————————————
获取更多情报
联系我们,获取更多漏洞情报详情及处置建议,让企业远离漏洞威胁。
电话:18511745601
邮箱:shiliangang@andisec.com