Web Uygulama Güvenliği

1580373444-cyber_security-byk.png


logo.png

Selamlar TURKHACKTEAM Ailesi Yeni bir Konu ile Sizlerleyim
Bu konumda Web uygulama Güvenliğini Ele Alacağım


5aE7rL.png


Web Uygulama Güvenliği Nedir?

Kullanıcıların bankacılık ve e-ticaret gibi özel bilgilerini işleyen
web uygulamaların en iyi bir şekilde korunması çok önemlidir. Aksi takdirde kullanıcıların özel bilgileri
hacklenebilir.
Web uygulamalarının korunması için güvenlik testlerinin yapılması çok önemlidir.
Kurumların internet üzerinde bulunan açıklıkları ve zafiyetleri saldırgan kişilerin iç ağa sızmasına imkan sağlayabilir.

Web sunucu uygulamalarının yapısı oldukça karışıktır.
Ayrıca veri tabanı uygulamalarının kod enjeksiyon saldırılarına potansiyel bir şekilde açıktır
Ve güvenliği göz önünde tutarak yazılmayan kodlar kurumu bir takım saldırılara uğratabilir.
Özellikle kullanıcıdan özel bilgi girdisi alıp veri tabanıyla etkileşime sokan uygulamalar web ataklarını oldukça kolaylaştırmaktadır.

Web uygulama zafiyetlerinin ortaya çıkmasında ağ katmanında daha çok uygulama katmanında bulunan HTTP protokolündeki
bileşenler etkili olmaktadır.

5aE7rL.png

webp.jpg

5aE7rL.png

Web uygulamalarının güvenlik için dizayn edilmesi gereken önemli bileşenleri

1-Kullanıcı Girdilerinin Kontrolü:
Kötü amaçlı olan bir kullanıcının normal veri yerine uygulamanın zafiyetlerini istismar
etmek için bir komutu yada kod parçasını enjekte edip siteye beklenmeyen bir girdi gönderebilmesi gibi bir nedenle
her zaman girdi alanlarına ayrıntılı güvenlik denetlemesi yapılması gerekmektedir.
Kütü niyetli istekleri filtrelemek için beyaz liste ve
kara liste (white listing , black listing ) yöntemi kullanılmaktadır.
Kullanıcıdan gelen form bilgilerinin denetlenmesi için geliştirilen ve kötü niyetli istekleri reddetmek için kullanılan

kara liste yönteminde gelebilecek zararlı isteklerin sayısının çok fazla olması olası kötü isteklerden oluşan bu listenin
devamlı güncellenmesi işlemini zorlaştırmaktadır. ayrıca
kara listenin oluşturulması sırasında
olası bütün durumlar hesaba katılmalı ve mümkün olduğu kadar çok sayıda kısıtlanma uygulanmaktadır.
Beyaz liste yöntemi ise kullanıcıdan alınan bilgilerin kabul edilebilen bir bilgi ile sınırlandırılmasına denir.
Beyaz listede girilen değer
URL veya tarih gibi (gg/aa/yyyy) gibi belirli bir formatta olmasıdır.
Bu yöntem ile girilen bilgilerin belirlenen formata uymayınca sistem tarafından kabul edilmez.
Diğer bir yöntem ise girdileri
sanitize etme yöntemidir. bu yöntemde beklenmeyen girdileri reddetmek yerine
kaldırılmış bir kara liste oluşturulur. Bu uygulama girdinin içine eklenmiş mesela
<script> gibi kötü amaç ile kullanılabilecek
etiketlerin veya
zararlı kod parçalarının tespit edilip kaldırılması gibi.


Güvenlik için öneriler
- uygulanabildiği bir durumda beyaz liste oluşturulması
- Beyaz listenin oluşturulamadığı durumlarda kara liste oluşturmak
- Mümkün olduğu kadar kısıtlama uygulamak
- Olabilecek saldırılar için alarm oluşturmak
- Girdiyi kullanıcıya tekrar yansıtmamak
- Girdilerin arka planda çalışan önemli servislere ulaşmamasını sağlamak

5aE7rL.png

