1、权限提升基础:什么是权限提升、为什么需要权限提升、权限提升的分类(纵向与横向)
1.1 什么是权限提升?
权限提升,说白了就是「拿到不该拿的权限」。
我经常跟团队里的新人说:你本来是个普通用户,只能看看自己的文件。突然有一天,你能看别人的文件了,甚至能改系统配置了——这就是权限提升。
在渗透测试里,我们通常从一个低权限入口开始。比如你通过一个SQL注入拿到了数据库的普通账号,或者通过一个文件上传漏洞拿到了WebShell。这时候你只能干点「小打小闹」的事。但真正的攻击者不会满足于此,他们会想尽办法拿到更高的权限。
嗯,这里要注意:权限提升不是漏洞本身,而是利用漏洞的结果。它是一系列技术手段的集合,目的是突破原有的权限边界。
1.2 为什么需要权限提升?
你想想看,一个攻击者费了半天劲打进系统,结果发现自己只是个普通用户,能干的事太有限了。不能读敏感文件,不能装后门,不能关杀软,甚至连看个系统日志都要被拒绝。
我做过一个真实的项目:客户说他们的Web服务器被入侵了,但攻击者只拿到了www-data权限。我一开始也觉得「就这?」。结果一查日志,发现攻击者在两天内尝试了7种不同的提权手法,最后通过一个内核漏洞成功拿到了root。从www-data到root,这中间能做的事天差地别。
为什么需要权限提升?原因其实很简单:
- 扩大战果:低权限只能访问局部数据,高权限才能拿到核心资产
- 持久控制:普通用户的权限容易被清理,root权限才能藏得深
- 横向移动:很多横向移动技术(比如哈希传递)本身就依赖高权限
- 绕过防御:杀软、EDR这些安全产品,普通用户动不了,但管理员可以关
1.3 权限提升的分类
权限提升主要分两类:纵向提权和横向提权。这两者的区别,我习惯用一个比喻来解释。
想象一栋大楼:
- 纵向提权:你本来在一楼,现在坐电梯上了顶楼。权限级别变了,从普通员工变成了CEO。
- 横向提权:你本来在A办公室,现在溜进了B办公室。权限级别没变,但你能访问别人的资源了。
1.3.1 纵向权限提升(Privilege Escalation)
纵向提权,也叫垂直提权。这是最常见、也最被重视的一类。
它的本质是:从低权限用户提升到高权限用户。比如:
- 从普通用户到root(Linux)
- 从普通用户到Administrator(Windows)
- 从普通域用户到域管理员
我遇到过最经典的案例:一个Linux服务器上有个SUID权限的二进制文件,是个老版本的find命令。攻击者利用find的-exec参数直接执行了/bin/sh,瞬间从普通用户变成了root。这就是典型的纵向提权。
纵向提权的常见手法:
| 类型 | 常见手法 | 典型场景 |
|---|---|---|
| 系统漏洞 | 内核提权(Dirty Pipe、永恒之蓝) | 未打补丁的旧系统 |
| 配置缺陷 | SUID/GUID滥用、弱权限文件 | 管理员疏忽留下的后门 |
| 服务漏洞 | 服务以高权限运行、路径劫持 | 第三方服务配置不当 |
| 凭证窃取 | 明文密码、哈希传递 | 内存中的管理员凭据 |
1.3.2 横向权限提升(Lateral Movement)
横向提权,也叫横向移动。很多人容易忽略它,但实战中它比纵向提权更常见。
横向提权的本质是:在相同权限级别下,访问其他用户的资源。比如:
- 普通用户A读取普通用户B的私密文件
- 通过一个普通账号登录另一台服务器的普通账号
- 利用Pass-the-Hash从一台机器跳到另一台机器
我记得有一次内网渗透,目标是个大型企业。我拿下了前台的一台Windows 10,但只是个普通域用户。按理说权限很低,但我通过横向移动,用这个普通账号的凭据去尝试登录其他机器。结果发现运维人员把同一个密码用在了几十台服务器上。就这样,我从一台普通机器跳到了域控的管理员桌面。嗯,这就是横向提权的威力。
横向提权的常见手法:
| 类型 | 常见手法 | 典型场景 |
|---|---|---|
| 凭据复用 | 相同密码、哈希传递 | 管理员偷懒用同一套密码 |
| 协议滥用 | SMB共享、WinRM、PsExec | 内网机器间信任关系 |
| 令牌窃取 | Token impersonation、Kerberos票据 | 高权限用户的登录会话 |
| 服务漏洞 | 不安全的服务配置、DCOM滥用 | 本地服务以其他用户身份运行 |
1.4 两者的关系与实战选择
纵向提权和横向提权不是互斥的,它们经常交替使用。
我习惯把渗透过程想象成一张网:
- 先横向移动,扩大控制范围
- 再纵向提权,提升控制深度
- 再横向移动,利用新权限继续扩散
举个例子:你通过一个漏洞拿到了Web服务器的www-data权限(低权限)。这时候你:
- 先横向:看看能不能用这个www-data账号登录其他Web服务器(很多公司所有Web服务器用同一个www-data密码)
- 再纵向:在某一台机器上找到内核漏洞,提权到root
- 再横向:用root权限去读其他机器的共享文件,或者直接dump域控的哈希
你看,横向和纵向是交替进行的。没有绝对的先后顺序,全看现场情况。
1.5 小结
权限提升是渗透测试中最核心的环节之一。没有提权,你永远只能在外围打转。
记住三个要点:
- 纵向提权:改变权限级别,从低到高
- 横向提权:改变控制范围,从一台到多台
- 两者结合:先横向再纵向,或者先纵向再横向,灵活运用
接下来的章节,我会带你深入每一种提权手法的具体实现。从Linux到Windows,从内核漏洞到配置缺陷,咱们一个一个啃下来。