Linux:sudo提权漏洞复现

关于sudo

Linux是多用户多任务的操作系统, 共享该系统的用户往往不只一个。出于安全性考虑, 有必要通过useradd创建一些非root用户, 只让它们拥有不完全的权限; 如有必要再来提升权限执行。
sudo就是来解决这个需求的: 这些非root用户不需要知道root的密码,就可以提权到root,执行一些root才能执行的命令。执行命sudo -u <用户名> <令>, 将允许当前用户,提权到<用户名>的身份,再执行后面的<命令>, 即使<命令>原本需要root权限。提权到<用户名>身份时,是以<用户名>的身份来执行命令的,因此创建的文件默认属于<用户名>用户。
如果不带-u, 则默认使用root用户,而大多数时候sudo都是要提权到root的,所以-u <用户名>可以省略为:
sudo <命令>
需要注意的是: 执行sudo时输入的密码是当前用户的密码, 并非<用户名>的密码。

漏洞复现:

先以root身份登录并查看sudoers文件:
在这里插入图片描述这里主要是要看到中间几段:

##Allow root to run any commands anywhere
root    ALL=(ALL)      ALL
wg      ALL=(ALL)      ALL

这一段表示我的系统中有两个超级权限用户,分别是root和wg

接下来用root权限在这个文件的这一段里加入一个新的用户
在这里插入图片描述
具体代码如下:

zhh043  ALL=(ALL,!root)  /user/bin/id

这段代码的意思是zhh043这个用户无权以root身份使用id命令

试一下:
在这里插入图片描述果然,在试图使用id命令时被提示无权以root身份执行它。

但是,在特殊情况下,这个漏洞被触发,使得zhh043绕过了root,直接使用了id命令:
在这里插入图片描述因为sudo -u 允许使用UID来代替用户,当指定的UID是-1或者4294967695(-1的补码)时,漏洞被触发,绕过了root,直接执行了id命令。

这个漏洞的触发其实有比较严格的条件:
Sudo版本低于1.8.28
知道用户的密码(当前用户,不是root的密码)
用户处于sudo权限列表之中
存在 ALL 关键词的复合限制逻辑

综上,这个漏洞虽然功能强大,可以绕过root的权限,但是由于种种限制,这种漏洞对于外不来说没有什么利用的可能性,但是对于内部不怀好意的人却很难防备,因为这种访问时不会留下痕迹和记录的。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值