hacktricks/mobile-pentesting/ios-pentesting/ios-universal-links.md

7.6 KiB

iOS Universal Links

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Introdução

Os links universais oferecem uma experiência de redirecionamento contínuo aos usuários, abrindo diretamente o conteúdo no aplicativo, evitando a necessidade de redirecionamento pelo Safari. Esses links são únicos e seguros, pois não podem ser reivindicados por outros aplicativos. Isso é garantido hospedando um arquivo JSON apple-app-site-association no diretório raiz do site, estabelecendo um link verificável entre o site e o aplicativo. Nos casos em que o aplicativo não está instalado, o Safari assume e direciona o usuário para a página da web, mantendo a presença do aplicativo.

Para testadores de penetração, o arquivo apple-app-site-association é de particular interesse, pois pode revelar caminhos sensíveis, potencialmente incluindo aqueles relacionados a recursos não lançados.

Analisando a Entitlement de Domínios Associados

Os desenvolvedores habilitam os Links Universais configurando os Domínios Associados na guia Capacidades do Xcode ou inspecionando o arquivo .entitlements. Cada domínio é prefixado com applinks:. Por exemplo, a configuração do Telegram pode aparecer da seguinte forma:

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

Para obter insights mais abrangentes, consulte a Documentação Arquivada do Desenvolvedor da Apple.

Se estiver trabalhando com um aplicativo compilado, os direitos podem ser extraídos conforme descrito neste guia.

Recuperando o Arquivo de Associação do Site do Aplicativo da Apple

O arquivo apple-app-site-association deve ser recuperado do servidor usando os domínios especificados nos direitos. Certifique-se de que o arquivo seja acessível via HTTPS diretamente em https://<domínio>/apple-app-site-association. Ferramentas como o Validador de Associação do Site do Aplicativo da Apple (AASA) podem auxiliar nesse processo.

O aplicativo deve implementar métodos específicos para lidar corretamente com links universais. O método principal a ser procurado é application:continueUserActivity:restorationHandler:. É crucial que o esquema de URLs manipulados seja HTTP ou HTTPS, pois outros não serão suportados.

Validando o Método do Manipulador de Dados

Quando um link universal abre um aplicativo, um objeto NSUserActivity é passado para o aplicativo com o URL. Antes de processar este URL, é essencial validá-lo e sanitizá-lo para evitar riscos de segurança. Aqui está um exemplo em Swift que demonstra o processo:

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
}

URLs devem ser cuidadosamente analisados e validados, especialmente se incluírem parâmetros, para se proteger contra possíveis falsificações ou dados malformados. A API NSURLComponents é útil para esse fim, como demonstrado abaixo:

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

Através da configuração e validação diligentes, os desenvolvedores podem garantir que os links universais aprimorem a experiência do usuário, mantendo os padrões de segurança e privacidade.

Ferramentas

  • GetUniversal.link: Ajuda a simplificar o teste e gerenciamento dos Links Universais e do arquivo AASA do seu aplicativo. Basta inserir seu domínio para verificar a integridade do arquivo AASA ou usar o painel personalizado para testar facilmente o comportamento do link. Essa ferramenta também ajuda a determinar quando a Apple indexará seu arquivo AASA.

Referências

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks: