mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 22:20:43 +00:00
Translated ['mobile-pentesting/ios-pentesting/ios-universal-links.md'] t
This commit is contained in:
parent
185f9d5406
commit
f8e382679a
1 changed files with 23 additions and 45 deletions
|
@ -1,30 +1,28 @@
|
|||
# iOS Universal Links
|
||||
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Ειδικός Ερυθρός Συνεργάτης AWS του HackTricks)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
|
||||
Άλλοι τρόποι υποστήριξης του HackTricks:
|
||||
|
||||
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||||
* Αν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||||
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Εγγραφείτε στην** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
||||
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα τηλεγραφήματος**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια στο GitHub.
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
## Εισαγωγή
|
||||
|
||||
Οι καθολικοί συνδέσμοι προσφέρουν μια **απρόσκοπτη ανακατεύθυνση** στους χρήστες, ανοίγοντας απευθείας περιεχόμενο στην εφαρμογή, παρακάμπτοντας την ανακατεύθυνση στο Safari. Αυτοί οι συνδέσμοι είναι **μοναδικοί** και ασφαλείς, καθώς δεν μπορούν να διεκδικηθούν από άλλες εφαρμογές. Αυτό εξασφαλίζεται με τη φιλοξενία ενός αρχείου JSON `apple-app-site-association` στον κατάλογο ρίζας του ιστότοπου, δημιουργώντας ένα επαληθέύσιμο σύνδεσμο μεταξύ του ιστότοπου και της εφαρμογής. Στις περιπτώσεις όπου η εφαρμογή δεν είναι εγκατεστημένη, το Safari θα αναλάβει και θα κατευθύνει τον χρήστη στην ιστοσελίδα, διατηρώντας την παρουσία της εφαρμογής.
|
||||
Οι Universal σύνδεσμοι προσφέρουν μια **απρόσκοπτη ανακατεύθυνση** στους χρήστες με το άνοιγμα περιεχομένου απευθείας στην εφαρμογή, παρακάμπτοντας την ανάγκη για ανακατεύθυνση στο Safari. Αυτοί οι σύνδεσμοι είναι **μοναδικοί** και ασφαλείς, καθώς δεν μπορούν να διεκδικηθούν από άλλες εφαρμογές. Αυτό εξασφαλίζεται με τον φιλοξενία ενός αρχείου JSON `apple-app-site-association` στον ριζικό κατάλογο της ιστοσελίδας, καθιστώντας επαληθέψιμο τον σύνδεσμο μεταξύ της ιστοσελίδας και της εφαρμογής. Σε περιπτώσεις όπου η εφαρμογή δεν είναι εγκατεστημένη, το Safari θα αναλάβει και θα κατευθύνει τον χρήστη στην ιστοσελίδα, διατηρώντας την παρουσία της εφαρμογής.
|
||||
|
||||
Για τους ελεγκτές διείσδυσης, το αρχείο `apple-app-site-association` είναι ιδιαίτερα ενδιαφέρον, καθώς μπορεί να αποκαλύψει **ευαίσθητα μονοπάτια**, πιθανώς συμπεριλαμβανομένων εκείνων που σχετίζονται με μη απελευθερωμένα χαρακτηριστικά.
|
||||
Για τους ελεγκτές διείσδυσης, το αρχείο `apple-app-site-association` είναι ιδιαίτερα ενδιαφέρον καθώς μπορεί να αποκαλύψει **ευαίσθητα μονοπάτια**, πιθανώς σχετιζόμενα με μη απελευθερωμένα χαρακτηριστικά.
|
||||
|
||||
### **Ανάλυση της εξουσιοδότησης των συνδεδεμένων τομέων**
|
||||
### **Ανάλυση της Εξουσιοδότησης Συσχετισμένων Τομέων**
|
||||
|
||||
Οι προγραμματιστές ενεργοποιούν τους καθολικούς συνδέσμους διαμορφώνοντας τους **συνδεδεμένους τομείς** στην καρτέλα Ικανοτήτων του Xcode ή επιθεωρώντας το αρχείο `.entitlements`. Κάθε τομέας προηγείται από το `applinks:`. Για παράδειγμα, η διαμόρφωση του Telegram μπορεί να εμφανίζεται ως εξής:
|
||||
Οι προγραμματιστές ενεργοποιούν τους Universal Συνδέσμους διαμορφώνοντας τους **Συσχετισμένους Τομείς** στο Xcode's Capabilities tab ή επιθεωρώντας το αρχείο `.entitlements`. Κάθε τομέας προσθέτεται με πρόθεμα `applinks:`. Για παράδειγμα, η διαμόρφωση του Telegram μπορεί να εμφανίζεται ως εξής:
|
||||
```xml
|
||||
<key>com.apple.developer.associated-domains</key>
|
||||
<array>
|
||||
|
@ -32,21 +30,21 @@
|
|||
<string>applinks:t.me</string>
|
||||
</array>
|
||||
```
|
||||
Για περισσότερες λεπτομέρειες, ανατρέξτε στην [αρχειοθετημένη τεκμηρίωση του Apple Developer](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
|
||||
Για πιο ολοκληρωμένες εισαγωγές, ανατρέξτε στην [αρχειοθετημένη τεκμηρίωση του Apple Developer](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
|
||||
|
||||
Εάν εργάζεστε με μια μεταγλωττισμένη εφαρμογή, οι εξουσιοδοτήσεις μπορούν να εξαχθούν όπως περιγράφεται στο [ακόλουθο εγχειρίδιο](extracting-entitlements-from-compiled-application.md).
|
||||
Εάν εργάζεστε με μια μεταγλωττισμένη εφαρμογή, τα δικαιώματα μπορούν να εξαχθούν όπως περιγράφεται στο [συγκεκριμένο οδηγό](extracting-entitlements-from-compiled-application.md).
|
||||
|
||||
### **Ανάκτηση του αρχείου Apple App Site Association**
|
||||
### **Ανάκτηση του Αρχείου Apple App Site Association**
|
||||
|
||||
Το αρχείο `apple-app-site-association` πρέπει να ανακτηθεί από τον διακομιστή χρησιμοποιώντας τους τομείς που καθορίζονται στις εξουσιοδοτήσεις. Βεβαιωθείτε ότι το αρχείο είναι προσβάσιμο μέσω HTTPS απευθείας στο `https://<domain>/apple-app-site-association`. Εργαλεία όπως το [Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/) μπορούν να βοηθήσουν σε αυτήν τη διαδικασία.
|
||||
Το αρχείο `apple-app-site-association` πρέπει να ανακτηθεί από τον διακομιστή χρησιμοποιώντας τους τομείς που έχουν καθοριστεί στα δικαιώματα. Βεβαιωθείτε ότι το αρχείο είναι προσβάσιμο μέσω HTTPS απευθείας στο `https://<domain>/apple-app-site-association`. Εργαλεία όπως το [Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/) μπορούν να βοηθήσουν σε αυτήν τη διαδικασία.
|
||||
|
||||
### **Χειρισμός των Universal Links στην εφαρμογή**
|
||||
### **Χειρισμός των Καθολικών Συνδέσεων στην Εφαρμογή**
|
||||
|
||||
Η εφαρμογή πρέπει να υλοποιήσει συγκεκριμένες μεθόδους για να χειριστεί σωστά τα universal links. Η κύρια μέθοδος που πρέπει να αναζητηθεί είναι η [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Είναι κρίσιμο να εξασφαλιστεί ότι το σχήμα των χειριζόμενων URL είναι HTTP ή HTTPS, καθώς άλλα δεν θα υποστηρίζονται.
|
||||
Η εφαρμογή πρέπει να υλοποιήσει συγκεκριμένες μεθόδους για τη σωστή χειρισμό των καθολικών συνδέσεων. Η κύρια μέθοδος που πρέπει να αναζητηθεί είναι η [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Είναι κρίσιμο το σχήμα των διευθύνσεων URL που χειρίζεται να είναι HTTP ή HTTPS, διότι άλλα δεν θα υποστηριχθούν.
|
||||
|
||||
#### **Επικύρωση της μεθόδου χειρισμού των δεδομένων**
|
||||
#### **Επικύρωση της Μεθόδου Χειριστή Δεδομένων**
|
||||
|
||||
Όταν ένα universal link ανοίγει μια εφαρμογή, ένα αντικείμενο `NSUserActivity` περνά στην εφαρμογή με το URL. Πριν επεξεργαστείτε αυτό το URL, είναι σημαντικό να το επικυρώσετε και να το απολυμαίνετε για να αποτρέψετε κινδύνους ασφαλείας. Παρακάτω παρουσιάζεται ένα παράδειγμα σε Swift που επεξηγεί τη διαδικασία:
|
||||
Όταν μια καθολική σύνδεση ανοίγει μια εφαρμογή, ένα αντικείμενο `NSUserActivity` περνά στην εφαρμογή με το URL. Πριν επεξεργαστείτε αυτό το URL, είναι ουσιώδες να το επικυρώσετε και να το απολυμάνετε για να αποτρέψετε τους κινδύνους ασφαλείας. Εδώ υπάρχει ένα παράδειγμα σε Swift που δείχνει τη διαδικασία:
|
||||
```swift
|
||||
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
|
||||
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
|
||||
|
@ -58,16 +56,7 @@ application.open(url, options: [:], completionHandler: nil)
|
|||
return true
|
||||
}
|
||||
```
|
||||
Οι διευθύνσεις URL πρέπει να αναλύονται και να επικυρώνονται προσεκτικά, ειδικά αν περιλαμβάνουν παραμέτρους, για να προστατευθούμε από πιθανές παραποιήσεις ή μη έγκυρα δεδομένα. Η διεπαφή `NSURLComponents` είναι χρήσιμη για αυτόν τον σκοπό, όπως φαίνεται παρακάτω:
|
||||
|
||||
```objective-c
|
||||
NSURLComponents *components = [NSURLComponents componentsWithString:@"https://example.com/path?param1=value1¶m2=value2"];
|
||||
if (components) {
|
||||
// Perform validation and further processing
|
||||
} else {
|
||||
// Handle malformed URL
|
||||
}
|
||||
```
|
||||
URLs πρέπει να αναλύονται και να επικυρώνονται προσεκτικά, ειδικά αν περιέχουν παραμέτρους, για να προστατευτούμε από πιθανή πλαστογράφηση ή μη έγκυρα δεδομένα. Το API `NSURLComponents` είναι χρήσιμο για αυτόν τον σκοπό, όπως φαίνεται παρακάτω:
|
||||
```swift
|
||||
func application(_ application: UIApplication,
|
||||
continue userActivity: NSUserActivity,
|
||||
|
@ -93,22 +82,11 @@ return false
|
|||
}
|
||||
}
|
||||
```
|
||||
Μέσω **συνεπούς ρύθμισης και επαλήθευσης**, οι προγραμματιστές μπορούν να διασφαλίσουν ότι οι καθολικοί σύνδεσμοι βελτιώνουν την εμπειρία του χρήστη διατηρώντας ταυτόχρονα τα πρότυπα ασφάλειας και απορρήτου.
|
||||
Μέσω **συστηματικής ρύθμισης και επαλήθευσης**, οι προγραμματιστές μπορούν να εξασφαλίσουν ότι οι καθολικοί σύνδεσμοι βελτιώνουν την εμπειρία χρήστη διατηρώντας τα πρότυπα ασφάλειας και απορρήτου.
|
||||
|
||||
## Εργαλεία
|
||||
* [GetUniversal.link](https://getuniversal.link/): Βοηθά στην απλοποίηση του τεστ και της διαχείρισης των Καθολικών Συνδέσμων και του αρχείου AASA της εφαρμογής σας. Απλά εισαγάγετε τον τομέα σας για να επαληθεύσετε την ακεραιότητα του αρχείου AASA ή χρησιμοποιήστε το προσαρμοσμένο πίνακα ελέγχου για να δοκιμάσετε εύκολα τη συμπεριφορά του συνδέσμου. Αυτό το εργαλείο σάς βοηθά επίσης να προσδιορίσετε πότε θα ευρεθεί το επόμενο αρχείο AASA από την Apple.
|
||||
|
||||
## Αναφορές
|
||||
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis)
|
||||
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
|
||||
|
||||
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
|
||||
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
||||
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Reference in a new issue