1、权限提升基础:什么是权限提升、为什么需要权限提升、权限提升的分类(纵向与横向)

1.1 什么是权限提升?

权限提升,说白了就是「拿到不该拿的权限」。

我经常跟团队里的新人说:你本来是个普通用户,只能看看自己的文件。突然有一天,你能看别人的文件了,甚至能改系统配置了——这就是权限提升。

在渗透测试里,我们通常从一个低权限入口开始。比如你通过一个SQL注入拿到了数据库的普通账号,或者通过一个文件上传漏洞拿到了WebShell。这时候你只能干点「小打小闹」的事。但真正的攻击者不会满足于此,他们会想尽办法拿到更高的权限。

嗯,这里要注意:权限提升不是漏洞本身,而是利用漏洞的结果。它是一系列技术手段的集合,目的是突破原有的权限边界。

核心定义: 权限提升是指攻击者利用系统漏洞、配置缺陷或设计弱点,从当前较低的权限级别获取更高权限的过程。

1.2 为什么需要权限提升?

你想想看,一个攻击者费了半天劲打进系统,结果发现自己只是个普通用户,能干的事太有限了。不能读敏感文件,不能装后门,不能关杀软,甚至连看个系统日志都要被拒绝。

我做过一个真实的项目:客户说他们的Web服务器被入侵了,但攻击者只拿到了www-data权限。我一开始也觉得「就这?」。结果一查日志,发现攻击者在两天内尝试了7种不同的提权手法,最后通过一个内核漏洞成功拿到了root。从www-data到root,这中间能做的事天差地别。

为什么需要权限提升?原因其实很简单:

  • 扩大战果:低权限只能访问局部数据,高权限才能拿到核心资产
  • 持久控制:普通用户的权限容易被清理,root权限才能藏得深
  • 横向移动:很多横向移动技术(比如哈希传递)本身就依赖高权限
  • 绕过防御:杀软、EDR这些安全产品,普通用户动不了,但管理员可以关
个人经验: 我见过太多新手,拿到一个低权限shell就兴奋得不行,结果连个敏感文件都读不了。记住:提权才是真正的开始,低权限只是入场券。

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滥用 本地服务以其他用户身份运行
避坑指南: 我曾经犯过一个错误——拿到一个低权限shell后,只顾着找内核提权漏洞,完全忽略了横向移动。结果发现隔壁机器上有个管理员正在远程桌面登录,我直接抓了他的令牌就提权成功了。所以别死磕纵向,横向有时候更快。

1.4 两者的关系与实战选择

纵向提权和横向提权不是互斥的,它们经常交替使用。

我习惯把渗透过程想象成一张网:

  • 先横向移动,扩大控制范围
  • 再纵向提权,提升控制深度
  • 再横向移动,利用新权限继续扩散

举个例子:你通过一个漏洞拿到了Web服务器的www-data权限(低权限)。这时候你:

  1. 先横向:看看能不能用这个www-data账号登录其他Web服务器(很多公司所有Web服务器用同一个www-data密码)
  2. 再纵向:在某一台机器上找到内核漏洞,提权到root
  3. 再横向:用root权限去读其他机器的共享文件,或者直接dump域控的哈希

你看,横向和纵向是交替进行的。没有绝对的先后顺序,全看现场情况。

我的建议: 拿到一个低权限shell后,先别急着找提权漏洞。花5分钟看看周围环境:有没有其他机器?有没有共享目录?有没有高权限用户的进程?有时候横向移动比纵向提权简单得多。

1.5 小结

权限提升是渗透测试中最核心的环节之一。没有提权,你永远只能在外围打转。

记住三个要点:

  • 纵向提权:改变权限级别,从低到高
  • 横向提权:改变控制范围,从一台到多台
  • 两者结合:先横向再纵向,或者先纵向再横向,灵活运用

接下来的章节,我会带你深入每一种提权手法的具体实现。从Linux到Windows,从内核漏洞到配置缺陷,咱们一个一个啃下来。