main-post-cover

    PHP və PHPMailerda aşkar olunmuş boşluq 9 milyondan çox saytı təhlükə altında qoyur

    Digər
    Code-News
    16.12.2018
    Farid Pardashunas

    #Step IT Academy tərəfindən təqdim olunur  

           


        PHP-nin bu günlərdə təqdim olunmuş 5.5.39,7.0.33,7.1.25 və 7.2.13 versiyalarında xoşagəlməz bir boşluq (CVE-2018-19518) aradan qaldırılıb. Boşluq ştatdaxili İMAP əlavəsində oktyabrda aşkar olunub. Boşluq elektron məktublarla işləyən web-tətbiqə hücum etmək və ya sistemdə disable_functions vasitəsi ilə söndürülmüş funksiyaları istifadə etmək üçün imkan yaradırdı. Hətta exec, system, shell_exec və passrhru kimi funksiyaları söndürdükdə də boşluq istənilən shell kodu işə salmaq üçün imkan yaradır və bədniyyətlilər öz PHP kodlarını serverə yükləyərək istənilən zərərverici əməliyyatlarını yerinə yetirə bilirlər. Bunu adətən fayl yükləmə imkanı olan plaginlərdə boşluqlar tapılandan sonra yerinə yetirmək olur. Boşluq həmçinin webmail-klientlərə hücum edərək imap-serveri dəyişib heç bir yoxlama olmadan imap_open əmrini göndərnək üçün imkan yaradırdı.
        Problemin kökü ondadır ki, imap_open funksiyası, hansının ki, vasitəsi ilə İMAP-server ilə qoşulma baş verirdi, poçt qutusuna şəbəkə vasitəsi ilə qoşulmaq üçün əlavə parametrlər qeyd etməyə imkan yaradır. Uzaq hostda yerləşmiş poçt qutusuna nəinki İMAP protokolu ilə, həmçinin SSH ilə də qoşulmaq olur (rsh əmri çağırılır, amma distributivlərin çoxusunda o, ssh üzərindən işləyir). SSH-a əlavə parametrlər göndərmək olar və "-oProxyCommand=" vasitəsi ilə proxy üçün əmri təyin etmək olar. Proxy əvəzinə istənilən kodu yazmaq olar və bu kod imap_open funksiyasının çağırışı zamanı işə düşəcək. Boşluğu bloklatmaq üçün yeni versiyalarda susma (default) olaraq rsh/ssh üzərindən imap_open qoşulması zamanı sönülü olacaq (imap.enable_insecure_rsh=false).
         Eksploitin konseptual prototipi:
       $server = "x -oProxyCommand=echotZWNobyAnMTIzNDU2Nzg5MCc+L3RtcC90ZXN0MDAwMQo=|base64t-d|sh}";
       imap_open('{'.$server.':143/imap}INBOX', '', '') or die("nnError: ".imap_last_error());
    
        Həmçinin elektron məktubların göndərilməsi üçün istifadə olunan məhşur PHPMailer kitabxanasındakı boşluq (CVE-2018-19296) barədə də məlumatlar aydınlanıb. Qeyd edək ki, PHPMailer kitabxanası bir çox məşhur PHP freymvorkların daxilində istifadə olunur və buna görə də istifadəçi sayı 9 milyondan çoxdur. Boşluq yolda phar faylın daxilinə keçid əlavə edərək istənilən kodu işə salmaq imkanını yaradır. Məsələn məktubda fayl göndərərkən və ya DKİM parametrləri ilə manipulyasiya edərək zərərverici bu boşluqdan yararlana bilər. Əldə edilmiş fayl email-a göndərilməkdən əvvəl file_exist() funksiyası vasitəsi ilə yoxlanılır, hansı ki, avtomatik olaraq phar:// yollarında “Phar deserialization” hücumunu yerinə yetirə bilən Phar(PHP Arhive) fayllarından metaməlumatları deserializasiya edir. Phar faylı məktuba əlavə kimi göstərərək bədniyyətli şəxs serverdə öz kodunu işə sala bilər. PHPMailer 6.0.6 versiyasında boşluq aradan qaldırılıb.
        Sözügedən boşluqlardan zərər görməmək üçün istifadə etdiyiniz PHP və PHPMailer versiyalarını yeniləməyinizi məsləhət görürük.
    Linki kopyala