前言 在渗透测试与内网攻防中,提权(Privilege Escalation)是至关重要的一环。尤其在 Linux 环境中,权限的严格划分虽然提升了系统安全性,但一旦攻击者获得了初始访问权限,他们往往会试图通过各种方式实现权限提升,从而控制整个系统、维持持久化访问,甚至横向移动至更多目标。因此,熟悉并掌握 Linux 提权技术,不仅有助于安全研究人员发现并修复潜在风险,也有助于红队在攻防演练中高效突破系统防线。 本篇文章将从实际出发,系统地介绍 Linux 中常见的提权方式,涵盖信息收集、文件权限分析、内核漏洞利用、配置错误利用、SUID 和 sudo 权限滥用、定时任务劫持、Docker 环境逃逸等关键手段。文章不仅强调技术原理,还辅以典型示例和操作命令,帮助读者建立完整的提权知识体系,提升在真实环境中的渗透测试能力与安全防护意识。
Linux提权原理 Linux 提权主要分为内核提权和其他类型提权。内核提权的优点是针对存在漏洞的内核版本通常可通用利用,但缺点是稳定性差,易导致 shell 丢失或系统崩溃。常见的提权思路包括:先上传信息收集脚本,枚举系统内核和配置;再结合系统开启的服务,进行有针对性的提权操作。
权限划分
用户和组 用户组在 linux 系统上起着重要作用,它们为选定的用户提供了一种彼此共享文件的简便方法。它们还使系统管理员可以更有效地管理用户权限,因为他们可以将权限分配给组而不是单个用户。 Linux 用户分为管理员和普通用户,普通用户又分为系统用户和自定义用户。 1系统管理员:即 root 帐户,UID 号为 0,拥有所有系统权限,它类似于 Windows 系统中的 administrator 帐户,是整个系统的所有者。 2系统用户:Linux 为满足自身系统管理所内建的账号,通常在安装过程中自动创建,不能用于登录操作系统。UID 在 1-499 之间(Centos 7 为 1-999 之间)。像上面的 sshd、 pulse 等等用户即是此类用户。它类似于 Windows 中的 system 帐户,当然权限远没有 system 帐户高。 3自定义用户:由 root 管理员创建供用户登录系统进行操作使用的账号,UID 在 500 以上(CentOS7 为 1000 以上)。它类似于 Windows 系统中 users 用户组中的帐户。 在 Linux 中的每个用户必须属于一个组,不能独立于组外在 Linux 中每个文件有所有者、所在组、其它组的概念同样,用户组的信息我们可以在 /etc/group 中查看
/etc/passwd 文件 在 Linux 的 /etc/passwd 文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。 用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
文件权限 在 Linux 系统中,一切皆文件,包括普通文件、目录、设备文件、套接字等。文件权限通过 rwx(读、写、执行)三种标志进行控制,对于目录来说,r 表示可以查看该目录下的文件列表(如使用 ls 命令),w 表示可以在该目录下添加、删除、重命名等操作,而 x 则表示是否可以进入该目录成为当前工作目录。如果缺少 x 权限,即使拥有 w 权限,也无法向目录内写入文件。 使用ls -l命令可以查看当前目录文件的权限,ls -la可以查看当前目录全部文件权限(包括隐藏文件)。