Сигурност

СКЛ напад на скраћивање

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

Рањивост СКЛ скраћивања обично постоји у МиСКЛ базама података. Ова рањивост је први пут описана у ЦВЕ-2008-4106, која је била повезана са ВордПресс ЦМС-ом.

Како функционишу напади СКЛ скраћивања

Овај напад дјелује због скраћивања корисничког уноса у базама података помоћу функција 'одабира' и 'уметања'.

Претпоставимо да програмер креира табелу „корисници“ помоћу следећег упита:

креирајте кориснике табеле (
усер_ид ИНТ НИЈЕ НУЛЛ АУТО_ИНЦРЕМЕНТ,
корисничко име ВАРЦХАР (20) НОТ НУЛЛ,
лозинка ВАРЦХАР (40) НИЈЕ НУЛЛ,
ОСНОВНИ КЉУЧ (усер_ид)
);

Користећи ову шему, ако програмер креира администраторски налог са следећим:

усер_наме = 'админ'
лозинка = “сецрет_п4ссв0орд”

Очигледно је да ови акредитиви нису јавни. У бази података постоји само један администраторски рачун, а ако нападач покуша да региструје други рачун са „админ“ корисничким именом, нападач неће успети због провере сувишности базе података. Нападач и даље може заобићи ту проверу сувишности да би додао још један налог администратора тако што ће искористити рањивост СКЛ скраћивања. Претпоставимо да нападач региструје други рачун са следећим улазом:

Корисничко име = 'админкккккккккккккккслучајно'
(к су размаци)
&
Лозинка = "РандомУсер"

База података узима „корисничко име“ (26 знакова) и проверава да ли то већ постоји. Тада ће се унос корисничко име скратити, а 'админ' ('админ' са размаком) ће се унијети у базу података, што ће резултирати двама дупликатима администратора.

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

Узорак напада

У овом примеру ћемо узети сценарио са веб странице преко мреже.орг. Заједница овертхевире-а пружа ЦТФ-ове за ратне игре на којима можемо увежбавати своје безбедносне концепте. Сценариј СКЛ скраћивања јавља се у натас игри 26 -> 27. Нивоу можемо приступити користећи следеће:

УРЛ: хттп: // натас27.натас.лабораторије.овертхевире.орг
Корисничко име: натас27
Лозинка: 55ТБјпПЗУУЈгВП5б3БнбГ6ОН9уДПВзЦЈ

Овај ниво је доступан на: хттпс: // овертхевире.орг / варгамес / натас / натас27.хтмл. Приказаће вам се страница за пријављивање која је рањива на напад СКЛ скраћивања.

Након прегледа изворног кода, видећете да је дужина корисничког имена 64, као што је приказано доле.

Корисник под именом 'натас28' већ постоји. Циљ нам је створити другог корисника под називом 'натас28' помоћу напада СКЛ_трунцатион. Дакле, унећемо натас28, након чега следи 57 размака и насумична абецеда (у нашем случају а), корисничко име и било која лозинка. Слово „а“ није видљиво на снимку екрана због корисничког имена дужине 65 знакова. Након креирања корисничког налога, моћи ћете да видите 'а.'

Ако база података садржи рањивост скл_трунцатион, тада би база података требала имати два корисничка имена 'натас28'. Једно корисничко име садржаће нашу лозинку. Покушајмо да унесемо акредитиве на страници за пријављивање.

Сада смо пријављени као корисник 'натас28'.

Ублажавање

Да бисмо ублажили овај напад, мораћемо да узмемо у обзир више фактора.

На пример, проверимо да ли постоји строги режим користећи следећи упит:

мискл> селецт @@ скл_моде

Направићемо базу података и кориснике табеле.'

мискл> тест ЦРЕАТЕ БАТАБАСЕ
Упит је ОК, погођен је 1 ред (0.02 сец)
мискл> Користи тест
База података промењена
мискл> ЦРЕАТЕ ТАБЛЕ корисници (корисничко име ВАРЦХАР (10), лозинка ВАРЦХАР (10));
Упит је ОК, 0 редова погођено (0.05 сец)

Даље ћемо створити административног корисника са акредитивима помоћу упита ИНСЕРТ.

мискл> УМЕСТИ У ВРЕДНОСТИ корисника ('админ', 'пассворд1');
Упит је у реду, погођен је 1 ред (0.01 сец)

Информације о табели „корисници“ можемо видети помоћу опције „одабери * из корисника“.

Дужина корисничког имена је 10 знакова. Сада ћемо покушати напад СКЛ скраћивања.

Када покушамо да унесемо следеће:

Корисничко име = 'админккккка'
(к су размаци)
&
Лозинка = 'пасс2'

Добићемо грешку, што значи да је строги режим потпуно ефикасан.

мискл> ИНСЕРТ ИНТО корисничке вредности ('админ а', 'пасс2')
ГРЕШКА 1406 (22001): Подаци су предуги за колону „корисничко име“ у реду 1

Ако није омогућен строги режим, база података ће издавати упозорења, али ће и даље уметати податке у табелу.

Закључак

Нападачи могу добити приступ високо привилегованим налозима ако у вашој апликацији постоји рањивост скл_трунцтион. Нападач лако може добити информације о корисничком имену и дужини његове базе података користећи критична поља, затим створити исто корисничко име, након чега слиједе размаци и насумичне абецеде након минималне дужине, што резултира стварањем вишеструких налога с високим привилегијама. Ова рањивост је критична, али је је могуће избећи ако предузмете неке мере безбедности, попут активирања строгог режима за корисничке уносе и постављања осетљивог поља као примарног кључа у бази података.

Инсталирајте најновији Долпхин Емулатор за Гамецубе & Вии на Линук
Долпхин Емулатор вам омогућава да играте изабране игре Гамецубе и Вии на Линук Персонал Цомпутерс (ПЦ). Долпхин Емулатор је слободно доступан и емула...
Како се користи ГамеЦонкуерор Цхеат Енгине у Линуку
Чланак покрива водич о коришћењу ГамеЦонкуерор варалице у Линуку. Многи корисници који играју игре на Виндовс-у често користе апликацију „Цхеат Енгине...
Најбољи емулатори играће конзоле за Линук
Овај чланак ће навести популарни софтвер за емулацију играће конзоле доступан за Линук. Емулација је слој компатибилности софтвера који опонаша хардве...