2- HTML Çıktı Kodlama-Output Encoding
Web uygulamaları sadece kullanıcıdan gelen verileri işlemez. Veri tabanından ve başka servislerden gelen
verileri de işlemektedir. Bu dataları filtrelemek de zordur çünkü
tek tırnak (') ve küçüktür(<) gibi karakterler içermektedir.
Bu noktada uygulanması gereken çözüm
çıktı kodlama (output encoding) kullanmaktır.
Çıktı kodlama kısaca sistem ve hata yakalama mekanizmaları ile ilgili olan önemli bilgileri sızdırabilecek olan

hata mesajlarının kullanıcıya yansıtılmaması ve bu sayede verilerin saldırı için kullanılmasını önlemek
amacıyla son formata dönüştürülme işlemidir.


Güvenlik İçin Öneriler
- Uygulamanın ve sistem bilgilerini kullanıcıya yansıtabilecek olan tüm sonuç verileri için
uygun bir kodlayıcı ile çıktı kodlama uygulanması

- Web uygulama geliştirme editöründe bulunan çıktı kodlama özelliklerini kullanmak
- Veriyi işlenmemiş şekilde saklamak ve derleme (rendering) aşamasında kodlamak
- Kodlamayı güvenli olmayan platformları ve JavaScript işlevlerini kullanmamak
5aE7rL.png

3- Veri Tabanı Güvenliği
Veri tabanlarını siber saldırılardan korumak çok çok önemlidir. çünkü veri tabanları kolayca kurtarılamayan
bir yapıya sahiptirler ve çok önemli hassas bilgileri barındırırlar.
Veri tabanlarının güvenliğini korumak için uygulanan yöntemlerin başında
parameter binding (Türkçe meali parametre bağlama:))
seçeneği gelmektedir.
Parametre bağlama çalıştırılacak veri tabanı sorgusu ile veriler kodlama(encoding) ve kaçış(escape)
geçirilip birbirinden ayrılmasını sağlayan bir yöntemdir.
SQL sorgusu eğer ki birleştirme (concenation) yada formatlama yöntemlerini kullanıyorsa üretilmiş olan sonucun
sorgusunun kullanıcıdan alınmış olan girdi ile oluşturulmamalıdır.


Güvenlik için öneriler
- Kullanıcının girmiş olduğu bilgileri kullanarak SQL sorgusu oluşturmaktan kaçınmak
- Parametrelerle oluşturulmuş sorguları ve kaydedilmiş prosesleri bağlamak(Binding)
- Bağlama(Binding) için daha güvenli olan gömülü(built-in) fonksiyonları kullanmak
5aE7rL.png

4- Hareket Halindeki Veriyi Korumak
Bilgi güvenliğinin temel kavramlarından olan verinin bütünlüğünün ve gizliliğin korunmasının ilkeleri
ağ trafiğinden geçen verilerin ele geçirilmesini engelleyen mekanizmaları da içermektedir.
İstemci ve sunucudan geçen verilerin dinlenmesini , değiştirilmesini ve hassas bilgilerin çalınmasını önleyemeyen HTTP
protokolü
veya tasarımında açık ve zafiyet barındıran telnet gibi diğer bağlantı protokolleri

HTTPS, SSL ve TSL

gibi güçlü şifreleme

algoritmalarını destekleyen protokollerin dizayn edilmesi ihtiyacını doğurmuştur.



Güvenlik için öneriler

- HTTP protokolünü tüm iletişimler için kullanmak

- Normal web tarayıcılarına güvenilmek zorunda kalınca sertifika makamlarından sertifika alınarak hizmet vermek

- Gizli anahtarın korunması

- Güvenli olan HTTPS konfigürasyonu için bir yapılandırma aracı bulmak

- Cookie'ler için secure flag ayarlanması

- Hassas ve önemli bilgileri URL de sızdırmamak


- HTTPS si ayarladıktan sunucu yapılandırmasını denetlemek ve bu denetimi her ay tekrarlamak

- Sitelere kendisiyle iletişime geçen tarayıcıların yalnızca HTTPS üzerinden haberleşmesini şart koşan

HSTS(HTTP Strict Transport Security) protokolünü kullanmak

