Hopp til innhold
Siden er hacket

Fjern skadevare fra WordPress

Hvorfor det ikke holder å slette filene skanneren fant, og hva en ordentlig opprydding innebærer.

Du trenger
FTP
Oppdatert

En skanner som Wordfence sammenligner WordPress-filene med originalene og leter etter kjent skadelig kode i filene og i databasen. Men den finner ikke alt. Kode som skanneren ikke kjenner igjen, blir liggende. Det gjelder særlig kjøpte utvidelser og egenutviklede temaer, for dem har skanneren ingen original å sammenligne med. Hvis du bare sletter det skanneren fant, kan angriperen komme tilbake gjennom koden som ble liggende.

En grundig opprydding betyr at du bytter ut alt du kan med rene kopier, går gjennom resten og finner sikkerhetshullet angriperen kom inn gjennom.

Før du begynner

  1. Ta en kopi av alle filene og eksporter databasen, selv om alt er infisert. Kopien inneholder spor som viser hva som skjedde, og den er det eneste du har hvis noe går galt.
  2. Sjekk om hostingleverandøren har en sikkerhetskopi fra før angrepet. Det kan gå raskere å gjenopprette den enn å rydde, men du må tette sikkerhetshullet etterpå.
  3. Bytt passordene til wp-admin, hostingpanelet, FTP, SFTP og databasen. Bytter du databasepassordet, må du også skrive det nye passordet inn i DB_PASSWORD i wp-config.php. Ellers får ikke WordPress kontakt med databasen, og siden viser bare en feilmelding.

Rydd i wp-admin

  1. Gå til Brukere og se etter administratorer du ikke kjenner. Noter brukernavn, e-postadresse og når de ble opprettet, og ta fra dem administratorrollen. Slett dem når oppryddingen er ferdig. Datoen står ikke i wp-admin. Du finner den i phpMyAdmin, i kolonnen user_registered i tabellen wp_users.
  2. Slett ubrukte utvidelser under Utvidelser og ubrukte temaer under Utseende → Temaer.
  3. Under Utvidelser kan det ligge en fane som heter «Obligatoriske». Den viser utvidelsene i wp-content/mu-plugins, som alltid er aktive og ikke kan deaktiveres i wp-admin. Se nøye på alt du ikke kjenner igjen der.

Bytt ut WordPress via FTP

Knappen «Reinstaller versjon» under Kontrollpanel → Oppdateringer er ikke nok. Den skriver over de eksisterende filene, men fjerner ikke filer angriperen har lagt til.

  1. Finn versjonsnummeret i wp-includes/version.php og last ned samme versjon fra wordpress.org.
  2. Slett mappene wp-admin og wp-includes på serveren, og last opp de samme mappene fra nedlastingen.
  3. Last opp filene fra rotmappen i nedlastingen, og skriv over dem som ligger på serveren. Se så nærmere på filene i rotmappen som ikke var med i nedlastingen. wp-config.php og .htaccess skal ligge der, men les gjennom dem også og se etter kode som ikke hører hjemme der.

Bytt ut utvidelser og temaer

  1. Slett mappen til hver utvidelse i wp-content/plugins og last opp en ny kopi fra wordpress.org eller fra leverandøren. Kjøpte utvidelser henter du fra kontoen din hos leverandøren.
  2. Gjør det samme med temaet. Barnetemaer og egenutviklet kode må du gå gjennom selv, for det finnes ingen rene kopier av dem.

Gå gjennom resten

  • wp-content/uploads inneholder bilder og dokumenter, men også filer som utvidelser lager, for eksempel CSS, skript, skrifttyper og logger. PHP-filer hører sjelden hjemme der. Noen utvidelser legger en tom index.php i mappene sine, men alle andre PHP-filer i uploads må du se nærmere på.
  • Se etter .htaccess, .user.ini og php.ini i alle mapper. Innstillingen auto_prepend_file kjører en fil før hver forespørsel. Wordfence bruker den til brannmuren sin, og da peker den på wordfence-waf.php. Peker den på en annen fil, må du se nærmere på den filen.
  • Se etter planlagte oppgaver du ikke kjenner igjen, både cron-jobber i hostingpanelet og WP-Cron-hendelser i WordPress. Utvidelsen WP Crontrol viser WP-Cron-hendelsene. Skadevare kan legge inn en planlagt oppgave som installerer skadevaren på nytt etter oppryddingen.
  • Søk i databasen med phpMyAdmin etter <script, eval og base64_decode i tabellene wp_options og wp_posts.

Har du SSH og WP-CLI på serveren, kan du sjekke filene mot de offisielle kopiene på wordpress.org:

wp core verify-checksums
wp plugin verify-checksums --all

File should not exist betyr at det ligger en ekstra fil i WordPress-mappene. Kjøpte utvidelser kan du ikke sjekke på denne måten.

Etter oppryddingen

  1. Bytt passordene en gang til, nå som siden er ren.
  2. Bytt sikkerhetsnøklene (salts) i wp-config.php, så alle blir logget ut. Nye nøkler henter du fra https://api.wordpress.org/secret-key/1.1/salt/. Med WP-CLI gjør wp config shuffle-salts det samme.
  3. Oppdater WordPress, utvidelsene og temaene.
  4. Sjekk siden utenfra med Sucuri SiteCheck og Google Safe Browsing, og sjekk med WPScan om noen av utvidelsene har kjente sikkerhetshull.
  5. Har Google merket siden som farlig, ber du om en ny gjennomgang i Search Console.

Hvis det ikke hjelper

Kommer skadevaren tilbake, har du ikke funnet sikkerhetshullet ennå. Let etter en utdatert utvidelse, et lekket passord eller en annen infisert nettside på samme hostingkonto. Hvis serverloggene går langt nok tilbake, kan de vise hvordan angriperen kom inn. Det krever likevel erfaring å lese dem.