xmlrpc.php-fil och webbplatssäkerhet

ingår i header.php – mallen för de flesta WordPress-Teman, det finns en viktig krok som heter wp_head. Denna viktiga krok gör det möjligt för WordPress-funktioner att mata ut innehåll till webbläsaren i <head> – området på dina webbsidor1.

till exempel, i nyare versioner av WordPress, wp_head() gör det möjligt för WordPress att mata ut följande tre rader till ditt temas <head>:

<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://digwp.com/xmlrpc.php?rsd" /><link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://digwp.com/wp-includes/wlwmanifest.xml" /> <link rel='index' title='Digging into WordPress' href='https://digwp.com/' /><meta name="generator" content="WordPress 2.8" />

som du kan se läggs massor av saker till, inklusive foderlänkar, XML-RPC och WLW-länkar och ett par andra objekt. Även om det finns mycket att diskutera med alla dessa inklusioner, är vi här främst intresserade av länken till xmlrpc.php – filen. WordPress innehåller denna länk för sitt XML-RPC-gränssnitt, vilket gör det möjligt för fjärrapplikationer att kommunicera och interagera med WordPress.

vad gör xmlrpc.php göra? Behöver jag det?

medan dokumentation på WordPress’ XML-RPC är ganska tunn, kan vi hämta en partiell förståelse för hur xmlrpc.php fungerar genom att gå igenom koden i själva filen. Oroa dig inte, vi kommer inte att tråka ut dig med det här, men det räcker med att säga att xmlrpc.php krävs för saker som:

  • posta direkt till din blogg med TextMate, Flock och andra klienter
  • posta direkt till din blogg med Eudora, Thunderbird och andra appar
  • ta emot pingbacks och trackbacks till din webbplats från andra bloggar

inte alla använder fjärrpostfunktionen som är tillgänglig för dem i WordPress, men jag tror att många bloggar definitivt använder XML-RPC-protokollet för pingback-och trackback-funktionaliteten.

gör xmlrpc.php-fil utgör en säkerhetsrisk?

några av er kanske kommer ihåg säkerhetsrisken i samband med xmlrpc.php – skriptet tillbaka i de goda dagarna av WordPress 2.1.2, varigenom:

WordPress kan tillåta en fjärrautentiserad angripare att kringgå säkerhetsbegränsningar, orsakade av felaktig validering av xmlrpc-skriptet. En fjärrangripare med bidragsbehörigheter kan utnyttja denna sårbarhet för att publicera inlägg på webbplatsen.

denna sårbarhet eliminerades omedelbart i version 2.1.3, men kort därefter (i version 2.3.1) ett annat säkerhetsproblem upptäcktes när implementeringen av XML-RPC visade sig läcka information.

även om detta fixades i version 2.3.2 ledde säkerhetsproblemen i samband med XML-RPC-protokollet så småningom WordPress devs att inaktivera fjärråtkomst som standard i version 2.6. Filen xmlrpc.php ingår fortfarande i dokumentet <head> (förmodligen för pingbacks och trackbacks skull), men fjärråtkomstfunktionen är icke-operativ tills den uttryckligen aktiveras2.

kolla in dessa relaterade inlägg på förgänglig Press för mer information om xmlrpc.php-fil och webbplatssäkerhet:

  • skydd för WordPress Pingback sårbarhet
  • skydda mot WordPress Brute Force förstärkning Attack

säkerhetstips för din webbplats xmlrpc.php-fil

när detta skrivs finns det inga kända sårbarheter associerade med WordPress XML-RPC-protokoll. Ändå har det varit säkerhetsproblem med skriptet xmlrpc.php tidigare, och det kan säkert finnas nya problem både nu och i framtiden. Bara för att vara på den säkra sidan, här är några olika strategier och tips för att säkerställa maximal säkerhet för din blogg.

om du inte behöver det, ta bort det

kanske det säkraste sättet att eliminera potentiella säkerhetsproblem är att helt enkelt ta bort skriptet i fråga. Om du inte behöver fjärrposta, pingbacks eller trackbacks kan det vara lättast att helt enkelt ta bort filen xmlrpc.php från din server. Istället för att faktiskt ta bort det, kanske du bara vill byta namn på det något otänkbart. Hur som helst, om skriptet inte är tillgängligt för en angripare, gör det svårt att utnyttja.

