2007/05/28

从源头解决 Serv-U 权限提升漏洞

Serv-U 如今已成为主流 FTP Server. 和 Windows 一样,因为用的人多,所以研究并试图破解它的人也多,于是就爆出比 G6 FTP Server 多得多的漏洞。我经常听说某人服务器上的 Serv-U 无端地多出了用户或域,或被远程连接。

一旦 Serv-U 被攻破,接下来黑客可以很容易在服务器上创建管理员帐号,开启远程桌面,或者进行其他操作。基本上这台服务器就“沦陷”了。

为什么黑客能做到这些?究其原因,在于 Serv-U 的进程标识权限太高——Serv-U作为系统服务启动,并且使用本地系统帐号登录,这个帐号可以在系统中进行做任何操作!一旦 Serv-U 被攻破,黑客程序就可以同样以本地系统作为标识运行,如此则可几乎没有阻拦地进行任何操作。

一款功能强大的软件,要做到没有漏洞几乎是不可能的。保持软件更新是一个基本手段;另外,还可以从源头——进程标识——解决 Serv-U 权限提升的问题。默认情况下,Serv-U 创建的系统服务是以本地系统帐号登录的,只要我们把它改为权限较低的帐号,则可以避免一旦它被攻破时带来的安全风险。

设置方法也比较简单,首先确认已经将 Serv-U 作为系统服务运行(在 Serv-U Administrator 中可以设置),然后进入管理工具 (Administrative Tools) > 服务 (Services),找到名为 "Serv-U FTP Server" 的服务,双击以打开服务属性 (Properties) 对话框,然后切换到"登录 (Log on)" 标签。这时会发现默认是以本地系统帐号运行,修改为网络服务帐号 (NT AUTHORITY\NetworkService), 并保持密码框为空(注意:网络服务帐号是系统内置的安全体,密码是随机生成且无需人工干预,不要尝试修改网络服务的密码,只需简单地在密码框留空即可)。然后点击“应用 (Apply)”按钮,切换到一个标签,重启服务。

服务重启后,打开任务管理器 (Task Manager), 会发现此时运行 ServUDaemon.exe 的用户名是 Network Service.

还没有完。默认情况下,网络服务帐号对 Serv-U 安装目录没有权限,需要为此目录手动添加网络服务的读写权限。同时,所有 Serv-U 用户读写的目录也需要添加读写权限。That's all!