重新认识linux中的sudo命令

以前一直以为sudo命令就是以root权限执行命令,打了HACKSUDO: THOR靶场才发现原来sudo还可以有很多别的用法。

sudo的常用参数:

  • -u:指定以特定用户的身份执行命令,格式为 -u username
  • -g:指定以特定用户组的身份执行命令,格式为 -g groupname
  • -l:列出当前用户可以执行的命令列表。
  • -s:以 shell 的环境执行命令。
  • -b:在后台执行命令,即使没有启动新的 shell。
  • -H:将 HOME 环境变量设置为目标用户的 HOME 目录。
  • -n:在需要密码时不要求输入密码,如果密码过期,该参数将不会起作用。
  • -i:以目标用户的环境变量执行命令,即保持环境变量不变。
  • -k:使 sudo 忽略之前缓存的认证信息,强制要求重新输入密码。
  • -V:显示 sudo 版本信息。
  • -h:显示帮助信息。

在HACKSUDO: THOR靶场中,我以www-data的身份执行了sudo -l 得到如下输出:

User www-data may run the following commands on HackSudoThor:
    (thor) NOPASSWD: /home/thor/./hammer.sh

由于之前习惯性地认为sudo -l 输出的一定是可以免密以root权限执行的程序或指令,所以不能理解为什么执行不了/home/thor/hammer.sh。

后面查看攻略才发现,原来这里给的是thor的权限,而sudo命令也不是只可以用来以root权限执行命令,用sudo -u username就可以以其他用户身份执行命令了。

所以这里使用:

sudo -u thor /home/thor/hammer.sh

就可以以thor的权限执行/home/thor/hammer.sh了,而这个程序实际上就是用thor的权限任意执行一条命令,于是再以thor的身份执行sudo -l 得到输出:

User thor may run the following commands on HackSudoThor:
    (root) NOPASSWD: /usr/bin/cat, /usr/sbin/service

这里可以看到,thor可以免密以root权限使用cat和service,而在GTFOBins查找后发现root 权限的service可以用来提权,即:

sudo service ../../bin/sh

执行后获得root权限。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值