WEB UYGULAMA GÜVENLİK AÇIKLIKLARI NELERDİR?

Payload (Yük), hedef sistem veya sistemler üzerinde yıkıcı bir eylem gerçekleştiren ayrıcalıklı erişim ve izinler sağlayan kötü niyetli kodu veya kodları ifade etmektedir.


1) SQL (Structured Query Language/Yapılandırılmış Sorgu Dili), ilişkisel veri tabanı sistemleriyle etkileşim için geliştirilmiştir. İstenilen verilere erişme, veri girişi yapabilme, veri tabanını değiştirme veya sorgu amacıyla kullanılan SQL; PostgreSQL, MsSQL, MySQL vb. ilişkisel veri tabanları için komut ve kontrol dilidir. SQL zafiyetinde genellikle veri tabanına dayalı uygulamalara saldırmak için kullanılan tekniktir. Saldırgan veya saldırganlar SQL dili özelliklerinden faydalanarak standart uygulama ekranındaki ilgili alana yeni SQL ifadelerini ekler, değiştirir ve kaldırır.

Blind (Kör/Okunaksız), Veri tabanı sistemine direkt olarak tablolara ya da kolonlara ait bilgilere veya veri tabanına ait teknik bilgilere ulaşılamaz ancak istenilen bilgiler harf harf denediğimiz takdirde doğru sonuçlara ulaşacağımız türüdür. Bu nedenden dolayı manuel ile yapılması zorlaştırıcı olup bu açık tespit edilmesinde halinde otomatik programlar ile açıklık suistimal edilmektedir. Blind SQL Injection (Enjeksiyon), Boolean (Mantıksal) ve Time Based (Zaman Tabanlı) türü olarak üçe ayrılmaktadır.

Boolean (Mantıksal), “True (Doğru)” veya “False (Yanlış)” ifadesine göre çalışan SQL sorgularıdır (query).

Time Based (Zaman Tabanlı), sorgu sonuçlarından gözükmeyen fakat geç döndürülen yanıtlardan anlaşılabilmektedir. Ana amaçlardan birisi ise sunucuya uzun süreli zamanlamaya dayalı istekler yöneltip sunucuyu boğmaktır.


2) SSTI (Server-Side Template Injection/Sunucu Tarafı Şablon Enjeksiyonu), bir saldırgan veya saldırganların daha sonra sunucu tarafında (server-side/sunucu tarafı) yürütülen bir şablona kötü amaçlı bir yük enjekte etmek için yerel şablon (template) sözdizimini (syntax) kullanabildiğinde gerçekleşen saldırı türüdür.


3) HTML (Hypertext Markup Language/Hiper Metin İşaretleme Dili), internet üzerinden alınan materyalleri görüntülemek için kullanılan standart bir biçimlendirme sistemidir. İnternet üzerinden çağrılan her bir birim web sayfası olarak adlandırılmaktadır. HTML, web sayfasının yapısını tanımlamaktadır. Genellikle web sayfaları başka web sayfalarını çağırmayı sağlayan başka HTML bağlantıları da içermektedir. 

HTML Injection, web sitesinin savunmasız kısımlarına HTML kodu enjekte etmektir. Kötü amaçlı saldırgan veya saldırganlar, web sitesinin tasarımını veya kullanıcıya görüntülenen herhangi bir bilgiyi değiştirmek amacıyla herhangi bir güvenlik açığı olan alan üzerinden HTML kodu göndermektedir.


4) 2FA (Two-Factor Authentication/İki Faktörlü Kimlik Doğrulama), kısacası hesap bilgileri kötü niyetli kişi veya kişilerin eline geçse de ek doğrulamayı geçememesiyle ele geçirilen hesaba veya hesaplara erişilememesini sağlayan güvenlik önlemidir. Genellikle hesap bilgilerinin beraberinde SMS, e-posta, telefon araması veya 2FA (Twilio Authy, Google Authenticator, Microsoft Authenticator vb.) uygulamalarıyla doğrulamalar yapılmaktadır. 

Bypass, alternatif bir yol bularak giriş veya geçiş yapmak anlamında kullanılan bir terimdir.


5) XSS (Cross-Site Scripting/Siteler Arası Betik Çalıştırma), saldırgan veya saldırganlar zararsız görülen bir web sayfasının içeriğine, genellikle istemci (client) tarafı komut dosyası halinde kötü amaçlı kod enjekte etmesiyle oluşan saldırıdır. 

DOM (Document Object Model/Belge Nesne Model) XSS, internet tarayıcıları kendi bünyesine girilen herhangi bir internet sitesini bir belge, söz konusu bu belge içerisinde bulunan tüm elemanları da nesne olarak kabul görmektedir. Örneğin resim, yazı, form vb. tüm elemanlar nesnedir. DOM XSS, orijinal istemci komut dosyasının çalıştığı kurbanın tarayıcısında DOM değiştirerek yükü enjekte etmesiyle başlamaktadır. Sayfa her ne denli değişiklik göstermese de sayfada bulunan istemci (client) tarafı kodu, kötü amaçlı kod değişiklikleriyle çalışmaktadır. 

Stored (Saklanmış/Kalıcı) XSS, bir web uygulamasına yapılan zararlı istek sonucunda, zararlı JavaScript kodunun veri tabanına kaydedilmesi ve web sitesine yapılan tüm erişimlerde kodun sayfada çalışması ile tetiklenen bir XSS türüdür.

Reflected (Yansıtıcı) XSS saldırıları Stored XSS saldırısına kıyasla kalıcı değillerdir. Bir kullanıcıya kötü niyetli bir bağlantıyı tıklattırılır ve özel olarak hazırlanmış bir formun gönderilebilmesi için kandırıldığında, enjekte edilen kod savunmasız web sitesine yönlendirmektedir.

JavaScript, web sayfası hareketleri için istemci (client) tarafında JavaScript kullanılmaktadır ve kullanılan kodlar genellikle üçüncü taraf kitaplıkları içermektedir.


6) Cache (Önbellek), sitelerin daha hızlı açılmasına imkan sağlamaktadır. Cache, verileri depolayan ve en son yaptığımız işlemleri değerlendirerek bir sonraki işlemlerimizi hızlı bir şekilde yapabilmemizi sağlayan CPU (Central Processing Unit/Merkezi İşlem Birimi) içindeki yüksek hızlı hafızalara denmektedir. 

CPU (Central Processing Unit/Merkezi İşlem Birimi), dijital bilgisayarların veri işleyen ve yazılım komutlarını gerçekleştiren bölümüdür. 

Web Cache Poisoning (Web Önbellek Zehirlenmesi) zafiyeti, web sitelerin web önbelleklerinde bir dizi değişiklik yapılması kaidesiyle saldırgan veya saldırganların sömürebilmesiyle zararlı kod çalıştırılabilmesine olanak sağlayan bir saldırı türüdür.


7) Clickjacking (Tıklama Hırsızlığı), saldırısı sızma testlerinde sık karşılaşılan bir zafiyettir. Saldırgan veya saldırganlar, güvenli olarak görünen web sayfası veya sayfalarının kullanıcılarını güvensiz bir sayfaya yönlendirerek manipüle ettiği bu kullanıcıların işlem yapmasını hedef almaktadır.

CSS (Cascading Style Sheets/Basamaklı Biçim Sayfaları), HTML’e ek olarak metin ve format biçimlendirme alanında fazladan olanaklar sunan bir işaretleme dilidir.


8) IDOR (Insecure Direct Object References/Güvenli Olmayan Doğrudan Nesne Başvurusu), bir web sitesi ziyaret edildiğinde içeriğinde bulunan uygulamalara nesneler üzerinden erişim sağlanmaktadır. Bu nesneler; veri tabanı, dosyalar ve dizinlere erişim vb. önemli durumları tanımlamakta kullanılmaktadır. Saldırganlar bir başka kullanıcının sahip olduğu nesne değerlerini taklit veya manipüle edebilmektedir. Böylelikle hedeflediği kişinin uygulama üzerindeki kimlik bilgilerini elde etmiş olurlar.


9) CSRF veya XSRF (Cross-Site Request Forgeries/Siteler Arası İstek Sahtekarlığı), saldırgan veya saldırganlar tarafından herhangi bir kullanıcıyı web uygulamasında istenmeyen eylemler gerçekleştirmeye zorlayan bir saldırıdır. Saldırgan, küçük bir sosyal mühendislik yardımıyla (e-posta veya sohbet yoluyla bir bağlantı göndermek gibi), bir web uygulamasının kullanıcılarını kendi seçtiği eylemleri gerçekleştirmeleri için kandırıp kurban normal bir kullanıcıysa başarılı bir CSRF saldırısı, kullanıcıyı para transferi, e-posta adresini değiştirme vb. gibi durum değiştirme istekleri gerçekleştirmeye zorlayabilmektedir. Kurban bir yönetici hesabıysa, CSRF tüm web uygulamasını tehlikeye atabilmektedir.



10) CORS (Cross-Origin Resource Sharing/Kaynaklar Arası Veri Paylaşımı), web uygulamasının kendi domaini dışındaki domain adreslerinden web tarayıcısı aracılığıyla gelen veri paylaşım ihtiyaçlarının karşılaması için oluşturulmuş bir mekanizmadır ve söz konusu mekanizma hatalar içerebilir veya her şeyin çalıştığından emin olmak için aşırı izinlendirme verip istismar edilebilir güvenlik açıklarına (XSS, Breaking TLS vb.) neden olabilmektedir.


11) SSRF (Server Side Request Forgery/Sunucu Taraflı İstek Sahteciliği), saldırganların zafiyetli bir web uygulaması adına istek gönderebilmesidir. Saldırgan veya saldırganlar; hedef sunucuya giden istekleri, zafiyetli web uygulamasındaki parametreleri değiştirip isteklerin varış noktalarını manipüle edebilmesine imkan vermektedir. Genellikle web uygulamasının veya uygulamalarının uzak etkileşimlerindeki izin verilen domainler veya protokoller için sıkılaştırmalar yapılamadığından zafiyet ortaya çıkmaktadır.


12) XXE (Extensible Markup Language (XML) External Entity/Genişletilebilir İşaretleme Dili (XML) Harici Varlık), bir saldırganın veya saldırganların bir web uygulamasında XML verilerinin işlenmesine müdahale etmesini sağlayan web tabanlı bir güvenlik açığıdır. 

XML (Extensible Markup Language/Genişletilebilir İşaretleme Dili), bilgi işlem sistem veya sistemleri tarafından kolayca okunabilecek dokümanlar oluşturmaya yarayan bir işaretleme dilidir.


13) WebSocket API, kullanıcının tarayıcısı ile bir sunucu arasında iki yönlü etkileşimli bir iletişim oturumu açmayı mümkün kılan gelişmiş bir teknolojidir. Bu API ile, bir sunucuya mesaj gönderebilir ve yanıt için sunucuyu yoklamak zorunda kalmadan olaya dayalı yanıtlar alabilirsiniz. 

API (Application Programming Interface/Uygulama Programlama Arayüzü), iki uygulamanın birbiriyle konuşmasına olanak tanıyan bir yazılım aracısıdır. 

WebSocket Manipulating (Manipülasyonu), art niyetli saldırgan veya saldırganlar tarafından WebSocket mimarisi kötücül faaliyetlere bürünerek kullanıcılara zarar vermektedir. Örneğin çözeceğimiz laboratuvar ortamında mesaj içeriğinin HTML etiketleriyle değiştirilip kullanıcı veya kullanıcılara bir dizi zararlar verdirilebilir.


14) Gerekli girdi kontrollerinin (filtreleme, kodlama vb.) yapılmadığı dinamik sayfalardaki uygulamaya bağlanan saldırgan veya saldırganlar Directory Traversal (Dizin Geçişi) zafiyetini istismar ederek normalde erişmemesi gereken dosyaları erişip okuyabilmektedir ve okumanın yanı sıra başka açıklarla kombinasyon haline getirmesiyle kurumunuza ciddi riskler yaratabilir.


15) HTTP Request Splitting (İstek Bölme), HTTP istek mesajlarının ayrıştırılmasına ve yorumlanmasına müdahale ederek tek bir HTTP isteğini, bir arka uç HTTP aracısına yönlendirerek birden çok yetkisiz ve kötü niyetli HTTP isteğine bölmek için müdahale eden bir saldırı tekniğidir.

HTTP request smuggling, bir web sitesinin bir veya daha fazla kullanıcıdan alınan HTTP isteklerini işleme biçimine müdahale etmek için kullanılan bir tekniktir. Request smuggling, güvenlik açıkları genellikle doğası gereği kritiktir ve bir saldırganın güvenlik kontrollerini atlamasına (bypass), hassas verilere yetkisiz erişim elde etmesine ve diğer uygulama kullanıcılarının güvenliğini doğrudan tehlikeye atmasına olanak tanımaktadır.

Obfuscating (Şaşırtma), bilgisayarların anlamasını zorlaştırmaya yönelik kaynak oluşturma eylemidir.

CRLF (Carriage Return and Line Feed/Satır Başı ve Yeni Satır) Injection (Enjeksiyon), satır başı (\r) ve yeni satır (\n) adındaki satır özellikleriyle HTTP yanıtının bölünerek kötücül HTTP başlığının eklenebildiği zafiyettir.


16) RCE (Remote Code Execution/Uzaktan Komut Yürütme), saldırganın veya saldırganların hedeflediği veya hedefleri web sunucusu veya sunucuları bazında genel veya özel ağlar üzerinden bağlanarak rastgele kod çalıştırmasına izin veren bir tür güvenlik açıklığıdır ve kritik öneme sahiptir.

Web Shell (Kabuğu), saldırgan veya saldırganlar tarafından bir web sunucusuna veya web sunucularına uzaktan erişilmesini sağlama amacıyla kullanılan bir arabirimdir.


Ayrıca "https://medium.com/@ikpehlivan" bağlantısındaki hesabımda her bir zafiyetin detayı detayına anlatımını yaptım ve bağlantıdan ulaşabilirsiniz.

Değerli vaktinizi ayırıp yazımı okuduğunuz için teşekkürlerimi takdim ederim ve iyi günler geçirmeniz dileklerimle.