linux suid提权原理,linux关于suid提权笔记

suid全称是Set owner User ID up on execution。这是Linux给可执行文件的一个属性,上述情况下,普通用户之所以也可以使用ping命令,原因就在我们给ping这个可执行文件设置了suid权限。

设置了s位的程序在运行时,其Effective UID将会设置为这个程序的所有者。比如,/bin/ping这个程序的所有者是0(root),它设置了s位,那么普通用户在运行ping时其Effective UID就是0,等同于拥有了root权限。

这里引入了一个新的概念Effective UID。Linux进程在运行时有三个UID:

Real UID 执行该进程的用户实际的UID

Effective UID 程序实际操作时生效的UID(比如写入文件时,系统会检查这个UID是否有权限)

Saved UID 在高权限用户降权后,保留的其原本UID(本文中不对这个UID进行深入探讨)

初代版本 suid.c

int main(int argc, char* argv[]) {

return system(argv[1]);

}

赋予 suid 权限

gcc suid.c -o suid

chmod +s suid

你以为这样就可以正常的利用好suid 后门了嘛???    不不不不 开始猜坑

其实也就是一个-p的问题

默认这样操作,也是有些系统可以正常获取suid 的

大佬帮测试的结果,保存一下

Linux发行版输出结果

Ubuntu 14.04

uid=33(www-data) gid=33(www-data) euid=0(root) egid=0(root) groups=0(root),33(www-data)

Ubuntu 16.04

uid=33(www-data) gid=33(www-data) groups=33(www-data)

Ubuntu 18.04

uid=33(www-data) gid=33(www-data) groups=33(www-data)

CentOS 6

uid=33(www-data) gid=33(www-data) groups=33(www-data)

CentOS 8

uid=33(www-data) gid=33(www-data) groups=33(www-data)

Debian 6

uid=33(www-data) gid=33(www-data) euid=0(root) egid=0(root) groups=0(root),33(www-data)

Debian 8

uid=33(www-data) gid=33(www-data) euid=0(root) egid=0(root) groups=0(root),33(www-data)

Kali 2019

uid=33(www-data) gid=33(www-data) groups=33(www-data)

有些系统是root权限,有些系统仍然是原本用户权限。

为什么会这样呢?

因为system 函数调用的形式 为  /bin/bash -c

之前遇到老的  nmap --interactive //(+S)执行成功并没有获取到suid 的权限,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值