26Aug

Kaip įsilaužėliai perima interneto svetaines su SQL injekcijos ir DDoS

click fraud protection

Net jei esate tik laisvai stebėję "Anonymous" ir "LulzSec" įsilaužėlių grupių įvykius, tikriausiai girdėjote apie interneto svetaines ir paslaugas, kurios buvo įsilaužtos, kaip ir garsūs "Sony" hacks. Ar kada nors susimąstėte, kaip jie tai daro?

Yra keletas įrankių ir metodų, kuriuos naudoja šios grupės, ir, nors mes neketiname pateikti jums vadovo, kad tai padarytumėte patys, naudinga suprasti, kas vyksta. Du iš išpuolių, kuriuos jūs nuolat girdite apie jų naudojimą, yra "(Distributed) Denial of Service"( DDoS) ir "SQL injekcijos"( SQLI).Štai kaip jie veikia.

Image by xkcd

Denial of Service Attack

Kas tai yra?

"Paslaugų atsisakymas"( kartais vadinamas "paskirstytu tarnybos atsisakymu" arba "DDoS") atakuoja, kai sistema, šiuo atveju žiniatinklio serveris, vienu metu gauna tiek daug užklausų, kad serverio ištekliai yra perkrauti, sistema paprasčiausiai užrakinaįjungiamas ir išjungiamas. Sėkmingo DDoS atakos tikslas ir rezultatas yra tai, kad tiksliniuose serveriuose esančios svetainės nepasiekiamos teisėtų eismo užklausų.

instagram viewer

Kaip tai veikia?

DDoS atakos logistika gali būti geriausiai paaiškinta pavyzdžiu.

Įsivaizduokite, kad milijonas žmonių( užpuolikai) kartu su tikslu užkirsti kelią įmonės "X" verslui užima savo skambučių centrą.Puolėjai koordinuoja, kad antradienį, 9 val., Jie visi skambins "Company X" telefono numeriu. Labiausiai tikėtina, kad "X" telefono sistema negalės vienu metu tvarkyti milijono skambučių, taigi visos įeinančios linijos bus užblokuotos užpuolikų.Rezultatas yra tas, kad teisėti klientų skambučiai( t.y. tie, kurie nėra užpuolikai) nepasiekia, nes telefono sistema yra susieta su užpuolikų skambučiais. Taigi iš esmės "X" bendrovė gali prarasti verslą dėl teisėtų prašymų, kurių negalima pasiekti.

"DDoS" ataka žiniatinklio serveriu veikia taip pat. Kadangi praktiškai nėra jokio būdo žinoti, koks srautas yra gaunamas iš teisėtų užklausų ir prieglobos, kol žiniatinklio serveris apdoroja užklausą, šis išpuolis paprastai yra labai veiksmingas.

Užpuolimo vykdymas

Dėl DDoS atakos "grubios jėgos" pobūdžio reikia tuo pat metu turėti daugybę kompiuterių, skirtų atakuoti. Pavyzdžiui, persvarsčius mūsų skambučių centro funkciją, visiems užpuolikai turėtų žinoti, kad skambinti 9 val. Ir tuo metu iš tikrųjų skambinti. Nors šis principas tikrai veiktų, kai kalbama apie puolimą žiniatinklio serverio, jis tampa žymiai lengvesnis, kai bus naudojami zombių kompiuteriai, o ne tik dirbtiniai kompiuteriai.

Kaip jūs tikriausiai žinote, yra daugybė kenkėjiškų programų ir trojanų variantų, kurie vieną kartą jūsų sistemoje lieka neaktyvūs ir retkarčiais "telefonu namuose" instrukcijoms. Pavyzdžiui, viena iš šių instrukcijų galėtų būti pakartotinių užklausų siuntimas "Company X" žiniatinklio serveriui 9:00.Taigi, atlikus vieną atnaujinimą atitinkamos kenkėjiškos programos namų aplinkoje, vienas užpuolikas gali greitai suderinti šimtus tūkstančių pažeistų kompiuterių, kad atliktų didžiulį DDoS ataką.

Zombių kompiuterių naudojimo grožis yra ne tik jo veiksmingumas, bet ir jo anonimiškumas, nes užpuolikas iš tiesų neturi naudoti savo kompiuterio, kad įvykdytų ataką.

SQL Injection Attack

Kas tai yra?

"SQL injekcijos"( SQLI) ataka yra išnaudotojas, kuris naudojasi prastais interneto kūrimo metodais ir paprastai kartu su klaidingu duomenų bazės saugumu. Sėkmingo atakos rezultatas gali būti nuo apsimestinės vartotojo abonemento iki visiškos atitinkamos duomenų bazės ar serverio kompromiso. Skirtingai nuo DDoS atakos, SQLI ataka yra visiškai ir lengvai išvengiama, jei tinklalapio programa tinkamai užprogramuota.

Užpuolimo vykdymas

Kiekvieną kartą, kai prisijungiate prie interneto ir įveskite savo vartotojo vardą ir slaptažodį, norėdami patikrinti savo kredencialus, žiniatinklio programa gali vykdyti tokią užklausą kaip:

SELECT UserID iš naudotojų WHERE UserName = 'myuser' AND Password= "mypass";

Pastaba: SQL užklausoje esančios eilutės reikšmės turi būti pridedamos prie vienos kabutės, todėl jos rodomos aplink vartotojo įvestas vertes.

Taigi įvesto vartotojo vardo( myuser) ir slaptažodžio( mypass) derinys turi atitikti įrašą lentelėje Vartotojų, kad naudotojo ID būtų grąžintas. Jei nėra atitikties, nė vienas UserID negrąžinamas, todėl prisijungimo duomenys yra netinkami. Nors konkretus įgyvendinimas gali skirtis, mechanika yra gana standartinė.

Taigi dabar pažvelkime į šablono autentifikavimo užklausą, kurią mes galime pakeisti vertes, kurias vartotojas įveda žiniatinklio formoje:

SELECT UserID iš naudotojų WHERE UserName = '[user]' AND Password = '[pass]'

Iš pirmo žvilgsnio taigali atrodyti kaip paprastas ir logiškas žingsnis norint lengvai patvirtinti vartotojus, tačiau jei šiame šablone atliekamas paprastas naudotojo įvestų reikšmių pakeitimas, jis yra jautrus SQLI atakoms.

Pavyzdžiui, tarkime, kad vartotojo vardo lauke įrašytas "myuser'-", o slaptažodis įvesti "neteisingas".Naudodamiesi paprastu pakeitimu mūsų šablono užklausoje, mes galėtume tai gauti:

SELECT UserID iš naudotojų WHERE UserName = 'myuser' - 'AND Password =' ​​wrongpass '

Šio teiginio raktas yra dviejų brūkšnių įtraukimas( -).Tai yra "SQL" teiginių pradžios komentarų ženklais, todėl niekas, atsirandantis po dviejų brūkšnių( imtinai), bus ignoruojamas. Iš esmės, pirmiau minėtą užklausą duomenų bazė vykdo kaip:

SELECT vartotojoidą iš naudotojų WHERE UserName = 'myuser'

Čia akivaizdu, kad trūksta slaptažodžio patikrinimo.Įtraukdami du brūkšnius kaip naudotojo lauko dalį, mes visiškai apeitėme slaptažodžio tikrinimo būklę ir galėjome prisijungti kaip "myuser", nežinodami atitinkamo slaptažodžio.Šis veiksmas manipuliuoti užklausa generuoti nenumatytus rezultatus yra SQL injekcijos ataka.

Kokią žalą galima padaryti?

SQL injekcijos ataka sukeliama dėl aplaidžių ir neatsakingų programų kodavimo ir yra visiškai išvengiama( kurią mes apimsime vienu metu), tačiau galimas žalos mastas priklauso nuo duomenų bazės nustatymo. Kad žiniatinklio programa galėtų bendrauti su duomenų centru, programa turi pateikti prisijungimą prie duomenų bazės( pastaba, tai skiriasi nuo vartotojo prisijungimo prie pačios svetainės).Atsižvelgiant į tai, kokie leidimai reikalingi žiniatinklio programai, ši atitinkama duomenų bazės sąskaita gali reikalauti bet kokio leidimo skaityti / rašyti esančiose lentelėse tik prie visiškos prieigos prie duomenų bazės. Jei dabar nėra aišku, keletas pavyzdžių turėtų padėti paaiškinti.

Remiantis aukščiau pateiktu pavyzdžiu, galite pamatyti, kad įvesdami, pvz., "Savo vartotojo" - "," admin "-" ar bet kurį kitą vartotojo vardą, mes galime nedelsiant prisijungti prie svetainės, nes šis vartotojas nežinodamas slaptažodžio. Kai mes esame sistemoje, nežinome, kad mes iš tiesų nėra tas vartotojas, todėl turime visą prieigą prie atitinkamos paskyros. Duomenų bazės leidimai nesuteikia tokio saugumo tinklo, nes paprastai svetainėje turi būti bent jau skaitymo / rašymo prieigos prie atitinkamos duomenų bazės.

Dabar darome prielaidą, kad tinklalapis visiškai kontroliuoja savo atitinkamą duomenų bazę, kuri suteikia galimybę ištrinti įrašus, pridėti / pašalinti lenteles, pridėti naujas saugos paskyras ir tt Svarbu pažymėti, kad kai kurioms interneto programoms gali reikėti tokio tipo leidimo, taigiautomatiškai nėra blogo dalyko, kuris suteikia visišką kontrolę.

