[渗透测试] FTP

FTP服务一般运行于20和21两个端口。其中,端口20用于在客户端和服务器端之间传输数据流,而端口21用于传输控制流,并且是命令通向FTP服务器的进口。

许多第三方软件:G6FTP , Serv-U , FileZilla
FTP软件可以执行系统命令,当用户的FTP权限未配置正确,或者权限过大时,就可能被攻击者用来提权。
在配置FTP用户时,如果赋予FTP用户执行权限,那么FTP用户就可以使用“quote site exec”执行系统命令。
quote site exec net user temp 123456 /add
quote site exec net localgroup administrators temp /add
知道了通过FTP帐户可以提权后,下一步就是如何寻找到FTP用户的账号和密码信息。

一、Serv-U提权
在安装Serv-U 6.4后,Serv-U将会监听端口43958,且Serv-U会有一个默认的管理用户:LocalAdministrator,密码为:#1@$ak#.lk;0@p
如果运维人员修改了默认密码,那么可以通过配置文件找到修改后的密码,配置文件在Serv-U目录下的“ServUAdmin.exe”中,将其下载至本地,使用十六进制模式打开,可以看到管理员的帐户信息。
另外一种方式:修改配置文件(ServUDaemon.ini),直接添加FTP用户,这种方式需要有修改权限,且Serv-U服务也需要重启。

-----------------------------------------------------------------------------------------------------------------

Serv-U是一款流行的FTP服务器,很多Web服务器都是用Serv-U来提供FTP服务。
Serv-U的早期版本采用MD5加密,在获取Serv-U文件夹下的ServUDaemon.ini文件后,可以对FTP用户密码进行破解。
Serv-U的加密算法如下:
第一步,随机产生2个字符。
第二步,将第一步产生的字符加上需要的密码一起进行MD5加密。
第三步,将第一步中随机产生的2个字符和第二步中产生的MD5编码的大写形式的字符组合在一起。
举一个例子:
在某个ServUDaemon.ini中存在
[USER=zt828|1]:表示用户为zt828
password=mk7DC2A4B1A9A9E1F52A7F967FBCAA0A37:表示FTP用户zt828的密码为"7DC2A4B1A9A9E1F52A7F967FBCAA0A37"
将mk去掉并在https://hashkiller.co.uk/md5-decrypter.aspx中解密得到结果mkok918918,在去掉前面的mk,就可得到FTP的密码"ok918918"。
使用FTP的IP地址登录,输入用户名"zt828"和密码"ok918918",即可成功登录FTP服务器。正常进入后可以查看网站的源代码,上传WebShell,获取数据库用户名和密码等。

二、G6 FTP提权
G6 FTP安装后默认监听8021端口。
在G6 FTP安装目录下有一个“RemoteAdmin”文件夹,里面存放着一个重要的配置文件“Remote.ini”,即远程管理帐户信息。对密文解密后,可以得知管理员的帐户和密码。
在得知帐户信息后,接下来就可以远程连接G6 FTP提权,连接时一般需要使用LXC进行端口转发,因为G6 FTP默认不允许远程连接。
在服务器端,执行命令:lcx.exe -tran 1234 127.0.0.1 8021
当端口转发完毕后,在本机安装好G6 FTP,利用刚刚得到的管理员帐户及密码即可连接。
连接成功后,选择“域->任意域->用户”,新建FTP用户。根据提示输入新的FTP帐户、密码及用户目录信息后,在弹出的新界面中选择“访问权限”,将所有的权限都赋予给新建的“test”用户。
新建User.BAT文档,上传至服务器,其内容如下:
@echo off
net user temp 123456 /add
net localgroup administrators temp /add
当运行这段BAT文件后,服务器将自动建立一个名为“temp”、密码为“123456”的管理员帐户。
在G6FTP界面选择“SITE 命令”列表,新建一个文件执行命令为AddUser,其中要执行的文件是刚上传至服务器的BAT文件,最后点击“确定”按钮。

以新建立的"test"用户身份登录FTP,执行FTP命令"quote site adduser",若返回"200 Command executed",则代表文件执行成功。
使用G6 FTP软件提权,其中的关键步骤就是对端口转发,并使用FTP执行BAT文件。

三、FileZilla提权
当服务器安装了FileZilla服务器版本后,默认将会监听14147,且在安装目录下有两个重要的敏感文件存在:FileZillaServer Interface.xml与FileZilla Server.xml
其中FileZillaServer Interface.xml保存了所有FTP管理员信息
FileZilla Server.xml保存着服务器所有的FTP用户信息
由于FileZilla在默认情况下只允许本地的127.0.0.1访问,所以FileZilla同样需要将服务器端口转发到本地,然后在本地连接FTP提权。但与Serv-U、G6 FTP方式不同,FileZilla并不能直接执行命令、运行文件。
提权的步骤如下:
1.建立FTP用户,将其路径设置为C盘
2.登录FTP,将位于“C:\Windows\System32”目录下的sethc.exe删除,并将cmd.exe更名为sethc.exe上传至此目录,其目的就是将cmd.exe替换为sethc.exe,这个步骤就是攻击者经常说的“shift”后门。
3.登录远程桌面连接,然后连续按五次“Shift”键,将会启动“shift后门”

四、FlashFXP提权
安装FlashFXP后,在安装目录下有三个文件,Site.dat,Stats.dat和quick.dat,在这三个文件中保存着历史遗留的FTP信息。将这三个文件从服务器下载到本地,并复制到本地FlashFXP安装目录下,替换原有的文件。然后打开FlashFXP,选择历史下拉框,将会看到连接信息(密码是*号,但可以使用星号密码查看器查看明文密码信息,比如,“晨风星号密码查看器”)
得到密码后,并不能直接提权,因为连接的FTP不一定是本服务器的信息,但对提权来说是有必要的,获取其中的一个密码后,就极有可能是服务器管理员常用的密码,从而可以使用这个密码尝试一些其他测试,如终端连接密码,MySQL密码等。


五、用户口令暴力破解攻击
可以利用hydra对ftp进行暴力登录尝试:
# hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV
[渗透测试] FTP_第1张图片
通过抓包可以观察登录成功和登录失败时的细节

[渗透测试] FTP_第2张图片





你可能感兴趣的:(渗透测试)