find ja sed abil failis rea parandamine

Üks mu tegevusi on kodulehtede loomine. Kasutan kodulehe loomiseks enamasti Joomla! mootorit. Soovi korral muidugi võib kliendile paigaldada ka WordPress’i või muu mootori.

Kuna ma olen rohkem tuttav Linux’i maailmaga, siis kasutan programmeerimisvahendit PHP, andmebaasiserverit MySQL (õieti MariaDB on praegu andmebaasiserveriks) ja Apache veebiserverit. See on väga levinud veebilehtede loomise tehnoloogia, mis aga tähendab ka, et igasugused pahalased püüavad selle tehnoloogia abil loodud kodulehti rikkuda. Eesmärgiks on tavaliselt ikka kas mingi pahavara levitamine või mingi halva lisafunktsionaalsuse kodulehele külge pookimine. Sageli püüavad pahalased seda teha nii, et kodulehe külastajale ei pruugi midagi kahtlast silma hakata.

Kui arvutile on paigaldatud korralik turvalahendus, siis tavaliselt küll need turvalahendused annavad teada, kui mõnel kodulehel on paha kood ja sel juhul see paha kood ei saa vaataja arvutis kurja teha.

Turvalahendusega on vaataja küll kaitstud, kuid see ei kõrvalda kodulehelt halba koodi. Sellega tuleb tegelda ikka kodulehe omanikul endal. Tänases artiklis ma natuke puudutan seda, kuidas puhastada paha koodiga nakatunud kodulehte.

Kõigepealt on vajalik, et kodulehe omanik suudaks üldse kindlaks teha, et tema kodulehel on mingi paha kood. Kuna pahalane ise sellest ju kunagi märku ei anna, peab kodulehel olema mingi vahend, mis aeg-ajalt kontrollib kodulehe mootori failid üle ja kui leitakse paha kood, siis peaks see vahend sellest omanikku teavitama. Selliseid kodulehe monitoorimise vahendeid on mitmeid: Myjoomla, Nimbusec, Webarx, Monitis jt. Need vahendid jälgivad kodulehel faile ja kui juhtub mingi intsident (mõnda faili muudetakse ja lisatakse lubamatut koodi), siis annavad need vahendid sellest teada ja paljudel juhtudel aitavad ka selle paha koodi üles leida ning eemaldada.

Kui koduleht on langenud rünnaku ohvriks ja faile on rikutud, siis oluline on KÕIK rikutud failid üles leida ja korda teha. Kui on võimalik kodulehe mootorile ligi saada käsurea vahenditga, siis siin üks juhis, kuidas Linux masinas käsurea vahenditega üles leida kahtlane kood kõigist .php failidest ja see kõrvaldada.

Esmalt tuleks avada üks kahtlast koodi sisaldav fail ja vaadata, milline lõik on see kahtlast koodi sisaldav lõik. Tavaliselt eelpool nimetatud monitoorimise vahendid näitavad selle ära – sealt saab võtta siis kahtlase koodi näidise.

Seejärel tuleb üles otsida KÕIK seda kahtlast koodi sisaldavad .php failid ning sealt see kahtlane kood eemaldada. Sageli ei tohi eemaldada KOGU faili, sest kahtlane kood on lisatud kas faili algusesse või lõppu, kuid muidu on fail vajalik ja seda ei tohi kustutada. Muidugi võib ka olla lihtsalt lisatud faile, mida mootoril endal polegi vaja – sellised failid tulebki kustutada.

Kui kahtlase koodi näidis on leitud, siis saab kasutada programme find ja sed, mille abil otsitakse esmalt kindlat tüüpi failid üles ja seejärel eemaldatakse neist kahtlane kood, kuid fail ise salvestatakse uuesti puhtana tagasi.

Käsku näidis on selline

Käsu erinevate osade selgitus:

  1. Otsi alustades /vajalik-kataloog kataloogist: find /vajalik-kataloog/.
  2. Leia kõik php failid: -name .php
  3. Leitud failidel rakenda sed käsk: -exec sed
  4. Kasuta sed käsus regulaaravaldisi ja muuda faile käigult: -ri
  5. Otsi esimesest reast: 1s
  6. Otsi stringi, mis algab rea algusest: /^
  7. Otsi stringi, mis algab selliselt: <?php $uhnluvfusk (? ja $ tulevad varjata \-märgiga)
  8. Otsi stringi, mis on suvalise pikkusega: .*
  9. Otsi stringi, mis lõpeb selliselt: eugwxkrpjv-1; \?> (? tuleb varjata \-märgiga)
  10. Asenda leitud string tühjusega //
  11. Korda seda käsku iga leitud asja peal: {} +

Selles käsus vajalik-kataloog peaks olema siis kodulehe mootori juurkataloog. Sellisel juhul käib find-programm läbi kogu kodulehe kataloogipuu. See võib teinekord sisaldada päris palju faile, näiteks 5000 – käsitsi seda läbi uurida ei jõuakski:-)

Kuna minu juhtumil oligi nii, et kahtlane kood oli alati kohe faili alguses, siis seetõttu sain ma otsida vaid esimesest reast. Alati ei pruugi see nii lihtne olla.

Alguse ja lõpu stringid võivad erineda – seda tuleb vaadata iga kord oma leitud kahtlase koodiga failidest. Samuti võib olla, et kodulehel on mitme erineva alguse või lõpuga kahtlase koodiga faile – siis tulebki seda find ja sed käsku kasutada mitu korda, iga kord erineva alguse ja lõpu stringiga.

Kui koduleht ei ole väga ära ussitanud, siis on lootust niimoodi koduleht jälle puhtaks saada. Peale seda, kui koduleht on puhastatud, on mõistlik üle kontrollida kodulehel kasutatud vahendid – äkki mõni kodulehe pluginatest/laiendustest ongi ebaturvaline? Juhul, kui see nii on, siis puhastamine kauaks ei aita – ebaturvalise lisa kaudu tuleb pahalane uuesti sisse. Ebaturvaline lisa tuleb lihtsalt maha võtta või vaadata, kas on välja antud turvaparandus. Turvaparandused tuleb alati paigaldada.

Kuna dünaamilised kodulehed on alati teatud määral ohustatud, siis tuleb kodulehe omanikul tagada, et kodulehte monitooritakse turvalisuse seisukohalt ja hoitakse korras. Kui omanik seda ise teha ei oska, siis on mõistlik palgata keegi, kes seda oskab.

Lisa kommentaar

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga