Web Uygulamaları Sızma Testi Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı



Benzer belgeler
Tanımı Problemi 46 Şüpheci Yaklaşım 47 Tamsayı Taşması (Integer Overflow) 47 Tamsayı Taşması Java Uygulaması 48

Web Uygulama Güvenliği Kontrol Listesi 2010

VERİ GÜVENLİĞİ. Web Uygulamaları Güvenliği. Özer Çelik Matematik-Bilgisayar Bölümü

ÖRÜN (WEB) GÜVENLİĞİ. Hazırlayan: Arda Balkanay

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 1

CSRF (XSRF, Cross Site Request Forgery Cross Site Reference Forgery ) Nedir? Nasıl Kullanılır? ve Nasıl Korunulur?

HTTP. (Hyper Text Transfer Protocol)

Güvenlik Java ve Web Uygulama Güvenliği

Web Uygulama Pentest Eğitimi

Web Tasarımının Temelleri

(Bilgisayar ağlarının birbirine bağlanarak büyük bir ağ oluşturmasıdır)

Dünyanın bilgisine açılan pencere... Ya da sadece yeni çağın eğlencesi...

AMAÇLAR: GÜVENLİK TESTLERİNDE BİLGİ TOPLAMA: AKTİF BİLGİ TOPLAMA

Web Application Penetration Test Report

Medula Eczane Stok Bilgileri Web Servisleri Kullanım Kılavuzu

Ülkemizdeki Üniversite Web Sayfalarının Siber Güvenlik Açısından Hızlı Bir Değerlendirmesi

Google Hacking. Gelişmiş Google Operatörleri

Selective Framebusting

Öğr. Gör. Serkan AKSU 1

YAZILIM GÜVENLİĞİ POLİTİKASI 1/6. Doküman No : Yayınlandığı Tarih: Revizyon No: 00

Dünyanın bilgisine açılan pencere... Ya da sadece yeni çağın eğlencesi...

Web Güvenliği Topluluğu webguvenligi.org Web Uygulama Güvenliği Kontrol Listesi 2012

Veritabanı Sızma Testleri Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

WEB SUNUCU GÜVENLİĞİ: Web Siteleri Neden Hacklenir?

BATMAN ÜNİVERSİTESİ KÜTÜPHANE VERİTABANLARINA KAMPÜS DIŞINDAN ERİŞİM REHBERİ

Web 2.0 Örnek Eğitim Notu

WEB TASARIMININ TEMELLERİ

Yeni Nesil Ağ Güvenliği

YAZILIM GÜVENLİK TESTLERİ. H A L D U N T E R A M A N h a l d u n t e r a m a g m a i l. c o m

İSMET AKTAR ANADOLU TEKNİK LİSESİ BİLİŞİM TEKNOLOJİLERİ ALANI WEB PROGRAMCILIĞI DALI

Bilgi ve Olay Yönetim Sistemi

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

XSS Exploitation via CHEF

1 WEB GÜVENLIĞINE GIRIŞ

Her Yönüyle SQL Enjeksiyonu. OWASP-Türkiye Bünyamin Demir

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

YZM 3215 İleri Web Programlama

İNTERNET HAFTA 02 TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Öğr. Gör. GÜLTEKİN BÜYÜKŞENGÜR. SAPANCA Meslek Yüksekokulu

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Web Uygulama Güvenliğinde Doğru Bilinen Yanlışlar!

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

Internet: Tarihçe ve Kavramlar

Ortamınızda A.D. veya LDAP sistemi var ise aşağıdaki linkten KoruMail LDAP-AD isimli dokümanı inceleyebilirsiniz.

Bölüm 10: PHP ile Veritabanı Uygulamaları

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

Burp Suite ile Deneme - Yanılma Denetimi

İNTERNET PROGRAMLAMA II. Tanımlar

BÖLÜM 8. Bilişim Sistemleri Güvenliği. Doç. Dr. Serkan ADA

W3af ile Web Uygulama Güvenlik Testleri

Google Search API ile ajax arama

<html> <head> <title>sayfa Başlığı</title> </head> <body> Bu benim ilk sayfam <b>bu metin koyu</b> </body> </html>

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ;

BLIND SQL INJECTION SALDIRILARI

Html temelleri. Ders 4

VERİ MADENCİLİĞİ (Web Madenciliği)

Aktif Dizin Logon/Logoff Script Ayarları Versiyon

WebSiteDefender ile Web Uygulama Güvenliği

Veri Tabanı-I 1.Hafta

Basit bir web uygulaması

