Ali TONKAZ, Yazar: CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me cypm! Sun, 23 Jul 2017 18:41:44 +0000 tr hourly 1 https://wordpress.org/?v=6.0 https://canyoupwn.me/wp-content/uploads/2016/02/cropped-Başlıksız-1-32x32.png Ali TONKAZ, Yazar: CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me 32 32 TR | URL Redirect https://canyoupwn.me/tr-url-redirect/ https://canyoupwn.me/tr-url-redirect/#respond Wed, 12 Apr 2017 06:28:20 +0000 https://canyoupwn.me/?p=6895 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

URL Redirect URL Redirect (URL Yönlendirme), basit fakat önlem alınmadığı takdirde özellikle firmalar için büyük risklere sebep olan bir zafiyettir. Sistem tarafında kontrol sağlanmayan bir inputa saldırgan tarafından gönderilen zararlı siteye yönlendirme isteği ile zararlı sitenin kullanıcının karşısına çıkmasına yol açabilir. Öncelikle bazı programlama dillerindeki güvensiz URL yönlendirmelerine örnekleri inceleyelim. Aşağıdaki Java kodu URL parametresi […]

TR | URL Redirect Ali TONKAZ

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

URL Redirect

URL Redirect (URL Yönlendirme), basit fakat önlem alınmadığı takdirde özellikle firmalar için büyük risklere sebep olan bir zafiyettir. Sistem tarafında kontrol sağlanmayan bir inputa saldırgan tarafından gönderilen zararlı siteye yönlendirme isteği ile zararlı sitenin kullanıcının karşısına çıkmasına yol açabilir.

Öncelikle bazı programlama dillerindeki güvensiz URL yönlendirmelerine örnekleri inceleyelim.

Aşağıdaki Java kodu URL parametresi ile gelen değeri direk olarak yönlendirme işlemine tabi tutar.

response.sendRedirect(request.getParameter("url"));

Benzer işlem PHP dilinde aşağıdaki gibi yapılabilir.

$redirect_url = $_GET['url'];
header("Location: " . $redirect_url);

Aynı işlemin C#.NET ortamında kullanış şekli aşağıdaki gibidir.

string url = request.QueryString["url"];
Response.Redirect(url);

Bunlara ek olarak ASP.NET MVC 1 ve 2 sürümleri bu zafiyete oldukça elverişlidir. Eğer zafiyetten korunmak istiyorsanız sürümü en az 3 yaparak kendinizi koruma altına alabilirsiniz.

Eğer yönlendirilecek URL’in durumu ile ilgili doğrulama ya da ek denetim yöntemleri uygulanmazsa aşağıdaki gibi bir kod parçası saldırıya karşı savunmasız kalacaktır. Herhangi bir güvenlik önlemi alınmadığı takdirde bu gibi URL’ler ile birlikte sitenizin kullanıcılarını saldırgan tarafından kötü amaçlı sitelere yönlendirmiş olursunuz.

http://demo.com/demo.php?url=http://zararlı.com

Dikkatli olmayan bir kullanıcı orijinal siteye gittiğini sanarak linke tıklayarak farkında olmadan zararlı siteye girmiş olur.

Bu URL yönlendirme zafiyetinden korunmak için ve güvenli şekilde gerçekleştirmek için çeşitli önlemler alınabilir.

Öncelikli olarak gerekmedikçe bu yönlendirme işleminden kaçınılması gerekmektedir.

Kullanılmasının gerektiği durumlarda kullanıcılardan yönlendirme işleminde kullanılacak olan URL’in girişi için herhangi bir alan bırakılmamalıdır.

Bunun olduğu durumlarda ise alınan verilerin düzgün doğrulama işlemlerinden geçirilmesine özen gösterilmelidir.

Doğrulama işlemlerine ek olarak girilen URL’in uygulama içerisinde olup olmadığı ve o kullanıcının bu yönlendirmeye yetkisi var mı kontrol edilmelidir.

Bu doğrulama işlemi için güvenli URL yönlendirmelerin bir whitelist ya da regex şeklinde oluşturulup girişlerden gelen değerlerin bunlar ile karşılaştırması tercih edilebilir.

Son olarak bütün yönlendirme işlemlerinden önce kullanıcılara siteden ayrıldığına dair bir sayfaya yönlendirip bu durumu kabul etmeleri durumda yönlendirme işlemi gerçekleştirmeyi deneyebilirsiniz.

TR | URL Redirect Ali TONKAZ

]]>
https://canyoupwn.me/tr-url-redirect/feed/ 0
TR | WordPress Hardening https://canyoupwn.me/tr-wordpress-hardening/ https://canyoupwn.me/tr-wordpress-hardening/#respond Wed, 09 Nov 2016 20:21:11 +0000 https://canyoupwn.me/?p=4654 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

WordPress Hardening WordPress, açık kaynaklı ve ücretsiz olarak kullanılabilen dünya üzerinde en çok tercih edilen blog sistemlerinden biridir. WordPress’i kolayca kurabilir, sitenizi yayınlayabilir ve içerik eklemeye başlayabilirsiniz. WordPress topluluk tarafından geliştirilmiştir. Bu sayede isteyen herkes gelişmesine, daha kullanışlı ve sağlam bir hal almasına olanak sağlamaktadır. WordPress güvenlik kayıtlarına göre yüklenen WordPress yazılımlarının %70’inde saldırganlar tarafından […]

TR | WordPress Hardening Ali TONKAZ

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

wordpress-bg-medblue

WordPress Hardening

WordPress, açık kaynaklı ve ücretsiz olarak kullanılabilen dünya üzerinde en çok tercih edilen blog sistemlerinden biridir. WordPress’i kolayca kurabilir, sitenizi yayınlayabilir ve içerik eklemeye başlayabilirsiniz.

WordPress topluluk tarafından geliştirilmiştir. Bu sayede isteyen herkes gelişmesine, daha kullanışlı ve sağlam bir hal almasına olanak sağlamaktadır.
WordPress güvenlik kayıtlarına göre yüklenen WordPress yazılımlarının %70’inde saldırganlar tarafından hedef alınabilecek zararlılar bulunmaktadır. Buna ek olarak 2012 yılında 170 bin WordPress sitesi hacklenmiştir ve bu sayı her yıl giderek artmaktadır.

Çok az sayıda trafik alan ya da içinde önemli dosyaların, belgelerin bulunmadığı bir blogun sahibi olduğunu düşündüğünüzde neden saldırgan bize saldırsın ki diye düşünebilirsiniz.Bunun en çok tercih edilme sebebi ise saldırganların sizin sunucunuzu spam mailleri yollamak üzere ele geçirmek istemesidir.

Bu yazıda, sahip olduğunuz WordPress sitesini nasıl tehditlerden korumanız gerektiğini konuşacağız.

Saldırganların size hangi yollardan saldıracağını anlamak için WordPress güvenlik raporundaki sayılara bakabiliriz. Geçen yılki verilere göre:

  • %41’lik kısım hosting platformunda bulunan güvenlik zaafiyetlerinden ötürü
  • %29’luk kısım WordPress temalarını kullanarak
  • %22’lik kısım WordPress pluginlerinden
  • %8’lik kısım ise kullanılan zayıf parolalardan dolayı hacklenmiştir.

Görüldüğü üzere saldırıların %41’lik kısmı hosting platformlarında yer almaktadır. Bu, birçok tekniği içeren bir konu olsa da buna bir örnek verebiliriz. Örneğin URL parametrelerini kullanarak SQL Injection saldırısı gerçekleştirilebilir. Bu teknik, saldırganlara istedikleri kodları sizin veritabanınıza kaydetmeyi-örneğin şifrenizin değiştirilmesi gibi- verilerinizi silmeyi ya da değiştirmeyi mümkün kılar.

%51’lik bir kısım ise WordPress plugin ve temalarından kaynaklanan zaafiyetlerden ötürüdür. Saldırgan kişiler plugin ve temaların içine şifrelenmiş şekilde çalıştıralabilir kod parçaçıkları bırakabilir. Bu teknik ile siteniz üzerine bir arka kapı bırakabilir, daha sonra sizin haberiniz olmadan siteniz üzerine erişim sağlayabilirler.

Listenin sonunda yer alan zayıf parolalar ise tahmin edilmesi kolay olduğu için ve kaba kuvvet saldırı ile kolayca elde edilebileceği için tehlike arz etmektedir.

Şimdi ise yapmanız gerekenlerin yer aldığı kısıma geçelim. Unutulmamalıdır ki saldıraya uğramadan sitenizi güvenli hale getirmek, saldırıya uğradıktan sonra düzeltmekten çok daha karlı bir iştir.

Güvenli Bir Hosting Şirketinden Hosting Hizmeti Almak

Yukarda bahsedildiği gibi saldırıların hatrı sayılır bir kısmı hosting şirketlerinde yer alan zaafiyetlerden dolayı olmaktadır.Hosting şirketi tercih ederken aşağıdaki gibi koşulları arayabiliriz;

  • PHP ve MySQL’in son sürümünü destekeleyen
  • WordPress ile optimize bir şekilde çalışabilecek
  • WordPress ile birlikte kullanılabilecek bir güvenlik duvarı olan
  • Zararlı yazılım taraması barındıran
  • Önemli WordPress güvenlik sorunları karşısında çözüm bulmuş hosting şirketleri tercih edilmelidir.

Eğer paylaşımlı bir hosting almayı düşünüyorsanız, hosting şirketinizin sizin alanınızı diğerlerinde izole ettiğine emin olmanız gerekmektedir. Bu sayede aynı alanda bulunan sitelerde meydana gelen saldırılar, sizi etkilemeden ortadan kalkabilir.

Ayarların Yüklenmesinin Önemi

WordPress Güvenlik Anahtarları olarak adlandırılan yazılım yenilikleri WordPress’in 2.5, 2.6, 2.7 sürümleri ile birlikte gelmeye başlamıştır. Bu anahtarlar sitenizi ziyaret edenlerin çerezlerinin daha güvenli bir şekilde saklanmasına olanak vermektedir. Ayrıca bu anahtarlar sizin parolarına eklenen ek özellikler ile birlikte parolanızın kırılmasını güçleştirecektir.

Bu anahtarlar wp-config.php dosyası içinde yer alır ve değiştirilebilir. Eğer bu anahtarları yükleme esnasında eklemediyseniz, bu dosya üzerinde ekleyebilirsiniz.

WordPress veritabanı üzerinde yer alan tüm tablolara bir ön ek getirir. Default olarak gelen bu ön ek “wp_“‘dir. Örneğin kayıtlar adında bir tablo oluşturmak istediğinizde bu wp_kayitlar şeklinde gözükecektir. Bu ön eki değiştirmenin önemi saldırganların siteniz üzerinde SQL Injeciton saldırı gerçekleştirmesi sırasında tablo isimlerini tahmin edememesini sağlamaktır.

Ön eki değiştirmek için wp-config.php dosyasında

$table_prefix = ‘wp_’;

satırınu değiştirebilirsiniz.

Bu ayarı değiştirmeniz daha önce oluşturmuş ve wp_ ön ekine sahip olan tablo isimlerinizi değiştirdiğiniz anlamına gelmez. Eğer bu işlemi tablo oluşturulmasında sonra yapıyorsanız, tablolarınızı güncellemeniz gerekmektedir.

Bunun için iThemes Security uygulmasını kullanabilir, otomatik olarak tablolarınız güncelleyebilirsiniz. Buna ek olarak bu işlemi elle yapmak da isteyebilirsiniz fakat bu işlem biraz zaman alabilir.

Bu işlemi PHPMyAdmin üzerinde her veritabanı ve her veritabanı içindeki tüm tablolar için tek tek yapmak koşuluyla aşağıdaki komut ile yapabilirsiniz. Tabi pluginlerin oluşturduğu tabloları da unutmamanız gerekmektedir.
RENAME table `wp_links` TO `newprefix_links`;

Elle komut girmek istemiyorsanız bunu yine PHPMyAdmin üzerindeki seçeneklerden de yapabilirsiniz.

Bir sonraki adımda yapmanız gereken işlem tablo ön eklerinin referans alındığı meta isimlerini değiştirmek olacaktır.Bunun için yine PHPMyAdmin üzerinden basit bir sorgu kullanmanız gerekmektedir.

UPDATE `newprefix_usermeta` SET `meta_key` = REPLACE( `meta_key`, ‘wp_’, ‘newprefix_’ )

Son olarak ise options tablosunu da güncelleyerek bu kısmı bitirmiş olursunuz.

UPDATE `newprefix_options` SET `option_name` = ‘newprefix_user_roles’ WHERE `option_name` = ‘wp_user_roles’

WordPress’inizi Güncel Tutun

WordPress’in her sürümü önceki sürümlerde görülmüş bir güvenlik açığını giderir. Dahası, WordPress’in güncel sürümünü kullanıyorsanız bu, sizin saldıralar karşısında daha fazla açığa sahip olduğunuz anlamına gelir. WordPress’inizi güncel tutmak bu ve buna benzer sebeplerden dolayı oldukça önemlidir.

WordPress yılda iki defa büyük sürüm güncellemesi yayınlar. Bu güncellemelerde daha çok yeniliklerden bahsedilir. Buna ek olarak sene içerisinde küçük güncellemeler de yapılır. Bunun da amacı büyük güncellemelerdeki hataları ve güvenlik zaafiyetlerini gidermektir.

WordPress’in 3.7 sürümü ve sonrası kullanıcılarına otomatik güncelleme seçeneği sunar. Fakat bu otomatik güncelleme sadece küçük güncellemeleri kapsar. wp-config.php dosyası içerisine ufak bir kod ekleyerek bu işlemi kendiniz yapabilirsiniz.
define( ‘WP_AUTO_UPDATE_CORE’, true );

Bu şekilde tüm güncellemeleri otomatik şekilde almış olacaksınız. Fakat büyük güncellemelerden sonra sitenizde sorun çıkması ya da sitenizin çökmesi mümkün olabilir.Bu gibi durumlar için önlem almak istiyorsanız otomatik güncelleme seçeneğini kapatmanız gerekmektedir.

WordPress Pluginleri ve Temaları

Temalar ve pluginlerin içindeki güvenlik açıkları başlarda öğrendiğimiz gibi saldırı olayların yarısından fazlasını kapsamaktadır. Siteniz üzerinde kullandığınız pluginleri seçerken oldukça dikkat etmeniz gerekmektedir.

Eğer bir işlemi basit fonksiyonlar ile yapma imkanınız varsa plugin kullanmamayı tercih edin.
Bütün pluginlerin tam amacına hizmet etmek için yazılmadığını unutmayın. Ekleyecek olduğunuz pluginin ne yaptığından emin olun, kaynak koduna bakın.
Kullanmadığınız pluginleri kapatıp kaldırın.
Pluginleri seçerken güncel olanlarını tercih edin.

Kullanmış olduğunuz temanın son sürümünü kullandığınıza ve kodların düzgün bir şekilde yazıldığına emin olun. Temalarınızı ve pluglerinizin kalitesini WordPress’in tema kontrol ve plugin kontrol uygulamalarıyla kontrol edebilirsiniz.

Buna ek olarak bilinmeyen kaynaklardan ücretsiz WordPress temaları indirirken dikkatli olmanız gerekmektedir. Bilinmeyen kaynaklardan zararlı kodların gelebileceğini unutmamak gerekir. Eğer içinizde buna dair bir şüphe varsa, WordPress’in kendi temalarına bağlı kalmayı tercih edin.

Kullanmakta olduğunuz pluginler için otomatik güncelleme işlemini aktif etmek istiyorsanız aşağıdaki kod parçasını wp-config.php dosyası içine ekleyebilirsiniz.

add_filter( ‘auto_update_plugin’, ‘__return_true’ );

Aynı işlemi temalarınız için de yapabilirsiniz.

add_filter( ‘auto_update_theme’, ‘__return_true’ );

Pluginlerinizi ve temalarınızı otomatik olarak update ederken sitenizde herhangi bir sorun çıkabilir. Bu sorun siz bilgisayarınız başında değilken çıktığında ise sizin için sorun oluşturabilir. Bu durumda güncellemeleri manuel olarak yapmak bu gibi olaylardan kaçınmak için tercih edilebilir.

Dosya İzinleri

Dosya izinlerini doğru ayarlamak oldukça önemlidir. Bütün izinlerin 777 olarak ayarlanması zararlı kodların siteniz üzerinde izinsiz çalışmasına sebep olabilir.

WordPress için tavsiye edilen dosya izinleri aşağıdaki gibidir.

  • Dizinler için 755 ya da 750
  • Dosyalar için 644 ya da 640
  • wp.config.php dosyası ise 600 olarak ayarlanmalıdır.

PHP Hata Mesajlarının Kapatılması

Eğer bir plugin ya da tema siteniz üzerinde hata verirse, dışarıya verilen hata mesajı içerisinde siteniz üzerinde yer alan yazılımlar hakkında bilgi verilmemeye dikkat edilmemelidir. Aşağıdaki kod parçasını wp-config.php hata mesajlarını engelleyebilirsiniz.

error_reporting(0);
@ini_set(‘display_errors’, 0);

.htacces Dosyası
.htacces dosyası URL’leri yönlendirme ve kalıcı bağlantı linklerini ayarlamada kullanılan önemli konfigürasyon dosyasıdır. Bu dosya sıkılaştırma işlemleri için de kullanılabilir.

Örneğin wp-config.php dosyası siteniz için önemlidir. İçerisinde veritabanı bağlantı ayarları, tablo ön ekler, güvenlik anahtarları ve diğer önemli bilgiler yer alır. Bu dosyası .htaccess içinde düzeneleme yaparak koruyabilirsiniz.

<files wp-config.php>
order allow,deny deny from all 
</files>

Sitenizi admin paneline sadece belirli IP’lerden gelen istekleri kabul etmek için aşağıdaki gibi ayarlama yapabilirsiniz.

order deny,allow
allow from 192.168.5.1
allow from 123.123.7.8
deny from all

Eğer sitenizi ziyaret eden şüpheli biri ile karşılaştıysanız yine aynı şekilde o kişiyi engelleyebilirsiniz.

order allow,deny
deny from 123.123.8.9
allow from all

Genel olarak /wp-includes/ dizini önemli bilgileri içeren bir dizindir. Sitenizi ziyaret eden kişilerin bu dizine girmesine gerek yoktur. Aşağıdaki kod satırını ekleyerek bu dizini koruyabilirsiniz.

# Block the include-only files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

.htaccess dosyasının kendisini korumak için ise aşağıdaki kodu uygulayabilirsiniz.

<Files .htaccess> order allow,deny deny from all </Files>

Ayrıca yapılan isteklerde verilen bilgiler içerisinden kullanmakta olduğumuz apache sürümü bilgilerinin gösterilmesini engellemek adına apache2.conf dosyası içerisinde aşağıdaki değişikliği yapabiliriz.

ServerSignature Off
ServerTokens Prod

ServerSignature Off ile hata sayfalarında apache sürüm bilgisinin dışarıya vurulması engellenir.

ServerTokens Prod ile de http istek başlıklarında server kısmında ne yazacağı ayarlanmış olur. Bunu Prod olarak belirleyerek sadece Apache yazmasını sağlamış oluruz.

Parolalar

Zayıf parolalar saldırganların sitenize kaba kuvvet saldırıları uygulayarak sitenizi ele geçirmeyi deneyebilir. Ayrıca zayıf parolaların tahmin edilme olasılığı da oldukça yüksektir.

  • Parolalar düzenli olarak değiştirilmelidir.
  • Otomatize toollar yardımı ile güçlü parolalar oluşturulmalıdır.
  • Sitenize kayıt olacak diğer kullanıcıların da güçlü parola kullanması için parola politikası belirlenmelidir.

Çoğu WordPress sitesinin en yetkili hesap adı admin olarak seçilmektedir ve bu admin adı eski WordPress sürümlerine default olarak gelmekteydi. Bu durum saldırganlar tarafından bilindiği için yapmaları gereken sadece şifreler için kaba kuvvet saldırısı yapmak olacaktır. Aşağıdaki SQL komutu ile PHPMyAdmin üzerinde yeni bir kullanıcı adı alabilirsiniz.

UPDATE wp_users SET user_login = ‘newusername’ WHERE user_login = ‘admin’;

Giriş Denemelerinin Sınırlanması
Saldırganlar farklı kullanıcı adları ve parolalar ile birlikte sürekli olarak sitenize girmeyi deneyebilir. Bu gibi saldırı türünden kurtulmak için yapılması gereken çözümlerin başında LoginLockDown, LoginSecuritySolution gibi pluginler yükleyerek giriş denemelerini kontrol etmektir.

Bir saldırgan belirli sayıda giriş yapmayı denediğin ve sizin belirlediğiniz eşiği aştığında bir süre için siteye erişiminin engellenmesi gerekmektedir. Bu süreyi ve deneme sayısı belirlemek size kalmıştır. Ayrıca bu pluginler yardımıyla sitenize giriş yapmayı deneyen kişilerin IP adreslerinin de kaydını tutabilmektesiniz. Daha sonra bu IP adresini kullanarak sitenize giremeyecek kişileri düzenleyebilirsiniz.

Ayrıca yanlış giriş denemelerinin sonucunda gösterilen hata mesajlarında kullanıcı adı hatalı ya da parola hatalı gibi olmamalıdır. Bu, karşı tarafa girilen kullanıcı adının var olup olmadığı hakkında karşı tarafa bilgi verir. Bunun yerine kullanıcı adı ya da şifre hatalı gibi bir mesaj gösterilebilir.

İki Aşamalı Güvenlik

İki aşamalı doğrulama saldırganlar için sitenize kaba kuvvet saldırıları ile girilmesini bir kat daha zorlaştıracaktır. Bu sayede her giriş denemesinde güvenlik kodu girilmesi zorunlu hale gelecektir.Aşağıda iki aşamalı güvenlik hizmeti veren bazı WordPress pluginleri yer almaktadır.

  • Clef
  • Clockwork SMS
  • Duo Two-Factor Authentication
  • OpenID
  • Google Authenticator
  • Authy Two Factor Authentication
  • Stealth Login Page

Giriş Sayfasının Saklanması

Default olarak giriş sayfası /wp-admin altında yer aldığı için bunu bilen kötü amaçlı kişiler giriş yapmayı deneyebilir. Bu dizini başta bir yere taşımak yine saldırganların kaba kuvvet saldırı yapmasını engellemeye yardımcı olacaktır.Bu işlemi gerçekleştirmek için bazı pluginler yer almaktadır.

  • Hide Login
  • Lockdown WP Admin
  • Rename wp-login.php

WordPress Sürüm Numarasının Kaldırılması

Default olarak WordPress meta tagleri içerisine hangi WordPress sürümünü kullandığınız ekler. Bu bilgi saldırganlar için sisteminiz tanınmasa ve o sistem üzerinde hangi zaafiyetlerin yer aldığının bilinmesine sebep olmaktadır. Bu meta tagini kaldırmak için temanızda yer alan function.php içerisine aşağıdaki kodu ekleyebilirsiniz.

remove_action(‘wp_head’, ‘wp_generator’);

Yine bu işlemi Remove Version adlı plugini yükleyerek de yapabilirsiniz.

Düzenli Yedekleme Yapılması

Siteniz üzerinde her türlü güvenlik önlemini aldığınızı düşünseniz bile belirli alarak siteniz yedeğini almanız gerekmektedir. Ne durumda olursa olsun sitenizin saldırganlar tarafında hedef alınamayağı kesin değildir.

Çoğu hosting şirketi günlük olarak sitelerin yedeklerini almaktadır. Fakat eğer onların da aldıkları yedekler zarar görürse, sizin yedekleriniz de kaybolmuş olacaktır.
Bu yüzünden sitenizin yedeğini kendiniz düzenli olarak almalısınız.

WordPress bu işlemi sizin için yapabilmekte olup yedeğinizi istediğini zaman alabilir, istediğiniz zaman geri yükleyebilirsiniz.

Bu işlemi yaparken BackupBuddy, Backup Creatır, UpdraftPlus Backup and Restoration for WordPress, WordPress Backup to Dropbox gibi pluginleri tercih edebilirsiniz.

Sitenin Taranması

Eğer sitenizin tehlike altında olduğunu düşünüyorsanız, hosting şirketiniz ile görüşüp saldırganın yüklediği dosyaları sitenizden kaldırtabilirsiniz. Fakat bazı saldırganların hedefi sitenizi spam mailleri göndermek için kullanmaktır ve siz dosyaları kaldırdığınızda bile bu işlem devam edecektir.Sitenizde yer alan zararlıları ve şüpheli dosyaları kaldırmanın en güzel yolu sitenizi düzenli aralıklarla taramaktır. Bunun için aşağıdaki pluginleri kullanabilirsiniz.

  • Ultimate Security Checker
  • AntiVirus
  • WP Antivirus Site Protection
  • Sucuri Sitecheck
  • CodeGuard
  • Theme Authenticity Checker

Bu konuda son oalrak WP Changes Tracker plugininden bahsedebiliriz. Bu plugin sizin sitenizdeki, temanızdaki, plugininizdeki tüm değişikliklerin logunu tutar. Bu bir tarama aracı olmasa da siteniz üzerindeki tüm değişiklikleri gözlemleyerek bu karara siz varabilirsiniz.

Hepsi Bir Arada Pluginler

Eğer teknik konularda çok fazla bilginiz yoksa ya da bu işler ile kendiniz uğraşmak istemiyorsanız bazı hazır pluginler sayesinde sitenizi koruma altına alabilirsiniz. Bunların amacı genel olarak sitenizi saldırganlar korumak için önlem almak olsa da bazıları günlük taramalar yapar ve güvenlik duvarları oluşturur.

  • Acunetix WP Security
  • Sucuri Security
  • Wordfence Security
  • BulletProof Security

Sonuç Olarak

Siteniz için güvenlik önlemleri almak sizin için oldukça önemli bir ihtiyaçtır. Eğer bu ve buna benzer önlemleri almazsanız, saldırılara karşı oldukça açık durumda kalırsınız. Bu sitenizin spam mailleri gönderdiği için diğer sitelerce kara listeye alınmasına sebep olabilir. En kötü durumda ise sahip olduğunuz verileri kaybedebilirsiniz.

Günlük yarım saatlik bir özen göstererek sitenizin güvenliğini iyi derecede sağlayabilir ve saldırganlar tarafından hedef alınması güç bir site haline gelebilirsiniz.

TR | WordPress Hardening Ali TONKAZ

]]>
https://canyoupwn.me/tr-wordpress-hardening/feed/ 0
TR | Linux PHP Sıkılaştırma https://canyoupwn.me/tr-linux-php-sikilastirma/ https://canyoupwn.me/tr-linux-php-sikilastirma/#respond Fri, 12 Aug 2016 07:20:21 +0000 https://canyoupwn.me/?p=3620 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

PHP Sıkılaştırma Linux sistemlerimiz üzerinde yüklediğimiz PHP için başlangıçta gelen ayarlara ek olarak bazı değişiklikler yapmamız gerekmektedir.Default olarak gelen ayarlar kısmında güvenlik konusunda eksiklikler bulunmaktadır ve bunların bilinçli bir şekilde giderilmesi gerekmektedir.Bütün bu işlemlere başlamadan önce ilk hedefimiz düşmanımızı tanımak olmalıdır.Bu anlamda karşıdan bize gelebilecek olan saldırı türleri ve detayları hakkında ne kadar çok bilgi […]

TR | Linux PHP Sıkılaştırma Ali TONKAZ

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

PHP Sıkılaştırma

Linux sistemlerimiz üzerinde yüklediğimiz PHP için başlangıçta gelen ayarlara ek olarak bazı değişiklikler yapmamız gerekmektedir.Default olarak gelen ayarlar kısmında güvenlik konusunda eksiklikler bulunmaktadır ve bunların bilinçli bir şekilde giderilmesi gerekmektedir.Bütün bu işlemlere başlamadan önce ilk hedefimiz düşmanımızı tanımak olmalıdır.Bu anlamda karşıdan bize gelebilecek olan saldırı türleri ve detayları hakkında ne kadar çok bilgi sahibi olursak kendimizi koruma konusunda o kadar başarılı oluruz.Sadece başlıklar halinde bahsetmek gerekirse zaafiyetler aşağıdaki gibi listelenebilir

  • Full Path Disclosure
  • Arbitrary File Upload
  • Arbitrary File Delete
  • Arbitrary File Download
  • Local File Inclusion
  • Remote File Inclusion
  • Cookie Injection
  • Header Injection
  • Sql Injection
  • Xml Injection
  • XXE Injection
  • Email Injection
  • Html Injection
  • Xpath Injection
  • Code Injection
  • Command Injection
  • Object Injection
  • Cross Site Scripting
  • Cross Site Request Forgery
  • Broken Authentication and Session Management

Evet ilk adımı gerçekleştirdik.Şimdi ise PHP yüklendiği zaman hazır gelen modülleri inceleyelim.Burdaki amacımız PHP modülleri arasında bizim ihtiyacımız olmayanları bulmak ve onları ihtiyacımız olana dek kaldırmaktır.

php -m

php1

Burada listelenenler arasından kaldırmak istediğimiz modülü 3 farklı şekilde kaldırabiliriz.

– rm komutu ile silebilirsiniz
– mv komutu ile adını değiştirebiliriz
– config ayarlarını değiştirerek disable edebiliriz.

Fakat burada belirtilen bütün modülleri kaldırmamıza PHP izin vermemektedir.Bunun için yapmamız gereken ilk kurulumda yüklenilmesi istediğimiz modülleri belirterek bu işlemi gerçekleştirmektir.

Bu adımı da hallettikten sonra şimdi sahip olduğumuz PHP’nin dışarıya bilgi sızdırmasını engellemeye çalışacağız.Bunun için php.ini dosyası içinde yer alan expose_php özelliğini

expose_php=off

şeklinde değiştiriyoruz.Burdaki amacımız PHP’nin dışarıya hangi server üzerinde çalıştığımız,hangi PHP versiyonunu kullandığımızı gibi bilgileri vermesini engellemektir.

PHP üzerinde bir hata oluştuğu zaman bu hatayı hata mesajı şeklinde dışarıya vermemek için yine php.ini içinde display_errors özelliğini disabled etmemiz gerekmektedir.

display_errors=Off

Disable ettiğimiz bu hata mesajlarını daha sonra log_erros özelliğini aktif ederek log kayıtları şeklinde tutmamız gerekmektedir.

log_errors=On
error_log?/var/log/httpd/php_scripts_error.log

Daha sonra yine php.ini dosyası içindeki file_uploads özelliğini kapatmamız gerekmektedir.

file_uploads=off

Burdaki amacımız dışarıdan bizim istediğimiz dışında dosya girişine izin vermemek ve bunu en basit yoldan engellemektir. Projemizde dışarıdan dosya alımı gibi bir işlev kullanmamız gerektiğini farzedelim.Bu gibi durumlarda yapmamız gereken file_upload özelliğini aktif etmek ve buna ek olarak dışarıdan gelen dosyaların maksimum boyutlarını belirtmemiz gerekmektedir.

file_uploads=On
upload_max_filesize=1M

Yukarda bahsi geçen saldırı çeşitlerinden RFI saldırısına karşı önlem almak amacıyla php.ini dosyası içerisinde yer alan allow_url_fopen ve allow_url_include özelliklerinin kapatılması gerekilmektedir

allow_url_fopen=Off
allow_url_include=Off

Yine aynı şekilde php.ini dosyası içerisinde yer alan sql.safe_mode özelliğini de aktif etmememiz gerekmektedir.

sql.safe_mode=On

Bunu özellliği aktif hale getirdiğimiz zaman mysql_connect,mysql_pconnect gibi fonskiyonlar dışarıdan gelen argümanları göz ardı ederek sadece başlangıçta bizim tanımladığımız parametrelere göre hareket etmektedir.
Sonraki adımda yapmamız gereken POST işlem boyutlarını kontrol sınırlamaktır.Bunun için yapmamız gereken php.ini dosyası içerisinde post_max_size ifadesine değer atamaktır.

post_max_size=1K

Bunu yapmaktaki amacımıza gelecek olursak eğer karşımızda kötü niyetli bir kullanıcı varsa,bizim sistemimize boyutu çok büyük bir POST isteği atmayı deneyebilir ve böylece bizim kaynaklarımızı sömürmüş olur.Bİzde bu ve bunun gibi durumlardan kaçınmak için bunun üst sınırını belirleyerek önlem alırız.

Şimdi ise sahip olduğumuz kaynakların kontrolünü sağlamak için yine php.ini dosyası içindeki bazı değerleri belirleyeceğiz.

max_execution_time = 30
max_input_time = 30
memory_limit = 40M

Yukarıdaki işlemlerde bir PHP scriptinin maksimum çalışma zamanını,yine bu script için maksimum input süresini belirlemiş olduk.Son olarak ise bir PHP scriptinin tüketebileceği maksimum hafıza miktarı için limit belirleyerek kontrolsüz bir şekilde bir PHP sayfasının kaynaklarımızı harcamasına engel oluyoruz.
Bir sonraki güvenlik önlemi olarak PHP içinde yer alan ve tehlikeli olarak adlandırılan fonskiyonları kaldırmaktır.Bunun için php.ini dosyasında aşağıdaki ayarları yapmamız gerekmektedir.

disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Buradaki amacımızdan bahsetmeden önce burda kullanılan fonksiyonlardan bazılarından bahsedelim.

shell_exec fonksiyonu kabuk üzerinde komut çalıştırılmasını sağlar ve çalışan komutun çıktısını geri döndürür.

curl_exec fonksiyonu bir curl oturumunu işleme sokar

parse_ini_file fonksiyonu ise bir yapılandırma dosyasını çözümler.

Evet bazı fonksiyonlardan bahsettik ve gördüğünüz üzere bu fonksiyonlar dışarıdan sistem üzerinde komut çalıştırılması,dışarıya bilgi çıkarılması gibi tehlikeli durumlara sebep olabilmektedir.Bu yüzden bu fonskiyonların disabled edilmesi gerekmektedir.

Şimdi ise PHP’nin hangi klasör yapısı altında çalışmasına izin verileceğini belirlememiz gerekmektedir.Tek klasör altında çalışmasına izin verilebileceği gibi birden fazla klasör altında çalışmasına izin de verilebilir.Bunun için php.ini dosyası içerisinde

 

open_basedir="/var/www/html"

şeklinde düzenleme yapabiliriz.Böylelikle bu klasöre yetkisi olmayan kişilerin sistem üzerinde PHP kodlarını çalıştırmasını engellemiş oluruz.
PHP üzerinde gerçekleşen session işlemlerinin kayıtlarının tutulduğu bir dizin vardır.Bu dizin bütün kullanıcılara açık bir dizin ise session ile ilgili bilgileri başkalarının da okumasına olanak sağlar.Bu durumdan korunmak için php.ini dosyası içinde aşağıdaki değişikliği yaparız.

session.save_path="/var/lib/php/session"
upload_tmp_dir="/var/lib/php/session"

Daha sonra belirlediğimiz yolu sadece root yetkisi ile müdahale edilecek şekilde değiştirelim

chmod 0700 /var/lib/php/session

En son olarak kontrol ettiğimizde çıktı bu şekilde olmaktadır.

php2
Bunun dışında daha genel bir güvenlik önlemi olarak sistemimi her zaman güncel tutmamız gerekmektedir.Bunun için Linux,Apache,PHP ve MySQL için gelen güvenlik güncellemelerini almamız önerilmektedir.Eğer PHP’yi paket yöneticisi ile kurduysak

yum update

komutu ile ya da

apt-get update && apt-get upgrade

komutu ile güncellemeleri alabiliriz.

Sonraki adım olarak dosya ve dizin erişimi üzerinde değişiklikler yapmalıyız.Öncelikli olarak Apache’yi root olmayan bir kullanıcı ile çalıştırmamız gerekmektedir.Bütün dosyalar ve dizin yapısı root olmayan bir kullanıcı tarafından sahiplenilmedilir.Bunun için aşağıdaki kod ile dizinin sahibini direk olarak değiştirebiliriz.

chown -R apache:apache /var/www/html/

Bu dosyalara verilen izinlerin sadece okuma izni olduğundan emin olmak için aşağıdaki komutu çalıştırıyoruz.

chmod -R 0444 /var/www/html/

Bu işlemi de gerçekleştirdikten sonra aşağıdaki şekilde kontrol edebiliriz.

php3
Bitmek bilmeyen güvenlik önlemlerinin bir diğer adımı olarak Apache,PHP,MySQL konfigurasyon dosyalarının izinlerini yazmaya karşı korumalı olarak değiştiriyoruz.