5aE7rL.png


5- Parola Güvenliği

Geleneksel bir yöntem olan periyodik şifre kuralıda ki hedef saldırganın parolasını ele geçirdiği

hesabın bir süre sonra kilitlenmesidir. Ancak çoğu kişiler yeni parolayı belirlerken eski parolada ki harflerin sadece

bazılarını değiştirdiğinde eski parolayı ele geçiren bir hackerın yeni parolayı bulması da hiç zor olmaz.

Periyodik şifre değişimi (kullanıcının bir kaç ayda bir şifre yenilemesine denir.

şifrenin güvenliğini güçlendirdiğinden daha çok kötü bir yönde etkilediği uzun süredir beri tartışılmaktadır.

Ayrıca NIST yayınladığı bir raporda periyodik şifre değişiminin kalkmasını önermektedir.

Harflerin, numaraların ve özel kombinasyonların kullanılması ile oluşturulan şifreler artık bir güvenlik tedbiri olarak

görülmemektedir ayrıca kullanıcıları şart olarak koşulmasını da yanlış olarak bulunmaktadır.

Bu düşünceye gerekçe olarak kullanıcının tahmini zor şifreler koymasını engellediğidir.

Yeni oluşturulan parolaların kontrol edilmesi de yeni bir yöntem olarak görülmektedir.

bu sayede kullanıcıların "12345678" veya "şifre" gibi parolalar seçmesi önlenir.




Güvenlik için öneriler

- Tüm parolaları özet alma(hashing) ve salt işleminden geçirmek

- Güvenli olarak tanımlanan bir algoritmayı kullanmak

- Parola saklama mekanizmasını yapılandırılabilir şekilde yapmak

- Harici sistem ve servisler için parola saklamaktan kaçınmak

- Parola uzunluğunu küçük boyutta seçmemek

5aE7rL.png




Buraya kadar okuduysanız teşekkürler

bir daha ki konumda görüşmek üzere...



ruy73v0.jpg




af8mqjc.gif
ovca0xc.gif











 
Moderatör tarafında düzenlendi:
logo.png

Selamlar TURKHACKTEAM Ailesi Yeni bir Konu ile Sizlerleyim
Bu konumda Web uygulama Güvenliğini Ele Alacağım


5aE7rL.png


Web Uygulama Güvenliği Nedir?

Kullanıcıların bankacılık ve e-ticaret gibi özel bilgilerini işleyen
web uygulamaların en iyi bir şekilde korunması çok önemlidir. Aksi takdirde kullanıcıların özel bilgileri
hacklenebilir.
Web uygulamalarının korunması için güvenlik testlerinin yapılması çok önemlidir.
Kurumların internet üzerinde bulunan açıklıkları ve zafiyetleri saldırgan kişilerin iç ağa sızmasına imkan sağlayabilir.

Web sunucu uygulamalarının yapısı oldukça karışıktır.
Ayrıca veri tabanı uygulamalarının kod enjeksiyon saldırılarına potansiyel bir şekilde açıktır
Ve güvenliği göz önünde tutarak yazılmayan kodlar kurumu bir takım saldırılara uğratabilir.
Özellikle kullanıcıdan özel bilgi girdisi alıp veri tabanıyla etkileşime sokan uygulamalar web ataklarını oldukça kolaylaştırmaktadır.

Web uygulama zafiyetlerinin ortaya çıkmasında ağ katmanında daha çok uygulama katmanında bulunan HTTP protokolündeki
bileşenler etkili olmaktadır.

5aE7rL.png

webp.jpg

5aE7rL.png

Web uygulamalarının güvenlik için dizayn edilmesi gereken önemli bileşenleri

1-Kullanıcı Girdilerinin Kontrolü:
Kötü amaçlı olan bir kullanıcının normal veri yerine uygulamanın zafiyetlerini istismar
etmek için bir komutu yada kod parçasını enjekte edip siteye beklenmeyen bir girdi gönderebilmesi gibi bir nedenle
her zaman girdi alanlarına ayrıntılı güvenlik denetlemesi yapılması gerekmektedir.
Kütü niyetli istekleri filtrelemek için beyaz liste ve
kara liste (white listing , black listing ) yöntemi kullanılmaktadır.
Kullanıcıdan gelen form bilgilerinin denetlenmesi için geliştirilen ve kötü niyetli istekleri reddetmek için kullanılan

kara liste yönteminde gelebilecek zararlı isteklerin sayısının çok fazla olması olası kötü isteklerden oluşan bu listenin
devamlı güncellenmesi işlemini zorlaştırmaktadır. ayrıca
kara listenin oluşturulması sırasında
olası bütün durumlar hesaba katılmalı ve mümkün olduğu kadar çok sayıda kısıtlanma uygulanmaktadır.
Beyaz liste yöntemi ise kullanıcıdan alınan bilgilerin kabul edilebilen bir bilgi ile sınırlandırılmasına denir.
Beyaz listede girilen değer
URL veya tarih gibi (gg/aa/yyyy) gibi belirli bir formatta olmasıdır.
Bu yöntem ile girilen bilgilerin belirlenen formata uymayınca sistem tarafından kabul edilmez.
Diğer bir yöntem ise girdileri
sanitize etme yöntemidir. bu yöntemde beklenmeyen girdileri reddetmek yerine
kaldırılmış bir kara liste oluşturulur. Bu uygulama girdinin içine eklenmiş mesela
<script> gibi kötü amaç ile kullanılabilecek
etiketlerin veya
zararlı kod parçalarının tespit edilip kaldırılması gibi.


Güvenlik için öneriler
- uygulanabildiği bir durumda beyaz liste oluşturulması
- Beyaz listenin oluşturulamadığı durumlarda kara liste oluşturmak
- Mümkün olduğu kadar kısıtlama uygulamak
- Olabilecek saldırılar için alarm oluşturmak
- Girdiyi kullanıcıya tekrar yansıtmamak
- Girdilerin arka planda çalışan önemli servislere ulaşmamasını sağlamak

5aE7rL.png

2- HTML Çıktı Kodlama-Output Encoding
Web uygulamaları sadece kullanıcıdan gelen verileri işlemez. Veri tabanından ve başka servislerden gelen
verileri de işlemektedir. Bu dataları filtrelemek de zordur çünkü
tek tırnak (') ve küçüktür(<) gibi karakterler içermektedir.
Bu noktada uygulanması gereken çözüm
çıktı kodlama (output encoding) kullanmaktır.
Çıktı kodlama kısaca sistem ve hata yakalama mekanizmaları ile ilgili olan önemli bilgileri sızdırabilecek olan

hata mesajlarının kullanıcıya yansıtılmaması ve bu sayede verilerin saldırı için kullanılmasını önlemek
amacıyla son formata dönüştürülme işlemidir.


Güvenlik İçin Öneriler
- Uygulamanın ve sistem bilgilerini kullanıcıya yansıtabilecek olan tüm sonuç verileri için
uygun bir kodlayıcı ile çıktı kodlama uygulanması

- Web uygulama geliştirme editöründe bulunan çıktı kodlama özelliklerini kullanmak
- Veriyi işlenmemiş şekilde saklamak ve derleme (rendering) aşamasında kodlamak
- Kodlamayı güvenli olmayan platformları ve JavaScript işlevlerini kullanmamak
5aE7rL.png

3- Veri Tabanı Güvenliği
Veri tabanlarını siber saldırılardan korumak çok çok önemlidir. çünkü veri tabanları kolayca kurtarılamayan
bir yapıya sahiptirler ve çok önemli hassas bilgileri barındırırlar.
Veri tabanlarının güvenliğini korumak için uygulanan yöntemlerin başında
parameter binding (Türkçe meali parametre bağlama:))
seçeneği gelmektedir.
Parametre bağlama çalıştırılacak veri tabanı sorgusu ile veriler kodlama(encoding) ve kaçış(escape)
geçirilip birbirinden ayrılmasını sağlayan bir yöntemdir.
SQL sorgusu eğer ki birleştirme (concenation) yada formatlama yöntemlerini kullanıyorsa üretilmiş olan sonucun
sorgusunun kullanıcıdan alınmış olan girdi ile oluşturulmamalıdır.


Güvenlik için öneriler
- Kullanıcının girmiş olduğu bilgileri kullanarak SQL sorgusu oluşturmaktan kaçınmak
- Parametrelerle oluşturulmuş sorguları ve kaydedilmiş prosesleri bağlamak(Binding)
- Bağlama(Binding) için daha güvenli olan gömülü(built-in) fonksiyonları kullanmak
5aE7rL.png

4- Hareket Halindeki Veriyi Korumak
Bilgi güvenliğinin temel kavramlarından olan verinin bütünlüğünün ve gizliliğin korunmasının ilkeleri
ağ trafiğinden geçen verilerin ele geçirilmesini engelleyen mekanizmaları da içermektedir.
İstemci ve sunucudan geçen verilerin dinlenmesini , değiştirilmesini ve hassas bilgilerin çalınmasını önleyemeyen HTTP
protokolü
veya tasarımında açık ve zafiyet barındıran telnet gibi diğer bağlantı protokolleri

HTTPS, SSL ve TSL

gibi güçlü şifreleme

algoritmalarını destekleyen protokollerin dizayn edilmesi ihtiyacını doğurmuştur.



Güvenlik için öneriler

- HTTP protokolünü tüm iletişimler için kullanmak

- Normal web tarayıcılarına güvenilmek zorunda kalınca sertifika makamlarından sertifika alınarak hizmet vermek

- Gizli anahtarın korunması

- Güvenli olan HTTPS konfigürasyonu için bir yapılandırma aracı bulmak

- Cookie'ler için secure flag ayarlanması

- Hassas ve önemli bilgileri URL de sızdırmamak


- HTTPS si ayarladıktan sunucu yapılandırmasını denetlemek ve bu denetimi her ay tekrarlamak

- Sitelere kendisiyle iletişime geçen tarayıcıların yalnızca HTTPS üzerinden haberleşmesini şart koşan

HSTS(HTTP Strict Transport Security) protokolünü kullanmak

5aE7rL.png


5- Parola Güvenliği

Geleneksel bir yöntem olan periyodik şifre kuralıda ki hedef saldırganın parolasını ele geçirdiği

hesabın bir süre sonra kilitlenmesidir. Ancak çoğu kişiler yeni parolayı belirlerken eski parolada ki harflerin sadece

bazılarını değiştirdiğinde eski parolayı ele geçiren bir hackerın yeni parolayı bulması da hiç zor olmaz.

Periyodik şifre değişimi (kullanıcının bir kaç ayda bir şifre yenilemesine denir.

şifrenin güvenliğini güçlendirdiğinden daha çok kötü bir yönde etkilediği uzun süredir beri tartışılmaktadır.

Ayrıca NIST yayınladığı bir raporda periyodik şifre değişiminin kalkmasını önermektedir.

Harflerin, numaraların ve özel kombinasyonların kullanılması ile oluşturulan şifreler artık bir güvenlik tedbiri olarak

görülmemektedir ayrıca kullanıcıları şart olarak koşulmasını da yanlış olarak bulunmaktadır.

Bu düşünceye gerekçe olarak kullanıcının tahmini zor şifreler koymasını engellediğidir.

Yeni oluşturulan parolaların kontrol edilmesi de yeni bir yöntem olarak görülmektedir.

bu sayede kullanıcıların "12345678" veya "şifre" gibi parolalar seçmesi önlenir.




Güvenlik için öneriler

- Tüm parolaları özet alma(hashing) ve salt işleminden geçirmek

- Güvenli olarak tanımlanan bir algoritmayı kullanmak

- Parola saklama mekanizmasını yapılandırılabilir şekilde yapmak

- Harici sistem ve servisler için parola saklamaktan kaçınmak

- Parola uzunluğunu küçük boyutta seçmemek

5aE7rL.png




Buraya kadar okuduysanız teşekkürler

bir daha ki konumda görüşmek üzere...



ruy73v0.jpg




af8mqjc.gif
ovca0xc.gif











Eline sağlık
 

THT SON KONULAR

Ü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.