利用FTP进行提权

天の痕 · 2019-4-24 · 次阅读


通过FTP提权

​ 最近通过对于FTP服务配置不当产生的漏洞进行了一些研究,发现可以通过FTP配置不当而产生的漏洞进行提权。本次实验中使用的是最新的vsFTPd 3.0.2版本,主机是Ubuntu 14.04的服务器,虽然本质上与FTP版本以及服务器系统无关,但是还是提一下防止出现问题。

配置不当漏洞描述

首先并不是所有的情况都可以通过这样的方式进行提权,因为我们只是利用了配置不当从而进一步进行了渗透,如果配置得当,那么这种方式完全不生效。
首先目标机器需要开启FTP和SSH服务,在此种情况下,FTP服务和SSH服务登录的用户名以及密码是相同的,目标机器由于配置失误没有重新配置root权限的密码,为初始密码root,由此我们可以直接以root的权限登录FTP服务。但是对于SSH服务来说,其关闭了root用户的直接密码登录权限,只能使用公钥私钥登录,因此我们即便知道了root权限的密码也无济于事。

利用FTP对于文件系统进行修改

FTP服务在登录之后可以对目标机器进行文件系统的读写操作,一般来说如果管理员权限设置正确的话,普通用户无法进行额外的读写操作,只能在规定的home目录下进行文件的上传和下载。
但是如果配置权限错误或者直接拥有了root权限,则可以进行切换目录的cd命令,这样相当于将整个服务器的文件系统暴露在了用户面前,是非常不安全的。因此我们可以利用此配置不当直接对于当前服务器文件系统进行读写操作,其中读操作就是使用FTP传输下载文件,写操作就是使用FTP传输上传文件覆盖原文件生效。
所以进行提权的问题就变成了如下问题:拥有当前服务器的读写文件权利,来开放SSH服务的root登录权限。

通过crontab实现FTP执行命令

如果我们希望通过更改读写文件来实现开放SSH服务的root登录权限,那么最简单的事情就是更改/etc/ssh/目录下的sshd_config文件来将PermitRootLogin选项更改为yes即可。但是我们会发现,单独更改了此文件,我们仍旧无法以root身份登录,其主要原因是sshd进程已经在运行,现在更改的服务配置文件并不生效,因此我们只能等待服务器重启或者该服务进程重启。但是这是不可靠的,在渗透测试过程中这样并不合理,因此我们应该寻找其他方式能够重启服务器或者重启该项服务。
这里就需要使用到Linux中的crontab服务。crontab服务是在Linux系统中开启默认启动的服务,用来执行定时任务。也就是说在crontab中有一个list,其中记录着在什么时间运行什么任务,这样就不需要有人看护系统,系统在指定时间就可以自动运行指定的任务。
我们由于可以任意读写文件,所以将crontab的配置文件进行修改,在其中加入一个任务用于重启ssh服务,即 * root service ssh restart。这样当到达下一分钟时,系统会自动运行该条命令,重启SSH服务,这样我们之前修改的sshd_config文件就生效了,由此就可以进行root密码登录了。

总结与反思

事实上,我们通过FTP的配置不当,最终得到了操作系统的最高权限。
其实如果能够通过FTP配置不当得到读写控制权,我们可以直接拿到系统的shadow文件,使用Kali中的John就可以通过字典对于登录密码进行爆破。在本试验中我们降低了难度,已知root密码,唯一障碍在于无法密码登录。
如果没有FTP登录配置不当,我们就不可能轻易对于文件系统进行读写,因此使用FTP服务应该对于登录进行限制,最好去掉root用户登录,如此才能确保安全。


庄敬日强,功不唐捐。