chattr +i /etc/php.ini
chattr +i /etc/php.d/*
chattr +i /etc/my.ini
chattr +i /etc/httpd/conf/httpd.conf
chattr +i /etc/

Bu komutu /var/www/html dizini altındaki dosyaları için de uygulayabiliriz.

chattr +i /var/www/html/

Daha sonra sisteme düşen logları düzenli bir şekilde takip etmemiz gerekmektedir.Apache log dosyaları için

tail -f /var/log/httpd/error_log
grep 'login.php' /var/log/httpd/error_log
egrep -i "denied|error|warn" /var/log/httpd/error_log

komutlar ile,PHP logları için

tail -f /var/log/httpd/php_scripts_error.log
grep "...etc/passwd" /var/log/httpd/php_scripts_error.log

komutları ile istenen takibi yapabiliriz.
Son olarak ise dışarıdan ekstra programlar yükleyerek güvenliği artırabiliriz.Örneğin Mod_securtiy programını yükleyerek ve üzerinde bazı kurallar belirleyerek saldırılardan korunabiliriz.SELinux prgoramı ile Apache’nin SELinux ile korunmasını sağlayabiliriz.(Not:Yazıda bahsedilen php.ini,error_log gibi dosyaları tam yolları sistemler ve sürümler arasında farklılık gösterebilir.Bahsedilen kodların tam olarak çalışması için doğru yolların verildiğinden emin olunuz)


TR | Linux PHP Sıkılaştırma Ali TONKAZ

]]>
https://canyoupwn.me/tr-linux-php-sikilastirma/feed/ 0
TR | Linux Fiziksel/GRUB Güvenliği https://canyoupwn.me/tr-linux-fizikselgrub-guvenligi/ https://canyoupwn.me/tr-linux-fizikselgrub-guvenligi/#respond Thu, 04 Aug 2016 13:18:41 +0000 https://canyoupwn.me/?p=3592 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Linux Fiziksel/GRUB Güvenliği Sistemimizin güvenliğini sağlarken ilk düşünmemiz gereken adımlardan birisi fiziksel güvenlik olmalıdır.Çoğu kişi tarafından göz ardı edilen bu adım, dikkat edilmediği durumlarda tıpkı sanal ortamdaki istismarlar gibi büyük zararlara sebep olabilir. Fiziksel güvenlik aşamasında öncelikli yapmamız gereken envanter haritası şeklinde elimizde ne olduğu,niçin olduğu ve neye ihtiyaç olduğudur. Örneğin bir kişisel ev bilgisayarının fiziksel […]

TR | Linux Fiziksel/GRUB Güvenliği Ali TONKAZ

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Linux Fiziksel/GRUB Güvenliği

Sistemimizin güvenliğini sağlarken ilk düşünmemiz gereken adımlardan birisi fiziksel güvenlik olmalıdır.Çoğu kişi tarafından göz ardı edilen bu adım, dikkat edilmediği durumlarda tıpkı sanal ortamdaki istismarlar gibi büyük zararlara sebep olabilir.

Fiziksel güvenlik aşamasında öncelikli yapmamız gereken envanter haritası şeklinde elimizde ne olduğu,niçin olduğu ve neye ihtiyaç olduğudur.

Örneğin bir kişisel ev bilgisayarının fiziksel güvenlik önlemleri ile şirket içinde kullandığımız sunucunun güvenlik önlemleri farklı şekilde düşünülmeli ve uygulanmaladır.

Bilgisayar/Sunucu Kilitleri

  • Öncelikli olarak sistemimizin bulunduğu odayı korunaklı hale getirmeliyiz.
  • Daha sonra bilgisayarımızın(sunucumuzun) bulunduğu bölmeler güçlü kilit sistemlerine sahip olmalıdır.
  • Bu kilit sistemlerini geçmek için farklı aşamalardan oluşan kilit yapıları kullanılmalıdır.
  • Kilitleme işlemini gerçekleştirdiğimiz bölmeler kolaylıkla aşılabilir,kırılabilir hafif malzemeler yerine korunaklı sağlam maddelerden yapılmış olmalıdır.
  • Belirli sayıda başarısız giriş denemesinden sonra sistem kendi kendini yok edebilme ya da farklı şekilde tekrar şifreleyebilme özelliğine sahip hale getirilmedilir.
  • Bilgisayar(sunucu) dışarıdan herhangi bir CD/DVD/USB vb aletlerin takılmasına ve kullanımına kapalı olmalıdır.
  • Yine aynı şekilde fare/klavye gibi aygıtlar takılı şekilde sistemler terk edilmemelidir.
  • Bu adımda sonra olarak sunucular yukarıda belirtilen CD/DVD/USB gibi aygıtlar tarafından önyükleme işlemine tabi tutulamamalı dır.

BIOS Güvenliği

BIOS güvenliği adımına geçmeden önce BIOS nedir önce buna bir bakalım.
BIOS(Basic Input/Output System) yani temel giriş çıkış sistemi bilgisayarın çalışması için gereken temel yapıdır.Sadece okunabilir bellek(ROM-ReadOnlyMemory) üzerine yazılmış olan BIOS yazılımı sayesinde anakartımızın özelliklerini kullanabilir,diğer donanımlar ile bağ kurabiliriz.
Sadece Okunabilir Bellek üzerinde olmasından dolay burada kalıcıdır
Konumuza geri dönersek BIOS güvenliği için önyükleme şifrelemesi yapılması gerekmektedir.Fakat çoğu sistemlerde kendiliğinden gelen bu şifreleme yöntemleri BIOS’un sıfırlanması,silinmesi ya da değiştirilmesi gibi işlemlerle kolaylıkla baypass edilebilmektedir.
Bunun için BIOS şifrelemesi için gelişmiş şifreleme seçenekleri sunan versiyonlar tercih edilmelidir.

Bootloader(Önyükleyici) Güvenliği

Bootloader,cihaz başladığı esnada işletim sistemini yüklemeyi sağlayan bir programdır. Bootloader programına ait konfigürasyon dosyaları /boot/grub/grub.cfg dosyası içinde bulunur. Güvenlik önlemi olarak yetkisiz kişilerin bu dosya üzerinde değişiklik yapmasını engellemek amacıyla izinleri değiştirmeliyiz.

grub.cfg dosyasının ilk izin hali bu şekildedir.

kali1

 

Daha sonra aşağıdaki kod ile yetki seviyesini değiştiriyoruz.

chmod 0600 grub.cfg

İşlemin sonunda dosyanın izinleri aşağıdaki şekilde değişmiş olmaktadır.

kali4

 

USB Sürücülerin Engellenmesi

 

Dışarıdan mudahaleler sonucunda oluşabilecek zararlardan korunmak için USB sürücülerin sistem üzerinden kullanımını engellemememiz gerekmektedir.Bunun için kernel üzerinde yapacağımız basit değişiklik ile kernel’in usb desteğini engelleyebiliriz.Bunu için grub.cfg dosyasının içine aşağıdaki satırı eklememiz gerekmektedir.

kernel /4.0.0-kali1-amd64 ro root=LABEL=/ console=tty0 console=ttyS1,19200n8 nousb

Bu noktada kernel /4.0.0-kali1-amd64 yazan kısım sistemimizin kernel çekirdek sürümünü belirtir.Bunu kendi sistemimizde öğrenmek için

uname -r

komutunu kullanabilir ve sonrasında çıktıyı belirtilen yer ile değiştirebiliriz.
Bu adımlardan sonra

nano /boot/grub/grub.cfg

komutu ile dosyayı açıp üzerinde yukarıda belirtilen değişikliği yapıyoruz.Kaydedip çıktıktan sonra sistem reboot edilerek yapılan değişikliklik aktif hale geçmiş olur.

Bu belirtilen şekilde kapatmanın yanı sıra istenildği takdirde USB sürücüleri BIOS ayarlarından da kapatabiliriz.Bunun için BIOS’umuzun güçlü bir parolası olması gerekmektedir.

Bu konuda yapılacaklar arasında son adım olarak USB Driver’ını kaldırmak olabilir.
Bunun için öncelikli driver dosyamızın bulunduğu dizini görüntüleyelim .

kali7

Gördüğünüz gibi driver dosyamız orda duruyor.Şimdi bunu test amaçlı olarak /root dizini altına taşıyalım .

kali8

 

Daha sonra tekrar baktığımızda USB Driver dosyası burda bulunmadığı için driver kaldırılmış olarak gözükmektedir.

kali9

 

GRUB Şifreleme

GRUB ayarları için sonradan yetkisiz değişiklikler olmaması için şifreleme yaparak korumaya almamız gerekmektedir.Bunun için öncelikli olarak

grub-mkpasswd-pbkdf2

komutu ile şifre oluştururuz.

Şifremizi belirledikten sonra aşağıdaki ekran karşımıza çıkıyor.Bu ekrandan oluşan şifremizi kopyalıyoruz.

kali12

Daha sonra oluşturduğumuz şifreyi grub ayarlarına eklememiz gerekiyor.Bunun için için

nano /etc/grub.d/00_header

Komutu ile belirtilen dosyayı açıyoruz.İçerisinde aşağıda belirtilen değişklikleri yapıyoruz.

setsuperusers="demo" password_pbkdf2 demo

dedikten sonra bir önceki ekranda kopyaladığımız şifreyi buraya yapıştırıp kaydediyoruz.

kali14
Daha sonra sistemimizi reboot ettiğimizde artık grub ekranımızda belirlediğimiz şifre sorulmaktadır.


TR | Linux Fiziksel/GRUB Güvenliği Ali TONKAZ

]]>
https://canyoupwn.me/tr-linux-fizikselgrub-guvenligi/feed/ 0