mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
53 lines
7.3 KiB
Markdown
53 lines
7.3 KiB
Markdown
# macOS Office Sandbox Bypasses
|
||
|
||
{{#include ../../../../../banners/hacktricks-training.md}}
|
||
|
||
### Παράκαμψη Sandbox του Word μέσω Launch Agents
|
||
|
||
Η εφαρμογή χρησιμοποιεί ένα **προσαρμοσμένο Sandbox** χρησιμοποιώντας την εξουσιοδότηση **`com.apple.security.temporary-exception.sbpl`** και αυτό το προσαρμοσμένο sandbox επιτρέπει τη γραφή αρχείων οπουδήποτε, αρκεί το όνομα του αρχείου να ξεκινά με `~$`: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))`
|
||
|
||
Επομένως, η παράκαμψη ήταν τόσο εύκολη όσο **η γραφή ενός `plist`** LaunchAgent στο `~/Library/LaunchAgents/~$escape.plist`.
|
||
|
||
Δείτε την [**αρχική αναφορά εδώ**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/).
|
||
|
||
### Παράκαμψη Sandbox του Word μέσω Login Items και zip
|
||
|
||
Θυμηθείτε ότι από την πρώτη παράκαμψη, το Word μπορεί να γράψει αυθαίρετα αρχεία των οποίων το όνομα ξεκινά με `~$`, αν και μετά την επιδιόρθωση της προηγούμενης ευπάθειας δεν ήταν δυνατή η γραφή στο `/Library/Application Scripts` ή στο `/Library/LaunchAgents`.
|
||
|
||
Ανακαλύφθηκε ότι από μέσα στο sandbox είναι δυνατό να δημιουργηθεί ένα **Login Item** (εφαρμογές που θα εκτελούνται όταν ο χρήστης συνδέεται). Ωστόσο, αυτές οι εφαρμογές **δεν θα εκτελούνται εκτός αν** είναι **notarized** και **δεν είναι δυνατή η προσθήκη args** (οπότε δεν μπορείτε απλά να εκτελέσετε ένα reverse shell χρησιμοποιώντας **`bash`**).
|
||
|
||
Από την προηγούμενη παράκαμψη Sandbox, η Microsoft απενεργοποίησε την επιλογή να γράφει αρχεία στο `~/Library/LaunchAgents`. Ωστόσο, ανακαλύφθηκε ότι αν βάλετε ένα **zip αρχείο ως Login Item**, το `Archive Utility` θα **αποσυμπιέσει** απλώς το αρχείο στην τρέχουσα τοποθεσία του. Έτσι, επειδή από προεπιλογή ο φάκελος `LaunchAgents` από το `~/Library` δεν δημιουργείται, ήταν δυνατό να **zip ένα plist στο `LaunchAgents/~$escape.plist`** και να **τοποθετήσετε** το zip αρχείο στο **`~/Library`**, έτσι ώστε όταν αποσυμπιεστεί να φτάσει στον προορισμό επιμονής.
|
||
|
||
Δείτε την [**αρχική αναφορά εδώ**](https://objective-see.org/blog/blog_0x4B.html).
|
||
|
||
### Παράκαμψη Sandbox του Word μέσω Login Items και .zshenv
|
||
|
||
(Θυμηθείτε ότι από την πρώτη παράκαμψη, το Word μπορεί να γράψει αυθαίρετα αρχεία των οποίων το όνομα ξεκινά με `~$`).
|
||
|
||
Ωστόσο, η προηγούμενη τεχνική είχε έναν περιορισμό, αν ο φάκελος **`~/Library/LaunchAgents`** υπάρχει επειδή κάποιο άλλο λογισμικό τον δημιούργησε, θα αποτύχει. Έτσι, ανακαλύφθηκε μια διαφορετική αλυσίδα Login Items για αυτό.
|
||
|
||
Ένας επιτιθέμενος θα μπορούσε να δημιουργήσει τα αρχεία **`.bash_profile`** και **`.zshenv`** με το payload για εκτέλεση και στη συνέχεια να τα zip και **να γράψει το zip στο φάκελο του θύματος**: **`~/~$escape.zip`**.
|
||
|
||
Στη συνέχεια, προσθέστε το zip αρχείο στα **Login Items** και στη συνέχεια την εφαρμογή **`Terminal`**. Όταν ο χρήστης ξανασυνδεθεί, το zip αρχείο θα αποσυμπιεστεί στο φάκελο του χρήστη, αντικαθιστώντας **`.bash_profile`** και **`.zshenv`** και επομένως, το τερματικό θα εκτελέσει ένα από αυτά τα αρχεία (ανάλογα με το αν χρησιμοποιείται bash ή zsh).
|
||
|
||
Δείτε την [**αρχική αναφορά εδώ**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c).
|
||
|
||
### Παράκαμψη Sandbox του Word με Open και env μεταβλητές
|
||
|
||
Από τις διαδικασίες που είναι σε sandbox είναι ακόμα δυνατό να προσκαλέσετε άλλες διαδικασίες χρησιμοποιώντας το **`open`** utility. Επιπλέον, αυτές οι διαδικασίες θα εκτελούνται **μέσα στο δικό τους sandbox**.
|
||
|
||
Ανακαλύφθηκε ότι το open utility έχει την επιλογή **`--env`** για να εκτελεί μια εφαρμογή με **συγκεκριμένες env** μεταβλητές. Επομένως, ήταν δυνατό να δημιουργηθεί το **`.zshenv` αρχείο** μέσα σε έναν φάκελο **μέσα** στο **sandbox** και να χρησιμοποιηθεί το `open` με `--env` ρυθμίζοντας τη **μεταβλητή `HOME`** σε αυτόν τον φάκελο ανοίγοντας την εφαρμογή `Terminal`, η οποία θα εκτελέσει το αρχείο `.zshenv` (για κάποιο λόγο ήταν επίσης απαραίτητο να ρυθμιστεί η μεταβλητή `__OSINSTALL_ENVIROMENT`).
|
||
|
||
Δείτε την [**αρχική αναφορά εδώ**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/).
|
||
|
||
### Παράκαμψη Sandbox του Word με Open και stdin
|
||
|
||
Το **`open`** utility υποστήριξε επίσης την παράμετρο **`--stdin`** (και μετά την προηγούμενη παράκαμψη δεν ήταν πλέον δυνατή η χρήση του `--env`).
|
||
|
||
Το θέμα είναι ότι ακόμη και αν το **`python`** ήταν υπογεγραμμένο από την Apple, **δεν θα εκτελέσει** ένα σενάριο με το **`quarantine`** χαρακτηριστικό. Ωστόσο, ήταν δυνατό να του περάσετε ένα σενάριο από stdin, έτσι ώστε να μην ελέγξει αν ήταν σε καραντίνα ή όχι: 
|
||
|
||
1. Ρίξτε ένα **`~$exploit.py`** αρχείο με αυθαίρετες εντολές Python.
|
||
2. Εκτελέστε _open_ **`–stdin='~$exploit.py' -a Python`**, το οποίο εκτελεί την εφαρμογή Python με το ρίχτηκε αρχείο μας να χρησιμεύει ως τυπική είσοδος. Η Python εκτελεί ευτυχώς τον κώδικά μας, και καθώς είναι μια παιδική διαδικασία του _launchd_, δεν υπόκειται στους κανόνες sandbox του Word.
|
||
|
||
{{#include ../../../../../banners/hacktricks-training.md}}
|