ለ SQL ኢንች ተጋላጭነት ሙከራ

SQL Injection attacks ጥቃቅን ይዘት ለማመንጨት በመረጃ ቋት ላይ የተመሰረቱ የድር መተግበሪያዎች ላይ ከፍተኛ ስጋቶችን ያስከትላል. በዚህ አይነት ጥቃቶች ውስጥ ሰርጎ ገቦች በአጠቃላይ የውሂብ ጎታ ወደተሰጡት ሰዎች የራሳቸውን SQL ትእዛዞች ለማስገባት በመሞከር የድር መተግበሪያን ይጠቀማሉ. ለምሳሌ, በ SQL ውስጠ-ቁምፊዎች ላይ የ SQL ኢንቻሊስት ጥቃቶች ጽሑፉን ይመልከቱ. በዚህ ጽሑፍ ውስጥ የእርስዎ የድር ትግበራዎች ለ SQL አመላካቾች ጥቃቶች ተጋላጭ መሆናቸውን ለመወሰን የሚያስችሉባቸውን በርካታ መንገዶች እንመለከታለን.

ራስ-ሰር የሆነ SQL ቅጥያ ቅኝት

አንድ ችግር እንደ HP's WebInspect, IBM's AppScan ወይም Cenzic's Hailstorm የመሳሰሉ አውቶሜትድ የድር መተግበሪያዎችን የማጋለጥ ተቆጣጣሪ ይጠቀማል. እነዚህ መሳሪያዎች ለሁሉም የ SQL ኢንሴትን ተጋላጭነት የድር መተግበሪያዎችዎን ለመተንተን ቀላል, ራስ-ሰር መንገዶች ያቀርባሉ. ይሁን እንጂ በጣም ውድ ናቸው, በአንድ መቀመጫ እስከ 25,000 የአሜሪካ ዶላር የሚደርሱ.

በእጅ የ SQL ግድሰጥ ናሙና ሙከራዎች

ደካማ የሆነ የመተግበሪያ ገንቢ ምንድነው የሚያደርገው? ከድር ብራውዘር በስተቀር ማንኛውንም ነገር ለ SQL ኢንሴብሊክ ተጋላጭነት የድር መተግበሪያዎችዎን ለመገምገም አንዳንድ መሰረታዊ ሙከራዎችን ማካሄድ ይችላሉ. በመጀመሪያ የማስጠንቀቅያ ቃል: መሰረታዊ ሙከራዎች መሰረታዊ የሆኑ የ SQL ኢንሴሊን ስህተቶችን ለመፈለግ ብቻ ነው. የላቁ ቴክኒኮችን አይመረምሩም, እና ለአንዳንድ አጣዳፊነት ይጠቀማሉ. ችሎታዎ ካለ አውቶማቲክ ስካነር ይሂዱ. ይሁን እንጂ, ያንን የዋጋ መለያ ማስተናገድ ካልቻሉ, በእጅ መሞከር ምርጥ የመጀመሪያ እርምጃ ነው.

አንድ መተግበሪያ ለአደጋ የተጋለጣ እንደሆነ ለመለየት በጣም ቀላሉ መንገድ ቢሳካዎ የውሂብ ጎታዎን ቢጎዳ እና ችግሩን ማስተካከል እንደሚያስፈልግ ማስረጃ ያቀርብልዎታል. ለምሳሌ ያህል, በአንድ የግል ማህደረ መረጃ ውስጥ ግለሰቡን የሚመረምር ቀለል ያለ የድር መተግበሪያ ካለዎት እና በውጤቱ የመገናኛ መረጃዎችን ያቀርባል. ያ ገጽ የሚከተለው የዩአርኤል ቅርጸት ሊጠቀም ይችላል:

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

ይህ ገጽ የውሂብ ጎታ ፍለጋ አካሄዳቸውን እንደሚከተለው ልንገምት እንችላለን, ከሚከተለው ጋር ተመሳሳይ ጥያቄን በመጠቀም ነው :

ከ ከስልክ ማውጫ ይምረጡ 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 ኢንች ጥቃት ጥቃቶች ጥቃት ለመጠበቅ መውሰድ የሚችሏቸው አንዳንድ እርምጃዎች የሚከተሉትን ያካትታሉ: