一、原理

SUID 是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限

若是对一些特殊命令 设置了SUID ,那么久会被有提权的风险,常用的SUID提权命令有nmap、vim、find、bash、more、less、nano、和cp等。

当s出现在文件所有者的x权限时,被称为 “set uid”  简称SUID,SUID 对一个文件的限制与功能包括有:

(1)SUID仅对二进制有效

(2)执行者对于该程序需要有x的可执行权限

(3)本权限仅在程序的执行过程中有效

总结一点就是:

简而言之就是查找具有特定SUID权限的参数,再利用该参数进行提权命令。

提权步骤:

信息收集:

先了解一下当前用户的权限(whoami&id)

执行 whoami 和id 等命令 可以确定 xxkk 为普通用户即uid为1000(uid大于499小于65535为普通用户)。

收集具有SUID权限的文件。

用此命令即可 找到具有 SUID 权限的参数:

find / -perm -u=s -type f 2>/dev/null

 

 有很多,后面没截出来。

在后面,看到 find 也具有 SUID权限。

那么我们就可以进行进一步提权了。

 提权:

 切换到 tmp 目录  

输入whoami 可以看到我们还是普通用户 ,那么我们使用具有SUID权限的find 命令  是否能够成功提权呢?

创建任意文件

这里我们需要先创建一个文件,因为find 命令 需要一个指向性的查找。

提权:

执行命令:

find 1 -exec whoami \;

利用 find 命令查找 文件名为 1 的文件,并执行whoami 命令 ,这里用到 \ 是为了把后面的; 进行转义。

 可以看到 我们成功执行whoami  并且成功返回root 。

总结:

1.特定SUID参数利用,工具/手工探测后看参数是否被赋予SUID权限
Nmap,Vim,find,Bash,More,Less,Nano,cp,php等
2.查找到后,在其tmp目录下用touch创建用户后再用特定suid参数去执行提权命令

如何防范:

这要求管理员要仔细研究具有SUID权限的文件,不要给易被利用的文件以SUID权限,防止SUID的滥用导致黑客在进入服务器时轻易获取root权限。

参考文章:

简谈SUID提权_黑客技术 (hackdig.com)

SUID提权_OneSec4的博客-CSDN博客_suid提权

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