PHP Memcache Faydaları - Kullanımı - Zaafiyeti

'CaptainKanka

O Şimdi Asker!
14 Eki 2012
1,683
1,265
localhost/admin.php
Merhaba arkadaşlar

Bu gün sizlerle memcache'nin kullanımına, zaafiyetine ve ne işe yaradığına bakacağız.

p0qbke2.png



İlk olarak memcache nedir buna bakalım.
Memcached’e bağlanmamızı ve kullanmamızı sağlayacak PHP uzantısıdır. Bu PHP uzantısı varsayılan değildir, bu nedenle indirip kurmanız gerekir.
MemCached MySQL sorgu sonuçlarını, program ayar verilerini önbelleğe alarak yazılımınızın çok daha hızlı çalışmasını sağlayabilirsiniz.
SQL sorgu sonucunu veya Php ‘nin oluşturduğu Html sayfayı memcached ‘de depolayabilirsiniz. Böylece aynı Sql sorgularını ve Php komutlarını tekrar tekrar çalıştırmaz, ön bellekten okuyarak ziyaretçiye sunar.
Detay Sayfaları, Ana Sayfa, Session bilgileri ,Sık kullanılan ve veritabanından gelen veriler için kullanılır.

Memcache 2 yapıya daha ihtiyaç duyar ; memcached, libevent.

Libevent belirli bir süre geçtiğinde çağırılan kodları yeniden çalıştırmayı sağlar.

Memcache kullanırken dikkat edilmesi gereken önemli hususlar ise şunlardır.

1-) 1mb lik veri tutabilirsiniz.

2-)Verileriniz kaybolabilir. Bu durum 2 şekilde gerçekleşebilir. Verdiğiniz süre veya ram alanının dolumu nedeniyle eski tarihli verilerin üstüne yazılabilir.

3-)Rdmbs cache kullanmadigina emin olunmalıdır.

4-)amplification attacks saldırılarına karşı önlem alınmalıdır.



Memcache için genellikle 11211 portuna ihtiyaç duyulur ama bu düzenlenebilir.

Memcache için php'de 19 kod bulunur. Ancak hepsini bilmeye gerek yoktur.

Connect komutu ile bağlantı yapılır.
set/add komutlarının herhangi biriyle belleğe veri yazılır.
get bellekteki veriyi okur.
delete seçilen veriyi siler.
flush tüm veriyi siler.
close ise sonlandırır. Burada bilinmesi gereken close memory sonunda kullanılmazsa suistimal edilebiliyor olmasıdır.

PHP tarafında kullanımına gelecek olursak ilk olarak çalışıp çalışmadığını kontrol edelim.


PHP:
echo extension_Loaded("memcache");

Bu sorgumuzun sonucu 1 olursa çalışıyor demektir.
Şimdi php sınıfımızı oluşturalım.

PHP:
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Memcached bağlantı hatası");

Burada 127.0.0.1 localhost ıp'si ve 11211 memcache portumuzdur.

Şimdi veri ekleyip yazdıralım.

PHP:
$memcache->add("blok","içerik",FALSE,120); //buradaki 120 veriyi kaç saniye tutacağımızdır.
echo $memcache->get("blok");

120 saniye boyunca blok alanımızda "içerik" verimizi tuttuk. süreyi istediğiniz gibi değiştirebilirsiniz.

Şimdi gelelim ampllification attack vektörüne.

TCP/UDP 11211 portuna erişimi kısıtlamalısınız.

Saldırgan o porttan sunucuya saldırı çıkışının yapılmasını istediği IP üzerindenmiş gibi paket gönderiyor. Sunucu bu paketi bilmediği için kabul etmediğine dair karşı bir paket gönderiyor. Muhtemelen ilk paket TCP olarak gönderiliyor ve sonrasında da memcached 11211 portu üzerinden UDP paketler ileterek cevap veriyor.
Erişim kısıtlanırsa bu saldırı ortadan kalkıyor.


ctf0sk9.png


İyi Forumlar

rtu29hy.png



 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.