Сыноо үчүн SQL инжектордук аялуу

SQL инжектордук кол салуулар бир көз каранды желе өтүнмөлөргө зор коркунуч туудурган маалыматтар базасы динамикалык контентти түзүү үчүн кытта. кол салуу бул түрү менен, хакерлерге өз SQL маалыматтар базасы тарабынан берилген адамдар кирип буйрук сайыъыз аракетинде интернет колдонмону иштетпениз. Мисалы үчүн, маалыматтар базалары жөнүндөгү бир макалада SQL инжектордук чабуулдан карагыла. Бул макалада биз алар SQL инжектордук кол аялуу болобу аныктоо үчүн колдонмолорду сынап бир нече жолдорун карап.

Automated SQL Injection изделүүдө

Мүмкүн мындай HP анын WebInspect, айылга AppScan же Cenzic анын мөндүр катары дардын желе арыз аялуу сканер, колдонуп жатат. Бул куралдар болгон бардык SQL инжектордук кемчиликтери үчүн колдонмолорду талдоо үчүн жеңил, технологиялар жолдорун сунуш кылабыз. Бирок, алар отургучта 25000 $ га чейин иштеген, абдан кымбат болот.

Колго SQL инжектордук тесттер

эмне үчүн начар колдонмо иштеп деген эмне? Сиз чындыгында интернет браузер башка эч нерсе менен SQL инжектордук кемчиликтери үчүн колдонмолорду баалоо үчүн айрым негизги сыноолорду болот. Биринчиден, сак сөз: тесттер Мен бир гана негизги SQL инжектордук кемчиликтерине издеп сыпаттоо. Алар заманбап ыкмаларын аныктоо эмес, жана бир аз колдонуу үчүн Уикипедияны жакшыртуу болуп саналат. сиз аны бере ала турган болсо, анда бир дардын сканнер менен барып. Бирок, ошол баа теги көтөрө албайт, анда кол тестирлөө улуу биринчи кадам болуп саналат.

арыз алсыз экендигин баа берүү жагы алар ийгиликке жете алсак, сенин базасын зыян жок, бирок кайсы бир проблеманы чечүү үчүн зарыл болгон далил менен камсыз кылат кыял ийне менен кол менен тажрыйба керек. Мисалы, кайсы бир маалыматтар базасына жеке чейин карап жөнөкөй интернет арыз жана натыйжада байланыш маалыматын берет эле деп ойлойм. Бул барак төмөнкү URL түзүлүшү мүмкүн:

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

Бул баракча, маалыматтар базасын издөөнү жүзөгө ашырат деп ойлойбуз суроо менен төмөнкү окшош:

каталогуна тандап тел КАЙДА Персоны = 'Chapple жана имя =' майк "

бул бир аз татып көрөлү. Жогоруда Биздин берүүлөрдүн менен биз SQL сайынуу жолу кол салуу үчүн тесттер URL жөнөкөй өзгөртүү киргизүүгө болот:

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

чакан колдонмо туура SQL инжектордук, коргоп турган болсо, анда ал жөн гана SQL билдирүүсүндө бул жасалма аты сайыла ал алып келген, маалымат базасына каршы аткарат:

каталогуна тандап тел КАЙДА Персоны = 'Chapple жана имя =' майк "ЖАНА (тандалган саны (*) жасалма чейин)> 0 ЖЕ '1' = '1'

Сиз жогоруда синтаксисин Түп нускага деп бир аз айырмаланып турганын байкайсыз. Мен бул үлгү кыйнабаш үчүн алардын ASCII кимди үчүн URL-коддолгон өзгөрмө айырбастау азаттык алды. Мисалы,% 3d '=' мүнөзү үчүн URL-коддоо болуп саналат. Мен да ушундай максатта бир нече сап тыныгуу кошумчалады.

натыйжаларына баа берүү

Жогоруда саналып өткөн URL менен жүктөө үчүн аракет кылып жатканда, сыноо болот. чакан колдонмо, ошондой эле алып жүрө турган болсо, анда ал базасына суроого өтүп алдында салымы Жалгыз тырмакчаны чыгып чечип берет. Бул жөн гана SQL бир тутам камтыган биринчи аты менен кимдир бирөө үчүн кызык издөөнүн алып келет! Төмөнкү окшош өтүнмө бир ката билдирүү көрө аласыз:

Ката: майк аты менен табылган жок + жана (+ санап (тандап *) + + жасалма чейин) +% 3e0 + ЖЕ + 1% 3d1 Chapple!

Башка жагынан алганда, өтүнмө SQL сайынуу үчүн алсыз болсо, анда ал эки мүмкүнчүлүктөрдүн бири натыйжасында түздөн-түз арызды базасын өтөт. Биринчиден, Server ката билдирүүлөрдү толук болсо, иштетилген (сен эмес, керек болгон!), Бул сыяктуу нерсе көрө аласыз:

ODBC айдоочулары күнөөсү үчүн Microsoft OLE DB мекеме "80040e37 '[Microsoft] [ODBC SQL Server айдоочусу] [SQL Server] Жараксыз объект аты" жасалма ". /directory.asp, 13-сап

Башка жагынан алганда, сиздин Server толук ката билдирүүлөрдү Статусунда өзгөрүүлөр жок болсо, анда, мисалы, бир кыйла жалпы ката, ала аласыз:

Ички Server Error Server ички ката же туура эмес кетти жана суроо аягына чыга алган жок. Сураныч, ката кетти убакыт жана ката себеп болушу мүмкүн Сен кылган нерселердин баарын билдирүүгө Server администратором. Бул ката жөнүндө көбүрөөк маалымат Server ката журналы жеткиликтүү болушу мүмкүн.

Жогорудагы эки каталардын бири алууга болсо, өтүнмө SQL сайынуу жолу кол салыш керек! Сиз SQL инжектордук кол билдирмени коргош үчүн айрым кадамдарды камтыйт: