# Παραδείγματα Σύνδεσης Πισίνας {{#include ../../banners/hacktricks-training.md}} ## Sekaictf2022 - safelist Στην πρόκληση [**Sekaictf2022 - safelist**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/safelist/solution), [**@Strellic\_**](https://twitter.com/Strellic_) δίνει ένα παράδειγμα για το πώς να χρησιμοποιήσει μια **παραλλαγή** της τεχνικής **Connection Pool** για να εκτελέσει ένα **XS-Leak**. Σε αυτή την πρόκληση, ο στόχος είναι να εξάγουμε μια σημαία που θα εμφανιστεί στη διαδικτυακή συνεδρία του bot μέσα σε μια ανάρτηση. Αυτά είναι τα στοιχεία που έχει ο επιτιθέμενος: - Το **bot** θα **επισκεφθεί** μια **διεύθυνση URL** που δίνεται από τον επιτιθέμενο - Ο επιτιθέμενος μπορεί να **εισάγει HTML** στη σελίδα (αλλά όχι JS, χρησιμοποιείται το dompurify) εκμεταλλευόμενος ένα **CSRF** κάνοντάς το **bot να δημιουργήσει μια ανάρτηση** με αυτή την HTML. - Ο επιτιθέμενος μπορεί να εκμεταλλευτεί ένα CSRF για να κάνει το **bot** να **διαγράψει** την **πρώτη** **ανάρτηση** μέσα στο διαδίκτυο. - Επειδή οι **αναρτήσεις** είναι ταξινομημένες **αλφαβητικά**, όταν η **πρώτη ανάρτηση διαγραφεί**, αν το **HTML** περιεχόμενο του επιτιθέμενου είναι **φορτωμένο** σημαίνει ότι ήταν **αλφαβητικά πριν από τη σημαία**. Επομένως, για να κλέψει τη σημαία, η λύση που προτείνει ο @Strellyc\_ είναι να, **για κάθε χαρακτήρα που θα δοκιμαστεί** κάνει το bot: - Δημιουργήσει μια **νέα ανάρτηση** που **ξεκινά** με το γνωστό μέρος της **σημαίας** και αρκετές **φορτώσεις** **εικόνας**. - **Διαγράψει** την **ανάρτηση** στη θέση **0**. - Κλείσει 255 υποδοχές. - Φορτώσει τη σελίδα με τις αναρτήσεις - Εκτελέσει 5 τυχαία αιτήματα σε μια τοποθεσία (example.com σε αυτή την περίπτωση) και μετρήσει το χρόνο που χρειάζεται. > [!WARNING] > Αν η **διαγραμμένη** ανάρτηση ήταν η **σημαία**, αυτό σημαίνει ότι όλες οι **εικόνες** **εισαγμένες** στην HTML θα **ανταγωνίζονται** με τα **5 τυχαία αιτήματα** για αυτή την **μη αποκλεισμένη** υποδοχή. Πράγμα που σημαίνει ότι ο μετρημένος χρόνος θα είναι μεγαλύτερος από το άλλο σενάριο. > > Αν η **διαγραμμένη** ανάρτηση ήταν η **HTML**, τα **5 τυχαία αιτήματα** θα είναι **ταχύτερα** επειδή δεν χρειάζεται να ανταγωνίζονται για αυτή την υποδοχή με την εισαγμένη HTML. ### Εκμετάλλευση 1 Αυτό είναι ο κώδικας εκμετάλλευσης, που έχει ληφθεί από [https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html](https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html): ```html
``` ### Εκμετάλλευση 2 Ίδια τακτική αλλά διαφορετικός κώδικας από [https://blog.huli.tw/2022/10/05/en/sekaictf2022-safelist-xsleak/](https://blog.huli.tw/2022/10/05/en/sekaictf2022-safelist-xsleak/) ```html ``` ## DiceCTF 2022 - carrot Σε αυτή την περίπτωση, το πρώτο βήμα της εκμετάλλευσης ήταν να καταχραστεί ένα CSRF για να τροποποιηθεί η σελίδα όπου περιέχεται η σημαία έτσι ώστε να έχει **πολύ περισσότερα περιεχόμενα** (και επομένως η φόρτωσή της να διαρκεί περισσότερο χρόνο), και στη συνέχεια **να καταχραστεί η πισίνα συνδέσεων για να μετρηθεί ο χρόνος που απαιτείται για να αποκτηθεί πρόσβαση στη σελίδα** που θα μπορούσε ενδεχομένως να έχει τη σημαία. Στην εκμετάλλευση μπορείτε να δείτε: - Κατάχρηση CSRF - Κατάληψη όλων των υποδοχών εκτός από 1 - Καλιμπράρισμα της απόκρισης - Ξεκίνημα brute forcing με την πρόσβαση στη δυνητική σελίδα με τη σημαία - Η δυνητική σελίδα θα προσπελαστεί και αμέσως μια URL ελεγχόμενη από τον επιτιθέμενο θα προσπελαστεί επίσης για να ελεγχθεί πόσο χρόνο χρειάζονται και οι δύο αιτήσεις. ```htmlStep 1: CSRF the admin user, to set a super long title for the flag note (LAX + POST form only possible for 2 minutes after cookies is created)
Step 2: XS-Search with connection-pool timing leak, we have to use window.open (LAX cookie)