SlideShare a Scribd company logo
1 of 33
SOP
SAME ORIGIN POLICY
SOP NEDIR?
• SOP (same origin policy), tarayıcı üzerinde çalışan iki originin
birbirleri arasında iletişim kurup kuramayacağını belirleyen
politikadır.
ORIGIN NEDIR?
• Kaynağa ulaşım sağlanırken kullanılan protokol, URL ve erişilen
port bilgisi birleşiminden oluşan tanıma origin adı verilir.
• Protokol: “http://“
• Url: “www.enuygun.com”
• Port: 80
IKI ORIGIN ARASINDAKI KURALLAR
• http://www.example.com/dir/page.html url’ing sahip bir web sitemiz olduğunu
düşünerek, sahip olduğumuz originden hangi urllere istek gönderebileceğimizi
inceleyelim.
IKI ORIGIN ARASINDAKI KURALLAR
• A originine sahip olan bir site;
• B origininden bir script yükleyip çalıştırabilir.
• Yüklenen scriptin kaynak koduna veya sade (raw) haline erişim sağlayamaz.
• B origininden CSS yükleyebilir.
• B origini üzerindeki CSS dosyasının sade (raw) haline ulaşamaz.
• B originindeki bir siteyi IFRAME ile yükleyebilir.
• IFRAME ile yüklenmiş B originindeki sitenin DOM ‘una erişemez.
• B origininden bir resim yükleyebilir.
• B origininden yüklenmiş bir resimin bitlerine erişemez.
• B origininden bir video oynayabilir.
• B origininden oynatılan videonun resimini çekemez.
KURALLARIN AMACI
Tarayıcıların katı bir şekilde uyguladıkları bu kuralların temel amacı;
Güvenlik
WEB 2.0 VE YENILIKLER
• Web 2.0 ile kullanıcı haraketlerini temel alan siteler üretilmeye
başlandı. Bu interaktif siteler kendi içerilerinde cross domain
süreçler başlatmak istediklerinde ise SOP’un katı kurallarına
takıldılar. Bundan dolayı bu kurallara bazı esneklikler ve yenilikler
kazandırma ihtiyacı doğdu. İşte bunlardan bazıları;
• XmlHTTPRequest
• JSONP
XMLHTTPREQUEST
• Bir kaynağa asenkron şekilde istek atıp yanıt almaya yarar.
• X-Requested-With başlığı isteğe eklenerek gönderilir.
X-Requested-With: XmlHTTPRequest
• SOP kuralları katı bir şekilde uygulanır.
XMLHTTPREQUEST & SOP
• Aynı origine sahip isteklerin cevapları okunabilir.
• Aynı origin’e sahip isteklere extra başlıklar (header) eklenebilir.
• Farklı bir origin’e istek yapılabilir ancak cevap okunamaz. (CSRF)
JSONP
• Farklı veya aynı originlere asenkron bir şekilde istek atıp yanıt
almaya olanak sağlar.
• Yanıt (response) bir script’tir. Bu script sizin url’de gönderdiğiniz
methodu çağırır.
• Yalnızca GET methodu ile çalışır.
ÖRNEK JSONP YANITI
fooCallback(
[
{"artist": "Michael Jackson", "album": "Black or
White”},
{"artist": "Beatles, The", "album": "Revolution"}
]
);
JSONP VE HTTPS
• JSONP ile ilişkili olan tehlike ise; yüklenilen scripti direk olarak
tarayıcının çalıştırıyor olması. Eğer giriş yaptığınız web sitesi https
değil de http olursa, giden/gelen verinin bozulup bozulmadığına
emin olamayacağınızdan dolayı ağ katmanınızdan kaynaklı olarak
bir güvenlik açığına sebebiyet verebilirsiniz.
XDOMAINREQUEST AND CORS
• JSONP kullanarak GET methodu ile veri çekebilmiştik fakat veri
yazma / silme / güncelleme işlerini de aynı anda yönetebilmemiz
gerekiyor.
• Bu konudaki baskılardan dolayı ilk adım olarak Microsoft
XDomainRequest adlı bir yapı tanıtır. Diğer büyük tarayıcılar ise
CORS’u (Cross origin resource sharing) tanıtırlar.
• SOP sınırlamalarına ek olarak bu iki yapı ile istek kısıtlama
yönetimi domain’e de verilmiş oldu.
CORS YÖNTEMLERI
• Simple Request
• Preflighted Request
SIMPLE REQUEST
• Koşullar;
• HTTP methodu GET, HEAD veya POST ise
• Content-Type başlığı (header) application/x-www-form-urlencoded,
multipart/form-data veya text/plain ise
• Fazladan başlık (header) gönderilmemiş ise
• CORS mekanizması bunu simple request olarak değerlendirecek ve
isteği direk yönlendirecektir.
ÖRNEK SIMPLE REQUEST ISTEĞI
İstek:
GET / HTTP/1.1
Host: otel.enuygun.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en,en-US;q=0.5
Origin: http://www.enuygun.com
Connection: keep-alive
Yanıt:
HTTP/1.1 200 OK
Date: Sun, 24 Apr 2016 12:43:39 GMT
Server: Apache
Access-Control-Allow-Origin: http://www.enuygun.com
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: application/xml
Content-Length: 423
<?xml version="1.0" encoding="UTF-8"?>
...
PREFLIGHTED REQUEST
• Koşullar;
• Http methodu GET, HEAD veya POST dan farklı bir method ise
• Content-Type başlığı (header) application/x-www-form-
urlencoded, multipart/form-data veya text/plain dan farklı ise
• Fazladan başlık (header) gönderilmiş ise
• CORS mekanizması bunu preflighted request olarak
değerlendirecek ve ilk önce OPTIONS isteği yönlendirecektir.
Sunucu bu isteğin doğruluğu kontrol edip ilgili başlıkları (header)
gönderdikten sonra tarayıcı gerçek isteği gönderecektir.
ÖRNEK PREFLIGHTED REQUEST ISTEĞI
İstek:
OPTIONS /resources/post-here/ HTTP/1.1
Host: otel.enuygun.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Connection: keep-alive
Origin: http://www.enuygun.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-TOKEN-ID
Yanıt:
HTTP/1.1 200 OKDate: Mon, 01 Dec 2008 01:15:39 GMT
Server: Apache
Access-Control-Allow-Origin: http://www.enuygun.com
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-TOKEN-ID
Access-Control-Max-Age: 86400
Vary: Accept-Encoding, Origin
Content-Length: 0
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Content-Type: text/plain
CORS BAŞLIKLARI (HEADER)
• İstek (request) başlıkları (header)
• Origin
• Access-Control-Request-Method
• Access-Control-Request-Headers
• Yanıt (response) başlıkları (header)
• Access-Control-Allow-Origin
• Access-Control-Expose-Headers
• Access-Control-Max-Age
• Access-Control-Allow-Methods
• Access-Control-Allow-Headers
• Access-Control-Allow-Credentials
ORIGIN
• Kaynağa ulaşım sağlanırken kullanılan protokol, URL ve erişilen
port bilgisi birleşiminden oluşan tanıma origin adı verilir.
• Protokol: “http://“
• Url: “www.enuygun.com”
• Port: 80
ACCESS-CONTROL-REQUEST-METHOD
• Sunucuya gönderilen bu parametrede hangi metod ile isteğin
gönderildiği belirtilir.
• Örnek: Access-Control-Request-Method: <metod>
ACCESS-CONTROL-REQUEST-HEADERS
• Sunucuya gönderilen bu parametrede fazladan hangi başlıkların
(header) gönderildiği belirtilir.
• Örnek: Access-Control-Request-Headers: <başlık-adı>[, <başlık-
adı>]*
ACCESS-CONTROL-ALLOW-ORIGIN
• Sunucu istemciye bu başlık (header) ile hangi origin’e izin verildiğini
gönderir.
• Tam url yazılabildiği gibi “*” karakteri de yanıt olarak gönderilebilir.
• Örnekler:
• https://www.enuygun.com
• *
ACCESS-CONTROL-EXPOSE-HEADERS
• Sunucudan gelen bu başlık (header) ile istemcinin hangi başlıklara
(header)erişebileceği belirtilir.
• Örnek: Access-Control-Expose-Headers: X-My-Custom-Header, X-
Another-Custom-Header
ACCESS-CONTROL-MAX-AGE
• Sunucudan gelen bu başlık (header) ile istemcinin gönderdiği
preflighted requestin kaç saniye önbellekleneceği (cache) belirtilir.
• Örnek: Access-Control-Max-Age: <delta-saniye>
ACCESS-CONTROL-ALLOW-METHODS
• Sunucudan gelen bu başlık (header) ile istemcinin hangi metodlar
ile istek atabileceği belirtilir
• Örnek: Access-Control-Allow-Methods: <metod>[, <metod>]*
ACCESS-CONTROL-ALLOW-HEADERS
• Sunucudan gelen preflight yanıtındaki bu başlık (header) ile istemci
gerçek isteği (request) gönderirken hangi ekstra başlıkları (header)
gönderebileceği belirtilir.
• Örnek: Access-Control-Allow-Headers: <başlık-adı>[, <başlık-adı>]*
ACCESS-CONTROL-ALLOW-CREDENTIALS
• Sunucudan gelen bu başlık (header) ile istemcinin gerçek isteği
gönderirken cookielerin gönderilip gönderilmemesine karar verilir.
• Örnek: Access-Control-Allow-Credentials: true
HACKING
• CSRF (cross site request forgery)
• XSS (cross site scripting)
CROSS SITE REQUEST FORGERY
• A origininden B originine kullanıcının izni olmadan, kullanıcı verisini
almak, çalmak için yapılan kötü niyetli bir exploit türüdür.
• Örnek: <img src=“www.abcsitesi.com/kullanicimi_sil" width="0"
height=“0">
• Çözüm:
• Her form için eşsiz (unique) bir token üretip, kullanıcının
oturumuna yazılır. Kullanıcı sunucuya isteği gönderdiğinde bu
token değeri kontrol edilir.
XSS
• A originindeki siteye kendi yazdığınız kodun çalışmasını sağlamak.
DINLEDIĞINIZ IÇIN
TEŞEKKÜRLER
Hazırlayan: Mehmet Gökalp
KAYNAKÇA
• https://medium.com/kodcular/web-teknolojileri-
geli%C5%9Ftircilerine-g%C3%BCvenlik-konular%C4%B1nda-
tavsiyeler-same-origin-policy-a9f1fe917062
• https://developer.mozilla.org/tr/docs/Web/HTTP/CORS#Who_shoul
d_read_this_article
• https://developer.mozilla.org/en-US/docs/Web/Security/Same-
origin_policy

