Сигурност

Водич за технике слепог убризгавања СКЛ-а

Водич за технике слепог убризгавања СКЛ-а

Шта је СКЛ Ињецтион?

СКЛ Ињецтион је врста напада на базу података у којој нападач покушава украсти информације из базе података веб апликације. То чак може резултирати даљинским извршавањем кода, у зависности од окружења веб апликације и верзије базе података.

СКЛ убризгавање се догађа због лоше санитације корисничког уноса. Ако од корисника узмете унос на неком језику за кодирање (ПХП, АСП.НЕТ) и проследите је директно у базу података сервера без примене било каквог филтера на улазу, што може довести до рањивости СКЛ Ињецтион.

На пример, следећи ПХП код је рањив на СКЛ Ињецтион напад јер директно прослеђује кориснички унос у базу података. Нападач може створити сопствени злонамерни упит базе података како би извукао податке из базе података.

// Кориснички унос се чува у променљивој ид
$ ид = $ _ГЕТ ['ид'];
// Унос корисника извршава се директно у бази података
$ гетид = "СЕЛЕЦТ фирст_наме, ласт_наме ФРОМ усерс ВХЕРЕ усер_ид = '$ ид'";
// У случају грешке или успеха, резултати се враћају кориснику
$ резултат = мискл_куери ($ гетид) или умри ('
' . мискл_еррор () . '
');
$ нум = мискл_нумровс ($ резултат);

С друге стране, дат је пример сигурног кода таквог кода за интеракцију са базом података. Потребан је кориснички унос и из њега се филтрирају сви злонамерни знакови, а затим се прослеђује у базу података.

$ ид = $ _ГЕТ ['ид'];
$ ид = коса црта ($ ид);
$ ид = мискл_реал_есцапе_стринг ($ ид);

Нормално вс слепо СКЛ убризгавање

Уобичајено убризгавање СКЛ-а

У нормалном СКЛ Ињецтион-у, ако нападач покуша ставити један наводник (') као улаз, када се овај појединачни наводник изврши у бази података, база података одговара грешком. Грешка се исписује у прегледачу нападача.

Код одговоран за ову грешку је

// ако база података одговори грешком, извршава се функција „ор дие ()“
да одштампате грешку
$ резултат = мискл_куери ($ гетид) или умри ('
' . мискл_еррор () . '
');

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

Слепо СКЛ убризгавање

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

У позадини је наведен позадински код

$ резултат = мискл_куери ($ гетид); // Уклоњено 'или умри' ради сузбијања мискл грешака

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

Технике за откривање слепог СКЛ убризгавања

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

ИСТИНИТО и НЕТОЧНО Откривање

Једна од карактеристика база података, укључујући МиСКЛ, је различито понашање у тачним и нетачним исказима. Чак и ако база података не приказује грешке, можемо одлучити да користимо тачне и нетачне изразе. Размотрите следећи сценарио,

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

1 'или 1 = 1 #

Давање лажног упита као улаза неће приказати никакве податке.

1 'или 1 = 2 #

Чак и веб страница не приказује грешке, разлика између две странице говори да се наши упити успешно извршавају у бази података.

Откривање на основу ВРЕМЕНА

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

1 'И спавај (15) #

Постоји још једна дуготрајна функција „БЕНЦХМАРК“ која се може користити за одлагање одговора базе података

1 'И БЕНЦХМАРК (10000000, СХА1 (1337)) #

Горњи ред ће извршити функцију СХА1 () 10000000 пута у бази података, што ће додати значајну количину кашњења у одговору.

Слепо СКЛ убризгавање засновано на времену у другим базама података

МС СКЛ: ИД = 1; чекање на кашњење '0: 0: 10'-

ОРАЦЛЕ СКЛ: И [РАНДНУМ] = ДБМС_ПИПЕ.РЕЦЕИВЕ_МЕССАГЕ ('[РАНДСТР]', [СЛЕЕПТИМЕ])

ПостгреСКЛ: И [РАНДНУМ] = (ОДАБЕРИТЕ [РАНДНУМ] ИЗ ПГ_СЛЕЕП ([СЛЕЕПТИМЕ]))

СКЛите: И [РАНДНУМ] = ЛИКЕ ('АБЦДЕФГ', ГОРЊИ (ШЕСТАКЛЕ (РАНДОМБЛОБ ([СЛЕЕПТИМЕ] 00000000/2))))

Издвајање података из базе података

Први корак издвајања базе података је одређивање бројева колона у бази података. Затим покушајте да пронађете рањиве колоне за извлачење додатних података.

Слепо СКЛ убризгавање понаша се различито са различитим бројевима колона у упиту „редослед по“.

1 'поруџбина по 1 #

Горња изјава је тачна јер у бази података увек постоји најмање 1 колона. Покушајте са врло великим бројем.

1 'поруџбина од 10000 #

Одговор базе података се разликује од претходног. Покушајте са 2 колоне.

Изјава је успела, што значи да база података има 2 или више колона. Покушајте са 3 колоне.

1 'поруџбина 3 #

База података није послала никакав одговор, што значи да база података има само 2 колоне. Сада ћемо покушати да избацимо листу табела у базу података, за то ћемо користити следећи упит

1 'унија све изаберите 1, гроуп_цонцат (име_табеле) из схеме информација.
табеле где је табле_сцхема = датабасе () #

У позадинској бази података „књига гостију и корисници“ постоје две табеле. Табела „корисници“ може садржати корисничка имена и лозинке. Да бисте издвојили имена колона из табеле, убаците следећи упит.

1 'унија све изаберите 1, гроуп_цонцат (име_колоне) из схеме информација_схеме.
колоне где је табле_сцхема = датабасе () #

Сада смо издвојили имена колона, то укључује колоне корисника и лозинке. У овим колонама се чувају корисничка имена и лозинке купаца.

Сада ћемо покушати да издвојимо податке помоћу следећег упита

1 'унион алл селецт 1, гроуп_цонцат (корисник, лозинка) од корисника #

И тако можете искористити Блинд СКЛ Ињецтион без ослањања на грешке. Лозинке за излаз се хеширају већину времена, што се може дешифровати помоћу алата попут Јохн Тхе Риппер или Хасхцат.

Закључак:

Слијепо СКЛ убризгавање је врста СКЛи-а која не приказује грешке базе података или одговара врло генеричком поруком. Због тога је веома тешко идентификовати рањивост Блинд СКЛ Ињецтион на веб страници. Једном откривени, можете га лако искористити ручним или аутоматизованим процесом помоћу СКЛмап-а.

Како инсталирати и играти Доом на Линук-у
Увод у Доом Доом серија настала је 90-их година након објављивања оригиналног Доом-а. То је био тренутни хит и од тог времена надаље серија игара је д...
Вулкан за кориснике Линука
Са сваком новом генерацијом графичких картица видимо да програмери игара помичу границе графичке верности и долазе на корак од фотореализма. Али упрко...
ОпенТТД вс Симутранс
Стварање сопствене симулације превоза може бити забавно, опуштајуће и изузетно примамљиво. Због тога морате да испробате што више игара како бисте про...