Ciber Geek >

Wordpress

Acceder a WordPress en una red local

Con la llegada del responsive design, y todos los nombres cool que tienen las paginas que se adaptan a diferentes tamaños de pantallas, es recurrente la necesidad de probar éstas paginas en diferentes dispositivos, para lo cual, entre varias técnicas, una de mis favoritas (?) es acceder al servidor en la PC en que estamos desarrollando mediante otros dispositivos, todos conectados a una red local. Ojo, ésto no funciona si están usando el 3G de su teléfono, tienen que estar en al misma red por cuestiones de simplicidad, o sea usar el WiFi, si se quieren poner a jugar con las configuraciones avanzadas de su router, bueno, pueden hacerlo.

wordpress logo

WordPress

Acceder a una instalación de WordPress en la red local

Antes de hacerlo deben configurar el servidor (para Apache), de modo que les quede así la directiva Listen.

Listen *:80

Ésto puede llegar a variar, pero él anterior es el caso mas común.

También deben fijarse de que el Firewall no les esté filtrando el acceso.

Y aquí, la magia, deben agregar lo siguiente al archivo wp-config.php.

define( ‘WP_SITEURL’, ‘http://’ . $_SERVER[‘HTTP_HOST’] . ‘/directorio_donde_esta_wordpress’ );
define(‘WP_HOME’, WP_SITEURL);

Es pura magia, traída a ustedes gracias a las constantes WP_SITEURL y WP_HOME. Antes de hacer ésto, si podían acceder a su blog/sitio de WordPress, varias cosas no iban a funcionar, como por ejemplo la hoja de estilos y demás, tengan en cuenta que es fundamental utilizar las funciones de WordPress para definir rutas, si están hardcodeadas o escritas a mano, ésto no va a funcionar.

Ésta modificación al archivo wp-config.php lo que hace es modificar el valor sin interferir con el valor que está guardado en la base de datos, así que después es solo cuestión de borrar éstas lineas de código y listo.

Protegiendo tus directorios en Apache, ideal para WordPress

Empecemos con un viejo y conocido refrán: “En casa de herrero, cuchillo de palo“. Dicho esto, seguimos con el post, y estén atentos, ya que esto los puede salvar de un aprieto, y es super sencillo, tan sencillo que hasta yo podría hacerlo.

Evitar el listado de directorios en Apache

Seguramente estén pensando ¿A mi para que me sirve esto? Y bueno, no hay mejor forma que ejemplificando, por ejemplo, existen plugins en WordPress que almacenan archivos en la carpeta “wp-content/uploads”, muchos de estos son plugins que hacen backups o permiten descargar listados de emails, así que con un poco de Google-fu pueden llegar a encontrar muchas cosas.

http://www.google.com/#q=%22Index+of+%2Fwp-content%2Fuploads%2Fbackupbuddy_backups%22+zip

Pero los backups son aburridos y no se pueden vender, mejor vamos por un listado de mails.

https://www.google.com/search?q=”Index%20of%20%2Fwp-content%2Fuploads%2Fwp-mailinglist”%20csv

E incluso hay cosas mas interesantes, por ejemplo, el otro día encontré un sitio que vende un plugin para ayudar con el marketing de WordPress a 65 dolares y lo tiene disponible para descargar gratis en la carpeta “uploads”. Les avisé hace mas de una semana y ni siquiera intentaron bajarlo, o al menos cambiar la configuración. Pero bueno, ahora vamos a lo importante, como evitarlo.

Hay 2 formas de evitarlo (en Apache):

  1. Una forma de hacerlo, mas “artesanal”, es poniendo un archivo con el nombre “index.html” (sin comillas) en el directorio en el que quiere evitar el listado. El archivo puede estar vacío.
  2. La forma que recomendaría un sysadmin es utilizando el archivo “.htaccess” y agregando la siguiente linea:

    Options -Indexes
     

    Esto deshabilita el listado en el directorio en donde se encuentra el  archivo “.htaccess” y en todos los subdirectorios que se encuentren por debajo. 

listado directorio apache

Otra forma de hacerlo es con la directiva “IndexIgnore, por ejemplo, para que no se listen los archivos PHP se usa así “IndexIgnore *.php“, si quieren bloquear todo solo escriben el asterisco (wildcard).

Si tienen acceso al archivos de configuración de Apache esto también se puede hacer desde ahí, pero no es la situación mas habitual.

WordPress 3.9 ya (casi) está entre nosotros

Ok, todavía no, pero falta muy poco, ya que a quienes alguna vez desarrollamos un plugin y lo publicamos en el sitio oficial de WordPress.org, recibimos información sobre cambios en la plataforma de modo de que podamos mantener nuestros plugins al día.

wordpress logo

WordPress

Si desarrollaron algún plugin a medida es una buena idea que se den una vuelta por acá, ya que van a encontrar cuales son los principales cambios que se vienen con la versión 3.9 de WordPress, obviamente que mientras no actualicen no habrá problemas, y además, en general el equipo de WordPress mantiene la compatibilidad con funciones disponibles en versiones anteriores, pero nunca es tarde para arreglar ése código que está usando funciones que están en camino a ser retiradas de WordPress.

Ya quiero probar WordPress 3.9

Como siempre sucede, la opción de actualizar automáticamente a WordPress 3.9 todavía no está disponible, y no lo estará por al menos unos días, actualmente la ultima versión estable es la 3.8.3. Pero si están apurados, pueden descargar el Release Candidate 2 desde acá, si bien no es una versión oficial, ya para el segundo RC se espera que todo esté andando bastante bien, obviamente no lo vayan a usar en producción, pero si quieren ver si se aproximan dolores de cabeza pueden darle una probadita con sus plugins.

Evita que tu blog en WordPress forme parte de una gigantesca botnet

Muchas veces se ha hablado de las varias formas en las que XMLRPC puede ser explotado, pero en éste caso una firma de seguridad descubrió una botnet que utilizaba la funcionalidad de realizar pingbacks de WordPress para realizar ataques de denegación de servicio distribuidos (DDOS).

Sucuri, la firma que realizó el descubrimiento, encontró que un sitio estaba recibiendo un DDOS por parte de miles de sitios legítimos que utilizaban el CMS WordPress. Y la vulnerabilidad explotada en todos ésos sitios era mediante el pingback que utiliza la API provista por XMLRPC. Afortunadamente deshabilitar el pingback no es tan difícil, es cuestión de instalar un plugin o agregar un par de lineas de código al archivo functions.php.

Éste es el código mágico para deshabilitar el pingback que deben agregar al archivo functions.php de su plantilla.

add_filter( ‘xmlrpc_methods’, ‘cibergeek_no_ping’);
function cibergeek_no_ping( $methods ) {
unset( $methods[‘pingback.ping’] );
return $methods;
}

Si no quieren meter mano en el código pueden instalar éste plugin, que solo desactiva el pingback, ya que XMLRPC es utilizado para otras tareas por plugins y aplicaciones que se conectan a WordPress mediante ésta API.

Además, pueden probar si alguno de sus sitios participó de éstos ataques utilizando una herramienta provista por la firma de seguridad. Tengan en cuenta que el listado es limitado, pero revisando los logs de su servidor pueden encontrar mas información, lo que deben buscar es algo similar a lo siguiente:

93.174.93.72 - - [09/Mar/2014:20:11:34 -0400] "POST /xmlrpc.php HTTP/1.0" 403 4034 "-" "-" "POSTREQUEST:<?xml version=\x221.0\x22 encoding=\x22iso-8859-1\x22?>\x0A<methodCall>\x0A<methodName>pingback.ping</methodName>\x0A<params>\x0A <param>\x0A  <value>\x0A   <string>http://fastbet99.com/?1698491=8940641</string>\x0A  </value>\x0A </param>\x0A <param>\x0A  <value>\x0A   <string>yoursite.com</string>\x0A  </value>\x0A </param>\x0A</params>\x0A</methodCall>\x0A"

94.102.63.238 – - [09/Mar/2014:23:21:01 -0400] "POST /xmlrpc.php HTTP/1.0" 403 4034 "-" "-" "POSTREQUEST:\x0A\x0Apingback.ping\x0A\x0A \x0A \x0A http://www.guttercleanerlondon.co.uk/?7964015=3863899\x0A \x0A \x0A \x0A \x0A yoursite.com\x0A \x0A \x0A\x0A\x0A"

Plugins peligrosos

Una pequeña y muy simple recomendación antes e instalar un plugin o theme en WordPress y otros CMSs, es tan simple que todo lo que tenemos que hacer en buscar en Google.

plugins bug

Antes de instalar un plugin vale la pena hacer un par de búsquedas en Google para ver si encontramos algo sospechoso, como pueden ser resultados sobre vulnerabilidades del mismo o ejecución de software malicioso.

Lo recomendable para realizar estas búsquedas es utilizar términos en ingles como “bug”, “exploit”, “vulnerability”, de modo que una búsqueda podría ser “timthumb vulnerability”, esta no es un ejemplo al azar, sino la razón por la cual deben ser precavidos al instalar plugins, aun cuando esté en el repositorio oficial de WordPress.

No solo plugins

Muchas veces las plantillas también utilizan plugins u otros scripts que pueden ser vulnerables, así que deberían tomar la misma precaución. Nuevamente, timthumb es un ejemplo de esto, ya que se encontraba en muchas plantillas para generar imágenes en miniatura (thumb)

Pagina 2 de 41234