SQL injekcijas uzbrukumi rada milzīgus riskus tīmekļa lietojumprogrammām, kas ir atkarīgas no datubāzes backend, lai radītu dinamisku saturu. Šajā veida uzbrukumā hakeri manipulē ar tīmekļa lietojumprogrammu, mēģinot ievadīt savas SQL komandas datubāzes izdotajās versijās. Piemēram, skatiet rakstu SQL injekcijas uzbrukumi datu bāzēm. Šajā rakstā mēs apskatām vairākos veidos, kā pārbaudīt savas tīmekļa lietojumprogrammas, lai noteiktu, vai tās ir neaizsargātas pret SQL injekcijas uzbrukumiem.
Automātiska SQL injekcijas skenēšana
Viena iespēja ir automatizēta tīmekļa lietojumprogrammas neaizsargātības skenera izmantošana, piemēram, HP WebInspect, IBM AppScan vai Cenzic's Hailstorm. Visi šie rīki piedāvā vienkāršus, automatizētus veidus, kā analizēt jūsu tīmekļa lietojumprogrammas iespējamām SQL injekcijas ievainojamībām. Tomēr tie ir diezgan dārgi, un tie darbojas līdz 25 000 ASV dolāriem uz vienu vietu.
Manuāli SQL injekcijas testi
Kāds ir slikts lietojumprogrammu izstrādātājs? Varat faktiski izpildīt dažus pamata testus, lai novērtētu jūsu tīmekļa lietojumprogrammas SQL Injection ievainojamībai, izmantojot neko vairāk kā tīmekļa pārlūku. Pirmkārt, vārds piesardzība: testi, mēs aprakstīts tikai meklēt pamata SQL Injection trūkumus. Viņi nekontrolē progresīvus tehniskos paņēmienus un ir nedaudz nogurdinoši lietojami. Ja jūs to varat atļauties, dodieties ar automatizētu skeneri. Tomēr, ja jūs nevarat rīkoties ar cenu marķējumu, manuāla pārbaude ir lielisks pirmais solis.Vieglākais veids, kā novērtēt, vai lietojumprogramma ir neaizsargāta, ir eksperimentēt ar nekaitīgiem injekcijas uzbrukumiem, kas patiešām nekaitēs jūsu datubāzei, ja tie būs veiksmīgi, bet sniegs jums pierādījumus, ka jums ir nepieciešams, lai novērstu problēmu. Piemēram, pieņemsim, ka jums ir vienkārša tīmekļa lietojumprogramma, kas datu bāzē meklē personu un sniedz kontaktinformāciju. Šajā lapā var izmantot šādu URL formātu: http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike
Mēs varam pieņemt, ka šī lapa veic datu bāzes meklēšanu, izmantojot vaicājumu, kas ir līdzīga šādai: Izvēlieties tālruni
NO katalogs
KUR Lastname = 'Chapple' un pirmāsvārds = 'Mike'
Let's eksperimentēt ar šo mazliet. Ņemot vērā mūsu pieņēmumu, mēs varam veikt vienkāršas izmaiņas URL, kas pārbauda SQL injekcijas uzbrukumus: http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+AND+(select+count(*)+from+fake)+%3e0+OR+'1'%3d'1
Ja tīmekļa lietojumprogramma nav pareizi aizsargāta pret SQL injekciju, tā vienkārši pievieno šo viltus vārdu SQL deklarācijā, kuru tā izpilda pret datubāzi, kā rezultātā: Izvēlieties tālruni
NO katalogs
KUR Lastname = 'Chapple' un pirmāsvārds = 'Mike'
UN (atlasiet skaitli (*) no viltus)> 0
VAI "1" = "1"
Jūs ievērosiet, ka iepriekš minētā sintakse ir nedaudz atšķirīga no sākotnējā URL. Mēs ņēmām brīvību pārveidot URL kodēta mainīgo to ASCII ekvivalentus, lai būtu vieglāk sekot šim piemēram. Piemēram,% 3d ir koda zīme "=". Līdzīgiem mērķiem mēs arī pievienojām dažus līniju pārtraukumus. Tests rodas, mēģinot ielādēt tīmekļa vietni ar iepriekš minēto URL. Ja tīmekļa lietojumprogramma ir laba rīcība, pirms ievades vaicājuma datu bāzei tiek izlaistas no ievades ievadītās vienotās cenas. Tas vienkārši radīs dīvainu uzmeklēšanu kādam ar vārdu, kas ietver SQL ķekarus. Programmā parādīsies kļūdas ziņojums, kas ir līdzīgs tālāk norādītajam. Kļūda: neviens lietotājs nav atrasts ar nosaukumu mike + AND + (select + count (*) + from + fake) +% 3e0 + OR + 1% 3d1
Chapple!
No otras puses, ja lietojumprogramma ir neaizsargāta pret SQL injekciju, tā šo paziņojumu nodos tieši datu bāzē, tādējādi iegūstot vienu no divām iespējām. Pirmkārt, ja jūsu serverī ir iespējoti detalizēti kļūdu ziņojumi (kurus nevajag), jūs redzēsit kaut ko līdzīgu: Microsoft OLE DB ODBC draiveru draiveru kļūda '80040e37'
Microsoft ODBC SQL Server Driver SQL Server Nederīgs objekta nosaukums "viltus".
/directory.asp, 13. rindiņa
No otras puses, ja jūsu tīmekļa serverī netiek parādīti detalizēti kļūdu ziņojumi, jūs saņemsit vispārīgāku kļūdu, piemēram: Iekšējā servera kļūdaServerī radās iekšēja kļūda vai nepareiza konfigurācija, un nevarēja izpildīt jūsu pieprasījumu.
Lūdzu, sazinieties ar servera administratoru, lai informētu par to, kad radās kļūda, un par iespējamo informāciju, kas, iespējams, ir izraisījusi kļūdu.
Vairāk informācijas par šo kļūdu var būt pieejama servera kļūdu žurnālā.
Ja saņemat vienu no divām iepriekš minētajām kļūdām, jūsu pieteikums ir neaizsargāts pret SQL injekcijas uzbrukumu. Daži soļi, kurus varat veikt, lai aizsargātu savas lietojumprogrammas pret SQL injekcijas uzbrukumiem, ir: Rezultātu novērtēšana













