Siteler arası komut dosyası çalıştırma: XSS enjeksiyonu

#1011   2019-09-22 22:37 GMT        

SQL Injection ve NoSQL Injection hakkındaki mesajlardan sonra bugün size XSS Injection'ı getiriyorum. Bu saldırı kötü amaçlı kodları iyi huylu web sayfalarına enjekte etmekten ibarettir. Saldırgan müşteri tarafından kod ekler, böylece web sitesinin kötü yapılandırılması için bu kod diğer kullanıcılara gösterilir.

Bu saldırı türü, genellikle tarayıcı daha önce doğrulamadan bir çıkış alanı oluşturmak için bir kullanıcı giriş alanı kullandığında ortaya çıkar.

Siteler Arası Komut Dosyası ekleme enjeksiyonu elde etmek için, girdiğiniz bir değerin yansıtıldığı bir web sayfasının alanlarını bulmaya çalışmanız gerekir. Bir örnek, kayıt defterinde bir kullanıcı adı girmeniz gereken bir web sayfası bulmaktır, örneğin “Lethani” ve bir hoş geldiniz iletisinde oturum açarken “Merhaba, Lethani” yazan bir mesaj görünür.

Söz konusu sayfanın kaynak koduna bakarsak, şöyle bir html kodu görürüz:

Ancak “Lethani” yerine kayıt defterinde kötü niyetli bir javascript kodu içeren bir kullanıcı adı yazarsak, bu html sayfası oluşturulduğunda çalıştırılır. Örneğin:

Bu kod, tarayıcının bir pop-up göstermesini sağlayan javascript alert () işlevinin yürütülmesine neden olur.

Kavramın kanıtını göstermek için, bu güvenlik açığını kendiniz test edebilmeniz için tavsiye ettiğim xss-game.appspot.com sayfasını kullandım:

Bu tür güvenlik açıklarını test etmek için genellikle javascript alert () işlevi kullanılır. Web’de bir yere tanıtılırsa, işlev bir pop-up atlarsa, sayfa XSS’e karşı savunmasızdır.

Ancak, bir sayfanın bir kullanıcı girişini yansıttığı için, bunun XSS'ye karşı savunmasız olduğu anlamına gelmez. Bu güvenlik açığından kaçınmak için, geliştiricinin, kendisi için oluşturulan işlevleri kullanarak tüm girişleri doğrulaması yeterlidir, böylece girdiğiniz değer ne olursa olsun, bir değişken olarak ve hiçbir zaman kaynak kodu değiştirebilecek bir kod olarak kabul edilmemelidir.

Bu enjeksiyon tipinin iki versiyonu vardır: XSS Reflected ve XSS Kalıcı. Enjeksiyon yansıtıldığında, kötü amaçlı kod veritabanına kaydedilmez, yalnızca istemciye yansıtılır. Bu nedenle, bir kullanıcının gösterilmesi için, kendisine kendisi girmiş olması gerekir. Bununla birlikte, kalıcı bir XSS enjeksiyonu söz konusu olduğunda, girilen yük, veritabanına kaydedilir ve enjekte edilen değere erişen herhangi bir kullanıcı gösterilir. Bu nedenle, bir XSS Kalıcı güvenlik açığı Yansıyandan çok daha ciddidir.

 

Alcance de ataques XSS
Biri bu saldırının bizim için ne faydası olabileceğini merak edebilir. Bir kullanıcının bir pop-up tarafından şaşırmasının ötesinde, bir XSS enjeksiyonumuz varsa yapabileceğimiz çok ilginç şeyler var.

— Çerez Çalma XSS: Bir kullanıcının oturum çerezini çalmak mümkündür. Bu, javascript document.cookie işlevini çalıştırarak yapılabilir. Sanırım bir Amazon URL'sinde XSS enjeksiyonu yapabiliriz. Phising yaparak bir kullanıcının bir sonraki yükü enjekte ettiğim bağlantıyı açmasını sağlayabilirim:

Bu şekilde, web siteme oturum çerezini gönderirdim. Alacaktım ve senin adına alışveriş yapabilirim.

— Bir Dosya İndirmeye Zorla: Bir kullanıcının XSS Enjeksiyonuna karşı savunmasız bir bağlantıyı ziyaret ederek kötü amaçlı bir dosya indirmesini sağlamak mümkündür. Örneğin, aşağıdaki yük ile yapabiliriz:

— Kullanıcıyı Yönlendirme: Kullanıcıyı başka bir web sayfasına göndermek için de kullanabiliriz. Kullanıcı, saldırgan tarafından kontrol edilen bir sayfaya yönlendirilebilir, böylece asıl sayfada olduğuna inandığı için kimlik bilgilerini girer:

 

Bunlara ek olarak, bu bağlantıda keylogger'ları etkinleştirmek, web kamerası aracılığıyla fotoğraf ve video çekmek vb. İçin birçok komut dosyası bulabilirsiniz.

 

XSS Ofuscados / Políglotas
Çoğu zaman, XSS'ye karşı savunmasız olduklarından şüphelendiğim web sayfalarını buldum ancak “<script>” metnini filtreledim, böylece yükü enjekte ederken hiçbir şey olmuyordu. Javascript kodunu script etiketleri kullanmadan çalıştırmanın bazı yolları.

 

Bunlara ek olarak, OWASP sayfasındaki filtreleri önlemek için XSS enjeksiyonlarını engellemenin başka yollarını da bulabilirsiniz.

Bu diğer web sayfasında, filtrelerden kaçınmak için karakterlerin kodlandığı birçok “XSS Polyglot” gösterimi bulabilirsiniz.

Son olarak, istediğimiz javascript kodunu ezoterik javascript koduna dönüştüren JSFuck adlı bir kodlayıcı bulabiliriz:

Sonraki yazılarda Blind XSS veya Dom Based XSS gibi bazı gelişmiş XSS durumlarını göstereceğim.


Bu mesaj MrX tarafından 2019-09-25 00:09 GMT, 80 Gün önce düzenlendi.