hacktricks/pentesting-web/xss-cross-site-scripting/dom-xss.md

321 lines
31 KiB
Markdown
Raw Normal View History

2022-10-13 00:56:34 +00:00
# DOM XSS
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** [**💬**](https://emojipedia.org/speech-balloon/) **στην ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 22:40:18 +00:00
## Ευπάθειες DOM
2024-02-10 22:40:18 +00:00
Οι ευπάθειες DOM συμβαίνουν όταν δεδομένα από ελεγχόμενες από τον επιτιθέμενο **πηγές** (όπως `location.search`, `document.referrer` ή `document.cookie`) μεταφέρονται μη ασφαλώς σε **αποδέκτες**. Οι αποδέκτες είναι συναρτήσεις ή αντικείμενα (π.χ. `eval()`, `document.body.innerHTML`) που μπορούν να εκτελέσουν ή να απεικονίσουν επιβλαβές περιεχόμενο εάν δοθούν κακόβουλα δεδομένα.
2024-02-10 22:40:18 +00:00
- Οι **πηγές** είναι είσοδοι που μπορούν να χειραγωγηθούν από επιτιθέμενους, συμπεριλαμβανομένων των διευθύνσεων URL, των cookies και των μηνυμάτων ιστού.
- Οι **αποδέκτες** είναι δυνητικά επικίνδυνα σημεία όπου κακόβουλα δεδομένα μπορούν να οδηγήσουν σε αρνητικές επιπτώσεις, όπως η εκτέλεση σεναρίων.
2024-02-10 22:40:18 +00:00
Ο κίνδυνος προκύπτει όταν τα δεδομένα ρέουν από μια πηγή σε έναν αποδέκτη χωρίς κατάλληλο έλεγχο ή απολύμανση, επιτρέποντας επιθέσεις όπως ο XSS.
2021-05-27 11:59:23 +00:00
{% hint style="info" %}
2024-02-10 22:40:18 +00:00
**Μπορείτε να βρείτε μια πιο ενημερωμένη λίστα πηγών και αποδεκτών στο** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki)
2021-05-27 11:59:23 +00:00
{% endhint %}
2024-02-10 22:40:18 +00:00
**Συνηθισμένες πηγές:**
```javascript
document.URL
document.documentURI
document.URLUnencoded
document.baseURI
location
document.cookie
document.referrer
window.name
history.pushState
history.replaceState
localStorage
sessionStorage
IndexedDB (mozIndexedDB, webkitIndexedDB, msIndexedDB)
Database
```
2024-02-10 22:40:18 +00:00
**Συνηθισμένες Πηγές:**
2024-02-10 22:40:18 +00:00
| [**Ανακατεύθυνση Άνοιγμα**](dom-xss.md#open-redirect) | [**Εισαγωγή Javascript**](dom-xss.md#javascript-injection) | [**Αλλοίωση δεδομένων DOM**](dom-xss.md#dom-data-manipulation) | **jQuery** |
2022-04-20 17:00:18 +00:00
| -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `location` | `eval()` | `scriptElement.src` | `add()` |
| `location.host` | `Function() constructor` | `scriptElement.text` | `after()` |
| `location.hostname` | `setTimeout()` | `scriptElement.textContent` | `append()` |
| `location.href` | `setInterval()` | `scriptElement.innerText` | `animate()` |
| `location.pathname` | `setImmediate()` | `someDOMElement.setAttribute()` | `insertAfter()` |
| `location.search` | `execCommand()` | `someDOMElement.search` | `insertBefore()` |
| `location.protocol` | `execScript()` | `someDOMElement.text` | `before()` |
| `location.assign()` | `msSetImmediate()` | `someDOMElement.textContent` | `html()` |
| `location.replace()` | `range.createContextualFragment()` | `someDOMElement.innerText` | `prepend()` |
| `open()` | `crypto.generateCRMFRequest()` | `someDOMElement.outerText` | `replaceAll()` |
2024-02-10 22:40:18 +00:00
| `domElem.srcdoc` | **\`\`**[**Αλλοίωση τοπικής διαδρομής αρχείου**](dom-xss.md#local-file-path-manipulation) | `someDOMElement.value` | `replaceWith()` |
2022-04-20 17:00:18 +00:00
| `XMLHttpRequest.open()` | `FileReader.readAsArrayBuffer()` | `someDOMElement.name` | `wrap()` |
| `XMLHttpRequest.send()` | `FileReader.readAsBinaryString()` | `someDOMElement.target` | `wrapInner()` |
| `jQuery.ajax()` | `FileReader.readAsDataURL()` | `someDOMElement.method` | `wrapAll()` |
| `$.ajax()` | `FileReader.readAsText()` | `someDOMElement.type` | `has()` |
2024-02-10 22:40:18 +00:00
| **\`\`**[**Αλλοίωση αιτήματος Ajax**](dom-xss.md#ajax-request-manipulation) | `FileReader.readAsFile()` | `someDOMElement.backgroundImage` | `constructor()` |
2022-04-20 17:00:18 +00:00
| `XMLHttpRequest.setRequestHeader()` | `FileReader.root.getFile()` | `someDOMElement.cssText` | `init()` |
| `XMLHttpRequest.open()` | `FileReader.root.getFile()` | `someDOMElement.codebase` | `index()` |
2024-02-10 22:40:18 +00:00
| `XMLHttpRequest.send()` | [**Αλλοίωση συνδέσμου**](dom-xss.md#link-manipulation) | `someDOMElement.innerHTML` | `jQuery.parseHTML()` |
2022-04-20 17:00:18 +00:00
| `jQuery.globalEval()` | `someDOMElement.href` | `someDOMElement.outerHTML` | `$.parseHTML()` |
2024-02-10 22:40:18 +00:00
| `$.globalEval()` | `someDOMElement.src` | `someDOMElement.insertAdjacentHTML` | [**Εισαγωγή JSON στην πλευρά του πελάτη**](dom-xss.md#client-side-sql-injection) |
| **\`\`**[**Αλλοίωση αποθήκευσης HTML5**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` |
| `sessionStorage.setItem()` | [**Εισαγωγή XPath**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` |
2022-04-20 17:00:18 +00:00
| `localStorage.setItem()` | `document.evaluate()` | `document.writeln()` | `$.parseJSON()` |
2024-02-10 22:40:18 +00:00
| **``**[**`Άρνηση Υπηρεσίας`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Αλλοίωση των Cookies**](dom-xss.md#cookie-manipulation) |
| `requestFileSystem()` | **\`\`**[**Αλλοίωση του τομέα του εγγράφου**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` |
| `RegExp()` | `document.domain` | `history.pushState()` | [**Δηλητηρίαση URL WebSocket**](dom-xss.md#websocket-url-poisoning) |
| [**Εισαγωγή SQL στην πλευρά του πελάτη**](dom-xss.md#client-side-sql-injection) | [**Αλλοίωση μηνυμάτων ιστού**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` |
2022-04-20 17:00:18 +00:00
| `executeSql()` | `postMessage()` | \`\` | \`\` |
2024-02-10 22:40:18 +00:00
Η πηγή **`innerHTML`** δεν δέχεται στοιχεία `script` σε οποιοδήποτε σύγχρονο πρόγραμμα περιήγησης, ούτε θα εκτελεστούν γεγονότα `svg onload`. Αυτό σημαίνει ότι θα πρέπει να χρησιμοποιήσετε εναλλακτικά στοιχεία όπως `img` ή `iframe`.
2024-02-10 22:40:18 +00:00
Αυτός ο τύπος XSS είναι πιθανότατα ο **πιο δύσκολος να βρεθεί**, καθώς πρέπει να εξετάσετε τον κώδικα JS, να δείτε αν χρησιμοποιεί οποιοδήποτε αντικείμενο της οποίας την **τιμή ελέγχετε**, και σε αυτήν την περίπτωση, να δείτε αν υπάρχει **οποιοδήποτε τρόπος κατάχρησης** για να εκτελέσετε αυθαίρετο JS.
2024-02-10 22:40:18 +00:00
## Εργαλεία για να τα βρείτε
2021-11-18 13:00:50 +00:00
* [https://github.com/mozilla/eslint-plugin-no-unsanitized](https://github.com/mozilla/eslint-plugin-no-unsanitized)
2024-02-10 22:40:18 +00:00
## Παραδείγματα
2024-02-10 22:40:18 +00:00
### Ανακατεύθυνση Άνοιγμα
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/open-redirection](https://portswigger.net/web-security/dom-based/open-redirection)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες **ανακατεύθυνσης άνοιγματος στο DOM** συμβαίνουν όταν ένα σενάριο γράφει δεδομένα, τα οποία ένας επιτιθέμενος μπορεί να ελέγξει, σε μια πηγή ικανή να προκαλέσει πλοήγηση σε διάφορους τομείς.
2024-02-10 22:40:18 +00:00
Είναι κρίσιμο να κατανοήσετε ότι η εκτέλεση αυθαίρετου κώδικα, όπως **`javascript:alert(1)`**, είναι δυνατή εάν έχετε έλεγχο επί της αρχής του URL όπου συμβαίνει η ανακατεύθυνση.
2024-02-10 22:40:18 +00:00
Πηγές:
2024-02-06 03:10:27 +00:00
```javascript
location
location.host
location.hostname
location.href
location.pathname
location.search
location.protocol
location.assign()
location.replace()
open()
domElem.srcdoc
XMLHttpRequest.open()
XMLHttpRequest.send()
jQuery.ajax()
$.ajax()
```
2024-02-10 22:40:18 +00:00
### Αλλοίωση των cookies
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες αλλοίωσης των cookies που βασίζονται στο DOM συμβαίνουν όταν ένα script ενσωματώνει δεδομένα, τα οποία μπορούν να ελεγχθούν από έναν επιτιθέμενο, στην τιμή ενός cookie. Αυτή η ευπάθεια μπορεί να οδηγήσει σε απρόβλεπτη συμπεριφορά της ιστοσελίδας εάν το cookie χρησιμοποιείται εντός του ιστότοπου. Επιπλέον, μπορεί να εκμεταλλευτείται για να πραγματοποιήσει μια επίθεση σταθεροποίησης συνεδρίας εάν το cookie συμμετέχει στην παρακολούθηση των συνεδριών των χρηστών. Η κύρια αδυναμία που σχετίζεται με αυτήν την ευπάθεια είναι:
2024-02-10 22:40:18 +00:00
Αδυναμίες:
2024-02-06 03:10:27 +00:00
```javascript
document.cookie
```
2024-02-10 22:40:18 +00:00
### Εισαγωγή JavaScript
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/javascript-injection](https://portswigger.net/web-security/dom-based/javascript-injection)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες εισαγωγής JavaScript βασισμένες στο DOM δημιουργούνται όταν ένα σενάριο εκτελεί δεδομένα, τα οποία μπορούν να ελεγχθούν από έναν επιτιθέμενο, ως κώδικα JavaScript.
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-06 03:10:27 +00:00
```javascript
eval()
Function() constructor
setTimeout()
setInterval()
setImmediate()
execCommand()
execScript()
msSetImmediate()
range.createContextualFragment()
crypto.generateCRMFRequest()
```
2024-02-10 22:40:18 +00:00
### Αλλοίωση του document-domain
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/document-domain-manipulation](https://portswigger.net/web-security/dom-based/document-domain-manipulation)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες αλλοίωσης του `document.domain` συμβαίνουν όταν ένα σενάριο (script) ορίζει την ιδιότητα `document.domain` χρησιμοποιώντας δεδομένα που ο επιτιθέμενος μπορεί να ελέγξει.
2024-02-10 22:40:18 +00:00
Η ιδιότητα `document.domain` παίζει έναν **καθοριστικό ρόλο** στην **εφαρμογή** της **πολιτικής της ίδιας προέλευσης** από τους περιηγητές. Όταν δύο σελίδες από διαφορετικές προελεύσεις ορίζουν το `document.domain` σε **ίδια τιμή**, μπορούν να αλληλεπιδρούν χωρίς περιορισμούς. Αν και οι περιηγητές επιβάλλουν ορισμένους **περιορισμούς** στις τιμές που μπορούν να ανατεθούν στο `document.domain`, αποτρέποντας την ανάθεση εντελώς ασυναφών τιμών στην πραγματική προέλευση της σελίδας, υπάρχουν εξαιρέσεις. Συνήθως, οι περιηγητές επιτρέπουν τη χρήση **υποπεριοχών** ή **γονικών περιοχών**.
2024-02-10 22:40:18 +00:00
Απορροές (Sinks):
2024-02-06 03:10:27 +00:00
```javascript
document.domain
```
2024-02-10 22:40:18 +00:00
### Δηλητηρίαση WebSocket-URL
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/websocket-url-poisoning](https://portswigger.net/web-security/dom-based/websocket-url-poisoning)
2024-02-10 22:40:18 +00:00
Η **δηλητηρίαση WebSocket-URL** συμβαίνει όταν ένα σενάριο χρησιμοποιεί **δεδομένα που μπορούν να ελεγχθούν ως τον στόχο URL** για μια σύνδεση WebSocket.
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-10 22:40:18 +00:00
Ο κατασκευαστής `WebSocket` μπορεί να οδηγήσει σε ευπάθειες δηλητηρίασης WebSocket-URL.
2024-02-10 22:40:18 +00:00
### Παραπλάνηση συνδέσμου
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/link-manipulation](https://portswigger.net/web-security/dom-based/link-manipulation)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες παραπλάνησης συνδέσμου βασισμένες στο DOM προκύπτουν όταν ένα σενάριο γράφει **δεδομένα που μπορούν να ελεγχθούν από τον επιτιθέμενο σε έναν στόχο πλοήγησης** εντός της τρέχουσας σελίδας, όπως ένας κλικαρισμένος σύνδεσμος ή ο URL υποβολής ενός φόρμας.
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-06 03:10:27 +00:00
```javascript
someDOMElement.href
someDOMElement.src
someDOMElement.action
```
2024-02-10 22:40:18 +00:00
### Παραμόρφωση αιτήσεων Ajax
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation](https://portswigger.net/web-security/dom-based/ajax-request-header-manipulation)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες παραμόρφωσης αιτήσεων Ajax προκύπτουν όταν ένα σενάριο γράφει δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια αίτηση Ajax που εκδίδεται χρησιμοποιώντας ένα αντικείμενο `XmlHttpRequest`.
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-06 03:10:27 +00:00
```javascript
XMLHttpRequest.setRequestHeader()
XMLHttpRequest.open()
XMLHttpRequest.send()
jQuery.globalEval()
$.globalEval()
```
2024-02-10 22:40:18 +00:00
### Εκμετάλλευση της τοπικής διαδρομής αρχείου
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες στην εκμετάλλευση της τοπικής διαδρομής αρχείου προκύπτουν όταν ένα σενάριο περνά **δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια διεπαφή χειρισμού αρχείων** ως παράμετρο `filename`. Αυτή η ευπάθεια μπορεί να εκμεταλλευτεί από έναν επιτιθέμενο για να δημιουργήσει ένα URL που, αν επισκεφθεί από έναν άλλο χρήστη, μπορεί να οδηγήσει στο **άνοιγμα ή την εγγραφή ενός αυθαίρετου τοπικού αρχείου** στον περιηγητή του χρήστη.
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-06 03:10:27 +00:00
```javascript
FileReader.readAsArrayBuffer()
FileReader.readAsBinaryString()
FileReader.readAsDataURL()
FileReader.readAsText()
FileReader.readAsFile()
FileReader.root.getFile()
FileReader.root.getFile()
```
2024-02-10 22:40:18 +00:00
### Ενσωμάτωση SQL επί της πλευράς του πελάτη
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες της ενσωμάτωσης SQL επί της πλευράς του πελάτη συμβαίνουν όταν ένα σενάριο ενσωματώνει δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια ερώτηση SQL επί της πλευράς του πελάτη με ανασφάλεια.
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-06 03:10:27 +00:00
```javascript
executeSql()
```
2024-02-10 22:40:18 +00:00
### Αλλοίωση HTML5 αποθήκευσης
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες αλλοίωσης της HTML5 αποθήκευσης προκύπτουν όταν ένα σενάριο αποθηκεύει δεδομένα που μπορούν να ελεγχθούν από τον επιτιθέμενο στην HTML5 αποθήκευση του προγράμματος περιήγησης του δικτυακού τόπου (`localStorage` ή `sessionStorage`). Αν και αυτή η ενέργεια δεν είναι κατ' αρχήν μια ευπάθεια ασφαλείας, γίνεται προβληματική εάν η εφαρμογή στη συνέχεια **διαβάζει τα αποθηκευμένα δεδομένα και τα επεξεργάζεται με ανεπαρκή ασφάλεια**. Αυτό μπορεί να επιτρέψει σε έναν επιτιθέμενο να εκμεταλλευτεί τον μηχανισμό αποθήκευσης για να πραγματοποιήσει άλλες επιθέσεις βασισμένες στο DOM, όπως cross-site scripting και εισαγωγή JavaScript.
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-06 03:10:27 +00:00
```javascript
sessionStorage.setItem()
localStorage.setItem()
```
2024-02-10 22:40:18 +00:00
### Εισαγωγή XPath
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/client-side-xpath-injection](https://portswigger.net/web-security/dom-based/client-side-xpath-injection)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες **DOM-based XPath-injection** συμβαίνουν όταν ένα σενάριο ενσωματώνει **δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια ερώτηση XPath**.
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-06 03:10:27 +00:00
```javascript
document.evaluate()
someDOMElement.evaluate()
```
2024-02-10 22:40:18 +00:00
### Ενσωμάτωση JSON στην πλευρά του πελάτη
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/client-side-json-injection](https://portswigger.net/web-security/dom-based/client-side-json-injection)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες της ενσωμάτωσης JSON στην πλευρά του DOM συμβαίνουν όταν ένα σενάριο ενσωματώνει δεδομένα που ελέγχονται από τον επιτιθέμενο σε μια συμβολοσειρά που αναλύεται ως δομή δεδομένων JSON και στη συνέχεια επεξεργάζεται από την εφαρμογή.
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-06 03:10:27 +00:00
```javascript
JSON.parse()
jQuery.parseJSON()
$.parseJSON()
```
2024-02-10 22:40:18 +00:00
### Παραμόρφωση μηνυμάτων ιστού
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/web-message-manipulation](https://portswigger.net/web-security/dom-based/web-message-manipulation)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες στα **μηνύματα ιστού** προκύπτουν όταν ένα σενάριο στέλνει **δεδομένα που μπορούν να ελεγχθούν από τον επιτιθέμενο ως μήνυμα ιστού σε ένα άλλο έγγραφο** εντός του προγράμματος περιήγησης. Ένα **παράδειγμα** ευπάθειας στην παραμόρφωση μηνυμάτων ιστού μπορεί να βρεθεί στην [Ακαδημία Ασφάλειας Ιστού της PortSwigger](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source).
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-10 22:40:18 +00:00
Η μέθοδος `postMessage()` για την αποστολή μηνυμάτων ιστού μπορεί να οδηγήσει σε ευπάθειες εάν ο ακροατής γεγονότων για τη λήψη μηνυμάτων χειρίζεται τα εισερχόμενα δεδομένα με ανασφάλεια.
2024-02-10 22:40:18 +00:00
### Παραμόρφωση δεδομένων DOM
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/dom-data-manipulation](https://portswigger.net/web-security/dom-based/dom-data-manipulation)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες στην **παραμόρφωση δεδομένων DOM** προκύπτουν όταν ένα σενάριο εγγράφει **δεδομένα που μπορούν να ελεγχθούν από τον επιτιθέμενο σε ένα πεδίο εντός του DOM** που χρησιμοποιείται στο ορατό UI ή στην πελατική λογική. Αυτή η ευπάθεια μπορεί να εκμεταλλευτεί από έναν επιτιθέμενο για να δημιουργήσει ένα URL που, εάν επισκεφθεί από έναν άλλο χρήστη, μπορεί να αλλάξει την εμφάνιση ή τη συμπεριφορά του πελατικού UI.
2024-02-10 22:40:18 +00:00
Απορροές:
2024-02-06 03:10:27 +00:00
```javascript
scriptElement.src
scriptElement.text
scriptElement.textContent
scriptElement.innerText
someDOMElement.setAttribute()
someDOMElement.search
someDOMElement.text
someDOMElement.textContent
someDOMElement.innerText
someDOMElement.outerText
someDOMElement.value
someDOMElement.name
someDOMElement.target
someDOMElement.method
someDOMElement.type
someDOMElement.backgroundImage
someDOMElement.cssText
someDOMElement.codebase
document.title
document.implementation.createHTMLDocument()
history.pushState()
history.replaceState()
```
2024-02-10 22:40:18 +00:00
### Απορρίπτοντας την Υπηρεσία
2024-02-10 22:40:18 +00:00
Από: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service)
2024-02-10 22:40:18 +00:00
Οι ευπάθειες απόρριψης υπηρεσίας βασισμένες στο DOM συμβαίνουν όταν ένα σενάριο περνάει **δεδομένα που ελέγχονται από τον επιτιθέμενο με ανασφάλεια σε μια προβληματική πλατφόρμα API**. Αυτό περιλαμβάνει API που, όταν κληθούν, μπορούν να οδηγήσουν τον υπολογιστή του χρήστη να καταναλώσει **υπερβολικές ποσότητες CPU ή χώρου δίσκου**. Τέτοιες ευπάθειες μπορούν να έχουν σημαντικές παρενέργειες, όπως ο περιορισμός της λειτουργικότητας του ιστότοπου από τον περιηγητή με την απόρριψη προσπαθειών αποθήκευσης δεδομένων στο `localStorage` ή την τερματισμό απασχολημένων σεναρίων.
2024-02-10 22:40:18 +00:00
Απορροφητές:
2024-02-06 03:10:27 +00:00
```javascript
requestFileSystem()
RegExp()
```
2022-10-13 00:56:34 +00:00
## Dom Clobbering
2022-04-20 17:00:18 +00:00
2023-02-10 15:56:22 +00:00
{% content-ref url="dom-clobbering.md" %}
[dom-clobbering.md](dom-clobbering.md)
{% endcontent-ref %}
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>