【THM-课程内容】:Privilege Escalation-Linux Privilege Escalation-Privilege Escalation:Cron Jobs
Cron作业用于在特定时间运行脚本或二进制文件。默认情况下,它们以所有者的权限运行,而不是以当前用户的权限运行。虽然正确配置的cron作业本身并不容易受到攻击,但在某些情况下,它们可以提供提权的途径。
很简单:如果有一个以root权限运行的计划任务,并且我们可以更改将要运行的脚本,那么我们的脚本将以root特权运行。
Cron作业配置存储为crontab(Cron表),读取它的内容可以以查看任务下次运行的时间和日期。
系统上的每个用户都有自己的crontab文件,无论是否登录,都可以运行特定的任务。正如您所料,我们的目标是找到一个由root设置的cron作业,并让它运行我们的脚本,最好是shell。
任何用户都可以在/etc/crontab下读取保存系统范围cron作业的文件。
虽然CTF机器可以每分钟或每5分钟运行一次cron作业,但在渗透测试中,您将更经常地看到每天、每周或每月运行的任务。

您可以看到backup.sh脚本被配置为每分钟运行一次。该文件的内容显示了一个简单的脚本,用于创建prices.xls文件的备份。

由于我们当前的用户可以访问此脚本,我们可以很容易地修改它以创建反向shell,希望具有root权限。
该脚本将使用目标系统上可用的工具来启动反向shell。
有两点需要注意;
- 命令语法将根据可用工具而有所不同。(例如,nc可能不支持您在其他情况下使用的-e选项)
- 我们应该始终更喜欢开始反向shell,因为我们不想在真正的渗透测试中损害系统的完整性。
文件应该是这样的;

我们现在将在攻击机器上运行一个监听器来接收传入的连接。

Crontab是非常值得检查一下的,因为它有时会导致非常简单的权限升级漏洞。以下情况在没有一定网络安全成熟度的公司中并不罕见:
- 系统管理员需要定期运行脚本。
- 他们为此创建了一个cron作业。
- 过了一段时间,脚本就没用了,他们删除了它。
- 但他们没有清理相关的cron作业。
这个变更管理问题导致了利用cron作业的潜在漏洞。

上面的示例显示了类似的情况,其中antivirus.sh脚本被删除,但cron作业仍然存在。
如果没有定义脚本的完整路径(就像对backup.sh脚本所做的那样),cron将引用/etc/crontab文件中path变量下列出的路径。在这种情况下,我们应该能够在用户的主文件夹下创建一个名为“antivirus.sh”的脚本,它应该由cron作业运行。
目标系统上的文件应该看起来很熟悉:

传入的反向shell连接具有root权限:

如果你发现一个现有的脚本或任务附加到cron作业上,那么花时间了解脚本的功能以及如何在上下文中使用任何工具总是值得的。例如,tar、7z、rsync等可以使用它们的通配符特性进行利用。
更多推荐



所有评论(0)