Тэставанне на наяўнасць уразлівасцяў SQL Injection

SQL Injection атакі ствараюць велізарныя рызыкі для вэб - прыкладанняў , якія залежаць ад базы дадзеных , сервернае прыкладанне для стварэння дынамічнага кантэнту. У гэтым тыпе атакі хакеры кіраваць вэб-дадаткам, у спробе надаць каманды сваёй уласнай SQL у каштоўных паперах, выпушчаных у базе дадзеных. Для прыкладу, у артыкуле SQL Injection нападаў на базы дадзеных. У гэтым артыкуле мы паглядзім на некалькі спосабаў, вы можаце праверыць свае вэб-прыкладанні, каб вызначыць, ці з'яўляюцца яны ўразлівыя для нападаў SQL Injection.

Аўтаматызаваная SQL Injection Scanning

Адным з магчымых варыянтаў з'яўляецца выкарыстанне аўтаматызаванага сканэра уразлівасцяў вэб-прыкладанняў, такіх як WebInspect HP, IBM AppScan або Hailstorm Cenzic ст. Гэтыя інструменты ўсё прапануюць простыя, аўтаматызаваныя спосабы аналізу вашых вэб-прыкладанняў для патэнцыйных уразлівасцяў SQL Injection. Тым не менш, яны даволі дорага, працуе з хуткасцю да $ 25 000 за адно працоўнае месца.

Тэсты Ін'екцыі Кіраўніцтва па SQL

Што бедны распрацоўшчык прыкладання рабіць? Вы можаце фактычна выканаць некаторыя базавыя тэсты для ацэнкі вашых вэб-прыкладанняў на наяўнасць уразлівасцяў SQL Injection, выкарыстоўваючы не больш, чым праз вэб-браўзэр. Па-першае, слова засцярогі: тэсты, якія я апісваю толькі глядзець на асноўныя недахопы SQL Injection. Яны не будуць выяўляць перадавыя тэхналогіі і некалькі стомна для выкарыстання. Калі вы можаце сабе гэта дазволіць, ісці з аўтаматызаваным сканарам. Аднак, калі вы не можаце справіцца з гэтай цэннік, ручное тэставанне з'яўляецца выдатным першым крокам.

Самы просты спосаб ацаніць, ці з'яўляецца прыкладанне уразлівым эксперыментаваць з бяскрыўднымі-ін'екцыямі, якія на самай справе не шкодзяць вашу базу дадзеных, калі яны преуспеют, але дадуць вам доказ таго, што вам трэба, каб выправіць праблему. Напрыклад, выкажам здагадку, што вы мелі просты вэб-дадатак, якое глядзіць на індывіда ў базе дадзеных і дае кантактную інфармацыю ў якасці выніку. Гэтая старонка можа выкарыстоўваць наступны фармат URL:

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

Можна меркаваць , што гэтая старонка выконвае пошук базы дадзеных, выкарыстоўваючы запыт , падобны наступнаму:

ВЫБРАЦЬ тэлефон з каталога WHERE LastName = «Chapple» і Firstname = «Майк»

Давайце эксперыментаваць з гэтым няшмат. З дапамогай нашага здагадкі вышэй, мы можам зрабіць простае змяненне ў URL, які правярае для нападаў шляхам ўкаранення SQL:

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

Калі вэб-дадатак не было належным чынам абаронена ад SQL ін'екцыі, ён проста затыкае гэта падробленае імя ў заяву SQL ён выконвае ў адносінах да базы дадзеных, у выніку чаго:

ВЫБРАЦЬ тэлефон з каталога WHERE LastName = 'Chapple' і Firstname = 'Mike' AND (абярыце адлік (*) ад падробкі)> 0 OR '1' = '1'

Вы заўважыце, што вышэй сінтаксіс трохі адрозніваецца, чым у зыходным URL. Я ўзяў на сябе смеласць пераўтварэнні зменнай URL-закадаваныя для іх ASCII-эквіваленты, каб зрабіць яго лягчэй прытрымлівацца прыкладу. Напрыклад,% 3d з'яўляецца URL-кадаваньне для характару «=». Я таксама дадаў некаторыя разрывы радкоў для аналагічных мэтаў.

Ацэньваючы вынікі

Выпрабаванне прыходзіць, калі вы ўкладаеце вэб-старонку з URL, названым вышэй. Калі вэб-дадатак добра сябе, ён будзе выразаць асобныя цытаты з ўводу перад перадачай звароту ў базу даных. Гэта проста прывядзе да дзіўнага пошуку для кагосьці з першым імем, якое ўключае ў сябе кучу SQL! Вы ўбачыце паведамленне пра памылку з прыкладання, аналагічнага прыведзенай ніжэй:

Памылка: Не знойдзена ніводнага з імем мікрафоне + І + карыстальнік (абярыце + COUNT (*) + ад + падробкі) +% 3e0 + OR + 1% 3d1 Chapple!

З іншага боку, калі дадатак ўразліва для SQL ін'екцый, ён будзе перадаваць заяву непасрэдна ў базу дадзеных, у выніку чаго адзін з двух варыянтаў. Па-першае, калі ваш сервер змяшчае падрабязныя паведамленні пра памылкі уключаны (якія вы не павінны!), Вы ўбачыце нешта накшталт гэтага:

Microsoft OLE DB Provider для драйвераў ODBC памылка '80040e37' [Microsoft] [ODBC SQL Server Driver] [SQL Server] Няслушная назва аб'екта 'падробка'. /directory.asp, радок 13

З іншага боку, калі ваш вэб-сервер ня адлюстроўвае падрабязныя паведамленні пра памылкі, вы атрымаеце больш агульную памылку, напрыклад:

Унутраная памылка сервера Сервер выявіў ўнутраную памылку ці некарэктны і не змаглі выканаць ваш запыт. Калі ласка, звярніцеся да адміністратара сервера, каб паведаміць пра час адбылася памылка і ўсё, што вы маглі б зрабіць, што, магчыма, адбылася памылка. Больш падрабязная інфармацыя аб гэтай памылцы можа быць даступная ў часопісе памылак сервера.

Калі вы атрымліваеце альбо адзін з двух памылак вышэй, ваша прыкладанне ўразліва для ін'екцыі SQL нападу! Некаторыя крокі, якія можна зрабіць для абароны прыкладанняў ад нападаў SQL Injection ўключаюць: