Linux之计划任务提权

目录

一、Crontab介绍

crontab -e 与 vim /etc/crontab

二、Crontab提权

总结


实验环境:ubuntu 20.4

一、Crontab介绍

通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周的任意组合。

这里看一看crontab 的格式:

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

ubuntu中crontab默认启动了,可以通过下面这条命令查看cron 是否成功的在后台启动,启动了就会自动检测任务执行

ps aux | grep cron

Linux之计划任务提权

可以通过下面列出存在的计划任务,如下不存在计划任务

crontab -l 

 Linux之计划任务提权

接着我们添加一条计划任务,通过crontab -e 打开文件,将计划任务加进去。第一次打开会让我们选择一个默认的编辑器。这里我们添加如下计划任务,意思为每隔一分钟在当前用户的家目录下创建一个1.txt的文件,写好后保存。其任务会自动执行

Linux之计划任务提权

 然后通过crontab -l 可以列出当前的计划任务,接着每隔一分钟就创建一个1.txt文件。

Linux之计划任务提权

 ps:计划任务仅在当前用户下有效,各用户的计划任务互不影响。

crontab -e 与 vim /etc/crontab

我们不仅可以通过crontab -e 来添加计划任务也可以通过vim /etc/crontab来添加计划任务

修改/etc/crontab这种方法只有root用户能用(但实际上经测试别的用户也能用,虽然添加任务时显示只读,但是可以强制保存),这种方法更加方便与直接,直接给其他用户设置计划任务,而且还可以指定执行shell等等,
crontab -e这种所有用户都可以使用,普通用户也只能为自己设置计划任务。然后自动写入/var/spool/cron/usename

详细可看——> crontab使用以及/etc/crontab文件和crontab -e命令区别

二、Crontab提权

如果root用户通过crontab -e 或者 vim /etc/crontab添加了计划任务,计划任务中存在脚本文件,且其他用户有可写的权限,则我们可以利用计划任务进行提权。

1. root用户添加计划任务

vim /etc/crontab
*/1 * * * *     root    sh /test.sh >> /tmp/test.txt

意思为每隔一分钟执行test.sh脚本文件并输出到 /tmp/test.txt中

Linux之计划任务提权

 test.sh文件内容如下

#! /bin/bash
echo "hello world! "

漏洞的利用条件就是test.sh其他用户有写权限

Linux之计划任务提权

环境准备好了,该计划任务也立即生效。我们切换到普通用户,开始进行提权操作

2. pspy检测进程

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

下载地址:pspy工具 ,点击进行下载

Linux之计划任务提权

下载完之后,放到linux中,执行./pspy64。我们监测到如下进程,脚本test.sh以root权限运行(UID=0)

Linux之计划任务提权

 我们查看test.sh的权限,发现普通户用有写入的权限,即我也可以写入

Linux之计划任务提权

于是我们使用vim /test.sh写入如下命令,脚本的意思为复制/bin/bash到/tmp/bash并赋予SUID权限,这里实际上就是利用的suid提权 ——> Linux下SUID提权方法

cp /bin/bash /tmp/bash; chmod +s /tmp/bash

 保存的时候会提示只读,这里强制保存

:w !sudo tee %

然后接着就会在/tmp下创建一个拥有suid权限的bash文件

Linux之计划任务提权

进行suid提权

 /tmp/bash -p  即可获取root权限

Linux之计划任务提权

总结

如果计划任何中存在root权限执行的脚本,并且脚本其他用户拥有写入权限则可以通过计划任务提权

上一篇:windows 系统中 git bash 和 golang 执行很慢的解决方法


下一篇:nvm安装与卸载