Kuinka etsiä haitallista koodia ilman virustorjuntaohjelmia ja skannereita. Haitallisen koodin etsiminen ilman virustorjuntaohjelmia ja skannereita Kuinka etsiä haitallista koodia WordPressissä

1. Pura se sivuston kansioon.
2. seuraa linkkiä your_site/fscure/
3. kaikki

Mitä hän voi tehdä?

1. Automaattinen virusten haku allekirjoitusten perusteella.
2. Etsi tiedostoista merkkijono
3. Tiedostojen poistaminen
4. Korjaa haitallinen koodi käyttämällä säännöllisiä lausekkeita

Käsikirjoitus ei tee kaikkea työtä puolestasi ja vaatii vähän tietoa. On suositeltavaa tehdä varmuuskopio sivustosta ennen työtä.

Kuinka se toimii?

Kun se käynnistetään ensimmäisen kerran, se luo tiedostohakemiston. Fscure.lst-tiedosto on kansiossa. Näyttää luettelon tiedostoista, jotka sisältävät mahdollisesti haitallisia allekirjoituksia. "Mahdollisesti haitallinen" tarkoittaa, että sinun on päätettävä, onko se virus vai ei. Allekirjoitusten luettelo on määritetty config.php-tiedostossa, vakio SCAN_SIGN. Oletusasetuksissa komentosarja ei tarkista js-tiedostoja eikä sisällä niiden allekirjoituksia.

Yleisimmät ongelmat

1. ei luo fscure.lst-indeksiä. Voi tapahtua, jos oikeuksia ei ole riittävästi. Laita 777 fscure-kansioon

2. 5xx virhe. Useimmiten "504 Gateway Time-out". Skriptillä ei ole aikaa käsitellä ja se kaatuu aikakatkaisun vuoksi. Tässä tapauksessa on useita tapoja nopeuttaa sen työtä. Nopeus riippuu ensisijaisesti indeksin koosta. Se on fscure.lst-tiedostossa. Tyypillisesti jopa 5 Mt:n tiedosto voidaan käsitellä 90 prosentissa tapauksista. Jos sillä ei ole aikaa, voit vähentää komentosarjan "ahneutta" kieltämällä konfiguraatiossa skannauksen *.jpg;*.png;*.css.
Config.php-tiedostossa.

// erotin; define("TIEDOSTOT_POIS","*.js;*.jpg;*.png;*.css");

3. Hosting antaa varoituksen, kuten
(HEX)base64.inject.unclassed.6: u56565656: /var/www/u65656565/data/www/34535335353.ru/fscure/index.php

Käsikirjoituksessa ei ole virusta, eikä koskaan ollutkaan. Ja (HEX)base64.inject.unclassed.6 on konstruktio, kuten "echo base64_decode(" ), jota kohdataan usein ja joka on itsessään melko vaaraton. Kuitenkin uusimmassa versiossa vaihdoin tämän koodin.

Mitä tehdä, jos et löytänyt virusta itse?

Voit ottaa minuun yhteyttä saadaksesi apua. Hintani ovat vaatimattomat. Annan työlleni 6 kuukauden takuun. Työn hinta on 800 ruplaa. 1 sivustolle. Jos tililläsi on useita sivustoja, hinta määräytyy yksilöllisesti.

Jos onnistuit tekemään kaiken itse, olisin kiitollinen rahallisesta palkkiosta tai linkistä sivustolleni.

Omat varusteet:
yandex
41001151597934

webmoney
Z959263622242
R356304765617
E172301357329

On tehtävä yhdessä. Jos poistat hakkeroinnin alkuperäisen syyn (esimerkiksi CMS-laajennuksen haavoittuvuuden), mutta et poista kaikkia haitallisia tiedostoja, hyökkääjä voi päästä uudelleen sivustolle käyttämällä jotakin komentosarjaansa. Jos poistat kaikki ladatut haitallisia skriptejä, mutta älä poista hakkeroinnin syytä, hyökkääjä voi hakkeroida sivuston uudelleen ja ladata siihen skriptejä uudelleen.

Asiantuntijan, jolla on asianmukaiset tiedot ja kokemus, tulee poistaa haitalliset skriptit ja analysoida hakkeroinnin syitä:

  • Haitallisten komentosarjojen poistaminen edellyttää PHP-ohjelmointikielen tuntemusta sekä suosittujen sisällönhallintajärjestelmien (Joomla, WordPress jne.) ja niiden laajennusten "sisäpuolen" tuntemusta. Tätä tietoa tarvitaan, jotta voidaan erottaa komentosarjat suoraan CMS:stä ja sen laajennukset ylimääräisistä tiedostoista, ja myös voidakseen määrittää yksiselitteisesti, mitä toimia ne suorittavat kohtaaessaan epäilyttäviä skriptejä.
  • Hakkeroinnin syiden analysointi edellyttää kokemusta palvelimen hallinnasta. Tämä on tarpeen tilin tiedostojen tilan, niiden muuttamisajan analysoimiseksi ja näiden tietojen vertaamiseksi palvelimen lokeihin sen määrittämiseksi, mitkä hyökkääjän toimet johtivat sivustojen hakkerointiin.

Siksi, jos sivustollesi on hakkeroitu, toistuvien hakkerointien välttämiseksi on suositeltavaa olla tekemättä työtä itse, vaan ottaa yhteyttä asiantuntijaan, joka suorittaa tarvittavat diagnoosit ja suosittelee tai suorittaa Tarvittavat toimet ratkaisemaan ongelman ja kuka voi taata saadun tuloksen laadun.

On kuitenkin olemassa useita toimenpiteitä, jotka joissakin tapauksissa auttavat palauttamaan sivuston turvallisen toiminnan ilman erityistä tietämystä. Alla olevan menetelmän rajoitus on, että sivuston toiminnan jatkaminen vaatii varmuuskopion, joka on luotu ennen hakkerointia. Jos tietomurron päivämäärä ei ole tiedossa, voit kokeilla tätä menetelmää vanhimmalla saatavilla olevalla varmuuskopiolla. Toinen rajoitus, joka johtuu ensimmäisestä, on se, että sivuston palauttamisen jälkeen sivustolle palautetun varmuuskopion jälkeen lisätyt tiedot (esimerkiksi uudet artikkelit, kuvat tai asiakirjat) on luotu. Jos sinun on palautettava sivusto säilyttäen samalla uusia tietoja, sinun on otettava yhteyttä asiantuntijaan.

Näiden toimenpiteiden avulla emme pysty määrittämään sivuston hakkeroinnin syytä, mutta jokainen niistä on tarkoitettu poistamaan yksi mahdollisista tunkeutumisen syistä. Koska hakkeroinnin tarkkaa syytä ei tiedetä, on välttämätöntä suorittaa ne kaikki. Toimenpiteet on järjestetty sellaiseen järjestykseen, että hyökkääjän mahdollisuus jatkaa toimintaansa sivustolla tai isännöintitilillä estetään ensin kokonaan. tällä hetkellä ja estää sitten hyökkääjän pääsyn sivustolle tulevaisuudessa.

Alla olevissa vaiheissa oletetaan, että hosting-tililläsi on vain yksi verkkosivusto. Jos tilillä on useita sivustoja, ne voidaan myös hakkeroida ja sivusto voidaan hakkeroida niiden kautta. On tarpeen joko siirtää paikka, jossa kunnostustöitä tehdään, erilliselle tilille tai suorittaa kunnostus kaikille tilillä oleville kohteille samanaikaisesti.