Taigi, norėdami parodyti žalą, kuri gali būti padaryta šioje situacijoje, mes panaudosime aukščiau pateiktą pavyzdį, įvesdami žemiau nurodytus vartotojo vardo laukus: "Robert"; DROP TABLE Users - ".Po paprasto pakeitimo autentiškumo užklausa tampa:

SELECT UserID iš naudotojų WHERE UserName = 'Robert';DROP TABLE Vartotojai; - 'AND Password =' ​​nepastebimas '

Pastaba: kabliataškis yra SQL užklausoje, naudojamas norint parodyti konkretaus teiginio pabaigą ir naujo teiginio pradžią.

, kuris paleidžiamas iš duomenų bazės kaip:

SELECT userID iš naudotojų WHERE UserName = 'Robert'

DROP TABLE Vartotojai

Taigi, taip pat mes naudojome SQLI ataką, kad ištrintume visą vartotojų lentelę.

Žinoma, galima padaryti daug blogiau, nes, priklausomai nuo leidžiamų SQL leidimų, užpuolikas gali keisti vertes, iškrovimo stalus( arba visą pačią duomenų bazę) į teksto failą, kurti naujas prisijungimo paskyras ar netgi užgrobti visą duomenų bazės diegimą.

užkirsti kelią SQL įpurškimo atakai

Kaip minėjome keletą kartų anksčiau, SQL injekcijos ataka yra lengvai išvengiama. Viena iš pagrindinių interneto svetainių kūrimo taisyklių yra tai, kad jūs niekada aklai nesuprantate naudotojo informacijos, kaip mes padarėme, kai atlikome paprastą pakeitimą aukščiau pateiktoje šablono užklausoje.

SQLI ataka yra lengvai sutriuškinta dėl to, ką vadinama jūsų sąnaudų dezinfekavimu( arba ištrūkimu).Išvalymo procesas iš tiesų yra gana trivialus, nes viskas iš esmės yra tai, kad kiekvienas vidinis vieno simbolio( ") simbolis tinkamai tvarkomas taip, kad jis nebūtų naudojamas per anksti nutraukti SQL eilutės viduje esančią eilutę.

Pavyzdžiui, jei norite ieškoti "O'neil" duomenų bazėje, negalėjote naudoti paprasto pakeitimo, nes vienintelė citata po O sukeltų eilutę anksčiau laiko. Vietoj to jūs jį išvalysite naudodamiesi atitinkamos duomenų bazės evakuacijos ženklu. Darome prielaidą, kad eskizinis simbolis, skirtas eilinei vienkartinei citatai, yra kiekvienos citatos su simboliu simbolis. Taigi "O'neal" bus išvalytas kaip "O \" neil ".

Šis paprastas sanitarijos veiksmas gana daug užkerta kelią SQLI atakoms. Norėdami iliustruoti, peržiūrėkime ankstesnius pavyzdžius ir pamatysime gautus užklausimus, kai naudotojo įvestis bus išvalyta.

myuser "- / klaida :

PASIRINKITE naudotojo ID iš naudotojų WHERE UserName = 'myuser' - 'AND Password =' ​​nepasakomas '

Kadangi vienintelė citata po mano vartotojo ištrinta( tai reiškia, kad tai laikoma dalimi tikslovertė), duomenų bazė pažodžiui ieškos vartotojo vardo "myuser" - ".Be to, kadangi brūkšniai yra įtraukti į stringą, o ne pats SQL, jie bus laikomi tikslinės vertės dalimi, o ne interpretuojami kaip SQL komentaras.

Robert ';DROP TABLE Vartotojai - / klaida :

PASIRINKITE naudotojo ID iš vartotojų, kur vartotojo vardas = 'Robert';DROP TABLE Vartotojai; - 'AND Password =' ​​nepasakyta '

. Tiesiog ištrindami vieną kodą po Roberto, tiek kabliataškis, tiek brūkšniai yra vartotojo vardo paieškos eilutėje, taigi duomenų bazė tiesiog ieškos "Robert"; DROP TABLE Users;- "vietoj to, kaip atlikti lentelę, ištrinti.

Santrauka

Nors žiniatinklio ataka vystosi ir tampa vis sudėtingesnė arba sutelkiama į kitą įvažiavimo vietą, svarbu nepamiršti, kad apsaugoti nuo išbandytų ir tikru išpuolių, kurie buvo įkvėpimas kelių laisvai prieinamų "įsilaužėlių" įrankių, skirtų jų išnaudojimui.

Negalima lengvai išvengti tam tikrų tipų išpuolių, pvz., DDoS, o kiti, pavyzdžiui, SQLI, gali. Tačiau žala, kurią gali sukelti šios rūšies išpuoliai, gali būti nuo bet kokių nepatogumų iki katastrofiškų, priklausomai nuo atliktų atsargumo priemonių.