iOS Universal Links

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Introducci贸n

Los enlaces universales ofrecen una experiencia de redirecci贸n fluida a los usuarios al abrir directamente el contenido en la aplicaci贸n, evitando la necesidad de redirecci贸n a Safari. Estos enlaces son 煤nicos y seguros, ya que no pueden ser reclamados por otras aplicaciones. Esto se asegura al alojar un archivo JSON apple-app-site-association en el directorio ra铆z del sitio web, estableciendo un enlace verificable entre el sitio web y la aplicaci贸n. En casos donde la aplicaci贸n no est谩 instalada, Safari tomar谩 el control y dirigir谩 al usuario a la p谩gina web, manteniendo la presencia de la aplicaci贸n.

Para los testers de penetraci贸n, el archivo apple-app-site-association es de particular inter茅s ya que puede revelar rutas sensibles, potencialmente incluyendo aquellas relacionadas con caracter铆sticas no lanzadas.

Analizando el Derecho de Dominios Asociados

Los desarrolladores habilitan los enlaces universales configurando los Dominios Asociados en la pesta帽a de Capacidades de Xcode o inspeccionando el archivo .entitlements. Cada dominio est谩 precedido por applinks:. Por ejemplo, la configuraci贸n de Telegram podr铆a aparecer de la siguiente manera:

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

Para obtener informaci贸n m谩s completa, consulta la documentaci贸n de desarrolladores de Apple archivada.

Si trabajas con una aplicaci贸n compilada, los derechos pueden ser extra铆dos como se detalla en esta gu铆a.

Recuperando el archivo de asociaci贸n de sitios de aplicaciones de Apple

El archivo apple-app-site-association debe ser recuperado del servidor utilizando los dominios especificados en los derechos. Aseg煤rate de que el archivo sea accesible a trav茅s de HTTPS directamente en https://<domain>/apple-app-site-association. Herramientas como el validador de asociaci贸n de sitios de aplicaciones de Apple (AASA) pueden ayudar en este proceso.

Manejando enlaces universales en la aplicaci贸n

La aplicaci贸n debe implementar m茅todos espec铆ficos para manejar enlaces universales correctamente. El m茅todo principal a buscar es application:continueUserActivity:restorationHandler:. Es crucial que el esquema de las URL manejadas sea HTTP o HTTPS, ya que otros no ser谩n soportados.

Validando el m茅todo del manejador de datos

Cuando un enlace universal abre una aplicaci贸n, se pasa un objeto NSUserActivity a la aplicaci贸n con la URL. Antes de procesar esta URL, es esencial validarla y sanearla para prevenir riesgos de seguridad. Aqu铆 hay un ejemplo en Swift que demuestra el proceso:

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
}

Las URLs deben ser analizadas y validadas cuidadosamente, especialmente si incluyen par谩metros, para protegerse contra posibles suplantaciones o datos mal formados. La API NSURLComponents es 煤til para este prop贸sito, como se demuestra a continuaci贸n:

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

A trav茅s de una configuraci贸n y validaci贸n diligentes, los desarrolladores pueden asegurarse de que los enlaces universales mejoren la experiencia del usuario mientras mantienen los est谩ndares de seguridad y privacidad.

Herramientas

  • GetUniversal.link: Ayuda a simplificar la prueba y gesti贸n de los Enlaces Universales de tu aplicaci贸n y el archivo AASA. Simplemente ingresa tu dominio para verificar la integridad del archivo AASA o utiliza el panel personalizado para probar f谩cilmente el comportamiento de los enlaces. Esta herramienta tambi茅n te ayuda a determinar cu谩ndo Apple indexar谩 por 煤ltima vez tu archivo AASA.

Referencias

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks