SQL Injection Vulnerabilities for saiakuntzak

SQL Injekzio erasoek dinamismoen edukia sortzeko datu baseen motorraren araberako web aplikazioen arrisku izugarriak sortzen dituzte. Eraso mota honetan, hackerrek web aplikazio bat manipulatzen dute beren SQL komandoak inbutatzea datu-baseak emandakoen arabera. Adibidez, ikusi SQL Injection Attacks artikulua datu-baseetan. Artikulu honetan, zure web aplikazioak probatu ditzakezun hainbat modu aztertuko ditugu SQL Injection erasoak zaurgarriak diren ala ez jakiteko.

SQL Injection Eskaneatze automatikoa

Aukera bakarra web aplikazioen ahultasun eskaner automatizatua da, hala nola, HP WebInspect, IBM AppScan edo Cenzic Hailstorm. Tresna horiek guztiak zure web aplikazioak SQL Injection ahultasun potentzialak aztertzeko modu erraz eta automatizatuak eskaintzen dituzte. Hala ere, nahiko garestiak dira, eserleku bakoitzeko 25.000 dolar baino gehiago.

Manual SQL Injection Tests

Zer da eskaera-aplikazio egokia? Oinarrizko probak batzuk exekutatu ditzakezu zure web aplikazioak ebaluatzeko SQL injekzio ahuleziak web nabigatzaile bat baino gehiago erabiliz. Lehenik eta behin, kontuz hitz: oinarrizko SQL injekzio akatsak bilatzeko soilik deskribatzen dituzten probak. Ez dira teknika aurreratuak detektatuko eta erabiltzen dira zertxobait lapurtera. Ordaindu badaiteke, joan eskaner automatizatu batekin. Hala eta guztiz ere, prezio tag hau ezin baduzu kudeatu, eskuzko azterketak lehen urratsa da.

Aplikazio bat ahula den ala ez ebaluatzeko modurik errazena da zure datu-basea kaltetzen ez duten intsuldazko injekzio erasoekin esperimentatzea, baina arazo bat konpondu behar duzula ebidentzian emango dizu. Adibidez, demagun datu-base batean norbanako baten bila dabilen web aplikazio sinple bat duzula eta harremanetarako informazioa ematen duen emaitza gisa. Orrialde honek honako URL formatua erabil dezake:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike

Orri honek datu-baseen bilaketa egiten duenari suposatzen diogu, ondorengoaren antzekoa erabiliz.

SELECT phone FROM directory WHERE lastname = 'chapple' and firstname = 'mike'

Dezagun pixka bat esperimentatu. Aurreko hipotesiarekin, SQL injekzio erasoak probatzen dituen URLaren aldaketa sinple bat egin dezakegu:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+AND+(select+count(*)+from+fake)+%3e0+OR+'1'%3d'1

Web aplikazioa ez bada behar bezala babestuta SQL injekzioaren aurka babesten baduzu, lehen izen faltsua hau da, datu basean exekutatzen den SQL adierazpenean sartuko dena, ondorioz:

Aukeratu telefonoa direktorioa FROM WHERE lastname = 'chapple' eta firstname = 'mike' AND (hautatu count (*) faltsutik)> 0 OR '1' = '1'

Goiko sintaxia jatorrizko URLan baino ezberdina dela nabarituko duzu. Aldagaiaren URL aldatua ASCII baliokide bihurtzeko askatasuna hartu nuen adibidea errazteko. Adibidez,% 3 '=' karakterearen URL kodeketa da. Halaber, antzeko lerroen lerro batzuk gehitu ditut.

Emaitzak ebaluatzea

Webgunea goian zerrendatutako URLarekin kargatzen saiatzen zarenean, testua dator. Web aplikazioa ondo jokatzen bada, sarrerako komatxo bakunak ezeztatuko ditu kontsultak datu-basera igaro aurretik. Honek SQL izeneko lehen izenarekin duen norbaitentzako bilaketa bitxi bat egingo du. Behekoaren antzeko aplikazioaren errore-mezu bat ikusiko duzu.

Errorea: mike + AND + izenarekin aurkitutako erabiltzaileik (hautatu + zenbaketa (*) + faltsua + + 3e0 + OR + 1% 3d1 Chapple!

Bestalde, aplikazioa SQL injekzioarentzat kaltegarria baldin bada, adierazpena zuzenean datu baseetara pasatuko da, bi aukeren artean. Lehenik eta behin, zure zerbitzariak errore-mezu zehatzak gaitu baditu (hau ez!), Hau bezalako zerbait ikusiko duzu:

Microsoft OLE DB hornitzailea ODBC kontrolatzailearen errorea '80040e37' [Microsoft] [ODBC SQL Server Driver] [SQL Server] Objektu izenaren 'faltsua' baliogabea. /directory.asp, 13. linea

Bestalde, zure web zerbitzariak errore-mezu zehatza ez badu, errore orokor bat lortuko duzu, adibidez:

Barneko zerbitzariaren errorea Zerbitzariak barneko errorea edo konfigurazio okerra aurkitu du eta ezin izan du eskaera osatu. Jarri harremanetan zerbitzariaren administratzailearekin akatsa gertatu den unean eta akatsa sor dezakeen edozein momenturen berri eman. Errore honi buruzko informazio gehiago zerbitzariaren erroreen egunkarian egon daiteke.

Goiko bi akatsen bat jasotzen baduzu, zure aplikazioa SQL injekzio erasotzeko arriskua da! Aplikazioak zure SQL babeserako aurkako erasoen aurka babesteko hartu ditzakezun urrats batzuk sartzen dira: