XÜSUSİ DÖVLƏT MÜHAFİZƏ XİDMƏTİ
XÜSUSİ RABİTƏ VƏ İNFORMASİYA
TƏHLÜKƏSİZLİYİ DÖVLƏT AGENTLİYİ

KOMPÜTER İNSİDENTLƏRİNƏ
QARŞI MÜBARİZƏ
MƏRKƏZİ

İnsident bildir

Məqalələr > “CROSS SITE SCRIPT INCLUDE” Təhlükəsizlik riski

2 Dek 2017

  Bu məqalədə çox aktual həm də əksər vaxtı diqqətdən yayınan “CROSS SITE INCLUDE” təhlükəsizlik riskindən danışacağıq. Gəlin, ilk öncə “CROSS SITE INCLUDE”un nə olduğunu anlamağa çalışaq: Bu, şərti A veb saytının hər hansı B saytında yerləşdirilmiş hər hansı aktiv kontent elementini (javascript, css və s) öz kontekstində çağırmasıdır. Nəticəd ə A veb saytına daxil olmuş istifadəçinin brauzeri bu kontenti A saytından deyil kənar B saytından yükləyərək istifadəçi brauzerində icra etmiş olur. Veb saytlarda istifadə edilən sayğac sistemləri, jquery javascript kitabxanalarının müxtəlif saytlardan çağırılması (o cümlədən CDN), müxtəlif növ tərəfdaş tipli reklamlar - bu təhlükəsizlik riskinə yol açan başlıca səbəblərdəndir. Əyanilik üçün ixtiyari A saytının HTML qaynaq kodundan aşağı görüntü təqdim edilir:

Şəkil 1) A saytında javascript kitabxananın B saytından istifadəçi brauzerinə yüklənməsi

  Risk nədən ibarətdir?

  •  saytı üzərindən bu yolla çağırılan javascript ssenari məqsədyönlü şəkildə redaktə edilməklə A saytı kontekstində başlıca olaraq aşağıdakı manipulyasilara səb əb ola bilər:
  •  Saytınızın defeys edilməsi (“persistent client side defacement”)
  •  Saytınıza daxil olan ziyarətçilərin yoluxdurulmasına, müxtəlif kənar internet resurslara yönləndirilməsinə, saytınızın kontekstində vizual olaraq görə bilmədiyiniz reklamların yayılmasına, axtarış sistemlərində müxtəlif manipulyasiyalara, ziyarətçilərinizin kompüterlərinin özlərinin xəbəri olmadan kripto-mayninq proseslərində iştirakına və s.

Məqalə yazılarkən sadalanan təhlükəsizlik risklərini əyani nümayiş etdirmək üçün 2 şərti sayt yaradılmışdır:

  • http://saygac.example/ - IP: 192.168.0.117. Bu sayt şərti olaraq sayğac saytıdır.
  • http://site.example/ - IP: 192.168.0.116. Bu sayt isə bizim saytdır hansı ki, “saygac.example” saytından skriptlərimizi məqalədə danışılan kimi “include” edirik. 

“Saygac.example” saytında “saygac.php” skripti vardır. Bu skriptin ən primitiv funksiyası sayta daxil olan ziyarətçilərin neçə dəfə bunu etməsini ekrana çıxarmaqdır. Təbii ki, bu daha mürəkkəb funksionallıq da ola bilər.

[root@saygac a]# cat saygac.php

 

 session_start();

 $_SESSION['say']++;

echo $_SESSION['say'];

Şəkil 1) Şəkildə 33 rəqəmi onu bildirir ki, biz 33 dəfə “saygac.example” saytında yerləşən “saygac.php” skriptinə müraciət etmişik.

İndi isə gəlin “site.example” saytımızda bu sayğacı sadə javascript vasitəsilə “include” edək.

 

Şəkil 2) “site.example” saytımızdan vizual görüntü.

 

Şəkil 3) “site.example” saytımızın HTML qaynaq kodunda “saygac.example/saygac.php” skriptinin “include” edilməsi.

İndi isə gəlin hücum planını aşağıdakı şərtlər nəzərə alınmaqla təsəvvür edək.

  1. Hücum planlaşdıran şəxs olaraq “site.example” saytına müdaxilə edə bilmirik. Çünki, sayt və server kifayət qədər yaxşı qorunur, ümumiyyətlə “site.example” saytını komprometasiyasına yol açacaq hər hansı təhlükəsizlik çatışmazlığı tapa bilmirik.
  2. Amma “site.example” saytında “include” edilmiş “saygac.example” saytına tam olaraq müdaxiləyə müvəffəq olmuşuq. Real praktika da məhz bunu göstərir ki, hücum həyata keçirən şəxs daha asan başa gələn hədəfi daima seçir . 

Şəkil 4) Hücum həyata keçirən şəxsin “saygac.example” saytına bu və ya digər yolla (insan səhvi, dayanıqsız şifrə, yenilənməmiş veb/server proqram təminatı, veb proqram təminatında təhlükəsizlik çatışmazlığı və s. səbəblərindən) uğurla müdaxilə etməsi.

Bununla hücum həyata keçirən şəxs əslində çox uğurlu və perspektivli nəticələr əldə edəcək:

  • “saygac.example” saytından minlərlə sayt istifadə edir. Kütləvi şəkildə digər saytlarda müdaxilə əldə edilir və bu saytların ziyarətçilərinin müxtəlif növ bədniyyətli proqram təminatları yoluxdurulması daha asan başa gəlir.

 Bunun üçün sadəcə olaraq saygac.php skriptini redaktə etməsi lazımdır.

  • Minlərlə saytlara tək-tək hücum həyata keçirməkdənsə “saygac.example” saytına müdaxilə etmək daha asandır və daha perspektivlidir.

 Gəlin, “saygac.php” skripti vasitəsilə “site.example” (o cümlədən bu sayğacdan istifadə edən minlərlə saytı) bu yolla defeys edək və istədiyimiz hər hansı internet resursa yönləndirək. 

Şəkil 5)

Şəkil 6) “site.example” saytının defeys edilməsi.

Qırmızı rəngli çərçivədə ziyarətçinin “site.example” saytına daxil olması, onun brauzerinin “saygac.example” saytına HTTP müraciət etməsi və yekundan defeys səhifəsinə “cert.gov.az” saytına yönlənməsi aydın görünməkdədir.