Skip to main content

Тестирање за СКЛ Ињецтион Вулнерабилитиес

Anonim

Напади СКЛ Ињецтион представљају огроман ризик за веб апликације које зависе од базе података базе података како би генерисали динамички садржај. У овој врсти напада, хакери манипулишу веб апликацијом у покушају да убацују своје сопствене СКЛ команде у оне које издаје база података. На пример, погледајте чланак СКЛ Ињецтион Аттацкс на базе података. У овом чланку погледамо неколико начина на које можете тестирати своје веб апликације како бисте утврдили да ли су рањиви за нападе СКЛ Ињецтион-а.

Аутоматско скенирање СКЛ Ињецтион-а

Једна могућност је кориштење аутоматизираног скенера рањивости веб апликација, као што су ХП'с ВебИнспецт, ИБМ АппСцан или Цензиц'с Хаилсторм. Ови алати пружају једноставан и аутоматизован начин анализе ваших веб апликација за потенцијалне СКЛ Ињецтион пропусте. Међутим, они су прилично скупи, и користе се до 25.000 долара по седишту.

Ручни СКЛ Ињецтион тестови

Шта је лош програм за развој апликација? Можете заправо покренути неколико основних тестова како бисте оцијенили своје веб апликације за рањивост СКЛ Ињецтион-а користећи ништа више од веб претраживача. Прво, реч упозорења: тестови које описујемо само траже основне СКЛ Ињецтион пропусте. Они неће открити напредне технике и мало су мучни за коришћење. Ако то можете приуштити, идите аутоматским скенером. Међутим, ако не можете управљати том ценом, ручно тестирање је одличан први корак.Најлакши начин за процјену да ли је апликација рањива је експериментисање са безазленим ињекционим нападима који неће нарушити вашу базу података ако успију, али ће вам пружити доказе да морате исправити проблем. На пример, претпоставимо да сте имали једноставну веб апликацију која гледа појединца у базу података и као резултат даје контакт информације. Ова страница може користити следећи УРЛ формат:

хттп://мифакевебсите.цом/дирецтори.асп?ластнаме=цхаппле&фирстнаме=мике

Можемо претпоставити да ова страница обавља претрагу базе података помоћу упита сличног слиједећег:

СЕЛЕЦТ телефон

ФРОМ директориј

ВХЕРЕ ластнаме = 'цхапел' анд фирстнаме = 'мике'

Хајде да експериментишемо с овим мало. Уз нашу претпоставку изнад, можемо направити једноставну промену УРЛ-а који тестира СКЛ ињекције напада:

хттп://мифакевебсите.цом/дирецтори.асп?ластнаме=цхаппле&фирстнаме=мике'+АНД+(селецт+цоунт(*)+фром+факе)+%3е0+ОР+'1'%3д'1

Ако веб апликација није била исправно заштићена од убризгавања СКЛ-а, она једноставно укључује ово лажно име у СКЛ израз који извршава према бази података, што резултира:

СЕЛЕЦТ телефон

ФРОМ директориј

ВХЕРЕ ластнаме = 'цхапел' анд фирстнаме = 'мике'

И (одаберите број (*) од лажних)> 0

ИЛИ '1' = '1'

Приметићете да је горња синтакса мало другачија од оног у оригиналном УРЛ-у. Ослободили смо се претварања променљиве кодиране варијанте за њихове АСЦИИ еквиваленте како бисмо олакшали пратити примјер. На пример,% 3д је УРЛ-кодирање за знак '='. Додали смо и неке линијске паузе за сличне потребе.

Процењивање резултата

Тест долази када покушате да учитате веб страницу са горенаведеним УРЛ-ом. Ако се веб апликација добро понаша, она ће избацити поједине цитате из уноса пре него што проследи упит у базу података. Ово ће једноставно резултирати чудним потрагом за неким с именом које укључује гомилу СКЛ-а. Видећете поруку о грешци из апликације сличне оној у наставку:

Грешка: Није пронађен корисник са именом мике + АНД + (изаберите + број (*) + из + лажни) +% 3е0 + ОР + 1% 3д1

Цхаппле!

С друге стране, ако је апликација подложна СКЛ ињекцији, она ће проћи извод директно у базу података, што резултира једном од двије могућности. Прво, ако је на вашем серверу омогућена детаљна порука о грешци (коју не бисте требали), видећете нешто овако:

Мицрософт ОЛЕ ДБ Провидер за грешке ОДБЦ Дриверс '80040е37'

Мицрософт ОДБЦ СКЛ Сервер Дривер СКЛ Сервер Неважеће име објекта 'лажно'.

/дирецтори.асп, ред 13

С друге стране, ако ваш веб сервер не приказује детаљне поруке о грешци, добићете опћените грешке, као што су:

Унутрашња грешка сервераСервер је наишао на унутрашњу грешку или погрешну конфигурацију и није могао да доврши ваш захтев.

Молимо контактирајте администратора сервера да бисте обавестили о времену грешке ио свему што сте можда учинили, што је можда изазвало грешку.

Више информација о овој грешци може бити доступно у дневнику грешака сервера.

Ако добијете било коју од горе наведених грешака, ваша апликација је подложна нападима напада СКЛ-а. Неки кораци које можете предузети да бисте заштитили своје апликације против напада СКЛ Ињецтион су:

  • Провести проверу параметара на свим апликацијама. На пример, ако тражите од некога да унесе број купца, уверите се да је унос нумерички прије извршења упита.
  • Ограничите дозволу налога који извршава СКЛ упите. Примјењује се правило најмањег привилегија. Ако налог који се користи за извршење упита нема дозволу за његово извршење, то неће успети.
  • Користите ускладиштене процедуре (или сличне технике) како бисте спречили кориснике да директно интеракцију са СКЛ кодом.