提权路径是能用脚走到的路线
从低权限到高权限,系统上真实存在的路线往往不止一条:配置好的提权规则、以高权限运行的计划任务、被高权限引用的可写脚本、可被替换的服务程序,这些都是合法可达的路径。安全评估关心的不是「有没有提权能力」,而是「有几条路、每条路的范围多大、谁能走」。最小化设计就是把路线数量与每条路线的可达范围同时压缩,并消除「低权限可写 + 高权限执行」这种组合。
基本信息
| 适用对象 | Linux 与类 Unix 主机的本地权限边界 |
|---|---|
| 路径来源 | 提权规则、计划任务、服务定义、外部命令查找顺序 |
| 危险组合 | 低权限可写但被高权限执行的文件或目录 |
| 发现手段 | 与基线对比找新增路径,比无基线盲扫更有效 |
| 收敛目标 | 路径数量最少、每条路径范围最小、全部可审计 |
常见路径来源
- 提权规则:命令清单过宽或包含可执行其他程序的工具时,可扩展为任意命令
- 计划任务:以高权限运行的脚本若所在目录可被低权限账号写入,等于开放提权
- 服务定义:服务单元或启动脚本可被改写时,重启即执行任意内容
- 程序查找顺序:高权限进程按环境变量或默认路径查找命令时,可能被同名文件替换
- 带特权位文件:历史遗留的特权程序往往功能过强且缺少维护
- 共享目录:被高权限读取的配置目录若可写,就能改变高权限组件的行为
路径盘点
路径盘点
find / -xdev -perm -4000 -type f 2>/dev/null | head -50 # 列出带特权位的可执行文件
sudo -l -U svcauto | head # 该账号的提权规则范围
find /etc/systemd/system -name '*.service' -perm -o+w # 可被他人改写的服务定义
find /etc/cron* /var/spool/cron -writable -type f 2>/dev/null | head # 可写的计划任务
ls -l /etc/cron.d 2>/dev/null # 计划任务目录权限
awk -F: '($3==0){print $1}' /etc/passwd # 具备高权限的账号清单路径与收敛方向
| 路径 | 风险条件 | 收敛方向 |
|---|---|---|
| 提权规则 | 命令过宽或带通配 | 按绝对路径精确列出命令 |
| 计划任务 | 脚本所在目录可写 | 目录权限收紧到管理员 |
| 服务定义 | 单元文件可被改写 | 限权并纳入变更管理 |
| 查找顺序 | 依赖可被影响的环境变量 | 使用绝对路径与清理环境 |
| 特权位文件 | 功能远超当前需要 | 移除特权位或改为受控调用 |
盘点结果要和基线对比:一次全量扫描能列出上百个带特权位的文件,但真正需要关心的是「最近新增了哪些」「权限变宽了哪些」。有基线后,新增路径才可能被及时注意到。
最小化路径不是一次性的清理工作:任何新上线的服务、脚本或运维工具都可能引入新路径。把路径检查纳入上线检查项,比事后定期扫描更能防止路径重新变多。