Sudo(su”do”)允许系统管理员将权限委托给特定用户(或用户组),使他们能够以 root 或其他用户的身份运行部分(或所有)命令,同时提供命令及其参数的审计追踪。
Sudo 使用用户提供的环境变量来让用户选择他们喜欢的编辑器。这些变量的内容扩展了传递给 sudo_edit() 函数的实际命令。然而,后者依赖于 — 参数的存在来确定要编辑的文件列表。在授权的环境变量之一中(SUDO_EDITOR、VISUAL 或 EDITOR)注入额外的 — 参数可以更改此列表,并通过使用 RunAs 用户的权限编辑其他任何文件来实现权限升级。此问题发生在 sudoers 策略验证之后。sudoers 策略插件首先调用 sudoers_policy_main()来处理策略的查找和验证,使用 sudoers_lookup()。然而,在这个函数的结尾,在成功的策略验证之后,命令会使用名为 find_editor()的编辑器查找方法进行重写。
简单来说就是 sudo 会通过环境变量来选择编辑器,这些环境变量可以指定编辑器命令和参数,sudo 会将使用这些命令来编辑文件,而普通用户可以在环境变量中提前指定文件,比如 EDITOR='vim -- /path/to/extra/file
然后通过 sudoedit 越权编辑该文件
提权脚本:https://github.com/n3m1dotsys/CVE-2023-22809-sudoedit-privesc 分析文章:https://www.freebuf.com/vuls/366935.html