<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
Links universais permitem **redirecionar usuários diretamente** para o aplicativo sem passar pelo Safari para redirecionamento.\
Os links universais são **únicos**, então **não podem ser reivindicados por outros aplicativos** porque usam links HTTP(S) padrão para o **site onde o proprietário carregou um arquivo para garantir que o site e o aplicativo estejam relacionados**.\
Como esses links usam esquemas HTTP(S), quando o **aplicativo não está instalado, o Safari abrirá o link** redirecionando os usuários para a página. Isso permite que **aplicativos se comuniquem com o aplicativo mesmo que ele não esteja instalado**.
Para criar links universais é necessário **criar um arquivo JSON chamado `apple-app-site-association`** com os detalhes. Depois, este arquivo precisa ser **hospedado no diretório raiz do seu servidor web** (por exemplo, [https://google.com/apple-app-site-association](https://google.com/apple-app-site-association)).\
Para o pentester, este arquivo é muito interessante, pois **revela caminhos**. Ele pode até estar revelando caminhos de lançamentos que ainda não foram publicados.
No Xcode, vá para a aba **Capabilities** e procure por **Associated Domains**. Você também pode inspecionar o arquivo `.entitlements` procurando por `com.apple.developer.associated-domains`. Cada um dos domínios deve ser prefixado com `applinks:`, como `applinks:www.meusite.com`.
Informações mais detalhadas podem ser encontradas na [documentação arquivada da Apple Developer](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
Tente recuperar o arquivo `apple-app-site-association` do servidor usando os domínios associados que você obteve no passo anterior. Este arquivo precisa estar acessível via HTTPS, sem redirecionamentos, em `https://<domínio>/apple-app-site-association` ou `https://<domínio>/.well-known/apple-app-site-association`.
Você pode recuperá-lo sozinho com seu navegador ou usar o [Validador de Associação de Site da Apple (AASA)](https://branch.io/resources/aasa-validator/).
Para receber links e lidar com eles adequadamente, o delegado do aplicativo deve implementar [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Se você tem o projeto original, tente procurar por este método.
Observe que se o aplicativo usa [`openURL:options:completionHandler:`](https://developer.apple.com/documentation/uikit/uiapplication/1648685-openurl?language=objc) para abrir um link universal para o site do aplicativo, o link não será aberto no aplicativo. Como a chamada se origina do aplicativo, ela não será tratada como um link universal.
* O esquema da `webpageURL` deve ser HTTP ou HTTPS (qualquer outro esquema deve lançar uma exceção). A [propriedade de instância `scheme`](https://developer.apple.com/documentation/foundation/urlcomponents/1779624-scheme) de `URLComponents` / `NSURLComponents` pode ser usada para verificar isso.
Quando o iOS abre um aplicativo como resultado de um link universal, o aplicativo recebe um objeto `NSUserActivity` com um valor `activityType` de `NSUserActivityTypeBrowsingWeb`. A propriedade `webpageURL` do objeto de atividade contém o URL HTTP ou HTTPS que o usuário acessa. O seguinte exemplo em Swift verifica exatamente isso antes de abrir o URL:
Além disso, lembre-se de que se a URL incluir parâmetros, eles não devem ser confiáveis antes de serem cuidadosamente higienizados e validados (mesmo vindo de domínio confiável). Por exemplo, eles podem ter sido falsificados por um atacante ou podem incluir dados malformados. Se for esse o caso, toda a URL e, portanto, a solicitação de link universal deve ser descartada.
A API `NSURLComponents` pode ser usada para analisar e manipular os componentes da URL. Isso também pode ser parte do método `application:continueUserActivity:restorationHandler:` em si ou pode ocorrer em um método separado sendo chamado a partir dele. O seguinte [exemplo](https://developer.apple.com/documentation/uikit/core\_app/allowing\_apps\_and\_websites\_to\_link\_to\_your\_content/handling\_universal\_links#3001935) demonstra isso:
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).