Command Injection Zəifliyi Nədir? Və bunun qarşısını necə almaq olar?
Last updated
Last updated
Təcavüzkarlar adətən tətbiqin sistemini, serverini və ya etibarlı infrastrukturunu hədəf alırlar. OWASP- a görə , injeksiya hücumları ən çox yayılmış veb proqram təhlükəsizlik riskləridir. Command injeksiyası injeksiya hücumunun ən məşhur növüdür. Command injeksiyası zəifliyində təcavüzkarlar proqramın adətən sistemin əmrlərini yerinə yetirən standart funksiyasını dəyişirlər.
Command injeksiyası, təcavüzkarın sistemdə icazəsiz hərəkətləri yerinə yetirmək üçün qanuni əmr və ya sorğuya zərərli kodu yeritdiyi hücum növüdür. Bu, ya Command-a təqdim edilən daxiletmə məlumatlarını manipulyasiya etməklə (məsələn, istifadəçi daxiletməsi vasitəsilə) və ya Command-ın bu məlumatları şərh etmə və emal etmə tərzində zəifliklərdən istifadə etməklə edilə bilər.
Command injeksiya hücumları xüsusilə təhlükəlidir, çünki onlar tez-tez sistem haqqında əvvəlcədən heç bir məlumat olmadan və ya hətta hər hansı autentifikasiya etimadnaməsi olmadan həyata keçirilə bilər. Üstəlik, təcavüzkar qanuni əmrə zərərli kodu uğurla daxil etdikdən sonra, potensial olaraq sistem üzərində tam nəzarət əldə edə bilər.
Təcavüzkarların Command injeksiya hücumlarını həyata keçirə biləcəyi bir sıra yollar var, lakin ən çox yayılmışlardan biri “SQL injection” kimi tanınır. SQL injection hücumunda təcavüzkar verilənlər bazasında icazəsiz hərəkətləri yerinə yetirmək üçün SQL sorğusuna zərərli kodu yeridir.
Command injeksiya hücumu aşağıdakı zəifliklərə görə baş verə bilər.
İxtiyari əmr injeksiyaları
XML xarici obyekt injeksiyası (XXE)
Təhlükəsiz seriyasızlaşdırma
İxtiyari fayl daxil edilməsi
Server tərəfində şablon injeksiyası
Command injection zəifliyi aşağıdakı addımlarda işləyir.
Addım 1: İlk addımda təhdid edənlər tətbiqlərdə onlara zərərli əmrlər daxil etməyə imkan verən zəiflikləri tapırlar.
Addım 2: Təcavüzkarlar istənilən hərəkətin icrasına səbəb olan qanuni əmrə zərərli əmr əlavə edirlər. Təcavüzkarlar adətən bu əmrləri tətbiqə daxil etmək üçün kukilər , forma sahələri və ya HTML kodu kimi daxiletmə mexanizmlərindən istifadə edirlər .
Addım 3: Sistem və ya proqram əmri şərh edir və sonra onu tərcümə edir. Təcavüzkarlar yoluxmuş sistemdə xüsusi əmrləri yerinə yetirirlər.
Misal
Təcavüzkarlar nöqtəli vergül əlavə edir və ping əmrindən qaçmaq üçün ixtiyari OS əmrini yerinə yetirirlər.
Giriş nümunəsi: ; cat /etc/passwd
Veb tətbiqinizdə əmr injeksiya zəifliyini təmin etmək üçün siz istifadəçi daxiletməsini təsdiq etməli və tapşırıq üçün yalnız tələb olunan əmrlərə icazə verməlisiniz. Siz həmçinin nöqtəli vergül kimi xüsusi simvolları silməklə istifadəçi daxiletməsini təmizləyə bilərsiniz;
Command injeksiya zəifliklərini aşkar etmək və istismar etmək çətin ola bilər ki, bu da onları həm biznes, həm də fərdlər üçün ciddi təhlükəyə çevirir. Təşkilat üzərində ola biləcək geniş miqyaslı təsirə görə tez-tez yüksək həssaslıq hesab olunur. Bir çox məşhur veb proqramlar və qurğular Command injeksiyasına qarşı həssasdır ki, bu da bu tip hücumu nisbətən asanlaşdırır.
Command Injection Zəifliyinin bəzi nəticələri:
Təcavüzkar hədəf sistemdə ixtiyari kod icra edə bilər ki, bu da sistemin tam kompromisinə səbəb ola bilər.
Təcavüzkar hədəf sistemdə saxlanılan həssas məlumatlara giriş əldə edə bilər.
Təcavüzkar bütün mövcud resursları istehlak edən zərərli əmrləri yeritməklə hədəf sistemə Xidmətdən imtina (DoS) edə bilər.
Təcavüzkar hədəf sistemdə saxlanılan məlumatları manipulyasiya edə bilər ki, bu da yanlış nəticələrə və ya məlumat itkisinə səbəb ola bilər.
Təcavüzkar şəbəkə trafikini hədəf sistemdən öz nəzarəti altında olan digər sistemə yönləndirə bilər ki, bu da onlara məxfi məlumatları ələ keçirməyə və nəzərdən keçirməyə imkan verir.
Təcavüzkar həssas sistemlə eyni şəbəkədəki digər sistemləri döndərmək və onlara hücum etmək üçün Command injeksiyasından istifadə edə bilər.
Command injeksiyası firewall və müdaxilənin aşkarlanması/qarşısının alınması sistemləri (IDS/IPS) kimi təhlükəsizlik nəzarətlərini yan keçmək üçün istifadə edilə bilər.
Command injeksiya zəifliyinin qarşısını almaq üçün bir neçə ümumi yol var.
İstifadəçi daxiletməsini yoxlayın : Shell əmrlərində istifadə etməzdən əvvəl bütün istifadəçi daxiletmələrini düzgün şəkildə yoxlayın və təmizləyin.
Parametrləşdirilmiş sorğulardan istifadə edin: İstifadəçi girişindən dinamik şəkildə shell əmrləri yaratmaq əvəzinə, bağlı parametrləri olan hazırlanmış ifadələrdən istifadə edin.
Xüsusi simvollardan qaçın : Shell əmrlərində istifadə etməzdən əvvəl istifadəçi daxiletməsindəki bütün xüsusi simvollardan düzgün şəkildə qaçın.
Kommand icrasını deaktiv edin : Mümkünsə, Shell əmrlərini yerinə yetirmək qabiliyyətini tamamilə söndürün.
Veb tətbiqi təhlükəsizlik divarından istifadə edin : Command injeksiya hücumlarından qorunmaq üçün WAF istifadə edin.
İstifadəçi daxiletməsini təsdiq edin: Onun gözlədiyiniz və icazə verilən hüdudlar daxilində olmasını təmin etmək üçün istifadəçi daxiletməsini həmişə təsdiqləyin.
White list yanaşmasından istifadə edin: Yalnız məlum və gözlənilən dəyərlərin White list-ə uyğun gələn daxiletməyə icazə verin.
Təhlükəli funksiyaları və əmrləri söndürmək: Bir çox shel-lər əmrləri yerinə yetirmək üçün istifadə edilə bilən daxili funksiyaları təmin edir. Bu funksiyalar lazım olmadıqda söndürülməli və ya lazım olduqda lazımi şəkildə məhdudlaşdırılmalıdır.
Ən az imtiyazdan istifadə edin: Həmişə lazım olan ən az imtiyazlarla shell əmrlərini işlədin. Bu, command injeksiya zəifliyindən istifadə edilərsə, vurula biləcək zərəri məhdudlaşdırmağa kömək edəcək.
Giriş və monitorinq: İcra edilən bütün shell əmrlərini düzgün qeyd edin və şübhəli fəaliyyət üçün bu qeydlərə nəzarət edin. Bu, sistemlərinizdə baş verənləri görməyə və potensial command injeksiya hücumlarını aşkar etməyə kömək edə bilər
Zərərli daxiletmənin yoxlanılması: Hər hansı sistem əmrinə ötürməzdən əvvəl həmişə istifadəçi daxiletməsini zərərli məzmuna görə yoxlayın. Buraya qeyri-qanuni simvolların yoxlanılması, əmrləri yerinə yetirməyə cəhd və s. daxildir.
Yeniləmə : Sistemlərinizi ən son təhlükəsizlik yamaları və yeniləmələri ilə güncəl saxlayın.
Tətbiq səviyyəsində təhlükəsizlik tədbirlərini həyata keçirin: Əməliyyat sistemi səviyyəsində təhlükəsizlik tədbirlərinin həyata keçirilməsi ilə yanaşı, tətbiq səviyyəsində təhlükəsizlik tədbirlərinin həyata keçirilməsi də vacibdir. Bu, sistemlərinizi command injeksiya hücumlarına qarşı daha da qorumağa kömək edə bilər.
İstifadəçilərinizi maarifləndirin: Command injeksiya hücumlarının qarşısını almaq üçün ən yaxşı yollardan biri.