WordPress under trykk. Beskytt med egne hender

14

WordPress – en praktisk plattform for publisering av artikler og ledelse, som er basert på et stort antall forskjellige nettsteder. På grunn av sin utbredelse har dette CMS lenge vært en velsmakende bit for hackere.

Dessverre gir ikke de grunnleggende innstillingene et tilstrekkelig beskyttelsesnivå, og etterlater mange hull avdekket kredittmislighold. I denne artikkelen vil vi gå gjennom en typisk "modell" hackingside på WordPress, og vise hvordan du kan fikse identifiserte sårbarheter.

I dag er WordPress innholdsstyringssystem det mest populære. Dens andel er 60,4 % av det totale antallet nettsteder som bruker CMS-motorer. Av disse, ifølge statistikken, er 67,3 % av nettstedene basert på den nyeste versjonen av programvaren. I mellomtiden, i løpet av de tolv årene av webmotoren ble det funnet 242 sårbarheter av ulike slag (unntatt sårbarheter funnet i tredjeparts plug-ins og temaer). En tredjeparts tilleggsstatistikk er enda tristere. Dermed gjennomførte selskapet en analyse i 2350 Revisium Russified-maler for WordPress, hentet fra forskjellige kilder. Som et resultat fant de at mer enn halvparten (54 %) var infiserte Web Shell, bakdører, blackhat seo ("spam")-koblinger og skript inneholdt kritiske sårbarheter. Så len deg tilbake, nå skal vi forstå hvordan vi utfører en revisjon på WordPress-siden og eliminerer manglene som er funnet. Bruk vil være versjon 4.

Indekseringsside

Det første trinnet i enhver test er vanligvis å samle informasjon om målet. Og så hjelper det veldig ofte med feilkonfigurering Indekseringsside som lar uautoriserte brukere se innholdet i visse deler av nettstedet og for eksempel få informasjon om installerte plug-ins og temaer, samt tilgang til konfidensielle data eller sikkerhetskopier av databaser. For å sjekke hvilke kataloger som er synlige fra utsiden, den enkleste måten å dra nytte av Google. Det er nok å kjøre et søk Google Dorks type site: example.com intitle: «index of» inurl: / wp-content /. Operatøren inurl: Du kan spesifisere følgende kataloger:

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

Hvis du kan se / wp-content / plugins /, er neste trinn å samle informasjon om installerte plugins og deres versjoner er sterkt forenklet. Naturligvis kan du forhindre indeksering ved å bruke filen robots.txt. Så som standard er det ikke inkludert i installasjonspakken WordPress, det er nødvendig å opprette og kaste deg til rotkatalogen til nettstedet. Håndbøker for å lage og jobbe med robots.txt-filen er ganske mange, så la dette emnet være for deg selv. For å gi bare ett av de mulige alternativene:

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: /

Hvis filene som er lagret i en mappe laster opp, er konfidensiell informasjon, legg til denne listelinjen: Disallow: / wp-content / uploads /. På den annen side anbefales ikke robots.txt-filen for å plassere lenker til kataloger som er laget spesielt for lagring av sensitiv informasjon. Ellers letter du dermed oppgaven til angriperen, fordi dette er det første stedet hvor alle vanligvis ser på jakt etter "yammy".

Sikkerhetsplugins for WordPress
Koble til .htaccess

For å begrense tilgangen til sensitiv informasjon er det bedre å bruke filen .htaccess – det er en konfigurasjonsfil som brukes av Apache Web Server. Vurder muligheten for filen fra et sikkerhetssynspunkt. Med den kan du: nekte tilgang til kataloger og filer, låse ulike SQL-injeksjoner og ondsinnede skript. For denne standard .htaccess-filen for CMS WordPress 4.1 må du utvide litt. For å lukke listen over filer og mapper, legg til:

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

Blokkreferanser som inneholder kodingen Base64. Bli kvitt linker som inneholder taggen <script>:

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

For å motvirke skript som prøver å sette globale variabler eller endre _REQUESTvariabel via URL:

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

For å motvirke blokkering av SQL-injeksjonsforespørsler til URL-en, som inneholder visse nøkkelord:

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]

For å ødelegge livets vanlige hackingverktøy, filtrerer visse brukeragenter:

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

Det ville være fint å begrense og få tilgang til kritiske filer som lagrer konfigurasjon eller bare kan gi en angriper litt informasjon. Du kan velge følgende kandidater:

  • Wp-config.php, inkluderer et databasenavn, brukernavn, passord og tabellprefiks;
  • .htaccess;
  • Readme.html og ru_RU.po, som inneholder en versjon av WordPress;
  • Install.php.

Dette gjøres som følger:

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

Filen .htaccess, som inneholder disse linjene, bør være i samme katalog som filen er beskyttet. Så ikke tillat oppføring av brukere (husk, litt høyere, vi snakket om hvor enkelt det er å få en liste over brukere?):

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

