WordPress under press. Skydda med dina egna händer

36

WordPress – en bekväm plattform för publicering av artiklar och hantering, som är baserad på ett stort antal olika webbplatser. På grund av dess utbredning har detta CMS länge varit en god bit för hackare.

Tyvärr ger de grundläggande inställningarna inte en adekvat skyddsnivå, vilket lämnar många hål avslöjade kreditvärdighet. I den här artikeln kommer vi att gå igenom en typisk "modell"-hackingwebbplats på WordPress och visa hur man åtgärdar identifierade sårbarheter.

Idag är WordPress innehållshanteringssystem det mest populära. Dess andel är 60,4% av det totala antalet sajter som använder CMS-motorer. Av dessa, enligt statistiken, är 67,3 % av sajterna baserade på den senaste versionen av programvaran. Under de tolv åren av webbmotorn hittades 242 sårbarheter av olika slag (exklusive sårbarheter som finns i plug-ins och teman från tredje part). En statistik över tillägg från tredje part är ännu tråkigare. Således genomförde företaget en analys i 2350 Revisium Russified-mallar för WordPress, hämtade från olika källor. Som ett resultat fann de att mer än hälften (54%) var infekterade Web Shell, bakdörrar, blackhat seo (“spam") länkar och skript innehöll kritiska sårbarheter. Så luta dig tillbaka, nu ska vi förstå hur man utför en revision på WordPress-webbplatsen och eliminerar de upptäckta bristerna. Användning kommer att vara version 4.

Indexeringssida

Det första steget i ett test är vanligtvis att samla in information om målet. Och sedan mycket ofta hjälper det felkonfiguration Indexeringswebbplats som tillåter obehöriga användare att se innehållet i vissa delar av webbplatsen och, till exempel, få information om installerade plug-ins och teman, samt tillgång till konfidentiell data eller säkerhetskopior av databaser. För att kontrollera vilka kataloger som är synliga från utsidan, det enklaste sättet att dra nytta av Google. Det räcker med att köra en fråga Google Dorks typ site: example.com intitle: «index of» inurl: / wp-content /. Operatörens inurl: Du kan ange följande kataloger:

/wp-content/
/wp-content/languages/plugins
/wp-content/languages/themes
/wp-content/plugins/
/wp-content/themes/
/wp-content/uploads/

Om du kan se / wp-content / plugins /, är nästa steg att samla information om installerade plugins och deras versioner förenklas avsevärt. Naturligtvis kan du förhindra indexeringen med filen robots.txt. Så som standard ingår det inte i installationspaketet WordPress, det är nödvändigt att skapa och kasta dig till webbplatsens rotkatalog. Manualer för att skapa och arbeta med robots.txt-filen är en hel del, så lämna detta ämne för dig själv. För att ge bara ett av de möjliga alternativen:

User-Agent: *
Disallow: /cgi-bin
Disallow: /wp-login.php
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /?author=*
Allow: /

Om filerna som är lagrade i en mapp laddas upp, är konfidentiell information, lägg till den här listraden: Disallow: / wp-content / uploads /. Å andra sidan rekommenderas inte filen robots.txt för att placera länkar till kataloger som har skapats specifikt för lagring av känslig information. Annars underlättar du därmed angriparens uppgift, eftersom detta är den första platsen där alla vanligtvis letar efter "jammy".

Säkerhetsplugins för WordPress
Anslut .htaccess

För att begränsa åtkomsten till känslig information är det bättre att använda filen .htaccess – det är en konfigurationsfil som används av Apache Web Server. Överväg filens möjlighet ur säkerhetssynpunkt. Med den kan du: neka åtkomst till kataloger och filer, låsa olika SQL-injektion och skadliga skript. För denna standard .htaccess-fil för CMS WordPress 4.1 behöver du expandera lite. För att stänga listan med filer och mappar, lägg till:

Options +FollowSymLinks -Indexes
 
RewriteCond %{QUERY_STRING} base64_encode[^(]*([^)]*) [OR]

Blockreferenser som innehåller kodningen Base64. Bli av med länkar som innehåller taggen <script>:

RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]

För att motverka skript som försöker ställa in globala variabler eller ändra _REQUESTvariabel via URL:

