# 权限提升(提权)|网络攻防演练红队版 > 核心概念:**拿到服务器普通用户shell之后,寻找漏洞/配置缺陷,获取更高权限(Windows:Administrator/System;Linux:root)** > 分为两大类:**本地提权(Local Privilege Escalation,LPE)**、服务滥用提权;区分:横向移动是跳其他机器,提权是**本机升权限**。 ## 一、Linux 提权常见路径(靶场/演练高频) ### 1. Sudo 滥用(最高频!) 普通用户可执行部分root命令,不需要密码或者免密sudo - 查看sudo权限 ```bash sudo -l ``` 常见场景: 1. 允许`vim/nano/python/perl/bash`等,直接逃逸拿root ```bash # 例子,sudo允许vim sudo vim # vim内输入 :!/bin/bash 直接弹出root shell ``` 2. 允许执行自定义脚本,脚本可被修改 → 篡改脚本拿root > 口诀:**sudo -l 是Linux提权第一步必执行** ### 2. SUID 危险可执行文件(Set-UID) 文件标记SUID位,**运行时以文件所有者身份执行**,如果属主是root。 查找命令: ```bash find / -perm -4000 2>/dev/null ``` 高危SUID:`bash、python、perl、find、vim、cp、nmap(old)` 例:find拥有SUID ```bash find . -exec /bin/bash \; -quit ``` ### 3. 定时任务Crontab 滥用 root配置的定时任务执行脚本: - 脚本文件**普通用户可写**,等待定时任务执行,写入恶意代码拿root - crontab里引用的目录可写(路径劫持) 查看任务: ```bash ls -l /etc/cron.* cat /etc/crontab ``` ### 4. 内核漏洞提权(脏牛DirtyCow、CVE系列) 操作系统内核存在漏洞,普通用户直接exp提权root。 流程:查看系统版本 `uname -a`、`cat /etc/os-release`,搜索对应内核exp。 > 缺点:新版本系统大多打补丁;云主机内核加固,成功率下降。 ### 5. 配置文件泄露,拿到root密码 - `/etc/passwd`、`/etc/shadow`读取(shadow一般只有root可读,少数配置失误) - 应用配置文件:`db.conf`、网站config.php,里面存放数据库/root账号密码,密码复用直接su切换root ### 6. 服务/第三方程序漏洞 如mysql、redis、docker错误配置: - Docker组用户:普通用户在docker用户组,可挂载宿主机磁盘拿root ```bash docker run -v /:/mnt --rm -it alpine chroot /mnt bash ``` --- ## 二、Windows 提权常见路径(红蓝演练重点) ### 1. 系统补丁缺失,Windows本地内核提权(CVE) 老服务器未打补丁,如CVE-2021-40449、CVE-2022-21882等。 工具:whoami /priv 查看权限,`systeminfo`看补丁列表,对比缺失补丁。 ### 2. 服务配置缺陷(服务提权,非常高频) 两种: 1. **服务可执行文件权限过宽**:服务exe普通用户能修改,重启服务自动以System执行 2. **服务二进制路径带空格,无引号(路径劫持)** 例: ``` BINARY_PATH="C:\Program Files\My App\app.exe" ``` 没有引号,Windows会尝试执行`C:\Program.exe`,普通用户放恶意程序拿到system。 查看服务:`sc query`、`wmic service get name,pathname` ### 3. 计划任务(Task Scheduler) 管理员创建的计划任务,调用的程序/目录普通用户可写,等待任务执行拿到system。 ### 4. AlwaysInstallElevated 注册表(经典) 注册表开启,所有MSI安装包**以管理员权限运行**,普通用户可以构造恶意msi直接拿管理员权限。 查询: ```cmd reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer ``` 两个键值都是1即可利用。 ### 5. 密码抓取与凭证泄露 - 历史保存RDP凭证、Winlogon凭证、注册表保存账号密码 - 配置文件、网页源码、备份文件里明文账号密码,密码复用,直接切换管理员 工具:mimikatz(抓取内存凭证,需要管理员权限,**提权后用**) ### 6. 权限组错误配置 普通用户被加入管理员组;或者拥有特殊权限:`SeTakeOwnershipPrivilege`、`SeBackupPrivilege`,直接滥用权限读取/覆盖系统文件。 ## 三、提权通用排查顺序(红队拿到shell后的标准操作流程) > Linux: > 1. `sudo -l` > 2. 查找SUID文件 > 3. 查看crontab定时任务 > 4. 查看应用配置、数据库配置,寻找明文密码 > 5. 内核版本,尝试内核exp > 6. 检查docker、lxc等容器组权限 > Windows: > 1. `whoami /all` 查看当前用户、特权 > 2. `systeminfo` 系统信息与补丁 > 3. 扫描服务二进制路径、服务文件权限 > 4. 检查计划任务 > 5. 检查AlwaysInstallElevated注册表 > 6. 查找硬盘内的配置文件、备份文件、明文密码 ## 四、蓝队防御思路 1. 最小权限原则:业务进程不要用高权限账号运行 2. 及时打系统内核、系统补丁,修复本地提权漏洞 3. 严格控制文件权限:定时任务脚本、服务exe,普通用户不可写 4. 禁用危险SUID程序,清理无用setuid 5. 禁止普通用户加入docker、administrators等高权限用户组 6. 禁止明文存储账号密码,禁止密码复用 7. 审计sudo配置,最小化sudo授权范围 ## 五、演练重要区分 - **本地提权LPE**:本机普通用户 → 本机高权限(root/System) - **横向移动**:当前机器高权限 → 访问内网另一台机器 > 坑点:很多exp需要**交互式shell**,webshell可能无法直接执行提权exp ## 六、一句话速记 Linux提权看:sudo、SUID、定时任务、配置明文、内核漏洞、docker组 Windows提权看:未打补丁、服务漏洞、计划任务、AlwaysInstallElevated、特权滥用、明文凭证 如果你需要,我可以继续写:**内网横向移动全链路(拿到一台机器后,如何扫内网、抓凭证、横向到其他主机)**。