Profi ar gyfer Anghyfreithlondeb Chwistrellu SQL

Mae ymosodiadau chwistrellu SQL yn peri risgiau aruthrol i geisiadau gwe sy'n dibynnu ar gefn gronfa ddata i gynhyrchu cynnwys deinamig. Yn y math hwn o ymosodiad, mae hacwyr yn trin cais ar y we mewn ymgais i chwistrellu eu gorchmynion SQL eu hunain i'r rhai a gyhoeddir gan y gronfa ddata. Er enghraifft, gweler erthygl Ymosodiadau Chwistrellu SQL ar Gronfeydd Data. Yn yr erthygl hon, edrychwn ar sawl ffordd y gallwch chi brofi'ch ceisiadau ar y we i benderfynu a ydynt yn agored i ymosodiadau Chwistrellu SQL.

Sganio Chwistrellu SQL Awtomataidd

Un posibilrwydd yw defnyddio sganiwr bregusrwydd cymhwysiad gwe awtomataidd, megis HP's WebInspect, AppScan IBM neu Hailstorm Cenzic. Mae'r holl offer hyn yn cynnig ffyrdd hawdd, awtomataidd i ddadansoddi eich ceisiadau ar y we am wendidau Posib SQL posibl. Fodd bynnag, maent yn eithaf drud, yn rhedeg hyd at $ 25,000 fesul sedd.

Profion Chwistrellu SQL Llawlyfr

Beth yw datblygwr cais gwael i'w wneud? Gallwch chi redeg rhai profion sylfaenol mewn gwirionedd i werthuso'ch ceisiadau gwe ar gyfer gwendidau Chwistrellu SQL gan ddefnyddio dim mwy na porwr gwe. Yn gyntaf, gair o rybudd: mae'r profion rwyf yn disgrifio ond yn chwilio am ddiffygion chwistrellu SQL sylfaenol. Ni fyddant yn canfod technegau uwch ac maent braidd yn ddiflas i'w defnyddio. Os gallwch chi ei fforddio, ewch â sganiwr awtomataidd. Fodd bynnag, os na allwch chi drin y tag pris hwnnw, mae profion llaw yn gam cyntaf gwych.

Y ffordd hawsaf i werthuso a yw cais yn agored i niwed yw arbrofi gydag ymosodiadau chwistrellu diniwed na fydd yn niweidio'ch cronfa ddata mewn gwirionedd os byddant yn llwyddo ond yn rhoi tystiolaeth ichi bod angen cywiro problem. Er enghraifft, mae'n debyg bod gennych chi gais syml ar y we sy'n edrych i fyny unigolyn mewn cronfa ddata ac yn darparu gwybodaeth gyswllt o ganlyniad. Gallai'r dudalen honno ddefnyddio'r fformat URL canlynol:

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

Gallwn dybio bod y dudalen hon yn perfformio chwiliad cronfa ddata, gan ddefnyddio ymholiad tebyg i'r canlynol:

SELECT ffôn O'r cyfeiriadur BLE lastname = 'chapple' a firstname = 'mike'

Gadewch i ni arbrofi gyda hyn ychydig. Gyda'n rhagdybiaeth uchod, gallwn wneud newid syml i'r URL sy'n profi ar gyfer ymosodiadau chwistrellu SQL:

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

Os na chafodd y cais ar y we ei ddiogelu'n briodol yn erbyn chwistrelliad SQL, mae'n syml yn plygio'r enw cyntaf ffug hwn i'r datganiad SQL mae'n ei ddilyn yn erbyn y gronfa ddata, gan arwain at:

SELECT ffôn O'r cyfeiriadur BLE lastname = 'chapple' a firstname = 'mike' AND (dewiswch gyfrif (*) o ffug)> 0 NEU '1' = '1'

Fe welwch fod y cystrawen uchod ychydig yn wahanol na'r hyn yn yr URL gwreiddiol. Cymerais y rhyddid i drosi'r newidyn amgodio URL ar gyfer eu cyfwerth ASCII i'w gwneud yn haws i ddilyn yr enghraifft. Er enghraifft,% 3d yw'r amgodio URL ar gyfer y cymeriad '='. Hefyd, ychwanegais rai seibiannau llinell ar gyfer dibenion tebyg.

Gwerthuso'r Canlyniadau

Daw'r prawf pan fyddwch chi'n ceisio llwytho'r dudalen we gyda'r URL a restrir uchod. Os yw'r cais ar y we yn ymddwyn yn dda, bydd yn tynnu allan y dyfynbrisiau unigol o'r mewnbwn cyn pasio'r ymholiad i'r gronfa ddata. Yn syml, bydd hyn yn arwain at edrychiad rhyfedd i rywun sydd ag enw cyntaf sy'n cynnwys criw o SQL! Fe welwch neges gwall o'r cais sy'n debyg i'r un isod:

Gwall: Ni chanfuwyd unrhyw ddefnyddiwr gydag enw mike + AND + (dewiswch + count (*) + o + ffug) +% 3e0 + OR + 1% 3d1 Chapple!

Ar y llaw arall, os yw'r cais yn agored i chwistrelliad SQL, bydd yn trosglwyddo'r datganiad yn uniongyrchol i'r gronfa ddata, gan arwain at un o ddau bosibilrwydd. Yn gyntaf, os oes gan eich gweinydd negeseuon gwall manwl wedi'u galluogi (na ddylech chi!), Fe welwch rywbeth fel hyn:

Darparwr OLE DB Microsoft ar gyfer gwall Gyrwyr ODBC '80040e37' [Microsoft] [Gyrrwr SQL Server ODBC] [Gweinydd SQL] Enw gwrthrych annilys 'ffug'. /directory.asp, llinell 13

Ar y llaw arall, os nad yw eich gweinydd gwe yn dangos negeseuon gwall manwl, fe gewch chi gwall mwy cyffredinol, fel:

Gwall Gweinyddwr Mewnol Roedd y gweinydd wedi dod o hyd i gamgymeriad mewnol neu anghysondeb ac ni allaf gwblhau eich cais. Cysylltwch â gweinyddwr y gweinydd i roi gwybod am yr amser y gwnaethpwyd y gwall ac o unrhyw beth y gallech fod wedi'i wneud a allai fod wedi achosi'r gwall. Efallai y bydd mwy o wybodaeth am y gwall hwn ar gael yn y log gwall gweinyddwr.

Os ydych chi'n derbyn un o'r ddau wallau uchod, mae eich cais yn agored i ymosodiad chwistrellu SQL! Mae rhai camau y gallwch eu cymryd i ddiogelu eich ceisiadau yn erbyn ymosodiadau chwistrellu SQL yn cynnwys: