Zərərli veb səhifə. Zərərli kod nədir. Kontekstlərin necə əhəmiyyəti var

Zərərli kod veb-saytın normal fəaliyyətinə mane olan koddur. Mövzulara, verilənlər bazasına, fayllara və plaginlərə daxil edilə bilər.


Kanalımızda daha çox video - SEMANTICA ilə internet marketinqini öyrənin

Zərərli kodun işinin nəticəsi bəzi faydalı məzmunun silinməsi və ya üçüncü tərəf resursunda dərc edilməsi ola bilər. Bu yolla təcavüzkarlar məzmunun oğurlanmasını təşkil edə bilərlər. Müəllif hüquqları ilə bağlı məqalələri olan gənc resursun buna məruz qalması xüsusilə təhqiramizdir. Təəssürat yarana bilər ki, məzmunu köhnə resursdan oğurlayan şəxsdir.

Həmçinin, zərərli kod pulsuz bir mövzuda axtarış motorları üçün mövcud olan üçüncü tərəf səhifələrinə gizli keçidlər yerləşdirə bilər. Bu bağlantılar həmişə zərərli olmayacaq, lakin əsas saytın çəkisinin əziyyət çəkəcəyinə zəmanət verilir.

Bütün zərərli kodların ümumi məqsədi internet səhifələrini pozmaqdır.

Xarici olaraq, zərərli kod xaotik simvollar toplusudur. Əslində, bu cəfəngiyat əmrlərin ardıcıllığını ehtiva edən şifrələnmiş kodu gizlədir.

Zərərli kod sayta necə daxil olur?

Zərərli kodun vebsayta daxil olmasının iki yolu var.

1. Şübhəli və etibarsız mənbələrdən faylların və plaginlərin yüklənməsi. Çox vaxt şifrələnmiş bağlantılar bu üsullardan istifadə edərək sayta daxil olur. Açıq kod nadir hallarda sayta bu şəkildə daxil olur.

2. ardınca nüfuz etmə. Bu üsul daha təhlükəli hesab olunur, çünki veb-səhifənin sındırılması təkcə “birdəfəlik” kodu deyil, həm də zərərli proqramın (zərərli proqram) elementləri olan bütün konstruksiyaları ötürməyə imkan verir.

Belə kodu məhv etmək çox çətindir, çünki silindikdən sonra bərpa edilə bilər.

Sayt zərərli kod üçün yoxlanılır

Nəzərə alın ki, bu məkrli konstruksiyalar təkcə aktiv mövzuda deyil, həm də istənilən resurs faylında görünə bilər. Onları tapmağın bir neçə yolu var:

  • Əl ilə. Bunu etmək üçün, bütün cari faylların məzmununu ehtiyat nüsxənin yoluxmamış versiyaları ilə müqayisə etməlisiniz. Fərqli hər şeyi çıxarmaq lazımdır.
  • Təhlükəsizlik plaginlərindən istifadə. Xüsusilə, WordPress Wordfence Təhlükəsizlik plaginini təklif edir. Onun kənar kod məzmunu üçün səhifə fayllarını skan etmək imkanı var.
  • Hostinq dəstəyindən istifadə. Sayt sahibi resursu antivirusu ilə skan etmək tələbi ilə onlarla əlaqə saxlamaq hüququna malikdir. Nəticədə, onlar yoluxmuş faylların mövcudluğunu göstərən hesabat təqdim edəcəklər. Bu fayllar adi mətn redaktoru vasitəsilə kənar strukturlardan təmizlənə bilər.
  • Sayta giriş SSH vasitəsilə. Axtarış özü əmrlərdən istifadə edərək həyata keçirilir:

tap / cari səhifə kataloqu -tip f -iname "*" -exek - "qiymətləndirmə" () \; > ./eval.log

tap / cari səhifə kataloqu -tip f -iname "*" -exek- "base64" () \; > ./base64.log

tap / cari səhifə kataloqu -tip f -iname "*" -exek - "file_get_contents" () \; > ./file_get_contents.log

Onların icrası nəticəsində şübhəli fayllar haqqında məlumat əldə ediləcək. Bu faylların siyahısı cari kataloqda saxlanılan jurnala yazılacaq.

  • Eval funksiyasından istifadə edərək vebsaytda zərərli kodun yoxlanılması. Bu php funksiyası icra üçün istənilən, hətta şifrələnmiş kodu işə salır. Arqumentlərdən biri olaraq, kodlaşdırma növü bu funksiyanın girişinə verilir (bir qayda olaraq, base64_decode və ya str_rot13). Məhz məşhur kodlaşdırmaların istifadəsi sayəsində zərərli kod mənasız Latın hərfləri dəsti kimi görünür.

Səhifə redaktorunu açın.

functions.php faylının məzmununu mübadilə buferinə köçürün.

İstənilən yerə daxil edin mətn redaktoru(notebook).

Qiymətləndirmə əmrini tapın.

  • Zərərli kodu silməzdən əvvəl funksiyanın hansı parametrləri daxil etməyi gözlədiyini təhlil edin. Çünki parametrlər şifrələnmiş formada olur, dekoderlərdən istifadə etməklə onların şifrəsini açmaq lazımdır. Daxiletmə parametrini tanıdıqdan sonra onun funksiyaları.php faylının mətnində sonrakı yeri barədə qərar verə bilərsiniz.

Zərərli kodun silinməsi

Zərərli kodu aşkar etdikdən sonra onu mətn faylında adi sətir kimi sadəcə silmək lazımdır.

Zərərli koddan qorunma

Saytda zərərli kodun görünməsinin qarşısını almaq üçün bir sıra qabaqlayıcı tədbirlərə əməl edilməlidir.

Yalnız sübut edilmiş proqram təminatından istifadə edin:

  • Yalnız etibarlı mənbələrdən paylamaları endirin.
  • Eyni zamanda server proqram təminatı yeniləməsini işə salın.
  • Müntəzəm server təhlükəsizlik auditlərini həyata keçirin.
  • Köhnəlmiş sazlama skriptlərini silin.

Server proqramında güclü parollar quraşdırın:

  • Müxtəlif hallarda rəqəmləri və hərfləri ehtiva edən 12 simvoldan ibarət bir konstruksiya ilə gəlin.
  • Xidmətlərin hər biri üçün öz unikal parolunuzu yaradın.
  • Parollarınızı hər 3 aydan bir dəyişdirin.

İstifadəçilər tərəfindən daxil edilmiş məlumatlara nəzarət edin:

  • Daxiletmə sahələrində HTML işarələmə filtrlərini qurun, məzmunu səhifə koduna daxil ediləcək.
  • Etibarlı intervala qarşı daxil edilmiş məlumatların server tərəfində təsdiqini təşkil edin.
  • WAF istifadə edin. Veb Tətbiq Firewall veb saytınızı haker hücumlarından qorumaq üçün güclü bir vasitədir.

Resursunuza giriş hüquqlarını fərqləndirin.

Saytınızın mühərrikinin və onun verilənlər bazalarının idarəetmə alətlərinə girişi bloklayın və ya məhdudlaşdırın. Həmçinin, konfiqurasiya fayllarına və iş kodu ehtiyat nüsxələrinə girişi bağlayın.

İstifadəçi fayllarını yükləmək imkanı olan saytlar zərərli kodun belə nüfuzuna ən çox həssasdır.

1. Botlardan müdafiəni təşkil edin. Bu məqsədlər üçün bir çox CMS xüsusi plaginlərlə təchiz edilmişdir;

2. İstifadəçi tərəfindən daxil edilmiş məlumatların təsdiqini konfiqurasiya edin:

  • JavaScript-in t> konstruksiyasına daxil edilməsinin qarşısını alın.
  • Təhlükəsiz HTML teqlərinin siyahısını saxlayın və bu siyahıda olmayan konstruksiyaları süzün.
  • İstifadəçilərin göndərdiyi bağlantıları təhlil edin.
  • Bunun üçün xüsusi xidmətlər var, məsələn Safe Browsing API. Bu, URL vasitəsilə sənədin təhlükəsizliyini yoxlamağa imkan verir.

Zərərli kodun təsadüfən yerləşdirilməsinin qarşısını necə almaq olar.

  • İstifadə etdiyiniz proqramı diqqətlə izləyin:

CMS kitabxanalarını və genişləndirmələrini yalnız etibarlı mənbələrdən, ən yaxşısı isə rəsmi saytlardan yükləyin.

Saytınızın mühərrikinə yerləşdirəcəyiniz qeyri-standart genişləndirmələrin kodunu öyrənin.

  • Reklamlarınızı çox diqqətlə yerləşdirin:

Saytınızda yalnız etibarlı reklamçıların təklif etdiyi reklamları dərc edin.

Səhifənizdə statik məzmun yerləşdirməyə çalışın.

Gizli blok ortaq proqramlarından çəkinin.

  • istifadəçilər vebsaytın brauzer və/yaxud proqramlar tərəfindən bloklandığından şikayət edirlər
  • vebsayt Google və ya digər zərərli URL bazası tərəfindən qara siyahıya salınıb
  • trafikin həcmində və/və ya axtarış motorlarının reytinqlərində böyük dəyişikliklər baş verib
  • veb sayt lazım olduğu kimi işləmir, səhvlər və xəbərdarlıqlar verir
  • vebsayta daxil olduqdan sonra kompüter qəribə davranır.

Zərərli kod çox vaxt uzun müddət diqqətdən kənarda qalır, xüsusən də çox mürəkkəb zərərli proqramla yoluxmuşdur. Bu cür zərərli proqram adətən həm veb-sayt administratorlarını, həm də antivirus proqramlarını çaşdırmaq üçün ciddi şəkildə çaşdırılır; istifadəçiləri yönləndirdiyi domen adlarını daim dəyişir, beləliklə də qara siyahılardan yan keçir. Yuxarıda göstərilən simptomlardan heç biri yoxdursa, bu, serverinizin təmizliyinin yaxşı göstəricisidir, baxmayaraq ki, təəssüf ki, 100% deyil; buna görə də hər hansı şübhəli fəaliyyətə qarşı diqqətli olun.

Hər hansı bir zərərli proqram infeksiyasının ən bariz əlaməti bir və ya bir neçə faylda - əsasən HTML, PHP və ya JS formatında və bir müddətdir ki, ASP/ASPX-də zərərli/şübhəli kodun olmasıdır. Bu kodu tapmaq asan deyil, bunun üçün ən azı proqramlaşdırma və veb saytın inkişafının əsasları haqqında bilik tələb olunur. Oxucunun zərərli kodun nəyə bənzədiyini daha yaxşı başa düşməsi üçün veb səhifələrin ən çox yayılmış yoluxmasına dair bir neçə nümunə təqdim edirik.

Nümunə 1: sadə yönləndirmə

Ən qədim və ən sadə üsul kibercinayətkarlar tərəfindən istifadə edilən serverdəki HTML fayllarının koduna sadə HTML iframe teq əlavə etməkdir. IFrame-də zərərli vebsaytı yükləmək üçün istifadə edilən URL SRC atributu kimi müəyyən edilmişdir; “gizli”nin VISIBILITY atributu çərçivəni vebsayta daxil olan istifadəçi üçün görünməz edir.

Şəkil 1: Zərərli IFrame Inside Vebsayt HTML

İstifadəçinin brauzerində zərərli skripti icra etməyin başqa bir üsulu bu skriptə keçidi skriptdə və ya img teqlərində src atributu kimi HTML faylına yerləşdirməkdir:

Şəkil 2: Zərərli keçidlərin nümunələri

Son zamanlar zərərli kodun dinamik şəkildə yaradıldığı və zərərli JS və ya PHP skriptləri tərəfindən HTML koduna yeridilməsi halları getdikcə daha çox olur. Belə hallarda kod yalnız brauzerdən səhifənin mənbə görünüşündə görünür, serverdəki fiziki fayllarda deyil. Kibercinayətkarlar əlavə olaraq zərərli kodun yaradılmalı olduğu şərtləri müəyyən edə bilərlər: məsələn, yalnız istifadəçi müəyyən axtarış sistemlərindən sayta keçdikdə və ya konkret brauzerdə veb-sayt açdıqda.

Kibercinayətkarlar həm veb-sayt sahibini, həm də antivirus proqramını aldatmaq və zərərli kodu çətinləşdirmək üçün müxtəlif kod gizlətmə üsullarından istifadə edirlər.

Misal 2: "Xəta 404: Səhifə tapılmadı"

Bu misalda, göstərilən obyekt serverdə tapılmadıqda (məşhur "404 xətası") göstərilən mesaj şablonuna zərərli kod yeridilir. Bundan əlavə, istifadəçi yoluxmuş veb səhifəni hər dəfə ziyarət etdikdə görünməz şəkildə bu xətaya səbəb olmaq üçün index.html / index.php fayllarına bəzi mövcud olmayan elementə keçid yeridilir. Bu üsul müəyyən çaşqınlığa səbəb ola bilər: vebsayta cavabdeh olan şəxs hansısa antivirus həllinin vebsaytı yoluxmuş kimi qeyd etdiyi barədə mesaj alır; səthi yoxlamadan sonra məlum olur ki, zərərli kod, görünür, mövcud olmayan obyektdə tapılıb; bu, yalançı həyəcan siqnalı olduğunu (səhv olaraq) güman etmək istəyinə gətirib çıxarır.

Şəkil 3. Trojan.JS.Iframe.zs - 404 səhv mesajı şablonunda zərərli skript

Bu xüsusi halda, zərərli kod gizlədilib. Deobfuscation sonra, biz skriptin məqsədi zərərli URL istifadəçilər yönləndirmək üçün istifadə olunacaq IFRAME tag yeritmək olduğunu görə bilərik.

Şəkil 4. Trojan.JS.Iframe.zs - deobfuscation sonra zərərli kod

Misal 3: zərərli kodun seçmə yeridilməsi

Oxşar kod eyni serverə yüklənmiş zərərli PHP skriptindən istifadə edərək serverdə yerləşən bütün HTML fayllarına dinamik şəkildə (yəni xüsusi şərtlərdən asılı olaraq) yaradıla və əlavə edilə bilər. Aşağıdakı misalda göstərilən skript UserAgent parametrini (istifadəçinin brauzeri, eləcə də axtarış botları tərəfindən göndərilir) yoxlayır və vebsayt bot tərəfindən tarandıqda və ya sayt ziyarətçiləri Opera və ya Safari brauzerlərindən istifadə edərsə, zərərli kod əlavə etmir. Bu yolla, hücum üçün istifadə edilən xüsusi istismara qarşı immuniteti olan brauzer istifadəçiləri həmin istismara yönləndirilməyəcək. Həmçinin qeyd etmək lazımdır ki, koddakı şərhlər qəsdən yanıltıcıdır və bu skriptin bot statistikası ilə əlaqəsi olduğunu göstərir.

Şəkil 5. Trojan.PHP.Iframer.e – PHP skriptini yoluxduran kod

Bu üsuldan əks istiqamətdə də istifadə etmək olar: kibercinayətkarlar qanunsuz, şübhəli və ya zərərli məzmuna (spam, casus proqram, proqram təminatı, fişinq resursları) aparan keçidləri yalnız axtarış botu vebsayta daxil olduqda daxil edə bilərlər. Belə bir hücumun məqsədi sözdə qara optimallaşdırmadır - axtarış nəticələrində kibercinayətkar resursun mövqeyini yüksəltmək üçün mexanizm. Bu cür zərərli proqram adətən populyar, yüksək reytinqli veb portalları hədəf alır və zərərli kod heç vaxt orta istifadəçiyə göstərilmədiyi üçün aşkarlanması olduqca çətindir. Nəticə etibarı ilə zərərli saytlar axtarış sistemlərində yüksək reytinqlər alır və axtarış nəticələrinin zirvəsində olurlar.

Misal 4: çətin anlaşılmazlıq

PHP skriptlərinin yoluxması başqa formaları da ala bilər. Aşağıda bir neçə ay əvvəl aşkar edilmiş iki nümunə verilmişdir.


Şəkil 6. Trojan-Downloader.PHP.KScript.a - PHP skriptini yoluxdurur


Şəkil 12. Trojan-Downloader.JS.Twetti.t - JS fayllarına zərərli kod yeridilir

Nəhayət, təsadüfi domen adlarından istifadə edilən kütləvi zərərli proqram yoluxma halı məlumdur. Bu zərərli proqrama yoluxmuşsunuzsa, veb saytınızda aşağıdakı kodu tapa bilərsiniz:

Şəkil 13. Təsadüfi yaradılmış domenə yönləndirən kodun qarışıq versiyası

Nümunə 6: "gootkit" və bütün faylı çaşdırmaq

Təmiz kodun qalan hissəsi arasında gizlədilmiş zərərli kodu asanlıqla aşkar etmək olar və buna görə də bu yaxınlarda kibercinayətkarlar bütün fayl məzmununu çaşdırmaq ideyası ilə çıxış etdilər və beləliklə, həm yeridilmiş, həm də qanuni kodu oxunmaz hala gətirdilər. Qanuni kodu zərərli koddan ayırmaq mümkün deyil və fayl yalnız şifrəsi açıldıqdan sonra dezinfeksiya edilə bilər.

düyü. 14. Fayl "gootkit" zərərli proqram tərəfindən gizlənir

Birinci səviyyəli çaşqınlıqdan xilas olmaq çətin deyil, bunun üçün sadəcə olaraq eval () funksiyasını xəbərdar etmək () - və ya konsolda çap etmək () funksiyasını dəyişdirmək və icra üçün işə salmaq lazımdır. İkinci səviyyə bir qədər daha mürəkkəbdir: bu halda domen adı kodun şifrələnməsi üçün açar kimi istifadə olunur.

düyü. 15: "gootkit" - qarışıqlığın ikinci səviyyəsi

Şifrəni açdıqdan sonra faylın orijinal məzmunundan sonra zərərli kodu görə bilərsiniz:

düyü. 16: "gootkit" - aydın olmayan kod

Bəzən zərərli hissə əvvəlki nümunədə müzakirə olunan zərərli proqramın ikinci versiyası olur və yönləndirmə üçün psevdo-təsadüfi domen adı yaratmaq üçün istifadə olunur.

Misal 7: .htaccess

Kibercinayətkarlar skriptləri və HTML kodunu yoluxdurmaq əvəzinə bəzi faylların, məsələn, .htaccess funksiyalarından istifadə edə bilərlər. Bu cür fayllarda administrator serverdəki müəyyən qovluqlara giriş hüquqlarını müəyyən edə bilər, həmçinin müəyyən hallarda istifadəçiləri digər URL-lərə yönləndirə bilər (məsələn, istifadəçi mobil cihazın brauzerindən daxil olarsa, o, bu ünvana yönləndirilir. mobil versiya vebsayt). Kibercinayətkarların bu funksiyadan necə istifadə etdiyini təxmin etmək çətin deyil...

düyü. 17: zərərli .htaccess

Yuxarıdakı misalda, əksər əsas axtarış sistemlərində (HTTP_REFERER parametri) keçiddən sonra bu veb-saytı ziyarət edən bütün istifadəçilər zərərli URL-ə yönləndirilir. Bundan əlavə, bu .htaccess faylı heç bir yönləndirmə aparılmayan kifayət qədər çox sayda brauzer və botları müəyyən edir (HTTP_USER_AGENT parametri). Veb səhifə keşdən oxunsa (referer == cache) və ya eyni kompüterdən yenidən yüklənərsə (kuki parametri) yönləndirmə də baş vermir.

Bu cür zərərli proqram həm də daha selektiv yoluxmalara imkan verir - məsələn, xüsusi İP ünvanları istisna etmək olar və xüsusi IP ünvanlar diapazonundan vebsaytlara baxarkən - məsələn, informasiya təhlükəsizliyi şirkətinə məxsus - heç bir zərərli nəticələr yoxdur.

Hücum vektorları və infeksiya texnologiyaları

İstifadə olunan texnologiyadan asılı olmayaraq, kibercinayətkarlar zərərli faylları serverə çatdırmaq və ya serverdə artıq mövcud olan faylları dəyişdirmək üçün bir yol tapmalıdırlar. Serverə giriş əldə etməyin ən primitiv üsulu giriş parolunu sındırmaqdır. Bunun üçün kibercinayətkarlar brute-force hücumu adlanan üsuldan və ya onun məhdud versiyasından - brute-force hücumundan (lüğət hücumundan) istifadə edə bilərlər. Bu taktika adətən tələb edir böyük rəqəm vaxt və resurslar, buna görə də veb saytların kütləvi infeksiyaları üçün nadir hallarda istifadə olunur. Daha populyar ssenarilərə parolları oğurlamaq üçün zəifliklərdən və zərərli proqramlardan istifadə daxildir.

Məzmun idarəetmə sistemində / e-ticarət sistemində zəifliklərin istismarı

Müasir veb məzmunun idarə edilməsi platformalarının əksəriyyəti (məsələn, məzmunun idarə edilməsi sistemi (CMS), e-ticarət, idarəetmə panelləri və s.) qüsursuzdur və başqalarına autentifikasiya olmadan faylları serverə yükləməyə imkan verən zəifliklərə malikdir. Və tərtibatçılar daim belə zəiflikləri axtarsalar da, yamaqların buraxılması çox vaxt aparır; Bundan əlavə, bir çox istifadəçi çoxlu səhvlərlə proqramların köhnə versiyalarından istifadə etməyə davam edir. Çox vaxt boşluqlar, əlbəttə ki, WordPress, Joomla və osCommerce kimi ən populyar platformalarda olur.

Bu cür zəifliyin tanınmış nümunəsi kibercinayətkarlar tərəfindən müxtəlif sürücülüklə yükləmə ssenarilərində geniş şəkildə istifadə edilən TimThumb-dır. TimThumb, açıq mənbəli CMS şablonlarının əksəriyyətinə daxil edilmiş şəkillərin ölçüsünü dəyişmək və sözdə qrafik miniatürlər yaratmaq üçün PHP moduludur. Zəiflik uzaq maşında yerləşən faylları keş kataloqundakı serverə yazmağa imkan verir. Digər misal, 2012-ci ilin fevralında aşkar edilmiş Plesk Panel-də (10 və sonrakı versiyalar) SQL inyeksiya zəifliyidir ki, bu da sizə verilənlər bazalarını oxumağa və yaxın vaxtlara qədər açıq şəkildə saxlanılan parolları oğurlamağa imkan verir. Bu şəkildə əldə edilmiş etimadnamələr, ehtimal ki, bu yaxınlarda baş vermiş kütləvi internet epidemiyasında istifadə edilmişdir http://www.securelist.com/en/blog/208193624/Who_is_attacking_me; https://www.securelist.com/ru/blog/208193713/RunForestRun_gootkit_i_generirovanie_sluchaynykh_domennykh_imen.

FTP server etimadnaməsini oğurlamaq üçün casus proqramlardan istifadə

Ən çox yayılmış veb infeksiyalarında (məsələn, Gumblar və Pegel) başqa bir üsul uğurlu olmuşdur. Birinci mərhələdə kibercinayətkarlar FTP müştəri parametrlərini yoxlamaq və ya şəbəkə trafikini skan etməklə FTP istifadəçi adlarını və parollarını tapmaq və oğurlamaq üçün xüsusi olaraq hazırlanmış zərərli proqramları yayırlar. Zərərli proqram bu qeydiyyat məlumatlarını sayt administratorunun yoluxmuş kompüterində tapdıqdan sonra proqram FTP serveri ilə əlaqə qurur və zərərli skriptləri yükləyir və ya orijinal faylların əvəzinə onların yoluxmuş versiyalarını yazır. Sözsüz ki, hesab sahibinin kompüteri yoluxduqca, serverdə saxlanılan fayllar hətta qeydiyyat məlumatlarını dəyişdirdikdən və bütün məzmunu təmiz ehtiyat nüsxədən bərpa etdikdən sonra təkrar-təkrar yoluxacaq.

Kibercinayətkarların hədəfləri

Veb saytın infeksiyasının məqsədi nədir?

  • istifadəçilərin kompüterlərində görünməz şəkildə zərərli proqram quraşdırmaq üçün istismarlara yönləndirilməsi;
  • istifadəçilərin spam, fişinq və digər zərərli, qeyri-qanuni və ya arzuolunmaz məzmuna yönləndirilməsi;
  • sayt ziyarətlərinin / axtarış sorğularının tutulması / oğurlanması.
  • zərərli / qeyri-qanuni saytların və spam ehtiva edən vebsaytların təşviqi (qara optimallaşdırma);
  • qeyri-qanuni fəaliyyət üçün server resurslarından istifadə.

Əsasən, bu, yeni bir şey deyil: kibercinayətkarlar veb-saytlara yoluxduqda, onları dolayı gəlir əldə etmək istəyi idarə edir.

Zərərli kodu aradan qaldırmaq üsulları

Saytınız haker hücumuna məruz qalsa nə etməli?

Birincisi, mümkün infeksiyaya işarə edən simptomları görsəniz, problem həll olunana qədər veb saytı dərhal deaktiv etməlisiniz. Bu, həqiqətən də son dərəcə vacibdir, çünki hər gecikmə anı kibercinayətkarların əlinə keçərək, daha çox kompüterin yoluxmasına və infeksiyanı yaymasına imkan verir. Siz server qeydlərini şübhəli fəaliyyətə görə yoxlamalısınız, məsələn, sayt ziyarətçiləri üçün səciyyəvi olmayan ölkələrdə yerləşən İP ünvanlardan gələn qəribə sorğular və s. - bu, yoluxmuş faylları aşkar etmək və kibercinayətkarların serverə necə giriş əldə etdiyini dəqiq müəyyən etmək üçün faydalı ola bilər.

Bəs zərərli kodla necə məşğul olmaq olar?

Yedək nüsxəsi

Ən sürətli və etibarlı yol serverin bütün məzmununu bərpa etmək - təmiz ehtiyat nüsxəsindən istifadə etməklə. Bunu effektiv etmək üçün həmçinin serverdə işləyən proqram təminatının (məzmun idarəetmə sistemi/CMF, e-ticarət sistemləri və s.) tam yenidən quraşdırılmasını həyata keçirmək lazımdır. Təbii ki, bunun üçün ən son, tam yenilənmiş versiyaların istifadə edilməsi tələb olunur. Bu addımlardan sonra serverdə heç bir yoluxmuş fayl qalmamalıdır - bir şərtlə ki, siz bərpa etməzdən əvvəl bütün məzmunu sildiniz və hətta hücum başlamazdan əvvəl ehtiyat nüsxəsi yaradılsın.

Avtomatik yoxlama

Təmiz ehtiyat nüsxəniz yoxdursa, zərərli proqramlarla mübarizəyə başlamaqdan başqa çarəniz yoxdur. Xoşbəxtlikdən, zərərli kodu tapmaqda sizə kömək edə biləcək bir sıra avtomatlaşdırılmış həllər var, o cümlədən antivirus məhsulları və http://sucuri.net/ kimi onlayn veb sayt taramaları. Onların heç biri mükəmməl deyil, lakin tanınmış / ümumi zərərli proqram halında, hamısı olduqca faydalı ola bilər. Başlamaq üçün bir çox onlayn skanerdən istifadə edərək veb saytı yoxlaya bilərsiniz. Onlardan bəziləri nəinki saytınızın həqiqətən yoluxmuş olub olmadığını müəyyən edəcək, həm də fayllarınızdakı zərərli kodu göstərəcək. Sonra serverdəki bütün faylların tam antivirus taramasını həyata keçirə bilərsiniz.

Əgər siz server sahibisinizsə və ya server sizin istifadə etməyə icazə verdiyiniz təhlükəsizlik həllini işlədirsə, server tərəfində yoxlama apara bilərsiniz. Fayllarınızın surətini yaratdığınızdan əmin olun, çünki bəzi antivirus skanerləri yoluxmuş faylları müalicə etmir, əksinə onları silin! Siz həmçinin serverinizin məzmununu yerli kompüterinizə yükləyə və onu masaüstü antivirus həlli ilə skan edə bilərsiniz. İkinci seçimə üstünlük verilir, çünki masaüstü kompüterlər üçün müasir antivirus proqramlarının əksəriyyəti yaxşı işlənmiş evristik modula malikdir. Veb saytları yoluxduran zərərli proqramlar yüksək polimorfikdir: imza təhlili bununla mübarizə üçün demək olar ki, faydasız olsa da, evristik üsullar onu aşkar etməyi asanlaşdırır.

Əl ilə çıxarılması

Avtomatik skan heç bir nəticə vermədisə və hələ də saytınızın yoluxması barədə mesajlar alırsınızsa, zərərli proqramdan xilas olmağın yeganə yolu onu əl ilə tapmaq və bütün zərərli kodu silməkdir. Bu çətin tapşırıq xeyli vaxt tələb edə bilər, çünki HTML, JS, PHP və ya konfiqurasiya faylı olsun, hər bir fayl zərərli skriptlər üçün yoxlanılmalıdır. Yuxarıdakı nümunələr vebsaytlar üçün müxtəlif zərərli proqramların kiçik bir seçimidir, buna görə də saytınızdakı zərərli kodun bu nümunələrdən qismən və ya tamamilə fərqli olacağı ehtimalı yüksəkdir. Bununla belə, əksər müasir veb-sayt zərərli proqramları problemi müəyyən etməyə kömək edəcək bəzi ümumi xüsusiyyətlərə malikdir.

Ən çox da kodun anlaşılmaz və ya oxunmaz görünən hissələrinə diqqət yetirməlisiniz. Kod çaşqınlığı, tez-tez istifadə olunan bir texnologiya, veb saytlarla əlaqəli hər hansı digər proqram üçün olduqca qeyri-adidir. Əgər kodu özünüz qarışdırmamısınızsa, ondan şübhələnmək üçün hər cür səbəbiniz var. Ancaq diqqətli olun - bütün qarışıq kodlar zərərli olmayacaq!

Eyni şəkildə, hər bir zərərli skript gizlədilmir, ona görə də bütün fayllarınızda açıq IFRAME teqləri və xarici resurslara digər keçidlər axtarmaq mənasızdır. Onlardan bəziləri reklamlar və statistika ilə əlaqəli ola bilər, lakin tanınmış və etibarlı portallar kimi görünmək çaşdırıcı ola biləcək xüsusi hazırlanmış URL-lərə aldanmayın. Bütün .htaccess faylları kimi, səhv kodunu yoxlamağı unutmayın.

Grep və find şübhəsiz ki, serverdə zərərli kodu tapmaq üçün faydalı alətlər, demək olar ki, bütün Unix əsaslı sistemlərdə standart olaraq daxil edilmiş komanda xətti utilitləridir. Aşağıda ən çox yayılmış infeksiyaların diaqnostikasında onların istifadəsinə dair nümunələr verilmişdir:

grep -iRs "iframe" *
grep -iRs "qiymətləndirmə" *
grep -iRs "qaçmaq" *
grep -iRs "base64_decode" *
grep -iRs “var div_colors” *
grep -iRs “var _0x” *
grep -iRs "CoreLibrariesHandler" *
grep -iRs "pingnow" *
grep -iRs "serchbot" *
grep -iRs “km0ae9gr6m” *
grep -iRs “c3284d” *
tapmaq. -iname “upd.php”
tapmaq. -iname “* timthumb *”

Təsvir grep (Linux təlimatından): nümunəyə uyğun çap xətləri; -i variantı halı nəzərə almamaq deməkdir; -R rekursiv axtarış deməkdir və -s səhv mesajlarının göstərilməsinə mane olur. Sadalanan əmrlərdən birincisi IFRAME teqləri üçün faylları axtarır; digər üçü çaşqınlığın ən bariz əlamətlərini axtarır; qalanları ən böyük tanınmış veb-sayt infeksiyaları ilə əlaqəli xüsusi sətirləri axtarır.

Tapmağa gəldikdə, Linux təlimatında deyilir: iyerarxik qovluq strukturunda faylları tapın; "." (nöqtə) cari qovluğu göstərir (buna görə də bu əmrlər serverdəki kök kataloqdan və ya ev kataloqundan işlənməlidir), -iname parametri axtarılacaq faylı təyin edir. Müəyyən meyarlara uyğun gələn bütün faylları tapmaq üçün müntəzəm ifadələrdən istifadə edə bilərsiniz.

Əlbəttə ki, həmişə nə axtarmaq lazım olduğunu bilməlisiniz - bütün nəticələr infeksiyanı göstərməyəcək. Yaxşı olar ki, kodun şübhəli hissələrini antivirus skaneri ilə yoxlayın və ya onları google-da axtarmağa cəhd edin. Çox güman ki, bəzi cavablar tapacaqsınız - həm zərərli, həm də təmiz kod üçün. Əgər faylın yoluxduğuna hələ də əmin deyilsinizsə, yaxşı olar ki, veb-saytı deaktiv edin (hər halda) və hər hansı tədbir görməzdən əvvəl peşəkar məsləhət axtarmaq lazımdır.

Çox vacib!

Serverdəki faylları təmizləməkdən əlavə, serverdəki məzmunu yükləmək və idarə etmək üçün istifadə olunan bütün kompüterlərin tam antivirus taramasını həyata keçirmək və serverdəki bütün hesablara (FTP, SSH, idarəetmə panelləri) daxil olmaq üçün bütün məlumatları dəyişdirmək vacibdir. və s.) dəstəklədiyiniz...

Vebsaytlar üçün Təhlükəsizlik Əsasları

Təəssüf ki, əksər hallarda zərərli kodun silinməsi infeksiyadan birdəfəlik xilas olmaq üçün kifayət etmir. Əgər vebsaytınız yoluxmuşdursa, bu, kibercinayətkarların serverə zərərli skriptlər yeritməsinə imkan verən boşluqların mövcudluğunu göstərə bilər; və bu problemə məhəl qoymasanız, yaxın gələcəkdə sizi yeni infeksiyalar gözləyir. Bunun qarşısını almaq üçün serveri və serveri idarə etmək üçün istifadə olunan kompüteri/kompüterləri qorumaq üçün müvafiq tədbirlər görməlisiniz.

  • Güclü parolların istifadəsi. Bu məsləhətin əhəmiyyətsizliyinə baxmayaraq, həqiqətən server təhlükəsizliyinin əsasını təşkil edir. Hər insidentdən və/və ya serverə hücumdan sonra parolların dəyişdirilməsi təkcə zəruri deyil - onlar müntəzəm olaraq, məsələn, aylıq dəyişdirilməlidir. Yaxşı parol www.kaspersky.com/passwords saytında tapa biləcəyiniz xüsusi meyarlara cavab verməlidir;
  • Daimi yeniləmələr. Həm də müntəzəm yeniləmələri unutmamaq lazımdır. Kibercinayətkarlar tez-tez zərərli proqramın hədəfindən - istər kompüter istifadəçilərini, istərsə də veb-saytları hədəf almasından asılı olmayaraq proqram təminatındakı boşluqlardan istifadə edirlər. Serverinizi / saytınızın məzmununu idarə etdiyiniz bütün proqramlar ən çox olmalıdır son versiyalar və hər bir təhlükəsizlik yeniləməsi buraxılan kimi quraşdırılmalıdır. Ən son proqram versiyalarından istifadə və vaxtında quraşdırma bütün lazımi yamalar istismar hücumu riskini azaltmağa kömək edəcək. Məlum zəifliklərin müntəzəm olaraq yenilənən siyahısını http://cve.mitre.org/ saytında tapa bilərsiniz;
  • Daimi ehtiyat nüsxələri. Anbarda server tərəfindəki məzmunun təmiz bir nüsxəsinə sahib olmaq, təzədən bəhs etmədən bir ton vaxt və səyə qənaət edəcəkdir. ehtiyat nüsxələri infeksiyanın müalicəsi ilə yanaşı, digər problemlərin həllində çox faydalı ola bilər;
  • Daimi fayl yoxlanışı. Aşkar infeksiya əlamətləri olmadıqda belə, zərərli kodu aşkar etmək üçün serverdəki bütün faylları vaxtaşırı skan etmək tövsiyə olunur;
  • Kompüterinizin təhlükəsizliyi. Veb saytlar üçün zərərli proqramların əhəmiyyətli bir hissəsi yoluxmuş kompüterlər vasitəsilə yayıldığından, veb-saytınızı idarə etmək üçün istifadə olunan masaüstü kompüterin təhlükəsizliyi vebsayt təhlükəsizliyi üçün əsas prioritetlərdən biridir. Kompüterinizi davamlı olaraq təmiz və təhlükəsiz saxlamaq vebsaytınızın da təhlükəsiz və virussuz olması ehtimalını əhəmiyyətli dərəcədə artırır.
  • Aşağıdakı tədbirlər məcburi olmalıdır (lakin kifayət deyil):
    • istifadə olunmamış proqramların silinməsi;
    • lazımsız xidmətlərin və modulların deaktiv edilməsi;
    • fərdi istifadəçilər və istifadəçi qrupları üçün müvafiq siyasətlərin yaradılması;
    • müəyyən fayl və qovluqlara adekvat giriş hüquqlarının təyin edilməsi;
    • veb serverin faylları və qovluqlarının göstərilməsinin söndürülməsi;
    • şübhəli fəaliyyət üçün müntəzəm olaraq yoxlanılan hadisə qeydlərinin aparılması;
    • şifrələmə və təhlükəsiz protokollardan istifadə.

Veb saytları yoluxdurmaq üçün hazırlanmış zərərli proqramlar veb administratorları və İnternet istifadəçiləri üçün əsl kabus ola bilər. Kibercinayətkarlar davamlı olaraq yeni istismarlar kəşf edərək texnologiyalarını inkişaf etdirirlər. Zərərli proqram internet üzərindən sürətlə yayılaraq serverlərə və iş stansiyalarına təsir edir. Düzdür demək lazımdır ki, bu təhlükəni tamamilə aradan qaldırmağın etibarlı yolu yoxdur. Bununla belə, hər bir veb-sayt sahibi və hər bir İnternet istifadəçisi əsas təhlükəsizlik qaydalarına riayət etməklə və öz veb-saytlarını və kompüterlərini hər zaman təhlükəsiz və təmiz saxlamaqla interneti daha təhlükəsiz edə bilərlər.

Şərhinizi buraxın!

Və hərtərəfli saytlararası skript dərsliyidir.

Birinci hissə: ümumi baxış

XSS nədir?

Saytlararası skript ( İngilis dili Saytlararası skript ) Təcavüzkarın başqa istifadəçinin brauzerində zərərli JavaScript-i icra etməyə imkan verən kod inyeksiya hücumudur.

Təcavüzkar birbaşa qurbanına hücum etmir. Əvəzində o, qurbanın ziyarət etdiyi vebsaytdakı boşluqdan istifadə edir və zərərli JavaScript kodunu yeridir. Qurbanın brauzeri zərərli JavaScript-i veb-saytın qanuni hissəsi kimi göstərir və veb-saytın özü təcavüzkarın birbaşa tərəfdaşı kimi çıxış edir.

Zərərli JavaScript kodunun yeridilməsi

Təcavüzkarın qurbanın brauzerində zərərli JavaScript işlətməsinin yeganə yolu onu qurbanın vebsaytdan endirdiyi səhifələrdən birinə yeritməkdir. Bu, əgər veb-sayt istifadəçilərə öz səhifələrinə məlumat daxil etməyə icazə verərsə, mümkündür və təcavüzkar qurbanın brauzerində kodun bir hissəsi kimi aşkar ediləcək sətir daxil edə bilər.

Aşağıdakı nümunə saytdakı son şərhi göstərmək üçün istifadə edilən sadə server tərəfi skripti göstərir:

çap " "
çap edin "Son şərh:"
verilənlər bazasını çap edin.latestComment
çap ""

Skript şərhin yalnız mətndən ibarət olduğunu güman edir. Lakin, birbaşa istifadəçi daxiletməsi aktiv olduğundan, təcavüzkar bu şərhi tərk edə bilər: "". Səhifəni ziyarət edən istənilən istifadəçi indi aşağıdakı cavabı alacaq:


Son şərh:

İstifadəçinin brauzeri səhifəni yüklədikdə, teqlərdə olan JavaScript daxil olmaqla, hər şeyi yerinə yetirəcək. ... Bu onu göstərir ki, hansı konkret skript kodunun əslində icra olunmasından asılı olmayaraq, skript yeridən təcavüzkarın sadəcə mövcudluğu problemdir.

İkinci hissə: XSS hücumu

XSS hücumunun iştirakçıları

XSS hücumunun necə işlədiyini ətraflı təsvir etməzdən əvvəl XSS hücumunda iştirak edən aktyorları müəyyən etməliyik. Ümumiyyətlə, XSS hücumunda üç iştirakçı var: Veb sayt, qurban, və kraker.

  • Veb sayt tələb edən istifadəçilər üçün HTML səhifələri istehsal edir. Nümunələrimizdə o, http: // website / ünvanında yerləşir.
    • Veb sayt məlumat bazası istifadəçilərin saytın səhifələrində daxil etdikləri məlumatların bir qismini saxlayan verilənlər bazasıdır.
  • Qurban Brauzerindən istifadə edərək ondan səhifələr tələb edən müntəzəm veb-sayt istifadəçisidir.
  • Hücum Saytdakı XSS ​​zəifliyindən istifadə edərək qurbana hücum etmək niyyətində olan təcavüzkardır.
    • Kraker server Yalnız qurbanın məxfi məlumatlarını oğurlamaq məqsədi ilə təcavüzkarın nəzarəti altında olan veb serverdir. Nümunələrimizdə o, http: // hücumçu / ünvanında yerləşir.

Hücum ssenarisi nümunəsi

Bu skript istifadəçinin brauzerini təcavüzkarın serverinə yönləndirəcək fərqli URL-ə HTTP sorğusu yaradacaq. URL sorğu parametri kimi qurbanın kukilərini ehtiva edir, HTTP sorğusu təcavüzkarın serverinə gəldikdə, təcavüzkar bu kukiləri sorğudan çıxara bilər. Təcavüzkar kukiləri aldıqdan sonra onlardan qurbanı təqlid etmək və sonrakı hücuma başlamaq üçün istifadə edə bilər.

Bundan sonra yuxarıdakı HTML kodu çağırılacaq zərərli string və ya zərərli skript... Başa düşmək vacibdir ki, sətir yalnız zərərçəkmişin brauzerində HTML kimi işləndiyi halda zərərlidir və bu, yalnız vebsaytda XSS zəifliyi olduqda baş verə bilər.

Bu nümunə hücum necə işləyir

Aşağıdakı diaqram hücumu həyata keçirən təcavüzkarın nümunəsini göstərir:

  1. Təcavüzkar veb-saytın verilənlər bazasına zərərli sətir daxil etmək üçün vebsaytın formalarından birini istifadə edir.
  2. Qurban bir internet saytından səhifə tələb edir.
  3. Sayt cavabda verilənlər bazasından zərərli sətir daxil edir və onu qurbana göndərir.
  4. Qurbanın brauzeri cavab daxilində zərərli skripti işlədir və qurbanın kukisini təcavüzkarın serverinə göndərir.

XSS növləri

XSS hücumunun hədəfi həmişə qurbanın brauzerində zərərli JavaScript skriptini icra etməkdir. Bu məqsədə çatmağın bir neçə əsaslı fərqli yolu var. XSS hücumları çox vaxt üç növə bölünür:

  • Saxlanılan (davamlı) XSS zərərli sətirin veb saytın verilənlər bazasından qaynaqlandığı yer.
  • Yansıtılmış (uçucu) XSS zərərli simli qurbanın tələbindən yarandığı yerdə.
  • DOMs XSS boşluq server tərəfindəki koddan çox müştəri tərəfindəki kodda baş verir.

Əvvəlki nümunə saxlanılan XSS hücumunu göstərir. İndi XSS hücumlarının iki başqa növünü təsvir edəcəyik: Reflected XSS və DOM XSS.

Yansıtılmış XSS

Yansıtılan XSS hücumunda zərərli sətir qurbanın vebsayta etdiyi sorğunun bir hissəsidir. Sayt bu zərərli sətri qəbul edir və istifadəçiyə göndərdiyi cavaba daxil edir. Aşağıdakı diaqram bu ssenarini göstərir:

  1. Qurban, təcavüzkar tərəfindən veb saytına URL sorğusu göndərmək üçün aldadılır.
  2. Sayt qurbanın cavabında sorğu URL-dən zərərli sətir ehtiva edir.
  3. Qurbanın brauzeri cavabda olan zərərli skripti icra edərək, qurbanın kukisini təcavüzkarın serverinə göndərir.

XSS hücumlarından necə uğurla müdafiə etmək olar?

Yansıtılmış XSS hücumu zərərsiz görünə bilər, çünki qurbandan onların adından zərərli sətir ehtiva edən sorğu göndərməsini tələb edir. Heç kim könüllü olaraq özünə hücum etməyəcəyinə görə, hücumu reallaşdırmaq üçün heç bir yol yoxdur.

Göründüyü kimi, qurbanı özlərinə qarşı əks olunan XSS hücumu etməyə məcbur etməyin ən azı iki ümumi yolu var:

  • Əgər istifadəçi konkret şəxsdirsə, təcavüzkar qurbana zərərli URL göndərə bilər (məsələn, e-poçt və ya ani messenger vasitəsilə) və vebsayta daxil olmaq üçün onları aldada bilər.
  • Hədəf böyük bir istifadəçi qrupudursa, təcavüzkar zərərli URL-yə keçid (məsələn, öz veb-saytında və ya sosial şəbəkəsində) yerləşdirə və ziyarətçilərin linkə kliklənməsini gözləyə bilər.

Bu metodların hər ikisi oxşardır və hər ikisi onu müəyyən edə biləcək istifadəçilərin zərərli sətrini maskalamaq üçün URL qısaldıcı xidmətlərdən istifadə etməklə daha uğurlu ola bilər.

DOM-da XSS

DOM XSS həm saxlanılan, həm də əks olunan XSS hücumunun variantıdır. Bu XSS hücumunda vebsaytın faktiki JavaScript-i yerinə yetirilənə qədər zərərli sətir qurbanın brauzeri tərəfindən işlənmir. Aşağıdakı diaqram əks olunan XSS hücumu üçün bu ssenarini göstərir:

  1. Təcavüzkar zərərli sətirdən ibarət URL yaradır və onu qurbana göndərir.
  2. Qurban, təcavüzkar tərəfindən veb saytına URL sorğusu göndərmək üçün aldadılır.
  3. Sayt sorğunu qəbul edir, lakin cavaba zərərli sətri daxil etmir.
  4. Qurbanın brauzeri cavabda olan qanuni skripti icra edir, nəticədə zərərli skript səhifəyə daxil ediləcək.
  5. Qurbanın brauzeri səhifəyə daxil edilmiş zərərli skripti icra edərək, qurbanın kukisini təcavüzkarın serverinə göndərir.
DOM-da XSS arasındakı fərq nədir?

Saxlanılan və əks olunan XSS hücumlarının əvvəlki nümunələrində server səhifəyə zərərli skript yeridir, sonra isə qurbana cavab olaraq ötürülür. Qurbanın brauzeri cavab aldıqda, o, zərərli skriptin səhifənin qanuni məzmununun bir hissəsi olduğunu güman edir və hər hansı digər skript kimi, onu səhifənin yüklənməsi zamanı avtomatik icra edir.

DOM XSS hücum nümunəsində zərərli skript səhifənin bir hissəsi kimi daxil edilmir; səhifənin yüklənməsi zamanı avtomatik icra olunan yeganə skript səhifənin qanuni hissəsidir. Problem ondadır ki, bu qanuni skript səhifəyə HTML əlavə etmək üçün birbaşa istifadəçi girişindən istifadə edir. Zərərli sətir innerHTML istifadə edərək səhifəyə daxil edildiyi üçün o, HTML kimi təhlil edilir və zərərli skriptin icrasına səbəb olur.

Bu fərq kiçikdir, lakin çox vacibdir:

  • Ənənəvi XSS-də zərərli JavaScript server tərəfindən göndərilən HTML-nin bir hissəsi kimi səhifə yüklənərkən icra olunur.
  • DOM-da XSS vəziyyətində, zərərli JavaScript səhifə yükləndikdən sonra icra edilir və bu, həmin qanuni JavaScript səhifəsinin istifadəçi daxiletməsinə (zərərli sətri ehtiva edən) təhlükəli şəkildə daxil olmasına səbəb olur.
XSS DOM-da necə işləyir?

Əvvəlki nümunədə JavaScript tələb olunmur; server bütün HTML-ni özü yarada bilər. Əgər server tərəfindəki kod zəifliklərdən azad olsaydı, vebsayt XSS zəifliyinə qarşı həssas olmazdı.

Bununla belə, veb tətbiqləri daha təkmilləşdikcə, hamısı böyük miqdar HTML səhifələri ilə yaradılır JavaScript istifadə edərək serverdə deyil, müştəri tərəfində. İstənilən vaxt məzmun bütün səhifəni yeniləmədən dəyişməlidir, bu, mümkündür JavaScript istifadə edərək... Xüsusilə, bu, AJAX sorğusundan sonra səhifənin yeniləndiyi haldır.

Bu o deməkdir ki, XSS boşluqları təkcə saytınızın kodunun server tərəfində deyil, həm də saytınızın müştərisinin JavaScript tərəfində ola bilər. Buna görə də, hətta tam təhlükəsiz server tərəfi kodu olsa belə, səhifə yükləndikdən sonra DOM yeniləndikdə müştəri kodu istifadəçi daxiletməsini daxil etmək üçün hələ də təhlükəsiz olmaya bilər. Əgər bu baş verərsə, o zaman müştəri tərəfi kodu server tərəfi kodunun günahı olmadan XSS hücumuna icazə verəcək.

DOM əsaslı XSS ​​serverə görünməyə bilər

DOM XSS hücumunun xüsusi halı var ki, bu zaman zərərli sətir heç vaxt vebsayt serverinə göndərilmir: bu, zərərli sətir URL-nin identifikatorunun bir hissəsində (# simvolundan sonra hər hansı bir şey) olduğu zaman baş verir. Brauzerlər URL-in bu hissəsini serverə göndərmir, ona görə də vebsayta server tərəfi kodu ilə daxil olmaq mümkün deyil. Bununla belə, müştəri tərəfi kodunun ona girişi var və beləliklə, təhlükəsiz olmayan emal vasitəsilə XSS hücumu həyata keçirmək mümkündür.

Bu hal fraqment identifikatoru ilə məhdudlaşmır. LocalStorage və IndexedDB kimi yeni HTML5 xüsusiyyətləri kimi serverə görünməyən başqa istifadəçi girişi də var.

Üçüncü hissə:
XSS-nin qarşısının alınması

XSS qarşısının alınması üsulları

Xatırladaq ki, XSS kod inyeksiya hücumudur: istifadəçi daxiletməsi səhvən zərərli kod kimi şərh olunur. Bu tip kod yeridilməsinin qarşısını almaq üçün daxiletmənin təhlükəsiz idarə edilməsi tələb olunur. Veb tərtibatçısı üçün təhlükəsiz giriş emalını yerinə yetirməyin iki əsas fərqli yolu var:

  • Kodlaşdırma istifadəçiyə məlumatı yalnız məlumat kimi daxil etməyə imkan verən və brauzerin kod kimi işlənməsinə imkan verməyən bir üsuldur.
  • Doğrulama istifadəçi daxiletməsini filtrləmə üsuludur ki, brauzer onu zərərli əmrlər olmadan kod kimi şərh etsin.

Bunlar XSS qarşısının alınmasının əsaslı şəkildə fərqli üsulları olsa da, onlardan hər hansı birini istifadə edərkən başa düşmək vacib olan bir neçə ümumi cəhət var:

Kontekst Daxiletmənin təhlükəsiz idarə edilməsi istifadəçi daxiletməsinin səhifədə harada istifadə olunduğundan asılı olaraq fərqli şəkildə həyata keçirilməlidir. daxil olan / gedən Təhlükəsiz daxiletmə emalı ya saytınız giriş (daxil olan trafik) qəbul etdikdə, ya da saytın səhifə məzmununa istifadəçi daxiletməsini daxil etməzdən əvvəl (gidən) həyata keçirilə bilər. Müştəri / Server Təhlükəsiz giriş emalı ya müştəri tərəfində, ya da server tərəfində həyata keçirilə bilər, hər biri müxtəlif şəraitlərdə lazımdır.

Kodlaşdırma və doğrulamanın necə işlədiyini ətraflı izah etməzdən əvvəl biz bu məqamların hər birini təsvir edirik.

Kontekstlərdə istifadəçi daxiletmələrinin idarə edilməsi

Veb səhifəsində istifadəçi daxiletməsinin tətbiq oluna biləcəyi bir çox kontekst var. Onların hər biri üçün xüsusi qaydalara əməl edilməlidir ki, istifadəçi daxiletməsi kontekstindən “qaçması” və zərərli kod kimi şərh edilməsin. Aşağıdakılar ən çox yayılmış kontekstlərdir:

Kontekstlər nə dərəcədə vacibdir?

Təsvir edilən bütün kontekstlərdə, əgər istifadəçi daxiletməsi ilk kodlaşdırma və ya doğrulamadan əvvəl daxil edilibsə, XSS zəifliyi yarana bilər. Təcavüzkar bu kontekst üçün bağlanan ayırıcı və ardınca zərərli kod daxil etməklə zərərli kodu yeridə bilər.

Məsələn, əgər hansısa bir anda vebsayt istifadəçi daxiletməsini birbaşa HTML atributuna daxil edərsə, təcavüzkar aşağıda göstərildiyi kimi daxiletməni dırnaq işarəsi ilə başladaraq zərərli skripti yeridə bilər:

Bunun qarşısını sadəcə olaraq istifadəçi girişindəki bütün sitatları silməklə almaq olardı və bu, yaxşı olardı, ancaq bu kontekstdə. Daxiletmə başqa kontekstdə daxil edilibsə, bağlama ayırıcı fərqli olacaq və inyeksiya mümkün olacaq. Bu səbəbdən, girişin təhlükəsiz idarə edilməsi həmişə istifadəçi daxiletməsinin daxil ediləcəyi kontekstə uyğunlaşdırılmalıdır.

Daxil olan / gedən istifadəçi girişinin idarə edilməsi

İnstinktiv olaraq elə görünə bilər ki, saytımız onu qəbul edən kimi bütün istifadəçi daxiletmələrini kodlaşdırmaq və ya təsdiqləməklə XSS-in qarşısını almaq olar. Beləliklə, hər hansı zərərli sətirlər səhifəyə daxil edildikdə artıq zərərsizləşdiriləcək və HTML nəsil skriptləri istifadəçi daxiletməsini təhlükəsiz idarə etməkdən narahat olmayacaq.

Problem ondadır ki, əvvəllər təsvir edildiyi kimi, istifadəçi daxiletməsi səhifədə bir çox kontekstlərə daxil edilə bilər. Və yox asan yol istifadəçi daxiletməsinin kontekstə nə vaxt daxil olduğunu müəyyənləşdirin - onun sonda necə daxil ediləcəyini və eyni istifadəçi girişinin çox vaxt müxtəlif kontekstlərə daxil edilməsi lazımdır. XSS-nin qarşısını almaq üçün daxil olan daxilolmaların idarə edilməsinə arxalanaraq, biz səhvə meyilli olan çox kövrək bir həll yaradırıq. (Mirsi PHP sehrli sitatları belə bir həll nümunəsidir.)

Bunun əvəzinə, gedən daxiletmənin idarə edilməsi XSS-ə qarşı əsas müdafiə xəttiniz olmalıdır, çünki o, hansı istifadəçi daxiletməsinin daxil ediləcəyi ilə bağlı xüsusi konteksti nəzərə ala bilər. Müəyyən dərəcədə, daxil olan doğrulama ikinci dərəcəli qorunma qatını əlavə etmək üçün istifadə edilə bilər, lakin bu barədə daha sonra.

İstifadəçi daxiletməsini təhlükəsiz idarə etmək mümkün olduqda

Müasir veb proqramların əksəriyyətində istifadəçi daxiletməsi həm server tərəfindəki kodda, həm də müştəri tərəfindəki kodda idarə olunur. Bütün növ XSS-dən qorunmaq üçün təhlükəsiz giriş emalı həm server tərəfində, həm də müştəri tərəfində kodda aparılmalıdır.

  • Ənənəvi XSS-dən qorunmaq üçün təhlükəsiz giriş idarəsi server tərəfi kodda aparılmalıdır. Bu, server tərəfindən dəstəklənən bəzi dillərdən istifadə etməklə edilir.
  • DOM-da XSS hücumundan qorunmaq üçün server heç vaxt zərərli sətir qəbul etmir (məsələn, əvvəllər təsvir edilmiş ID fraqment hücumu), təhlükəsiz daxiletmə klient kodunda həyata keçirilməlidir. Bu, JavaScript istifadə edərək edilir.

İndi biz kontekstin nə üçün vacib olduğunu, daxil olan və gedən daxiletmənin işlənməsi arasındakı fərqin nə üçün vacib olduğunu və nə üçün həm müştəri, həm də server tərəfində təhlükəsiz giriş emalının həyata keçirilməli olduğunu izah etdikdən sonra, iki növ təhlükəsizliyin necə olduğunu izah etməyə davam edə bilərik. giriş emalı (kodlaşdırma və doğrulama) faktiki olaraq həyata keçirilir.

Kodlaşdırma

Kodlaşdırma, brauzerin istifadəçi girişini kod deyil, yalnız məlumat kimi şərh etməsi lazım olduğu vəziyyətdən çıxış yoludur. Veb inkişafında ən populyar kodlaşdırma növü kimi simvolları çevirən HTML maskasıdır < > v < > müvafiq olaraq.

Aşağıdakı psevdokod istifadəçi daxiletməsinin (istifadəçi daxiletməsinin) HTML maskalanması ilə necə kodlaşdırıla biləcəyinə və sonra server tərəfi skriptindən istifadə edərək səhifəyə daxil edilməsinə nümunədir:

çap " "
çap edin "Son şərh:"
çap encodeHtml (userInput)
çap ""

İstifadəçi aşağıdakı sətirə daxil olarsa, nəticədə HTML belə görünəcək:


Son şərh:

Xüsusi məna daşıyan bütün simvollar maskalandığı üçün brauzer HTML kimi istifadəçi daxiletməsinin heç bir hissəsini təhlil etməyəcək.

Müştəri və server tərəfində kodlaşdırma

Müştəri tərəfində kodlaşdırma edərkən, həmişə istifadə edin JavaScript dili müxtəlif kontekstlər üçün məlumatları kodlayan daxili funksiyalara malikdir.

Server tərəfindəki kodunuzda kodlaşdırma edərkən, siz dilinizdə və ya çərçivənizdə mövcud olan funksiyalara etibar edirsiniz. Mövcud dillərin və çərçivələrin çoxluğuna görə bu dərslik hər hansı xüsusi server və ya çərçivə dilində kodlaşdırma təfərrüatlarını əhatə etməyəcək. Bununla belə, server tərəfi kodu yazarkən müştəri tərəfi JavaScript kodlaşdırma xüsusiyyətləri də istifadə olunur.

Müştəri tərəfinin kodlaşdırılması

Müştəri tərəfindən istifadəçi girişini JavaScript ilə kodlayarkən, bütün məlumatları avtomatik olaraq kontekstə həssas üsluba kodlayan bir neçə daxili metod və xüsusiyyətlər mövcuddur:

Yuxarıda qeyd olunan sonuncu kontekst (JavaScript-dəki dəyərlər) bu siyahıda yoxdur, çünki JavaScript daxil ediləcək məlumatları kodlaşdırmaq üçün daxili yol təqdim etmir. mənbə JavaScript.

Kodlaşdırma məhdudiyyətləri

Hətta kodlaşdırma zamanı bəzi kontekstlərdə zərərli sətirlərdən istifadə etmək mümkündür. Bunun əsas nümunəsi aşağıdakı nümunədə olduğu kimi, URL təmin etmək üçün istifadəçi daxiletməsindən istifadə edilməsidir:

document.querySelector ("a"). href = userInput

Href elementinin xassəsində göstərilən dəyər onu avtomatik olaraq kodlaşdırsa da, atributun dəyərindən başqa bir şeyə çevrilməyəcək, bu, özlüyündə təcavüzkarın "javascript:" ilə başlayan URL daxil etməsinə mane olmur. Linkə kliklədikdə, konstruksiyasından asılı olmayaraq, URL daxilində quraşdırılmış JavaScript yerinə yetiriləcək.

İstifadəçilərin səhifədəki bəzi HTML kodlarından istifadə edə bilməsini istədiyiniz zaman kodlaşdırma da effektiv həll yolu deyil. Məsələn, istifadəçinin xüsusi HTML istifadə edə biləcəyi istifadəçi profili səhifəsi ola bilər. Bu sadə HTML kodlaşdırılıbsa, profil səhifəsi yalnız düz mətndən ibarət ola bilər.

Bu kimi vəziyyətlərdə kodlaşdırma sonradan tanış olacağımız doğrulama ilə tamamlanmalıdır.

Doğrulama

Təsdiqləmə istifadəçi daxiletmələrinin süzgəcdən keçirilməsi aktıdır ki, onun bütün zərərli hissələri içindəki kodu silmədən silinsin. Veb inkişafında ən çox istifadə edilən doğrulama növlərindən biri bəzi HTML elementlərindən istifadə etməyə imkan verir (məsələn, ) lakin başqalarını qadağan etmək (məs.

Düzgün müəyyən edilmiş CSP siyasəti ilə brauzer zərərli ‑ script.js faylını yükləyə və icra edə bilməz, çünki http: // hücumçu / etibarlı mənbə kimi qeyd olunmayıb. Sayt istifadəçi daxiletməsini etibarlı şəkildə idarə edə bilməsə də, bu halda CSP siyasəti zəifliyin və hər hansı bir zərərin qarşısını aldı.

Təcavüzkar xarici fayla keçid etmək əvəzinə skript koduna kod yeritsə belə, düzgün konfiqurasiya edilmiş CSP siyasəti JavaScript koduna inyeksiyaya da icazə verməyəcək, zəifliyin qarşısını alacaq və hər hansı zərərə səbəb olacaq.

CSP-ni necə aktivləşdirə bilərəm?

Varsayılan olaraq, brauzerlər CSP-lərdən istifadə etmirlər. Veb saytınızda CQBK-nı aktivləşdirmək üçün səhifələrdə əlavə HTTP başlığı olmalıdır: Məzmun – Təhlükəsizlik – Siyasət. Bu başlığı ehtiva edən hər hansı bir səhifə brauzerin CSP-ni dəstəkləməsi şərti ilə brauzer tərəfindən yüklənərkən təhlükəsizlik siyasətlərini tətbiq edəcək.

Təhlükəsizlik siyasəti hər HTTP cavabı ilə göndərildiyi üçün serverdə hər səhifə üçün siyasəti fərdi olaraq təyin etmək mümkündür. Hər cavabda eyni CSP başlığını daxil etməklə eyni siyasət bütün vebsayta tətbiq oluna bilər.

Məzmun-Təhlükəsizlik-Siyasət başlığındaki dəyər saytınıza tətbiq olunacaq bir və ya bir neçə təhlükəsizlik siyasətini müəyyən edən sətirdən ibarətdir. Bu xəttin sintaksisi daha sonra təsvir olunacaq.

Bu bölmədəki başlıq nümunələri aydınlıq üçün sətir kəsimlərindən və girintilərdən istifadə edir; onlar bu başlıqda görünməməlidir.

CSP sintaksisi

CSP başlığının sintaksisi aşağıdakı kimidir:

Məzmun ‑ Təhlükəsizlik ‑ Siyasət:
direktiv mənbə-ifadə, mənbə-ifadə, ...;
direktiv ...;
...

Bu sintaksis iki elementdən ibarətdir:

  • Direktivlər verilmiş siyahıdan götürülmüş resursun növünü göstərən sətirlərdir.
  • Mənbə ifadələri resursların yüklənə biləcəyi bir və ya bir neçə serveri təsvir edən modeldir.

Hər bir direktiv üçün mənbə ifadəsindəki məlumatlar müvafiq tipli resursları yükləmək üçün hansı mənbələrdən istifadə oluna biləcəyini müəyyən edir.

Direktivlər

CSP başlığında aşağıdakı direktivlərdən istifadə edilə bilər:

  • qoşulmaq - src
  • font-src
  • çərçivə-src
  • img - src
  • media-src
  • obyekt-src
  • script-src
  • stil-src

Bundan əlavə, xüsusi default-src direktivi başlığa daxil edilməyən bütün direktivlər üçün standart dəyər təmin etmək üçün istifadə edilə bilər.

Mənbə ifadəsi

Mənbə ifadəsi yaratmaq üçün sintaksis aşağıdakı kimidir:

protokol: // host-adı: port nömrəsi

Host adı * ilə başlaya bilər, bu o deməkdir ki, təqdim edilmiş host adının istənilən subdomani həll olunacaq. Eyni şəkildə, port nömrəsi * kimi göstərilə bilər, yəni bütün portlara icazə veriləcəkdir. Bundan əlavə, protokol və port nömrəsi atlana bilər. Heç bir protokol göstərilməyibsə, siyasət HTTPS istifadə edərək bütün resursların yüklənməsini tələb edəcək.

Yuxarıdakı sintaksisə əlavə olaraq, mənbə ifadəsi alternativ olaraq xüsusi məna daşıyan dörd açar sözdən biri ola bilər (sitatlar daxildir):

"heç biri" resursları söndürür. "self" veb səhifənin yerləşdiyi hostdan resursları həll edir. "unsafe-inline" səhifədə olan resursları inline kimi həll edir

Proqramlar və oyunlar