Så hva ellers? Du kan kun tillate inngang fra spesifiserte IP-adresser. For å gjøre dette, lag en .htaccess-fil i wp-admin med følgende 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 er lite fleksibel og kan kun brukes hvis du arbeider med et begrenset antall faste IP-adresser. Ellers anbefales det å sette et passord til mappen wp-admin panel gjennom hosting (hvis denne funksjonaliteten).

WWW

Et sett med regler 5G Blacklist og 6G Blacklist beta fra Perishable Press, som lar deg håndtere utbredte ondsinnede URL-forespørsler for WordPress.

Ytterligere tiltak

I tillegg til det som er sagt ovenfor, kan følgende anbefalinger legges til. Først, bruk kun de nyeste versjonene av WordPress og dets komponenter – dette vil eliminere kjente sårbarheter. For det andre, fjern plugins og temaer, som også kan være proekspluatirovat. For det tredje, last ned WordPress-temaer og plugins fra pålitelige kilder, for eksempel nettstedene til utviklere og den offisielle siden til WordPress. I tillegg til hjemme-PC, må du med jevne mellomrom sjekke nettressursen Web Antivirus, for eksempel AI-Bolit. Hvis du har tilgang til webserveren, stemningen av tilgangsrettigheter til filer og kataloger. Vanligvis setter WordPress fulle rettigheter i installasjonsfasen, men kan om nødvendig settes manuelt chmod. For katalog – chmod 755 for filer – chmod 644. Sørg for at rettighetene til 777 bare tildeles de anleggene som trenger det (noen ganger er det nødvendig for normal drift av noen plug-ins). Hvis WordPress sluttet å fungere normalt, eksperimenter med tilgangsrettigheter: Prøv først 755, deretter 766 og til slutt 777. For at all htaccess-filen skal eksponere chmod 444 (skrivebeskyttet). Hvis nettstedet ikke lenger fungerer, kan du prøve å eksperimentere med verdier på 400, 440, 444, 600, 640, 644.

Flytt filen wp-config.php. Denne filen inneholder informasjon om innstillingene, MySQL, tabellprefikset, hemmelige nøkler og mer. Derfor er det nødvendig å overføre til filen var ikke tilgjengelig fra Internett. Hvis nettstedet ikke ligger i mappen public_html, drar du filen wp-config.php i mappenivået ovenfor, og WordPress vil automatisk finne den i rotkatalogen (gjelder hvis det kun er ett vertsnettsted dette CMS).

For å komplisere casting-skallet, deaktiver muligheten til å redigere tråder som konsoller WordPress. For å gjøre dette, sett inn følgende linje i filen wp-config.php:

define ('DISALLOW_FILE_EDIT', true) ;

Et annet svakt punkt – filen install.php (i mappen wp-admin). Derfor er det bedre å fjerne, blokkere eller endre. Utfør ett av følgende:

  1. Bare slett denne filen – etter installasjonen er den ikke lenger nødvendig.
  2. Nekt tilgang til filen via .htaccess.
  3. Gi nytt navn til den opprinnelige filen install.php (f.eks. install.php.old) og lag en ny fil install.php med følgende innhold:
<?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>

I tillegg til å varsle besøkende om nettstedet, gjør dette skriptet følgende:

  • Sender kunden og søkemotorene statuskoden 503 ("Tjenesten utilgjengelig");
  • Angir tidsintervallet som kunder og søkemotorer kan gå tilbake til nettstedet (justerbar parameter);
  • Varsle via e-post om et problem med databasen for passende tiltak.

Det faktum at i tidligere versjoner av WordPress (< = 2.7.1) med feil MySQL (for eksempel DDoS-attack) CMS gjør det mulig å installere på nytt. I tillegg kan det skje og feil / skade på en av tabellene WordPress. Spesielt er angrepet mulig når den skadede tabellen ks29so_options (i WordPress 2.6.2) eller ks29so_users (i WordPress 2.0.3 og 2.0.11). Det vil si, i forskjellige versjoner av WP forskjellige tabeller ved hovedkontrollen i installasjonsprogrammet – det kan enten være tabellen ks29so_options eller ks29so_users.

Til slutt kobler du fra registreringen av nye brukere, hvis dette ikke er nødvendig. Hvis imidlertid gir online registrering, ta vare på at nye brukere etter registrering fikk minimale privilegier.

Nyttige lenker
Lukking

WordPress – et ganske stort og komplekst produkt, med sine plusser og minuser. Dessverre, i standardkonfigurasjonen, er sikkerheten tvilsom, siden selv i nærvær av normal skriptkidis rett hånd og Internett vil være i stand til å bryte gjennom beskyttelsen. Derfor anbefaler vi sterkt å sjekke ut ressursen på samme måte som vi gjorde i artikkelen. Og hvis du finner feil – fiks dem for å redusere sjansene for en angriper til å kompromittere en ressurs til et minimum.

Dette nettstedet bruker informasjonskapsler for å forbedre din opplevelse. Vi antar at du er ok med dette, men du kan velge bort det hvis du ønsker det. jeg aksepterer Mer informasjon