Toimintojen järjestys on tärkeä, joten ne on suoritettava täsmälleen siinä järjestyksessä, jossa ne sijaitsevat alla.

  • Välittömästi sen jälkeen, kun havaitaan, että sivusto on hakkeroitu, on välttämätöntä estää vierailijoiden pääsy siihen kokonaan. Tämä ensinnäkin estää hyökkääjää suorittamasta haitallisia toimia sivustolla, ja toiseksi se ei anna hänen häiritä palautustöitä. Tämä vaihe on erittäin tärkeä, koska haitallisten komentosarjojen poistaminen ja hakkeroinnin syyn poistaminen ei tapahdu yhdessä yössä - yleensä se kestää useita tunteja. Jos sivusto on edelleen käytettävissä ulkopuolelta, hyökkääjä voi ladata skriptejä uudelleen sivuston jo tyhjennetylle osalle. Tässä tapauksessa hyökkääjä voi käyttää eri IP-osoitteita yhteyden muodostamiseen, joten pääsyn estäminen vain IP-osoitteiden luetteloon ei toimi. Sen varmistamiseksi, että sivusto puhdistetaan havaituista haitallisista skripteistä, on välttämätöntä estää hyökkääjän pääsy sivustolle kokonaan, mikä voidaan tehdä vain estämällä sivusto kokonaan vierailijoilta. Ota yhteyttä sivustoasi isännöivän isännöinnin tekniseen tukipalveluun estääksesi sen.
  • Kun olet estänyt sivuston, sinun on tarkistettava tietokoneet, joista työskentelit sivuston kanssa nykyaikaisella virustorjuntaohjelmalla, jossa on päivitetyt virustietokannat. Jos sivusto on hakkeroitu varastamalla tilin salasanat viruksen avulla, sinun on varmistettava, että hakkeroidun sivuston kanssa tehdään jatkotyötä tietokoneelta, jossa ei ole viruksia, muuten pääsysalasanojen vaihtamisen jälkeen ne voidaan varastaa uudelleen.
  • Kun olet estänyt sivuston ja tarkistanut virusten varalta, sinun on vaihdettava kaikki tilisi salasanat: pääsy FTP:n kautta, SSH:n kautta sekä pääsy hosting-ohjauspaneeliin. Jos hyökkääjä on päässyt tilitiedostoihin jollakin näistä tavoista, hän ei voi enää tehdä niin salasanan vaihtamisen jälkeen.
  • Salasanojen vaihtamisen jälkeen sinun on tuhottava kaikki palvelinprosessit, jotka ovat käynnissä sillä tilillä, jolla sivustoa ylläpidetään. Hyökkääjän taustalla käynnistämät prosessit voivat tuhoutumatta sijoittaa uudelleen haitallisia skriptejä sivustolle palautustyön jälkeen. Tämän estämiseksi kaikki ennen sivuston estämistä käynnissä olleet prosessit on tuhottava. Sivuston pitäisi olla estetty jo tällä hetkellä, jotta hyökkääjä ei voi käynnistää uusia prosesseja käyttämällä jotakin sivustolla olevista skripteistään. Jos haluat tuhota tililläsi käynnissä olevat prosessit, ota yhteyttä sivustoasi isännöivän isännöinnin tekniseen tukipalveluun.
  • Nyt on mahdotonta tunkeutua sivustoon ulkopuolelta ja voit aloittaa sen palauttamisen.
  • Ennen kuin jatkat toimia, poista kaikki olemassa olevat sivustotiedostot varmistaaksesi, ettei niissä ole haitallisia komentosarjoja tai CMS-komentosarjoja, joihin hyökkääjä on lisännyt haitallista koodia. Tämä vaihe on myös tärkeä, koska kun sivusto palautetaan varmuuskopiosta, ennen palautusta olemassa olevia tiedostoja ei aina poisteta. Jos sivustolle jää vanhoja haitallisia komentosarjoja varmuuskopiosta palauttamisen jälkeen, hyökkääjä voi palata sivustolle. Voit välttää tämän poistamalla kaikki sivuston tiedostot ennen palautuksen suorittamista.
  • Kun olet poistanut kaikki sivuston tiedostot, palauta sivusto varmuuskopiosta, joka on luotu ennen sen hakkerointia. Usein riittää, että palautetaan vain sivuston tiedostot, mutta jos niiden palauttamisen jälkeen havaitaan virheitä sivuston toiminnassa, on sivusto palautettava kokonaan: sekä tiedostot että tietokanta.
  • Kun olet palauttanut varmuuskopiosta, päivitä sisällönhallintajärjestelmä (CMS) ja laajennukset uusimpiin versioihin. Tämä on välttämätöntä, jotta sivustolla ei ole tunnettuja haavoittuvuuksia, joiden kautta se voidaan hakkeroida. Pääsääntöisesti päivitys voidaan tehdä CMS-hallintaosion kautta. Saadakseen täydelliset ohjeet Päivittääksesi sisällönhallintajärjestelmän, sinun on mentävä järjestelmän kehittäjän verkkosivustolle. On tärkeää päivittää paitsi itse CMS, myös kaikki sen laajennukset, koska hakkerointi tapahtuu usein yhdessä CMS-laajennuksessa (esimerkiksi laajennukset, teemat, widgetit jne.) olevan haavoittuvuuden kautta. Tällä hetkellä on vielä mahdotonta poistaa sivuston estoa vierailijoilta, koska se voi silti olla haavoittuvainen. Pääset sivustollesi päivitystä varten ottamalla yhteyttä sivustoasi isännöivän isännöinnin tekniseen tukeen ja pyytämällä lupaa päästä sivustolle vain tietokoneesi IP-osoitteesta. Voit selvittää IP-osoitteesi esimerkiksi osoitteesta inet.yandex.ru.
  • Kun olet päivittänyt sivuston hallintajärjestelmän ja sen laajennukset, siirry sivuston hallintaosioon ja vaihda järjestelmänvalvojan salasana siihen. Varmista, että sivuston käyttäjien joukossa ei ole muita käyttäjiä, joilla on järjestelmänvalvojan oikeudet (hyökkääjä on voinut lisätä heidät), ja jos sellaisia ​​löytyy, poista ne.
  • Nyt kun sivusto on palautettu varmuuskopiosta eikä se sisällä haitallisia skriptejä, sisällönhallintajärjestelmä ja sen laajennukset on päivitetty uusimmat versiot, jossa ei ole haavoittuvuuksia ja sivuston ja isännöintitilin salasanat on muutettu, voit avata sivuston uudelleen vierailijoille.
  • Kaikki edellä mainitut toimenpiteet on suoritettava määritetyn järjestyksen mukaisesti ilman laiminlyöntejä tai muutoksia. Jos toimet suoritetaan virheellisesti, sivustolle voi jäädä haitallisia komentosarjoja tai haavoittuvuuksia, minkä seurauksena hyökkääjä voi hakkeroida sen uudelleen lyhyen ajan kuluttua. Jos yllä olevia vaiheita ei jostain syystä ole mahdollista suorittaa siinä muodossa, jossa ne on ilmoitettu, ota yhteyttä asiantuntijaan sivuston palauttamiseksi hakkeroinnin jälkeen.

    Jotta voit suojata sivustosi toistuvilta hakkeroilta tulevaisuudessa, sinun on noudatettava seuraavia suosituksia:
  • Seuraa sisällönhallintajärjestelmän päivityksiä ja sen laajennuksia kehittäjien verkkosivustoilla ja päivitä ne viipymättä uusimpiin versioihin. Jos päivityksen kommentissa kerrotaan, että se korjaa haavoittuvuuden, asenna päivitys mahdollisimman pian.
  • Työskentele sivuston ja isännöintitilin kanssa vain tietokoneista, jotka on suojattu viruksilta nykyaikaisilla virustorjuntaohjelmilla, joissa on jatkuvasti päivitetyt virustietokannat.
  • Käytä monimutkaisia ​​salasanoja, jotta niitä ei voi arvata sanakirjahaun avulla.
  • Älä tallenna FTP- ja SSH-salasanoja ohjelmiin, joilla voit muodostaa yhteyden sivustoon, äläkä tallenna pääsysalasanaa sivuston hallinta-alueelle ja selaimesi isännöinnin ohjauspaneeliin.
  • Vaihda ajoittain (esimerkiksi kolmen kuukauden välein) sivuston ja isännöintitilin salasanat.
  • Jos tietokoneessa, josta työskentelit sivuston kanssa, havaittiin viruksia, vaihda sivuston ja isännöintitilin salasanat mahdollisimman nopeasti. Sinun on vaihdettava kaikki salasanat: pääsy salasanat FTP:n, SSH:n kautta, salasana sivuston hallintapaneelista sekä salasana hosting-ohjauspaneelista.
  • Älä anna pääsyä sivustolle kolmansille osapuolille, ellet ole varma, että myös he noudattavat näitä ohjeita.
  • Haitallinen koodi päätyy sivustolle huolimattomuudesta tai ilkivaltaisesta tarkoituksesta. Haitallisen koodin tarkoitukset vaihtelevat, mutta olennaisesti se vahingoittaa tai häiritsee verkkosivuston normaalia toimintaa. Jos haluat poistaa haitallisen koodin WordPressistä, sinun on ensin löydettävä se.

    Mikä on haitallinen koodi WordPress-sivustolla?

    Tekijä: ulkomuoto, haitallinen koodi on useimmiten joukko latinalaisten aakkosten kirjaimia ja symboleja. Itse asiassa tämä on salattu koodi, jolla tämä tai tuo toiminto suoritetaan. Toiminnot voivat olla hyvin erilaisia, esimerkiksi uudet viestisi julkaistaan ​​välittömästi kolmannen osapuolen resurssissa. Tämä on pohjimmiltaan sisältösi varastamista. Koodilla on myös muita "tehtäviä", esimerkiksi lähtevien linkkien sijoittaminen sivuston sivuille. Tehtävät voivat olla kaikkein kehittyneimpiä, mutta yksi asia on selvä: haitalliset koodit on etsittävä ja poistettava.

    Miten haitalliset koodit pääsevät verkkosivustolle?

    Sivustolla on myös monia porsaanreikiä koodien pääsylle sivustolle.

  • Useimmiten nämä ovat teemoja ja laajennuksia, jotka on ladattu "vasemmista" resursseista. Tällainen tunkeutuminen on kuitenkin tyypillistä niin sanotuille salatuille linkeille. Selkeä koodi ei päädy sivustolle.
  • Viruksen tunkeutuminen sivustoon hakkeroinnin yhteydessä on vaarallisinta. Pääsääntöisesti sivuston hakkerointi antaa sinun sijoittaa "kertakoodin" lisäksi myös koodin, jossa on haittaohjelmien elementtejä (haittaohjelma). Löydät esimerkiksi koodin ja poistat sen, mutta se palautetaan jonkin ajan kuluttua. Vaihtoehtoja on taas monia.
  • Haluan heti huomauttaa, että tällaisten virusten torjunta on vaikeaa ja manuaalinen poistaminen vaatii tietoa. Ongelmaan on kolme ratkaisua: ensimmäinen ratkaisu on käyttää virustorjuntalaajennuksia, esimerkiksi BulletProof Security -nimistä laajennusta.

    Tämä ratkaisu antaa hyviä tuloksia, mutta vie aikaa, vaikkakin vähän. Haitallisista koodeista, mukaan lukien monimutkaisista viruksista, eroon on olemassa radikaalimpi ratkaisu, tämä on sivuston palauttaminen valmiista varmuuskopiot sivusto.

    Koska hyvä verkkovastaava tekee tämän säännöllisesti, voit palata ei-tartunnan saaneeseen versioon ilman ongelmia. Kolmas ratkaisu on rikkaille ja laiskoille, ota yhteyttä erikoistuneeseen "toimistoon" tai yksittäiseen asiantuntijaan.

    Kuinka etsiä haitallista koodia WordPressissä

    On tärkeää ymmärtää, että WordPressin haitallinen koodi voi olla missä tahansa sivuston tiedostossa, ei välttämättä työteemassa. Hän voi keksiä laajennuksen, teeman tai "kotitekoisen" koodin, joka on otettu Internetistä. On olemassa useita tapoja yrittää löytää haitallista koodia.

    Tapa 1: Manuaalisesti. Selaat kaikkia sivuston tiedostoja ja vertaat niitä tartuttamattoman varmuuskopion tiedostoihin. Jos löydät jonkun toisen koodin, poista se.

    Tapa 2: WordPressin suojauslaajennusten käyttäminen. Esimerkiksi, . Tällä laajennuksella on loistava ominaisuus, joka tarkistaa sivuston tiedostot muiden ihmisten koodin varalta ja laajennus selviää tästä tehtävästä täydellisesti.

    Tapa 3. Jos sinulla on kohtuullinen isännöintituki ja sinusta vaikuttaa siltä, ​​että sivustolla on joku muu, pyydä häntä tarkistamaan sivustosi virustorjuntaohjelmallaan. Heidän raportissaan luetellaan kaikki tartunnan saaneet tiedostot. Avaa seuraavaksi nämä tiedostot sisään tekstieditori ja poista haitallinen koodi.

    Tapa 4. Jos voit työskennellä SSH-yhteydellä sivustohakemistoon, mene eteenpäin, sillä on oma keittiö.

    Tärkeä! Riippumatta siitä, kuinka etsit haitallista koodia, sulje pääsy sivuston tiedostoihin ennen koodin etsimistä ja poistamista (ota ylläpitotila käyttöön). Muista koodit, jotka itse palautetaan, kun ne poistetaan.

    Etsi haitallisia koodeja eval-toiminnolla

    PHP:ssä on sellainen toiminto nimeltä eval. Sen avulla voit suorittaa minkä tahansa koodin rivillään. Lisäksi koodi voidaan salata. Koodauksesta johtuen haitallinen koodi näyttää kirjaimien ja symbolien joukolta. Kaksi suosittua koodausta ovat:

  • Base64;
  • Rot13.
  • Vastaavasti näissä koodauksissa eval-funktio näyttää tältä:

    • eval(base64_decode(...))
    • eval (str_rot13 (...)) //sisäisissä lainausmerkeissä, pitkiä, epäselviä kirjain- ja symbolijoukkoja..

    Algoritmi haitallisen koodin etsimiseen eval-toiminnolla on seuraava (työskentely hallintapaneelista):

    • mene sivuston editoriin (Ulkoasu→Muokkaaja).
    • kopioi functions.php-tiedosto.
    • avaa se tekstieditorissa (esimerkiksi Notepad++) ja etsi sana: eval.
    • Jos löydät sen, älä kiirehdi poistamaan mitään. Sinun on ymmärrettävä, mitä tämä toiminto "pyytää" suoritettavan. Tämän ymmärtämiseksi koodi on purettava. Koodauksen purkamiseen on olemassa online-työkaluja, joita kutsutaan dekoodereiksi.
    Dekooderit/Enkooderit

    Dekooderit toimivat yksinkertaisesti. Kopioit koodin, jonka salauksen haluat purkaa, liität sen dekooderikenttään ja purat sen.

    Tätä kirjoittaessani en löytänyt WordPressistä yhtään salattua koodia. Löysin koodin Joomlan sivuilta. Periaatteessa dekoodauksen ymmärtämisessä ei ole eroa. Katsotaanpa valokuvaa.

    Kuten kuvasta näkyy, eval-toiminto ei näyttänyt dekoodauksen jälkeen kauheaa koodia, joka uhkaa sivuston turvallisuutta, vaan salatun tekijänoikeuslinkin mallin kirjoittajalta. Se voidaan myös poistaa, mutta se tulee takaisin mallin päivityksen jälkeen, jos et käytä .

    Lopuksi haluan huomauttaa, jotta virus ei pääse sivustolle:

    • WordPressin haitallinen koodi sisältää usein teemoja ja laajennuksia. Siksi älä asenna malleja ja laajennuksia "vasemmalta", vahvistamattomista resursseista, ja jos asennat, tarkista ne huolellisesti PHP:n linkkien ja johtavien toimintojen varalta. Kun olet asentanut laajennuksia ja teemoja "laittomista" lähteistä, tarkista sivusto virustorjuntaohjelmistolla.
    • Muista tehdä ajoittain varmuuskopioita ja tehdä muita.
    Haitallinen JavaScript

    Mielipiteeni, jonka mukaan selaintyökalujen avulla on helpompi ja tehokkaampi suojautua haitallisilta selainskripteiltä (tallennettuja XSS-hyökkäyksiä) vastaan, totesin aiemmin: . Selaimen JavaScript-suojaus, joka koostuu suodatuskoodin lisäämisestä verkkosivuston html-sivuille, on oletettavasti luotettava, mutta tällaisen suojauksen olemassaolo ei kuitenkaan poista tarvetta käyttää myös palvelinsuodatinta. Samoja XSS-hyökkäyksiä varten voit järjestää ylimääräisen puolustuslinjan palvelimelle. On myös muistettava, että hyökkääjä saattaa lisätä sivustolta lähetettyyn HTML-viestiin ei selainpohjaisia, vaan palvelinpuolen komentosarjoja (php), joita selain ei pysty tunnistamaan.

    Hyökkäävä skripti, olipa se selainpohjainen tai palvelinpohjainen, on ohjelma, täytyy ajatella, että ohjelmalla on aina symbolisia eroja "puhtaan" html:ään verrattuna. Yritetään löytää tällaisia ​​eroja ja käyttää niitä HTML-suodattimen rakentamiseen palvelimelle. Alla on esimerkkejä haitallisesta JavaScriptistä.

    XSS:

    Jotain tekstiä


    Jotain tekstiä

    Salattu XSS:

    Jotain tekstiä


    Jotain tekstiä

    Selaimet palauttavat tekstiä merkkiprimitiiveistä, jotka eivät ole vain html-säilöissä (alku- ja sulkemistunnisteiden välissä), vaan myös itse tunnisteiden sisällä (välissä< и >). URL-koodaus on sallittu http-osoitteissa. Tämä vaikeuttaa haitallisen koodin tunnistamista palvelinpuolella, koska sama merkkijono voidaan esittää eri tavoin.

    XSS-madot:

    "+innerHTML.slice(action= (method="post")+.php",155)))">





    alert("xss");with(new XMLHttpRequest)open("POST","post.php"),lähetä("content="+_.outerHTML)

    Yllä olevat XSS-madot ovat vain muutamia niistä monista, jotka lähetettiin Robert Hansenin (alias RSnake) tammikuussa 2008 lyhimmälle haitalliselle JavaScript-matolle (kilpailun tulokset).

    Merkkejä XSS-hyökkäyksestä

    XSS-skripti on ohjelma, joka käyttää DOM-objekteja (Document Object Model) ja niiden menetelmiä. Muuten se ei todennäköisesti ole millään tavalla haitallista. Esimerkiksi JavaScript-merkkijono
    onckick="var a = "xss""
    ei vaikuta asiakirjaobjektin malliin, joten vaikka se olisi upotettu html-tunnisteeseen, tällainen merkkijono on vaaraton. Vain manipuloimalla HTML-dokumenttiobjekteja ja niiden menetelmiä hakkeri voi aiheuttaa merkittävää haittaa sivustolle. Esimerkiksi linja
    onmousemove="document.getElementsByTagName("body").innerHTML="XSS""
    korvaa jo sivun sisällön.

    Merkki pääsystä DOM-menetelmiin ovat sulut sekä pisteet yhtäläisyysmerkin vasemmalla puolella. Sulkuja voidaan käyttää myös html:ssä värin asettamiseen rgb()-muodossa, mutta html:n kirjasin- ja taustavärit asetetaan ainakin kolmella muulla tavalla. Siksi sulkeet voidaan uhrata vaarantamatta html-tekstin ilmaisukykyä. On hyväksyttävä pääsääntöisesti, että sulut ovat tagin sisällä (eli välissä< и >) - tämä on erittäin vaarallista, jos saamme viestin käyttäjältä palvelimella, tämä viesti sisältää hakasulkeet tunnisteiden sisällä, niin sopivin asia meidän pitäisi tehdä on estää tällainen viesti.

    Piste voi sisältyä html-tunnisteisiin: kun määritetään linkin osoite (tag ); määritettäessä html-elementtien kokoa (style="height:1.5in; width:2.5in;" ). Mutta muodon merkkijonot
    kirjainpiste on yhtä suuri
    ei voi olla html-tunnisteissa. Jos määritetty sekvenssi on html-tunnisteen sisällä, käyttäjän lähettämä viesti sisältää todennäköisimmin komentosarjan ja se tulee estää.

    Toinen ilmeinen vaaramerkki on "+" -symboli tagin sisällä. Komentosarjattomassa html:ssä ei ole sellaista. Jos löydämme tunnisteiden sisältä plussaa, estämme viestin armottomasti.

    Jos haluat salata html-tunnisteiden sisällä olevilla merkkiprimitiiveillä, hyvää tarkoittava sivuston käyttäjä lisää kommentin käyttämällä visuaalinen editori, ei tule koskaan juoksemaan. Symbolisten primitiivien käyttö tunnisteissa ei tuota etuja lisäilmaisukeinojen muodossa, se vaatii vain lisää kirjoitusaikaa. Useimmissa tapauksissa luulisi, että hyvää tarkoittava käyttäjä ei edes tiedä, että HTML:ssä on tiettyjä merkin primitiivisiä. Tästä syystä sääntö: tunnisteen sisällä oleva et-merkki on todiste sivustoa vastaan ​​tehdystä hyökkäyksestä. Vastaavasti, jos näemme tämän, estämme viestin.

    Samanlainen sääntö tulisi soveltaa "%"-symboliin, jota voidaan käyttää url-koodauksessa. Prosentteja käytetään kuitenkin myös "puhtaassa" html:ssä elementtien suhteellisten koon asettamiseen. Vaaralliset yhdistelmät ovat sellaisia, joissa "%"-merkkiä seuraa välittömästi kirjain tai numero.

    Palvelimen komentosarjojen neutralointi

    Toisin kuin selaimissa käytettävät JavaScript-tulkit, palvelimen PHP-tulkki ei salli vapauksia kirjoitettaessa ohjelmatekstiä. Siksi mahdollisen palvelinskriptin neutraloimiseksi riittää, että käyttäjän HTML-viestissä korvataan kokonaan kaikki PHP-ohjelmaa kirjoitettaessa välttämättömät merkit HTML-primitiivillään. Ensimmäiset korvattavat merkit ovat dollari ja alaviiva, piste, pyöreä, neliö ja aaltosulkeet, plus- ja miinusmerkit, kenoviiva.

    PHP-suodatin HTML-viesteille

    $viesti on visuaalisesta editorista palvelimelle vastaanotettu html-viesti.

    // muista viestin pituus $lenmessage = strlen($message); // leikkaa pois kommenttitunniste $message = preg_replace("//", "", $message); // Leikkaa pois kaikki tagit, joissa "src"-attribuutti viittaa ulkoiseen resurssiin $message = preg_replace("/]+?src[\w\W]+\/\/[^>]+?>/i" , " ", $viesti); // leikkaa kaikki tunnisteet, jotka sisältävät minkä tahansa merkin paitsi: - a-z 0-9 / . : ; " = % # välilyönti $viesti = preg_replace("/]+[^->a-z0-9\/\.\:\;\"\=\%\#\s]+[^>]+?> /i", "", $viesti); // leikkaa pois kaikki tagit, jotka sisältävät sekvenssin ". a-z =" $viesti = preg_replace("/]+?\.+?\=[^>]+?>/i", "", $viesti); // leikkaa pois kaikki tagit, jotka sisältävät sekvenssin "% a-z" tai "% 0-9" $message = preg_replace("/]+?\%+?[^>]+?>/i", "", $ viesti); // leikkaa pois kaikki tagit, jotka sisältävät sekvenssin "script" tai "js:" $message = preg_replace("/]*?script[^>]*?>/i", "", $message); $viesti = preg_replace("/]*?js:[^>]*?>/i", "", $viesti); // leikkaa pois kaikki tagit, jotka alkavat muulla kuin "a-z" tai "/" merkillä $message = preg_replace("/]*?>/i", "", $message); // tarkista: jos viestiä lyhennetään, lopeta ohjelma $lenmessage2 = strlen($message); if ($lenmessage != $lenmessage2) ( print "Viestiä ei voi lisätä"; exit; ) // suorittaa vaarallisten merkkien korvaaminen päästä päähän niitä vastaavilla primitiiveillä $message = str_replace("$", "$" , $viesti); $viesti = str_replace("_", "_", $viesti); $viesti = str_replace(".", ".", $viesti); $viesti = str_replace(chr(92), "\", $viesti); // \ $viesti = str_replace("(", "(", $viesti); $viesti = str_korvaa()", ")", $viesti); $viesti = str_replace("[", "[", $viesti); $viesti = str_replace("]", "]", $viesti); $viesti = str_replace("(", "(", $viesti); $viesti = str_korvaa()", ")", $viesti); $viesti = str_replace("?", "?", $viesti); // nyt viesti on vahvistettu, siinä olevat skriptit on neutraloitu

    On huomattava, että suodatin ei poista parillisia tunnisteita. Sanotaan, että saimme
    Klikkaa tästä!
    Suodatin leikkaa vain merkin, mutta pariksi liitetty (sulkeva) tagi säilyy. Jos lähetät selaimeen viestejä, jotka sisältävät tunnisteita ilman vastaavia pareja, saatat kohdata ongelmia sivuston "vinoutumisen" muodossa. Ei tiedetä, mihin avaustunnisteeseen selain vastaa jäljellä olevaa paritonta sulkevaa tagia. Siksi ja myös turvallisuussyistä viestejä, joissa suodatin on leikkaanut jotain pois, ei tule lähettää selaimeen ollenkaan. On parempi tulostaa esimerkiksi "Viestiä ei voitu lisätä" ja poistua ohjelmasta.

    Viestin odotetaan kirjoitettavan tiedostoon (ei tietokantaan).

    Keskustelu

    Olen kiitollinen kritiikistä. Kirjoita tukifoorumiin -osioon

    
    Yläosa