wp2shell – ylläpitäjän ohje WordPress-sivuston tarkistamiseen 

Aleksi Kämäräinen

Tämä ohje auttaa tarkistamaan, onko WordPress-sivustollesi tehty onnistunut wp2shell-hyökkäys. Ohje on jaettu kahteen osaan: perustarkistus tavalliselle ylläpitäjälle ja edistynyt tarkistus tekniselle ylläpitäjälle, jolla on SSH- tai täysi tiedostonhallinta- ja tietokantapääsy. 

Yksikin selvä löytö tarkoittaa, että sivusto on käsiteltävä murrettuna. Muista: jälkien puuttuminen ei todista puhtautta, koska hyökkääjä on voinut siivota jälkensä. 

wp.one- ja Zoner Care -asiakkaiden WordPress-sivustot päivitetään automaattisesti osana palvelua, joten näiden asiakkaiden ei tarvitse tehdä tästä mitään. Ohje on tarkoitettu ensisijaisesti itse WordPress-asennustaan hallinnoiville. 

Perustarkistus tiedostoihin ja tietokantaan 

Näihin pääsee käsiksi webhotellin hallintapaneelin (esim. cPanel tai DirectAdmin) tiedostonhallinnalla ja tietokantatyökalulla (phpMyAdmin). Komentorivi- tai palvelinosaamista ei tarvita. 

1. Tarkista WordPressin käyttäjät 

Kirjaudu WordPressin hallintapaneeliin ja avaa Käyttäjät. Etsi ylläpitäjätunnuksia, joita et itse ole luonut. Hyökkääjän tunnukset ovat usein satunnaisen näköisiä, esimerkiksi alkuosalla wp2_ tai w2s_, tai niissä on outo sähköpostiosoite tuntemattomasta domainista. Jos löydät tuntemattoman ylläpitäjän, sivusto on murrettu. 

2. Selaa asennetut lisäosat läpi 

Katso lisäosalistaa ja etsi lisäosia, joita et ole itse asentanut. Hyökkäys naamioi takaoven usein plugin-kansioon, jonka nimessä on uskottava sana ja perässä satunnaisia merkkejä (esim. ”security-a1b2c3”). Tarkista myös niin sanotut pakolliset lisäosat (mu-plugins), joita ei aina näy tavallisessa listassa. 

3. Etsi ylimääräisiä PHP-tiedostoja tiedostonhallinnasta 

Avaa webhotellin tiedostonhallinta ja mene kansioon wp-content/uploads. Tässä kansiossa ei kuulu olla yhtään .php-päätteistä tiedostoa — jos sellaisia löytyy, se on erittäin vahva merkki takaovesta. Kiinnitä huomiota myös satunnaisen näköisiin tiedostonimiin (esim. e042u9xy9ra1.php) ja outoihin alikansioihin kuten ”images/images”. 

4. Katso hiljattain muokatut tiedostot 

Tiedostonhallinnassa voit järjestää tiedostot muokkauspäivän mukaan. Etsi tiedostoja, joita on muokattu 17.7.2026 jälkeen ilman että olet itse tehnyt muutoksia. Erityisen epäilyttävää on, jos WordPressin peruskansioiden tiedostoja (kuten index.php) on muutettu tai niiden kokoa on kasvatettu. Jos jokin tiedosto on asetettu vain luku -tilaan, se on itsessään hälytysmerkki: hyökkääjä estää näin päivityksiä korvaamasta takaovea. 

5. Tarkista tietokanta phpMyAdminissa 

Tämä on hieman teknisempi mutta hyödyllinen. Avaa phpMyAdmin ja selaa wp_users-taulua tarkistaaksesi ettei siellä ole tuntemattomia ylläpitäjiä (joskus hyökkääjä piilottaa käyttäjän hallintapaneelin listasta, mutta se näkyy silti tietokannassa). Voit myös etsiä wp_posts- ja wp_postmeta-tauluista merkintöjä, joissa toistuu osoite ”example.invalid” tai päivämäärä 2020-01-01. 

6. Käytä valmista tarkistustyökalua 

Helpoin tapa selvittää onko WordPressisi korjatussa versiossa: syötä sivustosi osoite palveluun wp2shell.com. Huomaa, että tämä kertoo vain onko aukko paikattu — ei sitä, onko sivusto jo ehditty murtaa ennen päivitystä. Perusteellisempaan tarkistukseen voit asentaa ilmaisen Compromise Scanner for wp2shell -lisäosan, joka etsii juuri tämän hyökkäyksen jälkiä sivustoltasi. 

Edistynyt tarkistus (tekninen ylläpitäjä / palvelinpääsy) 

Tämä osio on tarkoitettu ylläpitäjälle, jolla on SSH- tai vähintään täysi tiedostonhallinta- ja tietokantapääsy. 

Verkko- ja lokitaso 

  • Etsi access-lokista POST-pyyntöjä osoitteeseen /wp-json/batch/v1 ja muodossa ?rest_route=/batch/v1. Suuri määrä lyhyessä ajassa on erityisen epäilyttävää. 
  • Etsi pyyntöjä, joissa esiintyy author__not_in-parametri. 
  • Muista lokien rajallisuus: ratkaisevat vaiheet kulkevat POST-pyynnön rungossa, joka ei näy access-lokissa. Tyhjä loki ei todista mitään. Tarkista myös palvelimen error.log — injektio voi vuotaa sinne, jos UNION-kysely aiheutti SQL-syntaksivirheen. 
  • Anna tietokannan rivien ja tiedostojen aikaleimojen johtaa tutkintaa; käytä lokeja vain vahvistamaan lähde-IP, ajankohta ja sisääntuloreitti. 

Käyttäjät ja tunnukset 

  • Etsi ylläpitäjätunnuksia, jotka alkavat wp2_ tai w2s_ (etsi etuliitteellä, ei tarkalla merkkijonolla, koska pääte on satunnainen). 
  • Tarkista ylläpitäjät, joiden sähköpostidomain on @wp2shell.invalid tai @wp2shell.shellcode.lol. Huom: @system.local on joillakin webhotelleilla laillinen paikkamerkki, älä hälytä siitä turhaan. 
  • Tarkista wp_users-taulu suoraan tietokannasta, ei vain hallintapaneelin käyttäjälistaa — tunnus voi olla piilotettu listasta mutta näkyä tietokannassa. 
  • Käy läpi kaikki tuntemattomat käyttäjätilit ja tarkista, onko vanhojen ylläpitäjien sähköpostiosoitteita muutettu. 

Tiedostojärjestelmä 

  • Listaa 16.7.2026 jälkeen muuttuneet PHP-tiedostot: find /polku/sivustoosi -name ”*.php” -newermt ”2026-07-16”. 
  • Tarkista erityisesti wp-content/uploads: siellä ei kuulu olla yhtään PHP-tiedostoa. Etsi satunnaisen näköisiä nimiä (esim. e042u9xy9ra1.php). 
  • Tarkista mu-plugins- ja plugins-kansiot valeplugineiden varalta: uskottava nimi + satunnainen hex-pääte (esim. security-a1b2c3/), pieni PHP-tiedosto väärennetyllä ”Author: WordPress.org Community” -otsikolla. 
  • Tarkista root-hakemiston peruskansion tiedostot (index.php, wp-load.php ym.) — obfuskoitu payload kasvattaa tiedostokokoa. Jos tiedosto on asetettu vain luku -tilaan, se on hälytysmerkki. 
  • Etsi valheellisia mediahakemistoja, erityisesti sisäkkäisiä images/images/-rakenteita, joissa on .jpg/.wmv/.flv-päätteisiä tiedostoja jotka eivät ole kuvia. Tarkista tiedoston todellinen tyyppi file-komennolla. 
  • Tarkista uploads- ja root-kansioiden .htaccess-tiedostot injektoitujen sääntöjen varalta. 

Tietokanta 

  • Tarkista oembed_cache-taulu omalle sivustolle takaisin osoittavien loopback-rivien varalta. 
  • Tarkista customize_changeset poikkeuksellisen korkeilla parent-ID:illä, sekä orpo usermeta ja aukot käyttäjä-ID-sarjassa. 
  • Etsi wp_posts- ja wp_postmeta-tauluista merkintöjä, joissa toistuu example.invalid tai kiinteä päivämäärä 2020-01-01 00:00:00. 
  • Etsi wp_postmeta-taulusta poikkeuksellisen suuria post_id-arvoja — haitalliset rivit ryhmittyvät usein saman suuren post_id:n alle, eivät pelkästään example.invalid-suodattimen taakse. 
  • Tarkista, onko olemassa oleviin postauksiin ja sivuihin injektoitu piilotettuja iframe-elementtejä (tyyli visibility: hidden, tunnistettavissa secret=-parametrista). Hyökkäys ei aina luo uutta sisältöä vaan muokkaa vanhaa — tarkista siis myös tuntemattomat muutokset olemassa oleviin julkaisuihin. 
  • Dumppaa tietokanta analyysiä varten kopiosta, älä elävästä kannasta. 

Palvelin ja pysyvyys 

  • Tarkista ajastetut tehtävät (cron): /etc/crontab, /etc/cron.* ja käyttäjäkohtaiset cron-tehtävät. Hyökkääjät jättävät niihin usein reitin takaisin.
  • Etsi poikkeuksellisia käynnissä olevia prosesseja tai shell-komentoja.
  • Etsi poikkeuksellisia ulospäin lähteviä yhteyksiä.
  • Tarkista www-datan ja palvelutilien shell-historia (~/.bash_history) sekä /tmp ja PHP-istuntokansio pudotettujen payloadien varalta.

Jos löydät merkkejä murrosta 

Älä tyydy poistamaan yksittäistä tiedostoa ja jatkamaan — jos sivusto on murrettu, takaovia voi olla useita ja piilossa. Varmin tapa on: 

  • Palauttaa sivusto puhtaasta, ennen 17.7.2026 otetusta varmuuskopiosta, tai asentaa WordPress-ydin, lisäosat ja teemat uudelleen puhtaista lähteistä. Älä palauta altistumisikkunan sisältä otettua varmuuskopiota. 
  • Kierrättää kaikki salaisuudet: regeneroi WordPress-suolat (kirjaa ulos istutetut istunnot), vaihda tietokannan salasana ja nollaa kaikkien käyttäjien salasanat. 
  • Estää toiston poistamalla FILE-oikeus tietokantakäyttäjältä ja lisäämällä wp-config.php:hen DISALLOW_FILE_MODS. 
  • Vaihtaa joka tapauksessa kaikki salasanat (WordPress, tietokanta, webhotelli) heti. 

Jos et ole varma, ota yhteyttä webhotellisi tukeen.

Ulkoiset työkalut oman sivuston tarkistamiseen 

Olemme täällä sinua varten

Ota yhteyttä
asiantuntijaamme

58 000

tyytyväistä asiakasta

24/7

asiakaspalvelu

4.5/5

arvosana asiakkailta

30pv

tyytyväisyystakuu

Sinua voisi kiinnostaa myös