Categories
Spam WordPress

Spam en páginas de universidades

Luego del último problema que tuve con el spam en este blog, instalé -- como solución temporal -- Spam Karma; gracias a los reportes que brinda este plugin, veo que algunos spammers usan sitios crackeados de algunas universidades. En dos de tres sitios afectados que miré usan WordPress, obviamente esto no indica que la culpa sea de este CMS, sino que al parecer hacen uso de temas descargados desde sitios no confiables -- es sólo una suposición, podría ser cualquier cosa.

La siguiente lista muestra algunos dominios .edu que fueron baneados en algún momento por el mencionado plugin:

code:

mysql> select value from sk2_blacklist where value like '%.edu%' limit 10;
+----------------+
| value          |
+----------------+
| washington.edu |
| psu.edu        |
| usc.edu        |
| uci.edu        |
| tufts.edu      |
| simmons.edu    |
| jalc.edu       |
| upr.edu        |
| cmccd.edu      |
| rice.edu       |
+----------------+

Tomando como ejemplo uno de los sitios de la Universidad de Puerto Rico, se puede ver que alrededor de 160 páginas spam fueron indexadas por Google, Yahoo muestra 4 páginas de ese tipo y sorprendentemente Live Search devuelve sólo páginas sin spam -- no estoy seguro si el operador site hace lo mismo en los 3 buscadores.

Categories
PHP WordPress

WordPress: Llamadas múltiples en XML-RPC

Según WikiPedia, XML-RPC es un protocolo de llamada a procedimiento remoto que usa XML para codificar los datos y HTTP como protocolo de transmisión de mensajes, creado por Dave Winer (Userland Software) y Microsoft en 1998.

A pesar de que este protocolo tiene mucho más tiempo de lo que yo con el uso de computadoras, recién hace 3 meses que conozco de la existencia de éste y algo que me llama la atención es el soporte para invocar múltiples métodos en una sola petición HTTP -- aunque en realidad depende si el servidor XML-RPC implementa/soporta este tipo de llamadas.

Por ejemplo, el servidor XML-RPC de WordPress soporta este tipo de llamadas gracias a Incutio XML-RPC Library:

php:

<?php
require_once( './class-IXR.php' );

$client = new IXR_ClientMulticall( 'http://www.buayacorp.com/xmlrpc.php' );

$client->debug = true;

$client->addCall('demo.sayHello');
$client->addCall('demo.addTwoNumbers', 10, 1);

$client->query();

print_r($client->getResponse());
?>

Lo que se envía y recibe del servidor:

code:

POST /xmlrpc.php HTTP/1.0
Host: www.buayacorp.com
Content-Type: text/xml
User-Agent: The Incutio XML-RPC PHP Library (multicall client)
Content-length: 652

<?xml version="1.0"?>
<methodCall>
<methodName>system.multicall</methodName>
<params>
<param><value><array><data>
  <value><struct>
  <member><name>methodName</name><value><string>demo.sayHello</string></value></member>
  <member><name>params</name><value><array><data>
</data></array></value></member>
</struct></value>
  <value><struct>
  <member><name>methodName</name><value><string>demo.addTwoNumbers</string></value></member>
  <member><name>params</name><value><array><data>
  <value><int>10</int></value>
  <value><int>1</int></value>
</data></array></value></member>
</struct></value>
</data></array></value></param>
</params></methodCall>

<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<array><data>
<value><array><data>
<value><string>Hello!</string></value>
</data></array></value>
<value><array><data>
<value><int>11</int></value>
</data></array></value>
</data></array>
</value>
</param>
</params>
</methodResponse>

Array
(
    [0] => Array
        (
            [0] => Hello!
        )

    [1] => Array
        (
            [0] => 11
        )

)

Haciendo uso de este tipo de llamadas y gracias a ciertas características de WordPress, fue posible hacer funcionar el tan publicitado exploit para una vulnerabilidad que afecta a casi todas las versiones de este CMS.

Categories
.NET Desarrollo de Software Miniposts WordPress

Enlaces varios

Algunos enlaces que posiblemente les interesen:

Categories
Seguridad Web WordPress

¿Estamos seguros con la nueva versión de WordPress?

La salida de la versión 2.2.2 de WordPress me sorprendió un poco porque no incluye las correcciones a algunos problemas de seguridad que fueron reportados hace más de un mes, si bien es cierto que éstos no son muy peligrosos*, no se me ocurre ningún motivo válido para no haberlos resuelto (si mi memoria no me falla, incluso envié parches con posibles alternativas de solución). Todo parece indicar que la única forma de hacer que los desarrolladores de WordPress le den más importancia a este tipo de reportes, es liberar exploits que hagan uso de éstas vulnerabilidades.

Regresando al tema inicial, lamentablemente la última versión incluye -- al igual que las anteriores y la que actualmente está en desarrollo -- muchos problemas de seguridad, que en su mayoría se deben al uso de cadenas (tipo querystring) para pasar parámetros a funciones y a la ausencia de consultas parametrizadas. Unos cuantos bugs son graves (Fig. 1) y otros de relativa peligrosidad*, pero con el antecedente previo, no sé si me vayan a hacer caso.

Exploit for a Remote SQL Injection Vulnerability in WordPress
Fig. 1: Resultados de un exploit para una
vulnerabilidad de inyección de SQL en WordPress 2.x
(no requiere autenticación).

Es muy probable que la vulnerabilidad que se muestra en la imagen, obligue a los desarrolladores de WordPress a liberar una nueva versión y agregar así, otra raya más al tigre. Por otro lado, mientras no termine de escribir el advisory y me desocupe un poco, no tengo intenciones de dar a conocer los detalles y el exploit para este problema de seguridad. 😉

* Esos bugs son bastante más graves en WordPress MU.

A petición de Alex, pongo a disposición parches generados a partir de la versión en desarrollo de WordPress.

Categories
Web WordPress

Plugin para búsquedas de texto completo en WordPress

La entrada de Héctor sobre como integrar el buscador de Google en WordPress, me hizo acordar que tenía que mejorar un plugin que permite realizar búsquedas de texto completo (Full Text Search) en WordPress -- una versión más rústica de este plugin está funcionando cierto tiempo sin problemas en otro blog.

Luego de unas cuantas pruebas sobre WordPress 2.2.1 y 2.0.11, al parecer está funcionando como debería (aunque el hack para 2.0.11 no me convence del todo 🙂 ):

Opciones del plugin para búsquedas de texto completo en WordPress
Plugin para búsquedas de texto completo en WordPress

Características

  • Permite -- desde el panel de opciones del plugin -- eliminar y crear un índice FULLTEXT sobre los campos post_title y post_content.
  • Permite escoger ciertos modificadores para la realización de búsquedas de texto completo (búsquedas booleanas y con expansión de consulta).
  • Ejecuta la búsqueda normal si la palabra tiene menos de cuatro letras (limitación de las búsquedas de texto completo).
  • Ordena las entradas de acuerdo a la relevancia del texto encontrado.

Para los interesados en este plugin, pueden descargar la primera beta desde este blog.

Changelog

  • Corrección de un bug en el que se usaban campos no definidos en el índice para hacer la búsqueda. Gracias Marce 😉