ENESENES

"mod_userdir" Nedir? Nasıl Kapatılır? Örnek Suistimal Senaryosu

@root

ben kimim

7035 minute

"mod_userdir" Nedir? Nasıl Kapatılır? Örnek Suistimal Senaryosu

"mod_userdir" Nedir?

Apache web sunucularda bulunan "mod_userdir" özelliği sunucuda domain yönlendirilmesi yapılmadan önce sunucuda herhangi bir sıkıntı olup olmadığını görüntülemek için yani test etmek için görüntülemeye yarıyor. Bu birçok kolaylık sağlıyor, mesela birden fazla domain varsa sunucunuzda başka kullanıcıların içeriğine erişimini de tarayıcı üzerinden sağlıyor.

"mod_userdir" Özelliği Kullanımı

Mesela Apache sunucumuzda "user1" ve "user2" kullanıcıları olsun bu kullanıcılara ayrı ayrı "user1.com" ve "user2.com" yönlendirilmesi yapılmış olsun. Sunucu IP'mize de sunucuip diyelim. Siz mod_userdir özelliği sayesinde user1.com domaini ile user2'ye ait içeriğe tarayıca da nasıl gözüküyorsa o şekilde erişebilirsiniz. user1.com domainin içinde user1.html olsun, user2.com'da ise user2.html olsun. O halde siz eğer aşağıdaki linke girerseniz, user1.com domaininden user2.com domainindeki veriye tarayıcıda görüntülendiği şekilde erişebilirsiniz.

https://user1.com/~user2  => user1'den user2'deki içeriğe erişmek için.
https://user2.com/~user1  => user2'den user1'deki içeriğe erişmek için.
https://sunucuip/~user1  => Sunucu IP'den user1'deki içeriğe erişmek için.
https://sunucuip/~user2  => Sunucu IP'den user2'deki içeriğe erişmek için.

"mod_userdir" Güvenli mi? Örnek Suistimal Senaryosu

Eğer sunucunuzu projelere açtıysanız, yani diğer bir deyişle test ortamından çıkardıysanız, bu özelliği kapatmanız gerekmektedir. Aksi halde, sunucu içinde barınan bir kullanıcı, diğer kullanıcıların içeriğine betik dilinin yorumlanmasıyla erişebilecek şekilde olumsuz bir durumla karşılaşabilir. Özellikle sunucu içindeki bir kullanıcı art niyetli ise veya art niyetli dosyalar sunucuya sızmışsa, mod_userdir özelliği sayesinde sunucu içindeki betik yorumlama işlemini bypass ederek diğer kullanıcıların site içeriğini, dosyalarını değiştirebilecek hatta önemli bir dosyanın içeriğini okuyabilecektir.

Bu önemli dosya, örneğin WordPress için wp-config.php gibi, içindeki veri tabanı bilgilerini çekerek sunucunun o siteye ait veri tabanına erişim sağlamasına olanak tanır. Eğer bu bilgiler elde edilirse, sunucu üzerindeki hedef sitenin admin kullanıcı bilgileri değiştirilebilir ve admin paneline erişim sağlanabilir. Ardından, zararlı dosyalar ya da shell dosyaları yüklenerek hedef kullanıcının dosyalarına erişim sağlanabilir. Bu örnek senaryoda mod_userdir özelliği sayesinde bir kullanıcıdan diğerine geçiş yapmak oldukça basit hale gelmiştir.

Böyle bir senaryonun yaşanmaması için, bu özelliğin kapalı tutulması kesinlikle gereklidir. Sunucu güvenliğinin sağlanması ve kullanıcı verilerinin korunması için gerekli önlemler alınmalı, güvenlik açıklarına karşı hassas davranılmalıdır.

"mod_userdir" Özelliği Nasıl Kapatılır?

Apache konfigürasyon dosyası her sunucuda farklılık gösterebilir fakat genelde "/etc/apache2/apache2.conf" veya "/etc/apache2/httpd.conf" dizinlerinde bulunuyor. Bu dosyaları açtıktan sonra "<IfModule mod_userdir.c>" kod bloğunu bulun ve koyu renkli yazan kısımları dosyanıza ekleyip kaydedin.

Tüm kullanıcılara mod_userdir özelliğini kapatmak için:

<IfModule mod_userdir.c>
    UserDir public_html
    UserDir disabled
    <Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>

user1 ve user2 dışında tüm kullanıcılara mod_userdir özelliğini kapatmak için:

<IfModule mod_userdir.c>
    UserDir public_html
    UserDir disabled user1 user2
    <Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>

Sonuç

Bu yazımızda mode_userdir'i anlattık, örnek suistimal senaryosu yazdık ve devre dışı bırakmayı gösterdik. Herkese güvenli günler dilerim!

Discussion (0)

No comments