前言
做2023春秋杯春季赛时遇到的,发现是最新最热CVE,那就随手记之
漏洞范围
sudo -V:1.8.0到1.9.12p1版本
概述
sudo使用用户提供的环境变量让用户选择他们所选择的编辑器。的内容其中一个变量扩展了传递给sudo_edit()函数的实际命令。
然而,后者依赖于--参数的存在来确定要编辑的文件列表。注入在一个已授权的环境变量中使用额外的--参数可以更改此列表并导致特权通过编辑具有RunAs用户权限的任何其他文件来升级。这个问题发生在sudoers之后。
原理
太长,暂时不总结
总之就是利用vim等文本编辑器,进行sudoedit来修改root系统中的敏感文件
在之前的环境中注入额外的双破折号时,这种行为会导致混乱用于查找编辑器的变量。
EDITOR='vim -- /path/to/extra/file'
使用这个值,命令行将被解析为:
vim -- /path/to/extra/file -- /path/from/policy
实际题目
2023春秋杯春季赛sudo
先
sudo -l查看授权的命令列表发现只有一个
sudoedit -- /etc/GAMELAB同时一波尝试之后发现靶机的环境下只有
nano一个编辑器那我们就直接执行payload
EDITOR='nano -- /etc/passwd' sudoedit -- /etc/GAMELAB进入nano界面**(图片来自于csdn参考文章)**

修改用户名
将第一行的
root改成xiaonannan,就可以让xiaonannan访问/root目录下的/bin/bash从而执行root权限的命令
Ctrl+O然后按回车保存,然后Ctrl+x就可以退出/etc/passwd的nano编辑界面,然后发现没有完全退出(当时本人也很疑惑),仔细看上面
文件名变成了
/tmp/GAMELAB,因为我们的payload是EDITOR='nano -- /etc/passwd' sudoedit -- /etc/GAMELAB,我们将环境变量设置成了/etc/passwd所以sudoedit策略会先执行这个编辑改文件的命令,然后再执行sudoedit /etc/GAMELAB这也证实了我们的想法,
GAMELAB是个临时文件,然后我们再cat /etc/passwd一下
可以看到,root的用户名已经变成了xiaonannan
切换用户获取flag
su xiaonannan然后输入对应密码,之后直接
cat /flag

法2
利用shadow文件修改root的密码(这里root的密码被锁定所以只能修改),可以参考我之前那篇关于shadow文件的博客