Kujaribu Kwa Vulnerability ya SjL Injection

Mashambulizi ya sindano ya SQL husababisha hatari kubwa kwa maombi ya mtandao ambayo hutegemea backend ya database ili kuzalisha maudhui ya nguvu. Katika aina hii ya mashambulizi, wahasibu hutumia programu ya wavuti kwa jaribio la kuingiza maagizo yao ya SQL katika yale yaliyotolewa na databana. Kwa mfano, angalia makala ya SQL Injection Attacks kwenye Database. Katika makala hii, tunaangalia njia kadhaa ambazo unaweza kupima maombi yako ya wavuti ili uone kama wao huishi katika mashambulizi ya SQL ya Majeraha.

Kufuatilia SQL Injection Scanning

Uwezekano mmoja unatumia mkimbiaji wa mtandao wa kompyuta unaojitokeza, kama vile Mtandao wa WebInspect wa HP, Nguvu ya IBS ya AppScan au Cenzic. Zana hizi hutoa njia rahisi, za automatiska za kuchambua maombi yako ya wavuti kwa udhaifu wa SQL wa sindano. Hata hivyo, wao ni ghali sana, wanaendesha hadi $ 25,000 kwa kiti.

Majaribio ya sindano ya SQL ya Mwongozo

Je! Msanidi programu wa maskini anafanya nini? Unaweza kweli kukimbia vipimo vya msingi ili kutathmini maombi yako ya wavuti kwa udhaifu wa SjL Injection kutumia kitu zaidi kuliko kivinjari cha wavuti. Kwanza, neno la tahadhari: vipimo ninavyoelezea nikiangalia tu makosa ya msingi ya sindano ya SQL. Hawatachunguza mbinu za juu na ni zenye kutisha kutumia. Ikiwa unaweza kumudu, nenda na sanidi moja kwa moja. Hata hivyo, kama huwezi kushughulikia tag hiyo ya bei, kupima kwa mwongozo ni hatua kuu ya kwanza.

Njia rahisi zaidi ya kuchunguza kama maombi ni hatari zaidi kwa kujaribu majaribio ya sindano isiyo na hatia ambayo haitaharibu kweli database yako ikiwa itafanikiwa lakini itakupa ushahidi unaohitaji kurekebisha tatizo. Kwa mfano, tuseme kuwa na maombi ya mtandao rahisi ambayo inaonekana juu ya mtu binafsi katika dhamana na hutoa habari ya mawasiliano kama matokeo. Ukurasa huo unaweza kutumia muundo wa URL uliofuata:

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

Tunaweza kudhani kwamba ukurasa huu hufanya upatikanaji wa database, ukitumia swala linalofanana na lafuatayo:

SELECT simu kutoka kwa swala ambako jina la mwisho = 'chapple' na firstname = 'mike'

Hebu tujaribu kwa hili kidogo. Kwa dhana yetu hapo juu, tunaweza kufanya mabadiliko rahisi kwa URL ambayo inachunguza mashambulizi ya sindano ya SQL:

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

Ikiwa programu ya wavuti haijahifadhiwa vizuri dhidi ya sindano ya SQL, inachukua tu jina la kwanza la bandia kwenye taarifa ya SQL inayotokana na database, na kusababisha:

Chagua simu kutoka kwa swala ambako jina la mwisho = 'chapple' na firstname = 'mike' NA (chagua hesabu (*) kutoka bandia)> 0 OR '1' = '1'

Utaona kwamba syntax hapo juu ni tofauti kidogo kuliko ile katika URL ya awali. Nilichukua uhuru wa kubadilisha variable ya URL-encoded kwa equivalents yao ASCII ili iwe rahisi kufuata mfano. Kwa mfano,% 3d ni encoding URL kwa '=' tabia. Pia niliongeza mapumziko ya mstari kwa madhumuni sawa.

Kuchunguza Matokeo

Jaribio linakuja unapojaribu kupakia ukurasa wa wavuti na URL iliyoorodheshwa hapo juu. Ikiwa programu ya wavuti ni vizuri, itaondoa quotes moja kutoka kwa pembejeo kabla ya kupitisha swala kwenye databana. Hii itasababishwa na upakuaji wa ajabu kwa mtu mwenye jina la kwanza ambalo linajumuisha kundi la SQL! Utaona ujumbe wa hitilafu kutoka kwa programu kama ile iliyo hapo chini:

Hitilafu: Hakuna mtumiaji aliyepatikana kwa jina la mike + NA + (chagua + hesabu (*) + kutoka kwa + bandia) +% 3e0 + OR + 1% 3d1 Chapple!

Kwa upande mwingine, ikiwa programu hiyo inakabiliwa na sindano ya SQL, itapitisha taarifa moja kwa moja kwenye databana, na kusababisha mojawapo ya uwezekano wa mbili. Kwanza, ikiwa seva yako ina ujumbe wa kosa wa kina unaofaa (ambayo haipaswi!), Utaona kitu kama hiki:

Mtoa huduma wa OLE DB wa ODBC kwa ODBC Dereva '80040e37' [Microsoft] [ODBC SQL Server Driver] [SQL Server] Jina batili la kitu 'bandia'. /directory.asp, mstari wa 13

Kwa upande mwingine, kama seva yako ya wavuti haina kuonyesha ujumbe wa hitilafu ya kina, utapata kosa la generic zaidi, kama vile:

Hitilafu ya Serikali ya Ndani Seva ilikutana na hitilafu ya ndani au kutenganishwa sawa na haikuweza kukamilisha ombi lako. Tafadhali wasiliana na msimamizi wa seva ili atambue wakati uliofanyika kosa na kwa chochote ungeweza kufanya ambacho kinaweza kusababisha kosa. Maelezo zaidi juu ya hitilafu hii inaweza kuwa inapatikana kwenye logi ya hitilafu ya seva.

Ikiwa unapokea mojawapo ya makosa mawili hapo juu, programu yako inakabiliwa na mashambulizi ya sindano ya SQL! Baadhi ya hatua ambazo unaweza kuchukua ili kulinda maombi yako dhidi ya mashambulizi ya sindano ya SQL ni pamoja na: