THT DUYURU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

chat
Seçenekler

Symlink ile Web Hacking ve Güvenlik

Oğuz~#> - ait Kullanıcı Resmi (Avatar)
Forumdan Uzaklaştırıldı
Üyelik tarihi:
07/2009
Nereden:
Bursa
Yaş:
23
Mesajlar:
4.772
Konular:
1485
Teşekkür (Etti):
1877
Teşekkür (Aldı):
2499
Ticaret:
(0) %
02-06-2014 13:13
#1
Symlink ile Web Hacking ve Güvenlik
Merhaba arkadaşlar. İşlerimin oldukça yoğun olması, eğitimler, konferanslar v.s dolayı yaklaşık 2 aylık bir süredir makale yazamıyordum. Bu yüzden cok sevgili abimin makalelerinden bilgilendirme yapmak amacı ile alıntı yapmış bulunmaktayım Bu makalemizde yeni nesil web saldırı yöntemlerinden biri olan “Symlink (Symbol Link)” saldırılarını detaylıca inceleyeceğiz.
Symlink Nedir? Symlink ile Web Hacking
Önce “Symlink”in ne olduğu hususuna değineceğim. Linux işletim sistemlerinde tüm dosyalar hiyerarşik bir düzende klasörlerin (dizinlerin) içerisinde tutulurlar. Bir klasör içerisinde bulunan dosyayı başka bir klasör içerisinde kullanmak istiyor isek ve bu dosyayı bulunduğu klasör dışında bir yere kopyalamak istemiyor isek imdadımıza “Symlink” yetişiyor. Symlink adından da anlaşılacağı üzere bir sembolik bağ oluşturur. Bu yöntem ile üzerinde çalıştığımız dosya bir yerde olacak ve biz ona istediğimiz dizinden erişebileceğiz. Temel saldırı mantığı da burada oluşmaktadır işte… Linux’ta bulunan (ln) komutu bu sembolik bağı oluşturmak için kullanılır. Bir sunucuya erişildiğinde eğer gerekli güvenlik önlemleri alınmış ise kritik dosyaların içeriği okunamamaktadır. Örneğin, configuration.php dosyası okunamıyor. Symlink yaparak uzaktan bu dosya rahatlıkla okunabilir. Web sunucumuzun güvenliğini sağlamış olalım. Sunucumuzda Shell-Exploitlerin çalıştığı fonksiyonların devre dışı olduğunu varsayalım. Böyle bir web sunucusunda exploitler çalışmayacaktır.
“ln –s /root/eyup/klasor/dosya.txt /var/www/eyup.txt”
Bu komut ile /root/eyup/klasor/ dizininde bulunan dosya.txt dosyası /var/www/ dizininde eyup.txt dosyasına symlink’lendi. Böylece erişemediğimiz dosya.txt dosyasına Symlink üzerinden erişerek /var/www/eyup.txt dizininden okuyabiliriz. Bu yöntem ile güvenlik önlemlerinin bir çoğu bypass edilmiş olacaktır.
PHP’de de bu aşağıdaki gibi olacaktır.
<?php
$dosya = ‘../../home/asia/configuration.php’;
$yeniYol = ‘../../home/erica/sym/1.txt’;
symlink($dosya, $yeniYol);
echo readlink($yeniYol);
?>
Bu PHP kodu ile /home/asia/ dizininde bulunan configuration.php dosyasını okuyarak /home/erica/sym/ dizininde 1.txt olarak symlink’ledik. Normal şartlarda erişemediğimiz configuration.php dosyasına Symlink üzerinden erişerek, dosya içerisinde bulunan yolları okuduk.
Örnek bir uygulama yapalım.

Resim-01

Resim-02
Resim-01’de göreceğiniz üzere www.eyupcelik.com.tr sitesine yüklenmiş bir Shell mevcut. Bu shellde devre dışı bırakılmış fonksiyonları görebilirsiniz. Resim-02’de de www.fundayilmaz.com.tr sitesinde bulunan Symlink Shell mevcuttur. Biz www.fundayilmaz.com.tr adresinde bulunan Shell den faydalanarak www.eyupcelik.com.tr adresinde bulunan konfigürasyon dosyasına erişeceğiz.
Bunun için Symlink Shell’ine /home/kullanıcıadı/public_html/config.php – dosya adı olarakta 1.txt yazacağız.

Resim-03
Okumak istediğimiz ve Symbol linklemek istediğimiz dosya adlarını yazıp symlink’i tıkladıktan sonra 1.txt adındaki dosyamıza erişerek içeriğini okuyabiliriz.

Resim-04
Symlink üzerinden okuduğumuz 1.txt dosyası Resim-04’teki gibidir.
Symlink Saldırısını Engelleme
Symlink saldırılarını engellemek için PHP-Symlink fonksiyonunu deaktif etmemiz gerekir. Bunun için php.ini dosyamızda bulunan disable_functions satırını disable_functions= “show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open, symlink” şeklinde değiştirip apache sunumuzu restart etmemiz gerekir.
Symlink Engellemesini Bypass Etme
Symlink saldırılarını disable_functions ile engellemiş isek, bu güvenlik önlemi de bypass edilebilir. Bunu bypass etmek için Symlink shell’inin bulunduğu klasör içerisine bir php.ini dosyası yükleyerek bu fonksiyon bypass edilebilir. Yükleyeceğimiz php.ini dosyası içerisine disable_fuctions= “” yazıp, php.ini dosyasını Symlink shell’inin bulunduğunu dizine yükleyerek güvenlik yöntemini atlatabiliriz. Bu bypass yöntemini engellemek için de php.ini dosyasının sadece bir yerden okunması, dış php.ini dosyalarının okunmasını engelleyerek atlatabilirsiniz.
Konu ile ilgili olarak hazırlamış olduğum videoya aşağıdan erişebilirsiniz.
{youtube}GHaO5okEc2k{/youtube}
Symlink Shell : http://www.eyupcelik.com.tr/CehLabs/Symlink.rar
Güvenli günler.
yusufgun25 Teşekkür etti.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler