6. Server-Side Request Forgery (SSRF)

Seri No: #6 | Türkçe Karşılığı: Sunucu Taraflı İstek Sahteciliği

Giriş & Çalışma Sebebi

SSRF, saldırganın hedef web sunucusunu bir “vekil” (proxy) gibi kullanarak, sunucunun erişebildiği iç (yerel) veya dış ağlara istek atmasını sağlamasıdır. Zafiyetin asıl sebebi, uygulamanın kullanıcıdan bir URL alıp (Örn: Profil resmi yüklemek için dışarıdan URL verme) bu URL’in güvenli olup olmadığını kontrol etmeden arka planda istek başlatmasıdır. Dış dünyaya kapalı olan iç ağdaki (localhost, AWS metadata servisleri vb.) servisler, sunucuya güvendiği için saldırgan sunucu arkasına sızmış olur.

Payload & Mekanizma

Normalde bir resmi sunucuya çekmek için kullanılan URL parametresi: ?image_url=[https://safe-site.com/avatar.jpg](https://safe-site.com/avatar.jpg)

Saldırganın AWS bulut sunucusunun gizli kimlik bilgilerini sızdırmak için kullandığı Payload:

https://hedefsite.com/fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/
  • Çalışma Sebebi: Sunucu, gelen IP adresini doğrulamadan arka planda HTTP isteği başlatır. 169.254.169.254 adresi AWS’in yerel metadata servisidir ve dış dünyaya kapalıdır ancak sunucu içinden gelen bu isteğe doğrudan API anahtarlarını yanıt olarak döner.

7. Cross-Site Request Forgery (CSRF)

Seri No: #7 | Türkçe Karşılığı: Siteler Arası İstek Sahteciliği

Giriş & Çalışma Sebebi

CSRF, bir saldırganın, oturumu açık olan bir mağdur kullanıcıya (onun haberi olmadan) web uygulamasında istekler yaptırmasıdır (Örn: Şifre değiştirme, para transferi). Zafiyetin asıl sebebi, tarayıcıların otomatik çalışma mantığıdır. Tarayıcılar, bir siteye istek atarken o siteye ait olan çerezleri (Cookies/Session) isteğin içine otomatik olarak ekler. Uygulama, gelen isteğin kullanıcının kendi iradesiyle mi yoksa arkada açık olan zararlı bir sekmeyle mi tetiklendiğini ayırt edemez.

Payload & Mekanizma

Saldırganın kendi hazırladığı zararlı bir web sitesine gömdüğü gizli HTML formu (Payload):

<form action="https://banka.com/transfer" method="POST" id="csrfForm">
  <input type="hidden" name="to_account" value="saldirgan_hesap" />
  <input type="hidden" name="amount" value="5000" />
</form>
<script>document.getElementById('csrfForm').submit();</script>
  • Çalışma Sebebi: Mağdur kullanıcı bu zararlı sayfayı ziyaret ettiğinde, JavaScript formu otomatik gönderir. Tarayıcı, banka.com‘a istek giderken kullanıcının aktif oturum çerezini de ekler. Banka sunucusu, isteğin arkadaki zararlı siteden geldiğini anlamaz, çerezi geçerli sayıp parayı transfer eder.

8. Server-Side Template Injection (SSTI)

Seri No: #8 | Türkçe Karşılığı: Sunucu Taraflı Şablon Enjeksiyonu

Giriş & Çalışma Sebebi

SSTI, web uygulamalarında dinamik sayfalar üretmek için kullanılan şablon motorlarına (Jinja2, Twig, Blade vb.) saldırganın zararlı kod enjekte etmesidir. Zafiyetin asıl sebebi, geliştiricinin kullanıcı girdisini şablonun bir “verisi” olarak değil, doğrudan şablon kodunun bir “parçası” olarak şablon motoruna teslim etmesidir. Şablon motoru bu girdiyi çalıştırılabilir bir kod olarak yorumlar ve bu durum genellikle sunucuda tam yetkiyle kod çalıştırılmasına (RCE) yol açar.

Payload & Mekanizma

Saldırganın bir e-posta şablonu veya kullanıcı adı alanına girdi olarak yazdığı Payload (Python/Jinja2 için):

{{ self.__init__.__globals__.__豪華__.__import__('os').popen('whoami').read() }}
  • Çalışma Sebebi: Şablon motoru {{ ... }} parantezlerini gördüğünde içindeki ifadeyi matematiksel veya mantıksal bir kod olarak sunucu tarafında çalıştırır. Yukarıdaki payload, Python’ın os kütüphanesini çağırarak sunucuda whoami komutunu yürütür ve çıktıyı sayfaya basar.

9. Client-Side Template Injection (CSTI)

Seri No: #9 | Türkçe Karşılığı: İstemci Taraflı Şablon Enjeksiyonu

Giriş & Çalışma Sebebi

CSTI, SSTI’ın aksine tamamen kullanıcının tarayıcısında (Client-Side) çalışan şablon motorlarını (özellikle AngularJS, Vue.js gibi frontend framework’lerini) hedef alır. Zafiyetin asıl sebebi, sunucunun kullanıcı girdisini HTML sayfasına doğrudan basması ve sayfada aktif olan frontend framework’ünün bu girdiyi kendi özel sembolleri (Örn: Angular’ın çift süslü parantezi {{ }}) sanıp tarayıcıda çalıştırmasıdır. Sonuç genellikle gelişmiş bir XSS zafiyetine dönüşür.

Payload & Mekanizma

Saldırganın AngularJS kullanan bir sitenin girdi alanına yazdığı Payload:

{{ constructor.constructor('alert(document.domain)')() }}
  • Çalışma Sebebi: Sayfa yüklendiğinde AngularJS, DOM (HTML yapısı) taraması yapar. Ekranda {{ }} sembollerini gördüğünde, bunun Angular’a ait bir ifade olduğunu varsayar. İçerideki JavaScript constructor yapısını çözerek normal şartlarda XSS filtrelerine takılabilecek olan alert() fonksiyonunu Angular’ın güvenli koruma duvarını (sandbox) delerek tarayıcıda çalıştırır.

10. Prototype Pollution

Seri No: #10 | Türkçe Karşılığı: Prototip Kirlenmesi

Giriş & Çalışma Sebebi

Prototype Pollution, JavaScript diline özgü, nesne tabanlı kalıtım (Prototype-based inheritance) mekanizmasını hedef alan modern bir zafiyettir. JavaScript’te oluşturulan her nesne (object), arka planda gizli bir ana şablondan (Object.prototype) özellikler miras alır.

Zafiyetin asıl sebebi, kullanıcının gönderdiği JSON verilerini veya nesneleri birleştiren, kopyalayan fonksiyonların (Örn: lodash.merge(), deep-clone gibi kütüphanelerin eski versiyonları veya zafiyetli özel fonksiyonlar) __proto__ gibi hassas anahtar kelimeleri filtrelememesidir. Saldırgan, ana prototipe yeni bir özellik enjekte ettiğinde, uygulamadaki tüm nesneler (mevcut ve gelecekte oluşturulacak olanlar) bu zararlı özelliği otomatik olarak miras alır. Bu durum mantıksal yetki atlamalarına veya sunucu tarafında kod çalıştırılmasına (RCE) kadar gidebilir.

Payload & Mekanizma

Saldırganın bir API uç noktasına gönderdiği zararlı JSON verisi:

{
  "__proto__": {
    "isAdmin": true
  }
}
  • Çalışma Sebebi: Uygulama bu girdiyi arka planda işlerken __proto__ kontrolü yapmazsa, JavaScript motoru global nesne şablonunun içine isAdmin = true özelliğini yazar. Bu işlemden sonra sistemde oturum açan en yetkisiz kullanıcının nesnesi bile (user.isAdmin) sorgulandığında, ana prototipten gelen miras nedeniyle true yanıtını döner ve saldırgan yetki atlar.