53 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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}}