提权渗透
拿到一台Windows跳板机,提权渗透权限是提权渗透IIS APPPOOL\DefaultAppPool。这个账户连whoami都跑不全,提权渗透更别提读SAM文件。提权渗透但它有个致命缺陷——SeImpersonatePrivilege默认开启。提权渗透JuicyPotato、提权渗透RoguePotato、提权渗透PrintSpoofer,提权渗透三个工具轮流上,提权渗透总有一个能打通。提权渗透
这就是提权渗透提权渗透的日常。不是提权渗透每台机器都能直接找到未打补丁的CVE,更多时候你手里只有一个低权限shell,提权渗透得靠系统配置的提权渗透疏忽往上爬。
Windows:令牌窃取是提权渗透基本功
去年帮客户做内网评估,域内一台Server 2016的MSSQL服务账户是域用户。xp_cmdshell启用后拿到shell,whoami /priv一看,SeImpersonatePrivilege亮着。直接上PrintSpoofer,一行命令拿到SYSTEM。整个过程不到三分钟。
原理不复杂。Windows里高权限进程创建令牌时,如果允许模拟,低权限进程就能通过命名管道截获这个令牌。PrintSpoofer利用打印后台处理程序的命名管道,把SYSTEM令牌骗到手。类似的还有EFSPotato、SweetPotato,工具在迭代,核心逻辑没变——找那些以高权限运行且允许模拟的服务。
另一种常见路径是未引用的服务路径。C:\Program Files\Some App\service.exe,路径里有空格且没加引号。Windows会依次尝试执行C:\Program.exe、C:\Program Files\Some.exe。只要能在对应目录写文件,服务重启时就是你的代码以SYSTEM跑起来。用wmic service get name,displayname,pathname,startmode一查一个准。
Linux:SUID和sudo的坑
Linux提权更依赖手工枚举。sudo -l先看当前用户能免密跑什么。遇到过运维图省事,给开发配了NOPASSWD: /usr/bin/find。find . -exec /bin/sh \; -quit,root shell到手。GTFOBins上列了几百个这样的二进制,find、vim、nmap、awk,只要sudo规则没锁死参数,基本都能逃逸。
SUID文件是另一条路。find / -perm -4000 -type f 2>/dev/null,列出来的东西里总有几个眼熟的。nmap带SUID?nmap --interactive然后!sh。cp带SUID?直接覆盖/etc/passwd。最离谱的一次是看到/usr/bin/python3.8带SUID,一行python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")'就结束了。
内核漏洞现在少了,但没打补丁的老内核照样能打。DirtyPipe影响5.8到5.16.11,CVE-2022-0847,覆盖只读文件内容。写个exp编译运行,改/etc/passwd的root密码,su一下就行。前提是目标内核版本在范围内且没打补丁。
配置疏忽比漏洞更致命
提权渗透里,人为配置错误占七成以上。计划任务以SYSTEM运行但脚本目录可写,cron job调用的脚本属主是当前用户,.bash_history里留着明文密码,/etc/passwd可写,这些比等一个0day现实得多。
有次在内网看到一台Ubuntu,/etc/crontab里有个每分钟跑一次的脚本,路径指向/home/deploy/backup.sh,而deploy目录权限是777。往脚本里加一行反弹shell,等一分钟,root shell就弹回来了。整个过程不需要任何漏洞利用,纯粹是权限配置失当。
提权不是炫技。拿到低权限shell后,先稳下来,把系统信息、用户权限、网络连接、计划任务、服务配置过一遍。手工枚举加自动化工具交叉验证,LinEnum、WinPEAS、Seatbelt跑一遍,再针对性地手工复查。很多时候答案就藏在某个不起眼的配置项里,等着你去翻出来。