RewriteCond %{QUERY_STRING} GLOBALS (=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST (=|[|%[0-9A-Z]{0,2})

För att motverka förfrågningar om blockering av SQL-injektion till URL:en, som innehåller vissa nyckelord:

RewriteCond %{query_string} concat.*( [NC,OR]
RewriteCond %{query_string} union.*select.*( [NC,OR]
RewriteCond %{query_string} union.*all.*select [NC]
RewriteRule ^(.*)$ index.php [F,L]

För att förstöra livets vanliga hackverktyg, filtrerar vissa användaragenter:

SetEnvIf user-agent «Indy Library» stayout=1
SetEnvIf user-agent «libwww-perl» stayout=1
SetEnvIf user-agent «Wget» stayout=1
deny from env=stayout
Skyddar filer

Det skulle vara trevligt att begränsa och komma åt kritiska filer som lagrar konfiguration eller bara kan ge en angripare lite information. Du kan välja följande kandidater:

  • Wp-config.php, innehåller ett databasnamn, användarnamn, lösenord och tabellprefix;
  • .htaccess;
  • Readme.html och ru_RU.po, som innehåller en version av WordPress;
  • Install.php.

Detta görs på följande sätt:

<Files file_name>
Order Allow,Deny
Deny from all
</Files>

Filen .htaccess, som innehåller dessa rader bör vara i samma katalog som filen är skyddad. Tillåt sedan inte listning av användare (kom ihåg, lite högre, vi pratade om hur lätt det är att få en lista över användare?):

RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]

Så vad mer? Du kan endast tillåta inträde från specificerade IP-adresser. För att göra detta, skapa en .htaccess-fil i din wp-admin med följande regler:

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
order deny,allow
deny from all
allow from 178.178.178.178  # IP Home computer
allow from 248.248.248.248  # IP Work computer

Metoden är inte särskilt flexibel och kan endast användas om du arbetar med ett begränsat antal fasta IP-adresser. Annars rekommenderas det att ställa in ett lösenord till mappen wp-admin panel via hosting (om denna funktionalitet).

WWW

En uppsättning regler 5G Blacklist och 6G Blacklist beta från Perishable Press, som låter dig hantera vanliga skadliga URL-förfrågningar för WordPress.

Ytterligare åtgärder

Utöver det som har sagts ovan kan följande rekommendationer läggas till. Använd först de senaste versionerna av WordPress och dess komponenter – detta kommer att eliminera kända sårbarheter. För det andra, ta bort plugins och teman, som också kan proekspluatirovat. För det tredje, ladda ner WordPress-teman och plugins från pålitliga källor, till exempel webbplatser för utvecklare och den officiella webbplatsen för WordPress. Förutom hemdatorn måste du regelbundet kontrollera din webbresurs Web Antivirus, till exempel AI-Bolit. Om du har tillgång till webbservern, stämningen av åtkomsträttigheter till filer och kataloger. Normalt sett ställer WordPress in fullständiga rättigheter i installationsfasen, men kan vid behov ställas in manuellt chmod. För katalog – chmod 755 för filer – chmod 644. Se till att rättigheterna för 777 endast tilldelas de anläggningar som behöver det (ibland är det nödvändigt för normal drift av vissa plug-ins). Om WordPress slutade fungera normalt, experimentera med åtkomsträttigheter: Försök först 755, sedan 766 och slutligen 777. För att alla htaccess-filer ska exponera chmod 444 (skrivskyddad). Om webbplatsen inte längre fungerar kan du prova att experimentera med värdena 400, 440, 444, 600, 640, 644.

Flytta filen wp-config.php. Den här filen innehåller information om inställningarna, MySQL, tabellprefixet, hemliga nycklar och mer. Därför är det nödvändigt att överföra till filen var inte tillgänglig från Internet. Om webbplatsen inte finns i mappen public_html, dra sedan filen wp-config.php i mappnivån ovan, så hittar WordPress den automatiskt i rotkatalogen (gäller om det bara finns en värdsida för detta CMS).

För att komplicera casting-skalet, inaktivera möjligheten att redigera trådar konsol WordPress. För att göra detta, infoga följande rad i filen wp-config.php:

define ('DISALLOW_FILE_EDIT', true) ;

En annan svag punkt – filen install.php (i mappen wp-admin). Därför är det bättre att ta bort, blockera eller ändra. Utför något av följande:

  1. Ta bara bort den här filen – efter installationen är den inte längre nödvändig.
  2. Neka åtkomst till filen via .htaccess.
  3. Byt namn på den ursprungliga filen install.php (t.ex. install.php.old) och skapa en ny fil install.php med följande innehåll:
<?php header("HTTP/1.1 503 Service Temporarily Unavailable"); ?>
<?php header("Status 503 Service Temporarily Unavailable"); ?>
<?php header("Retry-After 3600"); // 60 minutes ?>
<?php mail("[email protected]", "Database Error", "There is a problem with teh database!"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en"xmlns="http://www.w3.org/1999/xhtml"lang="en">
<head>
<meta http-equiv="Content-Type"content="text/html; charset=utf-8" />
<title>Error Establishing Database Connection</title>
</head>
<body>
<h1>Error Establishing Database Connection</h1>
<p>We are currently experiencing database issues. Please check back shortly. Thank you.</p>
</body>
</html>

Förutom att meddela besökare om webbplatsen gör det här skriptet följande:

  • Skickar till kunden och sökmotorerna statuskoden 503 ("Tjänsten är inte tillgänglig");
  • Anger tidsintervallet genom vilket kunder och sökmotorer kan återvända till webbplatsen (justerbar parameter);
  • Meddela via e-post om ett problem med databasen för lämplig åtgärd.

Det faktum att i tidigare versioner av WordPress (< = 2.7.1) med fel MySQL (till exempel DDoS-attack) CMS gör det möjligt att installera om. Dessutom kan det hända och fel / skada på en av tabellerna WordPress. I synnerhet är attacken möjlig när den skadade tabellen ks29so_options (i WordPress 2.6.2) eller ks29so_users (i WordPress 2.0.3 och 2.0.11). Det vill säga, i olika versioner av WP olika tabeller vid huvudkontrollen i installationsprogrammet – det kan antingen vara tabellen ks29so_options eller ks29so_users.

Slutligen, koppla bort registreringen av nya användare, om detta inte är nödvändigt. Om däremot tillhandahåller onlineregistrering, ta hand om att nya användare efter registrering fick minimala privilegier.

Användbara länkar
Stängning

WordPress – en ganska stor och komplex produkt, med sina plus och minus. Tyvärr, i standardkonfigurationen, är dess säkerhet tveksam, eftersom även i närvaro av normal skriptkidis rak hand och Internet kommer att kunna bryta igenom skyddet. Därför rekommenderar vi starkt att du kollar in resursen på samma sätt som vi gjorde i artikeln. Och om du hittar brister – åtgärda dem för att minska chanserna för en angripare att äventyra en resurs till ett minimum.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More