Site Güvenlik Önlemleri

defacerGLD

Profesör
Katılım
16 Ocak 2020
Mesajlar
3,328
Reaksiyon puanı
3,068
Puanları
293
Bu sefer sitede oluşabilecek güvenlik açıkları ve kapatmayı gösterecem sizlere simdiden beğenmei unutmayalım

İlk olarak en çok bilinen açık türümüz sql açığındayız

SQL Nedir ?

# SQL (Structured Query Language) veritabanından bilgi çekme silme vb. gibi işlemler yapabilen bir dildir. Bulunduğumuz zamanda çoğu web sitelerinin alt yapılarında bu veritabanı vardır.
# SQL en yaygın olan güvenlik açığıdır ve çok tehlikelidir.
# SQL hazır scriptler (vbulletin,vb.) gibi yüksek güvenlik testlerinden geçirilmez.
# Bu web siteleri vertibanı ile anlaşmaları için SQL’e ihtiyaç duyarlar.
# Bu web siteleri vertibanı ile anlaşmaları için SQL’e ihtiyaç duyarlar.

Nasıl Kapatılır ?

servar da magic_quotes aktif değilse şayet tırnak problemleri yaşamanız veya sql injectiona maruz kalmanız olası,

sunucu size ait ise php.ini de magic_quotes = değerinin on olmasına dikkat edin, bunun haricinde sayfalarınızın kodlaması utf-8 ve addslashes() fonskiyonundan geçirmeniz durumunda sql injectiona maruz kalmazsınız,

sql injection $_GET ve $_POST ile html den alınan verinin mysql motoruna gönderilirken karakterlerin yanlış algılanması sonucu meydana gelir

addslashes() html den gelen operatör karakterleri ” veya ‘ başına \ koyarak sorgunun es geçmesini sağlar, eğer magic_quotes kapalı ise addslashes işlev görmez. bu nedenle her ne kadar fonksiyondan geçirirseniz geçirin sql injection yinede gerçekleşir. bunun akabinde yine sayfa kodlamanız utf-8 değilse ascii karakter olarak addslashes bypass edilebilir, sql injection yazılım operatörlerinin karakter setine göre alınıp işlenmesinden ibarettir, eğer siz bu veriyi işlerken bu karakterin query ye ait olmadığını anlatamazsanız query niz bozulur ve injection gerçekleşir. Burada asıl mesele ” ve ‘ süzülmesi olayıdır. query lerinizde where sutun=’$degisken’ şeklinde tırnak içersine almanız query nizin bozulmasını engeller,

aynı şekilde

where sutun=$degisken şeklinde kullanmanız query nizin bozulmasına neden olur, çünkü verinin baslangıc ve bitiş karakterleri yoktur.


Şöyle basit bir örnek verelim.

gelen verimizin Ahmet”in Ceketi olduğunu varsayalım

PHP:
1
2
3
$degisken = $_GET['veri'];

"select * from tablo where sutun=$degisken"

Veriyi değişken yerine koyduğunuzda

PHP:
1
"select * from tablo where sutun=Ahmet"in Ceketi"


Şeklinde query de en baştaki ” ve en sondaki ” query aralığını belirtir, veride bir tane daha ” koyarsanız query orda biter yani where sutun=Ahmet” — devamı yok sayılır.
Ardından injection gerçekleşir. bunu şöyle yapsak

$degisken = addslashes($_GET['veri']);

burada verimizin çıktısı,

Ahmet\”in Ceketi şeklinde olacaktır. addslashes veriden gelen ” karakterinin query e ait olmadığını ibare edecek yani karakteri es geçmesini (görmezden gelmesini) sağlayacak \ karakterini ekler,

şayet where sutun=’$degisken’ şeklinde kullanırsanız, query i dahada kısıtlamış olursunuz, mysql başlangıc berlireçleri yanı sıra, where sutun kısmında da bir kısıtlayıcı eklemiş olursunuz.



Bu fonksiyon bizim html de kullandığımız özel karakterleri şifrelemizi sağlar


Simdi xss/css açığını kapatalım


XSS Kullanicinin girdi saglayacagi sayfalarda kullanici tarafindan girdiye script’ler gömülerek yapilan saldirilardir. Bu bazen direkt kullanicinin (lamer) kendisi tarafindan ya da onu baska bir isteye yönlendirmek isteyen bir lamer tarafindan yapiliyor olabilir.


“Genelde cross site scripting açiklari saldirganin sistemi deneme-yanilma yaparak bulmasi ile ortaya çikar. Açigin bulunmasi ile saldirgan baska bir domainden açigin bulundugu domain ve sayfanin bilgilerini session bilgilerini ve diger obje degerlerini çalmasina olagan saglar.

"Cross-site scripting (XSS) güvenlik açiklari e-posta listelerinde en çok rastlanan güvenlik açiklari arasinda yer almaktadir. Bunun baslica nedeni ise bu açiga bir çok web uygulamasinda rastlanmasi ve ücretsiz güvenlik açigi tarama yazilimlari ile kolayca kesfedilmesidir..."

Çözüm:


Aslinda çözüm yazilan kodlamanin düzeltilmesindedir.

Programin kullanicidan aldigi girdiler her zaman kontrolden geçirilmelidir. Bu ayni zamanda "Sql injection" "Buffer Overflow" gibi saldirilari da engelleyecektir.


Eger belirli bir tür veri (numerik alfanümerik) bekleniyorsa ve belirli bir boyutta ( 8 karakter maksimum 20 karakter gibi) olmasi bekleniyorsa girilen verinin bu sartlara uydugunun saglanmasi gerekmektedir. Girdilerden ****karakter’ler mutlaka filtrelenmelidir. Bu birçok saldiriyi engelleyecektir. Örnegin ...
< > " ’ % ; ) ( & + -

karakterleri kullanici girdisinden temizlenmelidir. Aslinda ne tür verinin beklendigi belirtildigi durumlarda bu tür filtreleme de otomatikman gerçeklesecektir.Bu tür karakterlerin gerektigi ortamlarda girilen verinin encode edilmesi gerekebilir.Bu önlemler birçok XSS saldirisini engelleyecektir.Web üzerinden yazilim gelistirenlerin Cert’in referansinda yazili olanlara dikkat etmesi ve kodlamalarinda dökümanda belirtilen kurallara uymasi gerekmektedir.

Agda kurulacak bir sistemle bu saldirilarin engellenmesinin saglanmasi ise ancak sunuculari bir "proxy" veya IPS arkasina koyup her türlü data verisinin kontrolü ve düzeltilmesi ile saglanabilir. Bu süreçte ise idari ve teknik çesitli problemler yasanabilecektir.

Simdi upload açığı

FS0 (FileSystemObject) den bahsedeceğim. FSO Saldırısı çogunluk ile "Upload Açığı" ile de bilinir.

FSO Nedir ?
Birçok WebMaster Tarafından Sihirli değnek gibi kullanılan FSO nesnesi,Yeterli Güvenlik Yapılandırılmaları Sağlanmadan Malesef bir silaha dönüşebiliyor.Sunucunuz Üzerinde istediği dosyada değişiklik yapabileceği,bir üst dizine geçebileceği,dolayısıyla tek bir siteye değil,
Sunucu üzerinde bulunan tüm sitelere erişim sağlayabileceği bir araç FSO.
Sitelerin yükleme modülleri kullanılarak FSO upload edilir.Eğer Sunucuda da yeteri güvenlik önlemleri alınmamışşa,tüm dizinleri kontrol edebilir,İstediği sitenin ana sayfası dahil
tüm sayfalarını değiştirebilir.


FSO Saldırısından Korunmak Yöntemleri

1.Güncel IIS Kullanın
Sorun ne kadar büyük görünsede,ISS sürümünüzü güncellemeniz FSO Saldırısından Korunmanızı Büyük Ölçüde Giderecektir.

2.Yüklemelere Sınır Getirin
FSO ile yapılan yüklemeleri sınıflandıraiblirsiniz.Mesela .exe,.asp,.php gibi uzantılara sahip dosyaların yüklenmesini engelleyip,Sadece .jpg,.gif yüklenmesine izin verebilirsiniz.

3.Yetkileri Gözden Geçirin
Klasör ve dizin yetkilendirmenizi gözden geçirin.
Eğer tam yetki vermişseniz,Sadece FSO değil,Diğer tehtitlere karşı da güvenliğiniz iyi değil demektir.



En etkin yol dökümanda belirtildigi üzere sunuculardaki kodun tekrar elden geçirilmesidir. Eger kodu yazan ortaliklarda gözükmüyorsa ya o kod kaldirilmali ya da ag tabanli bir çözüme gidilmelidir.

Tabi daha çok açık türü var ama yazmaktan yorurdum en kısa zamanda eklemeler olacak


Kahramanımız Atatürkle bitiriyorum

atatürk.png


İyi akşam/sabah lar
 
Üst