以前一直以为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权限。
深入理解sudo命令:权限、用法与实战应用
本文详细解读了sudo命令的多种用法,包括以不同用户身份执行、查看可执行命令列表、以及在HACKSUDO:THOR靶场中的权限利用实例,展示了sudo的灵活性和提权可能性。
3万+

被折叠的 条评论
为什么被折叠?