ProFTPD FTP Sunucusu. Devrim GÜNDÜZ. TR.NET Sistem Destek Uzmanı.

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Oturum Başlatma Protokolü ve Uygulamaları

Kurulum 14 FTP ye Bağlanmak ve Dosyaları Atmak 14 Veritabanı Oluşturulması ve Bağlanıp Kurulumun Tamamlanması 15

BİLGİSAYAR VE AĞ GÜVENLİĞİ ÖĞR. GÖR. MUSTAFA ÇETİNKAYA DERS 2 > AĞ VE UYGULAMA GÜVENLİĞİ

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

DSİ kapsamında oluşturulan dağınık durumdaki verilerinin düzenlenmesi, yeniden tasarlanarak tek bir coğrafi veri tabanı ortamında toplanması,

BMT 202 Web Tasarımı Bahar Dönemi. Yük. Müh. Köksal GÜNDOĞDU 1

YÖNETİM SAYFALARI İÇERİĞİ

Ufuk Üniversitesi Kütüphanesi Kütüphane Kaynaklarına Erişim Bilgileri

İstemci Tabanlı Saldırı Türleri. Ozan UÇAR

05 - Veritabanı Sızma Testleri

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

Pac Dosyası İle Proxy Kullanmak

Bilgi ve Olay Yönetim Sistemi

Metin Text Kutuları. Metin kutusu oluşturmak için <input> tagı kullanılır.

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

Oturum Öncesi Tanımlı Oturum Kimliği Çerezi Açığı Gökhan

Bilgisayar Programcılığı Uzaktan Eğitim Programı. e-bilg 121 AĞ TEKNOLOJİLERİNİN TEMELLERİ Öğr. Gör. Bekir Güler

Veritabanı Dersi. Teoriden Pratiğe. Çağıltay N.E., Tokdemir G. Veritabanı Sistemleri Dersi -Bölüm XXV: Web'den Erişim Çağıltay, N., Tokdemir, G.

Spring Security Framework Harezmi Bilişim Çözümleri

Web Uygulamaları Güvenlik Denetimi. Fatih Özavcı

T.C.SOSYAL GÜVENLİK KURUMU. Genel Sağlık Sigortası Medula Optik E-rapor Web Servisleri Kullanım Kılavuzu

İNTERNET EXPLORER AYARLARI 1. Başlat-Ayarlar-Denetim Masası menüsünden "İnternet Özellikleri" (Seçenekleri)'ni seçiniz. Resim. 1

HTML & CSS. Öğr.Gör. M.Ersin AKAY

VET ON KULLANIM KLAVUZU

AHTAPOT Merkezi Güvenlik Duvarı Yönetim Sistemi Kontrol Paneli

Ağ Yönetiminin Fonksiyonel Mimarisi

LIBPXY SERVİSİNİN KULLANIMI

Elektronik Dergi ve Veri Tabanlarına Kampus Dışından Erişim

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

Üst Düzey Programlama

İNTERNET TABANLI TEST HAZIRLAMA VE DEĞERLENDİRME PROGRAMLAMA ARAYÜZÜ

Web Madenciliği (Web Mining)

Kurumsal Kimlik Yönetimi ve Güçlü Kimlik Doğrulama. Yılmaz Çankaya

ELEKTRONİK SAĞLIK KAYITLARI GÜVENLİĞİNDE IEEE 802.1x STANDARDININ KULLANILMASI

Ağ Sızma Testleri ve 2. Katman Saldırıları Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı

FortiMail Gateway Modunda Kurulum. v4.00-build /08

Transkript:

Web Uygulamaları Sızma Testi Türk Standardları Enstitüsü Yazılım Test ve Belgelendirme Dairesi Başkanlığı Tarih 1

Sunum İçeriği Giriş Web Teknolojileri Standartları Bilgi Toplama ve Ayar Yönetimi Girdi-Çıktı Alan Tespiti ve Manipülasyon Kimlik Denetimi Yetkilendirme Oturum Yönetimi İş Mantığı Hataları 2

Giriş 3

Giriş Web Pentest Türleri Black Box White Box Gray Box 4

Giriş Tarama Türleri Manuel Otomatik - Ücretsiz Araçlar - Ticari Araçlar Hibrit Zafiyet Tarama Araçları Ticari olanlar Acunetix Netsparker Burp Suite Pro Ücretsiz olanlar ZAP WebScarab 5

Giriş Test Süreci (Test Metodolojisi) Recon. Mapping Discovery Exploit Reporting 6

Giriş Saldırı Yüzeyleri Sunucu Yanlış yapılandırma DOS Uygulama Login sistemi Oturum yönetim sist. Fonksiyonel bozukluklar Kullanıcı Sosyal mühendislik 7

Giriş Açıklık Taslakları OWASP CWE 8

Giriş Raporlama Bir önceki sunumda hazırlanan taslaklardan raporlama yapılır. 9

Teknolojiler - Standartlar 10

Teknolojiler - Standartlar İstemci sunucu mimarisi Web tarayıcıları html http URL, URI DOM RIA Uygulamalar 11

İstemci Sunucu Mimarisi 12

İstemci Sunucu Mimarisi 13

Web Tarayıcıları Chrome IE Firefox Safari Opera Yandex Browser Firebug Debugbar Firebug Cookie Manager HttpFox 14

HTML HTML Nedir? Hyper Text Markup Language Bir HTML dokümanına web sayfası denir. Bir HTML dokümanı HTML etiketlerinden oluşur. Her HTML etiketin bir anlamı var. 15

HTML HTML Dokümanları Nasıl Tarayıcıda Görünür? Tarayıcılar HTML etiketlerini göstermezler. Bu etiketleri yorumlayarak uygun içeriği gösterirler. HTML elements, tags, attributes <p>...</p> <img>...</img> <h1>...</h1> <span>...</span> <div>...</div> <head>...</head> <title>...</title> 16

HTML Html Sayfaları Nasıl Taşınır? html dokümanları (web sayfaları) http ile İstemci -Sunucu arasında taşınır. İstemci bir web sayfasını Sunucudan ister, Sunucu da bu sayfayı istemciye (web tarayıcısına) html dokümanı olarak gönderir. 17

HTML http Hyper Text Transfer Protocol http, Sunucu ve İstemci arasında verilerin taşınmasını sağlayan bir protokoldür. Burada veriden kasıt; html sayfaları, resimler, videolar gibi sunucu ve istemci arasında taşınabilecek her şeydir. https/ssl SSL ve TSL sunucu ve istemci arasında http üzerinde aktarılan verilerin şifrelenerek iletilmesini sağlayan bir protokoldür. Web uygulamalarında güvenli bağlantı için yaygın olarak SSL / TLS kullanılır. Bir http bağlantısının güvenliği SSL ile sağlanınca artık bağlantı https olarak adlandırılacaktır. 18

HTML http Başlıkları http başlıkları, taleplerde ve cevaplarda dönen mesajların parçalarıdır. Bir http talebinin veya cevabının nasıl yorumlanacağını belirlerler. IETF tarafından RFC içinde bir standart haline getirilmiştir. 19

HTML http Metotları http metotları sunucu ile istemci arasında iletilen veriler üzerinde işlem yapılmasını sağlar. GET, POST, PUT, DELETE, TRACE, OPTIONS, PATCH 20

HTML http İsteği (http Request) Sunucuya GET metodu ile iletilen bir istek. 21

HTML http İsteği (http Request) Sunucuya POST metodu ile iletilen bir istek. 22

HTML http Cevabı (http Response) Sunucudan gelen bir cevap ve içindeki HTML etiketleri. 23

HTML HTTP Bağlantılarında Araya Girme Web uygulamaları çalışırken sunucu ve istemci arasında HTTP ile sağlanan bağlantının arasına girilebilir. Bu iş için Local Proxy programları yada tarayıcı eklentileri kullanılır. Bu eğitimde Burp Suite Free uygulaması kullanılacak. 24

SSL/TSL Nedir? SSL ve TSL sunucu ve istemci arasında HTTP üzerinde aktarılan verilerin şifrelenerek iletilmesini sağlayan bir protokoldür. Web uygulamalarında güvenli bağlantı için yaygın olarak SSL/TLS kullanılır. Bir HTTP bağlantısının güvenliği SSL ile sağlanınca artık bağlantı HTTPS olarak adlandırılacaktır. Test süreci içinde detaylı değinilecektir. 25

URL Nedir? Uniform Resource Locator Genel anlamda internet ortamında, dar anlamda ise sunucuda olan bir kaynağın konumunu belirten ve karakterlerden oluşan ifadedir. Web uygulamaları için adresleme standartıdır. URI-UDI Uniform Resource Identifier Universal Document Identifier Her ikisi de URL için temel oluşturmuş isimlendirmelerdir. 26

URL scheme://host:port/path?parameter=value#fragment http://www.bilguvenlig.gov.tr:80/arama.aspx?kelime=test#bookmark=2 scheme host:port path?parameter=value #fragment http, https,telnet, ftp mail.google.com:80, www.turkiye.gov.tr /, /index.html, /home/default.aspx?param1=val1&param2=val2 #anchor 27

Neredeyiz? Giriş Web Teknolojileri Standartları Bilgi Toplama ve Ayar Yönetimi Girdi-Çıktı Alan Tespiti ve Manipülasyon Kimlik Denetimi Yetkilendirme Oturum Yönetimi İş Mantığı Hataları 28

TEST SÜRECİ 29

Test Süreci BİLGİ TOPLAMA VE AYAR YÖNETİMİ GİRDİ-ÇIKTI ALANI TESPİTİ/MANİPÜLASYONU KİMLİK DENETİMİ YETKİLENDİRME OTURUM YÖNETİMİ İŞ MANTIĞI HATALARI 30

Bilgi Toplama ve Ayar Yönetimi Bilgi Toplama ve Ayar Yönetimi Server ve teknoloji bilgisi Oturum bilgisi URL bilgisi http metod bilgisi PORT VE SERVİS BİLGİSİ SSL/TLS BİLGİSİ Versiyonları Algoritmaları UYGULAMA DİZİN YAPISI YÖNETİCİ ARAYÜZÜ ERİŞİMİ MİNİMUM BİLGİ PRENSİBİ AYKIRI DURUMLAR Yardım ve hata sayfaları Unutuluş html açıklama satırları E-mail ve kullanıcı toplama YEDEKLENMİŞ VE UNUTULMUŞ DOSYALAR BİLİNEN AÇIKLIKLAR Google hacking ExploitDB 31

Bilgi Toplama ve Ayar Yönetimi http Başlıkları İnceleme Request başlığı 32

Bilgi Toplama ve Ayar Yönetimi http Başlıkları İnceleme Response başlığı 33

Bilgi Toplama ve Ayar Yönetimi http Başlıkları İnceleme Nikto ile yapılan bir tarama. 34

Bilgi Toplama ve Ayar Yönetimi SSL Denetimi SSL in ve TSL in versiyonları düşük olmamalı. SSL de en az versiyon 3.0, TSL de ise en az versiyon 1.0 olmalı. SSL ve TSL algoritmaları güçlü olmalı. Bu sertifikalar geçerli otoritelerden alınmalı. HTTPS Denetimi Uygulama hassas veri iletiyorsa bağlantı güvenliğinin sağlanması gerekir. Kullanıcı giriş bilgileri, bankacılık bilgileri vb. önemli bilgiler HTTPS gibi doğru yapılandırılmış güvenli bağlantılarla iletilmelidir. 35

Bilgi Toplama ve Ayar Yönetimi SSL Kontrolü Sslscan 36

Bilgi Toplama ve Ayar Yönetimi Uygulama Dizin Yapısı Uygulamanın dizin yapısının çıkarılması gerekir. Böylece hassas verilerin saklanabileceği dizinler bulunur. Yönetici arayüzüne erişim Daha odaklı manipülasyonlar yapılır. Dizin yapısı otomatize araçlar sayesinde çıkartılır. Netsparker Accunetix Burp 37

Bilgi Toplama ve Ayar Yönetimi Yönetici Arayüzüne Erişim Yedeklenmiş veya Unutulmuş Dosyalar Servis ve Port Bilgileri 38

Minimum Bilgi Prensibi Bilgi? http başlıkları Hata sayfaları ve hata kodları Unutulmuş açıklama satırları Kullanıcı uyarı mesajları E-posta adresleri Sosyal ağlar Arama motorları 39

Bilgi Toplama ve Ayar Yönetimi Bilinen Açıklıklar Güvenlikçiler veya hackerlar tarafından bazı teknolojilerde veya uygulamalarda tespit edilmiş açıklıklar internette yayınlanmış olabilir. Uygulama sunucusunun, teknolojisinin ve diğer eklentilerinin bilinmesi burada işe yarar. 40

Bilgi Toplama ve Ayar Yönetimi Google Hacking Google Hacking, Google ın ileri arama teknikleri ve diğer servisleri kullanılarak yapılan bilgi toplama ve açıklık bulma işlemidir. Google Hacking Toolbar SearchDiggty Founstone GHDB 41

Bilgi Toplama ve Ayar Yönetimi Google Hacking Google Hacking, Google ın ileri arama teknikleri ve diğer servisleri kullanılarak yapılan bilgi toplama ve açıklık bulma işlemidir. Google Hacking Database(GHDB), google kullanılarak uygulamalarda ve teknolojilerde tespit edilmiş açıklıkların depolandığı veritabanıdır. Google da hedef uygulama veya teknoloji için böyle bir arama yapmak meşakkatli olacağından, bu aramaları yapan ve veritabanındaki açıklıkları deneyen otomatize araçlar kullanılır. Google Hacking Toolbar SearchDiggty Founstone GHDB 42

Bilgi Toplama ve Ayar Yönetimi Google Hacking İleri Arama Teknikleri intext allintext intitle allintittle link cache site related info insubject inurl allinurl author id inanchor location movie filetype phonebook 43

GİRDİ ÇIKTI DENETİMİ 44

Girdi -Çıktı Denetimi Girdi ve Çıktı Alanlarının Belirlenmesi Web uygulamalarında genelde karşılaşılan problem; veri ile zararlı kodun birbirine karışmasıdır. Yeterli denetimlerin yapılmadığı bir uygulamada girdi alanları hackerlar tarafından kötü niyetle kullanılabilir. Testlerde yeterli denetim olduğunu anlayabilmek için girdi alanlarının tespiti gerekir. Girdi alanlarını sadece bir şeyler yazacağımız text kutuları olarak görmek hatalıdır. http bağlantılarında sunucu ve istemci arasında taşınan veya taşınmayan her şeyi girdi alanı olarak görmemiz gerekir. İstemci Taraflı Sunucu Taraflı Girdi Denetimi 45

Girdi -Çıktı Denetimi <scrlpt> Bu listedekiler OLMASIN! Black List (Kara Liste) Negatif Denetim [a-z] Bu listedekiler OLSUN! White List (Beyaz Liste) Pozitif Denetim 46

Girdi -Çıktı Denetimi Çıktı Denetimi Web uygulamalarında, sadece girdi alanları değil çıktı alanları da problem oluşturabilirler. Bazı durumlarda uygulama koduna karıştırılan zararlı kodlar çıktı olarak istemciye gönderilebilir. Böyle bir durumda istemci dolaylı olarak bu zafiyetten etkilenir. Encoding/Decoding Çıktı alanlarında zararlı kodların çalışmasını engellemek amacıyla uygulanması gereken bir yöntemdir. Html Encoding URL Encoding JS Encding 47

Girdi -Çıktı Denetimi SOP (Same Origin Policy) Aynı Kaynak Politikası SOP, bir web uygulamasını, sayfasını oluşturan kaynakların veya uygulamanın kendisinin, başka uygulamalar tarafından kullanım kurallarını belirleyen bir standarttır. SOP, bu kontrolü sağlamak için; Protokol Alan Adı Port 48

Girdi -Çıktı Denetimi SOP Kuralları http://www.uygulama.com:80/anon/zararli.js http://www.uygulama.com/admin/sayfa.aspx https://www.uygulama.com/admin/sayfa.aspx http://uygulama.com/anon/sayfa.aspx http://www.uygulama.com:81/admin/sayfa.aspx 49

Girdi -Çıktı Denetimi JavaScript Başlangıçta statik HTML sayfalarını görsel anlamda zenginleştirmek için kullanıldı. İlerleyen zamanlarda Sunucu ve İstemci arasındaki veri trafiğini azaltmak için kullanıldı. Günümüzde ise artık masaüstü programlarda bile kullanılacak kadar dinamik bir yapı kazandı. Bu durum; kullanıcı bilgisayarlarında, web tarayıcılarında, web uygulamalarında veya sayfalarında JavaScript kodlarının izinsiz kullanılmasının da önünü açmış oldu. 50

Girdi -Çıktı Denetimi Java Script Sayfa İçinde Nasıl Kullanılır? 51

Bilgi Toplama ve Ayar Yönetimi XSS XSS Türleri Web uygulamasını kullanan istemcilerde Javascript gibi dillerin izinsiz çalıştırılmasıdır. Reflected (Yansıtılan) XSS Stored (Persistent-Depolanmış) XSS DOM XSS 52

Girdi -Çıktı Denetimi Reflected XSS (Yansıtılmış XSS) Saldırgan Kurban 1. Kötü amaçla oluşturulmuş link 3. Sunucu, kurcalanmış HTML üretir ve yollar 2. Kurban, kötü amaçlı linke tıklar Sunucu 53

Girdi -Çıktı Denetimi Stored XSS (Depolanmış XSS) Saldırgan 1. Kurcalanmış HTML depolanır. 1. Kötü amaçla oluşturulmuş istek Kurbanlar 2. İstek 3. Kurcalanmış HTML 54

Girdi -Çıktı Denetimi DOM XSS Saldırgan 2. İstemci taraflı kod, çalışır. Kurban 1. Kötü amaçla oluşturulmuş link 3. Sunucu, temiz HTML üretir ve yollar 2. Kurban, kötü amaçlı linke tıklar Sunucu 55

Girdi -Çıktı Denetimi SQL (Structured Query Language) Veritabanı üzerinde işlem yapılmasını sağlayan bir veri işleme dilidir. ANSI tarafından standart haline getirilmiştir. Daha sonra bazı firmalarca özelleştirilmiştir. MSSQL(Transact-SQL) MySQL Oracle(ProceduralLanguage-SQL) Temel SQL komutları SELECT UPDATE DELETE INSERT 56

Girdi -Çıktı Denetimi SQL Injection (SQL Enjeksiyonu) Uygulamadan alınan parametrelerin doğrudan veritabanı sunucusuna gönderilmesi sonucu veritabanı üzerinde izinsiz sorgular çalıştırılabilir. Uygulama seviyesinde yeterli girdi denetimi yapılmadığında veya Veritabanı sunucusunda gelen sorguların denetimi yapılmadığında SQL-i gerçekleştirilebilir. 1. Denetim yapılmaz. 2. Veritabanında işler. Saldırgan Web Sunucu Veritabanı /urundetay.aspx?id=5 Select * from products where id=5 57

Girdi -Çıktı Denetimi SQL Injection (SQL Enjeksiyonu) http://www.uygulama.com/urun.aspx?id=100 Dinamik bir SQL sorgusu: $getid= "SELECT uname, umodelfrom urunwhere uid= 100 "; Normal bir değişken değeri: $getid= "SELECT uname, umodelfrom urunwhere uid= 100 "; Anormal bir değişken değeri: $getid= "SELECT uname, umodelfrom urunwhere uid= 100 or1=1 "; 58

Girdi -Çıktı Denetimi SQL Injection (SQL Enjeksiyonu) /urundetay.aspx?id=5 Select * from products where id= 5 Ürün Detayı Laptop (Orijinal Yanıt) /urundetay.aspx?id= 5 Select * from products where id= 5 Hata Sayfası /urundetay.aspx?id= 5 UNION SELECT IF(SUBSTRING(USER(),1,4)='root',SLEEP(5),1)# Select * fromproductswhereid= 5 UNION SELECT IF(SUBSTRING(USER(),1,4)='root',SLEEP(5),1) # Ürün Detayı Laptop (Orijinal Yanıt 5 sn gecikmeli) 59

Girdi -Çıktı Denetimi Parametrize Sorgular string commandtext = "SELECT * FROM Customers "+ "WHERE Country=@CountryName"; SqlCommand cmd = new SqlCommand(commandText, conn); cmd.parameters.add("@countryname",countryname); string sql = string.format ("SELECT TOP {0} * FROM Products", numresults); 60

KİMLİK DOĞRULAMA 61

Kimlik Doğrulama Kullanıcı kimlik doğrulama türü Şifre politikası Giriş-Çıkış işlevi/cache yönetimi Kimlik doğrulamanın atlatılabilmesi Brute Force (Kaba Kuvvet Saldırısı) Dictionary Atack (Sözlük Saldırısı) CAPTCHA kullanım 62

Kimlik Doğrulama Kimlik Doğrulama Bir uygulamada Sunucunun kaynaklarını doğru kişiye açtığını bilmesi, istemcinin de doğru kaynaktan veri aldığını bilmesi için sunucu ile istemci arasında kimlik doğrulama yapılabilir. Yetersiz kimlik doğrulama işlemi kullanıcı sahteciliği, hassas verilere 3. kişilerin ulaşması gibi sonuçlar ortaya çıkartır. 63

Kimlik Doğrulama Basic Base64 Kodlama Kullanır. Logout Fonksiyonu yoktur. Digest Parola sunucu tarafında açık tutulur. Integrated Sadece Windows sunucu ve sistemlerinde çalışır. Parola sunucu tarafında açık tutulmaz NTLM veya Kerberos Proxy ve güvenlik duvarlarıyla uyumlu değildir. Certificate Based İki taraflı kimlik doğrulama mümkündür. Geçerli sertifikaya ihtiyaç vardır. Sertifikanın korunması gerekir. Form Based Proxy ve güvenlik duvarlarıyla uyumludur. Çok kullanıcılı uygulamalarda tercih edilir. 64

Kimlik Doğrulama Giriş -Çıkış İşlevi ve Cache Yönetimi El işçiliği gerektirir. Yetkilendirme gereken her sayfada Logout butonu var mı? Logout olunduğunda oturum çerezinin değeri ne oldu? Logout olduktan sonra tarayıcının «Geri» butonu yetkili sayfayı dönüyor mu? Logout için ön tanımlı bir süre var mı? Önemli http istekleri ve cevapları önbellekte (cache) tutuluyor mu? 65

Kimlik Doğrulama Şifre Politikaları Kurum Kullanıcı adı ve parola politikası öğrenilmeli. Uygulama teknolojilerinin ön tanımlı kullanıcı adları ve parolaları denenmeli. Yanlış yapılandırılmış HTTP başlıkları incelenmeli. Web sayfalarındaki gizli alanlara bakılmalı. Giriş-Çıkış İşlevi Uygulamanın giriş-çıkış işlevlerinin çalışması incelenmeli. Uygulama tarayıcıda Cache e izin verip vermediğine bakılmalı. 66

Kimlik Doğrulama Kullanıcı Adı - Parola Yönetimi Geçerli ve geçersiz kullanıcı bilgileri Hata kodları / html ve yorum satırları URL adresleri Google Kurum kullanıcı adı parola politikası Tahmin edilebilir kullanıcı bilgileri Beni Hatırla/Parola Sıfırlama Gizli Soru Kaç tane? Cevaplar tahmin edilebilir mi? En son giriş tarihi Hesap kilitleme (DOS) 67

Kimlik Doğrulama Brute Force (Kaba Kuvvet Saldırısı) Başlangıç karakteri Bitiş karakteri Karakter uzunluğu Dictionary Attack (Sözlük Saldırısı) Daha önce oluşturulmuş bir listedeki tüm sözcüklerin denenmesi ile yapılır. Karakter çeşitliliği 68

Kimlik Doğrulama 69

Kimlik Doğrulama CAPTCHA Kullanım Hataları Completely Automated Public Turing test to tell Computers and Humans Apart Kullanıcı girişi bulunan uygulamalarda CAPTCHA, kaba kuvvet ve sözlük saldırılarını engelleyebilir. CAPTCHA ile ilgili sorunlar; Zayıf algoritmalar Dar örnek uzay Zayıf resimler CAPTCHA tekrarlama 70

YETKİLENDİRME 71

Yetkilendirme Yetkilendirme Çeşitleri Yetki Artırımı Yetki Dışı İşlem Dizin Gezinimi 72

Yetkilendirme Yetkilendirme Kimliği doğrulanmış kullanıcıların uygulama üzerinde farklı hakları olabilir. 73

Yetkilendirme Yetkilendirme Çeşitleri IP ve sunucu ismi tabanlı URL tabanlı Uygulama tabanlı Rol tabanlı Kaynak tabanlı İzin tabanlı Hibrit 74

Yetkilendirme Yetki Dışı İşlem http://www.sirket.com.tr?action=update&id=1 Kullanıcı 1. Kimliği denetlenir, yetkilendirilir. Web Sunucu 2. Kimliği denetlenmez, yetkisizdir. Veritabanı Saldırgan http://www.sirket.com.tr?action=delete&id=1 75

Yetkilendirme Yetki Artırımı 2. Yetkilidir, yönetici gibi davranır. Admin Yönetici Web Sunucu Saldırgan Yatay yetki yükseltme. Kullanıcı Saldırgan 1. Yetkilidir, kullanıcı gibi davranır. Kullanıcı 76

Yetkilendirme Yatay ve Dikey Yetki Yükseltme Yatay yetki yükseltme http://www.orneksite/makale/makalegoster.aspx?makaleid=1003 Dikey yetki yükseltme <form method= POST > action= http://site.com/mailing_list.pl >... <input type= hidden name= login_name value= auser > <input type= hidden name= list value= FREQUENT_FLYER >... <input type= hidden name= list_admin value= F >... </form> 77

Yetkilendirme Yetki Dışı İşlem Uygulamanın bazı fonksiyonları çalıştırması için kullanıcıdan alınan parametreleri yetki kontrolüne tabi tutmadan işleme alması durumudur. http://www.sirket.com.tr?action=update&id=1 http://www.sirket.com.tr?action=delete&id=1 78

Yetkilendirme Dizin Gezinimi C:\\xampp\htdocs\socialn\user\profile\photos\confirmed\IMG001.jpg http://www.socialn.com/showimage.aspx?foto=img001.jpg http://www.socialn.com/showimage.aspx?foto=../boot.ini http://www.socialn.com/showimage.aspx?foto=../../boot.ini http://www.socialn.com/showimage.aspx?foto=../../../boot.ini http://www.socialn.com/showimage.aspx?foto=../../../../../boot.ini http://www.socialn.com/showimage.aspx?foto=../../../../../../boot.ini http://www.socialn.com/showimage.aspx?foto=../../../../../../../boot.ini http://www.socialn.com/showimage.aspx?foto=../../../../../../../../boot.ini /confirmed /photos /profile /user /socialn \htdocs \www \C:\ 79

Kimlik Doğrulama Path/Directory Traversal (Dizin Gezinimi) Dizin Gezinimi ile uygulamanın web sunucusu üzerinde çağırdığı kaynağın yolu değiştirilerek erişimi yasak olan başka kaynapın çağırılmasıdır. Zafiyet barındıran phpkodu: <?php?> $template= sayfa.php ; if (is_set($_cookie[ TEMPLATE ])) $template=$_cookie[ TEMPLATE ]; include ( /home/templates/.$template); Zararlı http isteği: http cevabı: GET /vulnerable.phphttp/1.1 Cookie:TEMPLATE=../../../../../../../etc/passwd HTTP/1.1 200 OK Content-Type:text-html foot:fi3sed95ibqr6:0:1:system Operator:/:/bin/ksh daemon:*:1:1::/tmp: 80

OTURUM YÖNETİMİ 81

Yetkilendirme İstemci taraflı kontroller Sunucu taraflı kontroller Oturum başlatma ve sonlandırma Oturum Sabitleme (Session Fixation) Siteler arası istek sahteciliği (CSRF) 82

Oturum Yönetimi Oturum Yönetimi Web uygulamaları HTTP üzerinden haberleşirler. Fakat HTTP, istemcinin kimlik bilgisini doğruladıktan sonra istemcinin durum bilgisini (oturum bilgisini) tutmaz. Yani bir kullanıcıdan gelen iki isteğin aynı kullanıcıdan geldiğini anlayamaz. Bu nedenle istemcinin durum bilgisinin kontrol edilmesi için her istemciye özel bir değer sunucu veya geliştirici tarafından üretilir. (Session ID) Oturum Yönetimi Türleri URL taşınan oturum bilgisi Form gizli alanlarında taşınan outurum bilgisi Çerezlerde taşınan oturum bilgisi (en yaygın olanı) 83

Oturum Yönetimi Oturum Yönetimi Ne/Neden/Nasıl? Kullanıcı Web Sunucu 84

Oturum Yönetimi Unpredic table Time- Start Time-End Length SessionID Secure Transpor t Random Unique ASP.NET_SessionId=5gura4554gaayp55gca4qp45; 85

Oturum Yönetimi 1 Gizli alanlar 2 HTTP Başlıkları 3 URL bilgisi 4 Çerezlerin içeriği 5 SessionID özellikleri 86

Oturum Yönetimi Oturum Bilgisi Özellikleri Oturum Bilgisi Nitelikleri Uniqueness Randomness Length Unpredictible Expire Date Secure Transport Secure HttpOnly Domain Path Expires Set-Cookie: JSESSIONID=0023ghTq4Lh0za2mrkk45-yWb7:-3; domain=profiles.socialn.com; path=/myprofile/; Secure; HttpOnly; 87

Oturum Yönetimi Session Fixation (Oturum Sabitleme) 1. Uygulamaya erişir. Saldırgan 5. Aldığı oturum bilgisiyle uygulamaya girer. 2. Oturum bilgisi alır. 3. Oturum bilgisi içeren bağlantıyı kullanıcıya gönderir. Web Sunucu Kullanıcı 4. Oturum bilgisini kullandırır. Uygulama, kullanıcı giriş yaptıktan sonra oturum bilgisini değiştirmediği durumlarda bu saldırı ortaya çıkmaktadır. Uygulamanın saldırgana verdiği oturum bilgisiyle, saldırgan kullanıcıyı uygulamaya girmeye zorlayabilir. 88

Oturum Yönetimi CSRF (Siteler Arası İstek Sahteciliği) 2. Tarayıcının başka bir tabında kötü amaçlı sayfayı açar Güvensiz Uygulama 3. Kötü amaçlı isteği bilmeden yollar. Web Sunucu Kullanıcı 1. Uygulamaya girer ve oturum bilgisi alır. Etkileşim halindedir. 89

Bilgi Toplama ve Ayar Yönetimi Bilinen Açıklıklar ve ExploitDB Güvenlikçiler veya hackerlar tarafından bazı teknolojilerde veya uygulamalarda tespit edilmiş açıklıklar internette yayınlanmış olabilir. Uygulama sunucusunun, teknolojisinin ve diğer eklentilerinin bilinmesi burada işe yarar. 90

91