Contenido

Los themes de WordPress y el XSS

6 Ago

+ 1

Ayer Hector comentaba que de un estudio realizado sobre 1000 blogs usando wp-scanner, habían encontrado que un 11.5% de ellos eran vulnerables a ataques XSS. Ciertamente el problema no es debido a que el gestor de blogs sea WordPress, sinó al theme que usamos los bloggers en nuestro blog.

En esta lista vemos el número de blogs y el theme que usan los que han sido detectados como vulnerables.

Theme Number of blogs
1. field-of-dreams-02 7
2. tarski 7
3. mandigo-14,1.22 7
4. connections 9
5. default 10
6. freshy 10
7. redoable 15
8. k2 16
9. vistered-little-1.6a 16
10. wp-multiflex-3 18

¿Como saber si soy vulnerable?

Si quieres probar tu vulnerabilidad frente a este tipo de ataque tienes la posibilidad de probarlo mediante un cómodo sistema mediante el plugin wp-scanner.

  1. Añade (<!-- wpscanner -->) al código HTML de tu WordPress
  2. Inserta la URL de tu blog en la url destinada a realizar el test.

Vulnerabilidades más típicas

Quizas la vulnerabilidad más común en nuestros themes suelen estar relacionadas con el buscador, ya que es una de las formas en las que podemos interactuar con la blog e insertar datos mediante el método GET.

El fallo más común es el de no controlar los parámetros de entrada mediante el buscador. Los formularios de buscadores generalmente son de esta forma:

<form id="searchform" method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>">

Esto es vulnerable a un tipo de XSS bastánte simple, podemos probarlo en nuestro WordPress con esta simple URL.

http://tublog.com/?"><script>alert(1)</script>

Si nos muestra un alert en pantalla mostrandonos un 1, indica que somos vulnerables a este tipo de ataque. Y podemos solucionarlo de una forma muy fácil.

<form id="searchform" method="get" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">

Usando la función htmlspecialchars() de php que se encarga de convertir a carácteres especiales a entidades HTML, librandonos de este problema. Evidentemente sistemas similares a esto tambien requiren un toque de htmlspecialchars().

$s = ($_GET['s'])?$_GET['s']:"Buscar...";

<input type="text" name="s" value="<?php echo htmlspecialchars($s);" />

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.