mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
44 lines
5.4 KiB
Markdown
44 lines
5.4 KiB
Markdown
# Κατάχρηση του Docker Socket για Υπερβάθμιση Δικαιωμάτων
|
||
|
||
{{#include ../../../banners/hacktricks-training.md}}
|
||
|
||
Υπάρχουν περιπτώσεις όπου έχετε **πρόσβαση στο docker socket** και θέλετε να το χρησιμοποιήσετε για να **υπερβείτε τα δικαιώματα**. Ορισμένες ενέργειες μπορεί να είναι πολύ ύποπτες και ίσως θελήσετε να τις αποφύγετε, οπότε εδώ μπορείτε να βρείτε διάφορες σημαίες που μπορεί να είναι χρήσιμες για την υπέρβαση δικαιωμάτων:
|
||
|
||
### Μέσω mount
|
||
|
||
Μπορείτε να **mount** διάφορα μέρη του **filesystem** σε ένα κοντέινερ που τρέχει ως root και να τα **πρόσβαση**.\
|
||
Μπορείτε επίσης να **καταχραστείτε ένα mount για να υπερβείτε τα δικαιώματα** μέσα στο κοντέινερ.
|
||
|
||
- **`-v /:/host`** -> Mount το filesystem του host στο κοντέινερ ώστε να μπορείτε να **διαβάσετε το filesystem του host.**
|
||
- Αν θέλετε να **νιώσετε ότι είστε στον host** αλλά να είστε στο κοντέινερ, μπορείτε να απενεργοποιήσετε άλλους μηχανισμούς άμυνας χρησιμοποιώντας σημαίες όπως:
|
||
- `--privileged`
|
||
- `--cap-add=ALL`
|
||
- `--security-opt apparmor=unconfined`
|
||
- `--security-opt seccomp=unconfined`
|
||
- `-security-opt label:disable`
|
||
- `--pid=host`
|
||
- `--userns=host`
|
||
- `--uts=host`
|
||
- `--cgroupns=host`
|
||
- **`--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined`** -> Αυτό είναι παρόμοιο με την προηγούμενη μέθοδο, αλλά εδώ **mountάρουμε τη συσκευή δίσκου**. Στη συνέχεια, μέσα στο κοντέινερ εκτελέστε `mount /dev/sda1 /mnt` και μπορείτε να **πρόσβαση** στο **filesystem του host** στο `/mnt`
|
||
- Εκτελέστε `fdisk -l` στον host για να βρείτε τη συσκευή `</dev/sda1>` για να mountάρετε
|
||
- **`-v /tmp:/host`** -> Αν για κάποιο λόγο μπορείτε **μόνο να mountάρετε κάποιον κατάλογο** από τον host και έχετε πρόσβαση μέσα στον host. Mountάρετε το και δημιουργήστε ένα **`/bin/bash`** με **suid** στον mounted κατάλογο ώστε να μπορείτε να **το εκτελέσετε από τον host και να υπερβείτε σε root**.
|
||
|
||
> [!NOTE]
|
||
> Σημειώστε ότι ίσως δεν μπορείτε να mountάρετε τον φάκελο `/tmp`, αλλά μπορείτε να mountάρετε έναν **διαφορετικό εγγράψιμο φάκελο**. Μπορείτε να βρείτε εγγράψιμους καταλόγους χρησιμοποιώντας: `find / -writable -type d 2>/dev/null`
|
||
>
|
||
> **Σημειώστε ότι όχι όλοι οι κατάλογοι σε μια μηχανή linux θα υποστηρίζουν το suid bit!** Για να ελέγξετε ποιες καταλόγοι υποστηρίζουν το suid bit, εκτελέστε `mount | grep -v "nosuid"` Για παράδειγμα, συνήθως οι `/dev/shm`, `/run`, `/proc`, `/sys/fs/cgroup` και `/var/lib/lxcfs` δεν υποστηρίζουν το suid bit.
|
||
>
|
||
> Σημειώστε επίσης ότι αν μπορείτε **να mountάρετε το `/etc`** ή οποιονδήποτε άλλο φάκελο **που περιέχει αρχεία ρυθμίσεων**, μπορείτε να τα αλλάξετε από το docker κοντέινερ ως root προκειμένου να **τα καταχραστείτε στον host** και να υπερβείτε τα δικαιώματα (ίσως τροποποιώντας το `/etc/shadow`)
|
||
|
||
### Διαφυγή από το κοντέινερ
|
||
|
||
- **`--privileged`** -> Με αυτή τη σημαία [αφαιρείτε όλη την απομόνωση από το κοντέινερ](docker-privileged.md#what-affects). Ελέγξτε τεχνικές για [να διαφύγετε από κοντέινερ με προνόμια ως root](docker-breakout-privilege-escalation/index.html#automatic-enumeration-and-escape).
|
||
- **`--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]`** -> Για [να υπερβείτε καταχρώντας ικανότητες](../linux-capabilities.md), **δώστε αυτή την ικανότητα στο κοντέινερ** και απενεργοποιήστε άλλες μεθόδους προστασίας που μπορεί να εμποδίσουν την εκμετάλλευση να λειτουργήσει.
|
||
|
||
### Curl
|
||
|
||
Σε αυτή τη σελίδα έχουμε συζητήσει τρόπους για να υπερβείτε τα δικαιώματα χρησιμοποιώντας σημαίες docker, μπορείτε να βρείτε **τρόπους να καταχραστείτε αυτές τις μεθόδους χρησιμοποιώντας την εντολή curl** στη σελίδα:
|
||
|
||
{{#include ../../../banners/hacktricks-training.md}}
|