javascript injection tutorial
Javascript Enjeksiyonu nedir?
Javascript en popüler teknolojilerden biridir ve en yaygın olarak web sayfaları ve web uygulamaları için kullanılır.
Farklı web sitesi işlevlerini gerçekleştirmek için kullanılabilir. Ancak bu teknoloji, geliştiricinin ve test edenin bilinçli olması gereken bazı güvenlik sorunlarını beraberinde getirebilir.
Javascript sadece iyi amaçlar için değil bazı kötü niyetli saldırılar için de kullanılabilir. Bunlardan biri Javascript Enjeksiyonudur. JS Enjeksiyonunun özü, istemci tarafından çalıştırılacak Javascript kodunu enjekte etmektir.
Bu eğitimde, Javascript Enjeksiyonunun mümkün olup olmadığını, JS Enjeksiyonunun nasıl gerçekleştirilebileceğini ve JS Enjeksiyonunun getirebileceği sonuçları nasıl kontrol edeceğimiz hakkında daha fazla bilgi edineceğiz.
Ne öğreneceksin:
- JavaScript Enjeksiyonunun Riskleri
- JS Enjeksiyonunun Test Edilmesi Neden Önemlidir?
- Diğer Saldırılarla Karşılaştırma
- JavaScript Enjeksiyonu Kontrolü
- Parametrelerin Değiştirilmesi
- Web Sitesinin Tasarım Değişikliği
- JavaScript Enjeksiyonuna Karşı Nasıl Test Yapılır
- Bu saldırıya karşı Olası Koruma
- Sonuç
- Önerilen Kaynaklar
JavaScript Enjeksiyonunun Riskleri
JS Injection, kötü niyetli bir kullanıcının web sitesinin tasarımını değiştirmesi, web sitesinin bilgilerini elde etmesi, görüntülenen web sitesinin bilgilerini değiştirmesi ve parametrelerle (örneğin, çerezler) işlem yapması için birçok olanak sağlar. Bu nedenle bu, bazı ciddi web sitesi hasarları, bilgi sızıntısı ve hatta hacklenme getirebilir.
JS Injection'ın temel amacı, web sitesinin görünümünü değiştirmek ve parametreleri değiştirmektir. JS Injection'ın sonuçları, web sitesinin tasarımına zarar vermekten başka birinin hesabına erişmeye kadar çok farklı olabilir.
JS Enjeksiyonunun Test Edilmesi Neden Önemlidir?
Birçoğu JS Enjeksiyonunun gerçekten gerekli olup olmadığını sorar.
JS Injection güvenlik açıklarının kontrol edilmesi, güvenlik testinin bir parçasıdır. Güvenlik testi genellikle yalnızca proje planlamasına dahil edildiğinde gerçekleştirilir, çünkü zaman gerektirir, çok dikkat gerektirir ve birden çok detayı kontrol eder.
Projenin gerçekleştirilmesi sırasında, JS Enjeksiyonu dahil, olası saldırılara karşı testi atlamanın oldukça yaygın olduğunu fark ettim. Bu şekilde ekipler projenin zamanından tasarruf etmeye çalışır. Ancak, bu uygulama çoğu zaman müşterinin şikayetleriyle sona erer.
Proje planlarında yer almasa bile güvenlik testinin şiddetle tavsiye edildiği bilinmelidir. Olası ana saldırılar kontrol edilmelidir - aynı zamanda olası JS Enjeksiyon güvenlik açıklarını da kontrol etmelidir.
Basit Javascript'ten çıkmak Enjeksiyon güvenlik açıkları ürün, ürünün kalitesine ve şirketin itibarına mal olabilir. Olası saldırılara karşı test etmeyi ve genel güvenlik testlerini öğrendiğimde, testin bu bölümünü asla atlamıyorum. Bu şekilde ürünün kalitesinden daha eminim.
Diğer Saldırılarla Karşılaştırma
JS Enjeksiyonunun şu kadar riskli olmadığı belirtilmelidir: SQL Enjeksiyonu istemci tarafında yapıldığı ve SQL Enjeksiyon saldırısı sırasında olduğu gibi sistemin veritabanına ulaşmadığı için. Ayrıca XSS saldırısı kadar riskli değildir.
Bu saldırı sırasında zaman zaman yalnızca web sitesinin görünümü değiştirilebilirken, XSS saldırısının asıl amacı başkalarının oturum açma verilerini hacklemektir.
Bununla birlikte, JS Injection ayrıca bazı ciddi web sitesi hasarlarına neden olabilir. Yalnızca web sitesinin görünümünü bozmakla kalmaz, aynı zamanda diğer kişilerin giriş verilerini hacklemek için iyi bir temel oluşturur.
JavaScript Enjeksiyonu Kontrolü
JS Enjeksiyonuna karşı test yapmaya başladığınızda, yapmanız gereken ilk şey JS Enjeksiyonunun mümkün olup olmadığını kontrol etmektir. Bu tür Enjeksiyon olasılığını kontrol etmek çok kolaydır - web sitesine giderken, tarayıcının adres barkodunu aşağıdaki gibi yazmanız gerekir:
javascript: alert ('Yürütüldü!');
'Yürütüldü!' Mesajını içeren bir açılır pencere görüntülenirse, web sitesi JS Enjeksiyonuna karşı savunmasızdır.
Ardından, web sitesinin adres çubuğunda çeşitli Javascript komutlarını deneyebilirsiniz.
JS Enjeksiyonunun yalnızca web sitesinin adres çubuğundan mümkün olmadığı belirtilmelidir. JS Enjeksiyonuna karşı savunmasız olabilecek çeşitli başka web sitesi öğeleri vardır. En önemli şey, web sitesinin Javascript Enjeksiyonundan etkilenebilecek kısımlarını ve nasıl kontrol edileceğini tam olarak bilmek.
Tipik JS Enjeksiyon hedefleri şunlardır:
- Çeşitli forumlar
- Makalenin yorum alanları
- Ziyaretçi defteri
- Metnin eklenebileceği diğer formlar.
Metin kaydetme formu için bu saldırının mümkün olup olmadığını test etmek için, normal metin sağlamasına rağmen, Javascript kodunu aşağıda belirtildiği gibi yazın ve metni forma kaydedin ve sayfayı yenileyin.
javascript: alert ('Yürütüldü!');
Yeni açılan sayfada 'Yürütüldü!' Mesajını içeren bir metin kutusu varsa, test edilen form için bu tür bir enjeksiyon saldırısı mümkündür.
Her iki şekilde de mesajın bulunduğu bir metin kutusu görünürse, web sitesini daha zor JS Enjeksiyon yöntemleriyle bozmayı deneyebilirsiniz. Daha sonra farklı enjeksiyon türlerini deneyebilirsiniz - parametre modifikasyonu veya tasarım değişikliği.
Tabii ki, parametrelerin değiştirilmesi, tasarım değişikliğinden daha riskli kabul edilir. Bu nedenle, test ederken, parametrelerin değiştirilmesine daha fazla dikkat edilmelidir.
Ayrıca, Javascript Enjeksiyonu için daha savunmasız web sitelerinin bölümlerinin, her tür verinin kaydedildiği girdi alanları olduğu unutulmamalıdır.
Parametrelerin Değiştirilmesi
Daha önce belirtildiği gibi, olası Javascript Enjeksiyon hasarlarından biri parametre modifikasyonudur.
Bu enjeksiyon saldırısı sırasında kötü niyetli bir kullanıcı parametre bilgilerini elde edebilir veya herhangi bir parametre değerini değiştirebilir( Misal ,çerez ayarları). Kötü niyetli bir kullanıcı hassas içerik elde edebileceğinden, bu oldukça ciddi risklere neden olabilir. Bu tür bir enjeksiyon, bazı Javascript komutları kullanılarak gerçekleştirilebilir.
Geçerli oturum çerezini döndüren Javascript komutunun buna göre yazıldığını hatırlayalım:
javascript: alert (document.cookie);
Tarayıcının URL çubuğuna girildiğinde, geçerli oturum çerezlerini içeren bir açılır pencere döndürür.
Web sitesi çerez kullanıyorsa, sunucu oturum kimliği veya çerezlerde depolanan diğer kullanıcı verileri gibi bilgileri okuyabiliriz.
Alert () yerine başka herhangi bir Javascript işlevinin kullanılabileceği belirtilmelidir.
Örneğin ,güvenlik açığı olan bir web sitesi bulursak, oturum kimliğini 'session_id' çerez parametresinde saklayan. Daha sonra mevcut oturum kimliğini değiştiren bir işlev yazabiliriz:
javascript: void (document.cookie = “session_id =<>');
Bu şekilde oturum kimliği değeri değiştirilecektir. Ayrıca, parametreleri değiştirmenin başka yolları da mümkündür.
Örneğin, kötü niyetli bir kullanıcı diğer kişiler olarak oturum açmak ister. Giriş yapmak için, kötü niyetli kullanıcı öncelikle yetkilendirme çerezi ayarlarını true olarak değiştirecektir. Çerez ayarları 'doğru' olarak ayarlanmadıysa, çerez değeri 'tanımsız' olarak döndürülebilir.
android'de bin dosyası nasıl açılır
Bu çerez değerlerini değiştirmek için, kötü niyetli bir kullanıcı, tarayıcı içindeki URL çubuğundan Javascript komutuna göre hareket edecektir:
javascript: void (document.cookie = “authorization = true“);
Sonuç olarak, geçerli tanımlama bilgileri parametresi authorization = false, authorization = true olarak değiştirilir. Bu şekilde kötü niyetli bir kullanıcı hassas içeriğe erişebilir.
Ayrıca, bazen Javascript kodunun oldukça hassas bilgiler döndürdüğünü de belirtmek gerekir.
javascript: alert (document.cookie);
Örneğin, Bir web sitesinin geliştiricisi yeterince dikkatli değilse, kullanıcı adı ve şifre parametreleri adlarını ve değerlerini de döndürebilir. Daha sonra bu tür bilgiler, web sitesini hacklemek veya sadece hassas parametrenin değerini değiştirmek için kullanılabilir.
Örneğin, aşağıdaki kod ile kullanıcı adı değerini değiştirebiliriz:
javascript: void (document.cookie = ”kullanıcı adı = diğerKullanıcı”);
Bu şekilde diğer parametrelerin değeri de değiştirilebilir.
Web Sitesinin Tasarım Değişikliği
Javascript ayrıca herhangi bir web sitesinin formunu ve genel olarak web sitesinin tasarımını değiştirmek için de kullanılabilir.
Örneğin, Javascript ile web sitesinde görüntülenen herhangi bir bilgiyi değiştirebilirsiniz:
- Görüntülenen metin.
- Web sitesinin arka planı.
- Web sitesi formunun görünümü.
- Popup pencerenin görünümü.
- Başka herhangi bir web sitesi öğesinin görünümü.
Örneğin, web sitesinde görüntülenen e-posta adresini değiştirmek için uygun Javascript komutu kullanılmalıdır:
javascript: void (document.forms (0) .email.value = ”Test@test.com”) ;
Web sitesinin tasarımıyla ilgili birkaç başka karmaşık manipülasyon da mümkündür. Bu saldırı ile web sitesinin CSS sınıfına da erişebilir ve bunları değiştirebiliriz.
Örneğin, Web sitesinin arka plan resmini JS Injection ile değiştirmek istiyorsak, komut buna göre çalıştırılmalıdır:
javascript: void (document. arkaplan resmi: url (“diğer-resim.jpg“);
Ayrıca kötü niyetli bir kullanıcı, aşağıda belirtilen Javascript Enjeksiyon kodunu metin ekleme formunda yazabilir ve kaydedebilir.
javascript: void (alert ('Merhaba!'));
Daha sonra bir sayfa her açıldığında, 'Merhaba!' Mesajını içeren bir metin kutusu görünecektir.
Javascript Injection ile değiştirilen web sitesinin tasarımı, parametrelerin değiştirilmesinden daha az risklidir. Ancak, web sitesinin tasarımı kötü niyetli bir şekilde değiştirilecekse, bu şirketin itibarına mal olabilir.
JavaScript Enjeksiyonuna Karşı Nasıl Test Yapılır
Aşağıdaki şekillerde test edilebilir:
- Manuel olarak
- Test araçlarıyla
- Tarayıcı eklentileri ile
Nasıl yapılması gerektiğine dair iyi bilgiye sahipseniz, olası Javascript güvenlik açıkları manuel olarak kontrol edilebilir. Ayrıca çeşitli otomasyon araçlarıyla test edilebilir.
Örneğin, SABUN UI aracıyla API düzeyinde testlerinizi otomatik hale getirdiyseniz, Javascript Enjeksiyon testlerini şu şekilde çalıştırmak da mümkündür: SABUN UI .
Ancak, yalnızca kendi deneyimlerime dayanarak, JS Enjeksiyonu için onunla test etmek için SOAP UI aracı hakkında gerçekten iyi bilgiye sahip olmanız gerektiğini, çünkü tüm test adımlarının hatasız yazılması gerektiğini söyleyebilirim. Herhangi bir test adımı yanlış yazılırsa, yanlış güvenlik testi sonuçlarına da neden olabilir.
Ayrıca, olası saldırılara karşı kontrol etmek için çeşitli tarayıcı eklentilerini bulabilirsiniz. Bununla birlikte, genellikle daha doğru sonuçlar verdiği için bu saldırıya karşı manuel olarak kontrol etmeyi unutmamanız önerilir.
Javascript Injection'a karşı manuel olarak test yapmanın, web sitesinin güvenliği konusunda kendimi daha emin ve emin hissettirdiğini söylemek isterim. Bu şekilde, test sırasında hiçbir formun kaçırılmadığından ve tüm sonuçların sizin tarafınızdan görülebileceğinden emin olabilirsiniz.
Javascript Enjeksiyonuna karşı test etmek için Javascript hakkında genel bilgiye sahip olmanız ve web sitesinin hangi bölümlerinin daha savunmasız olduğunu bilmeniz gerekir. Ayrıca, web sitesinin JS Enjeksiyonuna karşı korunmuş olabileceğini ve test ederken bu korumayı kırmaya çalışmanız gerektiğini unutmamalısınız.
Bu şekilde, bu saldırıya karşı korumanın yeterince güçlü olup olmadığından emin olacaksınız.
Bu saldırıya karşı Olası Koruma
Öncelikle bu saldırıyı önlemek için alınan her girdinin doğrulanması gerekir. Giriş, yalnızca veriler ilk kabul edildiğinde değil, her seferinde doğrulanmalıdır.
İstemci tarafı doğrulamaya güvenilmemesi şiddetle tavsiye edilir. Ayrıca sunucu tarafında önemli bir mantığın gerçekleştirilmesi tavsiye edilir.
Birçoğu, tırnak işaretlerini ikiye katlayarak Javascript Enjeksiyonuna karşı koruma sağlamaya çalışır ve Javascript kodu bu şekilde yapılmamalıdır.
Örneğin, yorum alanına tırnak içinde herhangi bir şey yazarsanız…, bu tırnaklar çift ile değiştirilecektir -<>...<>. Bu şekilde girilen Javascript kodu çalıştırılmayacaktır.
Olası JS Enjeksiyon saldırılarını önlemek için alıntıları çift tırnakla değiştirmenin oldukça yaygın bir uygulama olduğunu fark ettim. Bununla birlikte, JS Enjeksiyon kodunu gerçekleştirmek için teklifleri kodlamanın birkaç yolu vardır. Bu nedenle alıntıları ikiye katlamak, bu saldırıya karşı korunmanın mükemmel bir yolu değildir.
Sonuç
Javascript web siteleri için en yaygın kullanılan teknolojilerden biri olduğu için, Javascript Injection'ın web sitelerine yönelik olası saldırılardan biri olduğu her zaman akılda tutulmalıdır. Bu nedenle, web sitelerini veya diğer web teknolojilerini test ederken, bu saldırıya karşı test etmek unutulmamalıdır.
Güvenlik testi yapılırken JS Enjeksiyonu unutulmamalıdır. Bazı insanlar, bu testi istemci tarafında yapıldığından daha az riskli bir saldırı olarak görür.
Ancak, bu yanlış bir yaklaşımdır ve Javascript Injection'ın hassas bilgi sızıntısı, parametrelerin değiştirilmesi veya kullanıcı hesaplarının hacklenmesi gibi ciddi web sitelerine zarar verebileceğini her zaman unutmamalıyız.
Bu nedenle, bunu test etmenin önemli bir parçası olarak görmeliyiz ve bu, iyi ürünlere ve şirketin itibarına yapılan yatırımın bir parçasıdır.
JS Enjeksiyonunun test edilmesi çok zor değil. Öncelikle Javascript hakkında genel bilgiye sahip olmalısınız ve bu saldırının mevcut web çözümü için mümkün olup olmadığını nasıl kontrol edeceğinizi bilmelisiniz.
Ayrıca test ederken, bir web sitesinin bu tür saldırılara karşı korumaya sahip olabileceğini, ancak çok zayıf olabileceğini - ayrıca kontrol edilmesi gerektiğini de unutmamalısınız. Unutulmaması gereken bir diğer önemli nokta da, farklı Javascript Enjeksiyon saldırılarının olduğu ve hiçbirinin test edilmesinin unutulmaması gerektiğidir.
Javascript Enjeksiyon Testi yaptınız mı? Sizden haber almaktan memnuniyet duyarız, aşağıdaki yorumlar bölümünde deneyimlerinizi paylaşmaktan çekinmeyin.
Önerilen Kaynaklar
- Yeni Başlayanlar İçin Derinlemesine Tutulma Öğreticileri
- Node.js Test Çerçevesi Nasıl Kurulur: Node.js Eğitimi
- HTML Enjeksiyon Eğitimi: Örneklerle Türler ve Önleme
- SQL Injection Testing Tutorial (SQL Injection Attack Örneği ve Önlenmesi)
- Örneklerle Java Yansıtma Eğitimi
- SVN Eğitimi: Subversion Kullanarak Kaynak Kodu Yönetimi
- Örneklerle Python DateTime Eğitimi
- Kaplumbağa SVN Eğitimi: Kod Deposundaki Revizyonlar