测试提权
作者:时尚 来源:休闲 浏览: 【大 中 小】 发布时间:2026-10-17 06:11:48 评论数:
去年冬天,测试提权我在一个漏洞赏金项目里第一次真正摸到了提权的测试提权门槛。那是测试提权个 Linux 靶机,Web 目录下挂着一套老旧的测试提权 CMS,上传点过滤不严,测试提权传了个 PHP 反弹 shell 上去。测试提权拿到 www-data 权限那一刻,测试提权心里挺美,测试提权但也就到此为止了——你连个 /etc/shadow 都读不了,测试提权能干啥?测试提权
提权这事,说白了就是测试提权从低权限用户爬到高权限用户的过程。Linux 下通常是测试提权 www-data 变 root,Windows 下是测试提权 IIS 或普通用户变 SYSTEM。没提权之前,测试提权你顶多算个访客;提权之后,测试提权整台机器才是你的。
信息收集比漏洞本身重要
很多人拿到 shell 就急着找 exp,这顺序反了。我习惯先跑一遍 uname -a、cat /etc/os-release,把内核版本和发行版记下来。然后 sudo -l 看当前用户有没有能免密执行的命令——这地方经常出惊喜。有次一台 Ubuntu 18.04,sudo 列表里赫然写着 (ALL) NOPASSWD: /usr/bin/find,直接 sudo find . -exec /bin/sh \; -quit 就完事了。内核漏洞?根本用不上。
SUID 文件也得扫。命令很简单:find / -perm -4000 -type f 2>/dev/null。输出里如果混着 nmap、vim、less 这类不该带 SUID 位的程序,基本就是突破口。nmap 老版本有个 --interactive 模式能直接执行 shell,vim 里 :!sh 更是一行搞定。这些手法在 GTFOBins 网站上全有,查一下比翻内核 exp 快得多。
内核漏洞:能用但别迷信
Dirty COW(CVE-2016-5195)火的那阵子,我试过在 CentOS 7 上打。编译 poc.c,跑起来,等几秒,root shell 到手。确实爽。但内核 exp 有个麻烦:不同发行版、不同小版本号,编译依赖和偏移量可能都不一样。你拿一个 Ubuntu 16.04 的 exp 去怼 Debian 9,大概率编译报错或者跑完直接 kernel panic。机器一崩,你之前的立足点全没了。
所以我的习惯是:优先看配置错误,再看服务漏洞,最后才碰内核。配置错误包括但不限于——/etc/passwd 可写、cron 任务里调用了可写脚本、PATH 变量里有当前目录、root 的 SSH 私钥没删干净。这些东西比内核 exp 稳得多,而且不挑系统版本。
Windows 那边逻辑差不多
Windows 提权更依赖工具。WinPEAS 跑一遍,把未引用的服务路径、可写的服务二进制、AlwaysInstallElevated 注册表项全列出来。我印象最深的一次是 SeImpersonatePrivilege 开着,直接上 JuicyPotato,秒变 SYSTEM。这权限很多 IIS 应用池默认就有,但管理员根本不知道它意味着什么。
还有一次更简单——C:\Program Files 下某个服务的 exe 文件,普通用户居然有写权限。替换成自己的 payload,重启服务,SYSTEM shell 就来了。这种配置错误在真实环境里比想象中多,尤其是那些装完就没动过的老服务器。
一点个人看法
提权不是炫技,是拿数据。你拿到 root 之后要干什么,比怎么拿到 root 更重要。我见过有人提权成功,截个 id 的图就交报告了,连 /root 目录都没翻。那跟没提有什么区别?
另外,别把提权脚本当黑盒用。linpeas.sh 跑出来的红字黄字,你得知道它为什么标红。是 SUID 位可疑,还是 sudo 版本有 CVE?不懂原理,靶场里能过,真实环境里一跑就断。
测试提权这件事,说到底拼的是耐心和观察力。漏洞就在那儿,只是藏在一堆 2>/dev/null 丢掉的报错里。
