SQL injekcijos išpuoliai kelia milžinišką pavojų žiniatinklio programoms, kurios priklauso nuo duomenų bazės duomenų generavimo, siekiant generuoti dinaminį turinį. Tokio pobūdžio atakoje hakerai manipuliuoja žiniatinklio programa bandydami įterpti savo SQL komandas į tuos, kuriuos išleido duomenų bazė. Pavyzdžiui, žr. Straipsnį "SQL injekcijos atakos duomenų bazėms". Šiame straipsnyje apžvelgiame kelis būdus, kaip galite išbandyti žiniatinklio programas, kad nustatytumėte, ar jie pažeidžiami SQL injekcijos atakų.
Automatinis SQL injekcijos nuskaitymas
Viena galimybė yra naudoti automatizuotą žiniatinklio programų pažeidžiamumo skanerį, pvz., HP "WebInspect", "IBM" "AppScan" arba "Cenzic's Hailstorm". Šie įrankiai siūlo lengvai ir automatizuotus būdus analizuoti jūsų žiniatinklio programas potencialiems SQL injekcijos pažeidžiamiems. Tačiau jie yra gana brangūs, važiuojant iki 25 000 JAV dolerių už sėdynę.
Rankiniai SQL injekcijos tyrimai
Kas yra blogas programų kūrėjas? Galite iš tikrųjų paleisti keletą pagrindinių bandymų, kad įvertintų savo žiniatinklio programas SQL injekcijos pažeidžiamumui naudodami ne daugiau kaip žiniatinklio naršyklę. Pirma, atsargumo žodis: testai, kuriuos mes apibūdiname, tik ieškodami pagrindinių SQL injekcijos trūkumų. Jie nebus aptikti pažangių technologijų ir yra šiek tiek varginantis naudoti. Jei galite tai sau leisti, eikite su automatiniu skaitytuvu. Tačiau, jei negalite tvarkyti šios kainos žyma, rankinis bandymas yra puikus pirmas žingsnis.Lengviausias būdas įvertinti, ar programa yra pažeidžiama, yra eksperimentuoti su neužkrečiamais įpurškimo išpuoliais, kurie iš tiesų neturės žalos jūsų duomenų bazei, jei jie bus sėkmingi, tačiau pateiks jums įrodymų, kad turite išspręsti problemą. Pavyzdžiui, tarkime, kad turėjote paprastą žiniatinklio programą, kuria ieškote asmens duomenų bazėje ir pateikia kontaktinę informaciją. Šiame puslapyje gali būti naudojamas šis URL formatas: http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike
Mes galime manyti, kad šiame puslapyje atliekama duomenų bazės paieška, naudojant užklausą, panašią į šią: PASIRINKITE telefoną
Iš katalogo
KUR lastname = 'chapple' ir firstname = 'mike'
Išbandykime šiek tiek. Atsižvelgdami į mūsų prielaidą, galime lengvai pakeisti URL, kuriame bandomi SQL injekcijos išpuoliai: http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+AND+(select+count(*)+from+fake)+%3e0+OR+'1'%3d'1
Jei žiniatinklio programa nebuvo tinkamai apsaugota nuo SQL injekcijos, ji tiesiog įveda šį klaidingą vardą į SQL, kurį ji vykdo prieš duomenų bazę, todėl: PASIRINKITE telefoną
Iš katalogo
KUR lastname = 'chapple' ir firstname = 'mike'
IR (pasirinkite skaičių (*) iš suklastotų)> 0
ARBA '1' = '1'
Pastebėsite, kad aukščiau pateikta sintaksė yra šiek tiek kitokia nei pradiniame URL. Mes nusprendėme konvertuoti URL koduotą kintamąjį jų ASCII atitikmenims, kad būtų lengviau sekti pavyzdžiu. Pavyzdžiui,% 3d yra kodavimo simbolis "=". Panašiais tikslais taip pat pridėjome keletą eilučių. Bandymas atliekamas, kai bandote įkelti tinklalapį naudodami anksčiau nurodytą URL. Jei žiniatinklio programa gerai elgiasi, ji išstumia atskirus įvesties kabučių kodus prieš perduodama užklausą į duomenų bazę. Tai paprasčiausiai sukelia keistą paiešką kažkam su pavadinimu, kuris apima SQL krūvą. Programoje pamatysite klaidos pranešimą, panašų į žemiau esantį. Klaida: nerasta vartotojo su pavadinimu mike + AND + (select + count (*) + from + fake) +% 3e0 + OR + 1% 3d1
Chapple!
Kita vertus, jei programa yra pažeidžiama SQL injekcijos, jis bus perduoti pareiškimą tiesiai į duomenų bazę, todėl viena iš dviejų galimybių. Pirma, jei jūsų serveryje yra išsamių klaidų pranešimų (kurie neturėtų būti), pamatysite kažką panašaus į šį: "Microsoft OLE DB" teikėjas "ODBC" tvarkyklių klaida "80040e37"
Microsoft ODBC SQL Server Driver SQL Server Netinkamas objekto pavadinimas "netikras".
/directory.asp, eilutė 13
Kita vertus, jei jūsų žiniatinklio serveryje nėra išsamių klaidų pranešimų, gausite daugiau bendrinės klaidos, pavyzdžiui: Vidinė serverio klaidaServeris susidūrė su vidine klaida ar neteisinga konfigūracija ir negalėjo įvykdyti jūsų užklausos.
Prašome susisiekti su serverio administratoriumi, kad galėtumėte pranešti apie klaidos atsiradimo laiką ir apie tai, ką galėjote padaryti, kad galėjote sukelti klaidą.
Daugiau informacijos apie šią klaidą galite rasti serverio klaidų žurnale.
Jei gausite vieną iš dviejų aukščiau nurodytų klaidų, jūsų programa yra pažeidžiama SQL injekcijos ataka. Kai kurie veiksmai, kuriuos galite imtis, kad apsaugotumėte programas nuo SQL injekcijos atakų, yra šie: Rezultatų įvertinimas