SQL Injection attacks ጥቃቅን ይዘት ለማመንጨት በመረጃ ቋት ላይ የተመሰረቱ የድር መተግበሪያዎች ላይ ከፍተኛ ስጋቶችን ያስከትላል. በዚህ አይነት ጥቃቶች ውስጥ ሰርጎ ገቦች በአጠቃላይ የውሂብ ጎታ ወደተሰጡት ሰዎች የራሳቸውን SQL ትእዛዞች ለማስገባት በመሞከር የድር መተግበሪያን ይጠቀማሉ. ለምሳሌ, በ SQL ውስጠ-ቁምፊዎች ላይ የ SQL ኢንቻሊስት ጥቃቶች ጽሑፉን ይመልከቱ. በዚህ ጽሑፍ ውስጥ የእርስዎ የድር ትግበራዎች ለ SQL አመላካቾች ጥቃቶች ተጋላጭ መሆናቸውን ለመወሰን የሚያስችሉባቸውን በርካታ መንገዶች እንመለከታለን.
ራስ-ሰር የሆነ SQL ቅጥያ ቅኝት
አንድ ችግር እንደ HP's WebInspect, IBM's AppScan ወይም Cenzic's Hailstorm የመሳሰሉ አውቶሜትድ የድር መተግበሪያዎችን የማጋለጥ ተቆጣጣሪ ይጠቀማል. እነዚህ መሳሪያዎች ለሁሉም የ SQL ኢንሴትን ተጋላጭነት የድር መተግበሪያዎችዎን ለመተንተን ቀላል, ራስ-ሰር መንገዶች ያቀርባሉ. ይሁን እንጂ በጣም ውድ ናቸው, በአንድ መቀመጫ እስከ 25,000 የአሜሪካ ዶላር የሚደርሱ.
በእጅ የ SQL ግድሰጥ ናሙና ሙከራዎች
ደካማ የሆነ የመተግበሪያ ገንቢ ምንድነው የሚያደርገው? ከድር ብራውዘር በስተቀር ማንኛውንም ነገር ለ SQL ኢንሴብሊክ ተጋላጭነት የድር መተግበሪያዎችዎን ለመገምገም አንዳንድ መሰረታዊ ሙከራዎችን ማካሄድ ይችላሉ. በመጀመሪያ የማስጠንቀቅያ ቃል: መሰረታዊ ሙከራዎች መሰረታዊ የሆኑ የ SQL ኢንሴሊን ስህተቶችን ለመፈለግ ብቻ ነው. የላቁ ቴክኒኮችን አይመረምሩም, እና ለአንዳንድ አጣዳፊነት ይጠቀማሉ. ችሎታዎ ካለ አውቶማቲክ ስካነር ይሂዱ. ይሁን እንጂ, ያንን የዋጋ መለያ ማስተናገድ ካልቻሉ, በእጅ መሞከር ምርጥ የመጀመሪያ እርምጃ ነው.
አንድ መተግበሪያ ለአደጋ የተጋለጣ እንደሆነ ለመለየት በጣም ቀላሉ መንገድ ቢሳካዎ የውሂብ ጎታዎን ቢጎዳ እና ችግሩን ማስተካከል እንደሚያስፈልግ ማስረጃ ያቀርብልዎታል. ለምሳሌ ያህል, በአንድ የግል ማህደረ መረጃ ውስጥ ግለሰቡን የሚመረምር ቀለል ያለ የድር መተግበሪያ ካለዎት እና በውጤቱ የመገናኛ መረጃዎችን ያቀርባል. ያ ገጽ የሚከተለው የዩአርኤል ቅርጸት ሊጠቀም ይችላል:
ይህ ገጽ የውሂብ ጎታ ፍለጋ አካሄዳቸውን እንደሚከተለው ልንገምት እንችላለን, ከሚከተለው ጋር ተመሳሳይ ጥያቄን በመጠቀም ነው :
ከ ከስልክ ማውጫ ይምረጡ SELECT lastname = 'chapple' እና የመጀመሪያ ስም = 'mike'በዚህ ትንሽ እንሞክር. ከላይ እንዳሳለፍነው, ለ SQL ምልሽት ጥቃቶች በተዘጋጀ የዩ አር ኤል ፈተና ላይ ቀላል ለውጥ ማድረግ እንችላለን:
http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+AND+(select²count(*)+from+fake)+%3e0+OR+'1'%3d'1የድር መተግበሪያው በ SQL ምልልሱ ላይ በአግባቡ ካልተጠበቀው, ይህን የውሸት ስም በመረጃ ውሂቡ ላይ በሚሰራው የ SQL ዓረፍተ ሐሳብ ላይ ይሰኩት, ይህም የሚከተሉትን ያካትታል:
SELECT phone FROM directory ማውጫ WHERE lastname = 'chapple' እና firstname = 'mike' AND (ከሐሰተኛ አስመርጥ (*) ከተመገበ> 0 ወይም '1' = '1'ከላይ ያለው አገባብ መጀመሪያ ከተሰራው ዩአርኤል ጋር ትንሽ የተለየ መሆኑን ያስተውሉ. ምሳሌውን ለመከተል ቀላል ለማድረግ የ URL-encoded ተለዋዋጭ ለ ASCII እኩያዎቻቸው የመቀየር ነጻነት ወስጄ ነበር. ለምሳሌ,% 3 ዲ ለ '=' ቁምፊ የዩ አር ኤል ኮድ ነው. በተጨማሪም ለተወሰኑ ዓላማዎች አንዳንድ የመስመር መግቻዎችን አክላለሁ.
ውጤቱን ገምግም
ከላይ የተዘረዘሩትን URL በመጠቀም ድረ-ገጹን ለመጫን ሲሞክሩ ሙከራው ይመጣል. የድር መተግበሪያው በጥሩ ሁኔታ ከተሰራ, መጠይቁን ወደ መረጃ ቋት ከማዛወር በፊት ነጠላውን ዋጋዎች ከግቤት ይወጣል. ይህ በቀላሉ የ SQL ቁጥርን ያካተተ የመጀመሪያ ስም ላለው ግለሰብ እንግዳ የሆነ ፍለጋን ያመጣል! ከታች ካለው መተግበሪያ ጋር ተመሳሳይ የስህተት መልዕክት ታያለህ:
ስህተት: + ስም + እና + (+ +) ቁጥር (+) + (+) + ከ% 3e0 + ወይም + 1% 3d1 አጣቅስ!በሌላ በኩል መተግበሪያው ለኤስዲ ኢንሱዲይድ ተጋላጭ ከሆነ መግለጫውን በቀጥታ በመረጃ ቋት ይልከዋል, ከሁለት አንዱ አማራጭ ሊሆን ይችላል. በመጀመሪያ, የእርስዎ አገልጋይ ዝርዝር የስህተት መልዕክቶች የነቃ ከሆነ (እርስዎ ማለፍ የለብዎትም!) እንደዚህ የመሰለ አንድ ነገር ያያሉ:
Microsoft OLE DB አቅራቢ ለ ODBC ተቆጣሪዎች ስህተት '80040e37' [Microsoft] [ODBC SQL Server Driver] [SQL አገልጋይ] ልክ ያልሆነ የምልክት ስም «አስመሳይ». /directory.asp, መስመር 13በሌላ በኩል የእርስዎ የድር አገልጋይ ዝርዝር የስህተት መልዕክቶችን ካላሳየ ብዙ የተለመዱ ስህተቶችን ያገኛሉ, ለምሳሌ:
ውስጣዊ የአገልጋይ ስህተት አገልጋዩ ውስጣዊ ስህተት ወይም የተሳሳተ ውቅር ያጋጠመው ሲሆን ጥያቄዎን ሊያጠናቅቅ አልቻለም. ስህተቱ የተከሰተበትን ጊዜ እና ስህተቱን ያስከተለውን ማንኛውንም ነገር ሊያሳውቅዎ የሚችለው የአገልጋይ አስተዳዳሪውን ያነጋግሩ. ስለዚህ ስህተት ተጨማሪ መረጃ በአገልጋይ ስህተት መዝገብ ላይ ሊገኝ ይችላል.ከሁለቱ ስህተቶች አንዱን ከተቀበሉ, የእርስዎ መተግበሪያ ለ SQL ግቤት ጥቃት ተጋልጧል! ከ SQL ኢንች ጥቃት ጥቃቶች ጥቃት ለመጠበቅ መውሰድ የሚችሏቸው አንዳንድ እርምጃዎች የሚከተሉትን ያካትታሉ:
- በሁሉም መተግበሪያዎች ላይ መለኪያ መፈተሻን ተግባራዊ አድርግ. ለምሳሌ, አንድ ሰው ወደ የደንበኛ ቁጥር እንዲልክሎት እየጠየቁ ከሆነ መጠይቁን ከመሙላቱ በፊት ግብዓቱ ቁጥራዊ መሆኑን ያረጋግጡ.
- የ SQL ግጥቶችን የሚያከናውን የሂሳብ ፍቃዶችን ይገድቡ. አነስተኛው የክህነት ጥበቃ ደንቦች ይተገበራሉ. መጠይቁን ለመፈፀም ያገለግል የነበረው መለያ ለማከናወን ፈቃድ ከሌለው, አይሳካም!
- ተጠቃሚዎችን ከ SQL ቁጥር ጋር በቀጥታ ከማስተናገድ እንዲጠበቁ የተከማቹ ስርዓቶችን (ወይም ተመሳሳይ ቴክኒኮች) ይጠቀሙ.