web uygulama güvenliğinde doğru bilinen yanlışlarprojelendirme, danışmanlık ve denetim...
TRANSCRIPT
www.biznet.com.tr
Web Uygulama Güvenliğinde Doğru Bilinen Yanlışlar !
Deniz Çevik
Güvenlik Testleri Yöneticisi
www.biznet.com.tr
Gündem
Kısaca Biznet
Web Uygulama Mimarisine Kısa Bir Bakış
Uygulama Güvenliği Sağlamada Sıkça Yapılan Hatalar
Alınabilecek Tedbirler
www.biznet.com.tr
Kısaca Biznet
Biznet Bilişim kurulduğu 2000 yılından bu yana ağ ve bilgi güvenliği alanında projelendirme, danışmanlık ve denetim hizmetleri sunmaktadır.
Ar-Ge yatırımları ile elektronik imza, elektronik fatura, ISO 27001 Bilgi Güvenliği Yönetim Platformu gibi özgün ve yenilikçi yazılımlar geliştirir.
Türkiye’de PCI Security Standards Council tarafından PCI güvenlik denetimleri yapmak üzere yetkilendirilmiş olan tek Türk firmadır.
Web uygulama güvenliği konularında danışmanlık hizmeti vermektedir.
www.biznet.com.tr
Web sunucuları
Çeşitli browser yazılımları
Uygulama sunucuları
Uygulama framework ve dilleri
Farklı veri iletim yöntemleri (HTTP, XML, SOAP)
İstemci tabanlı frameworkler
Veri tabanı sistemleri
Diğer ağ ekipmanları ve entegrasyon
Web Uygulama Mimarisi Çok sayıda bileşen demektir!
www.biznet.com.tr
Web Uygulama Mimarisi
Web
Sunucu
Kullanıcı
Web Sunucular Apache Microsoft-IIS nginx lighttpd Apache-Coyote IBM_HTTP_Server Jetty Sun-ONE-Web-Server Lotus-Domino Sun GlassFish JBOSS
Uygulamalar
Uygulama
Sunucuları
SQL Database
Veri Tabanları
İstemci
HTTP/HTTPS
Diğer Bağlantılar
XMLRPC
Web
Sunucu Web
Servisleri
(WSDL)
SOAP XML Web
Sunucu
GÜ
VEN
LİK
DU
VA
RI
XML Database
LDAP
www.biznet.com.tr
Geliştiricilerin Web Uygulama kodlarında problem
gidermede yaptığı hatalar.
Sistem yöneticilerinin aldığı önlemlerdeki hatalar.
Güvenlik denetçilerinin zafiyetleri belirlemede yaptıkları
hatalar.
Proje Yöneticilerinin uygulama tasarım ve planlama
aşamasında yaptığı hatalar.
Sık Yapılan Hatalar
www.biznet.com.tr
Kara listeler (Blacklist) ile sorunu gidermeye yönelme
XSS, SQL Injection gibi problemleri gidermek için keyword
veya regex bazlı uygulama filtreleri
Script , alert , select, and 1=1, <,>,’ ifadeleri istekten silmek
veya çıktılar oluşturulurken silmek
Rapor edilen soruna yönelik çözüm üretme
Geliştiricilerin Kullandığı Hatalı Yöntemler
www.biznet.com.tr
Kara listeler ile çözüm üretmek sorunu ortadan
kaldırmayacaktır
<scRipt>prompt(123)</sCriPt>
<scrscriptipt>alert(1)</scscriptript>
«+onmouseover=alert(123)+»
%00 yerine - %20 %09 %0a %0b %0c %0d %a0
‘abc’ = 0×616263
And, or yerine – 1+length(1), 2-len(1)
http://websec.wordpress.com/2010/12/
Geliştiricilerin Kullandığı Hatalı Yöntemler
www.biznet.com.tr
PHP magic_quotes SQL Injection’i engeller mi?
SELECT * FROM tablo WHERE sifre='\' OR 1=1 --';
İstemci tarafında istekleri şifreleyerek ve imzalayarak
yollamak
Oturum yönetimini istemcideki imzalama ile
gerçekleştirmek.
Geliştiricilerin Kullandığı Hatalı Yöntemler
www.biznet.com.tr
PHP Include Fonksiyonu kullanımındaki hatalar
Null Byte için gerekli koruma mevcut
<?php
$file = $_GET['file'];
if (file_exists('/home/www/'.$file.'.php')) {
include '/home/www/'.$file.'.php';}
?>
Ancak hala sistem üzerindeki diğer PHP uygulamaları
include edilebilir.
Geliştiricilerin Kullandığı Hatalı Yöntemler
www.biznet.com.tr
ASP.NET Request Validation XSS Koruması için tek başına yeterli mi? Parametre adı olarak XSS
«+onmouseover=alert(1234)+»
Kritik verileri VIEWSTATE içinde aktarabilirim, nasıl olsa değiştirilemez,
Her zaman değil – (http://technet.microsoft.com/en-us/security/bulletin/MS10-070)
MAC Kontrolü Devre Dışı Kalmış Olabilir
Replay Edilebilir mi? – (http://eagle-site.blogspot.com/2010/01/viewstate-replay-attack.html)
Viewstate içinde kritik bilgi aktarımı
Client-Side Trust – Javascriptlere güvenmek
Geliştiricilerin Kullandığı Hatalı Yöntemler
www.biznet.com.tr
Kara listeler kullanışlıdır ama her zaman etkin koruma sağlamaz. (neleri engellerim / nelere izin veririm)
Güvenlik önlemleri mutlaka sunucu tarafında alınmalıdır, istemci tabanlı her türlü kontrol atlatılabilir.
Veri tipi, büyüklüğü mutlaka kontrol edilmelidir.
Uygulama frameworkleri her zaman etkin koruma sağlamayabilir.
XSS saldırılarına alınabilecek en etkin önlem çıktılar üretilirken encode edilmesidir.
SQL Injection için en etkin çözüm Prapared Statement (PDO) veya Parametize Sorgular kullanımıdır.
Yazılım Geliştiricilere Öneriler
www.biznet.com.tr
Temel Hata: Uygulamadan ve yazılımcıdan bağımsız çözüm arayışı
WAF sistemini yanlış adama emanet etmek.
WAF ve IPS sistemleri uygulama güvenliğini sağlama konusunda yeterli mi?
Sistem yöneticisi web teknolojileri veya kullanılan sistem hakkında gerekli yetkinliğe sahip mi?
WAF/IPS sistemi doğru yapılandırılmış mı?
Sistem Yöneticilerinin Yaptığı Hatalar
www.biznet.com.tr
Temel yapılandırma hataları
SSL trafiği için gerekli ayarlar yapılmış mı?
Web sunucu tarafından desteklenen tüm cipher’lar için WAF/IPS sistemi kontrol gerçekleştirebiliyor mu? http://ttlexpired.com/blog/?p=121
WAF sistemi etkin durumda mı?
Aşırı yük altında nasıl davranıyor. (Fail Open vs Fail Close)
Güvenlik mi / Erişilebilirlik mi
Sistem Yöneticilerinin Yaptığı Hatalar
www.biznet.com.tr
WAF/IPS sistemlerinin eksiklikleri GET/POST kabul edilebilir http istek uzunlukları web sunucu ve waf
üzerinde aynı mı?
HTTP isteği içindeki tüm alanlar kontrol ediliyor mu? GET/POST parametre değerleri, Tüm URL, parametre adı, User-Agent, VIA, XMLRPC
istekleri
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields
Tüm HTTP metotları için WAF kontrol yapıyor mu? OPTIONS, GET, HEAD,POST,PUT,DELETE, TRACE, CONNECT, PATCH
Sistem Yöneticilerinin Yaptığı Hatalar
www.biznet.com.tr
WAF/IPS sistemleri bypass edilebilir mi? HTTP Parameter Pollution
http://www.site.com.tr/uyg.asp?id=123+select+1&id=2,3+from+table
HTTP Parameter Fragmantation uyg.asp?brandid=123+union/*&prodid=*/select+user,pass/*&price=*/from users--
XSS sadece script tag’i ile mi yapılabilir? (http://ttlexpired.com/blog/?p=334) <INPUT+TYPE="checkbox"+onDblClick=confirm(XSS)>
<APPLET+CODE=""+CODEBASE="http://url/xss">
Uygulama geliştiricilerin eklediği hatalı filtreler «+onmonmouseoverouseonmouseoverover=alert(1234)+»
URL Re-Write http://localhost/uyg/id/123+or+1=1/tp/456
SQL Injection Sadece and 1=1 den ibaret değildir. Farklı Mantıksal Operatorler kullanmak (uyg.asp?id=1'||1='1)
Aritmetiksel Fonksyionlar (uyg.asp?id=123+len(@@server)-len(@@server))
Açıklama Alanları (uyg.php?id=1/*union*/union/*select*/select+1,2,3/*)
Boşluk Karakteri Gerekli mi (uyg.php?id=union(select(version()))--) (MySQL, PostgreSQL)
Diğer Pek çok alternatif yöntem - http://ttlexpired.com/blog/?p=190
Sistem Yöneticilerinin Yaptığı Hatalar
www.biznet.com.tr
WAF/IPS sistemleri bypass edilebilir mi?
Parameter Manipulation (custid=123, custid=124)
Encoded/Encrypted/Hash’li Parametre Değerleri
Protokol Sorunları (TCP/IP den kaynaklanan problemler) Advanced Evasion Technics
http://www.stonesoft.com/en/press_and_media/releases/en/2010/16122010.html
http://www.stonesoft.com/en/press_and_media/releases/en/2011/10102011.html
WAF/IPS sisteminiz web saldırıları için ne kadar etkin çalışıyor.
http://ttlexpired.com/blog/?p=234
Sistem Yöneticilerinin Yaptığı Hatalar
www.biznet.com.tr
WAF/IPS sizi her türlü uygulama problemine karşı koruyabilir mi?
Learning Mode ???
WAF Uygulama geliştiricilerde yanlış güven etkisi doğurabilir.
Uygulama ile ilgili sorunları en etkin bir şekilde giderileceği yer uygulamanın kendisidir.
Sistem Yöneticilerinin Yaptığı Hatalar
www.biznet.com.tr
Araç tercihindeki hatalar.
Yapıdaki tüm unsurlar kontrol ediliyor mu?
Bir araç ile her türlü uygulamayı kontrol edebilir misiniz? Flash/Flex tabanlı uygulamalar
Web 2.0 Uygulamaları (JAVA ZK, Google GWT vb.)
Web Servisleri
Scriptlerin Kontrolü
Güvenlik Denetçilerinin Yaptığı Hatalar
Diğer Unsurlar (Reverse Proxy, LB, Firewall Sistemleri vb)
Veri Tabanı
Uygulama
Uygulama Sunucu/Framework
Web Sunucu
İşletim Sistemi
TCP/IP Alt Yapısı
www.biznet.com.tr
Bir araç ile her türlü uygulamayı kontrol edebilir misiniz?
Güvenlik Denetçilerinin Yaptığı Hatalar
POST /zkau HTTP/1.1 Host: localhost
Connection: keep-alive Content-Length: 143
ZK-SID: 5609 User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64)
AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.78 Safari/535.11
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Accept: */* Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
dtid=z_i6l&cmd_0=onClick&uuid_0=zk_comp_664
HTTP/1.1 200 OK Content-Length: 22349
Content-Type: text/plain;charset=UTF-8 ZK-SID: 5609
X-Powered-By: Servlet/2.5 JSP/2.1
{"rs":[["rm",["zk_comp_783"]], ["rm",["zk_comp_868"]],["rm", ["zk_comp_886"]],["rm",["zk_comp_794"]],["rm",["zk_comp_78
4"]],["rm",["zk_comp_867"]]}
POST /uyg.gwt HTTP/1.1 Host: localhost
Connection: keep-alive X-GWT-Module-Base: /uyg/
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko)
Chrome/18.0.1025.168 Safari/535.19 Content-Type: text/x-gwt-rpc; charset=UTF-8
X-GWT-Permutation: 1F4EA12941 Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
5|0|7|http://localhost/uyg.gwt/|29F4EA1240F157649C12466F01F46F60|com.test.client.GreetingService|greetServer|java.la
ng.String|myInput1|myInput2|1|2|3|4|2|5|5|6|7|
HTTP/1.1 200 OK
Content-Length: 22349 Content-Type: text/plain;charset=UTF-8
X-Powered-By: Servlet/2.5 JSP/2.1
[{"s1":"ABC",«i1":81.284083,"change":-0.007986}]
www.biznet.com.tr
Otomatik Zafiyet Tespit İşleminin Eksik Kaldığı Noktalar DOM Tabanlı sorunlar (DOM tabanlı XSS)
Yeni nesil web uygulamalarının kontrolü (Google GWT, Java ZK vb)
Captcha kullanılan uygulamalar
Tek seferlik işlem gerçekleştiren uygulamalar (Sepete Ekle, Sil vb)
Veri kaydı yapıp, çıktı olarak detay sunmayan uygulamalar. (Stored, Second Order)
Oturum yönetimi problemleri (Hak yükseltme, yetkisiz erişim, vb)
Hash/Encoded/Encrypted parametre değerleri
Parameter Manipulation problemleri
URL Re-Write kullanılan uygulamalar (GET /guzel_uygulama,1-57/3,[9-0]/12;ABC/)
Sıralı işlem yapılmasını gerektiren uygulamalar. (istek – kaydet – ok – görüntüle - ok)
Uygulama geliştirici tarafından eklenen kara listelerin bulunduğu uygulamalar
Viewstate gibi alanlarda aktarılan veriler
Crawler sorunu
Veri bütünlüğü kontrolünün yapıldığı uygulamalar.
Güvenlik Denetçilerinin Yaptığı Hatalar
www.biznet.com.tr
Güvenlik Denetçilerinin Yaptığı Hatalar
Otomatik tarama modeli web uygulama zafiyetlerinin
ortaya çıkartılması konusunda eksikliklere sahiptir.
https://www.owasp.org/images/8/81/Closing_the_Gap_Ap
pSecDC_Shelly.ppt
Pek çok unsur bir uzman tarafından elle kontrol edilmelidir
http://www.webguvenligi.org/docs/web_uygulama_guvenl
igi_kontrol_listesi_2010.pdf
www.biznet.com.tr
Planlama Aşamasında Yapılan Hatalar
Denetim çalışmasının proje takvimindeki yeri
Kapsamlı testler için yeterli süre var mı?
Bulunan bulguların kapatılma süreleri
Testi yapacak ekip belirlenmiş mi?
Test ekibinin programı
www.biznet.com.tr
Planlama Aşamasında Yapılan Hatalar
Yazılım ekibinin sorunu giderme hızı, doğrulama için dönüş
süreleri
www.biznet.com.tr
Planlama Aşamasında Yapılan Hatalar
Denetim Ekibinin Seçim Kriteri Şartnameler
Sahip olunan sertifikalar
Aynı ekip / Farklı bakış açısı
Test edilecek uygulamanın tipi ve ekibin bu tip uygulamalardaki uzmanlığı / Fiyat
POC
Denetim Maliyetini Kim Karşılamalı
Denetim Bütçesinin Belirlenmesi
Önceki projelerdeki fiyatlar
Bütçe belirlemeden önce uzman görüşü
Uygulama veya IP başına / Adam-gün