iOS Universal Links

Reading time: 4 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Вступ

Універсальні посилання пропонують безшовний редирект для користувачів, безпосередньо відкриваючи контент в додатку, обходячи необхідність редиректу в Safari. Ці посилання є унікальними та безпечними, оскільки їх не можуть вимагати інші додатки. Це забезпечується розміщенням файлу apple-app-site-association у кореневому каталозі вебсайту, встановлюючи перевіряємий зв'язок між вебсайтом та додатком. У випадках, коли додаток не встановлено, Safari візьме на себе управління і перенаправить користувача на вебсторінку, зберігаючи присутність додатку.

Для тестувальників на проникнення файл apple-app-site-association є особливо цікавим, оскільки він може розкрити чутливі шляхи, потенційно включаючи ті, що стосуються не випущених функцій.

Аналіз прав на асоційовані домени

Розробники активують Універсальні посилання, налаштовуючи Асоційовані домени у вкладці можливостей Xcode або перевіряючи файл .entitlements. Кожен домен має префікс applinks:. Наприклад, конфігурація Telegram може виглядати наступним чином:

xml
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>

Для більш детальних відомостей зверніться до архівної документації Apple Developer.

Якщо ви працюєте з скомпільованим додатком, права доступу можна витягти, як описано в цьому посібнику.

Отримання файлу асоціації сайту Apple App

Файл apple-app-site-association слід отримати з сервера, використовуючи домени, зазначені в правах доступу. Переконайтеся, що файл доступний через HTTPS безпосередньо за адресою https://<domain>/apple-app-site-association. Інструменти, такі як Apple App Site Association (AASA) Validator, можуть допомогти в цьому процесі.

Обробка універсальних посилань у додатку

Додаток повинен реалізувати специфічні методи для правильної обробки універсальних посилань. Основний метод, на який слід звернути увагу, це application:continueUserActivity:restorationHandler:. Важливо, щоб схема URL, що обробляються, була HTTP або HTTPS, оскільки інші не підтримуються.

Валідація методу обробника даних

Коли універсальне посилання відкриває додаток, об'єкт NSUserActivity передається додатку з URL. Перед обробкою цього URL важливо перевірити та очистити його, щоб запобігти ризикам безпеки. Ось приклад на Swift, який демонструє процес:

swift
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
// Check for web browsing activity and valid URL
if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL {
application.open(url, options: [:], completionHandler: nil)
}

return true
}

URL-адреси слід ретельно аналізувати та перевіряти, особливо якщо вони містять параметри, щоб захиститися від потенційного спуфінгу або неправильно сформованих даних. API NSURLComponents корисний для цієї мети, як показано нижче:

swift
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let incomingURL = userActivity.webpageURL,
let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true),
let path = components.path,
let params = components.queryItems else {
return false
}

if let albumName = params.first(where: { $0.name == "albumname" })?.value,
let photoIndex = params.first(where: { $0.name == "index" })?.value {
// Process the URL with album name and photo index

return true

} else {
// Handle invalid or missing parameters

return false
}
}

Через дбайливу конфігурацію та валідацію розробники можуть забезпечити, що універсальні посилання покращують користувацький досвід, зберігаючи при цьому стандарти безпеки та конфіденційності.

Інструменти

  • GetUniversal.link: Допомагає спростити тестування та управління універсальними посиланнями вашого додатку та файлом AASA. Просто введіть свій домен, щоб перевірити цілісність файлу AASA, або використовуйте спеціальну панель для легкого тестування поведінки посилань. Цей інструмент також допомагає визначити, коли Apple наступного разу проіндексує ваш файл AASA.

Посилання

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks