diff --git a/src/SUMMARY.md b/src/SUMMARY.md
index be4d4275a..4c7d77d24 100644
--- a/src/SUMMARY.md
+++ b/src/SUMMARY.md
@@ -725,6 +725,7 @@
- [SOME - Same Origin Method Execution](pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md)
- [Sniff Leak](pentesting-web/xss-cross-site-scripting/sniff-leak.md)
- [Steal Info JS](pentesting-web/xss-cross-site-scripting/steal-info-js.md)
+ - [Wasm Linear Memory Template Overwrite Xss](pentesting-web/xss-cross-site-scripting/wasm-linear-memory-template-overwrite-xss.md)
- [XSS in Markdown](pentesting-web/xss-cross-site-scripting/xss-in-markdown.md)
- [XSSI (Cross-Site Script Inclusion)](pentesting-web/xssi-cross-site-script-inclusion.md)
- [XS-Search/XS-Leaks](pentesting-web/xs-search/README.md)
diff --git a/src/pentesting-web/xss-cross-site-scripting/README.md b/src/pentesting-web/xss-cross-site-scripting/README.md
index 5598697de..d25863c7c 100644
--- a/src/pentesting-web/xss-cross-site-scripting/README.md
+++ b/src/pentesting-web/xss-cross-site-scripting/README.md
@@ -4,81 +4,80 @@
## Μεθοδολογία
-1. Έλεγχος αν **οποιαδήποτε τιμή που ελέγχετε** (_parameters_, _path_, _headers_?, _cookies_?) **ανακλάται** στο HTML ή **χρησιμοποιείται** από **JS** κώδικα.
-2. **Βρείτε το πλαίσιο** όπου ανακλάται/χρησιμοποιείται.
-3. If **reflected**
-1. Check **which symbols can you use** and depending on that, prepare the payload:
+1. Ελέγξτε αν **κάποια τιμή που ελέγχετε** (_parameters_, _path_, _headers_?, _cookies_?) **αντανακλάται** στο HTML ή **χρησιμοποιείται** από κώδικα **JS**.
+2. **Βρείτε το πλαίσιο** όπου αντανακλάται/χρησιμοποιείται.
+3. Αν **αντανακλάται**
+1. Ελέγξτε **ποια σύμβολα μπορείτε να χρησιμοποιήσετε** και ανάλογα προετοιμάστε το payload:
1. Σε **raw HTML**:
-1. Μπορείτε να δημιουργήσετε νέα HTML tags;
-2. Μπορείτε να χρησιμοποιήσετε events ή attributes που υποστηρίζουν το πρωτόκολλο `javascript:`?;
-3. Μπορείτε να παρακάμψετε τις προστασίες;
-4. Ερμηνεύεται το HTML περιεχόμενο από κάποιο client side JS engine (_AngularJS_, _VueJS_, _Mavo_...), θα μπορούσατε να εκμεταλλευτείτε ένα [**Client Side Template Injection**](../client-side-template-injection-csti.md).
-5. Αν δεν μπορείτε να δημιουργήσετε HTML tags που εκτελούν JS κώδικα, θα μπορούσατε να εκμεταλλευτείτε ένα [**Dangling Markup - HTML scriptless injection**](../dangling-markup-html-scriptless-injection/index.html)?
+1. Μπορείτε να δημιουργήσετε νέες HTML tags;
+2. Μπορείτε να χρησιμοποιήσετε events ή attributes που υποστηρίζουν το πρωτόκολλο `javascript:`;
+3. Μπορείτε να παρακάμψετε προστασίες;
+4. Αν το HTML περιεχόμενο ερμηνεύεται από κάποιο client side JS engine (_AngularJS_, _VueJS_, _Mavo_...), μπορείτε να εκμεταλλευτείτε ένα [**Client Side Template Injection**](../client-side-template-injection-csti.md).
+5. Αν δεν μπορείτε να δημιουργήσετε HTML tags που εκτελούν JS, μπορείτε να εκμεταλλευτείτε ένα [**Dangling Markup - HTML scriptless injection**](../dangling-markup-html-scriptless-injection/index.html)?
2. Μέσα σε ένα **HTML tag**:
-1. Μπορείτε να εξέλθετε στο raw HTML context;
+1. Μπορείτε να βγείτε στο raw HTML context;
2. Μπορείτε να δημιουργήσετε νέα events/attributes για να εκτελέσετε JS κώδικα;
-3. Το attribute όπου βρίσκεστε υποστηρίζει εκτέλεση JS;
-4. Μπορείτε να παρακάμψετε τις προστασίες;
+3. Το attribute στο οποίο παγιδεύεστε υποστηρίζει εκτέλεση JS;
+4. Μπορείτε να παρακάμψετε προστασίες;
3. Μέσα σε **JavaScript code**:
1. Μπορείτε να διαφύγετε από το ``** tags μιας HTML σελίδας, μέσα σε ένα `.js` αρχείο ή μέσα σε ένα attribute που χρησιμοποιεί το **`javascript:`** πρωτόκολλο:
+Σε αυτή την περίπτωση η είσοδός σας αντανακλάται ανάμεσα στις ετικέτες **``** μιας σελίδας HTML, μέσα σε ένα αρχείο `.js` ή μέσα σε ένα attribute που χρησιμοποιεί το πρωτόκολλο **`javascript:`**:
-- Αν αντανακλάται μεταξύ **``** tags, ακόμα κι αν το input σου είναι μέσα σε κάποιο είδος quotes, μπορείς να προσπαθήσεις να εγχύσεις `` και να ξεφύγεις από αυτό το context. Αυτό δουλεύει επειδή ο **browser θα πρώτα αναλύσει τα HTML tags** και μετά το περιεχόμενο, επομένως δεν θα αντιληφθεί ότι το εγχυμένο `` tag βρίσκεται μέσα στον HTML κώδικα.
-- Αν αντανακλάται **μέσα σε JS string** και το τελευταίο κόλπο δεν λειτουργεί, θα χρειαστεί να **βγεις** από το string, να **εκτελέσεις** τον κώδικά σου και να **ανακατασκευάσεις** τον JS κώδικα (αν υπάρχει κάποιο σφάλμα, δεν θα εκτελεστεί):
+- Αν αντανακλάται ανάμεσα σε **``** ετικέτες, ακόμα κι αν η είσοδός σας βρίσκεται μέσα σε οποιαδήποτε είδους εισαγωγικά, μπορείτε να προσπαθήσετε να εισαγάγετε `` και να ξεφύγετε από αυτό το context. Αυτό λειτουργεί επειδή **το πρόγραμμα περιήγησης πρώτα θα αναλύσει τις ετικέτες HTML** και μετά το περιεχόμενο, επομένως δεν θα παρατηρήσει ότι η εισαγόμενη ετικέτα `` βρίσκεται μέσα στον HTML κώδικα.
+- Αν αντανακλάται **μέσα σε JS string** και το προηγούμενο κόλπο δεν δουλεύει, θα χρειαστεί να **βγείτε** από το string, να **εκτελέσετε** τον κώδικά σας και να **αναδομήσετε** τον JS κώδικα (αν υπάρχει οποιοδήποτε σφάλμα, δεν θα εκτελεστεί:
- `'-alert(1)-'`
- `';-alert(1)//`
- `\';alert(1)//`
-- Αν αντανακλάται μέσα σε template literals μπορείς να **ενσωματώσεις JS εκφράσεις** χρησιμοποιώντας τη σύνταξη `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
-- Η **κωδικοποίηση Unicode** λειτουργεί για να γράψεις **έγκυρο javascript code**:
+- Αν αντανακλάται μέσα σε template literals μπορείτε να **ενσωματώσετε JS εκφράσεις** χρησιμοποιώντας τη σύνταξη `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
+- Η **Unicode encode** λειτουργεί για να γράψετε **valid javascript code**:
```javascript
alert(1)
alert(1)
@@ -86,29 +85,29 @@ alert(1)
```
#### Javascript Hoisting
-Javascript Hoisting αναφέρεται στην ευκαιρία να **δηλώσεις συναρτήσεις, μεταβλητές ή κλάσεις αφού έχουν χρησιμοποιηθεί, ώστε να μπορείς να εκμεταλλευτείς σενάρια όπου ένα XSS χρησιμοποιεί μη δηλωμένες μεταβλητές ή συναρτήσεις.**\
-**Δες την παρακάτω σελίδα για περισσότερες πληροφορίες:**
+Javascript Hoisting αναφέρεται στην ευκαιρία να **δηλώσετε functions, variables ή classes αφού έχουν χρησιμοποιηθεί, έτσι ώστε να μπορείτε να εκμεταλλευτείτε σενάρια όπου ένα XSS χρησιμοποιεί μη δηλωμένες μεταβλητές ή functions.**\
+**Δείτε την παρακάτω σελίδα για περισσότερες πληροφορίες:**
{{#ref}}
js-hoisting.md
{{#endref}}
-### Συνάρτηση Javascript
+### Javascript Function
-Πολλές ιστοσελίδες έχουν endpoints που **δέχονται ως παράμετρο το όνομα της συνάρτησης που θα εκτελεστεί**. Ένα συνηθισμένο παράδειγμα που θα δεις σε πραγματικά συστήματα είναι κάτι σαν: `?callback=callbackFunc`.
+Πολλές σελίδες έχουν endpoints που **δέχονται ως παράμετρο το όνομα της συνάρτησης που θα εκτελεστεί**. Ένα κοινό παράδειγμα που βλέπεται στο wild είναι κάτι σαν: `?callback=callbackFunc`.
-Ένας καλός τρόπος για να διαπιστώσεις αν κάτι που δίνεται απευθείας από τον χρήστη προσπαθεί να εκτελεστεί είναι να **τροποποιήσεις την τιμή της παραμέτρου** (για παράδειγμα σε 'Vulnerable') και να κοιτάξεις στην κονσόλα για σφάλματα όπως:
+Ένας καλός τρόπος να διαπιστώσετε αν κάτι που δίνεται απευθείας από τον χρήστη προσπαθεί να εκτελεστεί είναι **να τροποποιήσετε την τιμή της παραμέτρου** (για παράδειγμα σε 'Vulnerable') και να κοιτάξετε στην console για σφάλματα όπως:
.png>)
-Σε περίπτωση που είναι ευάλωτο, θα μπορούσες να **προκαλέσεις ένα alert** απλώς στέλνοντας την τιμή: **`?callback=alert(1)`**. Ωστόσο, είναι πολύ συνηθισμένο αυτά τα endpoints να **επαληθεύουν το περιεχόμενο** ώστε να επιτρέπουν μόνο γράμματα, αριθμούς, τελείες και underscore (**`[\w\._]`**).
+Σε περίπτωση που είναι ευάλωτο, μπορεί να καταφέρετε να **προκαλέσετε ένα alert** απλά στέλνοντας την τιμή: **`?callback=alert(1)`**. Ωστόσο, είναι πολύ συνηθισμένο αυτά τα endpoints να **επαληθεύουν το περιεχόμενο** ώστε να επιτρέπουν μόνο γράμματα, αριθμούς, τελείες και underscores (**`[\w\._]`**).
-Παρόλα αυτά, ακόμα και με αυτόν τον περιορισμό είναι εφικτό να εκτελέσεις κάποιες ενέργειες. Αυτό συμβαίνει επειδή μπορείς να χρησιμοποιήσεις αυτούς τους έγκυρους χαρακτήρες για να **προσπελάσεις οποιοδήποτε στοιχείο στο DOM**:
+Ωστόσο, ακόμα και με αυτόν τον περιορισμό είναι δυνατή η εκτέλεση ορισμένων ενεργειών. Αυτό συμβαίνει επειδή μπορείτε να χρησιμοποιήσετε αυτούς τους έγκυρους χαρακτήρες για να **προσπελάσετε οποιοδήποτε στοιχείο στο DOM**:
.png>)
-Κάποιες χρήσιμες συναρτήσεις για αυτό:
+Μερικές χρήσιμες συναρτήσεις για αυτό:
```
firstElementChild
lastElementChild
@@ -116,11 +115,11 @@ nextElementSibiling
lastElementSibiling
parentElement
```
-Μπορείτε επίσης να δοκιμάσετε να **trigger Javascript functions** απευθείας: `obj.sales.delOrders`.
+You can also try to **trigger Javascript functions** directly: `obj.sales.delOrders`.
-Ωστόσο, συνήθως τα endpoints που εκτελούν την ενδεικνυόμενη συνάρτηση είναι endpoints χωρίς πολύ ενδιαφέρον DOM, **other pages in the same origin** θα έχουν ένα **πιο ενδιαφέρον DOM** για να εκτελέσουν περισσότερες ενέργειες.
+However, usually the endpoints executing the indicated function are endpoints without much interesting DOM, **άλλες σελίδες στο ίδιο same origin** will have a **more interesting DOM** to perform more actions.
-Επομένως, για να **abuse this vulnerability in a different DOM** αναπτύχθηκε η εκμετάλλευση **Same Origin Method Execution (SOME)**:
+Therefore, in order to **abuse this vulnerability in a different DOM** the **Same Origin Method Execution (SOME)** exploitation was developed:
{{#ref}}
@@ -129,7 +128,7 @@ some-same-origin-method-execution.md
### DOM
-Υπάρχει **JS code** που χρησιμοποιεί **μη ασφαλώς** κάποια **δεδομένα που ελέγχονται από επιτιθέμενο** όπως `location.href`. Ένας επιτιθέμενος θα μπορούσε να το κακοποιήσει αυτό για να εκτελέσει αυθαίρετο JS code.
+There is **JS code** that is using **unsafely** some **data controlled by an attacker** like `location.href` . Ένας attacker, could abuse this to execute arbitrary JS code.
{{#ref}}
@@ -138,7 +137,7 @@ dom-xss.md
### **Universal XSS**
-Αυτού του είδους τα XSS μπορούν να βρεθούν **οπουδήποτε**. Δεν εξαρτώνται μόνο από την εκμετάλλευση του client μιας web εφαρμογής αλλά από **οποιοδήποτε** **context**. Αυτού του τύπου η **arbitrary JavaScript execution** μπορεί ακόμη να χρησιμοποιηθεί για απόκτηση **RCE**, ανάγνωση **arbitrary** **files** σε clients και servers, και άλλα.\
+These kind of XSS can be found **οπουδήποτε**. 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.\
Κάποια **παραδείγματα**:
@@ -157,11 +156,11 @@ server-side-xss-dynamic-pdf.md
## Injecting inside raw HTML
-Όταν η είσοδός σας αντανακλάται **inside the HTML page** ή μπορείτε να διαφύγετε και να εγχύσετε HTML code σε αυτό το context, το **πρώτο** που πρέπει να κάνετε είναι να ελέγξετε αν μπορείτε να κακοποιήσετε το `<` για να δημιουργήσετε νέα tags: Απλώς προσπαθήστε να **reflect** αυτό το **char** και ελέγξτε αν γίνεται **HTML encoded** ή **διαγράφεται** ή αν **αποτυπώνεται χωρίς αλλαγές**. **Μόνο στην τελευταία περίπτωση θα μπορέσετε να εκμεταλλευτείτε αυτό το σενάριο**.\
-Για αυτές τις περιπτώσεις επίσης **έχετε υπόψη** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
-_**Σημείωση: Ένα σχόλιο HTML μπορεί να κλείσει χρησιμοποιώντας\*\***\***\*`-->`\*\***\***\*or \*\***`--!>`\*\***_
+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)**.**\
+_**Σημείωση: Ένα HTML comment μπορεί να κλείσει χρησιμοποιώντας**`-->`**ή **`--!>`**_
-Σε αυτή την περίπτωση και αν δεν χρησιμοποιείται black/whitelisting, μπορείτε να χρησιμοποιήσετε payloads όπως:
+In this case and if no black/whitelisting is used, you could use payloads like:
```html
` tags ή ανάμεσα σε HTML events που μπορούν να εκτελέσουν JS code ή σε attributes που αποδέχονται το πρωτόκολλο `javascript:`.
+Σε αυτές τις περιπτώσεις το **input** σας θα **αντανακλάται μέσα στον JS κώδικα** ενός `.js` αρχείου ή μεταξύ των `` tags ή ανάμεσα σε HTML events που μπορούν να εκτελέσουν JS κώδικα ή ανάμεσα σε attributes που δέχονται το πρωτόκολλο `javascript:`.
### Escaping \` μπορείτε εύκολα να **"ξεφύγετε" κλείνοντας το `` μπορείτε εύκολα να **ξεφύγετε κλείνοντας το `
```
-Σημείωσε ότι σε αυτό το παράδειγμα **δεν έχουμε καν κλείσει το μονό εισαγωγικό**. Αυτό συμβαίνει επειδή **HTML parsing is performed first by the browser**, το οποίο περιλαμβάνει την αναγνώριση στοιχείων της σελίδας, συμπεριλαμβανομένων μπλοκ script. Η ανάλυση του JavaScript για να κατανοήσει και να εκτελέσει τα ενσωματωμένα scripts γίνεται μόνο αργότερα.
+Σημειώστε ότι σε αυτό το παράδειγμα **δεν έχουμε καν κλείσει το απλό απόστροφο**. Αυτό συμβαίνει επειδή η **HTML parsing εκτελείται πρώτα από το πρόγραμμα περιήγησης**, το οποίο περιλαμβάνει την αναγνώριση στοιχείων της σελίδας, συμπεριλαμβανομένων μπλοκ script. Η ανάλυση της JavaScript για να κατανοηθούν και να εκτελεστούν τα ενσωματωμένα scripts γίνεται μόνο στη συνέχεια.
### Μέσα στον κώδικα JS
-Αν τα `<>` φιλτράρονται μπορείς ακόμα να **ξεφύγεις από τη συμβολοσειρά** όπου βρίσκεται η είσοδός σου και να **εκτελέσεις αυθαίρετο JS**. Είναι σημαντικό να **διορθώσεις τη σύνταξη του JS**, γιατί αν υπάρχουν σφαλμάτα, ο κώδικας JS δεν θα εκτελεστεί:
+Αν τα `<>` φιλτράρονται, μπορείτε ακόμα να **escape the string** στο σημείο όπου η είσοδός σας **βρίσκεται** και να **execute arbitrary JS**. Είναι σημαντικό να **fix JS syntax**, γιατί αν υπάρχουν σφάλματα, ο κώδικας JS δεν θα εκτελεστεί:
```
'-alert(document.domain)-'
';alert(document.domain)//
@@ -495,25 +498,25 @@ This trick was taken from [https://medium.com/@skavans\_/improving-the-impact-of
```
#### JS-in-JS string break → inject → repair pattern
-Όταν η είσοδος χρήστη καταλήγει μέσα σε ένα παραθεματισμένο JavaScript string (π.χ., server-side echo σε ένα inline script), μπορείτε να τερματίσετε το string, να inject code και να επιδιορθώσετε το συντακτικό ώστε το parsing να παραμείνει έγκυρο. Γενικός σκελετός:
+Όταν η είσοδος χρήστη καταλήγει μέσα σε ένα quoted JavaScript string (π.χ., server-side echo μέσα σε ένα inline script), μπορείτε να τερματίσετε τη συμβολοσειρά, να εισάγετε κώδικα και να επιδιορθώσετε τη σύνταξη ώστε η ανάλυση να παραμείνει έγκυρη. Γενικός σκελετός:
```
" // end original string
; // safely terminate the statement
// attacker-controlled JS
; a = " // repair and resume expected string/statement
```
-Παράδειγμα μοτίβου URL όταν η ευάλωτη παράμετρος ανακλάται σε μια JS συμβολοσειρά:
+Παράδειγμα προτύπου URL όταν η ευάλωτη παράμετρος αντικατοπτρίζεται σε συμβολοσειρά JS:
```
?param=test";;a="
```
-Αυτό εκτελεί attacker JS χωρίς να χρειάζεται να αγγίξετε το HTML context (pure JS-in-JS). Συνδυάστε με blacklist bypasses παρακάτω όταν τα φίλτρα μπλοκάρουν keywords.
+Αυτό εκτελεί τον JS του επιτιθέμενου χωρίς να χρειάζεται να αγγίξετε το HTML context (pure JS-in-JS). Συνδυάστε με blacklist bypasses παρακάτω όταν φίλτρα μπλοκάρουν keywords.
### Template literals ``
-Για να κατασκευάσετε **strings**, εκτός από single και double quotes, το JS δέχεται επίσης **backticks** **` `` `**. Αυτό είναι γνωστό ως template literals, καθώς επιτρέπουν **embedded JS expressions** χρησιμοποιώντας τη σύνταξη `${ ... }`.\
-Επομένως, αν δείτε ότι το input σας είναι **reflected** μέσα σε μια JS string που χρησιμοποιεί backticks, μπορείτε να εκμεταλλευτείτε τη σύνταξη `${ ... }` για να εκτελέσετε **arbitrary JS code**:
+Για να κατασκευάσετε **strings**, πέρα από τα μονά και διπλά quotes, η JS δέχεται επίσης **backticks** **` `` `**. Αυτό είναι γνωστό ως template literals καθώς επιτρέπουν την **ενσωμάτωση JS εκφράσεων** χρησιμοποιώντας τη σύνταξη `${ ... }`.\
+Επομένως, αν βρείτε ότι η είσοδός σας αντανακλάται μέσα σε ένα JS string που χρησιμοποιεί backticks, μπορείτε να καταχραστείτε τη σύνταξη `${ ... }` για να εκτελέσετε **arbitrary JS code**:
-Αυτό μπορεί να **εκμεταλλευτεί** χρησιμοποιώντας:
+Αυτό μπορεί να **καταχραστεί** χρησιμοποιώντας:
```javascript
;`${alert(1)}``${`${`${`${alert(1)}`}`}`}`
```
@@ -525,7 +528,7 @@ return loop
}
loop``
```
-### Εκτέλεση κωδικοποιημένου code
+### Κωδικοποιημένη εκτέλεση κώδικα
```html