uppdatering: om du tar bort (eller byter namn på) filen xmlrpc.php från din WordPress-installation, bör du också implementera funktionen som beskrivs i nästa avsnitt för att undvika en lavin med 404 fel (se denna kommentar för ytterligare förklaring).

ta bort länkarna till xmlrpc.php och wlwmanifest.xml

alternativt, om du inte behöver någon fjärråtkomst eller pingback-funktionalitet, kanske du föredrar att helt enkelt ta bort de associerade rubriklänkarna snarare än att ta bort några kärnfiler från din server. Detta uppnås enkelt med följande funktion placerad i ditt aktiva temas functions.php – fil:

function removeHeadLinks() {remove_action('wp_head', 'rsd_link');remove_action('wp_head', 'wlwmanifest_link');}add_action('init', 'removeHeadLinks');

detta förhindrar att dessa två filer länkas till i rubriken, men själva filerna förblir tillgängliga på din server. Se definitivt till att standardinaktiveringen av fjärrpublicering i kraft om du implementerar den här metoden.

inaktivera fjärrpubliceringsfunktionen

om du inte fjärrpublicerar, men du fortfarande vill ta emot pingbacks och trackbacks, ta WordPress råd och lämna bara fjärråtkomstfunktionen inaktiverad som standard. Detta steg ensam verkar vara ett enormt sätt att hjälpa till att strama upp din bloggs säkerhet. Filen kommer fortfarande att finnas tillgänglig på din server, men angripare kommer att kunna göra mycket mindre med den.

förhindra skadlig xmlrpc.php directory scanning

för er som klokt hålla ett öga på din serveråtkomst och felloggar, har du förmodligen sett en nyligen uppsving i mängden skadliga xmlrpc.php directory scanning. Av någon anledning är de dåliga killarna plötsligt mycket intresserade av xmlrpc.php – filer och skannar varje katalog som de kan få sina bots på att försöka hitta dem. Jag har sett massor av denna typ av aktivitet nyligen:

http://domain.tld/2009/xmlrpc.phphttp://domain.tld/2009/06/xmlrpc.phphttp://domain.tld/2009/06/01/xmlrpc.phphttp://domain.tld/2009/06/01/permalink/xmlrpc.phphttp://domain.tld/2009/06/02/permalink/xmlrpc.phphttp://domain.tld/2009/06/03/permalink/xmlrpc.php...

oavsett om angriparna lokaliserar sitt mål eller inte, dränerar denna typ av beteende systemresurser, svinbandbredd och förhindrar att din webbplats fungerar med maximal kapacitet. Således, för att förhindra detta skadliga beteende från att skada din webbplats, Jag har utarbetat följande htaccess lösning:

<IfModule mod_alias.c>RedirectMatch 301 /(.*)/xmlrpc\.php$ http://domain.tld/xmlrpc.php</IfModule>

när den placeras i den webbåtkomliga root HTAccess-filen för din webbplats, kommer detta enkla direktiv att omdirigera alla förfrågningar om din bloggs xmlrpc.php – fil till den faktiska filen. Jag har använt den här metoden i flera veckor nu på förgänglig Press och har eliminerat tusentals felriktade förfrågningar på grund av det.

lämna xmlrpc.php-fil men förhindra åtkomst till den

sist men inte minst är en enkel metod som gör att du kan lämna filen på plats på din server men förhindra åtkomst till den. Perfekt om du inte behöver manuset och vill vara så lat som möjligt för att hålla det säkert (tänk inget underhåll). Klistra bara in följande kod i din root HTAccess-fil och gör det med det:

<IfModule mod_alias.c>RedirectMatch 403 /(.*)/xmlrpc\.php$</IfModule>

anmärkningar

  • 1 eller var som helst wp_head() kroken finns.
  • 2 för att aktivera den här funktionen, Gå till: Inställningar för att skriva för att skriva för Fjärrpublicering

Lämna ett svar

Din e-postadress kommer inte publiceras.