web uygulama güvenliği
DESCRIPTION
Web Uygulama Güvenliği ESAPITRANSCRIPT
WEB UYGULAMA GÜVENLİĞİHAKKINDA
Mesut Güngörİzmir Yüksek Teknoloji Enstitüsü
Bilgi İşlem Daire Başkanlığı
İçindekiler
• Bilinen en popüler web uygulama atakları
• Güvenli yazılım geliştirme
• Prosedürler
Bilinen en popüler ataklar
• XSS (Cross Site Scripting)
• SQL Injection
• CSRF (Cross Site Request Forgery)
• LFI (Local File Inclusion) & RFI (Remote File Inclusion)
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.
XSS Örnekler
• guest<script>alert('attacked')</script>
• guest<script>alert(document.cookie)</script>
• guest <script>document.cookie="security=low";alert(document.cookie)</script>
SQL INJECTION
• Temel SQL Injection
• Kör-Karambole (Attır-Tuttur) (Blind) SQL Injection
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'";
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
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.
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.)
• 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
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.
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.
ESAPI (Enterprise Security API)
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
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
ESAPI Örnek