Ტესტირება SQL Injection Vulnerabilities

SQL ინჟექტორი თავდასხმები უქმნის უზარმაზარ რისკს ვებ აპლიკაციებზე, რომლებიც დამოკიდებულია მონაცემთა ბაზის უკუგებაზე დინამიური კონტენტის შესაქმნელად. ამ ტიპის თავდასხმისას, ჰაკერები მანიპულირებას ახდენენ ვებ-აპლიკაციის გამოყენებით საკუთარი SQL ბრძანებების ინექციურ მონაცემთა ბაზაში. მაგალითად, იხილეთ სტატია SQL ინჟექტორი თავდასხმები მონაცემთა ბაზებზე. ამ სტატიაში ჩვენ შევხედავთ რამოდენიმე გზას, რათა შეამოწმოთ თქვენი ვებ აპლიკაციები, რათა დადგინდეს, რამდენად დაუცველნი არიან SQL ინჟექტორი შეტევები.

ავტომატური SQL ინჟექტორი სკანირება

ერთი შესაძლებლობა იყენებს ავტომატური ვებ აპლიკაციის დაუცველობის სკანერს, როგორიცაა HP WebInspect, IBM- ის აპსკანის ან Cenzic- ს Hailstorm. ეს ინსტრუმენტი ყველა გთავაზობთ მარტივი, ავტომატური გზები ანალიზი თქვენი ვებ პროგრამების პოტენციური SQL ინჟექტორი მოწყვლადობის. თუმცა, ისინი საკმაოდ ძვირი, გაშვებული მდე $ 25,000 თითო ადგილს.

სახელმძღვანელო SQL ინჟექტორი ტესტები

რა არის ცუდი განაცხადის დეველოპერი გავაკეთოთ? თქვენ შეგიძლიათ რეალურად აწარმოოთ ზოგიერთი ძირითადი ტესტები შეაფასოს თქვენი ვებ პროგრამების SQL ინჟექტორი ხარვეზების გამოყენებით მეტი არაფერი ბრაუზერში. პირველი, სიფრთხილე სიტყვა: ტესტები მე აღწერს მხოლოდ ძირითად SQL ინჟექტორი ხარვეზებს. ისინი არ აღმოაჩინებენ მოწინავე ტექნიკას და გარკვეულწილად რბილად იყენებენ. თუ შეძლებ მას, გადადით ავტომატური სკანერით. თუმცა, თუ ამ ფასად ვერ ხერხდება, ხელით ტესტირება დიდი პირველი ნაბიჯია.

უმარტივეს გზას შეესაბამება თუ არა აპლიკაცია დაუცველია, რომ სუსტი ინექციური შეტევების ექსპერიმენტად იქნას გამოყენებული, რაც არ დააზიანებს თქვენს მონაცემთა ბაზას, თუ ისინი წარმატებას მიაღწევენ, მაგრამ მოგაწვდით მტკიცებულებას, რომ საჭიროა პრობლემის გამოსწორება. მაგალითად, ვარაუდობენ, რომ თქვენ გაქვთ მარტივი ვებ აპლიკაცია, რომელიც გამოიყურება ინდივიდუალური მონაცემთა ბაზაში და უზრუნველყოფს საკონტაქტო ინფორმაციას შედეგად. ეს გვერდი შეიძლება გამოიყენოთ შემდეგ URL ფორმატში:

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

ჩვენ შეგვიძლია ვივარაუდოთ, რომ ეს გვერდი ასრულებს მონაცემთა ბაზის საძიებლობას, იყენებს შეკითხვას :

SELECT ტელეფონი FROM დირექტორიაში where lastname = 'chapple' და firstname = 'mike'

მოდით ექსპერიმენტი ამ bit. ჩვენი ვარაუდით ზემოთ, ჩვენ შეგვიძლია მარტივი ცვლილება URL რომ ტესტირება SQL ინექცია თავდასხმები:

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

