web uygulama güvenliği

17
WEB UYGULAMA GÜVENLİĞİ HAKKINDA Mesut Güngör İzmir Yüksek Teknoloji Enstitüsü Bilgi İşlem Daire Başkanlığı

Upload: mesut-guengoer

Post on 28-Nov-2014

116 views

Category:

Software


4 download

DESCRIPTION

Web Uygulama Güvenliği ESAPI

TRANSCRIPT

Page 1: Web Uygulama Güvenliği

WEB UYGULAMA GÜVENLİĞİHAKKINDA

Mesut Güngörİzmir Yüksek Teknoloji Enstitüsü

Bilgi İşlem Daire Başkanlığı

Page 2: Web Uygulama Güvenliği

İçindekiler

• Bilinen en popüler web uygulama atakları

• Güvenli yazılım geliştirme

• Prosedürler

Page 3: Web Uygulama Güvenliği

Bilinen en popüler ataklar

• XSS (Cross Site Scripting)

• SQL Injection

• CSRF (Cross Site Request Forgery)

• LFI (Local File Inclusion) & RFI (Remote File Inclusion)

Page 4: Web Uygulama Güvenliği

XSS (Cross Site Scripting)

• Atak yapan kişi sayfanızı input öğelerine javascript, vb script, html(onchange,onclick), kodlarını gömerek saldırır.

• En genelde ikiye ayrılır ;– Kalıcı olmayan XSS : Sayfada herhangi bir değişiklik

olmaz link 1 kere çalışır ve atak yapan istediğini aldıktan sonra işini bitirir. Açığı olan link sosyal mühendislikle email atılır ve kurbanların tıklanması sağlanır.

– Kalıcı XSS : Kullanıcı forum postu veya profiline girdiği script veritabanına saklanır ve her sayfa çağrıldığında çalıştırılır.

Page 5: Web Uygulama Güvenliği

XSS Örnekler

• guest<script>alert('attacked')</script>

• guest<script>alert(document.cookie)</script>

• guest <script>document.cookie="security=low";alert(document.cookie)</script>

Page 6: Web Uygulama Güvenliği

SQL INJECTION

• Temel SQL Injection

• Kör-Karambole (Attır-Tuttur) (Blind) SQL Injection

Page 7: Web Uygulama Güvenliği

SQL Injection Örnekleri

• 1' OR ' 1=1; --

• 3' and 1=0 union select null, version()#

• 3' and 1=0 union select null, user()#

• 3' and 1=0 union select null, database()#

low.php $id = $_GET['id'];

$getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'";

Page 8: Web Uygulama Güvenliği

Güvenli Yazılım Geliştirme

• ESAPI (Enterprise Security API)

• Microsoft Design Guidelines for Secure Web Applications (Eski bir dökümantasyon ama günümüze uyarlanabilir.)

• SANS Security Checklist

• OWASP Web Uygulama Güvenliği Kontrol Listesi

Page 9: Web Uygulama Güvenliği

Güvenli Yazılım için Yapılması Gerekenler – Girdilere Dikkat !!!

• Kullanıcı girdilerine güvenmeyin (textbox, checkbox, vb.)

• Girdilerin kontrolünü sadece istemci taraflı yapmayın.

• Girdileri sırasıyla Constraint -> Reject -> Sanitize kuralına göre eleyin.

Page 10: Web Uygulama Güvenliği

Güvenli Yazılım için Yapılması Gerekenler – Kimliklendirme

• Kullanıcılara şifre ve kullanıcı adını sorarken kesinlikle düz metin (http) protokolünü kullanmayın. Https Kullanın !!!

• Şifreleri kesinlikle düz metin olarak saklamayınız. • Şifre hashi üretirken hashin tuzunu rassal olarak

üretin. • Oturum yönetimi için cookielerini secure olarak

işaretleyin. (protokol https dahi olsa cookie secure olmadığında cookie hırsızlığıyla oturum çalınabilir.)

• Oturum kapanana kadar aynı cookie yi kullanmayın.

• Şifreyi geçersiz kılma süresini belirleyebilmeyi mümkün kılın.

• Hesabı kitleme veya geçersiz kılma politikalarını belirleyin.(örnek: 5 kere aynı ipden yanlış şifre girerse hesabı 1 günlüğüne engelle)

• Şifre uzunluğu ve karmaşıklığını kuvvetli tutun. (En az 8 karakter alfanumerik, özel karakter, büyük küçük harf vb.)

Page 11: Web Uygulama Güvenliği

• Oturum Kimliklendirme Cookilerini korumak için SSL kullanın.

• Kimliklendirme Cookielerinin içeriğini şifreleyin.

• Cookie ömürlerini kısa tutun.

• Oturum durumunu yetkisiz kişilere karşı koruyun. (Büyük sistemler için)

Güvenli Yazılım için Yapılması Gerekenler – Oturum Güvenliği

Page 12: Web Uygulama Güvenliği

Zaafiyetler ve Oluştukları SorunlarÖzet Tablo

Zaafiyet Kategorisi Kötü Dizayn edildiğinde olası karşılaşılacak problemler

Giriş DoğrulamasıAtaklar form alanlarına , cookielere, http başlıklarına ve sorgulara zararlı stringlergömerek gerçekleştirilir. Bu ataklar XSS, SQL Injection, ve tampon taşırma ataklarını içerir.

Kimlikliklendirme Kimlik kandırma, şifre kurma, hak yükseltme, yetkisiz erişim gibi sorunlar doğurur.

YetkilendirmeGizli ve hizmete özel verilere yetkisiz erişim, bu verilerle oynama, veya yetkisizişlemlerin gerçekleştirilmesi gibi sorunlara sebep vermektedir.

Yönetim AyarlarıYönetim arayüzüne yetkisiz erişim, ayaların güncellenmesi kullanıcı hesaplarına yetkisiz erişim.

Gizli Hassas Veri Gizli verinin açığa çıkması ve veri ile oynanması

Oturum yönetimiOturum bilgilerinin dinlenerek elde edilerek oturum hırsızlığı ve kimlik kandırma giibi sorunlara yol açmaktadır.

Şifreleme Gizli veri ve kullanıcı hesaplarına erişim

Parametre ile OynamaDizin atakları, Komut Çalıştırma atakları, giriş kontrol mekanizmalarını atlatma, bilgi açığa çıkartma, hak yükseltme , dos (denial of service) ataklarına yol açmaktadır.

Exception Yönetimi Dos, hassas sistem düzey detaylarının ortaya çıkması.

Denetim ve Kayıttutma(log)

Atağın nereden geldiğinin tespitinin yapılamaması, kullancının yaptığı bir işlemi ispatlayamama, problemlerin nerden kaynaklanabileceğini tespit edememe gibi sorunlara meydan vermektedir.

Page 13: Web Uygulama Güvenliği

ESAPI (Enterprise Security API)

• Web Uygulamaları için Güvenlik Kontrol Kütüphanesi

• Java, .Net, PHP, Javascript sürümleri mevcuttur.

• Ücretsiz ve Açık Kaynak Kodludur.

Page 14: Web Uygulama Güvenliği

ESAPI (Enterprise Security API)

Page 15: Web Uygulama Güvenliği

OWASP TOP 10 & ESAPI OWASP Top Ten

A1. Cross Site Scripting (XSS)

A2. Injection Flaws

A3. Malicious File Execution

A4. Insecure Direct Object Reference

A5. Cross Site Request Forgery (CSRF)

A6. Leakage and Improper Error Handling

A7. Broken Authentication and Sessions

A8. Insecure Cryptographic Storage

A9. Insecure Communications

A10. Failure to Restrict URL Access

OWASP ESAPI

Validator, Encoder

Encoder

HTTPUtilities (Safe Upload)

AccessReferenceMap, AccessController

User (CSRF Token)

EnterpriseSecurityException, HTTPUtils

Authenticator, User, HTTPUtils

Encryptor

HTTPUtilities (Secure Cookie, Channel)

AccessController

Page 16: Web Uygulama Güvenliği

FonksiyonlarBackendController Business

Functions

User Data Layer

Validator Encoder encodeForURL

encodeForJavaScript

encodeForVBScript

encodeForDN

encodeForHTML

encodeForHTMLAttribute

encodeForLDAP

encodeForSQL

encodeForXML

encodeForXMLAttribute

encodeForXPath

isValidDirectoryPath

isValidCreditCard

isValidDataFromBrowser

isValidListItem

isValidFileContent

isValidFileName

isValidHTTPRequest

isValidRedirectLocation

isValidSafeHTML

isValidPrintable

safeReadLine

CanonicalizationDouble Encoding Protection

NormalizationSanitization

Page 17: Web Uygulama Güvenliği

ESAPI Örnek