More Related Content

What's hot

Vpn(virtual private network)
Vpn(virtual private network)Vpn(virtual private network)
Vpn(virtual private network)sonangrai
 
A Hacker's perspective on AEM applications security
A Hacker's perspective on AEM applications securityA Hacker's perspective on AEM applications security
A Hacker's perspective on AEM applications securityMikhail Egorov
 
BGP Graceful Shutdown - IOS XR
BGP Graceful Shutdown - IOS XR BGP Graceful Shutdown - IOS XR
BGP Graceful Shutdown - IOS XR Bertrand Duvivier
 
HTTP vs HTTPS Difference
HTTP vs HTTPS Difference HTTP vs HTTPS Difference
HTTP vs HTTPS Difference Real Estate
 
Docker containers
Docker containersDocker containers
Docker containersPau López
 
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
"15 Technique to Exploit File Upload Pages", Ebrahim HegazyHackIT Ukraine
 
Palo alto networks product overview
Palo alto networks product overviewPalo alto networks product overview
Palo alto networks product overviewBelsoft
 
Linux-HA with Pacemaker
Linux-HA with PacemakerLinux-HA with Pacemaker
Linux-HA with PacemakerKris Buytaert
 
TCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
TCP/IP Ağlarda Parçalanmış Paketler ve EtkileriTCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
TCP/IP Ağlarda Parçalanmış Paketler ve EtkileriBGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6BGA Cyber Security
 
Docker Networking Deep Dive
Docker Networking Deep DiveDocker Networking Deep Dive
Docker Networking Deep DiveDocker, Inc.
 
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programs
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programsAEM hacker - approaching Adobe Experience Manager webapps in bug bounty programs
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programsMikhail Egorov
 
Docker Security Overview
Docker Security OverviewDocker Security Overview
Docker Security OverviewSreenivas Makam
 
Siber Guvenlik ve Etik Hhacking -2-
Siber Guvenlik ve Etik Hhacking -2-Siber Guvenlik ve Etik Hhacking -2-
Siber Guvenlik ve Etik Hhacking -2-Murat KARA
 
I'm in your cloud... reading everyone's email. Hacking Azure AD via Active Di...
I'm in your cloud... reading everyone's email. Hacking Azure AD via Active Di...I'm in your cloud... reading everyone's email. Hacking Azure AD via Active Di...
I'm in your cloud... reading everyone's email. Hacking Azure AD via Active Di...DirkjanMollema
 

What's hot (20)

Vpn(virtual private network)
Vpn(virtual private network)Vpn(virtual private network)
Vpn(virtual private network)
 
A Hacker's perspective on AEM applications security
A Hacker's perspective on AEM applications securityA Hacker's perspective on AEM applications security
A Hacker's perspective on AEM applications security
 
BGP Graceful Shutdown - IOS XR
BGP Graceful Shutdown - IOS XR BGP Graceful Shutdown - IOS XR
BGP Graceful Shutdown - IOS XR
 
HTTP vs HTTPS Difference
HTTP vs HTTPS Difference HTTP vs HTTPS Difference
HTTP vs HTTPS Difference
 
Docker containers
Docker containersDocker containers
Docker containers
 
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
"15 Technique to Exploit File Upload Pages", Ebrahim Hegazy
 
HTTPS
HTTPSHTTPS
HTTPS
 
Palo alto networks product overview
Palo alto networks product overviewPalo alto networks product overview
Palo alto networks product overview
 
Linux-HA with Pacemaker
Linux-HA with PacemakerLinux-HA with Pacemaker
Linux-HA with Pacemaker
 
Holynix v1
Holynix v1Holynix v1
Holynix v1
 
Adapting to evolving user, security, and business needs with aruba clear pass
Adapting to evolving user, security, and business needs with aruba clear passAdapting to evolving user, security, and business needs with aruba clear pass
Adapting to evolving user, security, and business needs with aruba clear pass
 
TCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
TCP/IP Ağlarda Parçalanmış Paketler ve EtkileriTCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
TCP/IP Ağlarda Parçalanmış Paketler ve Etkileri
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 4, 5, 6
 
Airheads Tech Talks: Understanding ClearPass OnGuard Agents
Airheads Tech Talks: Understanding ClearPass OnGuard AgentsAirheads Tech Talks: Understanding ClearPass OnGuard Agents
Airheads Tech Talks: Understanding ClearPass OnGuard Agents
 
Tcp ip
Tcp ipTcp ip
Tcp ip
 
Docker Networking Deep Dive
Docker Networking Deep DiveDocker Networking Deep Dive
Docker Networking Deep Dive
 
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programs
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programsAEM hacker - approaching Adobe Experience Manager webapps in bug bounty programs
AEM hacker - approaching Adobe Experience Manager webapps in bug bounty programs
 
Docker Security Overview
Docker Security OverviewDocker Security Overview
Docker Security Overview
 
Siber Guvenlik ve Etik Hhacking -2-
Siber Guvenlik ve Etik Hhacking -2-Siber Guvenlik ve Etik Hhacking -2-
Siber Guvenlik ve Etik Hhacking -2-
 
I'm in your cloud... reading everyone's email. Hacking Azure AD via Active Di...
I'm in your cloud... reading everyone's email. Hacking Azure AD via Active Di...I'm in your cloud... reading everyone's email. Hacking Azure AD via Active Di...
I'm in your cloud... reading everyone's email. Hacking Azure AD via Active Di...
 

Similar to SOP (same origin policy)

.NET Core ile RESTful API Design
.NET Core ile RESTful API Design.NET Core ile RESTful API Design
.NET Core ile RESTful API DesignMennan Köse
 
HTTPKullaniciAsillamaveYetkilendirme.ppt
HTTPKullaniciAsillamaveYetkilendirme.pptHTTPKullaniciAsillamaveYetkilendirme.ppt
HTTPKullaniciAsillamaveYetkilendirme.pptCenkKAYA9
 
Web Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking YontemleriWeb Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking YontemleriEPICROUTERS
 
Burp Suite İle File Upload Attack | OWASP Istanbul
Burp Suite İle File Upload Attack | OWASP Istanbul Burp Suite İle File Upload Attack | OWASP Istanbul
Burp Suite İle File Upload Attack | OWASP Istanbul Rumeysa Bozdemir
 
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...OWASP Turkiye
 
Siber Güvenlik 1. hafta
Siber Güvenlik 1. haftaSiber Güvenlik 1. hafta
Siber Güvenlik 1. haftaOnur Er
 
Siber Güvenlik ve Etik Hacking Sunu - 11
Siber Güvenlik ve Etik Hacking Sunu - 11Siber Güvenlik ve Etik Hacking Sunu - 11
Siber Güvenlik ve Etik Hacking Sunu - 11Murat KARA
 
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİCRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİCRYPTTECH
 
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİCRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİTulay Candar
 
WordPress ile buyuk olcekli siteler
WordPress ile buyuk olcekli sitelerWordPress ile buyuk olcekli siteler
WordPress ile buyuk olcekli sitelerMustafa UYSAL
 
CHEF ile XSS Exploiting Methodu
CHEF ile XSS Exploiting MethoduCHEF ile XSS Exploiting Methodu
CHEF ile XSS Exploiting MethoduSignalSEC Ltd.
 

Similar to SOP (same origin policy) (18)

.NET Core ile RESTful API Design
.NET Core ile RESTful API Design.NET Core ile RESTful API Design
.NET Core ile RESTful API Design
 
HTTPKullaniciAsillamaveYetkilendirme.ppt
HTTPKullaniciAsillamaveYetkilendirme.pptHTTPKullaniciAsillamaveYetkilendirme.ppt
HTTPKullaniciAsillamaveYetkilendirme.ppt
 
Web Hacking
Web HackingWeb Hacking
Web Hacking
 
Web Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking YontemleriWeb Guvenligi Konferansi - Web Hacking Yontemleri
Web Guvenligi Konferansi - Web Hacking Yontemleri
 
Burp Suite İle File Upload Attack | OWASP Istanbul
Burp Suite İle File Upload Attack | OWASP Istanbul Burp Suite İle File Upload Attack | OWASP Istanbul
Burp Suite İle File Upload Attack | OWASP Istanbul
 
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
 
Curl
CurlCurl
Curl
 
Siber Güvenlik 1. hafta
Siber Güvenlik 1. haftaSiber Güvenlik 1. hafta
Siber Güvenlik 1. hafta
 
Siber Güvenlik ve Etik Hacking Sunu - 11
Siber Güvenlik ve Etik Hacking Sunu - 11Siber Güvenlik ve Etik Hacking Sunu - 11
Siber Güvenlik ve Etik Hacking Sunu - 11
 
Web Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liğiWeb Uygulama Güven(siz)liği
Web Uygulama Güven(siz)liği
 
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİCRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
 
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİCRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
 
Web Crawlers
Web CrawlersWeb Crawlers
Web Crawlers
 
WordPress ile buyuk olcekli siteler
WordPress ile buyuk olcekli sitelerWordPress ile buyuk olcekli siteler
WordPress ile buyuk olcekli siteler
 
Nginx sunu 2014
Nginx sunu 2014Nginx sunu 2014
Nginx sunu 2014
 
Ajax
AjaxAjax
Ajax
 
CHEF ile XSS Exploiting Methodu
CHEF ile XSS Exploiting MethoduCHEF ile XSS Exploiting Methodu
CHEF ile XSS Exploiting Methodu
 
Web uygulama açıklıklarından faydalanarak sistem ele geçirme
Web uygulama açıklıklarından faydalanarak sistem ele geçirmeWeb uygulama açıklıklarından faydalanarak sistem ele geçirme
Web uygulama açıklıklarından faydalanarak sistem ele geçirme
 

SOP (same origin policy)

  • 2. SOP NEDIR? • SOP (same origin policy), tarayıcı üzerinde çalışan iki originin birbirleri arasında iletişim kurup kuramayacağını belirleyen politikadır.
  • 3. ORIGIN NEDIR? • Kaynağa ulaşım sağlanırken kullanılan protokol, URL ve erişilen port bilgisi birleşiminden oluşan tanıma origin adı verilir. • Protokol: “http://“ • Url: “www.enuygun.com” • Port: 80
  • 4. IKI ORIGIN ARASINDAKI KURALLAR • http://www.example.com/dir/page.html url’ing sahip bir web sitemiz olduğunu düşünerek, sahip olduğumuz originden hangi urllere istek gönderebileceğimizi inceleyelim.
  • 5. IKI ORIGIN ARASINDAKI KURALLAR • A originine sahip olan bir site; • B origininden bir script yükleyip çalıştırabilir. • Yüklenen scriptin kaynak koduna veya sade (raw) haline erişim sağlayamaz. • B origininden CSS yükleyebilir. • B origini üzerindeki CSS dosyasının sade (raw) haline ulaşamaz. • B originindeki bir siteyi IFRAME ile yükleyebilir. • IFRAME ile yüklenmiş B originindeki sitenin DOM ‘una erişemez. • B origininden bir resim yükleyebilir. • B origininden yüklenmiş bir resimin bitlerine erişemez. • B origininden bir video oynayabilir. • B origininden oynatılan videonun resimini çekemez.
  • 6. KURALLARIN AMACI Tarayıcıların katı bir şekilde uyguladıkları bu kuralların temel amacı; Güvenlik
  • 7. WEB 2.0 VE YENILIKLER • Web 2.0 ile kullanıcı haraketlerini temel alan siteler üretilmeye başlandı. Bu interaktif siteler kendi içerilerinde cross domain süreçler başlatmak istediklerinde ise SOP’un katı kurallarına takıldılar. Bundan dolayı bu kurallara bazı esneklikler ve yenilikler kazandırma ihtiyacı doğdu. İşte bunlardan bazıları; • XmlHTTPRequest • JSONP
  • 8. XMLHTTPREQUEST • Bir kaynağa asenkron şekilde istek atıp yanıt almaya yarar. • X-Requested-With başlığı isteğe eklenerek gönderilir. X-Requested-With: XmlHTTPRequest • SOP kuralları katı bir şekilde uygulanır.
  • 9. XMLHTTPREQUEST & SOP • Aynı origine sahip isteklerin cevapları okunabilir. • Aynı origin’e sahip isteklere extra başlıklar (header) eklenebilir. • Farklı bir origin’e istek yapılabilir ancak cevap okunamaz. (CSRF)
  • 10. JSONP • Farklı veya aynı originlere asenkron bir şekilde istek atıp yanıt almaya olanak sağlar. • Yanıt (response) bir script’tir. Bu script sizin url’de gönderdiğiniz methodu çağırır. • Yalnızca GET methodu ile çalışır.
  • 11. ÖRNEK JSONP YANITI fooCallback( [ {"artist": "Michael Jackson", "album": "Black or White”}, {"artist": "Beatles, The", "album": "Revolution"} ] );
  • 12. JSONP VE HTTPS • JSONP ile ilişkili olan tehlike ise; yüklenilen scripti direk olarak tarayıcının çalıştırıyor olması. Eğer giriş yaptığınız web sitesi https değil de http olursa, giden/gelen verinin bozulup bozulmadığına emin olamayacağınızdan dolayı ağ katmanınızdan kaynaklı olarak bir güvenlik açığına sebebiyet verebilirsiniz.
  • 13. XDOMAINREQUEST AND CORS • JSONP kullanarak GET methodu ile veri çekebilmiştik fakat veri yazma / silme / güncelleme işlerini de aynı anda yönetebilmemiz gerekiyor. • Bu konudaki baskılardan dolayı ilk adım olarak Microsoft XDomainRequest adlı bir yapı tanıtır. Diğer büyük tarayıcılar ise CORS’u (Cross origin resource sharing) tanıtırlar. • SOP sınırlamalarına ek olarak bu iki yapı ile istek kısıtlama yönetimi domain’e de verilmiş oldu.
  • 14. CORS YÖNTEMLERI • Simple Request • Preflighted Request
  • 15. SIMPLE REQUEST • Koşullar; • HTTP methodu GET, HEAD veya POST ise • Content-Type başlığı (header) application/x-www-form-urlencoded, multipart/form-data veya text/plain ise • Fazladan başlık (header) gönderilmemiş ise • CORS mekanizması bunu simple request olarak değerlendirecek ve isteği direk yönlendirecektir.
  • 16. ÖRNEK SIMPLE REQUEST ISTEĞI İstek: GET / HTTP/1.1 Host: otel.enuygun.com Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en,en-US;q=0.5 Origin: http://www.enuygun.com Connection: keep-alive Yanıt: HTTP/1.1 200 OK Date: Sun, 24 Apr 2016 12:43:39 GMT Server: Apache Access-Control-Allow-Origin: http://www.enuygun.com Keep-Alive: timeout=2, max=100 Connection: Keep-Alive Content-Type: application/xml Content-Length: 423 <?xml version="1.0" encoding="UTF-8"?> ...
  • 17. PREFLIGHTED REQUEST • Koşullar; • Http methodu GET, HEAD veya POST dan farklı bir method ise • Content-Type başlığı (header) application/x-www-form- urlencoded, multipart/form-data veya text/plain dan farklı ise • Fazladan başlık (header) gönderilmiş ise • CORS mekanizması bunu preflighted request olarak değerlendirecek ve ilk önce OPTIONS isteği yönlendirecektir. Sunucu bu isteğin doğruluğu kontrol edip ilgili başlıkları (header) gönderdikten sonra tarayıcı gerçek isteği gönderecektir.
  • 18. ÖRNEK PREFLIGHTED REQUEST ISTEĞI İstek: OPTIONS /resources/post-here/ HTTP/1.1 Host: otel.enuygun.com Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Connection: keep-alive Origin: http://www.enuygun.com Access-Control-Request-Method: POST Access-Control-Request-Headers: X-TOKEN-ID Yanıt: HTTP/1.1 200 OKDate: Mon, 01 Dec 2008 01:15:39 GMT Server: Apache Access-Control-Allow-Origin: http://www.enuygun.com Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-TOKEN-ID Access-Control-Max-Age: 86400 Vary: Accept-Encoding, Origin Content-Length: 0 Keep-Alive: timeout=2, max=100 Connection: Keep-Alive Content-Type: text/plain
  • 19. CORS BAŞLIKLARI (HEADER) • İstek (request) başlıkları (header) • Origin • Access-Control-Request-Method • Access-Control-Request-Headers • Yanıt (response) başlıkları (header) • Access-Control-Allow-Origin • Access-Control-Expose-Headers • Access-Control-Max-Age • Access-Control-Allow-Methods • Access-Control-Allow-Headers • Access-Control-Allow-Credentials
  • 20. ORIGIN • Kaynağa ulaşım sağlanırken kullanılan protokol, URL ve erişilen port bilgisi birleşiminden oluşan tanıma origin adı verilir. • Protokol: “http://“ • Url: “www.enuygun.com” • Port: 80
  • 21. ACCESS-CONTROL-REQUEST-METHOD • Sunucuya gönderilen bu parametrede hangi metod ile isteğin gönderildiği belirtilir. • Örnek: Access-Control-Request-Method: <metod>
  • 22. ACCESS-CONTROL-REQUEST-HEADERS • Sunucuya gönderilen bu parametrede fazladan hangi başlıkların (header) gönderildiği belirtilir. • Örnek: Access-Control-Request-Headers: <başlık-adı>[, <başlık- adı>]*
  • 23. ACCESS-CONTROL-ALLOW-ORIGIN • Sunucu istemciye bu başlık (header) ile hangi origin’e izin verildiğini gönderir. • Tam url yazılabildiği gibi “*” karakteri de yanıt olarak gönderilebilir. • Örnekler: • https://www.enuygun.com • *
  • 24. ACCESS-CONTROL-EXPOSE-HEADERS • Sunucudan gelen bu başlık (header) ile istemcinin hangi başlıklara (header)erişebileceği belirtilir. • Örnek: Access-Control-Expose-Headers: X-My-Custom-Header, X- Another-Custom-Header
  • 25. ACCESS-CONTROL-MAX-AGE • Sunucudan gelen bu başlık (header) ile istemcinin gönderdiği preflighted requestin kaç saniye önbellekleneceği (cache) belirtilir. • Örnek: Access-Control-Max-Age: <delta-saniye>
  • 26. ACCESS-CONTROL-ALLOW-METHODS • Sunucudan gelen bu başlık (header) ile istemcinin hangi metodlar ile istek atabileceği belirtilir • Örnek: Access-Control-Allow-Methods: <metod>[, <metod>]*
  • 27. ACCESS-CONTROL-ALLOW-HEADERS • Sunucudan gelen preflight yanıtındaki bu başlık (header) ile istemci gerçek isteği (request) gönderirken hangi ekstra başlıkları (header) gönderebileceği belirtilir. • Örnek: Access-Control-Allow-Headers: <başlık-adı>[, <başlık-adı>]*
  • 28. ACCESS-CONTROL-ALLOW-CREDENTIALS • Sunucudan gelen bu başlık (header) ile istemcinin gerçek isteği gönderirken cookielerin gönderilip gönderilmemesine karar verilir. • Örnek: Access-Control-Allow-Credentials: true
  • 29. HACKING • CSRF (cross site request forgery) • XSS (cross site scripting)
  • 30. CROSS SITE REQUEST FORGERY • A origininden B originine kullanıcının izni olmadan, kullanıcı verisini almak, çalmak için yapılan kötü niyetli bir exploit türüdür. • Örnek: <img src=“www.abcsitesi.com/kullanicimi_sil" width="0" height=“0"> • Çözüm: • Her form için eşsiz (unique) bir token üretip, kullanıcının oturumuna yazılır. Kullanıcı sunucuya isteği gönderdiğinde bu token değeri kontrol edilir.
  • 31. XSS • A originindeki siteye kendi yazdığınız kodun çalışmasını sağlamak.