თუ ვებ აპლიკაცია არ არის სათანადოდ დაცული SQL ინექციისგან, ეს უბრალოდ გაყალბებულია პირველი სახელით SQL განცხადებაში, რომელიც ახორციელებს მონაცემთა ბაზას, რის შედეგადაც:

აირჩიეთ ნომერი FROM დირექტორიაში where lastname = 'chapple' და firstname = 'mike' და (აირჩიეთ რიცხვი (*) ყალბიდან)> 0 ან '1' = '1'

თქვენ შეამჩნევთ, რომ სინტაქსი ზემოთ ცოტაა განსხვავებული, ვიდრე ორიგინალური URL. მე მივიღე თავისუფლება URL- კოდირებული ცვლადის მათი ASCII ეკვივალენტებისათვის, რათა გაუადვილებინა მაგალითი. მაგალითად,% 3d არის URL- კოდირებისთვის '=' სიმბოლო. მე ასევე დაამატე რამდენიმე ხაზი შესვენების მსგავსი მიზნებისათვის.

შედეგების შეფასება

გამოცდა მოდის, როდესაც თქვენ ცდილობთ ჩატვირთოთ ვებგვერდი ზემოთ ჩამოთვლილი URL- ით. თუ ვებ აპლიკაცია კარგად მოიქცევა, ის ამოიტანთ მონაცემთა შეყვანის ერთიან ციტატს მონაცემთა ბაზაში შეკითხვაზე. ეს უბრალოდ გამოიწვევს უცნაური სახეს ვინმესთვის პირველი სახელით, რომელიც შეიცავს SQL- ს რამოდენიმე ბმულს თქვენ იხილავთ შეცდომის შეტყობინებას აპლიკაციიდან ქვემოთ მოცემულ მსგავსს:

შეცდომა: არ არის ნაპოვნი სახელი მაიკ + და + (შერჩევა + რაოდენობა (*) + ყალბიდან) +% 3e0 + ან + 1% 3d1 ჩამპლეი!

მეორეს მხრივ, თუ პროგრამა დაუცველია SQL ინექციისთვის, ის პირდაპირ მონაცემთა ბაზაში ჩააბარებს, რის შედეგადაც ერთი ორი საშუალებაა. პირველ რიგში, თუ თქვენს სერვერს აქვს დეტალური შეცდომის შეტყობინებები ჩართული (რომელიც არ უნდა!), თქვენ ნახეთ ასე:

Microsoft OLE DB პროვაიდერი ODBC დრაივერების შეცდომა '80040e37' [Microsoft] [ODBC SQL Server Driver] [SQL Server] არასწორი ობიექტის სახელი "ყალბი". / directory.asp, ხაზი 13

მეორეს მხრივ, თუ თქვენს ვებ-სერვერს არ აქვს დეტალური შეცდომების შეტყობინებები, თქვენ მიიღებთ უფრო ზოგად შეცდომას, როგორიცაა:

შიდა სერვერის შეცდომა სერვერს შეეძლო შიდა შეცდომა ან არასწორი კონფიგურაცია და ვერ შეასრულა თქვენი მოთხოვნა. გთხოვთ, დაუკავშირდეთ სერვერის ადმინისტრატორს, შეცდომის დროისა და შეცდომის შესახებ ინფორმირებისთვის, რაც შეიძლება გაკეთდეს, რამაც შეცდომა გამოიწვია. ამ შეცდომის შესახებ დამატებითი ინფორმაცია შეიძლება იყოს სერვერის შეცდომის ჟურნალში.

თუ იღებთ ერთ-ერთ ორ შეცდომას, თქვენი განაცხადი დაუცველია SQL ინექციის თავდასხმისთვის! ზოგიერთი ნაბიჯი, რომელიც შეგიძლიათ მიიღოს თქვენი განაცხადების წინააღმდეგ SQL ინჟექტორი თავდასხმები მოიცავს: