Makaleler

WordPress Sızma Testleri ve Güvenliği

Merhaba arkadaşlar, Bugün (bir pazar günü) kendi sistemim, (bu yazıyı okuduğunuz wordpress) için pentest sızma araçlarından biriyle birkaç test yaptım.
Yazacağım yazıda bunun hakkında olacak. Önemli kısmı sızmaya karşı bu tool’un verdiği bilgilerin geçersiz kalmasını sağlayabilmek. En azından benim kendi sitem için amacım bu.

İlk olarak tool’un kullanımı hakkında birkaç bilgi paylaşayım…

Tool açık kaynak bir tool olduğu için GitHub’ta bulmak mümkün : WPScan GitHub Adresi
Kurulumu, kullanımı ile ilgili detaylı bilgi mevcut fakat basitçe kodları bende vereceğim.
Kali Linux’ta kurmamıza gerek yok, yüklü olarak gelmektedir. Güncellenebilir; “wpscan –update”…

wpscan –url www.orneksite.com : wordpress’in kurulu dizin direkt ana dizinde ise site bu şekilde parametre olarak verilebilir.
wpscan –url www.orneksite.com –enumerate p : yüklü eklentileri, eklentilerin açık bulunan (vulnerable) sürümlerini ve açığın raporlarının bulunduğu siteleri listeler.
wpscan –url www.orneksite.com –enumerate u : wordpress’teki kullanıcıları ve kullanıcıların isimlerini verir.
wpscan –url www.orneksite.com –enumerate t : kullandığımız tema açıklıklarını tarar.
wpscan –url www.orneksite.com –wordlist wordlist.txt –username admin : şeklinde kullanıldığunda sisteme brute force yaparak admin kullanıcısının şifresini wordliste göre bulmaya çalışır.

Şeklinde kullanımları vardır. Daha fazla detaya girmeyeceğim detaylı bilgi tool’un github sayfasında mevcut.

Gelelim testimize…
Testi kendi websitem üzerinden yaptım. Tarama sonuçları şu şekilde;

wpscan
wpscan
wpscan
wpscan

Resimlerde önemli kısımlara dikkat çektim, tam listeyi txt olarakta şuraya koyuyorum : WPScan Test Listesi Txt.

Kısaca, resimlerdeki sıraya göre edindiğim bilgileri yazayım;

      – robots.txt dosyam varmış ve birkaç yeri arama motorlarına kapatmışım.

 

      – WordPress readme dosyasını silmemişim duruyorumuş.

 

      – Sunucu yazılımım ve PHP sürümü gelmiş.

 

      – WordPress 3.7.1 kullanıyormuşum.

 

      — Bu sürüme ait açıklıkları vermiş.

 

      – Kullandığım tema StraigtAhead’miş, yapımcısı, style dosyaları vs bilgileri vermiş.

 

      – 7 adet eklenti kullandığımı saptamış. (Daha fazla kullanıyorum, database’ne geçilmemiş eklentiler var.)

 

      — Kullandığım eklentilerdeki açıklıkları, açıklıkların türleri ve kullanımı için detaylı bilgi veren siteleri vermiş.

 

      — Kullandığım eklentilerin dizin listelemeleri açık mı değilmi onun kontrolünü yapmış.

 

    — Son olarak “–enumerate u” parametresi ile de sistemde bulunan kullanıcıları vermiş.

Açıklamalarıyla birlikte test aşamasını bitirmiş olduk. Şimdi bu bilgilere karşı ne yapabiliriz. Bu tool’un sitemizden ne kadar az bilgi çekmesini mümkünse hiç çekememesini nasıl sağlarız onun üzerine uğraşalım.

  1. İlk olarak eklentilerdende gördüğümüz gibi tüm eklentilerimizin güncel olması şart.
  2. Eklentilerle alakalı olarak bazı eklentilerin dizinlerinde index.php veya index.html yok, dizin listelemeyi kapatmak için boş bir index.html dosyası eklenti dizinlerine atabiliriz.
  3. Eklentilerin readme dosyalarını silmek mantıklı olabilir sürümü vermemek adına.(Manuel incelemelerde)
  4. WordPress sürümü olarakta kendi açıklarını barındırmakta, bunlardanda toplu bir şekilde kurtulmak için sürümümüzü sürekli güncel tutmalıyız.
  5. Tool’un sürümü alamaması için ana dizindeki readme dosyasını silmemiz çok isabetli bir davranış.
  6. Aynı şekilde temanında readme dosyalarını silmemiz mantıklı olacaktır.
  7. Eklentilerimizin bulunduğu “wp-content” klasörünü taşımak veya yeniden adlandırmak gibi bir imkanımız var bunu yapabiliriz ama bu dizinin bulunması yine zor değil. Bir diğer dezavantajı ise bazı eklentilerde direkt “wp-content” olarak yazılmış olması problem. Onları tek tek düzenlemeliyiz değiştirmemiz durumunda.
  8. WP-Cumulus gibi gereksiz eklentilerden kurtulamkta bir çözüm. Kısaca: Yemişim görselliği, niye kurmuşsam!?
  9. admin gibi bir (sözde geçici) kullanıcı oluşturup (sonra silmeyi unutup) şifresinide 123456 bırakmak gibi birşey yapan olmaz herhalde diye yazmıyorum(!)
  10. Kullanıcı adından kaçırma olayınıda aşağıdaki kodu wordpress’in kurulu olduğu dizindeki .htaccess dosyasına girin.

# .htaccess dosyasına ekleyeceğiniz kod:
RewriteCond %{QUERY_STRING} ^author=([0-9]){1,}$ [NC]
RewriteRule ^(.*)$ $1?author=999999 [L]

Testten önce aldığım (2 sene önceki kurulumdan hemen sonra) birkaç önemli güvenlik önlemi de şu şekildeydi;

  • wp-config dosyasını gizlemek, adını değiştirmek, şifrelemek, üzerinde yapılabilecek herşeyi yapmak .htaccess ile erişimini kısıtlamak vs vs
  • wp-admin klasörünü cPanel’den (veya kullandığınız muadillerinden) şifrelemek.
  • Çakallık olarak; WordPress’in readme’si olarak kullandığınızdan eski bir sürümün readme’sini atarsak eski sürümün açıklarını döker. Saldırgan kişileri aldatmaya yönelik güzel bir yöntem olabilir.
  • Eşsiz Api şifreleri vs önemli.
  • Mümkünse tüm dizinleri .htaccess’ler ile güzelce ayarlamak önemli.
  • Bazı dizinler için acaba bakan oluyormu bu dizinlere gibi sayaç veya kaydediciler koyulabilir. Şu dizinde görselleri ve txt’leri tutuyorum desem : tamersay.com text dosyaları ve görseller.

Gibi gibi önlemler artırılabilir. Önceden yaptığım önlemler kısmında hatırlayamadıklarım var sanırım. Aklıma geldikçe ekleyeceğim.
Önlemler sonrasıda bir test daha yapalım bakalım ne olacak;
wpscan
wpscan
wpscan

Txt olarak tam liste çıktı : Txt Full List.

Dikkat ettiyseniz, wordpress sürümü gelmedi, temanın sadece adı geldi. WP-Cumulus’u sildiğim için 6 eklenti geldi (7 yerine) ve hala açıklıklarıda söylüyor ama endişeye gerek yok hiçbir eklenti açık bulunduran sürümde(en azından şimdilik) değil. Hepsi son sürüm.

Sonuç : Elimizden geldiğince tool’a az bilgi kaptırmaya ya da yanıltmaya çalıştık. Bu tool’u daha yeni öğrendim ve çabukca kavramaya çalıştım. İyiki yapmışım dediğim şeyler sırayla; “wp-admin” dizin şifrelemek, “wp-config” yer değiştirmek ve .htaccess ile korumaya almak, mümkün oldukça sık sistemi ve eklentileri güncellemeye çalışmak.

Bir pazar günü böyle harcanmaz, tecrübe edilir diyerekten yazımın faydalı bir kaynak olmasını umayım 🙂
Not: Yazının tamamı kendi emeğimdir. Hiçbir çalıntı satır bulunmamaktadır.
Not2: .htaccess 2. kod bir yabancı sitedeki güvenlik makalesinden alınmadır. Başka çeşitleri vardır fakat çalışanı budur. Site adresini hatırlarsam link olarak vereceğim.

Herhangi bir konuda yardım isteyen için yardım edeceğim iletişim sayfasını kullanınız.
If you need any help in any step, I’ll gladly help, please use my contact page or comment below.

 

3 comments
Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir