Burada pop-up ekranının çıktığını gördük ancak eğer ki scriptimiz yazılımcı tarafından filtrelenmiş olsaydı o zaman payloadımızda ufak değişikliklerle scriptimizi yedirmeye çalışacaktık. Örnek Kullanımlar:
alert(1)
<script>alert(1)ript>
<svg onload=alert(1)>
Eğer ki alert fonksiyonunda filtreleme yapıldıysa:
<svg onload=prompt(1)>
Eğer girdiğimiz değeri bir değişkene atıyorsa yazılımcı o zaman:
Eğer çift tırnak gibi çok kullanılan bir yöntemi filtrelemişse bizde tek tırnak ile devam ederiz 🙂
‘; alert(1);’
Belirli tetiklenmelere bağlı olarak payloadımı çalıştırabilirim mesela benim sık kullandığım method fare hareketiyle pop-up ekranını çıkarmaktır:
/” onmouseover=”alert(1);
Arkadaşlar bir çok bypass yöntemi ile yazılımcının filtrelemelerini geçerek alert verdirebiliriz.Çok fazla sayıda XSS payloadı bulunmakta ve türemekte duruma koda göre BugBounty (Bugcrowd,HackerOne vb.) ile uğraşan arkadaşlar kendilerini geliştirip çok farklı payloadlar bulmaktadır.
Blacklist değil WHİTELIST kullanılmalı ! Bize ne lazımsa onu almalıyız sadece.
CSRF (Cross Site Request Forgery) genel yapı olarak sitenin açığından faydalanarak siteye sanki o kullanıcıymış gibi erişerek işlem yapmasını sağlar.
Genellikle GET requesleri ve SESSION işlemlerinin doğru kontrol edilememesi durumlarındaki açıklardan saldırganların faydalanmasını sağlamaktadır.
Saldırganın herhangi bir web sayfasına yerleştirdiği Js veya Html kodlarıyla yetkilinin oturum bilgilerini çalma olayıdır. Üstte de belirttiğimiz gibi, yetkilinin haberi olmaksızın yapılan bir işlemdir. Bu olayda önemli olan, saldırganın kurban için kodladığı web sayfasını kurban’ın açmasıdır. kurban web sayfasını açtığı takdirde, session (Oturum) bilgileri – saldırganın kurnazlığına bağlıdır biraz da – saniyeler içerisinde kurbana fark ettirmeden değiştirilebilir.
Yetkilinin oturum bilgilerini kurnaz bir biçimde ele geçirdikten sonra korsan, kurbanı tamamen sistemden saf dışı ederek sisteme dahil olur ve kontrol mekanizmasını elinde tutar.
Bir site hayal edelim.
DemoVuln.Com/Passwd.php
Bu sayfa, bir sitenin kullanıcı şifresini değiştirmeye yarayan sayfa olsun. Kullanıcının şifresini değiştirdiğini düşünürsek, php dilinde, get methodu ile yazılmış bir sayfada tepki enter tuşuna basıldığı vakit şu şekilde gerçekleşecektir:
DemoVuln.Com/Passwd.php?pass=yenisifre
Görüldüğü üzere url direkt olarak yansıdı ve yeni şifremiz “yenisifre” olarak tarayıcıda dahi belirdi. Bu, en basit php yazma methodudur ve günümüzde pek az kullanıcı tarafından kullanılır. Yine de, konuyu anlamanız açısından en basit yoldan anlatmak istiyorum. Biraz daha açıp, kaynak kodlarımıza göz gezdirdiğimizde, şöyle bir şey çıkar karşımıza.
<Form Method="Get" Action="Passwd.php">
<Input Type="Text" Name="pass" />
<Input Type="Submit" Name="Submit" Value="Submit" />
</Form>
Şimdi dilerseniz kodları da sizlerin anlaması açısından biraz daha açalım.
Günümüzde belli başlı küçük sistemlerde işe yarasa da, yine de küçük sistemler için hayat kurtarıcı bir methoddur. Saldırgan “get” modülü yerine “post” modülü kullanıldığında tarayıcı üzerinde şifrenin değiştiğini göremeyince işin başarısız olduğunu zannedebilir. Ancak bu sadece yeni yetme saldırganlar için geçerlidir ve derine inen pek çok uzman saldırgan da vardır. Bu gibi durumlarda post methodu yetersiz kalır ve yeni şeyler aramak zorunda kalırsınız.
Captcha kullanımı sadece korsandan değil aynı zamanda bot ve zararlı yazılımlardan da sisteminizi koruyan bir yöntemdir ve bu tür durumlarda kullanılması önemlidir.