mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-15 01:17:36 +00:00
Translated ['pentesting-web/race-condition.md'] to gr
This commit is contained in:
parent
18896c9644
commit
36a63a1f18
1 changed files with 11 additions and 10 deletions
|
@ -57,7 +57,7 @@
|
|||
|
||||
#### Υπερνίκηση Περιορισμών Ρυθμού ή Πόρων
|
||||
|
||||
Εάν η θέρμανση της σύνδεσης είναι αναποτελεσματική, η πρόκληση καθυστερήσεων περιορισμού ρυθμού ή πόρων στους διακομιστές ιστού σκόπιμα μέσω πλημμύρας ψεύτικων αιτημάτων μπορεί να διευκολύνει την επίθεση μοναδικού πακέτου προκαλώντας μια καθυστέρηση στην πλευρά του διακομιστή που ευνοεί τις race conditions.
|
||||
Εάν η θέρμανση της σύνδεσης είναι αναποτελεσματική, η πρόκληση καθυστερήσεων περιορισμού ρυθμού ή πόρων στους διακομιστές ιστού σκόπιμα μέσω πλημμύρας ψεύτικων αιτημάτων μπορεί να διευκολύνει την επίθεση ενός πακέτου, προκαλώντας μια καθυστέρηση στην πλευρά του διακομιστή που ευνοεί τις race conditions.
|
||||
|
||||
## Παραδείγματα Επιθέσεων
|
||||
|
||||
|
@ -75,7 +75,7 @@ engine.queue(target.req, password, gate='race1')
|
|||
Αν ο ιστότοπος δεν υποστηρίζει HTTP2 (μόνο HTTP1.1) χρησιμοποιήστε `Engine.THREADED` ή `Engine.BURP` αντί για `Engine.BURP2`.
|
||||
{% endhint %}
|
||||
|
||||
* **Tubo Intruder - HTTP2 επίθεση μεμονωμένου πακέτου (Πολλές τελικές διαδρομές)**: Σε περίπτωση που χρειαστεί να στείλετε ένα αίτημα σε 1 τελική διαδρομή και στη συνέχεια πολλαπλά σε άλλες τελικές διαδρομές για να ενεργοποιήσετε το RCE, μπορείτε να αλλάξετε το σενάριο `race-single-packet-attack.py` με κάτι σαν:
|
||||
* **Tubo Intruder - HTTP2 επίθεση μεμονωμένου πακέτου (Πολλές τελικές διευθύνσεις)**: Σε περίπτωση που χρειαστεί να στείλετε ένα αίτημα σε 1 τελική διεύθυνση και στη συνέχεια πολλαπλά σε άλλες τελικές διευθύνσεις για να ενεργοποιήσετε το RCE, μπορείτε να αλλάξετε το σενάριο `race-single-packet-attack.py` με κάτι σαν:
|
||||
```python
|
||||
def queueRequests(target, wordlists):
|
||||
engine = RequestEngine(endpoint=target.endpoint,
|
||||
|
@ -247,14 +247,14 @@ response = requests.get(url, verify=False)
|
|||
Σημειώστε ότι αν και αυτή η βελτίωση καθιστά την επίθεση πιο αξιόπιστη σε RC που απαιτεί εκατοντάδες/χιλιάδες πακέτα να φτάσουν ταυτόχρονα, μπορεί επίσης να έχει κάποιους περιορισμούς λογισμικού. Ορισμένοι δημοφιλείς διακομιστές HTTP όπως οι Apache, Nginx και Go έχουν αυστηρή ρύθμιση `SETTINGS_MAX_CONCURRENT_STREAMS` σε 100, 128 και 250. Ωστόσο, άλλοι όπως οι NodeJS και nghttp2 το έχουν απεριόριστο.\
|
||||
Αυτό σημαίνει βασικά ότι ο Apache θα εξετάσει μόνο 100 HTTP συνδέσεις από μια μοναδική TCP σύνδεση (περιορίζοντας αυτή την επίθεση RC).
|
||||
|
||||
Μπορείτε να βρείτε μερικά παραδείγματα χρησιμοποιώντας αυτή την τεχνική στο αποθετήριο [https://github.com/Ry0taK/first-sequence-sync/tree/main](https://github.com/Ry0taK/first-sequence-sync/tree/main).
|
||||
Μπορείτε να βρείτε μερικά παραδείγματα χρησιμοποιώντας αυτή την τεχνική στο repo [https://github.com/Ry0taK/first-sequence-sync/tree/main](https://github.com/Ry0taK/first-sequence-sync/tree/main).
|
||||
|
||||
## Ακατέργαστο BF
|
||||
|
||||
Πριν από την προηγούμενη έρευνα, αυτά ήταν μερικά payloads που χρησιμοποιήθηκαν και απλώς προσπαθούσαν να στείλουν τα πακέτα όσο το δυνατόν πιο γρήγορα για να προκαλέσουν μια RC.
|
||||
|
||||
* **Επαναλήπτης:** Ελέγξτε τα παραδείγματα από την προηγούμενη ενότητα.
|
||||
* **Εισβολέας**: Στείλτε το **αίτημα** στον **Εισβολέα**, ρυθμίστε τον **αριθμό νημάτων** σε **30** μέσα στο **μενού Επιλογών** και επιλέξτε ως payload **Null payloads** και δημιουργήστε **30.**
|
||||
* **Εισβολέας**: Στείλτε το **αίτημα** στον **Εισβολέα**, ρυθμίστε τον **αριθμό νημάτων** σε **30** μέσα στο **μενού Επιλογών** και, επιλέξτε ως payload **Null payloads** και δημιουργήστε **30.**
|
||||
* **Turbo Intruder**
|
||||
```python
|
||||
def queueRequests(target, wordlists):
|
||||
|
@ -332,21 +332,21 @@ asyncio.run(main())
|
|||
|
||||
### Χρονικά Ευαίσθητες Επιθέσεις
|
||||
|
||||
Η ακρίβεια στο χρονοδιάγραμμα των αιτημάτων μπορεί να αποκαλύψει ευπάθειες, ειδικά όταν χρησιμοποιούνται προβλέψιμες μέθοδοι όπως οι χρονικές σφραγίδες για διακριτικά ασφαλείας. Για παράδειγμα, η δημιουργία διακριτικών επαναφοράς κωδικού πρόσβασης με βάση τις χρονικές σφραγίδες θα μπορούσε να επιτρέψει ταυτόσημα διακριτικά για ταυτόχρονες αιτήσεις.
|
||||
Η ακρίβεια στο χρονοδιάγραμμα των αιτημάτων μπορεί να αποκαλύψει ευπάθειες, ειδικά όταν χρησιμοποιούνται προβλέψιμες μέθοδοι όπως οι χρονικές σφραγίδες για τα διακριτικά ασφαλείας. Για παράδειγμα, η δημιουργία διακριτικών επαναφοράς κωδικού πρόσβασης με βάση τις χρονικές σφραγίδες θα μπορούσε να επιτρέψει ταυτόσημα διακριτικά για ταυτόχρονες αιτήσεις.
|
||||
|
||||
**Για να Εκμεταλλευτείτε:**
|
||||
|
||||
* Χρησιμοποιήστε ακριβή χρονοδιάγραμμα, όπως μια επίθεση με ένα μόνο πακέτο, για να κάνετε ταυτόχρονες αιτήσεις επαναφοράς κωδικού πρόσβασης. Ταυτόσημα διακριτικά υποδηλώνουν μια ευπάθεια.
|
||||
* Χρησιμοποιήστε ακριβή χρονοδιάγραμμα, όπως μια επίθεση με ένα μόνο πακέτο, για να κάνετε ταυτόχρονες αιτήσεις επαναφοράς κωδικού πρόσβασης. Τα ταυτόσημα διακριτικά υποδηλώνουν μια ευπάθεια.
|
||||
|
||||
**Παράδειγμα:**
|
||||
|
||||
* Ζητήστε δύο διακριτικά επαναφοράς κωδικού πρόσβασης ταυτόχρονα και συγκρίνετέ τα. Τα ταυτόσημα διακριτικά υποδηλώνουν ένα σφάλμα στη δημιουργία διακριτικών.
|
||||
* Ζητήστε δύο διακριτικά επαναφοράς κωδικού πρόσβασης ταυτόχρονα και συγκρίνετέ τα. Τα ταυτοποιημένα διακριτικά υποδηλώνουν ένα σφάλμα στη δημιουργία διακριτικών.
|
||||
|
||||
**Δείτε αυτό** [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-exploiting-time-sensitive-vulnerabilities) **για να το δοκιμάσετε.**
|
||||
|
||||
## Μελέτες Περίπτωσης Κρυφών Υποκαταστάσεων
|
||||
|
||||
### Πληρωμή & προσθήκη αντικειμένου
|
||||
### Πληρώστε & προσθέστε ένα αντικείμενο
|
||||
|
||||
Δείτε αυτό το [**PortSwigger Lab**](https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-insufficient-workflow-validation) για να δείτε πώς να **πληρώσετε** σε ένα κατάστημα και να **προσθέσετε ένα επιπλέον** αντικείμενο που **δεν θα χρειαστεί να πληρώσετε γι' αυτό**.
|
||||
|
||||
|
@ -362,9 +362,9 @@ asyncio.run(main())
|
|||
|
||||
### Κρυφές Καταστάσεις Βάσης Δεδομένων / Παράκαμψη Επιβεβαίωσης
|
||||
|
||||
Εάν **χρησιμοποιηθούν 2 διαφορετικές εγγραφές** για να **προσθέσουν** **πληροφορίες** μέσα σε μια **βάση δεδομένων**, υπάρχει μια μικρή χρονική περίοδος όπου **μόνο τα πρώτα δεδομένα έχουν γραφτεί** μέσα στη βάση δεδομένων. Για παράδειγμα, όταν δημιουργείτε έναν χρήστη, το **όνομα χρήστη** και ο **κωδικός πρόσβασης** μπορεί να **γραφούν** και **στη συνέχεια το διακριτικό** για να επιβεβαιωθεί ο νεοδημιουργημένος λογαριασμός γράφεται. Αυτό σημαίνει ότι για μια μικρή χρονική περίοδο το **διακριτικό για την επιβεβαίωση ενός λογαριασμού είναι κενό**.
|
||||
Εάν **χρησιμοποιηθούν 2 διαφορετικές εγγραφές** για να **προσθέσουν** **πληροφορίες** μέσα σε μια **βάση δεδομένων**, υπάρχει μια μικρή χρονική περίοδος όπου **μόνο τα πρώτα δεδομένα έχουν γραφεί** μέσα στη βάση δεδομένων. Για παράδειγμα, όταν δημιουργείτε έναν χρήστη, το **όνομα χρήστη** και ο **κωδικός πρόσβασης** μπορεί να **γραφούν** και **στη συνέχεια το διακριτικό** για να επιβεβαιωθεί ο νεοδημιουργημένος λογαριασμός γράφεται. Αυτό σημαίνει ότι για μια μικρή χρονική περίοδο το **διακριτικό για την επιβεβαίωση ενός λογαριασμού είναι κενό**.
|
||||
|
||||
Επομένως, **η εγγραφή ενός λογαριασμού και η αποστολή αρκετών αιτημάτων με κενό διακριτικό** (`token=` ή `token[]=` ή οποιαδήποτε άλλη παραλλαγή) για να επιβεβαιώσετε τον λογαριασμό αμέσως θα μπορούσε να επιτρέψει την **επιβεβαίωση ενός λογαριασμού** όπου δεν ελέγχετε το email.
|
||||
Επομένως, **η εγγραφή ενός λογαριασμού και η αποστολή αρκετών αιτημάτων με ένα κενό διακριτικό** (`token=` ή `token[]=` ή οποιαδήποτε άλλη παραλλαγή) για να επιβεβαιώσετε τον λογαριασμό αμέσως θα μπορούσε να επιτρέψει την **επιβεβαίωση ενός λογαριασμού** όπου δεν ελέγχετε το email.
|
||||
|
||||
**Δείτε αυτό** [**PortSwigger Lab**](https://portswigger.net/web-security/race-conditions/lab-race-conditions-partial-construction) **για να το δοκιμάσετε.**
|
||||
|
||||
|
@ -402,6 +402,7 @@ session['enforce_mfa'] = True
|
|||
* [https://hackerone.com/reports/55140](https://hackerone.com/reports/55140)
|
||||
* [https://portswigger.net/research/smashing-the-state-machine](https://portswigger.net/research/smashing-the-state-machine)
|
||||
* [https://portswigger.net/web-security/race-conditions](https://portswigger.net/web-security/race-conditions)
|
||||
* [https://flatt.tech/research/posts/beyond-the-limit-expanding-single-packet-race-condition-with-first-sequence-sync/](https://flatt.tech/research/posts/beyond-the-limit-expanding-single-packet-race-condition-with-first-sequence-sync/)
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
|
|
Loading…
Reference in a new issue