<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να**κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα 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) αποθετήρια του github.
Οι συνδέσεις WebSocket δημιουργούνται μέσω μιας αρχικής χειραψίας **HTTP** και σχεδιάστηκαν να είναι **μακροβιότερες**, επιτρέποντας την αμφίδρομη ανταλλαγή μηνυμάτων ανά πάσα στιγμή χωρίς την ανάγκη για ένα συστηματικό σύστημα. Αυτό καθιστά τα WebSockets ιδιαίτερα ευνοϊκά για εφαρμογές που απαιτούν **χαμηλή καθυστέρηση ή επικοινωνία που προκαλείται από τον διακομιστή**, όπως ζωντανά ροές χρηματοοικονομικών δεδομένων.
Μια λεπτομερής εξήγηση για τη δημιουργία συνδέσεων WebSocket μπορεί να βρεθεί [**εδώ**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc). Συνοψίζοντας, οι συνδέσεις WebSocket συνήθως εκκινούν μέσω JavaScript που εκτελείται στην πλευρά του πελάτη, όπως φαίνεται παρακάτω:
Κατά τη διάρκεια της δημιουργίας της σύνδεσης, πραγματοποιείται μια χειραψία μεταξύ του προγράμματος περιήγησης και του διακομιστή μέσω του πρωτοκόλλου HTTP. Η διαδικασία της χειραψίας περιλαμβάνει την αποστολή ενός αιτήματος από τον προγραμματιστή περιήγησης και την απόκριση του διακομιστή, όπως φαίνεται στα παρακάτω παραδείγματα:
-Οι κεφαλίδες `Connection` και `Upgrade` σηματοδοτούν την έναρξη μιας αρχικής συνεδρίας WebSocket.
-Η κεφαλίδα `Sec-WebSocket-Version` υποδεικνύει την επιθυμητή έκδοση πρωτοκόλλου WebSocket, συνήθως `13`.
- Ένας τυχαίος κωδικοποιημένος σε Base64 τιμή αποστέλλεται στην κεφαλίδα `Sec-WebSocket-Key`, εξασφαλίζοντας ότι κάθε αρχική συνεδρία είναι μοναδική, προκειμένου να αποφευχθούν προβλήματα με ενδιάμεσους διακομιστές προσωρινής αποθήκευσης. Αυτή η τιμή δεν χρησιμοποιείται για ταυτοποίηση, αλλά γιανα επιβεβαιωθεί ότι η απόκριση δεν παράγεται από έναν κακοδιαμορφωμένο διακομιστή ή προσωρινή αποθήκευση.
-Η κεφαλίδα `Sec-WebSocket-Accept` στην απόκριση του διακομιστή είναι ένα hash της `Sec-WebSocket-Key`, επαληθεύοντας την πρόθεση του διακομιστή να ανοίξει μια σύνδεση WebSocket.
Αυτά τα χαρακτηριστικά εξασφαλίζουν ότι η διαδικασία της αρχικής συνεδρίας είναι ασφαλής και αξιόπιστη, ανοίγοντας τον δρόμο για αποτελεσματική επικοινωνία πραγματικού χρόνου.
Εάν διαπιστώσετε ότι οι πελάτες είναι συνδεδεμένοι σε ένα **HTTP websocket** από το τρέχον τοπικό δίκτυο, μπορείτε να δοκιμάσετε μια [επίθεση ARP Spoofing](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) γιανα πραγματοποιήσετε μια επίθεση MitM μεταξύ του πελάτη και του διακομιστή.\
Αφού ο πελάτης προσπαθήσει να συνδεθεί, μπορείτε να χρησιμοποιήσετε:
Μπορείτε να χρησιμοποιήσετε το **εργαλείο** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **γιανα ανακαλύψετε, να εντοπίσετε και να αναζητήσετε γνωστές****ευπάθειες** σε websockets αυτόματα.
*Το**Burp Suite** υποστηρίζει την MitM επικοινωνία websockets με πολύ παρόμοιο τρόπο με αυτόν που χρησιμοποιεί για την κανονική επικοινωνία HTTP.
*Η επέκταση [**socketsleuth**](https://github.com/snyk/socketsleuth) του Burp Suite θα σας επιτρέψει να διαχειριστείτε καλύτερα τις επικοινωνίες Websocket στο Burp, παίρνοντας το **ιστορικό**, ορίζοντας κανόνες **ανάκλησης**, χρησιμοποιώντας κανόνες **αντιστοίχισης και αντικατάστασης**, χρησιμοποιώντας το **Intruder** και το **AutoRepeater**.
*Το [**WSSiP**](https://github.com/nccgroup/wssip)**:** Συντομογραφία για "**WebSocket/Socket.io Proxy**", αυτό το εργαλείο, γραμμένο σε Node.js, παρέχει μια διεπαφή χρήστη γιανα**καταγράφει, παρεμβάλλει, να στέλνει προσαρμοσμένα** μηνύματα και να προβάλλει όλες τις επικοινωνίες WebSocket και Socket.IO μεταξύ του πελάτη και του διακομιστή.
*Το [**wsrepl**](https://github.com/doyensec/wsrepl) είναι ένα **διαδραστικό websocket REPL** που έχει σχεδιαστεί ειδικά για τον έλεγχο διείσδυσης. Παρέχει μια διεπαφή για την παρατήρηση **εισερχόμενων μηνυμάτων websocket και την αποστολή νέων**, με ένα εύκολο στη χρήση πλαίσιο για την **αυτοματοποίηση** αυτής της επικοινωνίας.
*Το [**https://websocketking.com/**](https://websocketking.com/) είναι ένα **web για επικοινωνία** με άλλα ιστότοπα χρησιμοποιώντας **websockets**.
*Το [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) μεταξύ άλλων τύπων επικοινωνίας/πρωτοκόλλων, παρέχει ένα **web για επικοινωνία** με άλλα ιστότοπα χρησιμοποιώντας **websockets**.
Στο [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) έχετε έναν κώδικα γιανα ξεκινήσετε έναν ιστότοπο χρησιμοποιώντας websockets και σε [**αυτήν την ανάρτηση**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) μπορείτε να βρείτε μια εξήγηση.
Η**Cross-site WebSocket hijacking**, επίσης γνωστή ως **cross-origin WebSocket hijacking**, αναγνωρίζεται ως ένα ειδικό περιστατικό της **[Cross-Site Request Forgery (CSRF)](csrf-cross-site-request-forgery.md)** που επηρεάζει τις αρχικές συνδέσεις WebSocket. Αυτή η ευπάθεια προκύπτει όταν οι αρχικές συνδέσεις WebSocket επαληθεύονται αποκλειστικά μέσω **HTTP cookies** χωρίς **CSRF tokens** ή παρόμοια μέτρα ασφαλείας.
Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν αυτό δημιουργώντας μια **κακόβουλη ιστοσελίδα** που ξεκινά μια συνδεση WebSocket από απόσταση σε μια ευπαθή εφαρμογή. Ως εκ τούτου, αυτή η σύνδεση θεωρείται μέρος της συνεδρίας του θύματος με την εφαρμογή, εκμεταλλευόμενη την έλλειψη προστασίας CSRF στον μηχανισμό διαχείρισης της συνεδρίας.
Σημειώστε ότι κατά την **καθιέρωση** μιας **σύνδεσης websocket** το **cookie** αποστέλλεται στον διακομιστή. Ο διακομιστής μπορεί να το χρησιμοποιεί γιανα**συσχετίσει** κάθε **συγκεκριμένο****χρήστη** με την **συνεδρία του websocket βασισμένη στο απεσταλμένο cookie**.
Έπειτα, ανγια**παράδειγμα**ο**διακομιστής websocket** επιστρέφει το ιστορικό της συνομιλίας ενός χρήστη αν σταλεί ένα μήνυμα με το "**READY**", τότε ένα **απλό XSS** που θεσπίζει τη σύνδεση (το **cookie** θα αποσταλεί **αυτόματα**γιανα εξουσιοδοτήσει το θύμα) αποστέλλοντας το "**READY**" θα μπορεί να**ανακτήσει** το ιστορικό της **συνομιλίας**.
Σε αυτή την ανάρτηση ιστολογίου [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/), ο επιτιθέμενος κατάφερε να**εκτελέσει αυθαίρετο Javascript σε ένα subdomain** του τομέα όπου πραγματοποιούνταν η επικοινωνία του web socket. Επειδή ήταν ένα **subdomain**, το **cookie** ήταν **αποστέλλεται**, και επειδή το **Websocket δεν ελέγχει σωστά την προέλευση (Origin)**, ήταν δυνατό να επικοινωνήσει μαζί του και να**κλέψει τα αναγνωριστικά (tokens) από αυτό**.
Αντιγράψτε την ιστοσελίδα εφαρμογής που θέλετε να παραπλανήσετε (τα αρχεία .html για παράδειγμα) και μέσα στο script όπου πραγματοποιείται η επικοινωνία του web socket, προσθέστε αυτόν τον κώδικα:
Τώρα κατεβάστε το αρχείο `wsHook.js` από [https://github.com/skepticfx/wshook](https://github.com/skepticfx/wshook) και **αποθηκεύστε το μέσα στον φάκελο με τα αρχεία του ιστότοπου**.\
Αποκαλύπτοντας την ιστοσελίδα και κάνοντας έναν χρήστη να συνδεθεί σε αυτήν, θα μπορείτε να κλέψετε τα μηνύματα που αποστέλλονται και λαμβάνονται μέσω του websocket:
Καθώς τα Web Sockets είναι ένας μηχανισμός για**αποστολή δεδομένων προς τον διακομιστή και την πλευρά του πελάτη**, ανάλογα με τον τρόπο που ο διακομιστής και ο πελάτης χειρίζονται τις πληροφορίες, **τα Web Sockets μπορούν να χρησιμοποιηθούν για την εκμετάλλευση πολλών άλλων ευπαθειών όπως XSS, SQLi ή οποιαδήποτε άλλη κοινή ευπάθεια του web χρησιμοποιώντας εισαγωγή ενός χρήστη από ένα WebSocket**.
Αυτή η ευπάθεια μπορεί να σας επιτρέψει να**παρακάμψετε τους περιορισμούς αντίστροφων διαμεσολαβητών** κάνοντας τους να πιστέψουν ότι έγινε μια **επικοινωνία WebSocket** (ακόμα κι αν δεν είναι αληθές). Αυτό μπορεί να επιτρέψει σε έναν επιτιθέμενο να**έχει πρόσβαση σε κρυφούς σημείους πρόσβασης**. Για περισσότερες πληροφορίες, ελέγξτε την ακόλουθη σελίδα:
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
*Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να**κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετάσχετε στην** 💬 [**ομάδα 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) αποθετήρια του github.